スミス図表

モジュールのインポート

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/