【发布时间】:2012-03-06 01:40:28
【问题描述】:
问题描述
我使用了卷积定理来有效地计算卷积。假设有两个实际信号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 先验。一种选择是选择最大值k_max,但如果不是绝对必要,我宁愿不必使用大量内存,并且我宁愿在每次 k 变化时都不要再次评估 FT。
问题
是否可以做以下之一
- 根据需要对
k=1和“傅里叶空间中的零填充”的信号进行 FFT? - 防止在 FFT 中循环环绕?
【问题讨论】:
标签: python fft convolution