Spot product with fft

According to the convolution theorem, convolution in the time domain is a product in the fft-domain. With the correct zero fill it works:

% convolution in time domain
a = [1 2 3];
b = [4 5 6];
c = conv(a,b);

a_padded=[a 0 0]; b_padded=[b 0 0];
c_bis=ifft(fft(a_padded).*fft(b_padded));
% we do find c_bis=c

However, this theorem seems to work and vice versa, the product in the time domain is a convolution in the fft-domain. I do not get this part:

d = a.*b;
D=conv(fft(a_padded),fft(b_padded));
d_bis=ifft(D);

Which gives a complex vector for d_bis. How can I invert a point product made in the time domain using convolution in the frequency domain?

+3
source share
1 answer

Interest Ask!

A mistake (albeit subtle) when you say

The work in the time domain is a convolution in the field of FFT

. (DFT FFT), is

FFT, ,

, d_bis:

  • , ;
  • ;
  • .

, cconv :

N = length(a);
D = cconv(fft(a),fft(b), N)/N;
d_bis=ifft(D); %// now this equals d

( ) :

A FFT

( )

, , . :

c = cconv(a, b, N);
c_bis=ifft(fft(a).*fft(b)); %// this equals c
+4

All Articles