高周波エンジニアのためのAI・機械学習入門(GPU編20)TDRでは出せない複素特性インピーダンスの周波数特性を予測する。今回は準備編でscikit-rfを使ってデータをモンテカルロシミュレーションで作る。
さてこれまではTDRでは出せない複素特性インピーダンスの1点を機械学習で予測することをやってきた。
たまに聞かれるのは特性インピーダンスの周波数特性が欲しいがどうしたらいい?ということ。じゃあこれも機械学習でやってみよう。
まずは準備として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, float, float
基板の特性インピーダンスの周波数特性(f, z0r, z0i)
"""
#周波数範囲設定
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
#基板の特性インピーダンスを求める。
z0r = msl.z0[:].real
z0i = msl.z0[:].imag
return Stl, z0r, z0i
#周波数の設定
fstart = 0.1
fstop = 20
n = 200
#固定する項目の設定
length = 100
coaxial_length = 10
#モンテカルロシミュレーションでは誘電率,L, C, 線路幅、基板厚みを乱数で振るがそれの最大最小
ermin = 2.0
ermax = 5.0
Lmin = 0.05
Lmax = 0.2
Cmin = 0.01
Cmax = 0.1
wmin = 0.2
wmax = 0.8
hmin = 0.1
hmax = 0.3
#測定治具データ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, points, 3)。
dataが5なのは対称的なのでS11=S22、S21=S12かつ複素数データなので
freq, S11real, S11imag, S21real, S21imagだから。Sパラメータは絶対値1なので規格化はせず
周波数のみ最大周波数で割っている。
"""
Stl, z0r, z0i = 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)
label = np.array([freq[:]/fstop*1E-9,z0r[:], z0i[:]]).T.reshape(1, Spara.shape[0],3)
return data, label
#モンテカルロシミュレーションでデータ作成して保存する。
N = 10000
np.random.seed(1)
data = np.empty((0, n, 5))
label = np.empty((0, n, 3))
for i in range(N):
er = ermin + (ermax - ermin) * np.random.rand()
L = Lmin + (Lmax - Lmin) * np.random.rand()
C = Cmin + (Cmax - Cmin) * np.random.rand()
w = wmin + (wmax - wmin) * np.random.rand()
h = hmin + (hmax - hmin) * np.random.rand()
x, y = tl_data(fstart, fstop, n, coaxial_length, C, L, w, length, h, er)
data = np.vstack((data, x))
label = np.vstack((label, y))
#保存
np.savez_compressed("tl_freq_data.npz", data=data, label=label)
|
10000個データを作るが、最初の1000個をグラフにしたのがこちら。
これを機械学習のいろいろなアルゴリズムで予測しよう(続く)。
« 高周波・RFニュース 2026年4月22日 QualcommのAIネイティブ6Gインタビュー動画、LGイノテックが車載Wi-Fi7モジュール1,000億ウォン受注、GSAが無線市場の現状をレポート、AppleのCEOがTim CookからJohn Ternusへ、など | トップページ | 高周波・RFニュース 2026年4月23日 Qualcommへの6G周波数割り当てインタビュー動画、5Gミリ波向け基板材料・技術のレビュー論文発行、車内センシングレーダ解説、Amphenol RFの18GHzまで使えるSMAピッグテイルアセンブリ »
「パソコン・インターネット」カテゴリの記事
- ExcelのCopilotのPlanモードで、サザエさんじゃんけんの次回の予測をやってもらう。予測法はいろいろ挙げてもらって推奨のランダムフォレストにしてもらった。次回はチョキと予測(Codexはパーと予測)。(2026.05.21)
- Gemini 3.5 FlashとAntigravity 2.0を使って任意ポート数のTouchstoneフォーマットのSパラメータファイルを読み込み、dB, 位相, スミスチャート, TDRをプロット(ズームとマーカー機能付き)するアプリを作った。今まで使ったどの生成AIより一番出来がよくしかも爆速。(2026.05.20)
- Google AntigravityにTypeScriptでSパラメータのTouchstoneフォーマットを扱うライブラリを仕様書pdfを読んで作ってもらった。dB, 位相, スミスチャートはPlotlyを使用。これはかなり完成度高い。(2026.05.19)
- CodexにTypeScript用のS高周波パラメータのTouchstoneファイルを扱うライブラリを作ってもらう。最初何も指定しなかったらプロットをSVGでやってくれて、あとでPlotly使ってというとスミスチャートもちゃんと描けた。(2026.05.15)
「学問・資格」カテゴリの記事
- 高周波・RFニュース 2026年5月22日 6GWorldとKeysightのRFデジタルツイン解説とウェビナー、Qualcomm がDragonwing Mobile Broadband Multimedia (MBM)発表、Sony Xperia 1 VII分解動画、SiLabのSoCを使ったComminentのWi-SUNモジュールが500,000台出荷など(2026.05.22)
- 高周波・RFニュース 2026年5月21日 Analog DevicesがEmpower Semi.を買収、SamsungとGoogleが協業でスマートグラス公開、SEMCOがHi-Q 0201 MLCC, 車載Low-ESL MLCC発表、シリコンキャパシタは大口受注、大連での3GPP WG会議、(2026.05.21)
- ExcelのCopilotのPlanモードで、サザエさんじゃんけんの次回の予測をやってもらう。予測法はいろいろ挙げてもらって推奨のランダムフォレストにしてもらった。次回はチョキと予測(Codexはパーと予測)。(2026.05.21)
- Gemini 3.5 FlashとAntigravity 2.0を使って任意ポート数のTouchstoneフォーマットのSパラメータファイルを読み込み、dB, 位相, スミスチャート, TDRをプロット(ズームとマーカー機能付き)するアプリを作った。今まで使ったどの生成AIより一番出来がよくしかも爆速。(2026.05.20)
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2026年5月22日 6GWorldとKeysightのRFデジタルツイン解説とウェビナー、Qualcomm がDragonwing Mobile Broadband Multimedia (MBM)発表、Sony Xperia 1 VII分解動画、SiLabのSoCを使ったComminentのWi-SUNモジュールが500,000台出荷など(2026.05.22)
- 高周波・RFニュース 2026年5月21日 Analog DevicesがEmpower Semi.を買収、SamsungとGoogleが協業でスマートグラス公開、SEMCOがHi-Q 0201 MLCC, 車載Low-ESL MLCC発表、シリコンキャパシタは大口受注、大連での3GPP WG会議、(2026.05.21)
- ExcelのCopilotのPlanモードで、サザエさんじゃんけんの次回の予測をやってもらう。予測法はいろいろ挙げてもらって推奨のランダムフォレストにしてもらった。次回はチョキと予測(Codexはパーと予測)。(2026.05.21)
- Gemini 3.5 FlashとAntigravity 2.0を使って任意ポート数のTouchstoneフォーマットのSパラメータファイルを読み込み、dB, 位相, スミスチャート, TDRをプロット(ズームとマーカー機能付き)するアプリを作った。今まで使ったどの生成AIより一番出来がよくしかも爆速。(2026.05.20)
« 高周波・RFニュース 2026年4月22日 QualcommのAIネイティブ6Gインタビュー動画、LGイノテックが車載Wi-Fi7モジュール1,000億ウォン受注、GSAが無線市場の現状をレポート、AppleのCEOがTim CookからJohn Ternusへ、など | トップページ | 高周波・RFニュース 2026年4月23日 Qualcommへの6G周波数割り当てインタビュー動画、5Gミリ波向け基板材料・技術のレビュー論文発行、車内センシングレーダ解説、Amphenol RFの18GHzまで使えるSMAピッグテイルアセンブリ »



コメント