矩形平面阵阵因子计算

项目需求,需要算一下平面阵阵因子

本文计算阵因子使用的是比较简单的方法,利用直线阵的公式计算平面阵

实际上还可以使用向量进行分析,更加的泛用。

均匀直线阵阵因子公式如下:

$$ 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,无法计算对数坐标。

3X3阵

端射阵

网格上的小缺口就是NaN的位置,公式计算几乎无法消除这个问题。

之后我会尝试使用向量计算,这样就可以规避掉上面的问题。