⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 espritwujuan.m

📁 一般的esprit算法计算复杂度高
💻 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 + -