www.pudn.com > MSNR.zip > MSNR.m, change:2017-04-16,size:1989b


clc 
clear all  
close all 
ima=sqrt(-1); 
element_num=20;       %阵元数 
d_lamda=0.5;         %阵元间距与波长的关系 
theta=-90:0.5:90;      %搜索范围 
theta0=0;            %来波方向 
theta1=20;           %干扰方向 
L=32;              %采样单元数 
for i=1:L; 
    amp0=10*randn(1);%信号的幅度随机产生,保证信号之间是不相关的 
    amp1=200*randn(1); 
ampn=1; 
    s(:,i)=amp0*exp(ima*2*pi*d_lamda*sin(theta0*pi/180)*[0:element_num-1]');%来波信号 
    j(:,i)=amp1*exp(ima*2*pi*d_lamda*sin(theta1*pi/180)*[0:element_num-1]');%干扰信号 
    n(:,i)=ampn*(randn(element_num,1)+ima*randn(element_num,1));        %噪声信号 
    x(:,i)= s(:,i)+j(:,i)+n(:,i);       %接受信号 
%表示接收信号,且噪声的幅度和相位随机产生,保证噪声与信号之间是不相关的 
end 
Rs=1/L*s* s'; 
Rnj=1/L*(j*j'+n*n');   
[V,D]=eig(Rs,Rnj);    %广义特征值分解,V是特征向量,D是特征值 
[D,I]=sort(diag(D));  %取出D的对角元素即所有特征值,对其排序I存放序号 
Wopt=V(:,I(element_num)); %最优权矢量,取出的是最大特征值对应的特征向量 
for jj=1:length(theta); 
    a=exp(ima*2*pi*d_lamda*sin(theta(jj)*pi/180)*[0:element_num-1]'); 
    f(jj)=Wopt'*a; 
    p(jj)=a'*Rs*a+a'*Rnj*a;    %输出功率=信号功率+噪声功率 
    b=exp(ima*2*pi*d_lamda*sin(theta0*pi/180)*[0:element_num-1]'); 
    q(jj)=b'*a;                %常规波形成 
end 
F=20*log10(abs(f)/(max(max(abs(f))))+eps); 
Q=20*log10(abs(q)/(max(max(abs(q))))+eps); 
figure(1); 
%subplot(1,2,1); 
%plot(theta,F,'r'),grid on;hold on; 
%plot(theta,Q,'k-.'),grid on,hold on; 
%plot(theta0,-50:0,'.'); 
%plot(theta1,-50:0,'.'); 
plot(theta,Q,'r--',theta,F); %legend('不加MMSE方向图','MMSE准则下方向图'); 
grid on; 
xlabel('方位角/°'); 
ylabel('增益/dB'); 
legend('常规波束形成方向图','MSNR准则下方向图');      %图例 
title('MSNR准则方向图&常规波束形成'); 
%axis([-90 90 -50 0]);%可为x轴和y轴设置一个极限范围 
%P=10*log10(abs(p)/(max(max(abs(p))))+eps);   %此处是功率的对数形式 
%%subplot(1,2,2); 
%plot(theta,P),grid on; 
%xlabel('theta/o'); 
%ylabel('功率/dB'); 
%title('max-SNR功率谱')