% M04-dtftconv.diary
% 2007-09-25
% Convolution in the DTFT domain
% We can't directly represent X(e^jw) in Matlab because it
% is a continuous function, not a discrete function. But
% by sampling on a dense grid, we can come close enough
x = [8 5 4 3 2 2 1 1];
y = [-1 2 -1];
% Check the answer we're looking for
conv(x,y)
%ans =
% -8 11 -2 0 0 -1 1 -1 1 -1
% Calculate the DTFT (actually, 128 samples via the DFT)
X = fft(x,128);
Y = fft(y,128);
% Multiply in the Fourier domain to effect convolution in the time domain
R = X.*Y;
% Convert back to time domain
r = ifft(R);
max(abs(imag(r)))
%ans =
% 0
% matlab automatically detects it's a pure-real signal
% So what'd we get?
r(1:14)
%ans =
% Columns 1 through 7
% -8.0000 11.0000 -2.0000 -0.0000 0.0000 -1.0000 1.0000
% Columns 8 through 14
% -1.0000 1.0000 -1.0000 0.0000 0.0000 -0.0000 0.0000
% it's the same. It has a lot of zeros on the end, though