私は実際の信号をリサンプリングしていますが、そのfftを自由rfft
に使用できるので、を使用したいと思いますirfft(signal, new_length)
。しかし、私はそれを機能させることができないようです。
これは、複雑なfftを使用して長さ4の信号をリサンプリングする実用的なコードスニペットです。
from numpy.fft import fft,ifft
p=array([1.,2.2,4.,1.])
pk=fft(p)
pnew=ifft(pk,8)*(8./4.)
ここで、係数(8./4.)
は元の長さから新しい長さに再スケーリングされます。あなたはそれをチェックすることができますpnew[::2]==p
。
ここで、実際のフーリエ変換で同じ戦略を適用しようとすると、元のポイントで間違った結果が得られます。
from numpy.fft import rfft,irfft
p=array([1.,2.2,4.,1.])
pk=rfft(p)
pnew=irfft(pk,8)*(8./4.)
そして私は持っていpnew[::2]=[ 1.45, 1.75, 4.45, 0.55]!=p
ます。
誰かが何が起こっているのかについての手がかりを持っていますか?scipyのルーチンを使用してみましたが、同じ結果になりました。ドキュメント自体で、これを行う方法について簡単に説明しています。ページの下部にあるここを参照してください。