利用python绘制天线方向图的

学习通信对抗测向时,看到天线的方向特性图,因为是极坐标图,还是画出来好理解一些

一、单环天线

单环天线的方向特征,即该天线的振幅方向函数为:
f(\theta)=sin(\frac{\pi d}{\lambda}cos(\theta))
画它的方向特性图方法是在极坐标系中画出其振幅方向函数的绝对值:\left|f(\theta))\right|=\left| sin(\frac{\pi d}{\lambda}cos(\theta))\right|,根据 \frac{{\pi d}}{\lambda } \in \left[ {0,0.5} \right]\frac{{\pi d}}{\lambda } \in \left[ {0,0.5} \right]\frac{{\pi d}}{\lambda } =1 分别画出其方向特性图。

其代码如下:

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2*np.pi, 0.02)
r=np.cos(theta)
plt.subplot(121,polar=True)
plt.plot(theta, np.abs(np.cos(theta)), '--', lw=2)
plt.plot(theta, np.abs(np.sin(0.5*np.pi*np.cos(theta))), lw=2)

plt.subplot(122,polar=True)
plt.plot(theta, np.abs(np.sin(0.6*np.pi*np.cos(theta))), '--', lw=2)
plt.plot(theta, np.abs(np.sin(0.51*np.pi*np.cos(theta))), lw=2)
# plt.rgrids(np.arange(0.5,2,0.5),angle=45)
# plt.thetagrids([0,45,90])
plt.show()

下面是只显示一个图,更清晰方便展示:

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2*np.pi, 0.02)
d_lambda = 10

ax = plt.subplot(111,polar=True)
ax.set_thetagrids(np.arange(0.0, 360.0, 10.0)) # 用于设置极坐标角度网格线显示
ax.set_theta_zero_location('N')  # 用于设置极坐标0°位置,其值可为'N','NW','W','SW','S','SE','E','NE'
ax.set_theta_direction(-1)  # 用于设置极坐标的正方向,参数为-1时为顺时针方向;反之。
plt.plot(theta, np.abs(np.sin(d_lambda*np.pi*np.cos(theta))),  color=[1,0 ,0], lw=2)
plt.title("d_lambda="+str(d_lambda), y=-0.15, fontsize=18)
plt.savefig('d_lambda='+str(d_lambda)+'.png')
plt.show()

结果如下:


d_lambda=0.1.png
d_lambda=0.2.png
d_lambda=0.3.png
d_lambda=0.35.png
d_lambda=0.4.png
d_lambda=0.45.png
d_lambda=0.5.png
d_lambda=0.55.png
d_lambda=0.6.png
d_lambda=0.65.png
d_lambda=0.7.png
d_lambda=0.75.png
d_lambda=0.8.png
d_lambda=0.85.png
d_lambda=0.9.png
d_lambda=0.95.png
d_lambda=1.png

二、复合环天线

复合环天线的方向特征,即该天线的振幅方向函数为:
f\left( \theta \right) = \sqrt {{{\cos }^2}\theta + 2k\cos {\varphi _0}\cos \theta + {k^2}}
画它的方向特性图方法是在极坐标系:先确定k\varphi _0 值,然后再画出其方向特性图。
其代码为:

import numpy as np
import matplotlib.pyplot as plt

theta = np.arange(0, 2*np.pi, 0.02)
phi0 = 1
k = 1

ax = plt.subplot(111,polar=True)
ax.set_thetagrids(np.arange(0.0, 360.0, 10.0)) # 用于设置极坐标角度网格线显示
ax.set_theta_zero_location('N') # 用于设置极坐标0°位置,其值可为'N','NW','W','SW','S','SE','E','NE'
ax.set_theta_direction(-1) # 用于设置极坐标的正方向,参数为-1时为顺时针方向;反之。
plt.plot(theta, np.sqrt(np.square(np.cos(theta))+2*k*np.cos(phi0)*np.cos(theta)+np.square(k)),  color=[1,0 ,0], lw=2)
plt.title("k="+str(k)+",phi0="+str(phi0), y=-0.15, fontsize=18)
plt.savefig("k="+str(k)+" with phi0="+str(phi0)+'.png')
plt.show()

其结果如下:


k=0.7 with phi0=0.png
k=0.7 with phi0=30.png
k=0.9 with phi0=10.png
k=1 with phi0=0.png
k=1 with phi0=1.png
k=1 with phi0=10.png
k=1 with phi0=30.png
k=1 with phi0=180.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容