• 大小: 2KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: 其他
  • 标签: matlab  ESPRIT算法  

资源简介

基于LS准则和LST准则的ESPRIT算法,这样采用的是非相干信号,能识别角度。

资源截图

代码片段和文件信息

%% LS-ESPRIT算法
%%非相干输入信号
%%四信号输入八阵元的线阵
clc;
close all;
clear all;
i=sqrt(-1);
j=i;
M=8;                                                     %阵元数
K=4;                                                     %信源数
lamda=2;                                                 %信号中心波长
d=lamda/2;                                                 %天线阵元间距
angle1=-40;                                              %四个输入信号的入射角
angle2=10; 
angle3=40; 
angle4=80; 
th=[angle1;angle2;angle3;angle4];
degrad=pi/180;
SNR=[10;10;10;10];
%%============================构造信号并加入高斯白噪声=============================
n=1024;
nn=1:n;
v1=0.015;                                                 %四个输入信号的频率
v2=0.05;
v3=0.02;
v4=0.035;
A=exp(-2*pi*d*j*[0:M-1]‘*sin(th‘*degrad)/lamda);            %阵列因子
S=[1*sin(v1*nn);1*sin(v2*nn);1*sin(v3*nn);1*sin(v4*nn)];  %输入信号
U=randn(Mn)+j*randn(Mn);                                %构造噪声源
Ps=diag(S*S‘/n);                                          %输入信号功率
Pref=2*10.^(SNR/10);                                      %参考信号功率
S1=diag(sqrt(Pref./Ps))*S;
X=A*S1+U;                                                 %阵列接收信号
Rxx=X*X‘/n;                                               %阵列接收信号协方差矩阵
[linerow]=size(Rxx);                                     %协方差矩阵的行数、列数
[V1lamda1]=eig(Rxx);                                     %协方差矩阵的特征向量、特征值
[lamda11I]=sort((diag(lamda1)‘));                        %特征值从小到大排列
lamda11=fliplr(lamda11);                                  %左右翻转,特征值从大到小排序
EV=fliplr(V1(:I));                                       %对应特征矢量排序
%%============================构造信号子空间,并分解成Ex和Ey========================
Exy=[EV(1:line-11:K) EV(2:line1:K)];                    %构造Exy,分解成Ex,Ey
F=EV(1:line-11:K)‘*EV(2:line1:K);
[V2lamda2]=eig(F);                                       %对F进行特征值分解
[lamda22I]=sort((diag(lamda2)‘));                        %特征值从小到大排列
lamda22=fliplr(lamda22);                                  %左右翻转,从大到小排序
V2=fliplr(V2(:I));                                       %对应特征矢量排序
%%==================================计算DOA=======================================
phi=atan2(imag(lamda22)real(lamda22));
theta=asin(lamda*phi/(2*pi*d))*180/pi;                    %DOA估计  w=2*pi*f   c=lamda*f
DOA(1:)=sort(theta);
T=inv(V2);
power=T*diag(lamda1(1:K)-lamda1(M))*T‘;
power=abs(diag(power).‘)/M;                               %功率计算
DOA(2:)=power;
DOA

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2652  2018-09-09 18:37  LS_ESPRIT.m
     文件        3407  2018-09-09 18:27  TLS_ESPRIT.m

评论

共有 条评论