前回に引き続き方位推定をやります。
読んでない方は前回のを先に!
前回は、昔からある方位推定の手法を書きました。
昔からあるからと言って今は用なしかというと、全くそんなことはないんですが
一応時系列順に並べると昔だったので、そう書きました。
今回は数学レベルもちょっとだけ上がって、固有値を使う方法!
- Pisarenko法
- MUSICアルゴリズム
今日は短いです。だってこれが先端なんですもん。
#Pisarenko法
Pisarenko法の前に、最小ノルム法の説明です。この2つはほぼ説明が一緒なので、最小ノルム法の説明ですと強調しておきます。前回のLP法のウェイトを求める時、ウェイトに関する拘束条件をつけて、その下で出力を最小化するということをしました。
拘束条件がある理由は$\boldsymbol{W}=0$の自明な解を除くためです。なので、どんな条件でもというのは言い過ぎですが、ある程度自由に拘束条件を設定でき、ウェイトノルム一定の条件でもいいのです。その時
\underset{\boldsymbol{W}}{min}\left(P_{out}=\cfrac{1}{2}\boldsymbol{W}^HR_{xx}\boldsymbol{W}\right)\\
subject\ to\ \boldsymbol{W}^H\boldsymbol{W}=1
今回は真面目に解くのですが、この問題は、ラグランジュの未定係数法から、以下の評価関数を最小化することと等しいです。
Q(\boldsymbol{W})=\cfrac{1}{2}\boldsymbol{W}^HR_{xx}\boldsymbol{W}+\cfrac{\lambda}{2}(1-\boldsymbol{W}^H\boldsymbol{W})
$\lambda$は未定係数ですね。波長じゃないです。
評価関数は、ウェイトに関する2次関数と捉えられるので、ウェイトに関して勾配をとって、ゼロになったら最小値です。
\nabla_{\boldsymbol{W}}Q(\boldsymbol{W})=R_{xx}\boldsymbol{W}-\lambda\boldsymbol{W}=0\\
R_{xx}\boldsymbol{W}=\lambda\boldsymbol{W}
ここでピンときた方はいっぱいいそうですね。$\boldsymbol{W}$は$R_{xx}$の固有ベクトル、$\lambda$は固有値ですね。したがって、これを満たす$\boldsymbol{W}, \lambda$は素子数と同じ$K$こ存在します。
出力最小化問題でしたから、$P_{out}$を考えてみます。
2P_{out}=\boldsymbol{W}^HR_{xx}\boldsymbol{W}=\lambda\boldsymbol{W}^H\boldsymbol{W}=\lambda,\ (\boldsymbol{W}^H\boldsymbol{W}=1)
よって最も小さい固有値に対応する$\boldsymbol{W}$が今回求めたいウェイトです。
P_{MN}(\theta)=\cfrac{1}{|\boldsymbol{W}^H_{MN}\boldsymbol{a}(\theta)|^2}
これが最小ノルム法で、最小固有値一つだけを用いて推定するのがPisarenko法です。
Pisarenko法は、ウェイトの掛け方のおかげでLP法よりもダイナミクスレンジが大きいですが、LP法と同様に、到来波がない方向にピークを向けることがあります。結果はあとでまとめて見せます。
#MUSICアルゴリズム
MUSICはPisarenko法のアレンジ版で、固有ベクトルを複数使う方法です。
やり方としてはPisarenko法の並列接続みたいな方法ですね。
Pisarenko法では最小の固有値のみ使いましたが、不要なピークが経つのはこのせいで、これを防ぐのがMUSICです。
MUSICは複数の固有値を使うのですが、そのせいで到来波の数を予測する必要があります。
到来波数が既知であるとして進めますが、例えば固有値が4つ($R_{xx}$のランクと同じ数)、到来波が2つのとき、残り2つの固有値が雑音成分となっています。Pisarenkoは雑音成分の固有値を1つしか使わなかったので不要ピークが出てしまいます。MUSICは全雑音成分を使ってピークをたてるので、不要ピークが立ちません。
詳しく解説します。
前にも説明しましたが、モードベクトル$\boldsymbol{a}(\theta)$は、波の到来方向に応じた、アンテナの位相を示すベクトルでした。したがって、$\theta_{1}$方向から電力$P_1$の波が来た時、相関行列は以下のように表せます。
R_{xx}=P_1\boldsymbol{a}(\theta_1)^H\boldsymbol{a}(\theta_1)
複数の到来波があるときは、到来波の加算になり、雑音が加わるとこうなります。
R_{xx}=P_1\boldsymbol{a}(\theta_1)\boldsymbol{a}(\theta_1)^H+P_2\boldsymbol{a}(\theta_2)\boldsymbol{a}(\theta_2)^H+P_3\boldsymbol{a}(\theta_3)\boldsymbol{a}(\theta_3)^H+\sigma^2\boldsymbol{I}\\
=
\begin{bmatrix}
\boldsymbol{a}(\theta_1),\boldsymbol{a}(\theta_2),\boldsymbol{a}(\theta_3)
\end{bmatrix}
\begin{bmatrix}
P_1&0&0\\
0&P_2&0\\
0&0&P_3
\end{bmatrix}
\begin{bmatrix}
\boldsymbol{a}(\theta_1),\boldsymbol{a}(\theta_2),\boldsymbol{a}(\theta_3)
\end{bmatrix}
^H+\sigma^2\boldsymbol{I}\\
=ASA^H+\sigma^2\boldsymbol{I}
$\sigma$は熱雑音です。これの固有値を求めてみると、
R_{xx}\boldsymbol{e}_i=(ASA^H+\sigma^2\boldsymbol{I})\boldsymbol{e}_i=(\mu_i+\sigma^2)\boldsymbol{e}_i=\lambda_i\boldsymbol{e}_i
$\mu$は熱雑音のない時の固有値ですが、固有ベクトルには無関係ですね。PisarenkoとMUSICは熱雑音の有無によって固有値が変わらないので、原理的に熱雑音が推定精度に影響しません。前回の手法よりも優れているのはこのためです。固有値は
\lambda_1>\lambda_2>\cdots>\lambda_N=\cdots=\lambda_K
のように大きい順に並んでるものとしています。
固有値を使うので、$R_{xx}$のランクの数、つまりは受信アンテナの数$K$だけ方向推定できます。到来波数$N$が $N<K$のとき、余った$K-N$この固有値は雑音成分です。MUSICではこの雑音成分
P_{MN1}=\cfrac{1}{|\boldsymbol{e}_{N+1}\boldsymbol{a}(\theta)^H|^2}\\
P_{MN2}=\cfrac{1}{|\boldsymbol{e}_{N+2}\boldsymbol{a}(\theta)^H|^2}\\
\vdots\\
P_{MN(K-N)}=\cfrac{1}{|\boldsymbol{e}_{K-N}\boldsymbol{a}(\theta)^H|^2}
を
P_{MUSIC}=\cfrac{1}{\cfrac{1}{P_{MN1}}+\cfrac{1}{P_{MN2}}+\cdots+\cfrac{1}{P_{MN(K-N)}}}
というように接続して出力電力とします。ここで、これまで登場した手法を全部並べましょう。30,40deg方向から波を入れて、MUSICでは到来波数がわかっているものとします。
試行回数を重ねていくとこのような時が出てきます。PisarenkoとMUSICはほぼ同じダイナミックレンジですが、Pisarenkoは余計なピークがあります。たまにこうなるのですが、MUSICは全くなりません。
ただMUSICは、到来波数を予測しなきゃいけないので、そのアルゴリズムも積まなきゃいけないのです。
#まとめ
今日のはめっちゃわかりにくいですね。
書き方が整理できていないのが悪いんですけど、固有値を使うと熱雑音を排除できるということが強いと思っていただければと思います。