MUSIC算法仿真

news2024/9/9 6:01:02

DOA波达方向估计

DOA(Direction Of Arrival)波达方向是指通过阵列信号处理来估计来波的方向,这里的信源可能是多个,角度也有多个。DOA技术主要有ARMA谱分析、最大似然法、熵谱分析法和特征分解法,特征分解法主要有MUSIC算法、ESPRIT算法WSF算法等。其中MUSIC是一种经典的DOA估计算法。

MUSIC算法概述

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

MUSIC算法原理

MUSIC算法是空间谱估计测向理论的重要基石。算法原理 如下:
(1) 不管测向天线阵列形状如何,也不管入射来波入射角的维数如何,如图1所示,假定阵列由 N N N个阵元组成,并且符合窄带远场模型。
在这里插入图片描述

图1. 均匀线性阵模型

则阵列输出模型的矩阵形式都可以表示为: Y ( t ) = A X ( t ) + N ( t ) Y(t)=AX(t)+N(t) Y(t)=AX(t)+N(t)
其中, Y Y Y是观测到的阵列输出数据复向量; X X X是未知的空间信号复向量; N ( t ) N(t) N(t)是阵列输出向量中的加性噪声; A A A是阵列的方向矩阵,又称之为阵列流形矩阵;当我们以最左侧的阵元为参考位,此处, A A A矩阵表达式表示为:
A = [ α ( θ 1 ) , α ( θ 2 ) , ⋯   , α ( θ M ) ] = [ 1 1 ⋯ 1 e − j ϕ 1 e − j ϕ 2 ⋯ e − j ϕ D e j − 2 ϕ 1 e − j 2 ϕ 2 ⋯ e − j 2 ϕ D ⋮ ⋮ ⋱ ⋮ e − j ( N − 1 ) ϕ 1 e − j ( N − 1 ) ϕ 2 ⋯ e − j ( N − 1 ) ϕ D ] A=[\alpha(\theta_1),\alpha(\theta_2),\cdots,\alpha(\theta_M)]=\begin{equation} \begin{bmatrix} 1 & 1 & \cdots &1 \\ e^{-j\phi_1} & e^{-j\phi_2} & \cdots & e^{-j\phi_D} \\ e^{j-2\phi_1} & e^{-j2\phi_2} & \cdots & e^{-j2\phi_D} \\ \vdots & \vdots & \ddots & \vdots \\ e^{-j(N-1)\phi_1} & e^{-j(N-1)\phi_2} & \cdots & e^{-j(N-1)\phi_D} \end{bmatrix} \end{equation} A=[α(θ1),α(θ2),,α(θM)]= 1ejϕ1ej2ϕ1ej(N1)ϕ11ejϕ2ej2ϕ2ej(N1)ϕ21ejϕDej2ϕDej(N1)ϕD
其中, ϕ k = 2 π s i n θ k / λ \phi_k=2{\pi}sin\theta_k/\lambda ϕk=2πsinθk/λ,且 θ k , 1 ≤ k ≤ D \theta_k,1\le k \le D θk,1kD为第 k k k个信源的角度,共有 D D D个角度。 ϕ k \phi_k ϕk在这里是指波程差引起的相移,如下图所示相邻阵元之间的波程差为 d s i n θ dsin\theta dsinθ,将此转换为相位,单位为弧度,则为 2 π s i n θ k / λ 2{\pi}sin\theta_k/\lambda 2πsinθk/λ λ \lambda λ为信号波长。由下图的等相位面可知,信号到达最左侧的阵元需要走更远的距离,因此,以最左侧的阵元为参考,即左侧阵元接收到的信号为 x 1 ( t ) x_1(t) x1(t),则其他阵元接收到的信号都滞后于它,此时, x 1 ( t ) = s ( t ) , x 2 ( t ) = s ( t ) e − j ϕ x_1(t)=s(t),x_2(t)=s(t)e^{-j\phi } x1(t)=s(t),x2(t)=s(t)ejϕ。如果,我们以最右侧信号为参考,即最右侧阵元接收到的信号为 x 1 ( t ) x_1(t) x1(t),则 x 1 ( t ) = s ( t ) , x 2 ( t ) = s ( t ) e j ϕ x_1(t)=s(t),x_2(t)=s(t)e^{j\phi } x1(t)=s(t),x2(t)=s(t)ejϕ。注意角度的正负号。
在这里插入图片描述

图2. 波程差示意图

接收信号写为向量形式:
Y ( t ) = [ y 1 ( t ) y 2 ( t ) y 3 ( t ) ⋮ y N ( t ) ] Y(t)=\begin{equation} \begin{bmatrix} y_1(t) \\ y_2(t) \\ y_3(t) \\ \vdots \\ y_N(t) \end{bmatrix} \end{equation} Y(t)= y1(t)y2(t)y3(t)yN(t)
y i ( t ) y_i(t) yi(t)为第 i i i个阵元接收到的信号,共有 N N N个阵元。 X ( t ) = [ s 1 ( t ) , s 2 ( t ) , ⋯   , s D ( t ) ] X(t)=[s_1(t),s_2(t),\cdots,s_D(t)] X(t)=[s1(t),s2(t),,sD(t)] s i ( t ) , 1 ≤ i ≤ D s_i(t),1\le i \le D si(t),1iD,表示第 i i i个信源发出的信号。 N ( t ) = [ n 1 ( t ) , n 2 ( t ) , ⋯   , n N ( t ) ] T N(t)=[n_1(t),n_2(t),\cdots,n_N(t)]^T N(t)=[n1(t),n2(t),,nN(t)]T,表示噪声,符合独立同分布的假设。
MUSIC算法的处理任务就是设法估计出入射到阵列的空间信号的个数 D D D以及空间信号源的强度及其来波方向 θ k \theta_k θk
(2) 在实际处理中, Y Y Y得到的数据是有限时间段内的有限次数的样本(也称快拍或快摄),在这段时间内,假定来波方向不发生变化,且噪声为与信号不相关的白噪声,则定义阵列输出信号的二阶矩: R y R_y Ry

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

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

MUSIC算法MATLB仿真

% MUSIC空间谱估计算法仿真
close all; clear all; clc;
J=sqrt(-1); 
source_number=4; 
source_doa=[30 40 50 70]; 
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,'measured'); 
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');

仿真结果如下:
在这里插入图片描述

图3. 仿真结果

还有一种参考程序:

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:361
    angle(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;

仿真结果如下:
在这里插入图片描述

图4. 仿真结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML+CSS+JS 学习笔记(四)———jQuery

🌱博客主页:大寄一场. 🌱系列专栏:前端 🌱往期回顾: 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注​​ 目录 jQuery 基础 jQuery 概述 下载与配置jQuery 2. 配置jQuery jQuery 选…

数据库管理-第七十期 自己?自己(20230425)

数据库管理 2023-04-25 第七十期 自己?自己1 自己吓自己2 自己坑自己3 自己挺自己4 自己懵自己总结 第七十期 自己?自己 来到70了,最近有点卷,写的稍微多了些。 吐槽一下五一调休,周末砍一天,连6天&#x…

重学Java第一篇——数组

本片博客主要讲述了以下内容: 1、 一维数组和二维数组的创建和初始化方式; 2、数组的遍历和赋值 3、java.util.Arrays的常用方法 4、数组在内存中的分布(图示) 创建数组和初始化 type[] arr_name;//方式一 type arr_name[];//方式…

一家传统制造企业的上云之旅,怎样成为了数字化转型典范?

众所周知,中国是一个制造业大国。在想要上云以及正在上云的企业当中,传统制造企业也占据了相当大的比例。 那么这类企业在实施数字化转型的时候,应该如何着手?我们不妨来看看一家传统制造企业的现身说法。 国茂股份的数字化转型诉…

云原生-如何部署k8s集群与部署sms集群

阿里云开通三台云服务器实例,(同一个vpc下),配置安全组入规则,加入80端口 ssh登录三台云服务器 在三台云服务器上部署容器环境(安装docker)(https://www.yuque.com/leifengyang/oncl…

Springboot Mybatis使用pageHelper实现分页查询

以下介绍实战中数据库框架使用的是mybatis,对整合mybatis此处不做介绍。 使用pageHelper实现分页查询其实非常简单,共两步: 一、导入依赖; 二、添加配置; 那么开始, 第一步: pom.xml添加依…

工具链和其他-超级好用的web调试工具whistle

目录 whistle介绍 整体结构 能力 规则 6个使用场景示例 1.修改Host 2.代理 3.替换文件(线上报错时) 4.替换UA 5.远程调试 6.JS注入 互动 whistle介绍 整体结构 安装: npm install whistle -g cli:whistle help 启动…

前端系列第10集-实战篇

用户体验:性能,交互方式,骨架屏,反馈,需求分析等 组件库:通用表单,表格,弹窗,组件库设计,表单等 项目质量:单元测试,规范,…

mac十大必备软件排行榜 mac垃圾清理软件哪个好

刚拿到全新的mac电脑却不知道该怎么使用?首先应该装什么软件呢?如果你有同样的疑惑,今天这篇文章一定不要错过。接下来小编为大家介绍mac十大必备软件排行榜,以及mac垃圾清理软件哪个好。 一、mac十大必备软件排行榜 1.CleanMyM…

权限提升:AT || SC || PS 提权.(本地权限提升)

权限提升:AT || SC || PS 提权 权限提升简称提权,由于操作系统都是多用户操作系统,用户之间都有权限控制,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通…

电能计量管理系统在煤矿上的应用

摘要:随着煤矿供电系统管、控一体化的发展需要,本文提出了一种基于矿井光纤网络构成的煤矿电参数计量系统,该系统具有实现变电所各类开关、动力设备的用电高精度计量;远程实时监测各路电参数;远程抄表;远程…

Aspose.Pdf使用教程:在PDF文件中添加水印

Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能&am…

Windows环境下实现设计模式——模板方法模式(JAVA版)

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现模板方法模式(设计模式)。 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式&#x…

STM32驱动SG90舵机

STM32驱动SG90舵机 关于SG90舵机SG90转动角度与占空比的关系驱动SG90舵机代码①确定控制引脚②写代码 SG90舵机正常驱动现象总结 关于SG90舵机 SG90是一种小型伺服电机,通常用于模型制作和小型机械应用中: 问题答案SG90的工作电压是多少SG90的工作电压通常为3V至7.…

QT笔记——QtPropertyBrowser的使用

上一节,我们将了如何去配置QtPropertyBrowser 本节,我们将说明 如何 去 使用QtPropertyBrowser 这个属性类的一些基本知识 简单的几种用法: 首先: 我们需要创建一个Widget 提升一个类 为 QtTreePropertyBrowser .h文件 QtVariant…

git -团队开发 版本控制

文章目录 Git的概念Git的安装过程Git结构交互方式初始化本地仓库Git常用命令add和commit命令status命令log命令log命令2reset命令hard参数/mixed参数/soft参数 删除文件找回本地库删除的文件找回暂存区删除的文件 diff命令 分支操作分支冲突问题,如何解决冲突题 Git…

2023年的深度学习入门指南(9) - Triton

2023年的深度学习入门指南(9) - Triton 上一篇我们学习了如何用CUDA进行编程。 下面我们将介绍几种深度学习GPU编程的优化方法。 第一种我们称之为多面体编译器。我们知道,在传统的IR,比如LLVM-IR中,使用条件分支来编码控制流信息。这种相对…

Find My资讯|美国苹果AirTag市场大涨,助推Find My技术的发展

根据市场调查机构 Circana公布的最新统计数据,在苹果 AirTag 的助推下,美国市场物品追踪器市场快速发展。 报告称 AirTag 等物品追踪器已经成为旅行者的必备品,今年 1 月和 2 月期间,物品追踪器的销售额同比增长了 82%&#xff…

宁波博视眼科俞存院长:晒太阳会晒出白内障?是真的吗?

春意渐浓,人们纷纷踏出家门,享受暖暖的阳光。众所周知,适当晒太阳可以促进人体合成维生素D,对身体有一定的好处。 但你知道吗?太阳光中的紫外线可能会导致部分眼病的出现,例如:白内障。 晒太阳怎么会晒出白…

【数据结构初阶】第七节.树和二叉树的基本操作

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:Java初阶数据结构 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目…