-PR-
解決
済み

エクセルでFFT

  • 暇なときにでも
  • 質問No.51001
  • 閲覧数3455
  • ありがとう数14
  • 気になる数1
  • 回答数3
  • コメント数0

エクセルの分析ツールにフーリエ解析というのがあるのですが、使い道を教えてください。オンラインヘルプ見ても良くわからんのです。

例をみると1,0 の数列を変換しているのですが、そもそも連続波の解析には使えるのでしょうか?
私がイメージしているのは例えばオシロでやってるFFTをパソコン上で出来るか?というものです。あまり精度は期待してませんが。
通報する
  • 回答数3
  • 気になる1
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2

はい。出来ます。精度も問題ありませんよ。
ただ、使い方がわかりにくいですよね。helpも全然役に立たないし。
FFTは「離散フーリエ変換」を高速に行う方法です。

まず、離散フーリエ変換は、
xi = f(ti)
-T <= ti <= T
i = 0,1,...,N-1
N:データ数
の式があって、
これをFFTすると、
yi = F(wi)
が得られます。
ここで、
ti = ΔT×i (ΔT:サンプリング間隔)
ですね。オシロデータだとtiは時間になります。
wi = i/(NΔT) i = -N/2 ... N/2
で、tが時間ならばwiは周波数になるわけです。

で、Excelでの処理方法です。
まず、FFTの条件として、Nは2の累乗でなければなりません。(N=2^m)

まず、データxiの配置の仕方です。
わかりやすいように、一行目はタイトルにして、2行目から縦に(行方向)データを入れていくことを考えます。

A列(計算用): セルA2より 0...N-1までの数字を順に並べる。
B列(添え字): セルB2より 「if(A2<=N/2,A2,A2-N/2)」を入力(N個)
C列( 時間 ): セルC2より 「ΔT(サンプリング間隔)×A2」を入力
D列(データ): セルD2より A列の添え字に対応するxiを並べる
E列(周波数): セルE2より 「B2/(N×ΔT)」を入力する。
F列( 結果 ): FFTの結果を入力するセルとして指定する。(F(wi)が入ることになります。)

さて、これでFFTを選んで、入力をD列のデータ、出力をF列に選んで実行して下さい。
結果がF列に入ったと思います。
このとき、E列が周波数で、F列が結果です。
ただし、F列はそのままでは複素数になっています。(エクセル上は文字列扱い)
もし周波数強度を知りたいときには、絶対値(IMABS関数)、又は2乗してあげるとよいです。
周波数成分も正負両方出てきますが意味がなければマイナス成分は無視します。
なお、上記の添え字の付け方では周波数成分の、i=-512のデータがありません。

しかし、これは問題はなく、i=512のデータとi=-512のデータは同じデータになるためです。
データの配列の順番が特殊なのはFFTの処理の仕方の特徴です。
FFTの中身を詳しく知りたいときには、Numerical Recipes in C(技術評論社:ISBN4-87408-560-1)あたりが参考になるでしょう。
お礼コメント
noname#16572

mickjey2様
詳細な回答ありがとうございます。しかも実際にご活用されているのですから非常に参考になります。正直に言ってフーリエ変換の理論自体忘れており、測定するときも中身はブラックボックスと化しています。せっかく、細かい手順までご教示くださったのですから、これから理論も勉強しつつ活用させていただきたいと思います。改めて御礼申し上げます。
投稿日時 - 2001-03-14 01:04:17
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 25% (29/115)

いきなり回答ではなくて、ごめんなさい 私もExcelのFFTでちょっとやりたいことがあったので・・・ で、試してみると、それらしい数字は出てますね。 ただ、オシロで見るような、パワースペクトルのグラフに 直すやり方が、よく分かりません。 実は、私も同様のことをやりたかったのですが、 途中で止まっているんです。 多分、ご質問の「使い道」の多くは、bupu4uさんと同じく、これだと思いま ...続きを読む
いきなり回答ではなくて、ごめんなさい
私もExcelのFFTでちょっとやりたいことがあったので・・・

で、試してみると、それらしい数字は出てますね。
ただ、オシロで見るような、パワースペクトルのグラフに
直すやり方が、よく分かりません。
実は、私も同様のことをやりたかったのですが、
途中で止まっているんです。

多分、ご質問の「使い道」の多くは、bupu4uさんと同じく、これだと思いますよ。

で、「連続波の解析に使えるか?」については、
(もろもろ細かい言葉づかいはおいといて、)
「できそうです」

私が試したのは、・・・
0.001から0.001刻みの数字の列を作り、
それのSIN値の列を作り、
ツール/分析ツール/フーリエ解析で
SIN値の列を入力範囲に指定(4096点まででした)
適当な空き場所を出力範囲に指定
すると、複素数の列が出ます。
MBABS関数、ABREAL関数で実数部、虚数部を分離。

・・とここで止まってます・・

bupu4uさん、ここからやってみてはどうですか?
で、うまくいったら教えてね。

パワースペクトルのグラフについては、識者のかた、フォローくださいよ~。
お礼コメント
noname#16572

j euroさん 回答ありがとうございます。
悩んでいたのは自分だけではないと思うと心強いです。しかもmickjey2さんの完璧フォロー付き。ただし、理論は殆ど忘れてしまったのでこれから勉強はじめないといけないんです。
ところで、EXCEL2000をお使いですか、MBABS,ABREAL関数は私のEXCEL97には無いもんで。でも Z -> |Z|, Re(Z),Im(Z)はありますから適当に読みかえられますけど。j euroさんの方もうまく行くと良いですね。
投稿日時 - 2001-03-14 00:10:48


  • 回答No.3

補足です。 オシロで表示されるようなパワースペクトルI(w)を求めたい場合は、 得られたスペクトル関数F(wi)を使って、正と負のスペクトルの二乗値の加算、 I(w)=|F(+w)|^2 + |F(-w)|^2を計算して下さい。 なお、関数が実数のみならば、単純に+wの方を2倍しても可能です。 ちなみに、オシロスコープの計算精度がどれほどかわかりませんが、普通は8bitの整数値からだ ...続きを読む
補足です。
オシロで表示されるようなパワースペクトルI(w)を求めたい場合は、
得られたスペクトル関数F(wi)を使って、正と負のスペクトルの二乗値の加算、

I(w)=|F(+w)|^2 + |F(-w)|^2を計算して下さい。

なお、関数が実数のみならば、単純に+wの方を2倍しても可能です。

ちなみに、オシロスコープの計算精度がどれほどかわかりませんが、普通は8bitの整数値からだから、エクセルの倍精度計算よりも劣ると思いますよ。
FFTの使い方を覚えると、デジタルフィルタリング、コンボリュション処理等々とにかく様々な信号処理が出来るので重宝します。
私も結構これを駆使して信号処理することがあります。
(さすがに複雑かつデー多数が多いと専用プログラムを書きますが)
お礼コメント
noname#16572

行き届いた補足、重ねてお礼いたします。
確かにオシロスコープのような単機能と違って色々応用が利きそうですね。業務上実測波形、sim波形を分析する機会が多いのですが根がデジタル系なので論理解析が主、シグナルインテグリティチェックは近年の周波数upにともない始めたばかりです。貴重なノウハウ活用させていただきたいと存じます。
投稿日時 - 2001-03-14 01:23:25
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ