%% LMS波束形成的MATLAB
仿真程序
clear all
close all
clc
j=sqrt(-1);
M=32; % 天线的数量
K=2; % 来源的数量
theta=[10 20]; % DOA
d=0.3; % 天线间距
N=5; % 样品
Meann=0; varn=1; % 噪声平均值,噪声方差
SNR=10; % 信噪比
INR=10; % 干扰比
pp=zeros(200,N);
pp1=zeros(200,N);
rvar1=sqrt(varn) * 10^(SNR/20); % 信号功率
rvar2=sqrt(varn) * 10^(INR/20); % 干扰力
for q=1:100
s=[rvar1*exp(j*2*pi*(500*0.001*[0:N-1]));rvar2*exp(j*2*pi*(2000*0.001*[0:N-1]+rand))]; % 产生源信号
A=exp(-j*2*pi*d*[0:M-1].'*sin(theta*pi/180)); % 方向矩阵
e=sqrt(varn/2)*(randn(M,N)+j*randn(M,N)); % 噪音
Y=A*s+e; % 收到的数据
% LMS算法
L=400;
de =s(1, :);
mu=0.0001;
w = zeros(M, 1);
for k = 1:N
y(k) = w'*Y(:, k); % 预测下一个样本和错误
e(k) = de(k) - y(k); % error
w = w + mu * Y(:,k)*conj(e(k)); % 适应重量矩阵和步长
end
end
% 使用LMS方法进行波束成形
beam=zeros(1,L);
for i = 1 : L
a=exp(-j*2*pi*d*[0:M-1].'*sin(-pi/2 + pi*(i-1)/L));
beam(i)=20*log10(abs(w'*a));
end
% plot
ting
figure
angle=-90:180/400:(90-180/400);
plot(angle,beam,'k'); grid on
title('波束图');xlabel('角度/degree');ylabel('幅度响应/dB');
axis([-45 45 -50 0]);
legend('LMS');
0