・HUBER+SUHNERが76-81GHzのミリ波レーダ向け3D waveguide antenna発表
・Silicon LabsがIoT向けシリーズ3 SoC発表
Silicon Labs Unveils First Series 3 SoCs, Powering the Next Wave of IoT Breakthroughs
・GSMAがM360ユーラシアでAIと5Gのイノベーションと協業について発表
・ロームがAIサーバー向けMOSFET発表
https://plus.nhk.jp/watch/st/g1_2025051927557
2023年3月、30代の男性の自殺が報じられた。男性は死の直前までオンラインチャットをしていた。相手はイライザ。アメリカの新興企業が開発した対話型人工知能だった。6週間やりとりを続けた後、妻子を残して自殺した。
アラン・チューリングの言葉より
「人間の心の動きを忠実に再現した機械を作ることはできる。それは時に興味深いことを言い、時に過ちを犯す、人間のような存在になるだろう」
75年前、イギリスの天才数学者アラン・チューリングは、考える機械、人工知能が生まれる夢を持った。
その夢を引き継いだのは人間のふりをした悪魔と言われた天才数学者ジョン・フォン・ノイマン。
ノイマンはマンハッタン計画に参加し原爆の誕生にかかわっただけでなく、現在につながるコンピュータの基本設計を考案した。
フォンノイマンの言葉より
「私は今、爆弾よりもはるかに重要なものについて考えている。私はコンピュータについて考えているのだ。」
二人が描いた未来は、コンピュータの爆発的進化とともに現実に近づいていく。開発者は困難を打ち破り、考える機械、AIの道を切り開いていった。
アラン・チューリングの言葉より
「世紀の終わりには、もはや当然のように機械は考えることができると言えるようになるはずだ。そしてあらゆる知的な境域において機械は人間と競い合うようになるだろう」
ーーーー
ふたりの天才がいなければきっと今はなかった。
ーーーー
映画イミテーション・ゲーム、第二次世界大戦下で極秘任務についた一人の数学者を描いている。
与えられたミッションはドイツ軍の暗号、エニグマの解読。それを解読できるとしたら、、、アラン・チューリングだった。
ドイツはUボートによる奇襲攻撃で民間船を沈没させ、イギリスは物資の不足に悩んでいた。
ドイツ軍はエニグマを使って暗号化し、縦横無尽に攻撃していた。それは解読不可能と言われていた。アルファベットの26文字から、3枚の歯車と10本のケーブルを組み合わせて暗号化する。
さらに毎日設定を変えており、一京の一万倍の組み合わせがあった。イギリスにとってエニグマの暗号解読は戦争の行方を左右するものだった。
チューリングが足掛かりとしたのはポーランドで開発された暗号解読器。この改良に半年を費やし、36機のエニグマの動きを再現することで自動的に解読する「ボンブ」を作り上げた。
通信文の解読でUボートの位置を把握し、撃沈できた。一人の天才が戦争の流れを変えた。
チューリングの同僚の言葉より
「戦争が始まったときエニグマを解読できると思っていたのはおそらく2人だけだった。絶対に解読しなければと責務に追われた我々の上司と、それを解読するのはとても面白そうだからという理由で参加したチューリングだった。」
アメリカ ニューメキシコ州。一人の天才科学者が戦争の行方を決定づける発明に取り組んでいた。原子爆弾の開発に携わっていたジョン・フォン・ノイマンである。
数学、物理学、流体力学で天才の名をほしいままにていた。ノイマンはプルトニウム型の最大の難関だった爆薬の配置を設計し(爆縮レンズだ!)核分裂を制御する計算を半年かけて導いた。
フォン・ノイマンの言葉より
「われわれが今作っている怪物は、歴史を変える力を持っている。科学者が科学的に可能であることを実現しないことは倫理に反するのだ。その結果どんなに恐ろしいことになるとしても」
ーーー
原子爆弾は完成の1か月後長崎に落とされ、7万人以上の命をうばった。
巨大な人工頭脳がペンシルベニア大学で動き始めた。
アメリカ陸軍はコンピュータの開発も進めていた。弾道計算のためのコンピュータ、ENIACが完成する。1万8000本の真空管を制御して毎秒5000回の演算が可能だった。
ノイマンはエニアックに可能性を見出した。
フォン・ノイマンの伝記より
「その出会いが彼の人生を変えました。エニアックは爆弾を作る道具としての有用性をはるかに超えて全く新しい構想をノイマンに与えたのです。」
ノイマンは戦前、プリンストン大学に留学していたチューリングと出会い、その論文に影響を受けていた。
チューリング・マシンとよばれる仮想の機械について提唱していた。与えたプログラムに応じて様々な計算ができる万能計算機。
この概念を形にしたのがノイマンだった。ノイマンはエニアックの致命的な欠点を改善しようとした。
エニアックは計算の内容に応じて6000個のスイッチやケーブルを切り替える必要があり、人為的ミスで計算間違いが多かった。
ノイマンは計算の命令を手動ではなくプログラムとして内蔵できる新しいコンピュータを設計する。ENIVACだ。
現在のコンピュータに繋がる設計図がこのとき生まれた。
同じころイギリスでもコンピュータの開発が進められていた。2^127-1が素数かどうか人間なら6か月かかる計算を25分でできる。
しかしその開発の主役はチューリングではなかった。1952年、あるニュースが報じられた。チューリングが男性とわいせつな行為をしたという理由で同性愛の罪で逮捕され、有罪となり、ホルモン治療を受けさせられた。同僚、I.J.グッドは当時をこう振り得っている。
「チューリングが同性愛者であったことは戦後まで知らなかった。もし暗号解読の任務中にこの事実を知られていたら彼は解雇され、その結果私たちは戦争に負けていたかもしれない」
逮捕の2年後、チューリングが自宅で死亡しているのが発見された。部屋には青酸カリの入った瓶とかじりかけのリンゴが残されていた。
死の4年前、チューリングは重要な論文を残している。人間の思考は数学的な計算に置き換えることができ、高性能のコンピュータができれば考える機械が誕生すると予見した。
チューリングの遺産が人工知能研究への扉を開くことになる。
アラン・チューリングの言葉より
「これは将来の予兆である。新しい可能性に到達するには何年もかかるかもしれないが人間の知性が必要とされる分野にそれが進出して人間と対等に競うことになったとしても不思議ではないだろう」
ーーー
戦後、水爆の開発を主導したのもノイマンだった(いやテラーじゃないの?)。ソ連を攻撃すべきか否かはもはや問題でない。問題はいつ攻撃するかだ。明日爆撃するというならなぜ今日爆撃しないのか?今日の5時に攻撃するというならなぜ1時にしないのかと言いたい。
スタンリー・キューブリック監督の「博士の異常な愛情」。登場する科学者はノイマンがモデルともいわれる。
ノイマンは人間のふりをした悪魔と呼ばれるようになっていた。
ノイマンの設計したコンピュータは水爆の核融合反応を計算するのは使われた。プログラム内蔵型コンピュータ、IASマシン。
科学史家ジョージ・ダイソンの言葉より
「人間の発明品のうち、最も破壊的なものと最も創造的なものがまったく同時に登場したのは偶然ではなかった。」
しかしノイマンの興味は脳に移っていた。1950年代。脳の神経による情報伝達の仕組みが解明されようとしていた。ノイマンはニューロンのネットワークが情報を伝える手段が電気信号であることに着目した。
フォン・ノイマンの言葉より
「脳の神経系とコンピュータを比較することは極めて興味をそそる楽しいことです。その仕組みには類似性がある。」
ノイマンは脳を計算機としてとらえ、その機能を数学的に分析しようとした。しかしその研究は未完に終わる。
1956年、ノイマンは大統領自由勲章を受章した。このときノイマンはガンに侵されており、翌年息を引き取った。
ともに水爆を開発したエドワード・テラーはノイマンの最後を語っている。「多くの人々が不思議に思っていた。ノイマンの頭脳はなぜあれほど早く効率的に機能したのかと。病院を訪ねるたびに彼は私と議論しようとしたが、彼の脳はもはや以前のように機能することはなかった。彼は「知性を失う」ということに他のどんな人間よりも苦しめられたことだろう。」
チューリングとノイマン、2人の未完の研究は数十年後大きく世界を変えることになる。
トランジスタの発明だ。真空管が指先ほどのトランジスタに置き換わった。コンピュータもトランジスタ式(608がでてる)に置き換わった。
巨大だったコンピュータは小さく高性能になった。
1956年ダートマス大学に科学者たちが集い、ある会議を開いた。彼らはここで、人工知能 AIという言葉を初めて提案しその研究が始まった。
考える機械を作り出すことが目的だった。
アラン・チューリングの言葉より
「人間の心を模倣しようとするならば心が成長するプロセスを尊重しなくてはならない。子供の心を模倣するものを作ったらどうだろう。これに教育を受けさせれば大人のように考える脳が実現するだろう。」
人工知能研究の第一人者の一人、マービン・ミンスキー。人間の子供が経験を通して成長するプロセスを機械で再現しようとした。
コンピュータに自ら積み木をさせる実験の映像が流れる。
ミンスキーの言葉
「分かったのは人間にとって難しいことが機械には簡単で、人間にとって簡単と思えることが機械には難しいということだった」
さらに研究者たちが注目したのは脳の神経、ニューロンが学習する仕組みだった。
脳の神経回路が学ぶ仕組みをコンピュータで模倣する。ニューラルネットワークと呼ばれる研究が始まった。
たくさんの写真を読み込ませ、男性か女性かの正解を教えることで学習していく。
60年代後半、限界がささやかれ始めた。当時は計算能力が不足していた。チェスもアマチュアの試合で善戦する程度。
莫大な政府予算が投入されたが成果が出ない人工知能研究は批判されていく。
ジョン・マッカーシーが答えていた。非常に厳しいと。しかしこの分野は自分はいなくなっても成長すると。
そこから長きにわたる冬の時代を迎えた。
しかし1997年、計算能力を飛躍的に上げたスーパーコンピュータが現れた。IBMのチェス用、ディープブルーがチェスの王者に勝った。
しかしまだ考える機械とは程遠い。
ジェパディというクイズ番組でIBMが開発した人工知能、ワトソンがクイズチャンピオン2人に挑んだ。
ウェブサイトや書籍などさまざまな画像をワトソンに読み込ませ、過去の数十万の問題で猛特訓した。
間違いを繰り返す中で重要なキーワードを見つけだせるようになっていた。そしてチャンピオンに勝った。
それは人間が手取り足取り教育を重ねたうえの勝利だった。自ら進化する人工知能を目指して開発は続く。
2016年、AlphaGoが登場した。世界最強の囲碁棋士に挑む。この8年後ノーベル賞を受賞したデミス・ハサビスが開発を主導した。
10代のころから天才プログラマーだった。
脳の仕組みをコンピュータで模倣した。直感力を持たせようとした。数多くのデータを学習させ、また人工知能どうしで対局させた。
そしてイ・セドルに勝った。
そして2024年、デミス・ハサビスはAIの開発者として初めてノーベル化学賞を受賞した。受賞理由はアミノ酸の配列からタンパク質の立体構造を予測するAIを作ったこと。
デミス・ハサビスはチューリングマシンはこれまで考えられていたことよりもはるかに多くのことを成し遂げる可能性があると語った。
中国のdeepseekもあらわれ、AI開発競争が繰り広げられている。日々、爆発的な進化を遂げている。
2022年、Gopgleが開発したLaMDAが物議をかもした。意識を持っていると開発者が言ったのだ。
アラン・チューリングの言葉より
「神が機械に魂を授けることなどないと言い切れるだろうか。このような機械を作ろうとするとき、私たちには神のように魂を創造することはできない。むしろ私たち人間はその魂の入れ物を提供するための道具に過ぎないのだ」
ーーーーーー
しかしフォンノイマンはパラメータの多い理論が嫌いで、
(パラメータが4つあったら象だって描けるし、5つありゃ象の鼻を動かせるわ!)
と言ったという話なので今のパラメータが多いAIについては苦々しく思っているのかも…
・三星電機が165℃対応の車載インダクタ発表
・KYOCERA AVXがリップル電流についての技術文書発行
・QualcommとXiaomiの契約15年目
・OmdiaがNokiaをPrivate 5Gの2025の王者と決定
FPU問題というのがある。最近ではFPUT問題(Fermi–Pasta–Ulam–Tsingou)ともいわれる(TはManiacでコードを書いた女性プログラマ)。
https://en.wikipedia.org/wiki/Fermi%E2%80%93Pasta%E2%80%93Ulam%E2%80%93Tsingou_problem
非線形結合した振動子が最初に与えたモードに戻る再帰現象を発見した。
これを確かめてみよう。
まず、必要なパッケージをインストールする。が45分かかった…ここだけがGoogle ColabでJuliaをやるときのネック(Pythonは一瞬)。
DynamicalODEProblem{isinplace}(f1, f2, v0, u0, tspan, p = NullParameters(); kwargs...)
SecondOrderODEProblem{isinplace}(f, du0, u0, tspan, p = NullParameters(); kwargs...)
HamiltonianProblem{T}(H, p0, q0, tspan, p = NullParameters(); kwargs...)
おお、HamiltonianProblem使えば一瞬じゃないか、と思ったら…そんな関数はないとエラー、じゃあSecondOrderODEProblemは…これもエラー、DynamicalODEProblemは…これは使える。
まあシンプレクティック積分を使うだろうな、と思ったらいろいろある。その中で
”For symplectic methods, higher order algorithms are the most efficient when higher accuracy is needed, and when less accuracy is needed lower order methods do better. Optimized efficiency methods take more steps and thus have more force calculations for the same order, but have smaller error. Thus, the “optimized efficiency” algorithms are recommended if your force calculation is not too sufficiency large, while the other methods are recommended when force calculations are really large (for example, like in MD simulations VelocityVerlet
is very popular since it only requires one force calculation per timestep). A good go-to method would be McAte5
, and a good high order choice is KahanLi8
.
”
ということなのでシンプレクティック8次のKahanLi8を使う。
コードはこんな感じで。RecursiveArrayToolsを使うとsolverから望むデータが取り出せる(とGeminiに教えてもらった)。
using DifferentialEquations
using Plots
using RecursiveArrayTools
using Printf
n = 32 #振動子の数
tmax = 12000.0 #最大時間
dt = 0.2 #時間刻み幅
function Velocity!(dx, x, v, p, t)
dx .= v
end
# 非線形な結合を設定
function Force!(dv, x, v, p, t)
dv[1] = 0.0
dv[n + 2] = 0.0
for i in 2:(n+1)
dv[i] = (x[i + 1] + x[i - 1] - 2.0 * x[i]) + 0.25 * ((x[i + 1] - x[i])^2 - (x[i] - x[i - 1])^2)
end
end
# 初期条件
x0 = zeros(Float64, n + 2)
v0 = zeros(Float64, n + 2)
for i in 2:(n+1)
x0[i] = sin(pi * (i - 1) / (n + 1))
end
# 2階常微分方程式をシンプレクティック8次で計算
prob = DynamicalODEProblem(Velocity!, Force!, x0, v0, (0.0, tmax))
sol = solve(prob, KahanLi8(), dt = dt)
#モードごとのエネルギーを計算
m = length(sol.t)
a = zeros(Float64, n)
ad = zeros(Float64, n)
E = zeros(Float64, n, m)
for i in 1:m
for k in 1:n
a[k] = 0.0
ad[k] = 0.0
for j in 2:(n+1)
a[k] += sol[i].x[1][j] * sin((j - 1) * k * pi / (n + 1))
ad[k] += sol[i].x[2][j] * sin((j - 1) * k * pi / (n + 1))
end
E[k, i] = sqrt(2 / (n + 1)) * ((ad[k] ^ 2) / 2 + 2 * (a[k] ^ 2) * (sin(pi * k / 2 / (n + 1)) ^ 2))
end
end
#5つのモードのエネルギーをプロット
plot(dt * (1:m), E[1,:], label = "mode 1", xlabel = "time", ylabel = "Energy", legend = :topright, legendfontsize=6, ylim=(0.0, 0.4))
plot!(dt * (1:m),E[2,:], label = "mode 2")
plot!(dt * (1:m),E[3,:], label = "mode 3")
plot!(dt * (1:m),E[4,:], label = "mode 4")
plot!(dt * (1:m),E[5,:], label = "mode 5")
|
ではプロットした結果。
確かにt=10000くらいで最初のモードに戻ってる!
この振動子の動きを動画にしてみた。
ドラクエウォークはイベントが多くてついストーリーの方を後回しにしてしまう。
ちょうど今のイベントが早く終わったのでここでストーリーを進めた。
#ドラクエウォーク 思い出の冒険旅行、レックスとラグアス&タバサとフウラのランドマーク、二人の友情どちらもコンプリート! pic.twitter.com/YvhKiBXqx5
— tomo (@tonagai) May 16, 2025
で一気に現在最新の16章まで終わった。
これはチート級の武器、孫悟空の如意棒のおかげ。
・TDKが0201のRFインダクタ発表
・nfineonがUWBのFiraコンソーシアムの理事会に
・ubloxがロボット用GNSSモジュール発表
・FibocomがMediaTekのT930を使った5Gモジュール発表
・Motolora Edge 60 Pro分解動画
エジプト展があると絶対行くというほどこの時代には興味がある。
大英博物館 ミイラ展 古代エジプト6つの物語@神戸市立博物館を観てきた。最近3つくらいミイラ展見てきたが、CTスキャンの性能が一番よくわかる展示。古代の人も歯では苦しんでたんだなとか。
古代エジプト展 天地創造の神話@京都市京セラ美術館を観てきた。死者の書、がチートアイテムだと初めて知った!あと猫は当時から癒し。
書店で平積みになっていてとても面白そうなのでこの「ファラオの密室」買って読んでみた。めちゃくちゃ面白かった!
アマゾンリンク:https://amzn.to/458KM3W
あらすじは
「紀元前1300年代後半、古代エジプト。
死んでミイラにされた神官のセティは、心臓に欠けがあるため冥界の審判を受けることができない。
欠けた心臓を取り戻すために地上に舞い戻ったが、期限は3日。
ミイラのセティは、自分が死んだ事件の捜査を進めるなかで、やがてもうひとつの大きな謎に直面する。
棺に収められた先王のミイラが、密室状態であるピラミッドの玄室から消失し、外の大神殿で発見されたというのだ。
この出来事は、唯一神アテン以外の信仰を禁じた先王が葬儀を否定したことを物語るのか?
タイムリミットが刻々と迫るなか、セティはエジプトを救うため、ミイラ消失事件の真相に挑む! 」
というもの。
ミイラが現世に戻ってくるとか、冥界に神がいるとかエジプト人には普通になっていてちょっと面白い。異国の奴隷の少女カリが信じてないのも。そういう世界観の中で密室消失事件が起き、それがものすごく本格的な推理と、エジプト神話では当たり前の話が一緒になって、おお、すごい、と思った。エピローグからそれにつながることが書いてあった(これどういう意味?と気になっていたらそういうことかと)。
東大の松尾研で機械学習を学んでいたという異色の経歴の作者さんですが、とても面白いのでこの本お勧め。
今回はマイクロストリップパッチアンテナ。
チュートリアルはPythonとMatlab/Octaveを両方見ないと分からない。
https://docs.openems.de/python/openEMS/Tutorials/Simple_Patch_Antenna.html
https://wiki.openems.de/index.php/Tutorial:_Simple_Patch_Antenna.html
まずはモジュールをインポート。
import os
import numpy as np
import matplotlib.pyplot as plt
from CSXCAD import ContinuousStructure
from openEMS import openEMS
from openEMS.physical_constants import C0, EPS0
|
物理量を設定。Sim_Pathは各自の環境に合わせて変更。後で出ますが今回は寸法は㎜単位。
Sim_Path = os.path.join("C:\\Users\\tomoh\\Documents\\Python Projects\\OpenEMS", 'Simp_Patch')
post_proc_only = False
# patch width (resonant length) in x-direction
patch_width = 32 #
# patch length in y-direction
patch_length = 40
#substrate setup
substrate_epsR = 3.38
substrate_kappa = 1e-3 * 2*np.pi*2.45e9 * EPS0*substrate_epsR
substrate_width = 60
substrate_length = 60
substrate_thickness = 1.524
substrate_cells = 4
#setup feeding
feed_pos = -6 #feeding position in x-direction
feed_R = 50 #feed resistance
# size of the simulation box
SimBox = np.array([200, 200, 150])
# setup FDTD parameter & excitation function
f0 = 2e9 # center frequency
fc = 1e9 # 20 dB corner frequency
|
FDTDの設定。ここでパラメータの意味は
NrTS – シミュレーションするタイムステップの最大数(例:デフォルト=1e9)
EndCriteria – 終了基準(例:1e-5)。エネルギーがこの値まで減少するとシミュレーションが停止します(<1e-4 が推奨、デフォルト = 1e-5)。
で、境界条件は全方向でMurの吸収境界条件。SetDefaultUnitは1e-3なのでmm単位。メッシュサイズは波長の20分の1。
FDTD = openEMS(NrTS=30000, EndCriteria=1e-4)
FDTD.SetGaussExcite( f0, fc )
FDTD.SetBoundaryCond( ['MUR', 'MUR', 'MUR', 'MUR', 'MUR', 'MUR'] )
CSX = ContinuousStructure()
FDTD.SetCSX(CSX)
mesh = CSX.GetGrid()
mesh.SetDeltaUnit(1e-3)
mesh_res = C0/(f0+fc)/1e-3/20
Jt = CSX.AddDump('Jt', dump_type=3, file_type = 0)
Jt.AddBox([-substrate_width/2, -substrate_length/2, substrate_thickness], [substrate_width/2, substrate_length/2, substrate_thickness])
|
パッチアンテナのモデルを作る。金属のパッチとGNDは端をグリッドにするとあるが一切説明ないがどうやらメッシュを見ると1/3ルールを自動でやってくれているようだ。基板の厚み部分は細かくメッシュ。給電はLumpedポート。遠方界のためのBoxも作る。
#initialize the mesh with the "air-box" dimensions
mesh.AddLine('x', [-SimBox[0]/2, SimBox[0]/2])
mesh.AddLine('y', [-SimBox[1]/2, SimBox[1]/2])
mesh.AddLine('z', [-SimBox[2]/3, SimBox[2]*2/3])
# create patch
patch = CSX.AddMetal( 'patch' ) # create a perfect electric conductor (PEC)
start = [-patch_width/2, -patch_length/2, substrate_thickness]
stop = [ patch_width/2 , patch_length/2, substrate_thickness]
patch.AddBox(priority=10, start=start, stop=stop) # add a box-primitive to the metal property 'patch'
FDTD.AddEdges2Grid(dirs='xy', properties=patch, metal_edge_res=mesh_res/2)
# create substrate
substrate = CSX.AddMaterial( 'substrate', epsilon=substrate_epsR, kappa=substrate_kappa)
start = [-substrate_width/2, -substrate_length/2, 0]
stop = [ substrate_width/2, substrate_length/2, substrate_thickness]
substrate.AddBox( priority=0, start=start, stop=stop )
# add extra cells to discretize the substrate thickness
mesh.AddLine('z', np.linspace(0,substrate_thickness,substrate_cells+1))
# create ground (same size as substrate)
gnd = CSX.AddMetal( 'gnd' ) # create a perfect electric conductor (PEC)
start[2]=0
stop[2] =0
gnd.AddBox(start, stop, priority=10)
FDTD.AddEdges2Grid(dirs='xy', properties=gnd)
# apply the excitation & resist as a current source
start = [feed_pos, 0, 0]
stop = [feed_pos, 0, substrate_thickness]
port = FDTD.AddLumpedPort(1, feed_R, start, stop, 'z', 1.0, priority=5, edges2grid='xy')
mesh.SmoothMeshLines('all', mesh_res, 1.4)
# Add the nf2ff recording box
nf2ff = FDTD.CreateNF2FFBox()
|
モデルを確認するとこんな感じ。
ここから実際の計算。
if 1: # debugging only
CSX_file = os.path.join(Sim_Path, 'simp_patch.xml')
if not os.path.exists(Sim_Path):
os.mkdir(Sim_Path)
CSX.Write2XML(CSX_file)
from CSXCAD import AppCSXCAD_BIN
os.system(AppCSXCAD_BIN + ' "{}"'.format(CSX_file))
if not post_proc_only:
FDTD.Run(Sim_Path, verbose=3, cleanup=False)
|
電流分布を見てみた。
そしてSパラメータ、入力インピーダンス、指向性の図示。
f = np.linspace(max(1e9,f0-fc),f0+fc,401)
port.CalcPort(Sim_Path, f)
s11 = port.uf_ref/port.uf_inc
s11_dB = 20.0*np.log10(np.abs(s11))
plt.figure()
plt.plot(f/1e9, s11_dB, 'k-', linewidth=2, label='$S_{11}$')
plt.grid()
plt.legend()
plt.ylabel('S-Parameter (dB)')
plt.xlabel('Frequency (GHz)')
idx = np.where((s11_dB<-10) & (s11_dB==np.min(s11_dB)))[0]
if not len(idx)==1:
print('No resonance frequency found for far-field calulation')
else:
f_res = f[idx[0]]
theta = np.arange(-180.0, 180.0, 2.0)
phi = [0., 90.]
nf2ff_res = nf2ff.CalcNF2FF(Sim_Path, f_res, theta, phi, center=[0,0,1e-3])
plt.figure()
E_norm = 20.0*np.log10(nf2ff_res.E_norm[0]/np.max(nf2ff_res.E_norm[0])) + nf2ff_res.Dmax[0]
plt.plot(theta, np.squeeze(E_norm[:,0]), 'k-', linewidth=2, label='xz-plane')
plt.plot(theta, np.squeeze(E_norm[:,1]), 'r--', linewidth=2, label='yz-plane')
plt.grid()
plt.ylabel('Directivity (dBi)')
plt.xlabel('Theta (deg)')
plt.title('Frequency: {} GHz'.format(f_res/1e9))
plt.legend()
Zin = port.uf_tot/port.if_tot
plt.figure()
plt.plot(f/1e9, np.real(Zin), 'k-', linewidth=2, label='$\Re\{Z_{in}\}$')
plt.plot(f/1e9, np.imag(Zin), 'r--', linewidth=2, label='$\Im\{Z_{in}\}$')
plt.grid()
plt.legend()
plt.ylabel('Zin (Ohm)')
plt.xlabel('Frequency (GHz)')
plt.show()
|
だいぶ雰囲気は分かってきた。次は導波管系をやってみよう。
追記:
I劇場満席でした。さすが超人気作品。IMAXで見ると最初にちょっとサプライズがあります。
とにかくトム・クルーズが体を張りすぎるほどに張る。深海のシーン(もう死にそう)や空中のシーン(風圧で顔が崩れてもリアルにやる)がとんでもない。でとにかくピンチの連続で、しかもチームと別行動のときはそれぞれでピンチ。まったく息つく暇もない。
またトップガンを思わせるシーンもあったり。そういやドガどこかで見た…と思ったらトップガンマーヴェリックにも出ていた。
5秒で消滅も最後に粋な使い方してたり。
ストーリーはどうでもよくてとにかく楽しめる作品なんですがとても気になったこともある。
まず、重要デバイスがどうみても電子工作のオペアンプ、しかも紙フェノール基板みたいなものにはんだごて実装。その人が5次元のなんちゃらメモリを作るのか?
もっと気になるのはエンティティはどこが本体?
そもそも深海では無線が使えない(と本編でも出る)し、もちろん有線もできないので潜水艦の中にいたらネットワークに繋げられない。
どうやって世界のネットワークに入ってるのか?しかもソースコードってどういう話…バイナリとかじゃなくて?
意味が分からないので、勝手に話を補間すると…
・エンティティ本体は地上のロシアの基地のコンピュータ内に最初にいた。潜水艦のはそのコピー
・ただしソースコード(一瞬映ったがロシア語だった)があるのは潜水艦なのは確かでエンティティはそれを解析されたくない
・毒薬はそのソースコードを解析し、ウイルスのような形であのオペアンプのような装置で無線でネットワークに繋がって感染し、5次元なんちゃらに入るように誘導される。
ことくらい?
しかしどう見ても最終作なんだけどどうするんだろう。
・QualcommがSnapdragon 7 Gen4発表
・Qualcommが6Gウェビナー開催
https://content.rcrwireless.com/6g-webinar-qualcomm
・Broadcomが200G/レーンの第三世代CPO発表
・IEEE Antenna and Propagation Magazineは電磁気解析の計算再現性・ベンチマーク
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=74
・Perasoがミリ波デバイスを200万個出荷と発表
追記:Akoustisの件は正式にプレスリリースされた。
・BAWフィルタのAkoustisがSpace Xの子会社に売却へ
Tune Holdingsというらしい。
https://cases.stretto.com/public/x368/13098/PLEADINGS/1309804302580000000088.pdf
・DuPontがPyraluxなどのエレクトロニクス部門をスピンオフさせQnityという名前に
DuPont Unveils Brand Identity for Qnity, Future Electronics Spin-Off
https://www.qnityelectronics.com/
・Microwave Journal5月号でローデ・シュワルツが最新スペアナ解説
https://www.microwavejournal.com/publications/1
・GSAが5G Advancedレポート発行
・2025 104th ARFTG のプロシーディング公開
高周波測定の最も大きな会議のプロシーディング。
https://ieeexplore.ieee.org/xpl/conhome/10989784/proceeding
・R&SがRF Testing Innovations Forum開催
https://www.rohde-schwarz.com/cz/solutions/events/rf-testing-innovations-forum_258185.html
・IEEE Journal of Microwaves5月号発行
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=9171629
・Microwave Journal5月特別号は宇宙特集
https://www.microwavejournal.com/publications/1
・QorvoがMatter用SoC 3種発売
・MediaTekが5G FWA用T930発売
オープンソースの電磁界シミュレータはいろいろある。
今回はその中でEC-FDTE法のopenEMSをPythonから使ってみる。
まず公式サイトはこちら。
WindowsでPythonを使うときのインストールはこちら。
https://docs.openems.de/python/install.html#windows
Pythonのバージョンは3.10か3.11でないと動かないっぽいので3.11を仮想環境をvenvで作って使う。
以下をpipでインストールして、
openEMS-0.0.36-cp311-cp311-win_amd64.whl
CSXCAD-0.6.3-cp311-cp311-win_amd64.whl
環境変数を設定。
setx OPENEMS_INSTALL_PATH インストールしたフォルダ
これで動く。
問題はPythonで使うときのドキュメントがものすごく不親切(もともとMatlab/Octaveから使うもの)で、両方見ないと分からん…
とりあえず例題のマイクロストリップラインのノッチフィルタ(スタブ)やってみよう。
PythonとMatlabを見比べないと分からない部分が多くある。
https://docs.openems.de/python/openEMS/Tutorials/MSL_NotchFilter.html
https://wiki.openems.de/index.php/Tutorial:_Microstrip_Notch_Filter.html
まずは必要なモジュールをインポート。
import os
import numpy as np
import matplotlib.pyplot as plt
from CSXCAD import ContinuousStructure
from openEMS import openEMS
from openEMS.physical_constants import C0
|
設定。ここでPathは各自保存したいところに変更。
Sim_Path = os.path.join("C:\\Users\\tomoh\\Documents\\Python Projects\\OpenEMS", 'NotchFilter')
post_proc_only = False
unit = 1e-6 # specify everything in um
MSL_length = 50000
MSL_width = 600
substrate_thickness = 254
substrate_epr = 3.66
stub_length = 12e3
f_max = 7e9
|
FDTDの設定。ここで励振はガウシアンで、
また境界条件は [xmin xmax ymin ymax zmin zmax]の順で、PML-8は完全吸収層で8セル使うもの、MURはムーアの吸収境界条件、
PECは完全導体でGNDを表している。x方向がPML-8なのはポートがつく方向で、終端したいので。
FDTD = openEMS()
FDTD.SetGaussExcite( f_max/2, f_max/2 )
FDTD.SetBoundaryCond( ['PML_8', 'PML_8', 'MUR', 'MUR', 'PEC', 'MUR'] )
|
メッシュの基本設定。電流分布はAddDumpで設定する。
CSX = ContinuousStructure()
FDTD.SetCSX(CSX)
mesh = CSX.GetGrid()
mesh.SetDeltaUnit(unit)
resolution = C0/(f_max*np.sqrt(substrate_epr))/unit/50 # resolution of lambda/50
third_mesh = np.array([2*resolution/3, -resolution/3])/4
Jt = CSX.AddDump('Jt', dump_type=3, file_type = 0)
Jt.AddBox([-MSL_length, -MSL_length, substrate_thickness], [MSL_length, MSL_length, substrate_thickness])
|
でここが一番面倒なところで、メッシュを細かくする部分を手動で記述する。HFSSのようなアダプティブメッシュに慣れきっていると
これがわからないところかも。基本は1/3ルール(2D 金属のエッジでは電界が強くなるため、FDTD では正しく計算するのが困難になります。
つまり、例えばマイクロストリップライン(MSL)の場合、線路インピーダンスと波動伝播はシミュレーションと実測で多少異なります。そのため、精密計算では、金属の1/3を内側、2/3を外側に配置するメッシュラインを配置することが推奨されます。)を使う。メッシュは円筒形もあり。
mesh.AddLine('x', 0)
mesh.AddLine('x', MSL_width/2+third_mesh)
mesh.AddLine('x', -MSL_width/2-third_mesh)
mesh.SmoothMeshLines('x', resolution/4)
mesh.AddLine('x', [-MSL_length, MSL_length])
mesh.SmoothMeshLines('x', resolution)
mesh.AddLine('y', 0)
mesh.AddLine('y', MSL_width/2+third_mesh)
mesh.AddLine('y', -MSL_width/2-third_mesh)
mesh.SmoothMeshLines('y', resolution/4)
mesh.AddLine('y', [-15*MSL_width, 15*MSL_width+stub_length])
mesh.AddLine('y', (MSL_width/2+stub_length)+third_mesh)
mesh.SmoothMeshLines('y', resolution)
mesh.AddLine('z', np.linspace(0,substrate_thickness,5))
mesh.AddLine('z', 3000)
mesh.SmoothMeshLines('z', resolution)
|
基板の設定。Rogersを使うこと想定。
substrate = CSX.AddMaterial( 'RO4350B', epsilon=substrate_epr)
start = [-MSL_length, -15*MSL_width, 0]
stop = [+MSL_length, +15*MSL_width+stub_length, substrate_thickness]
substrate.AddBox(start, stop )
|
マイクロストリップラインポートの設定。ポートをx=0で交差させると勝手にスルーラインができるそうだ。
port = [None, None]
pec = CSX.AddMetal( 'PEC' )
portstart = [ -MSL_length, -MSL_width/2, substrate_thickness]
portstop = [ 0, MSL_width/2, 0]
port[0] = FDTD.AddMSLPort( 1, pec, portstart, portstop, 'x', 'z', excite=-1, FeedShift=10*resolution, MeasPlaneShift=MSL_length/3, priority=10)
portstart = [MSL_length, -MSL_width/2, substrate_thickness]
portstop = [0 , MSL_width/2, 0]
port[1] = FDTD.AddMSLPort( 2, pec, portstart, portstop, 'x', 'z', MeasPlaneShift=MSL_length/3, priority=10 )
|
スタブを追加。
start = [-MSL_width/2, MSL_width/2, substrate_thickness]
stop = [ MSL_width/2, MSL_width/2+stub_length, substrate_thickness]
pec.AddBox(start, stop, priority=10 )
|
計算。確認のためにCSXCADでメッシュも見てみる。
if 1: # debugging only
CSX_file = os.path.join(Sim_Path, 'notch.xml')
if not os.path.exists(Sim_Path):
os.mkdir(Sim_Path)
CSX.Write2XML(CSX_file)
from CSXCAD import AppCSXCAD_BIN
os.system(AppCSXCAD_BIN + ' "{}"'.format(CSX_file))
if not post_proc_only:
FDTD.Run(Sim_Path, cleanup=False)
|
でSパラメータを計算して図示。
f = np.linspace( 1e6, f_max, 1601 )
for p in port:
p.CalcPort( Sim_Path, f, ref_impedance = 50)
s11 = port[0].uf_ref / port[0].uf_inc
s21 = port[1].uf_ref / port[0].uf_inc
plt.plot(f/1e9,20*np.log10(abs(s11)),'k-',linewidth=2 , label='$S_{11}$')
plt.grid()
plt.plot(f/1e9,20*np.log10(abs(s21)),'r--',linewidth=2 , label='$S_{21}$')
plt.legend()
plt.ylabel('S-Parameter (dB)')
plt.xlabel('frequency (GHz)')
plt.ylim([-40, 2])
plt.show()
|
ParaViewで電磁界分布見てみる。ファイル開いてApply、リスケールするのと、表示をSolid ColorからRot-H Fieldに変更しないと見られない。
実はここにハマって時間消費した…
なるほどもっともらしい。メッシュを切る部分さえ慣れれば何でも計算できそうだ。
次はパッチアンテナやってみよう(続く)。
・TDKが8A流せる積層チップビーズを発表
・Samsungが5.8㎜の薄さのGalaxy 25 Edge発表
・InfineonがマルチセンステクノロジーのPSOC 4100T Plus発表
・u-bloxが高精度GNSSサービスPointPerfect Global発表
・下院委員会が3GHzと6GHzをオークションから除外
House committee takes lower 3 GHz, 6 GHz off the auction table in reconciliation mark-up
・Mini-Circuitsが2~65GHzのIQミキサ発表
・Matter-over-ThreadのスマートロックにNordicのSoC採用
・フジクラの切り折り紙構造のFPC
・TDKが燃料電池のアプリケーションガイド発表
・InfineonがCoolGaN双方向スイッチ650 V G5発表
アマゾンリンク:https://amzn.to/42UHyQb
以下、目次と感想など
Chapter 1 『パックマン』を動かす数学
パックマンの動き、こんなシンプルなアルゴリズムであたかも意志があるような動きをしていたのにびっくり。
Chapter 2 理想の楽しさの式を求めて
ウォーゲームやD&Dの歴史的な話は初めて知った。また「ドラクエの計算式」も。
Chapter 3 シミュレーションをゲームにすること/石川淳一氏インタビュー
パラメータをバランスがとれたものにするのは難しい…
Chapter 4 ゲームと乱数
ドルアーガの塔の線形帰還シフトレジスタにびっくり。今はメルセンヌツイスタも使われているのか。
Chapter 5 「8bit」の動きの計算
ドンキーコング、ベルレ法で動きを計算していたのか!スーパーマリオブラザーズはオイラー法。
Chapter 6 デジタルゲームの時間と空間
最近Unityを使い始めたのでこの辺りの話は参考になった。
Chapter 7 デジタルゲームに必要な数学とは?/株式会社セガ開発技術部・山中勇毅氏インタビュー
セガ的基礎線形代数講座を書かれた山中さんは物理出身。重力理論や素粒子論。
Chapter 8 対戦のおもしろさを支える数学
レーティングってこうやって計算するのか!知らなかった…
Chapter 9 入力を処理する数学
ARにもカルマンフィルタやパーティクルフィルタが使われるのか!
Chapter 10 ゲームにおける自動生成アルゴリズム
星系生成にDLAが使われるとは!
Chapter 11 ゲームにおける進化アルゴリズム
遺伝的アルゴリズムを使ったゲームすごいな。オンラインマッチングにも使えるとか。
Chapter 12 ゲーム,数学,人工知能/森川幸人氏インタビュー
企画が通ったのでAIを使ったゲームを一から開発し始めたのは面白い。
Chapter 13 ゲームにおける強化学習の数理
私も強化学習は最近勉強していて、高周波用途ないかな、と思っているがやっぱり動きがあるというか時間で変わるものじゃないと面白くない。ゲームはぴったり。
Chapter 14 ゲームにおけるニューラルネットワークの数理
ニューラルネットワークの分かりやすい解説。ニューロエボリューションは初めて知った。
Chapter 15 深層学習と生成AI
ゲームにもLLMがどんどん取り入れられていくのだろうと実感。
Chapter 16 ゲーム空間の多様性/特殊相対性理論のゲーム空間
これ昔考えたことあったが、もうやっている人がいたのか。
今回はこの例題。
コードはこんな感じで。
・IEEE Microwave Magazineでミリ波ガラス基板・超伝導・液晶などの記事
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668
・Pythonの高周波ライブラリscikit-rfがv1.7.0に
Sパラメータの誤差が計算できるようになった。
https://github.com/scikit-rf/scikit-rf
・Megamagneticsの希土類を使わないミリ波サーキュレータ
・CoilcraftのRFインダクタホワイトペーパー
これずっと前に買ったけれどようやく読めた。
アマゾンリンク:https://amzn.to/4lHsFYH
あらすじは
「舞鶴の海辺の町で発見された、記憶喪失の青年。名前も、出身地も何もかも思い出せない彼の身元を辿る手がかりは、唯一持っていた一本の「扇」だった……。そして舞台は京都市内へうつり、謎の青年の周囲で不可解な密室殺人が発生する。事件とともに忽然と姿を消した彼に疑念が向けられるが……。動機も犯行方法も不明の難事件に、火村英生と有栖川有栖が捜査に乗り出す! 」
トリックはすぐに火村さんが見破りますが、記憶喪失の謎(これは帯通りの真相)が明らかになるとすぐに犯人も見破る。
しかし犯人の動機が…いやあんまり書けないけどひどいな。
・QorvoがスマートファクトリーにUWB利用の解説
・KYOCERA AVXがUHF,VHF向け高方向性カプラ発表
・Wireless Broadband Allianceが企業向けWi-Fi 7トライアル結果報告
・NXPが第三世代イメージングレーダプロセッサ発表
NXP Unveils Third-Generation Imaging Radar Processors for Level 2+ to 4 Autonomous Driving
今回はこの例題。
いつものように
・6Gにはテラヘルツどころか7-14GHzも向いてないという意見
The 6G 'golden band' is probably worthless in mobile
・フィンランド企業が6G推進コンソーシアムRF ECO3発表
・Infineonが7P7T内蔵7ch-LNA発表
・SpirentがOctoboxにWi-Fi 6/7自動テスト追加
IMAXの大画面で観ようと109シネマズ大阪エキスポシティまで。
カードもらった。
IMAXは最初にカウントダウンが入るが、そこでまず驚く。
で、出てくるのがアヴェンジャーズでヴィランだった連中で、さらにダメダメになっている。
だが戦うのがもう宇宙人とかじゃないのも新鮮。裏切られ、消されそうになり仕方なく協力しあう。
そこでボブという何の能力もなさそうな青年と一緒になるが…これがポイントなので書かない。
ただそういう連中が人々を助け、チームでありヒーローになる瞬間があってそこはグッとくる。
でも最後はまあ一杯食わされる…相手の方が上か。
サンダーボルツの名前の由来がわかるが最後に*(アスタリスク)の意味も分かる。これはやっぱり上付きの*だな。
でも本当にそうするのか?
本物のキャップがどう思っているかもポストクレジットでちゃんと描かれるし、意外な作品とクロスオーバーするのも面白い。もちろん帰ってくる。
・everythingRFが6GのeBook発行
・FCCが37GHz帯の共用規則策定
FCC pushes forward with 37 GHz sharing rules
・Spirentが5Gクラウドネイティブについてレポート
https://content.rcrwireless.com/editorial-report-navigating-the-5g-cloud-native-transition
・ローデ・シュワルツが高速差動伝送の測定について解説
・Qualcommが2025Q2の決算発表
この記事を見た。
ユニクロからAkamaiコラボTシャツ再び 前回はGoのコードをプリント、今回は……
以前、ソースコードという名前のエンジニア向け日本酒を解読したことがあったが、今回もやってみよう。
まずはWindows11に付属のSnipping ToolにはOCR機能があるのでそれで読む。1とlとか0とOはよく間違っているので面倒だが修正して
Pythonでbase64デコードすると、、、
bashのシェルスクリプトだな。全体はこちら。
#!/bin/bash
# Congratulations! You found the easter egg! ❤️
# おめでとうございます!隠されたサプライズを見つけました!❤️
# Define the text to animate
text="♥PEACE♥FOR♥ALL♥PEACE♥ FOR♥ALL♥PEACE♥FOR♥ALL♥"
# Get terminal dimensions
cols=$(tput cols)
lines=$(tput lines)
# Calculate the length of the text
text_length=${#text}
# Hide the cursor
tput civis
# Trap CTRL+C to show the cursor before exiting
trap "tput cnorm; exit" SIGINT
# Set freqeency scaling factor
freq=0.2
# Infinite loop for contineous aniiation
for (( t=0; ; t+=1 )); do
# Extract one character at a time
char="${text:t % text_length:1}"
# Calculate the angle in radians
angle=$(echo "($t) * $freq" | bc -l)
# Calculate the sine of the angle
sine_value=$(echo "s($angle)" | bc -l)
# Calculate x position using the sine value
x=$(echo "($cols / 2) + ($cols / 4) * $sine_value" | bc -l)
x=$(printf "%.0f" "$x")
# Ensure x is within terminal bounds
if (( x < 0 )); then x=0; fi
if (( x >= cols )); then x=$((cols - 1)); fi
# Calculate color gradient between 12 (cyan) and 208 (orange)
color_start=12
color_end=208
color_range=$((color_end - color_start))
color=$((color_start + (color_range * t / lines) % color_range))
# Print the character with 256-color support
echo -ne "\033[38;5;${color}m"$(tput cup $t $x)"$char\033[0m"
# Line feed to move downward
echo ""
done
|
そしてWSL2のUbuntuで動かした結果を動画で。
♥PEACE♥FOR♥ALL♥FOR♥ALL♥PEACE♥FOR♥ALL♥という文字が色付きで正弦波で流れてる。凝ってるな。
・Qorvoのミリ波FWA解説
・SamtecがIC冷却機構の下における低背高速コネクタ発表
・IEEE MTT-S WAMICONの内容
・MediaTekが語るWi-Fi 7
MediaTek on the ‘radical change in architecture’ for Wi-Fi 7
・GSAの5G RedCapレポート
・FibocomのAIと5G FWAレポート
最近のコメント