1/4波長変成器の反射係数の周波数特性

モジュールのインポート

import numpy as np
import matplotlib.pyplot as plt
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])

1/4波長変成器

帯域を定義する反射係数の振幅を与え,負荷インピーダンスの値をパラメータとして計算すると,
gm = 0.05 # 帯域を定義する反射係数の振幅
gm_db = 20.0*np.log10(gm)
print("gm=",gm,f'{gm_db:8.3f}',"[dB]")
f_min, f_max, n_f = 0.0, 2.0, 201
f = np.linspace(f_min, f_max, n_f)
th = np.pi/2.0*f
cth = np.cos(th)
zz = np.array([1.5, 2.0, 3.0, 4.0, 5.0, 6.0, 10.0])
n_zz = len(zz)
gg = np.empty(0)
print(f"{'ZL/Z0':>8s}",f"{'df':>8s}")
for z in zz:
    a2 = (z-1.0)**2/4.0/z
    a = np.sqrt(a2)
    gamma = a*np.abs(cth)/np.sqrt(1.0+a2*cth**2)
    gg = np.append(gg, gamma)
    p = 2.0*np.sqrt(z)/(z-1.0)*gm/np.sqrt(1-gm*gm)
    acp = np.arccos(p)
    df = 2.0-4.0/np.pi*acp # 比帯域
    print(f'{z:8.3f} {df:8.3f}')
ggg = np.reshape(gg,[n_zz,n_f])
gm= 0.05  -26.021 [dB]
   ZL/Z0       df
   1.500    0.315
   2.000    0.181
   3.000    0.111
   4.000    0.085
   5.000    0.071
   6.000    0.062
  10.000    0.045
反射係数の周波数特性をプロットして,
fig = plt.figure() # グラフ領域の作成
plt.text( 0.4, 0.9, r"$\frac{Z_L}{Z_0}$", fontsize=20)
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.xlim(0, 2) # x軸範囲の設定
plt.ylim(0, 1) # y軸範囲の設定
plt.xticks(np.arange(0, 2.5, step=0.5))
plt.yticks(np.arange(0, 1.25, step=0.25))
plt.xlabel(r"$\frac{f}{f_0}$",fontsize=20) # x軸のラベル設定
plt.ylabel("$|\Gamma|$") # y軸のラベル設定
plt.plot(f, ggg[0,:], label=f"{zz[0]:.1f}", linestyle=(0, (1, 0)) )
plt.plot(f, ggg[1,:], label=f"{zz[1]:.1f}", linestyle=(0, (2, 2)) )
plt.plot(f, ggg[2,:], label=f"{zz[2]:.1f}", linestyle=(0, (4, 2)) )
plt.plot(f, ggg[3,:], label=f"{zz[3]:.1f}", linestyle=(0, (6, 1.5)) )
plt.plot(f, ggg[4,:], label=f"{zz[4]:.1f}", linestyle=(0, (6, 1.5, 1.5, 1.5)) )
plt.plot(f, ggg[5,:], label=f"{zz[5]:.1f}", linestyle=(0, (6, 1, 1, 1, 1, 1)) )
plt.plot(f, ggg[6,:], label=f"{zz[6]:.1f}", linestyle=(0, (6, 1, 1, 1, 1, 1, 1, 1)) )
plt.legend(ncol=3, loc='upper right', fancybox=False, frameon = True)
fig.savefig('p3_tlt_single-section_transformer.pdf')
plt.show()