不等間隔のデータのFFTを取得するにはどうすればよいですか?


55

高速フーリエ変換アルゴリズムは、その入力ポイントが時間領域等間隔であるという仮定の下でフーリエ分解を計算します。そうでない場合はどうなりますか?効果的な可変サンプリングレートを説明するために、使用できる別のアルゴリズム、または何らかの方法でFFTを変更できるアルゴリズムはありますか?tk=kT

サンプルの配布方法にソリューションが依存する場合、私が最も関心を持っている状況は2つあります。

  • ジッタの一定のサンプリングレート:ここで、δ のT kはランダムに分布変数です。と言っても安全だとしましょう| δ T K | < T / 2tk=kT+δtkδtk|δtk|<T/2
  • :特に一定のサンプリングレートからサンプルを落としn個のkZKtk=nkTnkZk

動機:まず第一に、これは、このサイトの提案に関する高い投票の質問の1つでした。しかし、さらに、少し前に、不均一にサンプリングされたポイントを持ついくつかの入力データが出てくるFFTの使用(Stack Overflowの質問でプロンプトが出されます)に関する議論に参加しました。データのタイムスタンプが間違っていることが判明しましたが、この問題にどのように取り組むことができるかを考えさせられました。

回答:


40

非均一FFTにはさまざまな手法がありますが、最も効率的な手法はすべて、正確にあなたのケースを対象としています:準均一サンプルです。基本的な考え方は、ガウス分布に対する局所的な畳み込みを通して、不均一にサンプリングされたソースをわずかに細かい(「オーバーサンプリング」)均一グリッドに塗りつけることです。次に、オーバーサンプリングされた均一グリッドで標準FFTを実行し、ガウス分布に対する畳み込みを元に戻すことができます。良い実装は、Cが4または5に近いものである、d次元の標準FFTよりも倍高価なものです。CddC

GreengardとLeeによる「不均一高速フーリエ変換の加速」を読むことをお勧めします。

ONdログN

重要な点は、上記の手法はすべて近似であり、実行時間は長くなりますが、標準のFFTアルゴリズムは正確ですが、任意に正確にできることです。


9

信号処理では、サンプリングの前にローパスフィルターを介して信号を送信することにより、エイリアシングを回避します。ジャックポールソンは、ローパスフィルターとしてトランケートガウシアンを使用する非均一FFTの1つの手法を既に説明しました。切り捨てられたガウス分布の不便な機能の1つは、FFTのグリッド間隔(=信号処理のサンプリングレート)を決定した後でも、ガウスの幅と切り捨て半径の2つの自由パラメーターがあることです。

したがって、ローパスフィルターとして2つのグリッドセルの幅を持つ「帽子」機能を好みます。これには、ゼロ次のフーリエ次数が正確であり、より低いフーリエ次数が二次的に収束するという効果があります。「ハット」関数のフーリエ変換は簡単に計算でき(sinc関数の2乗です)、FFT後の畳み込みの取り消しが簡単になります。「帽子」関数は、(中央の)単位セルの特性関数とそれ自体の畳み込みであることに注意してください。ユニットセルをそれ自体で複数回畳み込み、「ハット」関数の代わりに結果の関数を使用することにより、任意の収束率を達成できます。


6

ソフトウェアに興味がある場合は、ここにあるNFFTライブラリ(MATLABへのインターフェイスを備えたC)をお勧めします同じ開発者による並列FFT計算用のPFFTライブラリと、並列非等空間FFT用のPNFFTライブラリもあることに注意してください。


1
私の知る限り、PNFFTは並列3D非一様FFTの最速のライブラリです。
ジャックポールソン

PNFFTのリンクが壊れているようです。
Foad

2

受け入れられた回答への追加。GreengardおよびLeeのメソッドのオープンソース実装へのリンクを次に示します。https : //finufft.readthedocs.io/en/latest/ C、fortran、MATLAB、octave、およびpythonのラッパーがあります。FINUFFTはC ++で書かれていると思います。

NYU Courant Institute、SFU、Flatiron Institute(明らかに)、テキサス大学オースティン校、フロリダ州立大学で維持され、使用されています。少なくともこれらは私が知っているものです。

怠け者なので、私自身は古いバージョンを使用しています。参照:https : //cims.nyu.edu/cmcl/nufft/nufft.html


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.