IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 多信号分类算法(MUSIC)的理解与应用 -> 正文阅读

[人工智能]多信号分类算法(MUSIC)的理解与应用

1 引言

MUSIC算法本质上是对信号进行“正交分解”的过程。一般地,MUSIC算法用于DOA估计,因此本文首先阐述在这种应用场景下对MUSIC算法的相关理解;接着,分析网络上一些仿真代码的不合理性;最后,给出MUSIC在参数估计领域的其他应用。

2 基本算法流程(一维)与代码(搜索版本,非快速运算)

假设线阵有 M M M个阵元,某时刻 t t t各个阵元接收到的复信号组成一个“快拍”,记为 y ( t ) ∈ C M \boldsymbol{y}(t) \in \mathbb{C}^M y(t)CM,则 N N N个快拍的接收信号可以表示为 Y ∈ C M × N \boldsymbol{Y} \in \mathbb{C}^{M \times N} YCM×N,且 Y = [ y ( 1 f s ) , ? ? , y ( N f s ) ] \boldsymbol{Y}=\left[ \boldsymbol{y}(\frac{1}{f_s}), \cdots, \boldsymbol{y}(\frac{N}{f_s})\right] Y=[y(fs?1?),?,y(fs?N?)]。其中, f s f_s fs?为A/D的采样率。
MUSIC算法可以简单地划分为以下三个步骤:
a ) 估计快拍自相关,进而分析信号的“空间相关性”(一般用“平均值”近似“均值”):
R = E [ y y H ] ≈ R ^ = Y Y H N \boldsymbol{R} = E\left[ \boldsymbol{y}\boldsymbol{y}^H \right] \approx \boldsymbol{\hat{R}} = \frac{\boldsymbol{Y}\boldsymbol{Y}^H}{N} R=E[yyH]R^=NYYH?
b ) 自相关矩阵的特征值分解:
R ^ U = U Λ Λ = diag [ λ 1 , ? ? , λ M ] U = [ u 1 , ? ? , u M ] \begin{aligned} \boldsymbol{\hat{R}} \boldsymbol{U} &= \boldsymbol{U} \boldsymbol{\Lambda} \\ \boldsymbol{\Lambda} &= \text{diag} \left[ \lambda_1, \cdots, \lambda_M \right] \\ \boldsymbol{U} &= \left[ \boldsymbol{u}_1,\cdots,\boldsymbol{u}_M \right] \end{aligned} R^UΛU?=UΛ=diag[λ1?,?,λM?]=[u1?,?,uM?]?
其中, λ i \lambda_i λi?为特征值, u i \boldsymbol{u}_i ui?为与之对应的特征向量。假设存在 K K K个“时间不相关”且“空间不相关”的信号,则提取 M ? K M-K M?K个小特征值对应的特征向量,组成噪声子空间 U n \boldsymbol{U}_n Un?
c ) 搜索:
生成理想的信号快拍 a ( θ ) ∈ C M \boldsymbol{a}(\theta) \in \mathbb{C}^M a(θ)CM, 则MUSIC输出可以表示为:
P M U S I C ( θ ) = 1 a H ( θ ) U n U n H a ( θ ) P_{MUSIC}(\theta) = \frac{1}{\boldsymbol{a}^H(\theta) \boldsymbol{U}_n \boldsymbol{U}^H_n \boldsymbol{a}(\theta)} PMUSIC?(θ)=aH(θ)Un?UnH?a(θ)1?

代码,其中 A = [ a ( θ 1 ) , ? ? , a ( θ L ) ] \boldsymbol{A} = \left[ \boldsymbol{a}(\theta_1) ,\cdots, \boldsymbol{a}(\theta_L)\right] A=[a(θ1?),?,a(θL?)]

function Pmusic = MUSIC(Y, K, A)
% size(Y) = [M, N]
N = size(Y, 2);

% step1:
R = (Y * Y') / N;

% step2:
[U, D] = eig(R);
[~, idx] = sort(diag(D), 'descend');
U = U(:,idx);
Un = U(:,K+1:end);

% step3:
Pmusic = zeros(size(A, 2));
for ii = 1:size(A, 2)
    a = A(:,ii);
    Pmusic(ii) = 1 / ( a' * (Un * Un') * a);
end
end

3 空间存在正交分量且时间存在正交分量的信号才能超分辨!!!

注:存在正交分量指两个向量在向量空间中指向的方向存在正交分量,也即这两个向量组成的矩阵是列满秩的。
截至发文时,MUSIC相关文章中最热的文章为《较为详细的MUSIC算法原理及MATLAB实现》在该文章中,存在一处仿真BUG,即强制设定频率相同的信号在时间轴上是正交的,具体涉及到的代码为:

A=exp(-1i*2*pi*d.'*sin(theta*derad));  %方向矢量
S=randn(M,K);             %信源信号,入射信号
X=A*S;                    %构造接收信号

上述代码中,从方向矢量 A A A可以看出 k = 2 π λ = 2 π k=\frac{2\pi}{\lambda}=2\pi k=λ2π?=2π,则信号波长 λ = 1 \lambda=1 λ=1,频率 f = c λ = 3 × 1 0 8 f=\frac{c}{\lambda}=3\times10^8 f=λc?=3×108。空间轴上,由于同频信号入射角度不同,则不同方向的信号存在“正交成分”。而在时间轴上,这些同频信号应该是“相同”的,即 e j 2 π f t e^{j2\pi ft} ej2πft。程序中其强制设置为高斯分布的随机值,使得在时间轴上这些信号存在正交成分,才能实现超分辨。因此,我们将重写一段程序,给出仿真结果,从而验证网上仿真结果的不合理性:
a ) 当 S = randn ( M , K ) S=\text{randn}(M,K) S=randn(M,K)时(仿真BUG
错误示范
b )当 S = e j 2 π f ( 0 : N ? 1 ) / f s S=e^{j2\pi f(0:N-1)/fs} S=ej2πf(0:N?1)/fs时(实际情况
实际情况

4 结论及原因分析

从上述结果中可知,MUSIC算法对信号在时间维度上的相关性也有要求。在《Music算法详解》 中,也提到了这种现象,产生该现象的原因如下:
在求解自相关矩阵的时候,我们使用时间平均近似集总平均,即认为
E [ y y H ] ≈ Y Y H N E\left[ \boldsymbol{y}\boldsymbol{y}^H \right] \approx \frac{\boldsymbol{Y}\boldsymbol{Y}^H}{N} E[yyH]NYYH?
但由于同频信号在时间维度是完全相同的,因而其在时间维度不能视为“各态历经的平稳随机过程”,而只有各态历经约束情况下,我们才能够认为时间平均能够近似集总平均,这就是MUSIC算法的问题所在。

5 主程序代码

clearvars;
close all;
clc;
%%
M = 16;
N = 200;             
fs = 20e3;
f = 10 * fs / N;           	
lambda = 3e8/f;                  	
search_Azimuth = -90:1:90;
d = 0.5*lambda;
snr = 20;                		
source_doa = [0,2,-10];
K = length(source_doa);
%%
Xm = d*(0:M-1).';         
lambda = 3e8 / f;                  	

A = zeros(M, K);
for q = 1:K
    A(:,q) = exp(-1j*Xm*2*pi*sin(source_doa(q)*pi/180)/lambda);
end

% MK and KN -> MN
noise = (1/sqrt(2)*sqrt(10.^(-snr/10)))*(randn(M,N)+ 1j*randn(M,N));
% s = 1/sqrt(2)*(randn(K, N) + 1j*randn(K,N));	% 仿真bug
s = repmat(exp(1j*2*pi*f*(0:N-1)/fs), K, 1);    % 实际情况
Y = A*s + noise;        % received data

Ax = zeros(M, length(search_Azimuth));
for q = 1:length(search_Azimuth)
    Ax(:,q) = exp(-1j*Xm*2*pi*sin(search_Azimuth(q)*pi/180)/lambda);
end

Pmusic = MUSIC(Y, K, Ax);

figure;
plot(search_Azimuth, db(Pmusic), 'LineWidth', 1);
grid on; axis tight;
xlabel('$\theta$(degree)','Interpreter','latex');
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:26:47  更:2022-04-24 09:29:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:41:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码