当前位置: 首页 > news >正文

波束形成(BF)从算法仿真到工程源码实现-第八节-波束图

一、概述

        本节对MVDR、LCMV、LMS等算法的波束图进行仿真。

二、MVDR代码仿真

2.1 mvdr代码

clc;
clear;
M = 18; % 天线数
lambda = 10;
d = lambda / 2;
L = 100;  %快拍数
thetas = [10];    % 期望信号入射角度
thetai = [-30 30]; % 干扰入射角度
n = [0:M-1]';
vs = exp(-1j * 2 * pi * n * d * sind(thetas) / lambda); % 信号方向向量
vn = exp(-1j * 2 * pi * n * d * sind(thetai) / lambda); % 干扰方向向量
f = 1600; % 载波频率
t = [0:L-1];
di = sin(2*pi*f*t/(8*f));    % 期望信号
vn1 = sin(2*pi*2 * f*t/(8*f));  % 干扰信号1 
vn2 = sin(2*pi*4 * f*t/(8*f));  % 干扰信号2 
A = [vs vn];
St = [di;vn1;vn2];
Xt = A*St + randn(M,L);   % 矩阵形式的公式
R_x = 1/L * (Xt * Xt');
R_x_inv = inv(R_x);
W_opt = R_x_inv * vs / (vs' * R_x_inv * vs);
% 测试此时的方向图
sita = 90 * [-1:0.001:1];
% 得到不同角度的方向矢量
v = exp(-1i*2*pi*n* d*sind(sita)/lambda);
B = abs(W_opt' * v);
plot(sita,20*log10(B/max(B)),'k')
title('波束图')
xlabel('角度/degree')
ylabel('波束图/dB')
grid on

2.2 mvdr波束图

三、LCMV代码仿真

3.1 lcmv代码

clear;
close all;
clc;
warning off
%% 初始化
M = 10;             %阵元数
fs = 5000;          % 采样频率
f = 1000;           % 信号频率
snap = 600;         % 快拍数
T = 0.5;           %采样时间
t = 1/fs:1/fs:T;
c = 340;
lamda = c/f;              %波长
d = 0.5*lamda;          %阵元间距
theta0 =-5;                %期望信号角度
theta1 =-30;                %干扰角度
theta2 = 30;                %干扰角度
snr=10;                     %信噪比
inr1 =20;                   %干噪比
inr2 = 20;                   %干噪比
snr_noise = 0;              %噪声功率1,为0dBW%% 导向矢量
a0 = exp(-1j*2*pi*d*sind(theta0)*(0:M-1)'/lamda);
a1 = exp(-1j*2*pi*d*sind(theta1)*(0:M-1)'/lamda);
a2 = exp(-1j*2*pi*d*sind(theta2)*(0:M-1)'/lamda);%% 信号、干扰和噪声
tar_sig = wgn(1,length(t), snr);
inf1 = wgn(1,length(t),inr1);
inf2 = wgn(1,length(t),inr2);
noise = wgn(M,length(t),snr_noise);%% 阵列接收信号
rec_sig = a0*tar_sig + a1*inf1 + a2*inf2 + noise;
interference = a1*inf1 + a2*inf2;
sig = a0 * tar_sig;%% 协方差矩阵
Rx = rec_sig(:,1:snap)*rec_sig(:,1:snap)'/snap;
Rs = sig(:,1:snap)*sig(:,1:snap)'/snap;
Ri = interference(:,1:snap)*interference(:,1:snap)'/snap;
Rn = noise(:,1:snap)*noise(:,1:snap)'/snap;%% LCMV算法
a01 = exp(-1j*2*pi*d*sind(theta0 + 5)*(0:M-1)'/lamda);
a02 = exp(-1j*2*pi*d*sind(theta0 - 5)*(0:M-1)'/lamda);
C=[a0,a01,a02]; 
f=[1,1,1]'; 
w_lcmv =inv(Rx)*C*(inv(C'*inv(Rx)*C))*f;	%权系数
theta = -90:0.1:90; % scan angle
p = exp(-1j*2*pi*d*(0:M-1)'*sind(theta)/lamda);
y = w_lcmv'*p;
yy = 20*log10(abs(y)/max(abs(y)));
%% 绘图
figure(1);
plot(theta,yy,'linewidth', 2);
xlabel('角度(\circ)');ylabel('归一化增益(dB)')
grid on;
xlim([-90 90])

3.2 lcmv波束图

四、LMS代码仿真

4.1 lms代码

clear;
clc;
M = 16;
thetas = [0 30 60];
lambda = 10;
d = lambda /2;N = 1000;
n = 0:N-1;
f0 = 2000;
s = [1*sin(2*pi*f0 *n/(8*f0));...2*sin(2*pi*2*f0 *n/(8*f0));...3*sin(2*pi*3*f0 *n/(8*f0))];
% 生成方向矢量
A = exp(-1i * 2 * pi * d * (0:M-1)' * sind(thetas) / lambda);
St = A*s + randn(M,N);
% LMS 算法 开始 进行自适应滤波
di = s(1,:);  % 第一行为期望信号
u = 0.0001;
w = zeros(M,1);  % 初始化权重向量for k = 1:Ny(k) = w'*St(:,k);e(k) = di(k) - y(k);w = w + u * St(:,k) * conj(e(k));
end
scan_theta = [-89:90];
beam = zeros(1,length(scan_theta));
for i = 1 :length(scan_theta)% 构造该方向的方向向量v = exp(-1i * 2 * pi *d* (0:M-1)'.*sind(scan_theta(i))/lambda);beam(i) = abs(w'*v);
end
figure;
plot(scan_theta,20*log10(beam/max(beam)))
title('方向图')
figure;
for k = 1:Nen(k) = (abs(e(k)))^2;
end
semilogy(en); hold on;
xlabel('迭代次数')
ylabel('MSE')
title('MSE')

4.2 lms波束图

五、总结

        从结果上看,自适应滤波器效果要优于MVDR和LCMV算法,LCMV由于多了零点约束,比MVDR可控性更强。

相关文章:

  • 【云平台监控】安装应用Ansible服务
  • 【Ansible自动化运维】六、ansible 实践案例与最佳实践:经验总结与分享
  • 未来七轴机器人会占据主流?深度解析具身智能方向当前六轴机器人和七轴机器人的区别,七轴力控机器人发展会加快吗?
  • AndroidStudio编译报错 Duplicate class kotlin
  • Uniapp: 修改启动时的端口号
  • 聊透多线程编程-线程池-9.C# 线程同步实现方式
  • Windows系统docker desktop安装(学习记录)
  • C++23 新特性:[[assume(expression)]] 属性
  • FileWriter 详细解析与记忆方法
  • 用 Deepseek 写的uniapp血型遗传查询工具
  • VRoid-Blender-Unity个人工作流笔记
  • 相机内外参
  • 苍穹外卖3
  • 某车企面试备忘
  • 打造AI应用基础设施:Milvus向量数据库部署与运维
  • PyTorch梯度:深度学习的引擎与实战解析
  • Git报错remote: Verify fatal: Authentication failed for ***
  • 比特币不是solidity编写吗,比特币不是基于 Solidity
  • 【项目管理】第15章 项目风险管理-- 知识点整理
  • ASP.NET Core 性能优化:分布式缓存
  • 缺字危机:一本书背后有多少“不存在”的汉字?
  • 马上评丨未成年人“擦边”短视频岂能成流量密码
  • 库尔德工人党决定自行解散
  • 言短意长|西湖大学首次“走出西湖”
  • 淡马锡辟谣:淡马锡和太白投资未在中国销售任何投资产品或金融工具
  • 匈牙利史专家阚思静逝世,享年87岁