解釈がややこしいから。
数学のフーリエ変換を単に離散化して計算するだけならだれでもできます。
ですが結果は複素数値になるはずです。
そこで数学を少しかじった人なら立ち止まるかひっかかるはずです。
たちどまって、さらに悩むかもしれません。
あれ?変換前の数値列って実数でよかったっけ?
心配性のプログラマ気質のある人なら、
そうか。逆変換かけて元に戻れば計算はOKのはずだね
と遠回りをします。
しかし変換→逆変換して元に戻ることは、変換および逆変換が正しいことを示しませんね(笑
すこし分かっている人で周波数分析をしたいだけなら、
パワースペクトルは、変換結果の複素数値の絶対値を求めればよい。つまり二乗和の平方根じゃね?
と分かるはずです。
ほかにも実際の適用にはもっと細かい問題が多数あります
私が過去に目撃したことがある間違いの例は以下のようなものです。
元データの全範囲を1周期2πに正規化してない(πだったり「360度」だったりする)
-π~+πなのか、0~2πなのかちゃんと決めてない(これはプログラムを拾ってくる人に多い)
結果の実数部しか見てない(まじで?)
FFTルーチンを使っているが、データ数が2の階乗になってない(ゼロ埋めでOKだけど結果の扱いがナニ)
そんな中でも腰を抜かしそうになったのは、以下の「データ圧縮技法」です。
元データをFFTにかける(3万2千点くらいの実測データ)
パワースペクトルの1024番目以降のデータをゼロ埋めする
0~1023番目のデータを「元データの平滑化特徴数」として用いる
それで32KBの測定データを1KBバイトに圧縮しているつもりの人たちが10人くらいいて、それで立派にご商売されていました。
ぶっちゃけ、
こんな連中と関わっていたらそのうちエライ目にあうんだろうな
という感想しかありませんでしたけど。
コメント