Pythonでマイクロストリップパッチアンテナの設計ツールを作る(5) これまでをまとめてクラス化・モジュール化した。パッチサイズ、入力インピーダンス、指向性、効率、利得が計算できる。使い方まとめ。
これまでやってきたことを全部まとめてクラス化した。コードは後で説明するとして、まずは使い方から。
クラス名はPatchAntennaで、それをpatchantenna.pyというファイルに記載している。なのでまずそのファイルをパスの通ったところにいれて
import patchantenna as pa
とでもしてインポートする。
①初期化
初期化は
ant = pa.PatchAntenna(2.2, 1.588, 10)
のようにインスタンス化する。ここでtanδとσを省略するとデフォルト値が入る。
この時同時にパッチ幅W、パッチ長さLが設計されて内部に保持される。
②パッチ寸法読み・書き
propertyのwidthとlengthを使う。設計値以外のものを使う場合は代入も可能。
import numpy as np
from scipy.integrate import quad
from scipy.special import sici, j0
from scipy.integrate import dblquad
class PatchAntenna:
"""
矩形マイクロストリップパッチアンテナ設計クラス
Parameters
----------
er : 基板の比誘電率
h : 基板の厚み[mm]
f0 : 共振周波数[GHz]
tanD : 基板誘電体のtanδ
(省略すると0.01)
sigma : パッチ導体の導電率[S/m]
(省略すると5.8E7)
"""
def __init__(self, er, h, f0, tanD = 0.01, sigma = 5.8E7):
self.er = er
self.h = h * 1.0E-3
self.f0 = f0 * 1.0E9
self.u0 = 4.0 * np.pi * 1.E-7
self.e0 = 8.85418782E-12
self.tanD = tanD
self.sigma = sigma
self.lambda0 = 1 /(self.f0 * np.sqrt(self.e0 * self.u0))
#パッチ幅
self.W = (1.0 / (2 * self.f0 * np.sqrt(self.e0 * self.u0))) * np.sqrt(2.0 / (self.er + 1.0))
#有効比誘電率ereff
self.ereff = (self.er + 1.0) / 2.0 + ((self.er - 1.0) / 2.0) / np.sqrt(1.0 + 12.0 * self.h / self.W)
#フリンジングΔL
self.dL = self.h * 0.412 * (self.ereff + 0.3) * (self.W / self.h + 0.264) / ((self.ereff - 0.258) * (self.W / self.h + 0.8))
#基板内波長
self.wave_length = 1 /(self.f0 * np.sqrt(self.ereff * self.e0 * self.u0))
#パッチ長さ
self.L = self.wave_length / 2 - 2 * self.dL
@property
def width(self):
"""
パッチ幅を読み書きするプロパティ
"""
return self.W * 1000
@width.setter
def width(self, W):
self.W = W * 1.0E-3
@property
def length(self):
"""
パッチ長さを読み書きするプロパティ
"""
return self.L * 1000
@length.setter
def length(self, L):
self.L = L * 1.0E-3
def input_impedance(self, offset = 0):
"""
矩形マイクロストリップパッチアンテナの入力インピーダンスを計算する。
Parameters
----------
offset : パッチ端からの給電位置[mm]
Returns
-------
入力インピーダンス[Ω]
"""
k0=2.0 * np.pi / self.lambda0
X = k0 * self.W
siX, _ = sici(X)
I1 = -2 + np.cos(X) + X * siX + np.sin(X)/X
G1 = I1 / (120 * np.pi**2)
def f(t, X, Y):
return ((np.sin(X*np.cos(t) / 2.0) / np.cos(t))**2) * j0(Y * np.sin(t)) * np.sin(t)**3
I2, _ = quad(f, 0, np.pi, args = (X, k0*self.L))
G12 = I2 / (120* np.pi **2)
Rin = 1 / (2 * (G1 + G12))
return Rin * np.cos(np.pi * offset * 1.0E-3 / self.L) ** 2
def directivity(self):
"""
矩形マイクロストリップパッチアンテナの指向性(Directivity)を計算する。
Returns
-------
指向性[dB]
"""
k0 = 2.0 * np.pi / self.lambda0
X = k0 * self.W
def f(theta, phi, X, Y):
return (np.sin(X*np.cos(theta)/2) / np.cos(theta)) **2 * (np.sin(theta) **3) * (np.cos(Y*np.sin(theta)*np.sin(phi)/2)) ** 2
I2, _ = dblquad(f, 0, np.pi, 0, np.pi, args=(X, k0 * self.wave_length /2))
self.D2 = (2* np.pi * self.W / self.lambda0) **2 * (np.pi / I2)
return 10 * np.log10(self.D2)
def efficiency(self):
"""
矩形マイクロストリップパッチアンテナの効率(efficiency)を計算する。
Returns
-------
アンテナ効率[dB]
"""
#放射Qの近似式
if self.er > 2:
self.Qr = 3 * self.er * self.lambda0 / (8 * self.h)
else:
self.Qr = (np.pi * np.pi * np.sqrt(self.er) / (4 * np.pi * np.pi - 16 * np.sqrt(self.er))) * (self.lambda0 / self.h)
#導体Q
ds = np.sqrt(2 / (2 * np.pi * self.f0 * self.u0 * self.sigma))
self.Qc = self.h / ds
#誘電体Q
self.Qd = 1 / self.tanD
#無負荷Q
self.Qt = 1 / (1 / self.Qc + 1 / self.Qd + 1 / self.Qr)
self.eta = self.Qt / self.Qr
return 10 * np.log10(self.eta)
def gain(self):
"""
矩形マイクロストリップパッチアンテナのアンテナ利得(Gain)を計算する。
Returns
-------
アンテナ利得[dB]
"""
D2 = self.directivity()
eta = self.efficiency()
return D2 + eta
def draw(self):
"""
矩形マイクロストリップアンテナの寸法説明
"""
print(" ←------ W --------→ ")
print(" ↑ ┌────────────────────┐")
print(" | │ │")
print(" | │ │")
print(" │ │")
print(" L │ │")
print(" │ │")
print(" | │ 〇 │")
print(" | │ | │")
print(" | │ | offset │")
print(" ↓ └────────────────────┘")
print(" Thickness: h")
|
« 高周波・RFニュース 2024年11月4日 IEEE Antennas and Propagation Magazineでアンテナ技術の進化とアレイのレビュー、EMC EuropeでAIをDe-embeddingに応用、I-PEXがシールド付き細線同軸コネクタ発表、iPhone 17からApple製Wi-Fiチップ?Huaweiの5G-Aᴬ | トップページ | 映画「八犬伝」を観てきた。物語の八犬伝と、それを書いた馬琴と北斎との交流が突然切り替わる面白い構成。切り替わるたびに話が進むので馬琴たちが老いていくのも。昔NHKの人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »
「パソコン・インターネット」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- RF Weekly Digest (Gemini 3.1 Pro・Google AI Studio BuildによるAIで高周波・RF情報の週刊まとめアプリ)2026/4/5-4/12(2026.04.12)
- GLM-5.1(Ollamaから利用)でPythonのscikit-rfを使ってTouchstoneフォーマットのSパラメータファイルを読んでdB, 位相, スミスチャート, TDRを表示するGUIアプリを作ってもらった。5分など長く考えた後、Gemma 4:31bよりさらに出来が良く、思った通りのものができた。(2026.04.09)
「学問・資格」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・RFニュース 2026年4月16日 AmazonがGlobalstarを買収、GSMAが日本のデジタル化をレポート、Mini-Circuitsがケーブルアセンブリを動画で解説、Kymetaが米国海軍研究局と衛星通信で契約、PerasoがドローンIFF向け60GHzモジュール出荷、SEMCOが1500V耐圧MLCC発表(2026.04.16)
- 高周波・RFニュース 2026年4月15日 Microwave Journalはアンプと発振器特集、Signal Integrity Journalは100GHz越えのインターコネクトのAIを使うHFSSモデル化、ローデ・シュワルツが潜水艦通信をUDT2026で発表、Xiaomi Poco X8 Pro分解動画、atisの5Gポリシーレポート(2026.04.15)
「日記・コラム・つぶやき」カテゴリの記事
- Qwen3.6-35B-A3Bが発表され、Ollamaでも使える。そこで電子レンジの動作原理(2.45GHzは水分子の共振周波数でない)と隕石が大気圏突入で燃える原理(摩擦熱ではない)を聞くと、誘電緩和と断熱圧縮について正しく答えられた。今までのローカルLLMで一番賢い回答と思う。(2026.04.17)
- 高周波・RFニュース 2026年4月17日 atisの3GPP Rel.20ウェビナー動画公開、MWCバルセロナ2026でのGSMA Device Enablement Summit資料公開、ハリファ大学が無線周波数AI言語モデルRF-GPT発表、レドームの解説など(2026.04.17)
- ExcelのOfficeスクリプト(TypeScript)で数値計算ライブラリmath.jsを使う(1) Officeスクリプトは外部API呼び出せるし、math.jsは RESTful APIで呼び出せることがわかった。まずは選択したセルのデータを読み、行列演算。LU分解で一次方程式を解き、逆行列と行列式を求める。(2026.04.17)
- 高周波・RFニュース 2026年4月16日 AmazonがGlobalstarを買収、GSMAが日本のデジタル化をレポート、Mini-Circuitsがケーブルアセンブリを動画で解説、Kymetaが米国海軍研究局と衛星通信で契約、PerasoがドローンIFF向け60GHzモジュール出荷、SEMCOが1500V耐圧MLCC発表(2026.04.16)
- 高周波・RFニュース 2026年4月15日 Microwave Journalはアンプと発振器特集、Signal Integrity Journalは100GHz越えのインターコネクトのAIを使うHFSSモデル化、ローデ・シュワルツが潜水艦通信をUDT2026で発表、Xiaomi Poco X8 Pro分解動画、atisの5Gポリシーレポート(2026.04.15)
« 高周波・RFニュース 2024年11月4日 IEEE Antennas and Propagation Magazineでアンテナ技術の進化とアレイのレビュー、EMC EuropeでAIをDe-embeddingに応用、I-PEXがシールド付き細線同軸コネクタ発表、iPhone 17からApple製Wi-Fiチップ?Huaweiの5G-Aᴬ | トップページ | 映画「八犬伝」を観てきた。物語の八犬伝と、それを書いた馬琴と北斎との交流が突然切り替わる面白い構成。切り替わるたびに話が進むので馬琴たちが老いていくのも。昔NHKの人形劇で観てたので玉が懐かしかった。しかし板垣李光人くんどう見ても女性にしか見えない… »




コメント