お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-09-04 22:24:21

n-takahashi
メンバ
登録日: 2009-09-15

FFTの結果が2通り Excel2007/Octave3.2.4

 先月終わり頃からホームページを作り始めて、高速フーリエ変換(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に詳しい方がいましたら、教えていただきたいです。

オフライン

 

#2 2011-09-05 00:10:03

hmatsue
アドバイザ
登録日: 2009-03-10

Re: FFTの結果が2通り Excel2007/Octave3.2.4

# Ubuntuフォーラムで扱い話題かな、という気もしますが。。

学生時代に聞いたことはあるような気がします(笑)が中身は全く覚えていません。
ifftした結果と一致するようですので、fftとifftをキーワードに調査してみてはいかがでしょう。

オフライン

 

#3 2011-09-05 11:09:58

n-takahashi
メンバ
登録日: 2009-09-15

Re: FFTの結果が2通り Excel2007/Octave3.2.4

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に詳しい方がいましたら、教えていただきたいです。

オフライン

 

#4 2011-09-20 23:55:54

H_MU
新しいメンバ
登録日: 2011-09-20

Re: FFTの結果が2通り Excel2007/Octave3.2.4

>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のフーリエ変換関数にしても、フーリエ変換した結果は本来のフーリエ係数の
データ数倍になっています。なので、フーリエ変換関数で得られた結果をデータ数で割るという操作を自分
でする必要があります。この逆で、フーリエ逆変換する時には、データ数倍にしておかないと元にはもどり
ません。

オフライン

 

Board footer

Powered by FluxBB