MUSIC算法原理及MATLAB代码 阵列信号处理

MUSIC(multiple signal classification algorithm)算法是一种基于矩阵特征空间分解的方法。从几何角度讲,信号处理的观测空间可以分解为信号子空间和噪声子空间,显然这两个空间是正交的。信号子空间由阵列接收到的数据协方差矩阵中与信号对应的特征向量组成,噪声子空间则由协方差矩阵中所有最小特征值(噪声方差)对应的特征向量组成。

MUSIC算法是空间谱估计测向理论的重要基石。算法原理 [2] 如下:
(1) 不管测向天线阵列形状如何,也不管入射来波入射角的维数如何,假定阵列由M个阵元组成,则阵列输出模型的矩阵形式都可以表示为:Y(t)=AX(t)+N(t)
其中,Y是观测到的阵列输出数据复向量;X是未知的空间信号复向量;N是阵列输出向量中的加性噪声;A是阵列的方向矩阵;此处,A矩阵表达式由图册表示。
MUSIC算法的处理任务就是设法估计出入射到阵列的空间信号的个数D以及空间信号源的强度及其来波方向。
(2) 在实际处理中,Y得到的数据是有限时间段内的有限次数的样本(也称快拍或快摄),在这段时间内,假定来波方向不发生变化,且噪声为与信号不相关的白噪声,则定义阵列输出信号的二阶矩:Ry。

(3) MUSIC算法的核心就是对Ry进行特征值分解,利用特征向量构建两个正交的子空间,即信号子空间和噪声子空间。对Ry进行特征分解,即是使得图册中的公式成立。
(4) U是非负定的厄米特矩阵,所以特征分解得到的特征值均为非负实数,有D个大的特征值和M-D个小的特征值,大特征值对应的特征向量组成的空间Us为信号子空间,小特征值对应的特征向量组成的空间Un为噪声子空间。
(5) 将噪声特征向量作为列向量,组成噪声特征矩阵 ,并张成M-D维的噪声子空间Un,噪声子空间与信号子空间正交。而Us的列空间向量恰与信号子空间重合,所以Us的列向量与噪声子空间也是正交的,由此,可以构造空间谱函数。

(6) 在空间谱域求取谱函数最大值,其谱峰对应的角度即是来波方向角的估计值。


MUSIC(Multiple Signal Classification多信号分类)算法是1979年由美国人R.O.Schmidt提出的,它标志着空间谱估计测向进入了繁荣发展的阶段。它将“向量空间”的概念引入了空间谱估计领域,经过三十年的发展,可以说其理论已经比较成熟。
自80年代以来,人们对基于特征分解的超分辨率空间谱估计算法进行了广泛深入的研究,并提出了一系列高效的处理方法,其中最经典的是多信号分类(MUSIC)算法,这种算法要经过一维搜索才能求出信源的来向,而相对最大似然(ML)和加权子空间拟合(WSF)等多维搜索算法的运算量已经减少了很多。以MUSIC为代表的算法存在一个缺点,即对相干信号处理的不理想。在针对相干信号源的一系列处理方案中,比较经典的是空间平滑技术,如空间平滑(SS)和修正的空间平滑(MSS)算法。然而,空间平滑技术是以损失阵列有效孔径为代价的,而且只适用于等距均匀线阵(ULA)。
事实上空间谱估计算法都是在已知信号源数目下计算的,而在实际应用中这是不可能的,只能根据观测数据对源数目进行估计。R.O.Schmidt在他的经典之作中提出了依据阵列协方差矩阵特征值的分布来估计信号源的方法。这种方法在理论上是完美的,至少对独立源和部分相关源是正确的,但实际上由于数据长度有限,很大程度上只能依靠主观判断来确定源数。


MUSIC算法的分辨率要优于传统波束形成算法(空间傅里叶变换算法),有时候比capon算法分辨率也要高

J=sqrt(-1);
source_number=4;
source_doa=[30 45 60 135];
sensor_number=7;
snapshot_number=2000;
snr=10; A=exp(-J*(0:sensor_number-1)'*pi*sin(source_doa*pi/180));
s=(randn(source_number,snapshot_number)+J*randn(source_number,snapshot_number))/sqrt(2);
x=A*s;
y=awgn(x,snr);
R=y*y'/snapshot_number; [V,D]=eig(R);
Un=V(:,1:sensor_number-source_number);
Gn=Un*Un'; searching_doa=0:0.1:90;
for i=1:length(searching_doa) a_theta=exp(-J*(0:sensor_number-1)'*pi*sin(pi*searching_doa(i)/180))P_con(i)=abs(a_theta'*R*a_theta);P_BF(i)=abs((a_theta'*R*a_theta)./(a_theta'*a_theta)); P_capon(i)=1./abs((a_theta'*inv(R)*a_theta)); P_music(i)=1./abs((a_theta'*Gn*a_theta));
end
plot(searching_doa,P_con/max(P_con),'k');hold on;
plot(searching_doa,P_BF/max(P_BF),'r'); hold on;
plot(searching_doa,P_capon/max(P_capon),'g'); hold on;
plot(searching_doa,P_music/max(P_music),'b'); hold off;grid on;
xlabel('ang');
ylabel('功率谱估计');
legend('conditional spectrum','Bartlett spectrum','Capon spectrum','Music spectrum');


人人为我,我为人人
记得点个赞啊

MUSIC算法原理及MATLAB代码 阵列信号处理相关推荐

  1. 智能优化算法:海鸥算法原理及Matlab代码

    智能优化算法:海鸥算法原理及Matlab代码 文章导航 1. 算法原理 2. SOA算法流程 2.1 迁徙行为(exploration ability) 2.2 攻击行为(exploitation a ...

  2. Adaboost算法原理以及matlab代码实现(超详细)

    一.AdaBoost简介 Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况 ...

  3. 差分进化算法原理及matlab代码实现

    差分进化算法介绍: 在自然界中,遗传,变异,选择的作用,使得生物体优胜略汰,不断由低级向高级进化,人们发现适者生存这一规律可以模式化,从而构成一些列优化算法.差分进化算法就是从这种模式中产生的一种智能 ...

  4. 变异系数法matlab程序,差分进化算法原理及matlab代码实现

    差分进化算法介绍: 在自然界中,遗传,变异,选择的作用,使得生物体优胜略汰,不断由低级向高级进化,人们发现适者生存这一规律可以模式化,从而构成一些列优化算法.差分进化算法就是从这种模式中产生的一种智能 ...

  5. 局部边缘保留滤波器LEP算法原理及matlab代码实现

    "Gu B, Li W, Zhu M, et al. Local edge-preserving multiscale decomposition for high dynamic rang ...

  6. 【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列

    [综合评价分析]熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj ...

  7. music的matlab程序,DOA经典算法MUSIC的MATLAB代码(作者:Nikhil Shetty).pdf

    DOA经典算法MUSIC的MATLAB代码(作者:Nikhil Shetty) Direction of arrival estimation algorithms 作者:Nikhil Shetty ...

  8. AP近邻传播聚类算法原理及Matlab实现

    AP近邻传播聚类算法原理及Matlab实现    Affinity Propagation (AP)聚类是2007年在Science杂志上提出的一种新的聚类算法.它根据N个数据点之间的相似度进行聚类, ...

  9. COI实验室技能:常见的图像增强算法(含MATLAB代码)

    COI实验室技能:常见的图像增强算法(含MATLAB代码)   成像系统采集到的图片有时不一定具有很好的图像质量,往往需要进行一些图像增强的操作.本文主要整理了几种常见的图像增强算法,包括:同态滤波. ...

最新文章

  1. h5执行php函数,值得一个的5个强大的HTML5API 函数
  2. 字典统计排序python123_按值对字典进行排序Python(3级Dict)
  3. Java笔记(一)—StringBuilder类
  4. springboot整合activiti报错[processes/]不存在解决方案
  5. docker 容器命令
  6. 《C语言从入门到精通》pdf
  7. Express初级学习
  8. python用三种方式定义字符串、并依次输出_Python 字符串格式化输出的3种方式
  9. python的作用域分别有几种_Python中作用域的深入讲解
  10. hadoop Context类
  11. Win11进桌面闪屏,亲测恢复正常
  12. 安卓手机修改host
  13. 联想笔记本电脑(LENOVO)关闭触摸板
  14. PCIe EA (Enhanced Allocation) 介绍
  15. 备忘录形成html乱码,浏览器icloud网页版备忘录乱码不能显示中文汉字-企业网站设计之中的字体坑...
  16. 【培训实验记录】锐捷SDN交换机和控制器部署
  17. python xml 创建多个同名子节点_果粉有福了!5分钟学会用Python统计自己最爱听的音乐...
  18. 区块链核心概念(1)
  19. java编写家庭收支记账程序
  20. Trying to resize storage that is not resizeable 解决

热门文章

  1. 数据分析重要吗?成都哪里可以学数据分析?
  2. python - 集合:华为笔试题
  3. 路漫漫其修远兮:js的成长经历(二十五)—— Node.js中的MongoDB
  4. Python使汉字转换成url可识别的编码
  5. Robin常用的软件记录
  6. 证件照片如何换背景底色,3个免费制作证件照的方法,简单易学
  7. Qcom平台 Camera 之单刷调试
  8. 基于Fluent Terminal和Cmder打造一个美观的Windows命令行工具
  9. 【Apache】You don't have permission to access / on this server.问题解决
  10. 前端阿里巴巴矢量图标库的使用