基于MATLAB的均勻面陣MUSIC算法DOA估計仿真
文章目錄
- 前言
- 一、二維MUSIC算法原理
- 二、二維MUSIC算法MATLAB仿真
- 三、MATLAB源代碼
- 總結
前言
\;\;\;\;\; 在波達角估計算法中,MUSIC 算法與ESPRIT算法屬于特征結構子空間算法,是波達角估計算法中的基石。在前面的文章 一文讀懂MUSIC算法DOA估計的數學原理并仿真 中詳細介紹了一維MUSIC算法即線陣MUSIC算法DOA估計的原理及仿真,本文將介紹二維MUSIC算法即均勻面陣的MUSIC算法DOA估計原理及MATLAB仿真。
提示:以下是本篇文章正文內容,尊重版權,引用請附上鏈接。
一、二維MUSIC算法原理
下圖為面陣入射信號模型,
?
\;\;\;\;\; 假設從遠場有 K K K 個互不相關的窄帶信號,入射到一個陣元個數為 M × N M×N M×N 的平面陣列上。記第 i i i個入射信號的方位角和俯仰角分別為 θ i \theta_i θi?和 φ i \varphi_i φi? ,則陣列接收信號可以表示為:
z ( t ) = A s ( t ) + n ( t ) \boldsymbol{z}(t)=\boldsymbol A \boldsymbol s(t)+\boldsymbol n(t) z(t)=As(t)+n(t)其中 A \boldsymbol A A是維度為(MN×K)的均勻矩形陣列的陣列流形,可以表示為如下所示的式子:
A = [ a ( θ k , φ 1 ) , a ( θ 2 , φ 2 ) , ? , a ( θ K , φ K ) ] T \mathbf{A}=\begin{bmatrix}\boldsymbol{a}(\theta_k,\varphi_1),\boldsymbol{a}(\theta_2,\varphi_2),\cdots,\boldsymbol{a}(\theta_K,\varphi_K)\end{bmatrix}^T A=[a(θk?,φ1?),a(θ2?,φ2?),?,a(θK?,φK?)?]T a ( θ k , φ k ) \boldsymbol{a}(\theta_k,\varphi_k) a(θk?,φk?)為第k個入射信號的導向矢量,僅僅由陣列的陣元排布和參考陣元的選擇所決定,用公式可以表示為:
a ( θ k , φ k ) = a x ( θ k , φ k ) ? a y ( θ k , φ k ) ∈ C M N × 1 \boldsymbol{a}(\theta_k,\varphi_k)=\boldsymbol{a}_x(\theta_k,\varphi_k)\otimes\boldsymbol{a}_y(\theta_k,\varphi_k)\in C^{MN\times1} a(θk?,φk?)=ax?(θk?,φk?)?ay?(θk?,φk?)∈CMN×1 其中 ? \otimes ?表示的是克羅內克內積(Kronecker Product), a x ( θ k , φ k ) \boldsymbol{a}_x(\theta_k,\varphi_k) ax?(θk?,φk?)表示x軸方向上均勻線陣接收信號的方向矢量, a y ( θ k , φ k ) \boldsymbol{a}_y(\theta_k,\varphi_k) ay?(θk?,φk?)表示y軸方向上均勻線陣接收信號的方向矢量,可分別寫為如下數學表達式:
a x ( θ k , φ k ) = [ a x , 0 ( θ k , φ k ) , a x , 1 ( θ k , φ k ) , ? , a x , M ? 1 ( θ k , φ k ) ] T \boldsymbol{a}_x(\theta_k,\varphi_k)=\begin{bmatrix}a_{x,0}(\theta_k,\varphi_k),a_{x,1}(\theta_k,\varphi_k),\cdots,a_{x,M-1}(\theta_k,\varphi_k)\end{bmatrix}^T ax?(θk?,φk?)=[ax,0?(θk?,φk?),ax,1?(θk?,φk?),?,ax,M?1?(θk?,φk?)?]T a y ( θ k , φ k ) = [ a y , 0 ( θ k , φ k ) , a y , 1 ( θ k , φ k ) , ? , a y , N ? 1 ( θ k , φ k ) ] T \boldsymbol{a}_y(\theta_k,\varphi_k)=\begin{bmatrix}a_{y,0}(\theta_k,\varphi_k),a_{y,1}(\theta_k,\varphi_k),\cdots,a_{y,N-1}(\theta_k,\varphi_k)\end{bmatrix}^T ay?(θk?,φk?)=[ay,0?(θk?,φk?),ay,1?(θk?,φk?),?,ay,N?1?(θk?,φk?)?]T 式中的 s ( t ) \mathbf{s}(t) s(t)是信號源矢量, n ( t ) \mathbf{n}(t) n(t)為高斯白噪聲矢量,服從 N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2)分布,可以分別表示如下式子:
s ( t ) = [ s 0 ( t ) , s 1 ( t ) , ? , s K ? 1 ( t ) ] T \mathbf{s}(t)=\left[\mathbf{s}_0(t),\mathbf{s}_1(t),\cdots,\mathbf{s}_{K-1}(t)\right]^T s(t)=[s0?(t),s1?(t),?,sK?1?(t)]T n ( t ) = [ n 0 ( t ) , n 1 ( t ) , ? , n M N ( t ) ] T \mathbf{n}(t)=\left[\mathbf{n}_0(t),\mathbf{n}_1(t),\cdots,\mathbf{n}_{MN}(t)\right]^T n(t)=[n0?(t),n1?(t),?,nMN?(t)]T \;\;\;\;\; 陣列接收信號的協方差矩陣可以表示為: R = E [ z z H ] \mathbf{R} = \mathbb{E}[\mathbf{z}\mathbf{z}^H] R=E[zzH] = A E [ s s H ] A H + σ 2 I = \mathbf A\mathbb{E}[\mathbf{s}\mathbf{s}^H]\mathbf A^H + \sigma^2\mathbf{I} =AE[ssH]AH+σ2I = A R S A H + σ 2 I =\mathbf A \mathbf R_S\mathbf A^H + \sigma^2\mathbf{I} =ARS?AH+σ2I 其中 R S \mathbf{R}_S RS?表示入射信號的協方差矩陣, σ 2 I \sigma^2\mathbf{I} σ2I表示功率為 σ 2 \sigma^2 σ2的高斯白噪聲的協方差矩陣。
\;\;\;\;\; 實際應用中天線陣列獲取的信息是有限次的快拍,因此只能得到協方差矩陣的估計值 R ^ \hat{\mathbf{R}} R^,其計算公式如下:
R ^ = 1 J ∑ j = 1 J z ( j ) z H ( j ) \hat{\mathbf{R}} = \frac{1}{J}\sum_{j=1}^{J}\mathbf{z}(j)\mathbf{z}^H(j) R^=J1?j=1∑J?z(j)zH(j) \;\;\;\;\; 由于接收信號的協方差矩陣 R \mathbf{R} R是對稱矩陣,因此可以對其進行特征值分解,可以得到:
R = U Λ U T \mathbf{R} = \mathbf{U}\boldsymbol{\Lambda}\mathbf{U}^T R=UΛUT 其中 U \mathbf{U} U為 R \mathbf{R} R的特征向量構成的矩陣, Λ \boldsymbol{\Lambda} Λ是一個由特征值構成的對角矩陣。
Λ = d i a g { λ 1 , λ 2 , . . . , λ M N } \boldsymbol{\Lambda} = diag\{ \lambda_1,\lambda_2,...,\lambda_{MN} \} Λ=diag{λ1?,λ2?,...,λMN?} \;\;\;\;\; 假設對角矩陣中的特征值降序排列,滿足如下關系:
λ 1 ≥ λ 2 ≥ ? ≥ λ K > λ K + 1 = ? = λ M N = σ 2 \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_K > \lambda_K + 1 = \cdots = \lambda_{MN} = \sigma^2 λ1?≥λ2?≥?≥λK?>λK?+1=?=λMN?=σ2 由前 K K K個較大的特征值構成的對角矩陣 Λ S \boldsymbol{\Lambda}_S ΛS?,其對應的特征向量構成的矩陣 U S \mathbf U_S US?為信號子空間。由后 M ? K M-K M?K個較小的特征值構成的對角矩陣 A N \mathbf A_N AN?,其對應的特征向量構成的矩陣 U N \mathbf U_N UN?為噪聲子空間。
\;\;\;\;\; 根據前文假設,信號與噪聲相互獨立,因此信號子空間與噪聲子空間是相互正交的,故信號陣列流矢量與噪聲子空間也具有正交性。同一維MUSIC算法一樣,可構造二維空間譜函數:
P 2 D ? M U S I C ( θ , ? ) = 1 a H ( θ , ? ) U N U N H a ( θ , ? ) P_{2D-MUSIC}(\theta, \phi) = \frac{1}{\mathbf a^{H}(\theta, \phi) \mathbf U_N \mathbf U_N^{H} \mathbf a(\theta, \phi)} P2D?MUSIC?(θ,?)=aH(θ,?)UN?UNH?a(θ,?)1? \;\;\;\;\; 當天線陣列的方向矢量與噪聲子空間近似正交時,上式分母部分取極小值,空間譜函數在此時取得極大值,得到空間譜的譜峰。對空間譜進行譜峰搜索,就能夠得到入射信號的方位角與俯仰角的角度,至此完成了對于信源的二維 DOA估計。
二、二維MUSIC算法MATLAB仿真
\;\;\;\;\; 參數設置如下:改變任何一個參數,仿真結果都會跟著改變,可以通過修改參數觀察不同條件對估計結果的影響。
M=3; % x軸陣元個數
N=2; % y軸陣元個數
K=1024; % 快拍數
fc=100e+6; % 載波
fs=300e+6; % 采樣頻率
Pn=1; % 噪聲功率fines=[45 180 250 300]; % 信號入射方位角
thetas=[5 30 55 75]; % 信號入射俯仰角
signal_f=[15e6 30e6 45e6 60e6]; % 信號頻率
signal_SNR=[30 30 30 30]; % 信噪比m=(0:M-1)'; % x軸坐標
n=(0:N-1)'; % y軸坐標
c=3e+8; % 光速
lamda=c/fc; % 波長
dx=1/2*lamda; % x軸陣元間距
dy=1/2*lamda; % y軸陣元間距
\;\;\;\;\; 通過觀察參數,可以得出以下結論,可以自己通過改變參數來驗證,這里就不貼圖了。
1、隨著陣元數目的增大,MUSIC 算法的分辨率逐漸增強。
2、隨著信號信噪比的增大,MUSIC 算法的分辨率逐漸增強。
3、當陣元間距與波長的比值為二分之一時,MUSIC算法能夠有效進行 DOA 估計;當陣元間距小于波長的二分之一時,MUSIC 算法的分辨率會降低;當陣元間距大于波長的二分之一時,由于采樣嚴重不足,MUSIC算法可能會喪失分辨能力。
三、MATLAB源代碼
均勻面陣MUSIC算法DOA估計MATLAB仿真源代碼
總結
\;\;\;\;\; 以上就是今天記錄的所有內容,分享了均勻面陣MUSIC算法DOA估計的原理及其在MATLAB軟件上仿真的結果。