

こんにちは。現在、フーリエ変換について勉強しているのですが、ちょっとわからないことがあったので質問させていただきました。
質問内容は高速フーリエ変換についてで、cooley&tukeyのアルゴリズムを利用すると、データが2の冪乗個のときは計算量をО(NlogN)に減らせる事ができるというものでした。
しかしデータが2の冪乗個でないとき。例えばN=5000くらいのときはデータを切り取って無理やりN=4096(=2^12)みたいな感じにすれば良いんですよね?
やっぱりその時って、N=5000で通常の離散フーリエ変換したときと周波数値に誤差が出ると思うのですが、それはどうやったら計算できるのでしょうか。。。
どなたかご教授していただければ幸いです。
No.2ベストアンサー
- 回答日時:
離散フーリエ変換は、信号が周期的であることを前提としています。
離散フーリエ変換でのデータ数Nは、離散時間信号の周期に当たります。変換の結果は線スペクトルとなります。
N=5000がその信号の1周期なのでしょうか。
もしそうならば、4096にすれば、誤差が大きくなるでしょう。
N=5000で変換すべきです。この場合にも高速アルゴリズムが
存在します。#1の方のとおりです。
FORTRANの時代には、パッケージがありました。
NはN=2^m*3^n*5^k*7^Lだったと思います。
もうひとつの考え方は、有限持続時間信号のフーリエ変換としての
適用です。これは、連続スペクトルとなります。データ数Nは
スペクトルの分解能に関係します。サンプリング周波数をNで割った
ものが周波数分解能となります。
実際のデータよりも2倍程度のNを使うことが多いと思います。
データ数が5000ならば、Nは8192とし足りないデータには、
0を詰めます。これならば、2のべき乗のNを選べます。
この場合、逆変換は周期的な拡張が行われることに注意が必要です。
ご回答ありがとうございますm(_ _)m
N=5000が1周期であるとかは全く考えていませんでした^^;すいません。
>>データ数が5000ならば、Nは8192とし足りないデータには、
>>0を詰めます。
これは仮にデータを配列a[8191]に格納するとしたら、a[0]~a[4999]までは
普通にデータを格納し、a[5000]~a[8191]には0を格納するという事でしょうか?
No.3
- 回答日時:
#2です。
>これは仮にデータを配列a[8191]に格納するとしたら、a[0]~a[4999]までは
普通にデータを格納し、a[5000]~a[8191]には0を格納するという事でしょうか?
そうです。
サンプリング周波数をFsとしたとき、Δf=Fs/8192間隔で
スペクトルが計算されます。
なお、データが本来もっと長時間のデータを5000個だけ
切り取ったものである場合には、窓関数を掛け算すると
データの両端での切り取りの影響が小さくなります。
窓関数(Window function)には、Hamming、Hanning,Blackmanなどが
あります。
完全な孤立波(有限持続信号)なら窓を掛ける必要はありません。
No.1
- 回答日時:
実際のところ, N = mn と 2数の積に分解できれば N点のフーリエ変換は m点のフーリエ変換 (のようなもの) と n点のフーリエ変換 (のようなもの) を連続して行うことで求まり, その時の計算量は O(N*(m+n)) となります. これを繰り返すと, 結局 N = p1^e1 p2^e2 ... pk^ek と素因数分解できたときに計算量は O(N(e1 p1 + e2 p2 + ... + ek pk)) と表されることになります.
N = 2^n のときにこの分解が最も効率よくなり, O(N log N) となります. そうでないときには効率が落ちるのですが, それはそれでそれなりに計算できます.
例えば N = 5000 = 2^3 * 5^4 だと 5点に対するフーリエ変換を 4回, 2点に対するフーリエ変換を 3回行うことになり, その時の計算量はおよそ 5000*(5*4+2*3) = 5000*26 に比例します. 一方 N = 4096 に対する高速フーリエ変換は 4096*24 に比例します.
ということで「データ 1個当たりの所要時間」は大して変わらないことが分かると思います. つまり, 普通の高速フーリエ変換とは違うものの, 「5点に対するフーリエ変換」を作ることさえできれば, 点数を 5000 にしたままでもそれほど時間はかからないのではないでしょうか.
データが2^nでなくとも小さめの素因数があれば計算量を減らすことができるということでしょうか。大変参考になりました。有難うございますm(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
信号長が2の累乗以外のFFTがやりたいです
数学
-
Excelで4096点以上のFFTの方法
その他(Microsoft Office)
-
フーリエ変換のデータの補間について
数学
-
4
高速フーリエ変換とフーリエ変換の違い
物理学
-
5
FFTの結果ついて
C言語・C++・C#
-
6
高速フーリエ変換の標本点数について教えてください
物理学
-
7
FFTのDC成分って、なんで大きくなるんですか?
物理学
-
8
FFT・PSDの縦軸は何を意味するのでしょう?
物理学
-
9
離散フーリエ変換(DFT)の実数と虚数
数学
-
10
フーリエ変換と離散フーリエ変換は何が違うのでしょうか?(フーリエ変換は周期的、非周期的なf(x)に使
工学
-
11
FFTとパワースペクトルの違いについて教えてください。
物理学
-
12
フーリエ変換・逆変換の虚数成分って?
数学
-
13
パワースペクトルのピークは、このグラフでなにを表していますか?また、それ以外の成分は何を表しているか
工学
-
14
EXCELにてローパスフィルタを作成する
その他(教育・科学・学問)
-
15
窓関数(方形窓)について
その他(自然科学)
-
16
二つのデータの波形が似てるかどうかの判定方法
数学
-
17
FFTにおけるゼロ追加、補間や分解能について
数学
-
18
エクセルでノイズ値を除去する方法。
数学
-
19
パワースペクトルとは?
物理学
-
20
ホワイトノイズはガウス分布?
その他(自然科学)
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
高速フーリエ変換でデータ数が...
-
5
XMLデータってなんですか?
-
6
エクセルのグラフのデータ系列...
-
7
窓関数(方形窓)について
-
8
【エクセル】測定時間がバラバ...
-
9
Excel Webクエリ
-
10
FAXの表をエクセルに変換したい
-
11
3次元曲面補間方法を探しています.
-
12
Excelの“並び替え”で文字コード...
-
13
Excel グラフで数値の正と負の...
-
14
解像度96pixのQRコードは印刷物...
-
15
matirix market データ読み込...
-
16
ワードの差し込み印刷のデータ...
-
17
表計算: 多次元の表を作りたい
-
18
PCの内蔵メモリにデータは残る?
-
19
格安simをiPhoneとiPadで共有す...
-
20
d’の求め方
おすすめ情報
公式facebook
公式twitter