为什么在频域中通过乘法进行卷积会产生意想不到的结果MATLAB?

时间:2014-10-23 22:23:40

标签: matlab fft convolution frequency-domain

我试图通过傅里叶变换对其自身进行卷积,对其求平方,然后进行逆傅立叶变换。我意识到有一个conv()函数但我宁愿在频域中为未来的更复杂的问题做这件事。我的问题是,当我这样做时,它不会产生预期的三角函数。我正在使用的代码如下:

clc

clear all

x=-5:.01:5;

y=rectangularPulse(x);

Y=fft(y);

H=Y.^2;

h=ifft(H);

plot(x,h)

1 个答案:

答案 0 :(得分:2)

您需要使用zeropad以确保卷积是线性的。目前您正在执行循环卷积。尝试这样的事情:

y = ones(100,1);    
N = length(y);
Nfft = 2*length(y) - 1;

Y=fft(y,Nfft);
H=Y.^2;
h=ifft(H);
plot(h);