MUSIC (Multiple Signal Classification)算法,即多信号分类算法,由Schmidt等人于1979年提出。MUSIC算法是一种基于矩阵特征空间分解的方法。从几何角度讲,信号处理的观测空间可以分解为信号子空间和噪声子空间,显然这两个空间是正交的。信号子空间由阵列接收到的数据协方差矩阵中与信号对应的特征向量组成,噪声子空间则由协方差矩阵中所有最小特征值(噪声方差)对应的特征向量组成.

MUSIC算法利用信号子空间和噪声子空间的正交性,构建空间谱函数,通过谱峰搜索,估计信号的参数。对于声源定位来说,需要估计信号的DOA。MUSIC算法对DOA的估计有很高的分辨率.但是该算法对于入射信号的要求非常高,应用该算法的前提是入射信号必须是互不相干的。

假设由 N 个阵元组成的均匀线性阵列 ,阵列之间的间距为半波长 d = λ / 2 ,假设有M个入射远场信号源,它们的功率相同且互不相干,分别从不同的方向入射到接收阵列,其中入射信号和噪声互不相关。以最左侧的阵元为参考点,各个阵元的位置相比前一个增加距离d。其中一个信号的入射方向角为 θ,表示入射信号与线阵法线的夹角。一般假设信号源数M 小于阵元数目 N 。

在第 t次快拍(也就是第t个时刻),得到的接收数据向量为:

窄带远场信号的DOA数学模型:

其中:

,    X是一个N*L的矩阵,代表第t时刻下,阵列输出矢量,是1*L的信号矢量,即该信号有L个采样点

,        噪声

,             S是一个M*L的输入信号矩阵,空间中一共有M个入射信号,是1*L的信号矢量,即该信号有L个采样点

,              N*M的空间阵列的导向矢量阵

我们要求解的问题是: 通过对采样的输出信号 X(k) ,估计出M个信号源各自的波达方向角

在实际处理中,输出信号数据是有限时间段内的有限次数的样本(也称快拍或快摄),在这段时间内,假定来波方向不发生变化,且噪声为与信号不相关的白噪声,则定义阵列输出信号的协方差矩阵:

其中是输入信号的协方差矩阵。是噪声相关阵

MUSIC算法的核心就是对进行特征值分解(对称矩阵),利用特征向量构建两个正交的子空间,即信号子空间和噪声子空间(信号和噪声相互独立,数据协方差可分解为信号子空间和噪声子空间)。

其中 是由大的特征值对应的特征向量张成的子空间,即信号子空间。是由小的特征值对应的特征矢量张成的子空间,即为噪声子空间。

由于噪声子空间与信号子空间正交,则:

则:

上式的充分必要条件:

由于实际的干扰因素,不完全成立,即不完全满足正交性。所以可采用最小优化搜索来估计波达方向:

MUSIC算法实现的步骤

1.根据N个接收信号矢量得到输出信号的协方差矩阵的估计值:

2.对上面得到的协方差矩阵进行特征分解

3.按特征值的大小排序将与信号个数M相等的特征值和对应的特征向量看做信号部分空间,将剩下的特征值和特征向量看做噪声部分空间,得到噪声矩阵

4.由于阵列方向向量与噪声子空间正交的缘故,在信号入射方向上会出现极小值。整理得到空间谱函数,进行极大值的谱峰搜索,使变化:

clear; close all;
%%%%%%%% MUSIC for Uniform Linear Array%%%%%%%%
derad = pi/180;      %角度->弧度
N = 8;               % 阵元个数
M = 3;               % 信源数目
theta = [-30 0 60];  % 待估计角度
snr = 10;            % 信噪比
K = 512;             % 快拍数dd = 0.5;            % 阵元间距
d=0:dd:(N-1)*dd;
A=exp(-1i*2*pi*d.'*sin(theta*derad));  %方向矢量%%%%构建信号模型%%%%%
S=randn(M,K);             %信源信号,入射信号
X=A*S;                    %构造接收信号
X1=awgn(X,snr,'measured'); %将白色高斯噪声添加到信号中
% 计算协方差矩阵
Rxx=X1*X1'/K;
% 特征值分解
[EV,D]=eig(Rxx);                   %特征值分解
EVA=diag(D)';                      %将特征值矩阵对角线提取并转为一行
[EVA,I]=sort(EVA);                 %将特征值排序 从小到大
EV=fliplr(EV(:,I));                % 对应特征矢量排序% 遍历每个角度,计算空间谱
for iang = 1:361angle(iang)=(iang-181)/2;phim=derad*angle(iang);a=exp(-1i*2*pi*d*sin(phim)).'; En=EV(:,M+1:N);                   % 取矩阵的第M+1到N列组成噪声子空间Pmusic(iang)=1/(a'*En*En'*a);
end
Pmusic=abs(Pmusic);
Pmmax=max(Pmusic)
Pmusic=10*log10(Pmusic/Pmmax);            % 归一化处理
h=plot(angle,Pmusic);
set(h,'Linewidth',2);
xlabel('入射角/(degree)');
ylabel('空间谱/(dB)');
set(gca, 'XTick',[-90:30:90]);
grid on;

from:https://blog.csdn.net/qq_23947237/article/details/82318222

MUSIC算法及MATLAB实现相关推荐

  1. fcm算法的MATLAB实现,FCM算法的matlab程序(初步)

    FCM算法的matlab程序 1.采用iris数据库 iris_data.txt 5.1 3.5 1.4 0.2 4.9 3 1.4 0.2 4.7 3.2 1.3 0.2 4.6 3.1 1.5 0 ...

  2. 2018-4-8蚁群算法---包子阳《智能优化算法以及Matlab实现》第五章

    资料来源: <智能优化算法以及matlab实现>包子阳  余继周 编著 第五章-----蚁群算法 是一种元启发式优化算法(自己理解:就是作为群体的单位个体也就是元,在里面充当着随机的选择搜 ...

  3. matlab dfp法,DFP算法及Matlab程序.docx

    DFP算法及Matlab程序 作业二 用DFP算法求解,取,.一.求解:求迭代点x1令,得的极小值点,所以得:于是,由DFP修正公式有下一个搜索方向为求迭代点x2令,得的极小值点于是得:,所以:,因H ...

  4. matlab整定串级pid,PID算法在Matlab串级控制中的应用

    PID算法在Matlab串级控制中的应用 自114 1112002039 陈艳 前言:这个专题是由王娟老师给我们授课,我感觉收获挺大的,尤其是matlab仿真软件的使用,为我以后的实验课打下良好的基础 ...

  5. PSO-LSSVM算法及其MATLAB代码

    挺完整的一篇博客,这里转载记录一下. 原文链接:PSO-LSSVM算法及其MATLAB代码 一.PSO 1.概念 粒子群优化算法(PSO:Particle swarm optimization)是一种 ...

  6. matlab hist函数_算法工匠MATLAB专训营:Matlab绘图,小试牛刀

    作者 | 蔡老师 仿真秀专栏作者 首发 | 仿真秀平台 导读:正文之前,我在此详细说明一下,因为本文包含的程序太难得,网上肯定找不到这样的程序.随着讲课的越来越深入,我给出的程序会越来越实用,接近于实 ...

  7. matlab音频基频的提取,(620512681) 自相关基频提取算法的MATLAB实现

    第31卷总第80期 西北民族大学学报(自然科学版) V01.31.No.4 1 0年1 2 0 2月 Journal of Nonhw铭t University for Nationalities(N ...

  8. fdtd算法的matlab程序,FDTD算法的Matlab程序

    <FDTD算法的Matlab程序>由会员分享,可在线阅读,更多相关<FDTD算法的Matlab程序(6页珍藏版)>请在人人文库网上搜索. 1.* 5= T$h;O % 3-D ...

  9. hilbert曲线序编码matlab,Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码

    Hilbert曲线扫描矩阵的生成算法及其MATLAB程序代码 王笋,徐小双(华中科技大学控制科学与工程系,武汉 430074) 摘 要 Hilbert曲线是一种重要的图像处理工具,在图像处理,特别是图 ...

  10. matlab 控制实验指导,智能控制系统-实验指导书-实验一-BP算法的MATLAB实现

    实验一.BP算法的MATLAB实现 一.实验目的 1.了解MATLAB集成开发环境 2.了解MATLAB编程基本方法 3.加深对BP算法的理解和掌握 二.实验内容 1.MATLAB基本指令和语法. 2 ...

最新文章

  1. 模拟业务最小测试用例01
  2. iphone字体_iOS 13终于能换花式字体了?!发在朋友圈里真的超好看!
  3. Apt 命令解说(apt-get update、apt-cache search package、apt-get install package、apt-get remove )
  4. CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
  5. linux命令里的xz是干嘛的,linux xz命令详解
  6. 【FFMPEG系列】之工具调试:gprof性能分析
  7. linux进入uvc目录,Linux uvc驱动分析
  8. zabbix使用ipv6地址监控snmp客户端
  9. PHP Sessions
  10. c语言编程悬臂梁受力分析,悬臂梁-静力学分析(
  11. Gif动图体积如何缩小?分享一招快速压缩动图的方法
  12. vue vue-print-nb 打印图片
  13. STM32f4系列ADC解析
  14. 挂站服务器什么意思?挂站服务器可以挂多少网站?
  15. SQL 多表联合查询
  16. 关于IOS中uni.downloadFile下载的图片显示不出来的解决方法
  17. 腾讯欲与中国功夫联手干掉360
  18. C语言递归函数——汉诺塔问题笔记
  19. 电脑内存条C14和C16的区别是什么?
  20. Ansys Speos | 基于 Workbench 和 Speos 的准直全反射透镜优化设计案例

热门文章

  1. Ubuntu安装kaldi
  2. JDK API 1.60 中文版(Java 1.6 中文帮助文档) 中文版
  3. 计算机二级在线练,计算机二级操作练习题.doc
  4. 51单片机汇编语言流水灯代码
  5. delphi mysql变体类型_Delphi 2010学习笔记(8)---数据类型(顺序类型)---2011-01-19
  6. 可行性研究与效益分析
  7. 3500个常用汉字列表
  8. tftp工具_tftp,tftp等八款最佳的FTP客户端工具
  9. wxwindows编译
  10. c++ pdflib 中文乱码解决思路