【精选论文 | Capon算法与MUSIC算法性能的比较与分析】

news2024/10/2 10:36:48

本文编辑:调皮哥的小助理

在这里插入图片描述

【正文】

首先说结论:

当信噪比(SNR)足够大时,Capon算法和MUSIC算法的空间谱非常相似,因此在SNR比较大时它们的性能几乎一样,当不同信号源的入射角度比较接近时,MUSIC算法的性能优于Capon,这也是MUSIC算法(或者说子空间类算法)被称为高分辨率算法的原因。

原文:On one hand, if the SNR is large enough, the spectrums of Capon and MUSIC are approximately the same, and hence their performances may be similar. On the other hand, MUSIC algorithm performs better than Capon algorithm when the separation angle of sources is quite small, and this is why MUSIC (or saying subspace-based methods) is called as high-resolution algorithm.

这个结论要记住,记得这个问题之前找工作被面试官问过。

下面我们会用论文《The Difference Between Capon and MUSIC Algorithm》中的内容论述这个结论,并给出仿真示例。

1、Capon算法原理

Capon是一位科学家的名字,因为他提出了Capon这种算法,是以他的名字来命名的。我们将数据模型考虑为:

x ( t ) = A s ( t ) + n ( t ) \mathbf{x}(t)=\mathbf{A} \mathbf{s}(t)+\mathbf{n}(t) x(t)=As(t)+n(t)(1)

其中,x(t)是观测数据向量,A是阵列信号处理中所谓的导向矩阵,s(t)和n(t)分别代表信号和噪声向量,t表示时间索引。将一个权重向量w放到观察向量x(t)上,我们得到的输出为:

y ( t ) = w H x ( t ) y(t)=\mathbf{w}^H \mathbf{x}(t) y(t)=wHx(t)(2)

因此,阵列输出的功率可以公式化如下:

R y = E { ∣ y ( t ) ∣ 2 } = w H R x w R_y=\mathrm{E}\left\{|y(t)|^2\right\}=\mathbf{w}^H \mathbf{R}_{\mathbf{x}} \mathbf{w} Ry=E{y(t)2}=wHRxw(3)

其中E{·}和·H分别表示数学期望和埃尔米特转置。此外, R x = E { x ( t ) x H ( t ) } \mathbf{R}_{\mathbf{x}}=\mathrm{E}\left\{\mathbf{x}(t) \mathbf{x}^H(t)\right\} Rx=E{x(t)xH(t)} 是观测数据的协方差矩阵。Capon算法[1]可以描述为:最小化输出功率,同时保持视线方向的单位增益,其公式如下:

min ⁡ w w H R x w  subject to  w H a ( θ ) = 1. \begin{aligned} & \min _{\mathbf{w}} \quad \mathbf{w}^H \mathbf{R}_{\mathbf{x}} \mathbf{w} \\ & \text { subject to } \quad \mathbf{w}^H \mathbf{a}(\theta)=1 .\end{aligned} wminwHRxw subject to wHa(θ)=1.

我的理解,这里其实类似于波束形成(本质上就是),保持视线方向的单位增益就是波束形成后的最大增益方向。上述公式可使用拉格朗日乘数法求解,其解为:

w L a g = R x − 1 a ( θ ) a H ( θ ) R x − 1 a ( θ ) \mathbf{w}_{L a g}=\frac{\mathbf{R}_{\mathbf{x}}^{-1} \mathbf{a}(\theta)}{\mathbf{a}^H(\theta) \mathbf{R}_{\mathbf{x}}^{-1} \mathbf{a}(\theta)} wLag=aH(θ)Rx1a(θ)Rx1a(θ)(4)

将上式代入方程(3),可以得到与方向相关的输出功率,如 :

P Capon  ( θ ) = 1 a H ( θ ) R x − 1 a ( θ ) P_{\text {Capon }}(\theta)=\frac{1}{\mathbf{a}^H(\theta) \mathbf{R}_{\mathbf{x}}^{-1} \mathbf{a}(\theta)} PCapon (θ)=aH(θ)Rx1a(θ)1(5)

经过角度搜索,即可得到Capon算法的测角结果。

2、MUSIC算法原理

MUSIC是多重信号分类的英文缩写(MUltiple SIgnal Classification),信号模型如前所述,一旦我们得到观测数据的协方差矩阵Rx,我们就对其进行特征值分解,并获得信号和噪声分量,如下:

R x = U s Σ s U s H + U n Σ n U n H = ∑ σ s u s u s H + ∑ σ n u n u n H \begin{aligned} \mathbf{R}_{\mathbf{x}} & =\mathbf{U}_{\mathbf{s}} \boldsymbol{\Sigma}_{\mathbf{s}} \mathbf{U}_{\mathbf{s}}{ }^H+\mathbf{U}_{\mathbf{n}} \boldsymbol{\Sigma}_{\mathbf{n}} \mathbf{U}_{\mathbf{n}}{ }^H \\ & =\sum \sigma_s \mathbf{u}_{\mathbf{s}} \mathbf{u}_{\mathbf{s}}{ }^H+\sum \sigma_n \mathbf{u}_{\mathbf{n}} \mathbf{u}_{\mathbf{n}}{ }^H\end{aligned} Rx=UsΣsUsH+UnΣnUnH=σsususH+σnununH(6)

根据信号和噪声子空间之间的正交性[2],我们可以如下形成MUSIC空间谱 :

P MUSIC  ( θ ) = 1 a H ( θ ) U n U n H a ( θ ) P_{\text {MUSIC }}(\theta)=\frac{1}{\mathbf{a}^H(\theta) \mathbf{U}_{\mathbf{n}} \mathbf{U}_{\mathbf{n}}{ }^H \mathbf{a}(\theta)} PMUSIC (θ)=aH(θ)UnUnHa(θ)1(7)

3、算法比较与分析

很容易发现方程式(5)中的 R x − 1 R_x^{-1} Rx1 可以写成:

R x − 1 = ( U s Σ s U s H + U n Σ n U n H ) − 1 = U s Σ s − 1 U s H + U n Σ n − 1 U n H = ∑ 1 σ s u s u s H + ∑ 1 σ n u n u n H \begin{aligned} \mathbf{R}_{\mathbf{x}}^{-1} & =\left(\mathbf{U}_{\mathbf{s}} \boldsymbol{\Sigma}_{\mathbf{s}} \mathbf{U}_{\mathbf{s}}{ }^H+\mathbf{U}_{\mathbf{n}} \boldsymbol{\Sigma}_{\mathbf{n}} \mathbf{U}_{\mathbf{n}}{ }^H\right)^{-1} \\ & =\mathbf{U}_{\mathbf{s}} \boldsymbol{\Sigma}_{\mathbf{s}}{ }^{-1} \mathbf{U}_{\mathbf{s}}{ }^H+\mathbf{U}_{\mathbf{n}} \boldsymbol{\Sigma}_{\mathbf{n}}{ }^{-1} \mathbf{U}_{\mathbf{n}}{ }^H \\ & =\sum \frac{1}{\sigma_s} \mathbf{u}_{\mathbf{s}} \mathbf{u}_{\mathbf{s}}{ }^H+\sum \frac{1}{\sigma_n} \mathbf{u}_{\mathbf{n}} \mathbf{u}_{\mathbf{n}}{ }^H\end{aligned} Rx1=(UsΣsUsH+UnΣnUnH)1=UsΣs1UsH+UnΣn1UnH=σs1ususH+σn1ununH

即等于“信号”项+“噪声”项。当SNR足够大,即σs/σn足够大,则噪声项可以被忽略不计。上述公式(5)可以被近似改写为:

P Capon  ( θ ) ≃ 1 a H ( θ ) U n Σ n − 1 U n H a ( θ ) P_{\text {Capon }}(\theta) \simeq \frac{1}{\mathbf{a}^H(\theta) \mathbf{U}_{\mathbf{n}} \boldsymbol{\Sigma}_{\mathbf{n}}{ }^{-\mathbf{1}} \mathbf{U}_{\mathbf{n}}{ }^H \mathbf{a}(\theta)} PCapon (θ)aH(θ)UnΣn1UnHa(θ)1

因为求和符号并不改变频谱, 则存在:

P Capon  ( θ ) ≃ 1 a H ( θ ) U n U n H a ( θ ) = P MUSIC  ( θ ) P_{\text {Capon }}(\theta) \simeq \frac{1}{\mathbf{a}^H(\theta) \mathbf{U}_{\mathbf{n}} \mathbf{U}_{\mathbf{n}}{ }^H \mathbf{a}(\theta)}=P_{\text {MUSIC }}(\theta) PCapon (θ)aH(θ)UnUnHa(θ)1=PMUSIC (θ)

即Caopn算法的性能近似等于MUSIC算法的性能,这是由数学上得到证明的。因此,我们得出的结论是:如果SNR足够大,Capon和MUSIC的频谱大致相同,因此它们的性能可能相似。

两种算法在10°和20°的DOA RMSE与SNR的关系:
在这里插入图片描述

两种算法在SNR=10dB时,Capon和MUSIC算法的目标分离角度与DOA RMSE的关系:

图片

4、MATLAB仿真

设置阵元数为10,阵元间隔为半波长,信源数为3(-10度,0度,20度),快拍数为1024,下图为估计得到的信号谱,低信噪比设置为-8dB,高信噪比设置为10dB。

低信噪比:

图片

高信噪比:

图片

从上图可以看出,在信噪比较低时两种估计算法性能都急剧下降,但是MUSIC算法略优于Capon,而当信噪比较大时,两种算法基本一致。MUSIC谱峰只反映阵列流形矢量与噪声子空间的正交性,与信噪比无关;Capon谱峰是真正的输出功率,与信噪比有关,这就是我前面说Capon其实本质上是波束形成。

仿真代码:

%MUSIC ALOGRITHM
%DOA ESTIMATION BY CLASSICAL_MUSIC
% 运行环境:MATLAB2022b
clear all;
%close all;
clc;
source_number=3;%信元数
sensor_number=10;%阵元数
N_x=1024; %信号长度
snapshot_number=N_x;%快拍数
w=[pi/4 pi/6 pi/3].';%信号频率
l=sum(2*pi*3e8./w)/3;%信号波长  
d=0.5*l;%阵元间距
snr=10;%信噪比

source_doa=[-10 0 20];%两个信号的入射角度

A=[exp(-1j*(0:sensor_number-1)*d*2*pi*sin(source_doa(1)*pi/180)/l);exp(-1j*(0:sensor_number-1)*d*2*pi*sin(source_doa(2)*pi/180)/l);exp(-1j*(0:sensor_number-1)*d*2*pi*sin(source_doa(3)*pi/180)/l)].';%阵列流型

s=sqrt(10.^(snr/10))*exp(1j*w*[0:N_x-1]);%仿真信号
%x=awgn(s,snr);
x=A*s+(1/sqrt(2))*(randn(sensor_number,N_x)+1j*randn(sensor_number,N_x));%加了高斯白噪声后的阵列接收信号

R=x*x'/snapshot_number;
iR=inv(R);
%[V,D]=eig(R);
%Un=V(:,1:sensor_number-source_number);
%Gn=Un*Un';
[U,S,V]=svd(R);
Un=U(:,source_number+1:sensor_number);
Gn=Un*Un';

searching_doa=-90:0.1:90;%线阵的搜索范围为-90~90for i=1:length(searching_doa)
   a_theta=exp(-1j*(0:sensor_number-1)'*2*pi*d*sin(pi*searching_doa(i)/180)/l);
   Pmusic(i)=a_theta'*a_theta./abs((a_theta)'*Gn*a_theta);
   Pcapon(i)=1./abs((a_theta)'*iR*a_theta);
 end
plot(searching_doa,10*log10(Pmusic),'k-',searching_doa,10*log10(Pcapon),'b--');
%axis([-90 90 -90 15]);
xlabel('DOAs/degree');
ylabel('Normalized Spectrum/dB');
legend('Music Spectrum','Capon Spectrum');
title('Comparation of MUSIC and Capon for DOA Estimation');
grid on;

5、角度分辨率/精度

设置阵元数为10,阵元间隔为半波长,信源数为3(-0.5°,0°,0.5°),快拍数为1024,信噪比设置为20dB,下图为估计得到的信号谱,为方便观察进行了归一化。

图片

可以看到这种情况下,MUSIC的分辨率是优于Capon法的。具体代码详见https://MLiyPUV6F。

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

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

相关文章

蓝桥杯刷题024——天干地支

2020国赛 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:甲(jiǎ)、乙(yǐ)、丙(bǐng)、丁(dīng)、戊(w&#xff09…

IO知识整理

IO 面向系统IO page cache 程序虚拟内存到物理内存的转换依靠cpu中的mmu映射 物理内存以page(4k)为单位做分配 多个程序访问磁盘上同一个文件,步骤 kernel将文件内容加载到pagecache多个程序读取同一份文件指向的同一个pagecache多个程…

MySQL(五)

通过索引进行优化 索引基本知识 索引的优点 1、大大减少了服务器需要扫描的数据量2、帮助服务器避免排序和临时表3、将随机io变成顺序io 索引的用处 1、快速查找匹配WHERE子句的行2、从consideration中消除行,如果可以在多个索引之间进行选择,mysql通常会使用找到…

【Python爬虫案例教学】采集某网站壁纸,实现壁纸自由

前言 (。・∀・)ノ゙嗨 大家好,这里是小圆 现在开始每天都给大家 分享些关于python爬虫的案例教学 从最简单的开始 — 采集图片壁纸 今天就来扒拉这个优质的壁纸网站~ 网址 👇 顺便瞧一眼 这里的…

30 - 面向对象的其他语法

目录 一、本章重点 二、对象的分类 1、类对象 (1)理解 (2)作用 2、实例对象 (1)理解 三、属性的划分 1、实例属性 (1)概念 (2)定义 (3&#xff09…

操作系统的概念,功能和目标

一、概念: 操作系统是指①控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,以②提供给用户和其他软件方便的接口和环境,它③是计算机系统中最基本的系统软件。 二、功能和目标:…

零入门kubernetes网络实战-14->基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信测试案例

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章继续提供测试案例: 基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信 1、网络拓扑如下 2、网络拓扑构建…

【第二章】(1)了解系统内核和 Shell 终端的关系与作用

🐧2.1强大好用的Shell🧊1.什么是Shell?🧊2.Bash解释器的优势🐧2.2 执行命令的必备知识🧊1.Linux命令的格式🧊2.四个快捷键/组合键小技巧🧊1.什么是Shell? ​ 一台…

shell脚本的编写以及shell中语句(嵌入式学习)

shell学习shell脚本编写步骤shell变量功能性语句1.read2.expr3.let4.test逻辑运算符的书写格式结构性语句1.if…then…fi2、case...esac3、for..do..done4、while..do..doneshell脚本 将shell命令按照一定的逻辑顺序实现指定功能,放到一个文件中。文件叫脚本文件&a…

几个Base64编码工具,也有蹊跷

起因 需求:对一段内容进行base64加密,然后通过url的get请求进行发送到后台,由于加密的内容比较少,base64串也不是很长,我认为此方案可行。 于是找了三个base64编码的在线工具,分别是: 平台1&…

设计模式第六讲:责任链模式和迭代器模式详解

一. 责任链模式 1. 背景 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导…

【Java基础】020 -- 常见API

目录 一、游戏打包exe 二、Math 1、Math类的常用方法 ①、代码实现 2、小结 3、练习 ①、练习一:改进判断一个数是否为一个质数 ②、练习二:自幂数 三、System 1、时间原点 2、常用方法 3、课堂练习 4、注意事项 5、小结 四、Runtime 1、常用方法 2、练习…

微服务项目【商品秒杀接口压测及优化】

生成测试用户 将UserUtils工具类导入到zmall-user模块中,运行生成测试用户信息,可根据自身电脑情况来生成用户数量。 UserUtils: package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…

【黄啊码】我问ChatGPT如何学习PHP语言,它是这么说的

大家好,我是黄啊码,最近大家都在流行整chatGPT,今天它来了!别人都在吹嘘它万能,能够代替程序员写代码,今天我们就让它教教我们学习PHP语言: 黄啊码: 如何有效学习php语言&#xff1…

关于剩余电流动作继电器在配电系统中的应用探讨

摘 要:据了解,我国每年剩余电流动作继电器(RCD)的使用量超过2.7亿台,属于CCC认证产品,广泛应用于住宅、办公、商业、酒店、学校等民用建筑和数据中心及工业场所。 现在剩余电流动作继电器依据的标准是GB/T…

vue项目如何使用 SheetJS(xlsx)插件?

简言 SheetJS是一款非常好用的前端处理表格文件的工具。它分社区版和专业版,我们今天来介绍如何简单使用它的社区版。 SheetJS社区版官网 介绍 你应该打开官网浏览具体使用详情。 安装 打开官网在如上图的Installation板块中可以找到各种运行模块的使用方式。 …

MongoDB 覆盖索引查询

MongoDB 覆盖索引查询 官方的MongoDB的文档中对覆盖查询做了说明: 所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分, MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询…

【半监督医学图像分割 2023 CVPR】UCMT 论文翻译

文章目录【半监督医学图像分割 2023 CVPR】UCMT 论文翻译摘要1. 介绍2. 相关工作2.1 半监督学习2.2 半监督分割2.3 不确定性引导的半监督语义分割3. 方法3.1 问题的定义3.2 总览3.3 协作式均值教师3.4 不确定性指导混合4. 实验和结论5. 总结【半监督医学图像分割 2023 CVPR】UC…

webpack(4版本)使用

webpack简介:webpack 是一种前端资源构建工具,一个静态模块打包器(module bundler)。在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源(bundle)…

sentinel持久化方案

一.sentinel规则推送原理 1.原有内存规则存储原理 (1)dashborad中请求到服务器后,在controller中通过http把规则直接推送给client,client接收后把规则放入内存; 2.持久化推送规则原理 ![在这里插入代码片](https://img-blog.csdnimg.cn/1…