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, N1); 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度零陷会开始吞噬主瓣能量。这时候就得换鲁棒性更好的算法不过那就是另一个故事了。仿真中最魔幻的时刻是看着那个深不见底的零陷精准戳在干扰方向上的时候——仿佛阵列突然长了眼睛对着干扰说就你叫夏洛啊