我们经常听到“时间上的卷积等于频率上的乘法”,反之亦然,“频率上的卷积等于时间上的乘法”。
因此,在典型的窗口操作中,我们对信号进行逐点乘法, 有窗. 这意味着在频域中,我们正在执行.
我的问题如下:我想为自己说明这一点,但我不确定 FFT 需要多长,以及要使用哪种类型的卷积。(圆形?线性?等)。我看到的所有来源似乎都缺少这些细节。
所以,如果你想在频域中进行卷积,我选择什么长度的 FFT 来计算和,我在做什么类型的卷积?谢谢你。
我们经常听到“时间上的卷积等于频率上的乘法”,反之亦然,“频率上的卷积等于时间上的乘法”。
因此,在典型的窗口操作中,我们对信号进行逐点乘法, 有窗. 这意味着在频域中,我们正在执行.
我的问题如下:我想为自己说明这一点,但我不确定 FFT 需要多长,以及要使用哪种类型的卷积。(圆形?线性?等)。我看到的所有来源似乎都缺少这些细节。
所以,如果你想在频域中进行卷积,我选择什么长度的 FFT 来计算和,我在做什么类型的卷积?谢谢你。
FFT 是一种快速的 DFT 方法。是的,一个域中的乘法对应于倒数域中的卷积。并且由于 DFT 是一个完全循环的操作,因此 DFT 在一个域中通过在另一个域中乘法完成的任何结果卷积都是循环卷积。你别无选择。要使循环卷积看起来像线性卷积,您必须充分补零。
要填充多少个零?需要考虑卷积(重叠添加或重叠保存)的工作速度。如果是 DFT 长度,被卷积的两个序列的非零长度,加起来不得超过否则会出现非零分量的重叠和混叠。
对于两个信号的逐点乘法,它们应该具有相同的长度,例如 N。先用 N 执行 fft(),然后用 N 进行循环卷积,然后是 ifft()。可能是因为 fft 和 ifft 的定义之间存在 1/N 的差异,所以存在 N 倍的差异。
a=[1 2 3 4 5];
b=[4 5 6 7 8];
ifft( cconv(fft(a), fft(b), 5))
a.*b
您可以推断出您需要频率域中的循环卷积,因为如果它是线性卷积,结果将比 N 长,但逐点乘法的长度为 N。