📄 espritwujuan.m
字号:
% ESPRIT算法
clc
clear all
close all
M=8; %阵元数
SNR=0; %信噪比
theta=[-20 20]*pi/180; %信号入射角
N=256; %快拍数
f=3000; %信号频率
fs=f*5; %采样频率
c=1500; %声速
lambda=c/f; %波长
d=lambda/2; %阵元间距
%%%%%%%%%%%%%%%% produce signal%%%%%%%%%%%%%%%%%
for n=1:N
S(1,n)=sqrt(2*10^(SNR/10))*exp(j*2*pi*f/fs*n+2*pi*rand(1,1)); %独立的信号源1
S(2,n)=sqrt(2*10^(SNR/10))*exp(j*2*pi*2*f/fs*n+2*pi*rand(1,1)); %独立的信号源2
end
SS=[S(1,:);S(2,:)];
n1=randn(M,N);
n2=randn(M,N);
Q=[exp(j*2*pi/lambda*d*sin(theta(1))),0;0,exp(j*2*pi/lambda*d*sin(theta(2)))];
A=[exp(-j*2*pi*(0:M-1)'/lambda*d*sin(theta))];
X=A*SS+n1; %基阵接收的信号
Y=A*Q*SS+n1; %基阵接收的信号
%%%%%%%%%%%%%%% ESPRIT算法 %%%%%%%%%%%%%%%%%%%%%%
Rxx=1/N*X*X'; %求自协方差矩阵
Rxy=1/N*X*Y'; %求互协方差矩阵
[eigvalxx]=eig(Rxx); %进行特征值分解
[eigvalxy]=eig(Rxy); %进行特征值分解
cxx=Rxx-min(eigvalxx)*eye(M);
z=tril(ones(M),-1);
z=triu(z,-1);
cxy=Rxy-min(eigvalxy)*z;
[eigve,eigva]=eig(cxx,cxy);
eigva=diag(eigva);
ss=abs(abs(eigva)-1);
[s,b]=sort(ss);
%*****************计算DOA*****************
for ii=1:2
%angle_out0(ii)=acos((1500/f0)*angle(eigva0(b0(ii)))/(2*pi*deta));
angle_out(ii)=asin(angle(eigva(b(ii)))/pi)*180/pi;
end
angle_out=sort(angle_out)
eig_value=eigva;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -