logo资料库

ESPRIT算法最小二乘法)matlab程序.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
%基本 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); %% 利用上面求得的矩阵来获得角度 for i=1:signal_number; alpha(i)=real(asin(-j*(log(q(i,i)))*lamda/(-2*pi*d))*180/pi); %张贤达《矩阵分析与应用》 第 528 页 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 估计');
分享到:
收藏