(资料图片)
自适应波束形成的最佳权向量:
%最小均方算法(LMS)采用迭代模式,在每个迭代步骤n时刻的权向量加上一个校正量后%就得到n+1时刻的权向量,用它来逼近最佳权向量。clcclear allclose allM=16; %天线数K=2; %信源数theta=[0 30]; %信号入射角度d=0.3; %天线间距N=500; %采样点数Mean_noise=0; %噪声均值varn_noise=1; %噪声方差SNR=10; %信噪比INR=10; %干噪比pp=zeros(100,500);pp1=zeros(100,500);rvar1=sqrt(varn_noise)*10^(SNR/20); %信号功率rvar2=sqrt(varn_noise)*10^(INR/20); %干扰功率%for q=1:100s=[rvar1*exp(j*2*pi*(50*0.001*[0:N-1]));rvar2*exp(j*2*pi*(100*0.001*[0:N-1]+rand))]; %生成源信号A=exp(-j*2*pi*d*[0:M-1]".*sind(theta)); %来自波达方向theta的发射源的方向向量noise=sqrt(varn_noise/2)*(randn(M,N)+j*randn(M,N));Y=A*s+noise; %接收信号%LMS算法L=200; %快拍数w1=[];beam1=[];for i=1:length(theta) de=s(i,:); %期望信号 mu=0.0005; %步长参数 w=zeros(M,1); for k=1:N y(k)=w"*Y(:,k); %预测下一个采样和误差 e(k)=de(k)-y(k); %误差 w=w+mu*Y(:,k)*conj(e(k)); %更新权向量 end w1=[w1 w]; 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 beam1=[beam1;beam]; endsum1=sum(beam1);figureangle=-90:180/200:(90-180/200);plot(angle,beam1(1,:));grid on;xlabel("角度/degree")ylabel("波束图/dB")title("入射角度0,LMS波束图")figureangle=-90:180/200:(90-180/200);plot(angle,beam1(2,:));grid on;xlabel("角度/degree")ylabel("波束图/dB")title("入射角度30,LMS波束图")clcclear allclose allM=16; %天线数K=2; %信号源个数theta=[0 30]; %信号入射角度d=0.5; %天线间距N=500; %采样点数Mean_noise=0; %噪声均值varn_noise=1; %噪声方差SNR=10; %信噪比INR=10; %干噪比rvar1=sqrt(varn_noise)*10^(SNR/20); %信号功率rvar2=sqrt(varn_noise)*10^(INR/20); %干扰功率s=[rvar1*exp(j*2*pi*(50*0.001*[0:N-1]));rvar2*exp(j*2*pi*(100*0.001*[0:N-1]+rand))]; %生成源信号A=exp(-j*2*pi*d*[0:M-1]".*sind(theta)); %来自波达方向theta的发射源的方向向量noise=sqrt(varn_noise/2)*(randn(M,N)+j*randn(M,N));Y=A*s+noise;beam1=[];lamda=0.99; %遗忘因子L=200; %快拍数for i=1:length(theta) %RLS算法 de=s(i,:); %期望信号 w=zeros(M,1); %初始化权值 P0=0.5*eye(M); P=P0; y=zeros(M,1); for k=1:N v(:,k)=P*Y(:,k); u=inv(lamda)*v(:,k)./(1+inv(lamda)*Y(:,k)"*v(:,k)); a(k)=de(k)-w"*Y(:,k); w=w+u*conj(a(k)); P1=inv(lamda)*[eye(M)-u.*Y(:,k)"]*P; P=P1; end beam=zeros(1,L); for i=1:L a1=exp(-j*2*pi*d*[0:M-1]".*sin(-pi/2+pi*(i-1)/L)); beam(i)=20*log10(abs(w"*a1)); end beam1=[beam1;beam];endsum1=sum(beam1);figureangle=-90:180/200:(90-180/200);plot(angle,beam1(1,:));grid on;xlabel("角度/degree")ylabel("波束图/dB")title("入射角度0,RLS波束图")figureangle=-90:180/200:(90-180/200);plot(angle,beam1(2,:));grid on;xlabel("角度/degree")ylabel("波束图/dB")title("入射角度30,RLS波束图")
《阵列信号处理及MATLAB仿真》