Matlab仿真——改进的MUSIC算法

问题概要:

	利用 MUSIC空间谱将混合的多重信号分离开,称为多重信号分类方法,简称 MUSIC算法。

	此次改进版MUSIC算法来自张贤达老师《现代信号处理(第三版)》算法10.4.1,基于基础版本MUSIC算法和最大似然法得到较优的谱估计,从而实现改进版MUSIC算法的仿真。

算法内容:

算法目的:
简单来说就是咱们要用一个叫做MUSIC的算法用空间谱函数对阵列接收到的空间信号进行一个分类和估计。

算法核心:
个人认为无论是改进版的MUSIC还是基础版的MUSIC,算法最核心的地方就是由观测数据向量x(n)的自协方差矩阵求出特征值来,然后给这些求出来的特征值排个序,根据特征值的大小筛选出需要的特征向量和噪声向量(即期望向量和不期望的向量),得出特征矩阵U。
然后就根据《现代信号处理》的各个推导公式求出关键向量空间值,最后由课本提供的优化矩阵U-hat(公式10.4.37)代入P公式求解即可。
Matlab仿真——改进的MUSIC算法
Matlab仿真——改进的MUSIC算法
Matlab仿真——改进的MUSIC算法

算法代码:

clear; 
close all;
%%%%%%%%%%%参数设定%%%%%%%%%%%
R = pi/180;      %角度->弧度
M = 3;               % 信源数目
N = 8;               % 阵元个数        
theta = [-30 0 60];  % 待估计角度
snr = 10;            % 信噪比
Sample = 666;             % 快拍数(抽样密度)
 
element_spacing = 0.5;            % 阵元间距 
d=0:element_spacing:(N-1)*element_spacing;
A=exp(-1i*2*pi*d.'*sin(theta*R));  %方向矢量

%%%%%%%%%%构建信号模型%%%%%%%%
S=randn(M,Sample);             %信源信号,入射信号
X=A*S;                    %构造接收信号
X1=awgn(X,snr,'measured'); %将白色高斯噪声添加到信号中
% 计算协方差矩阵
Rxx=X1*X1'/Sample;
% 特征值分解
[Gn,D]=eig(Rxx);                   %特征值分解
EVA=diag(D)';                      %将特征值矩阵对角线提取并转为一行
[EVA,I]=sort(EVA);                 %将特征值排序 从小到大
Gn=Gn(:,I);                % 对应特征矢量排序
                 
%%%%%%%%%%% 优化矩阵U %%%%%%%%%
q = EVA(1);
SUM = 0;
for k = N-M+1:N
    u = Gn(:,k);
    SUM = SUM+(EVA(k)*u*u')/(q-EVA(k))^2;
end
U = q*SUM;

%%%%%%%遍历每个角度,计算空间谱%%%%%%
for A = 1:361
    angle(A)=(A-181)/2;
    phim=R*angle(A);
    a=exp(-1i*2*pi*d*sin(phim)).'; 
    G=Gn(:,1:N-M);                   % 取矩阵的第1到N-M列组成噪声子空间
    Pmusic(A)=(a'*U*a)/(a'*G*G'*a);
end
Pmusic=abs(Pmusic);
Pmmax=max(Pmusic)
h=plot(angle,Pmusic);
set(h,'Linewidth',2);
xlabel('入射角/(degree)');
ylabel('空间谱/(dB)');
set(gca, 'XTick',[-90:30:90]);
grid on;

算法结果:

Matlab仿真——改进的MUSIC算法
Matlab仿真——改进的MUSIC算法

小小的总结:

改进的MUSIC算法相比于基础班MUSIC,个人认为所改进的地方可以由最后得到的谱峰所观察到,在代码一开始需要设置的三个入射角大家可以进行变动,改进版本的MUSIC可以更好的区分出相邻的谱峰,即入射角差不多的时候改进版的MUSIC不会将相邻很近的两个谱峰识别成一个。

具体的算法过程大家可以翻阅张贤达老师的教材**(如果没有欢迎私信)**

如果有需要改进的地方,欢迎大家探讨!

上一篇:springboot+springmvc+mybatis项目整合


下一篇:AudioTrack中MODE_STATIC和MODE_STREAM的差异