MVDR算法matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
clc
clear all
close all
%% 常量定义
Freqs=1.6e9; %工作频率
c=3e8; %光速
lamda=c/Freqs; %波长
d=0.5*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-')
(注:文档可能无法思考全面,请浏览后下载,供参考。可复制、编制,期待你的好评与关注)