問題の説明
私は畳み込み定理を使用して畳み込みを効率的に計算しました。実数信号s1
とs2
の2つがそれぞれ長さN
であると仮定します。その後、私はk
singalsを持っている場合は、fft_size
は円形の重複を避けるためにn倍FFT畳み込みと循環重複
fft_size = int(2 ** np.ceil(np.log2(k * size - 1)))
を読み取るように変更しなければならない
import numpy as np
import numpy.fft as fft
size = len(s1)
fft_size = int(2 ** np.ceil(np.log2(2 * size - 1))) #The size for the FFT algorithm
S1 = fft.rfft(s1, fft_size) #Take FTs
S2 = fft.rfft(s2, fft_size)
convolution = fft.irfft(S1 * S2) #Take IFT
から畳み込みを得ることができます。
残念ながら、私は先験的にk
を知らない。 1つの選択肢は最大値k_max
を選択することですが、絶対に必要でない場合は大量のメモリを使用する必要はなく、kを変更するたびにFTを評価したくない場合があります。
質問
は、それは次のよう
- のいずれかを実行することが可能です必要に応じて
k=1
ための信号と「フーリエ空間でゼロパッド」のFFTを取りますか? - FFTで循環ラッピングを防止しますか?周波数領域での