FFTについて勉強しています。
「教えてgoo」でFFTで、検索したら、
http://momonga.t.u-tokyo.ac.jp/~ooura/fft-j.html
の、計算パッケージが良いと分かったのですが、計算結果の、読み方?が、分かりません。fftsg.c か、fft8g.c を利用して、計算結果を利用してグラフを描こうと考えています。それで、質問なのですが、
1.サンプリング周波数 44.1KHz
16ビットで 8192個のデータを計算させた場合、計算値として得られる、配列は、周波数の小さい順に並んでいるらしいことは、分かるのですが、それぞれのデーターの周波数は、どうなっているんでしょうか?
単純に0Hzから22050Hzを8192で、割った小さい順で良いのでしょうか?
2. また、パワースベクトルは、どの様に計算したらいいのでしょうか? 20log絶対値 で、良いのでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
質問文に記載のFFTパッケージの内容を見ていないので、無責任に「一般的なFFTプログラム」の場合でお答えさせていただきます(Excel内蔵の[フーリエ解析]機能も同じです)。
ご質問の数値例を使うと、
全観測時間=1sec/44.1kHz×8192=0.1857596・・・sec
です。この8192点をFFTして得られる周波数は、最も低い方がこの全観測時間約0.18576sec内にたった1周期だけの波で、最も高い方はサンプリングの定理(1周期を表現するのに最低2点のデータが必要というもの)より全観測時間約0.18576sec内に4096周期の波、になります。周波数に直すと、
fmin=1/0.18576・・・sec≒5.3833Hz
fmax=4096/0.18576・・・sec=22050Hz
となります。
つまり、一般的にはFFT結果の頭の4097点に、0Hz、5.3833Hz、10.7666Hz、・・・、22050Hzのデータが並んでいます。ご質問のように「22050Hzを8192で割る」ではなく、「4096で割る」ということです。なので、パワースペクトルは、この頭の4097点の結果(複素数!)を絶対値化して2乗すればよく、デシベル表示したいのであればご質問の通り20log(絶対値)とすればいいはずです。パワースペクトルとしては、それ以降の4098点目~最後の8192点目までは、同じ周波数情報が折り返して並んでいますので、この部分は不要になります。
お礼が遅れてすみませんでした。
おかげさまで、プログラムを完成させることが出来ました。
また、よろしくおねがいします。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 風力発電での音 1 2023/04/16 08:55
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 物理学 フーリエ級数展開をExcelのFFTでシミュレートする 5 2023/07/03 22:02
- 工学 高周波工学について 3 2022/05/11 11:04
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- 高校 有効数字計算 確定した値を含む 2 2023/01/18 06:03
- 統計学 不偏分散を計算するときに標準偏差和をn-1で割りますが、なぜ-1なのでしょうか? 「なぜnでなくn- 5 2022/07/04 14:54
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- 数学 実数であるべきものに虚数を含む複素数が現れたときの対処法 4 2022/08/30 09:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
排他的論理和 BCC(水平パリテ...
-
Javaを使った行列計算
-
やってみてもわからないので教...
-
変化させるセルが変化しない
-
VBAでの勤務時間計算
-
Excel VBAの残業時間の合計計算...
-
[ASP]日付と時間の比較
-
ファイルから数式を読み込む
-
SNRの計算の仕方
-
C# 計算処理中に実行中ウィン...
-
MATLABの積分について
-
モジュラス103の計算とは何でし...
-
C言語で、漸化式を使ってパスカ...
-
VBAで関数をつくる
-
0xf0=256?
-
エクセルで特定のセルのみを任...
-
傾いた四角形内の範囲の条件式
-
VBとVBAの違い
-
Java 電卓の連続計算
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報