为什么 x 和 y 的卷积不同 ifft(fft(x)xfft(y))?
why convolution of x and y is different ifft(fft(x)xfft(y))?
我知道x和y在时域的卷积等于fft(x)乘以fft(y)在频域。
所以我尝试了如下使用 matlab 的简单示例。
xn=[1,2,3,4];
yn=[4,3,2,1];
zn=conv(xn,yn);
znr=ifft(fft(xn).*fft(yn));
我得到的结果如下。
zn =
4 11 20 30 20 11 4
zr =
24 22 24 30
我想知道为什么zn 不等于znr。
有知道原因的请解释一下。
在采取fft()
时指定转换长度以您想要的方式配置解决方案可能是一种解决方案。由于通常卷积结果的长度等于卷积后的两个信号之和减去 1,因此在这种情况下我们可以将 Transform_Length
设置为 7。
xn = [1,2,3,4];
yn = [4,3,2,1];
zn = conv(xn,yn);
Transform_Length = length(xn) + length(yn) - 1;
znr = ifft(fft(xn,Transform_Length).*fft(yn,Transform_Length));
zn
znr
结果:
运行 使用 MATLAB R2019b
我知道x和y在时域的卷积等于fft(x)乘以fft(y)在频域。 所以我尝试了如下使用 matlab 的简单示例。
xn=[1,2,3,4];
yn=[4,3,2,1];
zn=conv(xn,yn);
znr=ifft(fft(xn).*fft(yn));
我得到的结果如下。
zn = 4 11 20 30 20 11 4 zr = 24 22 24 30
我想知道为什么zn 不等于znr。 有知道原因的请解释一下。
在采取fft()
时指定转换长度以您想要的方式配置解决方案可能是一种解决方案。由于通常卷积结果的长度等于卷积后的两个信号之和减去 1,因此在这种情况下我们可以将 Transform_Length
设置为 7。
xn = [1,2,3,4];
yn = [4,3,2,1];
zn = conv(xn,yn);
Transform_Length = length(xn) + length(yn) - 1;
znr = ifft(fft(xn,Transform_Length).*fft(yn,Transform_Length));
zn
znr
结果:
运行 使用 MATLAB R2019b