首页 > 热点 > 内容页

自适应波束形成算法及MATLAB仿真算法(RLS和LMS)

2023-08-21 10:47:40 来源:个人图书馆-汉无为


(资料图片)

自适应波束形成的最佳权向量:

%最小均方算法(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仿真》

相关新闻