2-142 基于matlab的圆形阵列的波束形成进行仿真 【软件无线电原理与应用作业】基于ma...
最近在搞圆形阵列波束形成的仿真,发现这东西虽然数学推导有点麻烦,但用MATLAB实现起来还挺有意思的。直接上干货,先说说怎么用30个阵元围成的圆盘阵列搞事情。对比自适应前后的方向图,能看到在30度位置出现了明显的零陷,深度大概35dB。仿真中最魔幻的时刻,是看着那个深不见底的零陷精准戳在干扰方向上的时候——仿佛阵列突然长了眼睛,对着干扰说:"就你叫夏洛啊?2.如果目标在0度,有一不相干的干扰信号在
2-142 基于matlab的圆形阵列的波束形成进行仿真 【软件无线电原理与应用作业】基于matlab的圆形阵列的波束形成进行仿真,具有14页文档。 假设发射信号载频为1GHz,圆形阵列半径为0.8米,在圆周上均匀布置30个阵元。 1.画出指向0度的方向图。 2.如果目标在0度,有一不相干的干扰信号在30度,干扰噪声功率比为30dB。 请用自适应波束形成方法画出方向图。 程序已调通,可直接运行。
最近在搞圆形阵列波束形成的仿真,发现这东西虽然数学推导有点麻烦,但用MATLAB实现起来还挺有意思的。尤其是看到方向图随着参数调整变化的时候,感觉像在玩声波版的激光剑。直接上干货,先说说怎么用30个阵元围成的圆盘阵列搞事情。
阵元摆位是关键
首先得把30个阵元均匀撒在半径0.8米的圆周上。这里有个坑——阵元编号和角度的对应关系搞错的话,方向图会直接翻车。用极坐标最直观:
theta = linspace(0, 2*pi, N+1); theta(end) = []; % 30等分圆周
elem_pos = R * [cos(theta); sin(theta)].'; % 阵元坐标计算
这里linspace最后一个点要和第一个点重合,所以得删掉重复的2π位置。画出来的阵型要是吃豆人形状就对了,千万别摆成多边形。
固定波束形成
想要波束指向0度,核心是计算各阵元的相位差。这里用经典的时延波束形成方法:
lambda = 3e8/1e9; % 波长计算
steer_angle = 0; % 主瓣指向
steer_vec = exp(-1j*2*pi/lambda * (elem_pos*[cosd(steer_angle); sind(steer_angle)])); % 导向矢量
这个steer_vec相当于给每个阵元发了个"时间校准器",让所有阵元接收到的0度信号实现同相加。画方向图的时候有个技巧——扫描角度别用整数步长,否则会在某些角度出现锯齿:
scan_angle = linspace(-180, 180, 361);
pattern = abs(steer_vec * array_response).'; % 方向图计算
运行后能看到典型的多旁瓣结构,主瓣宽度大概在6度左右。这时候如果突然来个30度的干扰,传统波束形成就跪了,得搬出自适应算法。

2-142 基于matlab的圆形阵列的波束形成进行仿真 【软件无线电原理与应用作业】基于matlab的圆形阵列的波束形成进行仿真,具有14页文档。 假设发射信号载频为1GHz,圆形阵列半径为0.8米,在圆周上均匀布置30个阵元。 1.画出指向0度的方向图。 2.如果目标在0度,有一不相干的干扰信号在30度,干扰噪声功率比为30dB。 请用自适应波束形成方法画出方向图。 程序已调通,可直接运行。
自适应抗干扰
MVDR算法这时候就是救世主。关键在干扰加噪声协方差矩阵的计算:
interf_angle = 30; % 干扰方位
S_interf = exp(-1j*2*pi/lambda*(elem_pos*[cosd(interf_angle); sind(interf_angle)])); % 干扰导向矢量
R = 10^(30/10)*(S_interf*S_interf') + eye(N); % 协方差矩阵
w_mvdr = (inv(R)*steer_vec)/(steer_vec'*inv(R)*steer_vec); % 最优权值
这里有个细节,干扰功率比是30dB,所以要在协方差矩阵里体现功率差异。eye(N)那项相当于给系统留了点热噪声,防止矩阵求逆的时候数值爆炸。
效果验证
对比自适应前后的方向图,能看到在30度位置出现了明显的零陷,深度大概35dB。但副作用是主瓣稍微变胖了点,毕竟天下没有免费的午餐:
% 画图对比
plot(scan_angle, 20*log10(normal_pattern/max(normal_pattern)), 'b');
hold on;
plot(scan_angle, 20*log10(mvdr_pattern/max(mvdr_pattern)), 'r--');
实际跑代码时会发现,当干扰靠近主瓣时(比如干扰在5度),零陷会开始吞噬主瓣能量。这时候就得换鲁棒性更好的算法,不过那就是另一个故事了。

仿真中最魔幻的时刻,是看着那个深不见底的零陷精准戳在干扰方向上的时候——仿佛阵列突然长了眼睛,对着干扰说:"就你叫夏洛啊?"
更多推荐
所有评论(0)