超簡単です。問題はどうやってデータをインポートするかなんだけど、普通の形式でデータが与えられていればまあ問題なかろう。
手順は、
ある変数hogeにデータが入ってたとしたら、それをfft(hoge)とするだけでFFTできるらしい。素晴らしい。そしてよく見るパワースペクトルにしたいときは、絶対位置をとって、それにサンプリングレートを掛ければ良いので、サンプリングレートをDeltaとすると、Delta*abs(fft(hoge))で終わり。詳細は「続きを読む」で。
最初にデータを読み込みます。時間tに対してch1とch2のデータが、
#t ch1 ch2 0 0.1 0.2 1 0.15 0.25 ...
として、hoge.datというファイルに格納されてたとします。
Octaveを起動して、
> load hoge.dat
でhogeという変数に行列の形でデータがコピーされます。
このままだとちょっとあれなので、時間tはtという変数に、ch1のデータはch1という変数に、ch2のデータはch2という変数に格納することとします。
> t = hoge (:, 1); > ch1 = hoge (:, 2); > ch2 = hoge (:, 3);
これでデータの読み込みは終了。正直この簡単さにちょっとビビる。
そして、次にFourier変換されたものをch1とch2についてそれぞれFch1とFch2として、そこにスペクトルをぶち込みたいときは、サンプリングレートをDeltaとして、
> Fch1 = Delta * abs (fft (ch1)); > Fch2 = Delta * abs (fft (ch2));
になります。
また、周波数Omegaは、Omega(n)=n/Δで与えられてるので、サンプリング数NとサンプリングレートDeltaによって、
> Omega = linspace (0, 0.5, N);
になります。ここでlinspace(0, 1, N)は、0から1までN分割して値のリストを与える関数です。
そして、このOmegaとFch1をプロットすれば終了で、
> gplot Omega, Fch1
で終わり。
http://buran.u-gakugei.ac.jp/~mori/LEARN/Octave/FFT/
http://www.mnet.ne.jp/~tnomura/fft.html