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}
になる.
0 件のコメント:
コメントを投稿