直線電流素子による放射パターン
モジュールのインポートや初期設定など
import matplotlib.pyplot as plt
import numpy as np
import warnings
np.set_printoptions(precision=5) # ndarrayの小数点以下の桁数を一括設定
warnings.simplefilter('ignore') # warningの抑制
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'])
# rcPramsを使ってTeXのフォントをデフォルトにする
#plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定
plt.rcParams['font.family'] = 'serif' # font familyの設定
plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定
#plt.rcParams["font.size"] = 9
plt.rcParams['figure.figsize'] = [6, 5]
ユーザ関数
任意の数の配列要素をフォーマット付き出力するため,
def table(*args):
n1, n2 = np.shape(args)
for i in range(n2):
[print(f'{args[j][i]:8.3f}',end=' ') for j in range(n1)]
print("")
return
有限長の一様電流分布による遠方放射電界
長さ$L$の範囲に一様電流が$z$方向に流れている線状電流素子による規格化指向性は,
\begin{gather}
\bar{\boldsymbol{E}} =\frac{\boldsymbol{E}}{\boldsymbol{E}_{max} \cdot \boldsymbol{a}_\theta}
= \frac{\sin u}{u} \sin \theta \ \boldsymbol{a}_\theta
\equiv f(\theta) \ \boldsymbol{a}_\theta
\end{gather}
ここで,
\begin{gather}
u = \frac{\pi L}{\lambda } \cos \theta
\end{gather}
波長で規格化した長さ$\bar{L}=L/\lambda$を定義して,
\begin{gather}
u = \pi \bar{L} \cos \theta
\end{gather}
パラメータ $u$,規格化した放射電界の成分(主偏波)$f(\theta)$,相対的な放射電力のデシベル値は,
def ue_pattern(th,L):
u = np.pi*L*np.cos(th)
f = np.sinc(u/np.pi)*np.sin(th)
p = 20*np.log10(np.abs(f))
return u,f,p
放射方向の角度 $\theta$ を等角度間隔で1次元配列とし,
qq = 180.0/np.pi
th_min, th_max, n_th = -np.pi, np.pi, 361
th = np.linspace(th_min, th_max, n_th)
th_deg = th*qq
電流素子の長さ $L$ を次のように設定し,一様電流分布による遠方の放射パターンを求めると,
L = np.array([0.1,0.3,0.5,0.75,1.0,1.25,1.5])
u,f0,p0 = ue_pattern(th,L[0])
u,f1,p1 = ue_pattern(th,L[1])
u,f2,p2 = ue_pattern(th,L[2])
print(f"{'th[deg]':>8s} {'p0[dB]':>8s} {'p1[dB]':>8s} {'p2[dB]':>8s} {'u':>8s}")
table(th_deg[::20],p0[::20],p1[::20],p2[::20],u[::20])
th[deg] p0[dB] p1[dB] p2[dB] u
-180.000 -318.383 -319.566 -322.162 -1.571
-160.000 -9.445 -10.486 -12.740 -1.476
-140.000 -3.923 -4.607 -6.046 -1.203
-120.000 -1.285 -1.573 -2.161 -0.785
-100.000 -0.137 -0.172 -0.241 -0.273
-80.000 -0.137 -0.172 -0.241 0.273
-60.000 -1.285 -1.573 -2.161 0.785
-40.000 -3.923 -4.607 -6.046 1.203
-20.000 -9.445 -10.486 -12.740 1.476
0.000 -inf -inf -inf 1.571
20.000 -9.445 -10.486 -12.740 1.476
40.000 -3.923 -4.607 -6.046 1.203
60.000 -1.285 -1.573 -2.161 0.785
80.000 -0.137 -0.172 -0.241 0.273
100.000 -0.137 -0.172 -0.241 -0.273
120.000 -1.285 -1.573 -2.161 -0.785
140.000 -3.923 -4.607 -6.046 -1.203
160.000 -9.445 -10.486 -12.740 -1.476
180.000 -318.383 -319.566 -322.162 -1.571
放射パターンをプロットすると,
fig = plt.figure(figsize=(8, 5))
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.axis([-180,180,-30,2])
plt.xticks(np.arange(-180, 180+45, step=45))
for i in range(3):
plt.plot(th_deg, ue_pattern(th,L[i])[2], label=rf"uniform, $L/\lambda={L[i]:.2f}$")
plt.xlabel(r"Angle $\theta$ [deg]")
plt.ylabel("Relative power [dB]")
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True)
fig.savefig('p3_ap_uniform_pattern.pdf')
コサインテーパ分布による遠方放射電界
長さ $L$ の $z$ 方向のコサインテーパ分布の電流素子による規格化指向性は,
\begin{gather}
\bar{\boldsymbol{E}}
=\frac{\boldsymbol{E}}{\boldsymbol{E}_{max} \cdot \boldsymbol{a}_\theta}
= \frac{\cos u}{1-(\frac{2u}{\pi})^2} \sin \theta \ \boldsymbol{a}_\theta
\equiv f(\theta) \ \boldsymbol{a}_\theta
\end{gather}
ここで,
\begin{gather}
u = \frac{\pi L}{\lambda } \cos \theta = \pi \bar{L} \cos \theta
\end{gather}
ただし,$u=\pm \pi/2$のときは $f(\theta)$ の分母がゼロになるので,ロピタルの定理より,
\begin{gather}
\left. \frac{\cos u}{1-(\frac{2u}{\pi})^2} \right|_{u=\pm \pi/2}
= \lim_{u\to\pm \pi/2} \frac{-\sin u}{-\frac{8u}{\pi^2}}
= \frac{\pi}{4}
\end{gather}
パラメータ $u$,コサインテーパ分布による規格化放射電界の成分(主偏波)$f(\theta)$,相対的な放射電力のデシベル値は,
def cos_taper_pattern(th,L):
u = np.pi*L*np.cos(th)
x = 1.0-(2*u/np.pi)**2
f = np.where(np.abs(x)<1.0e-10, np.pi/4, np.cos(u)/x)
f = f*np.sin(th)
p = 20*np.log10(np.abs(f))
return u,f,p
これより,
l = L[4]
u,f_ue,p_ue = ue_pattern(th,l)
u,f_cos,p_cos = cos_taper_pattern(th,l)
print(f"{'th[deg]':>8s} {'f_ue':>8s} {'f_cos':>8s} {'u':>8s}")
table(th_deg[::20],f_ue[::20],f_cos[::20],u[::20])
th[deg] f_ue f_cos u
-180.000 -0.000 -0.000 -3.142
-160.000 -0.022 -0.133 -2.952
-140.000 -0.179 -0.354 -2.407
-120.000 -0.551 -0.680 -1.571
-100.000 -0.937 -0.957 -0.546
-80.000 -0.937 -0.957 0.546
-60.000 -0.551 -0.680 1.571
-40.000 -0.179 -0.354 2.407
-20.000 -0.022 -0.133 2.952
0.000 0.000 0.000 3.142
20.000 0.022 0.133 2.952
40.000 0.179 0.354 2.407
60.000 0.551 0.680 1.571
80.000 0.937 0.957 0.546
100.000 0.937 0.957 -0.546
120.000 0.551 0.680 -1.571
140.000 0.179 0.354 -2.407
160.000 0.022 0.133 -2.952
180.000 0.000 0.000 -3.142
この放射パターンと一様電流分布による放射パターンを比較してプロットすると,
fig = plt.figure(figsize=(8, 5))
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.axis([-180,180,-30,2])
plt.xticks(np.arange(-180, 180+45, step=45))
plt.plot(th_deg, ue_pattern(th,l)[2], alpha=0.5, linewidth=3, label=rf"uniform, $L/\lambda={l:.2f}$")
plt.plot(th_deg, cos_taper_pattern(th,l)[2], '--', color='tab:red', label=rf"cos taper, $L/\lambda={l:.2f}$")
plt.xlabel(r"Angle $\theta$ [deg]")
plt.ylabel("Relative power [dB]")
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True)
fig.savefig('p3_ap_cos_taper_pattern.pdf')
中央給電ダイポールアンテナ
中央給電ダイポールの電流分布 $I(z')$ は,
\begin{gather}
I(z') = I_0 \sin \left[ k \left( \frac{L}{2} - |z'| \right) \right] \ \ \ \ \
\left( |z'| < \frac{L}{2} \right)
\end{gather}
ただし,$k$ は波数を示し,
\begin{gather}
k = \frac{2 \pi}{\lambda}
\end{gather}
これより,
\begin{gather}
\bar{\boldsymbol{E}}
=\frac{\boldsymbol{E}}{\boldsymbol{E}_{max} \cdot \boldsymbol{a}_\theta}
= \frac{\cos u -\cos \left( \frac{\pi L}{\lambda } \right) }{\sin \theta} \boldsymbol{a}_\theta
\equiv f(\theta) \ \boldsymbol{a}_\theta
\end{gather}
ここで,
\begin{gather}
u = \frac{\pi L}{\lambda } \cos \theta = \pi \bar{L} \cos \theta
\end{gather}
波長で規格化した座標 $\bar{z}'=z'/\lambda$ を定義して,
\begin{gather}
I(\bar{z}') = I_0 \sin \left[ 2\pi \left( \frac{\bar{L}}{2} - |\bar{z}'| \right) \right] \ \ \ \ \
\left( |\bar{z}'| < \frac{\bar{L}}{2} \right)
\end{gather}
まず,中央給電ダイポールアンテナの電流分布は,
def dipole_current(z,L):
current = np.where(np.abs(z) < L/2, np.sin(2*np.pi*(L/2-np.abs(z))), 0.0)
return current
これより電流の値を求めると,
Lmax = np.max(L)
z = np.linspace(-Lmax/2,Lmax/2, 201)
i2 = dipole_current(z,L[2])
i3 = dipole_current(z,L[3])
i4 = dipole_current(z,L[4])
i5 = dipole_current(z,L[5])
print(f"{'z/wl':>8s} {'i2':>8s} {'i3':>8s} {'i4':>8s} {'i5':>8s}")
table(z[::10],i2[::10],i3[::10],i4[::10],i5[::10])
z/wl i2 i3 i4 i5
-0.750 0.000 0.000 0.000 0.000
-0.675 0.000 0.000 0.000 0.000
-0.600 0.000 0.000 0.000 0.156
-0.525 0.000 0.000 0.000 0.588
-0.450 0.000 0.000 0.309 0.891
-0.375 0.000 0.000 0.707 1.000
-0.300 0.000 0.454 0.951 0.891
-0.225 0.156 0.809 0.988 0.588
-0.150 0.588 0.988 0.809 0.156
-0.075 0.891 0.951 0.454 -0.309
0.000 1.000 0.707 0.000 -0.707
0.075 0.891 0.951 0.454 -0.309
0.150 0.588 0.988 0.809 0.156
0.225 0.156 0.809 0.988 0.588
0.300 0.000 0.454 0.951 0.891
0.375 0.000 0.000 0.707 1.000
0.450 0.000 0.000 0.309 0.891
0.525 0.000 0.000 0.000 0.588
0.600 0.000 0.000 0.000 0.156
0.675 0.000 0.000 0.000 0.000
0.750 0.000 0.000 0.000 0.000
この電流分布をプロットすると,
fig = plt.figure(figsize=(8, 5))
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.axis([-Lmax/2,Lmax/2,-1,1])
for i in range(2,6):
plt.plot(z, dipole_current(z,L[i]), label=rf"$L/\lambda={L[i]:.2f}$")
plt.xlabel(r"$z/\lambda$")
plt.ylabel(r"$I/I_{max}$")
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True)
fig.savefig('p3_ap_dipole_current.pdf')
中央給電ダイポールアンテナの指向性は,
def dipole_pattern(th,L):
u = np.pi*L*np.cos(th)
cl = np.cos(np.pi*L)
f = np.where(np.abs(np.cos(th))==1.0, 0.0, (np.cos(u)-cl)/np.sin(th)/(1-cl))
p = 20*np.log10(np.abs(f))
return u,f,p
より計算して,
u,fd2,pd2 = dipole_pattern(th,L[2])
u,fd3,pd3 = dipole_pattern(th,L[3])
u,fd4,pd4 = dipole_pattern(th,L[4])
u,fd5,pd5 = dipole_pattern(th,L[5])
print(f"{'th[deg]':>8s} {'pd2[dB]':>8s} {'pd3[dB]':>8s} {'pd4[dB]':>8s} {'pd5[dB]':>8s} {'u':>8s}")
table(th_deg[::20],pd2[::20],pd3[::20],pd4[::20],pd5[::20],u[::20])
th[deg] pd2[dB] pd3[dB] pd4[dB] pd5[dB] u
-180.000 -inf -inf -inf -inf -3.927
-160.000 -11.164 -14.717 -31.647 -12.029 -3.690
-140.000 -5.053 -7.271 -13.944 -11.740 -3.008
-120.000 -1.761 -2.649 -4.771 -13.174 -1.963
-100.000 -0.194 -0.297 -0.521 -1.087 -0.682
-80.000 -0.194 -0.297 -0.521 -1.087 0.682
-60.000 -1.761 -2.649 -4.771 -13.174 1.963
-40.000 -5.053 -7.271 -13.944 -11.740 3.008
-20.000 -11.164 -14.717 -31.647 -12.029 3.690
0.000 -inf -inf -inf -inf 3.927
20.000 -11.164 -14.717 -31.647 -12.029 3.690
40.000 -5.053 -7.271 -13.944 -11.740 3.008
60.000 -1.761 -2.649 -4.771 -13.174 1.963
80.000 -0.194 -0.297 -0.521 -1.087 0.682
100.000 -0.194 -0.297 -0.521 -1.087 -0.682
120.000 -1.761 -2.649 -4.771 -13.174 -1.963
140.000 -5.053 -7.271 -13.944 -11.740 -3.008
160.000 -11.164 -14.717 -31.647 -12.029 -3.690
180.000 -inf -inf -inf -inf -3.927
この放射パターンをプロットすると,
fig = plt.figure(figsize=(8, 5))
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.axis([-180,180,-30,2])
plt.xticks(np.arange(-180, 180+45, step=45))
for i in range(2,6):
plt.plot(th_deg, dipole_pattern(th,L[i])[2], label=rf"$L/\lambda={L[i]:.2f}$")
plt.xlabel(r"Angle $\theta$ [deg]")
plt.ylabel("Relative power [dB]")
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True)
fig.savefig('p3_ap_dipole_patterns.pdf')
有限長一様電流分布,コサインテーパ分布よる放射パターンと,中央給電ダイポールアンテナの放射パターンを同じ長さで比較すると,
l = L[5]
fig = plt.figure(figsize=(8, 5))
plt.grid(color = "gray", linestyle="--")
plt.minorticks_on()
plt.axis([-180,180,-30,2])
plt.xticks(np.arange(-180, 180+45, step=45))
plt.plot(th_deg, ue_pattern(th,l)[2], alpha=0.3, linewidth=5, label=rf"uniform, $L/\lambda={l:.2f}$")
plt.plot(th_deg, cos_taper_pattern(th,l)[2], '--', label=rf"cos taper, $L/\lambda={l:.2f}$")
plt.plot(th_deg, dipole_pattern(th,l)[2], label=rf"dipole, $L/\lambda={l:.2f}$")
plt.xlabel(r"Angle $\theta$ [deg]")
plt.ylabel("Relative power [dB]")
plt.legend(ncol=1, loc='best', fancybox=False, frameon = True)
fig.savefig('p3_ap_element_pattern.pdf')
これを円グラフにプロットすると,
fig = plt.figure(figsize=(7,7))
ax = plt.subplot(111, polar=True)
plt.grid(color = "gray", linestyle="--")
#plt.minorticks_on()
ax.set_rlim([-20.0, 0.0])
ax.set_rgrids(np.arange(-20, 5, 5), fontsize=14, angle=7)
ax.set_theta_zero_location("N")# 始点を北へ
ax.set_thetalim([-np.pi, np.pi])
#ax.set_thetamin(-170)
#ax.set_thetamax(170)
ax.set_thetagrids(np.rad2deg(np.linspace(-np.pi, np.pi, 13)[1:]),fontsize=14)
plt.plot(th, ue_pattern(th,l)[2], alpha=0.3, linewidth=5, label=rf"uniform, $L/\lambda={l:.2f}$")
plt.plot(th, cos_taper_pattern(th,l)[2], '--', label=rf"cos taper, $L/\lambda={l:.2f}$")
plt.plot(th, dipole_pattern(th,l)[2], label=rf"center-fed dipole, $L/\lambda={l:.2f}$")
plt.legend(ncol=1, loc='best', bbox_to_anchor=(1.2, 1.15), fancybox=False, frameon = True, fontsize=14)
plt.tight_layout()
fig.savefig('p3_ap_element_patterns_polar.pdf')
前のページに戻る
「目次」のページに戻る