MVDR算法matlab程序

MVDR算法matlab程序
MVDR算法matlab程序

clc

clear all

close all

%% 常量定义

Freqs=; %工作频率

c=3e8; %光速

lamda=c/Freqs; %波长

d=*lamda; %单元间距

M=16; %天线阵元数

fs=2e6; %采样频率

pd=10; %快拍数

%% 模型建立

%--------------第一个干扰模型--------------------thetaJ1=20*pi/180; %干扰方向

<

FreqJ1=5e5; %第一个干扰的频率J1NR=sqrt(10^(60/10));

J1one=J1NR*exp(j*(2*pi*FreqJ1*(1:1:pd)/fs)); %1*pd %--------------第二个干扰模型--------------------ThetaJ2=60*pi/180; %干扰方向

FreqJ2=6e5; %第二个干扰的频率J2NR=sqrt(10^(60/10));

J2one=J2NR*exp(j*(2*pi*FreqJ2*(1:1:pd)/fs)); %1*pd 、

%--------------信号模型--------------------

ThetaS=30*pi/180;

FreqS=7e5;

SNR=sqrt(10^(40/10));

Sone=SNR*exp(j*(2*pi*FreqS*(1:1:pd)/fs)); %1*pd

%--------------空域处理-------------------------

I1=zeros(M,1);

I2=zeros(M,1);

>

IS=zeros(M,1);

for n=1:M

I1(n)=exp(j*2*pi*(n-1)*d*sin(thetaJ1)/lamda); I2(n)=exp(j*2*pi*(n-1)*d*sin(ThetaJ2)/lamda); IS(n)=exp(j*2*pi*(n-1)*d*sin(ThetaS)/lamda);

end

J1=I1*J1one;

J1=J1.';

J2=I2*J2one;

J2=J2.';

%------------产生噪声-------------------------

noise=sqrt(1/2)*randn(pd,M)+j*sqrt(1/2)*randn(pd,M);

%------------产生接收信号-------------------------

XX=J1+noise+J2;

%% MVDR算法

"

Rxx=zeros(M,M);

Rxx=(XX.'*(XX.')')/pd;%M*M维

detaS=IS;

Wmvdr=inv(Rxx)*detaS*inv(detaS'*inv(Rxx)*detaS); %MVDR 算法

%% 直线阵布阵

p=-pi/2:pi/180:pi/2;

for jj=1:1:length(p) %空间角度扫描

w_scan=zeros(M,1);

scan=p(jj);

for n=1:1:M

w_scan(n)=exp(j*2*pi*(n-1)*d*sin(scan)/lamda);

end%空间导向矢量 1*M Fmvdr(jj)=abs(Wmvdr'*w_scan);

end

%% 画出方向图

Fmax=max(max(Fmvdr));

Fa=Fmvdr./Fmax;

Fa=20*log10(Fa);

figure(1);

plot(180*p/pi,Fa,'b-')

相关主题
相关文档
最新文档