« 2024年11月 | トップページ | 2025年1月 »
量子力学100年という特集をいろいろな雑誌がしている。科学や数理科学は買って読んだがNewtonの特集もそうだということで購入。現代化学の特集もそうらしい。
アマゾンリンク:https://amzn.to/4iTY3BM
Newtonは先に読んだ2誌よりずっと一般向けなので一切数式なしに2ページずつで物理学者とその業績をわかりやすく紹介している。
実は最初の広告ページからNGKがガラスで量子力学の話をしていたり。
プランク→アインシュタイン→ドブロイ→ハイゼンベルク→シュレーディンガー→ディラック→不確定性原理→コペンハーゲン解釈→量子もつれ(昨日NHKスペシャルでもやっていた)から
仁科芳雄、朝永振一郎、ファインマンなどの紹介やトランジスタ、BCS理論、南部陽一郎、江崎ダイオード、量子コンピュータなど52ページで幅広い話題を扱っている。
高校生や理系ではないが興味がある大人にはとってもいい特集なのではなかろうか。
その他レオナルドダヴィンチの解説や猫の心理学、母体の神秘など面白い話題が多かった。
こちらのスレッドです。ε・δ論法は大学一年生の時に習ったが、私はそんなに違和感なかったけどなあ。
NHK パンサー尾形さんの笑わない数学 微分・積分 スペシャルがもうすぐ始まる。これから見てリアルタイムでポスト。https://t.co/ksKTeLKZcz
— tomo (@tonagai) December 29, 2024
こちらから続くポストです。
NHKスペシャル 「量子もつれ アインシュタイン 最後の謎」がもうすぐ始まる。一般向けにどうやって説明するんだろう。語りは宇多田ヒカルさんと春風亭一之輔さん。75分とかなり長い番組になってる。https://t.co/BLjr1kTYCa
— tomo (@tonagai) December 28, 2024
忍たま乱太郎の忍術学園があるけど観てきたのは聖☆おにいさん THE MOVIE ホーリーメンvs悪魔軍団。
ストーリーは
「広い宇宙の数あるひとつ、燦然と輝く命の星、地球。
世紀末を無事乗り越えた神の子イエスと仏の悟りを開いたブッダは、
日本の四季折々を感じながら下界で密やかにバカンスを楽しんでいた。
東京・立川にある風呂なし6畳一間のアパートをシェアし、ふたり暮らし。
アイスを分け合ったり、近所の商店街で福引きを楽しんだり、
お笑いコンビ「パンチとロン毛」を結成したり。
ゆるーい日常を過ごす2人の元にある日、天界からの使者が現れ、
禁断のオファーが伝えられる。
やがてそれは、神も仏も天使も悪魔も入り乱れる、
まさかの地球滅亡の危機へと繋がっていく!?」
と公式サイトに書いてありますが実際はニチアサ特撮番組のパロディ。脚本家が2人(?)出てくるのですが
その脚本の追加戦士たち(次々出てくる)がひどすぎる…
デンジマンを思わせる戦士たち(これも豪華メンバー)は島本先生デザインだった。
そしてものすごい有名俳優たちが本当にどうでもいい役で出てきていて面白い。
カンペを読む人と走馬灯に現れる人はえ?この人が?とか思った。
しかし一番面白かったのは宮内みどりのくだり。あれアドリブなの?脚本だったら逆にすごいけど。
そして最近まで神(全領域異常解決室)だった藤原竜也さんも堕天使で登場。
もう何も考えなくても笑えます。
最近、書店で本を買うとRFIDタグが入っている。シールのような形で台紙に貼りついているのでなんとか台紙から引きはがした。
汚いがこんな感じ。
ピカピカ光っているのがダイポールアンテナ。で真ん中のギャップにチップがあるはず…とiPhone 16 Pro Maxのマクロカメラで撮ってみると…
はっきりとは見えないが何となく見えるな。すごい。ある程度なら顕微鏡のような使い方もできる。
ちなみにRFIDは電源なしで動くが(ICOCA、SUICAとかと同じ)、リーダーからRF信号として電源もらいながら負荷変調(あるいはバックスキャッタリング)という面白い方式で実現している。最初これを聞いたときは面白いことを考えるなあと感心した。
・MediaTekがDimensity 8400を発表
・TDKのパターンコイル解説
・太陽誘電の0.35mm厚さのメタル系パワーインダクタ
・3GPPのリーダーインタビュー
・GSAの2G-3G切り替えレポート
・Amazon Sidewalk解説
・Withwaveの110GHzマルチ同軸コネクタ
これがポストのリンク。
Googleサンタ追跡、サンタさんは本州を素通りして日本の父島へ到着。 pic.twitter.com/0RVITRtZjE
— tomo (@tonagai) December 24, 2024
Google ColabにはAIでコードを生成する機能がある。生成、の部分をクリックして、
やってほしいことを書くと、勝手にコードを書いてくれる。
# prompt: scikit-rfをインストールし、その他必要なライブラリをimportしてください。Googleドライブに接続し、Colab Notebooksフォルダに入っているMMPX-00002PSM.s5pというTouchstoneフォーマットのSパラメータを読み込んでください。その後、S21,S31,S41,S51のみをdB単位でグラフ表示してください。
!pip install scikit-rf
import skrf as rf
import numpy as np
import matplotlib.pyplot as plt
from google.colab import drive
# Mount Google Drive
drive.mount('/content/drive')
# Load the network data
network = rf.Network('/content/drive/MyDrive/Colab Notebooks/MMPX-00002PSM.s5p')
# Extract S-parameters and convert to dB
s21_db = 20 * np.log10(np.abs(network.s[:, 1, 0]))
s31_db = 20 * np.log10(np.abs(network.s[:, 2, 0]))
s41_db = 20 * np.log10(np.abs(network.s[:, 3, 0]))
s51_db = 20 * np.log10(np.abs(network.s[:, 4, 0]))
# Create the plot
plt.figure(figsize=(10, 6))
plt.plot(network.f, s21_db, label='S21 (dB)')
plt.plot(network.f, s31_db, label='S31 (dB)')
plt.plot(network.f, s41_db, label='S41 (dB)')
plt.plot(network.f, s51_db, label='S51 (dB)')
# Customize the plot
plt.xlabel('Frequency (Hz)')
plt.ylabel('Magnitude (dB)')
plt.title('S-Parameters (S21, S31, S41, S51)')
plt.legend()
plt.grid(True)
# Show the plot
plt.show()
|
実行すると、ちゃんと表示してくれる。
スミスチャートも描いてくれる。
# prompt: S11のみスミスチャートを表示してください。
import skrf as rf
import matplotlib.pyplot as plt
from google.colab import drive
drive.mount('/content/drive')
network = rf.Network('/content/drive/MyDrive/Colab Notebooks/MMPX-00002PSM.s5p')
network.plot_s_smith(m=0, n=0) # m=0, n=0 corresponds to S11
plt.title('Smith Chart of S11')
plt.show()
|
もうコード書く必要もないし、Pythonの環境を整える必要もない。すごい時代になったものだ…
原作はある程度読んでいた(BLACKは1、2話程度)ので内容想像していたのだが、想像の100倍くらいよかった。
まさか泣ける話になっているとは…(会場ですすり泣く声があちこちで聞こえたり)
細胞パートは、とにかく永野芽郁さんが可愛いのと、佐藤健さんがあのメイクなのにかっこいい。アクションもこれまであまり見たことないような壁蹴りアクションですごい。仲里依紗さんもとにかく強くて、山本耕史さんとのシーンもよかった。ただアクションと言えば最後に持って行ったのは松本若菜さんでした。
Fukaseさんの生い立ちといい、とにかく想像していなかったような泣けるシーンが最後に連発されます。
一番泣けたのはあの白い…(ネタバレなんで書かない)。
人間パートは、阿部サダヲさんが最初は笑かしてくる(便意のところはひとごとじゃない…)がどんどん泣ける話になっていく。
芦田愛菜さんは最初可愛くてどんどん病気になって…という演技はやはりすごい。
エンドクレジットで出てきた細胞の詳細な説明もあって勉強にもなる。これはお勧め。
エンディング曲のOfficial髭男dismの50%もいい曲です。
書店でものすごい数が平積みされていて、伊坂さん人気がよくわかる。
アマゾンリンク:https://amzn.to/4fqZtRe
あらすじは「中学教師の檀は、猫を愛する妙な二人組の小説原稿を生徒から渡される。さらに他人の未来を観る力を持つことから謎の集団とも関わり始め……。苦い過去を乗り越えて檀先生は、世界を、自分を救えるのか!? 」
というもの。檀先生の未来を見る能力<先行上映>は他人の飛沫をあびる!ことで発生するもので、それを得るための苦労が面白い。
また教え子の女子が書いてきた小説(猫を虐待していたり、その動画に賛辞を送っていた連中を2人組の猫好きな男たちが復習していく)が交互に挟まる展開で、これ全然関係ないじゃない、と思ったら驚きの展開でクロスオーバー。なるほど、やっぱり伏線がはってあった。
テロや、近年のマスコミ報道とかの批判にもつながる話もあり、そしてなんとニーチェのツァラトゥストラも重要な役割を果たす。
ラストの真相はそのニーチェの言葉が伏線にもなっていた。びっくり。やっぱり伊坂さんは面白い。タイトルの意味もそこで分かる。
ペッパーズゴーストはディズニーのホーンテッドマンションのゴーストに使われているそう。
伏線と言えば部長のが一番好きだったり。お勧めです。
・Qualcommの6Gスペクトルのプレゼン資料
やっぱりテラヘルツより7GHz帯が現実的。
・3GPPの6Gのシナリオとパフォーマンス要件
・Infineonの新ミリ波レーダチップ
・Spectrum Controlのミリ波ダウンコンバートSiP
・NXPが車載ネットワークのAviva Linksを買収
・SiversとAyar Lasbが協業
その他:
ちょっと出遅れましたが観てきました。シールもらった。
しかしどんどん海や、肌の質感がすごくなっていく。髪の毛も。もういくらCGが進んでも驚かないとはいえさすがはディズニー。
あらすじは
「モアナが壮大な冒険の末に故郷の島を救ってから3年。妹シメアが生まれて少し大人になったモアナは、愛する家族や島の仲間たちに囲まれながら、以前は禁じられていた海へと航海に繰り出す日々を送っていた。そんなある日、「かつて人々は海でつながっていたが、人間を憎む神によって引き裂かれてしまった。海の果てにある島にたどり着けば呪いが解け、世界は再びひとつになる」という伝説を知ったモアナは、人々の絆を取り戻すため立ちあがることを決意。風と海を司る半神半人のマウイや島の新たな仲間たちとともに、危険に満ちた冒険の旅に出る。 」
というものだが、とにかく新たな仲間というのがつかえなさすぎて笑える。にわとりがマシに思える…でも当然最後はちゃんとしますが。
今回の新キャラではマタンギがよかった。ソニンさんが吹き替えだがその歌もよかった。しかしエンドクレジット中のあれを見るとまだ何も終わってない(3作目への布石)。
カカモラの戦士がかっこよかったり、マウイの刺青が大変なことになってどうなるのかと思ったら…というのもよかった。
終わると子供たちが拍手してたので、やっぱり人気があるなあと感心。
ところであれはムツゴロウ?ハゼ?
数理科学2025年1月号 量子力学の軌跡 現代的視点で捉えなおす100年の歩みを買った。
アマゾンリンク:https://amzn.to/3BBFWA0
内容は
巻頭言 ~ 量子力学の建設から百年を迎えて ~ 筒井 泉
どこから数えて100年?と思ったらハイゼンベルクの行列力学が出てからだそうです。
量子論から量子力学へ 山本義隆
山本さんらしく歴史的なことがとても詳しいのと、最後のFeynmannおそるべしである、が面白い。
量子力学と素粒子論の成り立ち 米谷民明
湯川さんが中間子のもとになる発表をしたとき、電子を考えていたが仁科さんからボソンを考えた方がいいというアドバイスがあったのは知らなかった。また朝永さんは繰り込みのことを自己無撞着引算法と呼んでいたことも。
日本における量子力学の受容 伊藤憲二
1969年の数理科学で山内恭彦、朝永振一郎、山口嘉夫、西島和彦が量子力学についての座談会をしていたのはすごい。
量子力学のユニークさ ~ 量子力学は他の物理学理論とどう違うか ~ 谷村省吾
基礎から応用まで分かりやすく書かれていて面白かった。
量子と物理 ~ マクロ系における量子力学 ~ 清水 明
マクロな重ね合わせのことは初めて知った。
量子力学の基礎問題 ~ 現状と新たな展開 ~ 木村 元
ベル定理から情報因果律まで最新の状況まで含めて読めたのは初めて。
量子と情報 ~ 量子情報科学の創成期の人々とその後の発展 ~ 井元信之
量子マネー面白い。また量子コンピュータ、FTQCまで書かれていて参考になる。
・RCRwirelessの6Gフォーラムレポート
https://content.rcrwireless.com/6g-forum-2024-key-findings-report
・OmdiaとHuaweiのData-driven NPS Managementホワイトペーパー
・GSAのPrivate Mobile Networkレポート
・TDKの環境負荷が小さいSMDバリスタ
エミール・ガレ展をやっているのを知って京都駅→伊勢丹まで。
石岡瑛子 I デザイン@兵庫県立美術館を観てきた時もそうだったが、来ている人の女性比率99%くらいだった。
どれも目が眩むほどきれいなガラス工芸。
写真もOKだった。
・BAWフィルタのAkoustisが事業売却へ
Qorvoに訴えられたのが致命傷だったのかな。でも買うところあるのだろうか。
・Nordic nRF52840を使ったMatter Over Threadスマートロック
・NokiaとEOLOがイタリアに5Gミリ波ネットワークを
・CCS Insightsの2025年通信業界予測
・Imecの140GHzのInPチップレット
さて前回はモンテカルロシミュレーションで学習用のデータを作った。
今回は実際にDNNをやってみる。
まずは読み込み。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import keras
data_label = np.load("tl_data.npz")
data = data_label["data"]
label = data_label["label"]
x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.3, random_state=0)
|
次はモデルの設定。フィルタのときと同じにした。
# Functional APIでDense層を3層にしたDNNを設定
hidden_dim = 100
inputs = keras.Input(shape=(200, 5))
x = keras.layers.Flatten()(inputs)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
outputs = keras.layers.Dense(1)(x)
# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
|
そして学習。
batch_size = 32
epochs = 100
keras.utils.set_random_seed(1)
history = model.fit(
x_train,
y_train,
batch_size=batch_size,
epochs=epochs,
validation_split=0.15,
)
y_pred = model.predict(x_test)
metric = keras.metrics.R2Score()
metric.update_state(y_test, y_pred)
result = metric.result()
print(result)
error = np.abs((y_test - y_pred)/y_test*100)
print(error.mean())
|
これでなんと99.99%のR2scoreが得られた。
図示すると、
legend = ["Z0"]
fig, ax = plt.subplots(1, 2, figsize=(12,6))
maxvalue = y_pred.max()
minvalue = y_pred.min()
ax[0].scatter(y_pred, y_test, c="r", s=5)
ax[0].plot([0,maxvalue], [0,maxvalue], "--", c="black")
ax[0].set_xlabel("推定した値", fontname='MS Gothic')
ax[0].set_ylabel("実際の値", fontname='MS Gothic')
ax[0].set_xlim(minvalue, maxvalue)
ax[0].set_ylim(minvalue, maxvalue)
ax[0].grid()
ax[0].legend([legend[0] + f" 平均誤差{error.mean():.2f}%"], prop={"family":"MS Gothic"})
ax[1].hist(error, bins = 100)
ax[1].set_xlabel("誤差[%]", fontname='MS Gothic')
ax[1].set_ylabel("頻度", fontname='MS Gothic')
ax[1].grid()
fig.tight_layout()
plt.show()
|
かなり合ってる。これ、もう少し現実的なモデルを使えば十分使えるのではなかろうか。
・IEEE Microwave Magazineの特集は能動素子、広帯域ネットアナの校正など
https://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=6668
・Microwave Journalは軍用電子機器
https://www.microwavejournal.com/publications/1
Atyuneというアンテナマッチング用ソフトがあるのを初めて知った。
・阪大と東洋紡が6Gに向けた低損失基板
・Broadcomの4Q決算
・SamsungのXRヘッドセットMoohan
・iFixitがゲームボーイ互換機を分解
Wi-Fi/Bluetoothも入っている。
IMAXで観てきました。
とにかく主役のアーロン・テイラー=ジョンソンの肉体がすごい。最初の刑務所のシーンからその肉体を使ったアクロバットのようなアクションが続く。しかも殺し方がエグい…これはR15+も仕方ない。とにかく殺されまくる映画。
そしてギャングのボスである親父(職業?は最後の方まではっきり言わなかった)がラッセル・クロウ。最近こういうでっぷりした役が多いが、ロシア語訛りの英語を話していた。狩りが好きで子供達をライオンを仕留めに連れて行ってある事件が起きてクレイヴンが生まれることとなる。
きっかけのカリプソも最後の方でなんでこの格好?と思ったらああ、そういう…映画内では説明はないですが。
ザ・フォーリナー(催眠をかける能力だそうだ)もライノもスパイダーマンのヴィランで、クレイヴンもそう、ということはスパイダーマン抜きでヴィラン同士が闘う映画ということでそれはそれで面白い。
弟もものまね(あれは実際やってないよね?ラッセル・クロウの真似だけは本人かもしれないと思った。)とライノが伏線でスパイダーマンの設定どおりになったようで、これは続編できそう。
本作品で15年目だそうです。
アマゾンリンク:https://amzn.to/3D38ti1
今回の内容は、
・ルース・アーロンゲーム
ルース・アーロンペアが出てきます。ただ、エルデシュの証明は誤りだったという話(密度が0なのは証明した)。
・クッキー、翌日サウナ
5枚のカードと2人の囚人パズル(を変えたもの)が出てきます。
・ねじれねじれて三角形
ペンローズの三角形が出てきます。
・エッシャーランドでだまし絵を
これはミステリとしても面白かったり。
もちろんエッシャーのだまし絵が出てきますが、ペンローズ・タイルも。あと鍵のパズル(3パス プロトコル)も出てきます。
解説はヨビノリたくみさんで、これも面白かった。
しかし11さつ(実際は13冊)もネタが続くのがすごいな。次はどんなネタを持ってこられるか楽しみ。
・TDKの新パワーインダクタと解説
・SEMCOの1608 X7T 10㎌ 10V 車載MLCC
・Qualcommの6G Foundry記事
・STMのIoTモジュール
・アナログデバイセズのソフトウェア無線学習モジュール
・TechInsightsのHuawei Mate 70解析
その他:
NXP Collaborates with geo for Matter-Enabled Smart Energy Management for the Autonomous Home
Marvell:
Nokia:
https://content.rcrwireless.com/how-will-ai-improve-energy-efficiency-in-the-ran-report
フィルタ、アンテナとAI・機械学習の事例をやってきたので今回は伝送線路系。
測定治具は通常、同軸コネクタ(SMAなど)→同軸の芯と基板との接続部(不連続部)→基板に形成された伝送線路(マイクロストリップラインなど)のような構成をとる。特に不連続部の反射が大きかったりばらついたりして、マイクロストリップラインの特性インピーダンスがSパラメータだけからはよくわからない。通常使われるのはTDR(Time Domain Reflectometry)。
今回はTDRを使わず、不連続部と線路幅がばらついたSパラメータと特性インピーダンスを学習させて、Sパラメータのみで特性インピーダンスを予測する。
前回で、測定治具のモデリングの関数を作っておいた。これを使ってモンテカルロシミュレーションを行う。
基本、フィルタのときと同じなので説明は略。
不連続部をLとCでモデリングして、これと線路幅を乱数で振っている。そのSパラメータをdata, 特性インピーダンスをlabelとして10000個のデータを作る。
import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
from skrf.media import Coaxial, MLine
rf.stylely()
def mesurement_jig(fstart, fstop, n, coaxial_length, cap, ind, width, length, height, er):
"""
測定治具を模したSパラメータ及び基板の特性インピーダンスを返す関数
測定治具は
同軸コネクタ→シャントC→シリーズL
→基板に形成されたマイクロストリップライン
→シリーズL→シャントC→同軸コネクタの構成
導体損・tanδは今回は固定されている。
Parameters
----------
fstart : float
最低周波数[GHz]
fstop : float
最高周波数[GHz]
n : int
周波数分割数
coaxial_length : float
同軸コネクタ部分の長さ[mm]
cap : float
同軸コネクタ・基板接続部キャパシタンス[pF]
ind : float
同軸コネクタ・基板接続部インダクタンス[nH]
width : float
線路幅[mm]
length : float
線路長さ[mm]
height : float
基板厚み[mm]
er : float
基板比誘電率
Returns
-------
Stl : scikit-rfのNetwork
測定治具のSパラメータ
z0 : float
中央周波数の特性インピーダンス
"""
#周波数範囲設定
freq = rf.Frequency(fstart, fstop, n, "GHz")
#同軸コネクタのパラメータ(SMA相当)
coax = Coaxial(frequency=freq, Dint=1.3e-3, Dout = 4.59e-3, epsilon_r=2.29, tan_delta=4e-4, sigma=1/0.022e-6, z0_port=50)
#マイクロストリップラインのパラメータ
msl = MLine(frequency=freq, z0_port=50, w=width*1e-3, h=height*1e-3, t=35e-6, ep_r=er, tand=0.01, rho=1e-8, rough=0.127e-6)
#同軸コネクタの長さ決定
coax_line = coax.line(coaxial_length, unit="mm", name="coax_line")
#マイクロストリップラインの長さ決定
msl_line = msl.line(length, unit="mm", name = "msl_line")
#同軸コネクタと基板の接続部のLC
C = msl.shunt_capacitor(cap * 1e-12)
L = msl.inductor(ind * 1e-9)
#Casccade接続する
Stl = coax_line ** C ** L ** msl_line ** L ** C ** coax_line
#中心周波数の基板の特性インピーダンスを求める。
z0 = msl.z0[n // 2].real
return Stl, z0
#周波数の設定
fstart = 0.1
fstop = 20
n = 200
#固定する項目の設定
er = 4.0
length = 100
coaxial_length = 10
height = 0.254
#モンテカルロシミュレーションではL, C, 線路幅を乱数で振るがそれの最大最小
Lmin = 0.05
Lmax = 0.2
Cmin = 0.01
Cmax = 0.1
wmin = 0.2
wmax = 0.8
#測定治具データ1つ分作る関数
def tl_data(fstart, fstop, n, coaxial_length, cap, ind, width, length, height, er):
"""
Kerasで読めるような形で測定治具の2ポートSパラメータと特性インピーダンスを
1つ分のdata, labelとして出力する。具体的にはdataは(1, points, 5), labelは(1, 1)。
dataが5なのは対称的なのでS11=S22、S21=S12かつ複素数データなので
freq, S11real, S11imag, S21real, S21imagだから。Sパラメータは絶対値1なので規格化はせず
周波数のみ最大周波数で割っている。
"""
Stl, label = mesurement_jig(fstart, fstop, n, coaxial_length, cap, ind, width, length, height, er)
freq = Stl.f
Spara = Stl.s
data = np.array([freq[:]/fstop*1E-9,Spara[:,0, 0].real, Spara[:,0, 0].imag,
Spara[:,1, 0].real, Spara[:,1, 0].imag]).T.reshape(1, Spara.shape[0],5)
return data, label
#モンテカルロシミュレーションでデータ作成して保存する。
N = 10000
np.random.seed(1)
data = np.empty((0, n, 5))
label = np.empty((0, 1))
for i in range(N):
L = Lmin + (Lmax - Lmin) * np.random.rand()
C = Cmin + (Cmax - Cmin) * np.random.rand()
w = wmin + (wmax - wmin) * np.random.rand()
x, y = tl_data(fstart, fstop, n, coaxial_length, C, L, w, length, height, er)
data = np.vstack((data, x))
label = np.vstack((label, y))
#保存
np.savez_compressed("tl_data.npz", data=data, label=label)
|
最初の1000個のS11をプロットしたもの。まあまあ波形がばらついている。
さて準備ができたので次はDNNをやってみる(続く)。
久しぶりの火村シリーズを楽しみに読んだ。
アマゾンリンク:https://amzn.to/4ghunww
あらすじは
「大阪のマンションの一室で、元ホストの死体が
スーツケースに押し込められた状態で発見された。
凶器や被疑者はすぐに見つかり、
難なく解決するかに思われた事件は、
鉄壁のアリバイと捜査を攪乱する
“ジョーカー”によって不可能犯罪と化す。 」
というもの。これはトリックどうこうというより、解説にも書かれていますが動機、登場人物たちの関係性や、ある島への旅行が印象的で、あとがきでも有栖川さんがその旅行について語られている。
しかしジョーカーの正体がこれとは…しかも犯人との関係性があれとは…
これはしみじみ読んで旅に行きたくなるお話でした。
・5G AmericasがセルラーネットワークでのAIのホワイトペーパー
・ATISもAIとテレコムネットワークについてのホワイトペーパーを出していた。
・GSAが2024年の5Gレビュー
・NordicがIoTに適したThingy:91 X発表
・Wi-Fi 6GHzが世界でどうなっているか
What is the global status of 6 GHz Wi-Fi?
・Huaweiが5G GaNパワーアンプで有利
Huawei has one 5G power that is hard for the US to hurt
・Samsung Galaxy M34 5G分解
LCフィルタ、パッチアンテナの次は伝送線路(マイクロストリップライン)と同軸コネクタ(SMAなど)を含む測定治具をやってみよう。
uSimmics(旧名QucsStudio)で以前やってみたこんな構成をPythonとscikit-rfで実施するイメージ。
さっそく関数を紹介すると(もうコメントに説明があるので詳しくは略)、
import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
from skrf.media import Coaxial, MLine
rf.stylely()
def mesurement_jig(fstart, fstop, n, coaxial_length, cap, ind, width, length, height, er):
"""
測定治具を模したSパラメータ及び基板の特性インピーダンスを返す関数
測定治具は
同軸コネクタ→シャントC→シリーズL
→基板に形成されたマイクロストリップライン
→シリーズL→シャントC→同軸コネクタの構成
導体損・tanδは今回は固定されている。
Parameters
----------
fstart : float
最低周波数[GHz]
fstop : float
最高周波数[GHz]
n : int
周波数分割数
coaxial_length : float
同軸コネクタ部分の長さ[mm]
cap : float
同軸コネクタ・基板接続部キャパシタンス[pF]
ind : float
同軸コネクタ・基板接続部インダクタンス[nH]
width : float
線路幅[mm]
length : float
線路長さ[mm]
height : float
基板厚み[mm]
er : float
基板比誘電率
Returns
-------
Stl : scikit-rfのNetwork
測定治具のSパラメータ
z0 : float
中央周波数の特性インピーダンス
"""
#周波数範囲設定
freq = rf.Frequency(fstart, fstop, n, "GHz")
#同軸コネクタのパラメータ(SMA相当)
coax = Coaxial(frequency=freq, Dint=1.3e-3, Dout = 4.59e-3, epsilon_r=2.29, tan_delta=4e-4, sigma=1/0.022e-6, z0_port=50)
#マイクロストリップラインのパラメータ
msl = MLine(frequency=freq, z0_port=50, w=width*1e-3, h=height*1e-3, t=35e-6, ep_r=er, tand=0.01, rho=1e-8, rough=0.127e-6)
#同軸コネクタの長さ決定
coax_line = coax.line(coaxial_length, unit="mm", name="coax_line")
#マイクロストリップラインの長さ決定
msl_line = msl.line(length, unit="mm", name = "msl_line")
#同軸コネクタと基板の接続部のLC
C = msl.shunt_capacitor(cap * 1e-12)
L = msl.inductor(ind * 1e-9)
#Casccade接続する
Stl = coax_line ** C ** L ** msl_line ** L ** C ** coax_line
Stl.name = "Measurement jig"
#中心周波数の基板の特性インピーダンスを求める。
z0 = msl.z0[n // 2].real
return Stl, z0
|
これで、例えば基板のインピーダンスは同じとしてL,Cを変えた場合のS11を見ると、
・iFixitがDJI Neo分解
・TechInsightsがApple Pencil Pro分解
・QualcommのNeurIPS 2024でのAI技術発表
・IntelのIEDM 2024での発表
・Nokiaの7GHz帯の6G
Nokia kicks off 6G test in 7GHz at Dallas HQ
・Analog DevicesのPhased Array Antennaのホワイトペーパー
・ZDTが史上二番目の売上高
ポストカードもらった。ちょっとネタバレしているような気もするが…
とにかく冒頭から「???」のシーンの連続で、30年後のハイジャックでさらに「???」となって途中である程度真相がわかるまではいったいこれはどういう話なんだと引き込まれる。
チーフと6人の女性(まさにチャーリーが出てくるチャーリーズエンジェルみたいな)の正体やその過去の壮絶さには涙…
とにかく悪役がめちゃくちゃ悪いです。よくこんな設定考えるなあというほど。
もちろんアクションもすごいですが、カーアクションまであるとは驚いた。これもすごかった。
でこれは公式サイトにも出てないのでネタバレ?なのかもですが主役のシャー・ルク・カーンさんの一人二役がびっくり。いちいち親父の登場がかっこいいが主役を食ってるというか本人だから…体もムキムキでかっこいい。
そしてタイトル回収シーンと、冒頭の伏線が回収されるうシーンは痺れた。
政治批判のようなこともあり、すごい勧善懲悪なのでインドで人気が出たのはよくわかる。
もちろんダンスもあり。面白いのでお勧め。
冒頭にdesclaimerが出るのと、エンドクレジットまったく名前読ませる気がないのには驚いたが…
RF Toolboxの次はRF PCB Toolbox。多層のP板の設計に使えるが、平面回路のデザインとソルバーも入っている。
まずはCoupled Line Filterをやってみる。チュートリアルから周波数だけ変えたもの。
まずはどんな構造か図示できる。
そしてdesignで設計、Sパラメータに直す(結構時間かかる。ちゃんとシミュレーションしてくれているよう)。
ラットレースカプラは基板をRogersに変えてみた。
結果はこちら。ちゃんと3GHzで動くようになっている。
ソルバーについてはこちら。
しかしMATLABなんでもできるな。Antenna Toolboxもある。
・NGMNが無線パフォーマンス評価フレームワーク発行
NGMN releases “Radio Performance Assessment Framework” to guide next-generation RAN development
・5GAAがC-V2Xのロードマップ発行
・Marvellの3nm 1.6Tbps PAM4インターコネクト
・Nokiaの2.4Tbps光伝送
・Silicon Labsの低消費電力モジュール
・Xiaomi 14T Pro分解動画
Interface誌でMATLAB Onlineのライセンスがついてきたのでいろいろ試している。
今回は高周波用途で使われるRF Toolbox。
読み込みは s = sparameters("ファイル名")で簡単にできるし、dB表示の図示はrfplot(s)でOK。ポートを指定する時は下図のようにする。
スミスチャートはsmithplot(s, i, j)とこれも簡単に描ける。
フィルタ合成もできる。
IEEE P370 De-embedding(ZC-2xThru)も使える。
もともとこれはMATLABで書かれていたので当然といえばそう。
Pythonのscikit-rfよりずっと簡単な気がする。ただTDRがどうも一回有理関数近似して、とか制限あるっぽい(自分でFFTで作ればいいだけですが)。RF pcb toolboxというのもあって、それを使えば複雑な高周波の平面回路も簡単にできそうなのでそれも試したい。
数日前に、QucsStudioの最新版が出た、と思ったらuSimmicsに名称変更されていた。
https://qucsstudio.de/download/
作者さんによると、
https://qucsstudio.de/forums/topic/version-5-8-released/」
”待望の新バージョンがダウンロード セクションで入手可能です。Qucs プロジェクトと明確に区別するために、アプリケーション名が uSimmics に変更されたことに注意してください。これは、非常に多くの改良、新機能、バグ修正を含むメジャー リリースです。 ”
ということでした。
画面の比較をすると、
QucsStudio
uSimmics
ということでアイコンがでかくなった以外はそこまで見た目は変わらない。ただ新機能が追加されているということなのでまた調べてみよう。
また、Pythonの高周波用ライブラリscikit-rfもv1.5.0にバージョンアップされていた。
https://github.com/scikit-rf/scikit-rf/releases/tag/v1.5.0
こちらもpipでアップデート済み。
さて昨日はInterfaceを買ってMATLAB Onlineのライセンスをゲットした話を書いた。
今日はその中でSimulinkを使ってLorenz方程式を解いてみよう。実はMATLABは昔使っていたが、Simulinkを使うのは今回が初めて。
オンライン講座のSimulink入門がよくできていたので簡単にできた。
dx/dt = σ(y - x)
dy/dt = x(ρ - z) - y
dz/dt = xy - βz
の形をしていて、それをSimulinkに落とし込むとこうなった。
ソルバーは指定できるのでode8にした。結果はこちら。
箱を線で結ぶだけでできるのは(今更ながら)新鮮。
データインスペクターを使うと重ねて描ける。
ついでにロジスティック写像の分岐図も描いてみた。
カオス繋がりでMATLAB OnlineのSimulinkでロジスティック写像X(n+1)=aX(n)(1-X(n))の分岐図を描いてみた。
— tomo (@tonagai) December 4, 2024
ちゃんと窓も見えてる。 pic.twitter.com/QMoZl2RUwc
日経サイエンス2025年1月号の特集は和算再発見だった。
アマゾンリンク:https://amzn.to/41cyaa9
その中の佐藤賢一さんの記事「算聖 関孝和の実像」に出てきた円弧の2乗の矢高に対する近似式、
関・建部の研幾算法での方法
F(x)=(-9/40+6131089x/120+752638x²/45+340127x³/30-5966x⁴/3+699904x⁵/45)/113^2
関の括要算法での方法
H(x)=(5107600x-23835413x²+43470240x³-37997429x⁴+15047062x⁵-1501025x⁶-281290x⁷)
/(1276900*(1-x)⁵)
が正確な値
cos⁻¹(1-2x)²
と比べてあまりにもすごいのでカシオの高精度計算サイトkeisan.casio.jpに自作式として作ってみた。
リンクはこちら。
こんな感じの画面になります。
やっぱり関孝和はすごいわ。
今月のInterfaceはMATLABで1ニューロンから手作り 数学&図解でディープ・ラーニング。
アマゾンリンク:https://amzn.to/3OzDahr
Simulinkを使って本当に1ニューロンからモデル化してとても分かりやすい。
そこからAlexNetの転移学習や、CNNの実装、バックプロパゲーション、ADAM、また数学の基礎まで内容が豊富。しかしPythonで私もディープラーニングやっているけどMATLABのほうがはるかに簡単に記述できるな。
そして何と、2025年5月までのMATLAB Onlineのライセンスがついてくる!それ以外にも
・MATLAB Online ・Simulink
・Deep Learning Toolbox
・Statistics and Machine Learning Toolbox
・Image Processing Toolbox
・Computer Vision Toolbox
・Symbolic Math Toolbox
が使える。しかしMATLABは大昔使ったっきりで完全に忘れているのでオンラインコース受けてみた。
MATLAB入門のコース修了証。
Simulink入門の修了したのだが、うまくコース修了証が表示されない…
ディープラーニング以外にもいろいろ遊んでみよう。
知らなかったのだが、MATLAB Onlineはライセンスなしでも無償で月20時間使えるそうだし。
また付録はディープ・ラーニングの始まりと現代社会での活用、だったがこれも読みごたえがある。エミー・ネーターまで記載されていたのは驚いた。
さて前回はパッチサイズ(W、L)、基板厚みh、共振周波数を与えて基板誘電率が予測できるかやってみた。
今回は電気的に測定できる入力インピーダンスRinと共振周波数f0のみを与えて指向性が予測できるかやってみる。
学習データはいつものようにモンテカルロシミュレーションで作る。
import numpy as np
import patchantenna as pa
#モンテカルロシミュレーションでは基板比誘電率、厚み、中心周波数を乱数で振るが、それの最大最小
ermin = 2.0
ermax = 10.0
hmin = 0.1
hmax = 1.0
f0min = 1
f0max = 10
#モンテカルロシミュレーションでデータ作成して保存する。
#周波数と入力インピーダンスを与えて指向性を予測する。
N = 10000
np.random.seed(1)
data = np.empty((0, 2))
label = np.empty((0, 1))
for i in range(N):
er = ermin + (ermax - ermin) * np.random.rand()
h = hmin + (hmax - hmin) * np.random.rand()
f0 = f0min + (f0max - f0min) * np.random.rand()
ant = pa.PatchAntenna(er, h, f0)
Rin = ant.input_impedance()
direc = ant.directivity()
data = np.vstack((data, np.array([Rin, f0])))
label = np.vstack((label, direc))
#保存
np.savez_compressed("directivity.npz", data=data, label=label)
|
そしてKeras3.0を用いたディープラーニング(DNN)で予測する。
まずデータを読み込み、訓練データとテストデータに分ける。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
import os
os.environ["KERAS_BACKEND"] = "tensorflow"
import keras
data_label = np.load("directivity.npz")
data = data_label["data"]
label = data_label["label"]
x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.3, random_state=0)
|
次にモデルを作る。セル数64の3層のモデル。
#正規化
normalizer = keras.layers.Normalization()
normalizer.adapt(x_train)
# Functional APIでDense層を3層にしたDNNを設定
hidden_dim = 64
inputs = keras.Input(shape=(2,))
x = normalizer(inputs)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
x = keras.layers.Dense(hidden_dim, activation="relu")(x)
outputs = keras.layers.Dense(1)(x)
# モデルの設定
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss = 'mean_squared_error' ,optimizer=keras.optimizers.Adam())
|
そして学習させる。
batch_size = 32
epochs = 100
keras.utils.set_random_seed(1)
history = model.fit(
x_train,
y_train,
batch_size=batch_size,
epochs=epochs,
validation_split=0.15,
)
y_pred = model.predict(x_test)
metric = keras.metrics.R2Score()
metric.update_state(y_test, y_pred)
result = metric.result()
print(result)
error = np.abs((y_test - y_pred)/y_test*100)
print(error.mean(axis=0))
|
R2score99.7%となかなかいい結果になった。
では図示して確認してみる。
legend = ["Directivity"]
fig, ax = plt.subplots(1, 2, figsize=(12,6))
maxvalue = y_pred.max()
ax[0].scatter(y_pred, y_test, c="r", s=5)
ax[0].plot([0,maxvalue], [0,maxvalue], "--", c="black")
ax[0].set_xlabel("推定した値", fontname='MS Gothic')
ax[0].set_ylabel("実際の値", fontname='MS Gothic')
ax[0].set_xlim(5, maxvalue)
ax[0].set_ylim(5, maxvalue)
ax[0].grid()
ax[0].legend([legend[0] + f" 平均誤差{error.mean():.2f}%"], prop={"family":"MS Gothic"})
ax[1].hist(error, bins = 100)
ax[1].set_xlabel("誤差[%]", fontname='MS Gothic')
ax[1].set_ylabel("頻度", fontname='MS Gothic')
ax[1].grid()
fig.tight_layout()
plt.show()
|
これだけ合っていれば使えそう。次の題材は伝送線路かな。
最近のコメント