掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
高速フーリエ変換からパワースペクトルを求める (ID:52783)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>> なーめさん。大変失礼いたしました。 >>>>>>>> ハミング窓とか不要なのかな? >>>>>> ハニングまどが必要ですよね >>>>こう並ぶと、知らない人は、私が訂正されているように見えちゃうなー。 これ、ギャラリー向けなので気にしないでください。 >> しきとしてはlog10|fft|^2なんです log10(|fft|^2) でしょ? printf("%4d | %6.3f %6.3f | %6.3f %6.3f | %6.3f %6.3f\n", i, x1[i], y1[i], x2[i], y2[i],log10(x2[i]*x2[i]+y2[i]y2[i])); 最後の引数で、 log10( x2[i]*x2[i] + y2[i]*y2[i] ) ってあるじゃないですか。 これですよ。 |fft| ってノルムなんですが x,y の座標でいうと原点からの距離なんで、 sqrt( x*x + y*y ) っていうか sqrt( x2[i] * x2[i] + y2[i] * y2[i] ) でもって |fft|^2 ってあるから sqrt() する必要がなくなり、 元のプログラムでいうところの、 x2[i]*x2[i] + y2[i]*y2[i] これを log10() に渡す。 よって、 log10( x2[i]*x2[i] + y2[i]*y2[i] ) これでいいのでは。 1フレーム分の平均パワーにするなら log10( Σ<n=0,N>( |fft|^2 )) で、 #define N 256 int n; double sum = 0.0; double mean_power; // 結果格納 for( n = 0; n < N; n ++ ) { sum += ( x2[i]*x2[i] + y2[i]*y2[i] ) } mean_power = log10( sum / N ); ですかね。 >> 手順というか Visual Studio のプロジェクトに上記ソースを取り込む方法について 質問しているように受け取れますが。 それでいいのかな。 ならば、どのようなものを作りたいかによります。 1. DOS窓でコマンドラインから実行 2. ダイアログでデータファイルをドラッグ&ドロップして実行 結果をグラフィカルに表示する などといったアプリケーションの形態の指定が必要です。 >> プログラムの流れ こういわれるとアルゴリズムについて問われていると思われますが。 上記 log10 のことでなければ、fft のアルゴリズムそのものの質問ですか。 ならばこれ↓がいいかも。このアルゴリズムは図で示す必要がありますね。 http://fan.aist-nara.ac.jp/~kounoe/lecture/compII/compII_03/compII6_23.pdf
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.