基于空间平滑MUSIC算法的相干信号DOA估计(2)
空间平滑MUSIC算法(2)
继续上一篇博客,继续讲后向空间平滑和前/后向空间平滑MUSIC算法。
基于空间平滑MUSIC算法的相干信号DOA估计(1)
2.3 后向空间平滑算法
后向空间平滑更准确的说是共轭后向空间平滑,它是对后向子阵列地共轭接收数据协方差矩阵进行平滑。定义第一个共轭后向子阵列由 {M,M−1,⋯,M−p+1}\{M, M-1, \cdots, M-p+1\}{M,M−1,⋯,M−p+1} 组成, 第二个子阵列由 {M−1,M−2,⋯,M−p}\{M-1, M-2, \cdots, M-p\}{M−1,M−2,⋯,M−p} 组成,依次组成的子阵列个数为 L=M−p+1个\mathrm{L}=\mathrm{M}-\mathrm{p}+1 个L=M−p+1个 。
容易知道,共轭后向空间平滑协方差矩阵R~b\tilde{R}^{b}R~b与前向空间平滑协方差矩阵R~f\tilde{R}^{f}R~f的关系:
R~b=J∗(R~f)∗∗J\tilde{R}^{b}=J*(\tilde{R}^{f})^**JR~b=J∗(R~f)∗∗J利用后向空间平滑协方差矩阵和MUSIC算法也可以分辨出多个相干信号的方位。可以证明,该方法最大也可以检测M/2个相干的信号。
MATLAB代码
% bss.m
% Code For Music Algorithm Based On Backward Spatial Spectrum
% The Signals Are All Coherent
% Author:痒羊羊
% Date:2020/10/29clc; clear all; close all;
%% -------------------------initialization-------------------------
f = 500; % frequency
c = 1500; % speed sound
lambda = c/f; % wavelength
d = lambda/2; % array element spacing
M = 20; % number of array elements
N = 100; % number of snapshot
K = 6; % number of sources
L = 10; % number of subarray
L_N = M-L+1; % number of array elements in each subarray
coef = [1; exp(1i*pi/6);... exp(1i*pi/3); exp(1i*pi/2);... exp(2i*pi/3); exp(1i*2*pi)]; % coherence coefficient, K*1
doa_phi = [-30, 0, 20, 40, 60, 75]; % direction of arrivals%% generate signal
dd = (0:M-1)'*d; % distance between array elements and reference element
A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda); % manifold array, M*K
S = sqrt(2)\(randn(1,N)+1i*randn(1,N)); % vector of random signal, 1*N
X = A*(coef*S); % received data without noise, M*N
X = awgn(X,10,'measured'); % received data with SNR 10dB%% reconstruct convariance matrix
%% calculate the covariance matrix of received data and do eigenvalue decomposition
Rxx = X*X'/N; % origin covariance matrix
H = fliplr(eye(M)); % transpose matrix
Rxxb = H*(conj(Rxx))*H;
Rf = zeros(L_N, L_N); % reconstructed covariance matrix
for i = 1:LRf = Rf+Rxxb(i:i+L_N-1,i:i+L_N-1);
end
Rf = Rf/L;
[U,V] = eig(Rf); % eigenvalue decomposition
V = diag(V); % vectorize eigenvalue matrix
[V,idx] = sort(V,'descend'); % sort the eigenvalues in descending order
U = U(:,idx); % reset the eigenvector
P = sum(V); % power of received data
P_cum = cumsum(V); % cumsum of V%% define the noise space
J = find(P_cum/P>=0.95); % or the coefficient is 0.9
J = J(1); % number of principal component
Un = U(:,J+1:end);%% music for doa; seek the peek
dd1 = (0:L_N-1)'*d;
theta = -90:0.1:90; % steer theta
doa_a = exp(-1i*2*pi*dd1*sind(theta)/lambda); % manifold array for seeking peak
music = abs(diag(1./(doa_a'*(Un*Un')*doa_a))); % the result of each theta
music = 10*log10(music/max(music)); % normalize the result and convert it to dB%% plot
figure;
plot(theta, music, 'linewidth', 2);
title('Music Algorithm For Doa', 'fontsize', 16);
xlabel('Theta(°)', 'fontsize', 16);
ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
grid on;
可以看到,在6个入射信号均相干的情况下,基于后向空间平滑的MUSIC算法能较好地对其进行DOA估计,且估计精度较高。
2.3 前/后向空间平滑算法
把前向和共轭后向空间平滑协方差矩阵定义为前向空间平滑协方差矩阵和共轭后向空间平滑协方差矩阵的平均值,即:
KaTeX parse error: Unexpected end of input in a macro argument, expected '}' at position 47: …{2}\left(\tilde\̲m̲a̲t̲h̲b̲f̲{R}^{f}+\tilde\…那么只要空间平滑的次数大于等于相干信号源的个数,前向和共轭后向空间平滑协方差矩阵一般情况下都是满秩的。使用前/后向空间平滑的方法最多可以检测的相干信号源个数为 2M/32 \mathrm{M} / 32M/3 个。你可能很好奇这个最大相干信号源检测数是怎么得到的?
假设: 阵列天线的阵元数为M\mathrm MM个,前/后向空间平滑次数分别为L\mathrm LL次,则每个子阵的阵元数为 N=M−L+1\mathrm N={\mathrm M}-\mathrm{L}+1N=M−L+1 个, 同时可以知道, 可以分辨的最大信号个数为M−L\mathrm{M}-\mathrm{L}M−L个, 也就是子阵的阵元个数减1;1 ;1;前后向分别平滑N\mathrm{N}N次可以解相干信号的个数为 2L2 \mathrm{L}2L个, 最大情况下,两者相等所以 M−L=2L\mathrm M- \mathrm L=2 \mathrm LM−L=2L,也就是 L=M/3;\mathrm{L}=\mathrm{M} / 3 ;L=M/3; 所以 2L=2M/3,2 \mathrm{L}=2 \mathrm{M} / 3,2L=2M/3, 所以前/后向空间平滑最大可以解相干的信号个数为2M/32 \mathrm{M} / 32M/3 个。所以说采用前/后向空间平滑的改进技术可以很大地提高阵列孔径。
MATLAB代码
% fbss.m
% Code For Music Algorithm Based On Forward And Backward Spatial Spectrum
% The Signals Are All Coherent
% Author:痒羊羊
% Date:2020/10/29clc; clear all; close all;
%% -------------------------initialization-------------------------
f = 500; % frequency
c = 1500; % speed sound
lambda = c/f; % wavelength
d = lambda/2; % array element spacing
M = 20; % number of array elements
N = 100; % number of snapshot
K = 6; % number of sources
L = 10; % number of subarray
L_N = M-L+1; % number of array elements in each subarray
coef = [1; exp(1i*pi/6);... exp(1i*pi/3); exp(1i*pi/2);... exp(2i*pi/3); exp(1i*2*pi)]; % coherence coefficient, K*1
doa_phi = [-30, 0, 20, 40, 60, 75]; % direction of arrivals%% generate signal
dd = (0:M-1)'*d; % distance between array elements and reference element
A = exp(-1i*2*pi*dd*sind(doa_phi)/lambda); % manifold array, M*K
S = sqrt(2)\(randn(1,N)+1i*randn(1,N)); % vector of random signal, 1*N
X = A*(coef*S); % received data without noise, M*N
X = awgn(X,10,'measured'); % received data with SNR 10dB%% reconstruct convariance matrix
%% calculate the covariance matrix of received data and do eigenvalue decomposition
Rxx = X*X'/N; % origin covariance matrix
H = fliplr(eye(M)); % transpose matrix
Rxxb = H*(conj(Rxx))*H;
Rxxfb = (Rxx+Rxxb)/2;
Rf = zeros(L_N, L_N); % reconstructed covariance matrix
for i = 1:LRf = Rf+Rxxfb(i:i+L_N-1,i:i+L_N-1);
end
Rf = Rf/L;
[U,V] = eig(Rf); % eigenvalue decomposition
V = diag(V); % vectorize eigenvalue matrix
[V,idx] = sort(V,'descend'); % sort the eigenvalues in descending order
U = U(:,idx); % reset the eigenvector
P = sum(V); % power of received data
P_cum = cumsum(V); % cumsum of V%% define the noise space
J = find(P_cum/P>=0.95); % or the coefficient is 0.9
J = J(1); % number of principal component
Un = U(:,J+1:end);%% music for doa; seek the peek
dd1 = (0:L_N-1)'*d;
theta = -90:0.1:90; % steer theta
doa_a = exp(-1i*2*pi*dd1*sind(theta)/lambda); % manifold array for seeking peak
music = abs(diag(1./(doa_a'*(Un*Un')*doa_a))); % the result of each theta
music = 10*log10(music/max(music)); % normalize the result and convert it to dB%% plot
figure;
plot(theta, music, 'linewidth', 2);
title('Music Algorithm For Doa', 'fontsize', 16);
xlabel('Theta(°)', 'fontsize', 16);
ylabel('Spatial Spectrum(dB)', 'fontsize', 16);
grid on;
因为前/后向空间平滑的改进技术很大地提高了阵列孔径,从以上的DOA结果图可以看出分辨率提高了。
参考论文:《阵列信号处理相关技术研究,陈四根》
代码Code均为原创。
欢迎转载,表明出处。
基于空间平滑MUSIC算法的相干信号DOA估计(2)相关推荐
- 基于空间平滑MUSIC算法的相干信号DOA估计(1)
空间平滑MUSIC算法(1) 1. 前言 在上一篇博客中有提到,当多个入射信号相干时,传统MUSIC算法的效果就会不理想.具体原因是多个入射信号相干时,有部分能量就会散发到噪声子空间,使得MUSIC算 ...
- 基于matlab的相干信号的doa 估计,基于空间平滑MUSIC算法的相干信号DOA估计(1)
基于空间平滑MUSIC算法的相干信号DOA估计(1) 基于空间平滑MUSIC算法的相干信号DOA估计(1) 空间平滑MUSIC算法(1) 在上一篇博客中有提到,当多个入射信号相干时,传统MUSIC算法 ...
- 【压缩感知】基于matlab压缩感知理论的窄带信号DOA估计【含Matlab源码 2616期】
⛄一.压缩感知理论 阵列信号波达方向(Direction ofArrival,DOA)估计是阵列信号处理领域中主要研究内容之一,广泛应用于军事及民用领域.基于压缩感知理论的稀疏重构算法的阵列信号DOA ...
- 弱小目标检测跟踪算法研究(7) 基于简单平滑滤波算法的红外弱小目标检测之背景抑制
基于简单平滑滤波算法的红外弱小目标检测之背景抑制 1. 前言 2. 平滑滤波算法 3. Matlab仿真 4. 小结 1. 前言 红外图像中的弱小目标,目标属性包涵"弱"和&quo ...
- 阵列信号DOA估计系列(二).导向矢量与空间FFT(附代码)
阵列信号DOA估计系列(二).导向矢量 在DOA估计里面,经常会看到导向矢量这个名词,也有的地方叫方向矢量,方向矩阵,基本上都是array steering vector 的翻译. 本文首先对均匀线阵 ...
- 阵列信号DOA估计系列(三).MVDR/Capon波束形成(附代码)
标题阵列信号DOA估计系列(三).MVDR/Capon波束形成 MVDR算法得基本思路是在频域/空间形成一个窄带滤波器,从此出发,可见MVDR不但对噪声有抑制作用,来对观察频率/角度之外的信号有抑制作 ...
- 宽带信号doa matlab,宽带信号DOA估计处理方法研究
学术研究 DOI:10. 3969/j. issn. 1001-3824. 2012. 06. 008 宽带信号 DOA 估计处理方法研究 收稿日期:2012-06-14 闫 杰1,周 围1,2,杜晓 ...
- 阵列信号DOA估计系列(一).概述
阵列信号DOA估计系列 之 概述 1.从相位差说起 2.空间相位差的来源 3.从"空间相位差"到"DOA估计" 3.1 时域 3.2 空域 3.3 DOA估计 ...
- matlab paticalcoff,关于DOA估计中加权前后向空间平滑算法的仿真问题
参考论文:<相干信源波达方向估计的加权空间平滑算法> 王布宏 王永良 陈辉 武汉空军雷达学院重点实验室 武汉430010 摘 要 提出了一种用于空间相干源 DOA 估计的加权空间平滑算法 ...
最新文章
- HTTPS网络加密双向验证-使用AFNetworking封装
- 服务器中同一个【ip:port】可以多次accept的问题
- 关于Icon,Image,ImageIcon的简单的对比参考
- java 取得日期_java-如何从某个日期获取日期列表?
- linux下passwd命令设置修改用户密码的方法
- Proe5.0导出PDF至配置文件的相关方法,VC++
- spring boot 入门_玩转springboot2.x之快速入门开山篇
- 对口升学计算机知识重点,对口升学信息技术(计算机)类2017年专业课考试大纲...
- 机器学习笔记(四)BP神经网络模型
- 水库河道应急广播系统解决方案
- 练习4-11 统计素数并求和
- 软件分享 AirPlayer
- LLVM LLD COFF格式分析
- c语言else if函数的使用方法,excel if函数怎么用?excel中if函数的使用方法图文详解...
- ionic介绍以及ionic环境搭建
- Math常用的数学运算(包括取整、取绝对值、保留几位小数等)
- 木纹标识lisp_lisp_clojure.org
- Chapter 4 Part 5 WPAS扫描源码走读
- 网易NEC命名规范笔记
- smart-link monitor-link