• ベストアンサー

MS-EXCELのフーリエ解析について

自分で作成したFFTのプログラムを検証するためにマイクロソフトのエクセルの分析ツールにあるフーリエ解析を用いたところ、結果が合いません。 Microcal OriginというグラフソフトにもFFTの解析機能があるので、これで検証したところ、自分のプログラムと一致しました。 いろいろデータをかえて検証してみたところ、自分及びoriginの解析結果の実数部、虚数部ともに、データ個数/2をかけるとちょうどエクセルの結果と同じ値になることがわかりました(2048個のデータを用いると1024倍、16個のデータを用いると8倍)。 エクセルのフーリエ解析結果はなぜデータ個数/2がかかっているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#221368
noname#221368
回答No.3

 #1です。逆に質問めいた書き込みで申し訳ないのですが・・・。 >(時間/2)=(Δt×データ個数/2)  ファクタ2は、ナイキストあたりが関係しているのでしょうか?。だとすれば、「データ個数/2」という事自体は、けっこう一般的な気がします。  こっからはもろ予想です。じつは自分は現在プログラマーをやってまして、それ以前からMSとの付き合いは長いです(嫌になるくらい)。  その経験から言うと、   「データ個数/2」が一般的なら、必要に応じてΔtくらい自分で掛けろ!。まさにExcelなんだから簡単でしょう?. くらいの事は、MSはやりかねません。  確かにExcelは汎用なので、この態度は正しいのですが、分析ツール(Addin全般)に対する技術文書がほとんどないのが困りものです。  実際自分は、手製その他の市販ツールと結果が合わなかったために(それも大幅に)、ExcelのFFTは信じていませんでした。これには背景がありまして、グラフの近似曲線の最小二乗結果の精度が悪い、という事から、「FFTも最悪?」という偏見を持っていましたが、今回この質問に出会って、「あぁ、そういう事ですか」と了解できました。本当に「正確な技術文書」が欲しいです。  最後は愚痴っぽくなってしまいましたが、もし上記意見で納得頂けるなら、「こんな下らない事で時間を空費する」のはもったいない気がします。というのは、実際にプログラムしていると「こんな下らない仕様で時間を取らせやがって!」、などと激怒する事がけっこうあるからです。  ・・・すいません。また愚痴になっちゃいました・・・。

gogotakken
質問者

お礼

技術文書がないので、詳細はわかならいということですね。 それでは仕方ないですね。 大変参考になりました。回答ありがとうございました。

その他の回答 (2)

回答No.2

ddtddtddt様が記されているように、全ては流儀の違いでしょう。 連続関数のフーリエ変換も離散データのフーリエ変換も、正規化というのか、スケーリングの取り方はいろいろです。離散フーリエですと(FFTに限らず)、Σなんたらの計算のあとそれらをデータ点数で割るのもあるし、データ点数の平方根で割るのもあるし、割らないのもあるというわけで。この流儀の違いにより、フーリエ面の振幅自乗値の総和が元データの振幅自乗値の総和と等しくなったり、フーリエ面の振幅自乗値の平均が元データの振幅自乗値の総和と等しくなったりします。どういうのが好ましいかは分野とかその人の考え方次第というわけでしょう。 ただし、違いが「データ個数/2」であって「データ個数」ということですが、ファクタ2の違いはどこから来たものかは見当が付きません。

gogotakken
質問者

お礼

>全ては流儀の違いでしょう。 >ファクタ2の違いはどこから来たものかは見当が付きません。 ちなみに自分の分野では、一般的に(時間/2)=(Δt×データ個数/2)をかけるのが行われています(よって振幅の単位は実測単位に時間がかかったものとして表示する)。それは自分の分野での流儀であることを知っていたので、今回作ったプログラムは何もかけないものにしましたはずなのですが、エクセルと結果が一致しないので。 エクセルのような広く使われているソフトにある機能なので、どの分野の流儀が使われいるのかわかれば、調べられるのですが。。。 回答ありがとうございました。

noname#221368
noname#221368
回答No.1

 最近FFTをやっていないので、正確な事は忘れましたが、通常のFFTの流儀では、いわばフーリエ係数に、Δt=[時間幅]/[サンプリング数]を掛けてフーリエ振幅とする、のでしたっけ?。  自分は、Δtを掛けない結果の出し方が好きで、そうしていたら、FFTに詳しい後輩からお叱りを受けました。その辺りの流儀の差ではないでしょうか?。

gogotakken
質問者

お礼

>フーリエ係数に、Δt=[時間幅]/[サンプリング数]を掛けて単位周波数当たりで基準化する(サンプリング周波数で割る)というのは、パワースペクトルで行うのはよく行われていますが、フーリエ自体でも行うのですね。 ただし、今回の件はむしろサンプリング数がかかっているので、どのような流儀・分野で行う方法なのかよくわかりませんでした。 回答ありがとうございました。

関連するQ&A

  • エクセルでのフーリエ解析について

    ある実験データをエクセルのフーリエ解析ツールで解析したのですが、 出てきた複素数の値をどのような式にあてはめれば、 フーリエ級数を求められるのでしょうか? ※FFTでフーリエ級数を求めて、データ間の補間に使用したいと考えています。参考書などを見ても、パワースペクトルを求めるところまでしか書ていないので・・・

  • Excelのフーリエ解析

    Excelを使ったフーリエ解析についてお聞きします。 例えば, 時間 0.1 0.2 0.3 0.4 0.5 ・・・(2の偶数乗個のデータ) 強度 0  0 1  0 5 ・・・(2の偶数乗個のデータ) というような時間-周波数テーブルがあると仮定します。このテーブルをExcelのフーリエ解析を使って,周波数-強度のテーブルに変換できますか?  具体的な手順を教えていただけたら助かります。  大学のときに,FFTのプログラムがあって,似たようなことをやっていたのを見たことがあるのですが,Excelを使うのは初めてです。ご存じの方がいたら教えて下さい。

  • フーリエ解析

    エクセルでフーリエ解析を行って、周波数-パワースペクトルグラフを作りたいのですが、パワースペクトルの計算方法がいまいちよくわかりません。 フーリエ解析すると、複素数で結果が出ますが、このあとが・・・ どなたか教えていただけませんか??

  • フーリエ変換後の解析について

    フーリエ変換後の解析について ある振動の波形を測定していたとします。 No.1 最初は特に何も振動を加えず、ありのままを測定したとします。 No.2 そして次に周期的に弱い振動を与えたとします。 1と2の結果得られた振動波形を見比べた結果、ほとんど違いは見られなかった場合 FFT解析を行う意味はあるのでしょうか? 波形にほとんど違いがなかったということは本当に微妙な振動が加わっただけということですよね? そんな微妙な違いしかない結果をFFTしたところでほとんどスペクトルにも差がでないと思うのですが・・・。 それともたとえ微妙であっても周期的に加えてる以上どこかしらにピークがでてくるものなのでしょうか?

  • 運動のフーリエ解析について

    数学的手法には初心者なので困っています。 現在、プランクトンの運動解析を行っています。水平方向をX軸、上下動はY軸(奥行きは狭い隙間なので無視)として、30fpsで動画を撮影し、1コマごとの移動度を座標間の引き算で計算して、X、Y方向それぞれの移動度を求め、その各コマ間の移動度のデータをFFTで解析して、運動の周期性を検出して、シミュレーションプログラムを作成しようとしています。  しかし、ここで疑問点が三つ 1) 運動の方向性も同時に検出しているので、座標間の移動度には、+と-があるのですが、この場合、負の数のデータをそのままフーリエ変換してもよいのでしょうか? それとも、例えば最大の絶対値で負方向の数を一律に底上げしたりして、正に置き換えなければならないのでしょうか? 2) 例え負の数をそのままFFTにかけたにせよ、運動の方向性は結果わからなくなりますが、この場合、運動の方向性として、例えば正の移動度と負の移動度の頻度(各コマの移動方向が正なら1負なら-1とする)をフーリエ返還して、正負の周期性を求めることは正しい方法でしょうか? 3)最後に超基本的な質問ですが、この場合、データの平均はどの数字で取るのでしょうか?  やはり移動度の生データだと、正負があるので0に近くなってしまう可能性があります。フーリエ変換結果を平均すべきなのでしょうか? それとも変換結果の絶対値を平均すべきなのでしょうか?

  • FFT解析ツールについて

    設備調査の関係で、加速度計による加速度データの収集を行いました。 このデータをFFT解析を実施しようとしています。 Excelではアドインでデータ分析ツールとしてフーリエ変換が付属していますが、 わが家のPCには予算の関係でキングソフトのOfficeをインストールしています。 キングソフトのOfficeでFFTを実施しようとすれば、手段はあるのでしょうか?

  • エクセルでのフーリエ変換

    自分は大学4年生です。卒業研究をしてる中で周波数解析をする事になりました。そこでエクセルを用いて周波数解析をしようとしたのですが、周波数解析をしたいデータは0.001秒刻みで10.239秒、つまり10239個のデータを周波数解析しなければならないのですが、エクセルでは一度に最大4096個のデータしかフーリエ変換できません。なので0~4.095秒、4.096~8.191秒、8.192~10.239秒とデータを分けて周波数解析を行おうと考えているのですが、このやり方で平気なのかわかりません。 どうかみなさんのお力を貸してください。

  • フーリエ解析

    気象学で、EXCELを用いたフーリエ解析を行っています。 非常に根本的な質問なのですが、データのサンプル数は何故2のべき乗であるべきなのでしょうか? また、出力値の複素数は、いったいなんの意味を表しているのですか? 時系列の時間データと出力値を、周波数と振幅に変換する方法も教えてください。この場合、周波数と振幅はそれぞれ何を示しているのですか? ほとんど数学の知識がないためこのような質問で大変恐縮ですが、お願いします。

  • 空間フーリエ変換のグラフ化ソフトについて 

    こんにちは現在光学を学んでいる大学院生です。 現在実験やシミュレーションによって得たデータを空間フーリエ変換を行いたいと考えております。 一次元の結果 横軸(x座標) 縦軸(信号強度) を 一次元の 横軸(空間周波数or波数) 縦軸(信号強度)となるものです。 Originやmatlab等でフーリエ変換を行うことはできるのですが、空間フーリエ変換を行うことはできないようなのです(企業に質問いたしました。)そこで現在解析ソフトを探しております。 画像解析における二次元空間フーリエ変換のソフトはいくらかあるのですが、 そういたソフトだと、結果が二次元マップで示されてしまい、空間周波数を調べることができません。 どなたか、良いソフトをご存知でしたら教えていただけますでしょうか? よろしくお願いいたします。

  • FFTの結果からフーリエ係数は求められるものでしょうか?

    FFTの結果からフーリエ係数は求められるものでしょうか? 実測値の波形データを関数で表したいのです。 フーリエ展開でなんとかならないかと考えたのですが、 計算の速いFFTを使うと、逆変換で波形データに戻せるものの、 関数として表す事が出来ない事に、 FFT後に気付いてしまいました。 数学は専門外で、入門書と格闘しながらやっているのですが、 行き詰ってしまいました。