假设向量 s 是一组长度为 1000 的时间样本。假设向量 h 是一组长度为 50 的样本。
如果我想计算这些向量的卷积,结果将是 1000+50-1 = 1049 点,正如预期的那样。
如果我想使用 FFT 进行计算,我需要确保循环卷积不会混叠。因此,每个向量的 FFT 大小必须 >= 1049。但是,我想要一个有效的 FFT 长度,所以我计算每个向量的 2048 大小的 FFT,将它们相乘,然后取 ifft。这给我留下了 2048 分的答案。
在 Matlab 中: H = fftshift(fft(h,2048)); S = fftshift(fft(s,2048)); 结果 = fftshift(ifft(H.*S));
由于 fft 零填充,该结果包含“额外”样本。从理论上讲,它包含我需要丢弃的 999 个额外样本。有什么系统的方法可以准确地知道要丢弃结果向量的哪些样本?