Here is a simple explicit example of Fourier convolution and deconvolution, for a small 9-element vector, with the vectors printed out at each stage. (You can also plot them if you want). In this example, a vector y is defined and then it is convoluted with a vector c. But c is the wrong length, which generates a "Matrix dimensions must agree" error message, so it is zero-filled to the length of y. That produces the convoluted vector yc (with a different shape because of convolution). Finally c is deconvoluted from yc, and the original y is regenerated. You can modify this example by adding zeros to the original y, for example. Also, in the example c is zero-centered; try it and see what happens if you define c as shifted by one point: [0 3 2 1 0 0 0 0 0]. >> y=[0 0 0 1 1 1 0 0 0] y = 0 0 0 1 1 1 0 0 0 >> c=[3 2 1 0] c = 3 2 1 0 >> yc=ifft(fft(y).*fft(c))./sum(c); Matrix dimensions must agree. >> c=[3 2 1 0 0 0 0 0 0] c = 3 2 1 0 0 0 0 0 0 >> yc=ifft(fft(y).*fft(c))./sum(c) yc = 0.0000 0.0000 0 0.5000 0.8333 1.0000 0.5000 0.1667 0.0000 >> ydc=ifft(fft(yc)./fft(c)).*sum(c) ydc = -0.0000 0 0 1.0000 1.0000 1.0000 0.0000 -0.0000 0.0000