ESPRIT算法(最小二乘法)matlab程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

%基本ESPRIT算法,第二种方法最小二乘法

clear all;close all;clc;

c=3*10^8;

f=3*10^9;

%% 求得信号的波长

lamda=c/f;

%%阵元的间距

d=lamda/2;

%% (n-1)为子阵列的个数即阵元数

n=10;

%% 信号的数目

signal_number=3;

%% 三个信号的角度值

thita1=-25;

thita2=30;

thita3=65;

%% 三个信号的中心频率

f1=40;

f2=20;

f3=70;

%% 在时域来说,是快拍数(一段时间内对阵列数据采样的个数);在频域来说,是DFT的时间子段的个数。

snapshot=1:2000;

%% S是信号空间,有三个信号组成

S1=2.72*exp(j*2*pi*f1*snapshot/length(snapshot));

S2=4.48*exp(j*2*pi*f2*snapshot/length(snapshot));

S3=7.37*exp(j*2*pi*f3*snapshot/length(snapshot));

S=[S1;S2;S3];

%% 子阵1

A1=exp(-j*2*pi*d*[0:n-1]*sin(thita1*pi/180)/lamda).';

A2=exp(-j*2*pi*d*[0:n-1]*sin(thita2*pi/180)/lamda).';

A3=exp(-j*2*pi*d*[0:n-1]*sin(thita3*pi/180)/lamda).';

A=[A1,A2,A3];

%% 噪声假设为高斯白噪声,均值为零的

N= wgn(10,2000,3);

%% 求信噪比的S1,S2,S3信噪比依次是10 20 30

s_power1=10*log(2.72^2/2);

s_power2=10*log(4.48^2/2);

s_power3=10*log(7.37^2/2);

snr1=s_power1-3;

snr2=s_power2-3;

snr3=s_power3-3;

%% 整个阵列接收到的数据0-n-1为阵列1;1-n为阵列2的

X=A*S+N;

%% 协方差矩阵

Rxx=X*X'/length(snapshot);

%% 对整个数据的协方差矩阵进行特征分解,从而得到特征值向量D和特征向量V

[V,D]=eig(Rxx);

%[Y,I]=sort(diag(D));

Us=V(:,n-signal_number+1:n);

%% 两个方阵张成的两个子空间

U1=Us(1:n-1,:);

U2=Us(2:n,:);

%% 利用最小二乘法求得旋转不变关系矩阵,然后进行特征分解

[p,q]=eig(inv(U1'*U1)*U1'*U2); %张贤达《矩阵分析与应用》第528页%% 利用上面求得的矩阵来获得角度

for i=1:signal_number;

alpha(i)=real(asin(-j*(log(q(i,i)))*lamda/(-2*pi*d))*180/pi);

end;

%% 作图

stem(alpha,ones(1,signal_number),'r--');grid;

axis([-90 90 0 2]);

text(alpha(1)-4,1.1,num2str(alpha(1)));text(alpha(1)-15,1.4,'信号1,信噪比为10'); text(alpha(2)-4,1.1,num2str(alpha(2)));text(alpha(2)-15,1.4,'信号2,信噪比为20'); text(alpha(3)-4,1.1,num2str(alpha(3)));text(alpha(3)-15,1.4,'信号3,信噪比为30'); ylabel('DOA估计的角度值');

xlabel('角度');

title('ESPRIT算法DOA估计');

相关文档
最新文档