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

📄 snrmusic.m

📁 多重信号分类算法
💻 M
字号:
%MUSIC算法,7均匀直线阵列 天线间距为波长一半 3信号源
clear all
clc
d=1;
lma=2;
N=2048;                                                  %设定采样点数
SNR=[4 8 -2];                         
fs=8;                                                    %设定采样频
f=[0.9 0.6 0.2];                                         %设三个信号元的频率,单位为MHz
w=[-30 35 45]*pi/180;                                    %入射方向角向量
phi=[60 20 30]*pi/180;                                   %两入射信号初始相位
M=7;                                                     %设定阵元数
AMP = 10.^(SNR./20);              
m=0:M-1;
n=0:N-1;
S=repmat(AMP',1,N).*exp(j*(2*pi*f.'/fs*n+phi'*ones(1,N)));             %产生三个远场正弦信号
A=exp(j*2*pi*d*m'*(sin(w)/lma));                         %方向矩阵
X=A*S;
noise=randn(M,N)+j*randn(M,N);
X=X+noise;                                               %接受数据矩阵
Rx=X*(X')/N;                                             %计算协方差矩阵
%*********************************************************************
[V,D]=eig(Rx);			                                 %自相关矩阵的特征分解,,得到特征值矩阵和与特征值一一对应的特征向量矩阵
[Q,index]=sort(diag(D));                                 %对特征值排序 
for k=1:M-length(w)                                      %将与特征值对应的特征向量也按照特征值的顺序排列     
    En(:,k)=V(:,index(k));                               %取排了序的特征向量的前M-length(theta)个来构造噪声子空间En
end
L_lim=-90;                                               %设置测向左、右界
R_lim=90
step=0.1;                                                %设置步长
theta_axis=L_lim:step:R_lim;
MD=(R_lim-L_lim)/step+1;
a_theta=exp(j*2*pi*d/lma*m'*sin(theta_axis*pi/180));
for k=1:MD                                              %进行谱峰搜索
    d(k)=a_theta(:,k)'*En*En'*a_theta(:,k);
    k=k+1; 
end
D2=-10*log10(abs(d)./max(abs(d)));
figure(1)
polar(theta_axis,D2)
figure(2)
plot(theta_axis,D2,'k');
xlabel('DOA(theta)')
ylabel('P(dB)')
ylim([0,50])
grid

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -