問題の説明
畳み込みを効率的に計算するために、畳み込み定理を採用しました。2 つの実信号がs1
あり、それぞれs2
の長さが異なるとしN
ます。次に、畳み込みを取得できます
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
読み取るfft_size
ように変更する必要があります
fft_size = int(2 ** np.ceil(np.log2(k * size - 1)))
円形の重なりを避けるため。
k
残念ながら、私は先験的に知りません。1 つのオプションは最大値を選択することですk_max
が、絶対に必要でない場合は大量のメモリを使用する必要がなく、k が変更されるたびに FT を再度評価しないことを好みます。
質問
次のいずれかを行うことは可能ですか
k=1
必要に応じて「フーリエ空間のゼロ パッド」の信号の FFT を実行しますか?- FFT での循環ラップを防止しますか?