• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: 其他
  • 标签: MSWF  

资源简介

此文件为多级维纳滤波技术程序,该程序能够实现在理想和非理想情况下,对阵列信号的DOA估计,程序比较清晰,希望能帮助到大家。

资源截图

代码片段和文件信息

%数据中含有或不含有期望信号对方向图有影响,当MSNWF也采用理想数据时,性能相同且采样数可以大大减小;
clc;
clear all;
close all;
N=16;%辅助天线的数目
d=0.5;
theta=-90:0.5:90;
theta_signal=0;            %来波方向
theta_jamming1=-35;        %干扰方向
theta_jamming2=19;         %干扰方向
theta_jamming3=45;         %干扰方向
L=1024;%采样单元数
steer_signal=exp(1i*2*pi*d*sin(theta_signal*pi/180)*[0:N-1]‘); %期望信号导向矢量
%干扰信号导向矢量
steer_jamming1=exp(1i*2*pi*d*sin(theta_jamming1*pi/180)*[0:N-1]‘); 
steer_jamming2=exp(1i*2*pi*d*sin(theta_jamming2*pi/180)*[0:N-1]‘);
steer_jamming3=exp(1i*2*pi*d*sin(theta_jamming3*pi/180)*[0:N-1]‘);
%训练数据中不含期望信号时和含有期望信号时
for i=1:L;
    amp_signal=sqrt(2*10)*randn(1);%信号的幅度随机产生,保证信号之间是不相关的
    amp_jamming1=sqrt(2*10^4)*randn(1); %4
    amp_jamming2=sqrt(2*10^3.5)*randn(1); %3.5
    amp_jamming3=sqrt(2*10^5)*randn(1); %5
    amp_noise=sqrt(2);
    jam(:i)=amp_jamming1*exp(1i*2*pi*d*sin(theta_jamming1*pi/180)*[0:N-1]‘)...
             +amp_jamming2*exp(1i*2*pi*d*sin(theta_jamming2*pi/180)*[0:N-1]‘)...
             +amp_jamming3*exp(1i*2*pi*d*sin(theta_jamming3*pi/180)*[0:N-1]‘)...
             +amp_noise*(randn(N1)+1i*randn(N1));%干扰+噪声
    s(:i)=amp_signal*exp(1i*2*pi*d*sin(theta_signal*pi/180)*[0:N-1]‘)...
           +amp_jamming1*exp(1i*2*pi*d*sin(theta_jamming1*pi/180)*[0:N-1]‘)...
           +amp_jamming2*exp(1i*2*pi*d*sin(theta_jamming2*pi/180)*[0:N-1]‘)...
           +amp_jamming3*exp(1i*2*pi*d*sin(theta_jamming3*pi/180)*[0:N-1]‘)...
           +amp_noise*(randn(N1)+1i*randn(N1));%接收信号(信号+干扰+噪声)
end
Rs=10*steer_signal*steer_signal‘;%噪声自相关矩阵,相当于X(t)
Rj=10^4*steer_jamming1*steer_jamming1‘...
   +10^3.5*steer_jamming2*steer_jamming2‘...
   +10^5*steer_jamming3*steer_jamming3‘;
Rn=eye(N);
Rx=Rs+Rj+Rn;
% Sx=1/L*s*s‘; %接收信号协方差矩阵
Sx=1/L*jam*jam‘;
us=d*sin(theta_signal*pi/180); %期望信号方向空间频率;
d0=steer_signal‘*s; %进行上支路匹配滤波,d0中含有期望信号和干扰
for j=1:N-1
    uk(j)=us+j/N;
end
for l=1:N-1
    a(:l)=exp(1i*2*pi*uk(l)*[0:N-1]‘);
end
B0=a‘;%构造阻塞矩阵
x0=B0*s;
Rx0=B0*Rx*B0‘;
rx0d0=B0*Rx*steer_signal;
Wx0=pinv(Rx0)*rx0d0;
W_GSC=steer_signal-B0‘*Wx0;
beam3=W_GSC‘*exp(1i*2*pi*d*[0:N-1]‘*sin(theta*pi/180));%波束形成
F3=20*log10(abs(beam3)/(max(max(abs(beam3)))));

h0=steer_signal/(steer_signal‘*steer_signal)^0.5;
B_0=zeros(N-1N);
for i=1:N-1
    for k=i:i+1
        B_0(ik)=(-1)^(i+k)/h0(k1);
    end
end
x=B_0*s;
R_x0=B_0*Sx*B_0‘;
r_x0d0=B_0*Sx*h0;
%理想情况
% R_x0=B_0*Rx*B_0‘; 
% r_x0d0=B_0*Rx*h0;
% %前向递推
r=N-1;               % r MWF的阶数
T=[];
h=[];
B=eye(N-1);
rxd=r_x0d0;
Rxi=R_x0;
for i=1:r
    if i       delta(i)=(rxd‘*rxd)^0.5;
       hi=rxd/delta(i);
       if i==1
          T=[T;hi‘];
       else
          T=[T;hi‘*B];
       end
       Bi=zeros(N-i-1N-i);
       for kk=1:N-i-1
           for k=kk:kk+1
               Bi(kkk)=(-1)^(kk+k)/hi(k);
           end
       end
       B=Bi*B;
       omiga(i)=hi‘*Rxi*hi;
       sigma(i)=hi‘*rxd;
       rxd=Bi*Rxi*hi;
       Rxi=Bi*Rxi*Bi‘;
    else
        delta(i)=(rxd‘*rxd)^

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3887  2013-03-22 11:00  MSNWF.m

----------- ---------  ---------- -----  ----

                 3887                    1


评论

共有 条评论

相关资源