
Ubuntu日本語フォーラム

ログインしていません。
先月終わり頃からホームページを作り始めて、高速フーリエ変換(FFT)について記事を書こうと思い本「今日から使えるフーリエ変換 三谷政昭 講談社サイエンティフィック」を開きました。その中にExcelでのFFT(計算データ数4個)の計算方法が示してありました。同じ入力データを使ってOctave3.2.4でもfftを実行してみましたが、結果が同じにならないので困ってしまいました。
a=[2;2;8;-4]と入力し、fft(a)とすると
ans= 8 + 0i
-6 - 6i
12 + 0i
-6 + 6i
と表示されます(Octave3.2.4).
Excel2007ですと
ans=-1.5 + 1.5i
2 + 0i
-1.5 - 1.5i
3 + 0i
という結果になります。(同じ形式にした場合)。Excel2007の場合行列の積をデータ数で割っていますが、Octaveではそれがないのでしょうか。どなたかfftに詳しい方がいましたら、教えていただきたいです。
オフライン
# Ubuntuフォーラムで扱い話題かな、という気もしますが。。
学生時代に聞いたことはあるような気がします(笑)が中身は全く覚えていません。
ifftした結果と一致するようですので、fftとifftをキーワードに調査してみてはいかがでしょう。
オフライン
n-takahashi による投稿:
先月終わり頃からホームページを作り始めて、高速フーリエ変換(FFT)について記事を書こうと思い本「今日から使えるフーリエ変換 三谷政昭 講談社サイエンティフィック」を開きました。その中にExcelでのFFT(計算データ数4個)の計算方法が示してありました。同じ入力データを使ってOctave3.2.4でもfftを実行してみましたが、結果が同じにならないので困ってしまいました。
a=[2;2;8;-4]と入力し、fft(a)とすると
ans= 8 + 0i
-6 - 6i
12 + 0i
-6 + 6i
と表示されます(Octave3.2.4).<さらにExcelのアドインでフーリエ変換したところ、上記の結果と同じになりました。>
Excel2007ですと
ans=-1.5 + 1.5i
2 + 0i
-1.5 - 1.5i
3 + 0i
という結果になります。(同じ形式にした場合)。Excel2007の場合行列の積をデータ数で割っていますが、Octaveではそれがないのでしょうか。どなたかfftに詳しい方がいましたら、教えていただきたいです。
オフライン
>a=[2;2;8;-4]と入力し、fft(a)とすると
>ans= 8 + 0i
> -6 - 6i
> 12 + 0i
> -6 + 6i
>
>と表示されます(Octave3.2.4).
>
>Excel2007ですと
>ans=-1.5 + 1.5i
> 2 + 0i
> -1.5 - 1.5i
> 3 + 0i
>
>という結果になります。(同じ形式にした場合)。Excel2007の場合行列の積をデータ数で割っていますが、
>Octaveではそれがないのでしょうか。どなたかfftに詳しい方がいましたら、教えていただきたいです。
まず、Excel2007の分析ツールのフーリエ解析をそのまま適用するとOctaveと同じ答えが得られます。
質問者の方が書かれているのは、Excel2007上でフーリエ変換した結果をデータ数で割った結果という
ことかと思いますがどうでしょうか(でも、順番が違っているように思います)?あるいは、定義式に忠実に
計算を実行した?
OctaveにしてもExcel2007のフーリエ変換関数にしても、フーリエ変換した結果は本来のフーリエ係数の
データ数倍になっています。なので、フーリエ変換関数で得られた結果をデータ数で割るという操作を自分
でする必要があります。この逆で、フーリエ逆変換する時には、データ数倍にしておかないと元にはもどり
ません。
オフライン