Deconvolution using FFT - a classical problem
69 次查看(过去 30 天)
显示 更早的评论
Hello friends, I am new to signal processing and I am trying to achive deconvolution using FFT. I have an input step function u(t) applied to an impulse response given by
. The output function is
. I am trying to convolve g and u to get y as well as deconvolve y and g to get u. However, I quite cannot get the right answers. I understand that the deconvolution process is ill-posed and I have to use some kind of normalization process but I am lost. I also apply zero padding to twice the length of the input signals. Any sort of guidance will be appreciated.

After using deconvolution in the fourier domain:
Y = fft(y)
G = fft(g)
X = Y./G
x = ifft(X)
I am getting an output shown below:

Which is not the expected outcome. Can someone shead light on what is happening here? Thank you.
0 个评论
回答(2 个)
Matt J
2026-2-19,20:20
编辑:Matt J
2026-2-19,20:49
dt=0.001;
N=20/dt;
t= ( (0:N-1)-ceil((N-1)/2) )*dt; %t-axis
u=(t>=0);
g=3*exp(-t).*u;
y=conv(g,u,'same')*dt;
Y = fft(y);
G = fft(g);
X = Y./G;
x = fftshift(ifft(X,'symmetric')/dt);
figure;
sub=1:0.3/dt:N;
plot(t,3*(1-exp(-t)).*u,'r.' , t(sub), y(sub),'-bo');
xlabel t
legend Theoretical Numeric Location northwest
title 'Output y(t)'
figure;
plot(t, u,'r.' , t(sub), x(sub),'-bo'); ylim([-1,4])
title Deconvolution
xlabel t
legend Theoretical Numeric Location northwest
8 个评论
Matt J
about 1 hour 前
编辑:Matt J
34 minutes 前
You seem to have assumed that T and Z1 are the same and can therefore be used interchangeably in,
Z2 = df.* T./G;
Z3 = df.* T./Q;
You can easily check, though, that they are not the same. It should really be,
Z2 = df.* Z1./G;
Z3 = df.* Z1./Q;
The reason T and Z1 are not the same is that in the actual continuous-time convolution of g(t) with a step, you get a temperature profile that increases on the interval
, but then gradually decays to zero on
. Conversely, in your construction of temppad, and hence T, there is no gradual decay. You simply truncate abruptly to zero once
is reached.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!









