项目需求,需要算一下平面阵
的阵因子
。
本文计算阵因子
使用的是比较简单的方法,利用直线阵
的公式计算平面阵
。
实际上还可以使用向量进行分析,更加的泛用。
均匀直线阵
的阵因子
公式如下:
$$ f(\psi) = \frac{sin(\frac{N}{2}\psi)}{sin(\frac{1}{2}\psi)} $$
$$ \psi = kdcos\delta + \xi $$
$d$是阵元间距,$\delta$是观察方向和阵轴的夹角,$\xi$是阵元的相移。
对于平面阵,我们可以把它分解为X方向和Y方向的两个均匀直线阵。由乘法原理
可知:
$$ f(\theta, \varphi) = f_{1}(\theta, \varphi) \times f_{2x} (\theta, \varphi) \times f_{2y}(\theta, \varphi) $$
计算时只需要换算一下阵轴夹角即可:
$$ cos\delta_{x} = sin\theta sin\varphi $$
$$ cos\delta_{y} = sin\theta cos\varphi $$
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| clear; close all; clc;
freq = 1.5e6;
c = physconst('lightspeed'); lambda = c / freq; k = 2 * pi / lambda;
dx = 1 / 4 * lambda; dy = 1 / 4 * lambda; nx = 3; ny = 3; pdx = 0; pdy = 0;
theta = meshgrid(eps : pi / 180 : pi); phi = meshgrid(eps : 2 * pi / 180 : 2 * pi)';
f2x = sin(nx / 2 * (k * dx * (sin(theta) .* cos(phi)) + pdx)) ./ sin(1 / 2 * (k * dx * (sin(theta) .* cos(phi)) + pdx)); f2y = sin(ny / 2 * (k * dy * (sin(theta) .* sin(phi)) + pdy)) ./ sin(1 / 2 * (k * dy * (sin(theta) .* sin(phi)) + pdy));
f = f2x .* f2y;
f = abs(f);
[x, y, z] = sph2cart(phi, pi / 2 - theta, f);
mesh(x, y, z);
title('平面阵方向图'); xlabel('x'), ylabel('y'), zlabel('z'); axis equal;
|
由于Matlab
不会去计算极限,所以计算时会出现NaN
,无法计算对数坐标。


网格上的小缺口就是NaN
的位置,公式计算几乎无法消除这个问题。
之后我会尝试使用向量计算,这样就可以规避掉上面的问题。