2012年12月26日水曜日

FFT②

FFT関連の続き.
前回は

フーリエ変換で得られる複素数信号の振幅,位相は,対応する各周波数成分の振幅・位相

ということ.

で,続き.

②引数ってxだけでいいの?
③出力yの刻みってなんだっけ?

について.これを解決するためには,Matlabのfft関数で実行される離散フーリエ変換を理解する必要がある.

離散フーリエ変換とは,離散時間信号を離散化された周波数スペクトルに変換することだ.コンピュータでは離散化されたデータしか扱えないから,この変換が必要になる.

定義式は
\begin{equation}
X(k)=\sum_{n=0}^{N-1} x(n)\exp{\left(-j\frac{2\pi k}{N}n\right)}  (k=0, 1, ..., N-1)
\end{equation}

・$N$はデータ数で,$n$はデータのインデックス.$n$番目のデータは時刻$nT_s$のデータに相当.

・$x(n)$は周期$N$の信号と仮定されている.角速度的には,$N$データで$2\pi$回転すると仮定している.

・そのため,1サンプル当たりの回転量を表す正規化角周波数$\omega=2\pi/N$が基本各周波数となり,その$k$倍成分がどの程度含まれているかを示す.

時間領域でサンプリング周期が$T_s$なので,周波数領域ではサンプリング角周波数$2\pi/ T_s=\omega_s$
の周期信号となる.

・正規化角周波数の性質から,$k=0~N/2$までの成分と$k=N/2~N$の成分はN/2を軸として対称になる.つまり,$k=0~N/2$までの成分しか価値はない.$k=N$の成分がサンプリング周波数と同じ周波数成分に相当することを踏まえると,これはサンプリング定理の,サンプリング後の信号から元信号を復元するには$f_s$は信号の最大周波数の二倍より大きくなければならない,ことに相当する.


「正規化角周波数」の理屈が分かると離散フーリエ変換は理解しやすい.
これらのことから,
②引数ってxだけでいいの?
→OK.データを全部渡せばデータ数も計算してもらえる.もちろん,引数としてデータ数を与えても良い.それ以外はいらない.

③出力yの刻みってなんだっけ?
ともかく,入力信号の周期性を仮定しているから,周波数領域での正規化基本各周波数が$2\pi /N$になる事が大事.正規化角周波数はサンプル当たりの回転数だから,サンプリング周期で割ってあげれば普通の角周波数に変換できる.よって
\begin{equation}
⊿\omega = \frac{2\pi}{N} \frac{1}{T_s}
\end{equation}

になる.

2012年12月20日木曜日

FFT関連①

Matlabで周波数解析をやりたいときがたまにある.y=fft(x)って書くんだけど,書いた後にいつもいくつかの疑問を持つ.

①出力されるyは複素数.絶対値をとったのが周波数ごとの強さなのは知ってるけど,そもそもなんでx実数なのに複素数なんだっけ?
②引数ってxだけでいいの?
③出力yの刻みってなんだっけ?

毎回調べて解決はするんだけど,僕は記憶力が残念なのですぐ忘れてしまうのです.
で,調べるのにいろんなサイト回るのが大変なのでここに答えをまとめておきます.

①フーリエ変換で得られる複素数の意味

\begin{equation}
F(ω) = \int_{-∞}^{∞} f(t)\exp(-j\omega t)dt
\end{equation}

定義式.
ある信号を周期無限大とみなしてフーリエ級数展開したときのフーリエ級数として導出される.ということで,周期$T_0$の信号$f(t)$複素フーリエ級数展開が次式.


\begin{equation}
f(t) = \sum_{k=-∞}^{∞}F_k \exp({jkω_0t}) \ \ \ \ \ ω_0 = 2\pi / T_0
\end{equation}

$F_k$がフーリエ変換に対応する.定義式はどうせ覚えられない書かないけど,共役かければ対応する周波数以外全部消えるから導出できます.

こっから大事.

フーリエ変換後に得られる信号の,複素数としての解釈.式(2)より,$F_k$の振幅と位相が各周波数成分の振幅と位相に対応していることが分かる.ここで,位相は初期位相$(t=0)$のこと.

フーリエ変換で得られる複素数信号の振幅,位相は,変換前の信号に含まれる各周波数成分の振幅・位相に対応する

正負の周波数成分の意味

負の周波数の解釈.
式(2)を見ると,負の周波数成分が存在する.これは,上図の時計回り成分を示している訳だが,フーリエ級数展開では $F_k \exp({jkω_0t})$の成分と$F_{-k} \exp({-jkω_0t})$の和を取ると虚部が打ち消しあうような関係になっている.もちろんy(t)が実数ならだけど.

負の周波数は,虚部を打ち消すために存在していると考えることができる

これを踏まえると,$F_k$の意味,複素数としてのフーリエ変換の特性が見えてくる.
$F_k \exp({jkω_0t})$の成分と$F_{-k} \exp({-jkω_0t})$が打ち消しあうための条件を考える.
一つは,絶対値が等しいこと.次に,逆位相であること.これらの関係は,当然フーリエ変換でも満たされる.よって,振幅スペクトルは偶関数に,位相スペクトルは奇関数になる.

以上.②③は次回.

参考文献
http://www.ic.is.tohoku.ac.jp/~swk/lecture/yaruodsp/fs_comp.html




2012年12月19日水曜日

ガウス分布とレイリー分布

レイリー分布を二次元ガウス分布から導出.

平均0, 分散$\sigma^2$である変数$x,y$がそれぞれガウス分布に従うとき,結合分布は
\begin{eqnarray}
p(x,y)=\frac{1}{2\pi\sigma^2}\exp\left(-\frac{x^2+y^2}{2\sigma^2}\right)
\end{eqnarray}
となる.

極座標変換する.$x=A\cos(\theta), y=A\sin(\theta)$を代入するだけでなく,ヤコビアンをかけなければならないことに注意.

\begin{eqnarray}
p(A,\theta)=\frac{A}{2\pi\sigma^2}\exp\left(-\frac{A^2}{2\sigma^2}\right)
\end{eqnarray}

レイリー分布は,この結合分布における振幅Aの周辺分布である.つまり(2)を$\theta$で積分したのがレイリー分布.

\begin{eqnarray}
p_{ray}(A)=\frac{A}{\sigma^2}\exp\left(-\frac{A^2}{2\sigma^2}\right)
\end{eqnarray}

ガウス性ノイズの振幅包絡線の分布はレイリー分布に従う.
レイリー分布は1パラメータの確率密度関数.$\sigma^2$は元信号(包絡線ではない)の振幅値から計算できる分散値.レイリー分布に従う変数$A$の二乗平均は

$E[A^2=x^2+y^2]=E[x^2]+E[y^2]=2\sigma^2$

つまり,複素信号(復調後の信号)の振幅データ$A$から$\sigma^2$を推定するときには,複素信号の振幅の二乗平均を求めて2で割れば良い.

複素信号の振幅の二乗平均をパラメータ$\sigma_n^2$としてレイリー分布を表現する場合がある.その時は式(4)の形.

\begin{eqnarray}
p_{ray}(A)=\frac{2A}{\sigma_n^2}\exp\left(-\frac{A^2}{\sigma_n^2}\right)
\end{eqnarray}

2012年12月18日火曜日

はじめに

主に研究で必要になった知識を載せていきます.自分の備忘録としての活用が第一目的です.
たまに変なことも書くかもしれません.