与 FFT 卷积之前信号中间的零填充?
Zero padding in the Middle of the Signal before convolution with FFT?
我遇到了一个使用 cuFFT 对两个信号进行简单卷积的示例。
https://github.com/NVIDIA/cuda-samples/blob/master/Samples/simpleCUFFT/simpleCUFFT.cu
它对两个信号执行零填充,以便它们的大小匹配在一起。但是当我打印填充输出时,它显示填充是在我不理解的信号中间完成的,因为通常它是在开始或结束时完成的。检查 padData 函数。
为什么要在中间填充?
如果两个信号长度相同,是否需要填充?
我不太熟悉信号处理技术。如果有人能向我解释一下,我将不胜感激。
如果您希望复数 FFT 的相位结果保持不变,则任何零填充都需要围绕输入的开头循环对称。如果你只是在开头或结尾填充,相位结果可能会改变。
如果您希望频谱的复数 IFFT 产生严格实数的结果,则任何零填充都必须保持共轭对称(这意味着填充需要居中或对称,而不仅仅是在开头或结尾).
我遇到了一个使用 cuFFT 对两个信号进行简单卷积的示例。
https://github.com/NVIDIA/cuda-samples/blob/master/Samples/simpleCUFFT/simpleCUFFT.cu
它对两个信号执行零填充,以便它们的大小匹配在一起。但是当我打印填充输出时,它显示填充是在我不理解的信号中间完成的,因为通常它是在开始或结束时完成的。检查 padData 函数。
为什么要在中间填充?
如果两个信号长度相同,是否需要填充?
我不太熟悉信号处理技术。如果有人能向我解释一下,我将不胜感激。
如果您希望复数 FFT 的相位结果保持不变,则任何零填充都需要围绕输入的开头循环对称。如果你只是在开头或结尾填充,相位结果可能会改变。
如果您希望频谱的复数 IFFT 产生严格实数的结果,则任何零填充都必须保持共轭对称(这意味着填充需要居中或对称,而不仅仅是在开头或结尾).