スミス図表
モジュールのインポート
import numpy as np
import matplotlib.pyplot as plt
import skrf as rf
from skrf.media import DistributedCircuit
反射係数
まず,出力する値の精度を指定して,
np.set_printoptions(precision=4)
規格化負荷インピーダンス $Z_L/Z_0$ を設定する.
zl = np.array([0.2+0.5j, 0.5-0.5j, 1-2j, 2+1j, 0.5-5j, 1+1j]) # 規格化負荷インピーダンス
zl
array([0.2+0.5j, 0.5-0.5j, 1. -2.j , 2. +1.j , 0.5-5.j , 1. +1.j ])
規格化負荷インピーダンス $Z_L/Z_0$ より,反射係数 $\Gamma_L$ を求めると,
gamma = (zl-1.0)/(zl+1.0) # 反射係数
ng = len(gamma)
gamma
array([-0.42+0.592j, -0.2 -0.4j , 0.5 -0.5j , 0.4 +0.2j ,
0.89-0.367j, 0.2 +0.4j ])
スミス図表
スミス図表にプロットすると,
fig = plt.figure(figsize=(7, 7)) # グラフ領域の作成
n = rf.Network()
freq = rf.Frequency(1, 1, 1, 'ghz') # start, stop, npoints,
for i in range(ng):
n.frequency, n.s, n.z0 = freq, [gamma[i]], [1]
n.plot_s_smith(marker = 'o', markersize = 7, draw_labels=True, \
linewidth=0, label=str(zl[i])) # Smith chart
fig.savefig('p3_tlt_Smith_chart_ex1.pdf')
plt.show()
アドミタンス図表
規格化アドミタンス $Y_L/Y_0$ では,
yl = 1/zl # 規格化負荷アドミタンス
yl
array([0.69-1.724j, 1. +1.j , 0.2 +0.4j , 0.4 -0.2j , 0.02+0.198j,
0.5 -0.5j ])
アドミタンス図表(chart_type='y')にプロットすると(スミス図表では,chart_type='z'でよい),
fig = plt.figure(figsize=(7, 7)) # グラフ領域の作成
n = rf.Network()
freq = rf.Frequency(1, 1, 1, 'ghz') # start, stop, npoints,
for i in range(ng):
n.frequency, n.s, n.z0 = freq, [gamma[i]], [1]
n.plot_s_smith(marker = 'o', markersize = 7, draw_labels=True, \
linewidth=0, label=str(yl[i]), chart_type='y') # Admittance chart
fig.savefig('p3_tlt_Smith_chart_ex1_admittance.pdf')
plt.show()
スミス図表に,アドミタンス図表をグレーの軸として加えることができ(chart_type='zy'),さらにVSWRも加えて(draw_vswr=True),
fig = plt.figure(figsize=(7, 7)) # グラフ領域の作成
for i in range(ng):
n.frequency, n.s, n.z0 = freq, [gamma[i]], [1]
n.plot_s_smith(m=0, n=0, marker = 'o', markersize = 7, draw_labels=True, show_legend=True, \
linewidth=0, label=str(zl[i]), chart_type='zy', draw_vswr=True) # Smith chart, Admittance chart,and VSWR
fig.savefig('p3_tlt_Smith_chart_ex1_Smith_admittance_VSWR.pdf')
plt.show()
さらに,他の図を並べて表示させる場合には,https://rfic.io/posts/Plotting/