资源简介

三种esprit算法的doa估计matlab实现。参考张贤达《通信信号处理》的算法。包括两种普通esprit和TLS_esprit算法。经检查无误。

资源截图

代码片段和文件信息

%基本ESPRIT算法第一种方法
clear all;close all;clc;

c=3*10^8;
f=3*10^9;
lamda=c/f;
d=lamda/2;
n=10;
signal_number=3;

thita1=-25;
thita2=30;
thita3=65;

f1=40;
f2=20;
f3=70;

% SNR1=10; 
% SNR2=20; 
% SNR3=30; 

snapshot=1:2000;

S1=4.4*exp(j*2*pi*f1*snapshot/length(snapshot)); 
S2=2.5*exp(j*2*pi*f2*snapshot/length(snapshot)); 
S3=3.6*exp(j*2*pi*f3*snapshot/length(snapshot)); 
S=[S1;S2;S3];

A1=exp(-j*2*pi*d*sin(thita1*pi/180)*[0:n-2]/lamda).‘;
A2=exp(-j*2*pi*d*sin(thita2*pi/180)*[0:n-2]/lamda).‘;
A3=exp(-j*2*pi*d*sin(thita3*pi/180)*[0:n-2]/lamda).‘;
A=[A1A2A3];          %子阵1

B1=exp(-j*2*pi*d*sin(thita1*pi/180)*[1:n-1]/lamda).‘;
B2=exp(-j*2*pi*d*sin(thita2*pi/180)*[1:n-1]/lamda).‘;
B3=exp(-j*2*pi*d*sin(thita3*pi/180)*[1:n-1]/lamda).‘;
B=[B1B2B3];          %子阵2

N=sqrt(1/2)*(randn(n-1length(snapshot))+j*randn(n-1length(snapshot)));

X=A*S+N;
Y=B*S+N;

Rxx=X*X‘/length(snapshot);
Rxy=X*Y‘/length(snapshot);
[VD]=eig(Rxx);
s=0;
for i=1:n-1-signal_number;
    s=D(ii)+s;
end;
delta=s/(n-1-signal_number);

Cxx=Rxx-delta*eye(size(Rxx));
Cxy=Rxy-delta*diag([ones(1n-1-1)]-1);
[pq]=eig(CxxCxy);

for i=1:signal_number;
    alpha(i)=real(asin(-j*(log(q(ii)))*lamda/(-2*pi*d))*180/pi);
end;

stem(alphaones(1signal_number)‘r--‘);grid;
axis([-90 90 0 2]);
text(alpha(1)-41.1num2str(alpha(1)));
text(alpha(2)-41.1num2str(alpha(2)));
text(alpha(3)-41.1num2str(alpha(3)));
title(‘ESPRIT算法DOA估计‘);






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

     文件       1433  2009-07-24 23:26  common_esprit_method1.m

     文件       1128  2009-07-25 10:36  common_esprit_method2.m

     文件       1536  2009-07-25 16:56  TLS_esprit.m

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

                 4097                    3


评论

共有 条评论