Deconvolution using FFT - a classical problem

조회 수: 81 (최근 30일)
Vijayananda
Vijayananda 2026년 2월 19일 17:06
편집: Vijayananda 대략 1시간 전
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.

답변 (2개)

Matt J
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
  댓글 수: 12
Paul
Paul 대략 1시간 전
Ok. Now I see where you're coming from. The other (in the context of my previous comment) signal is formed by windowing the central period of the N-periodic extension of x[n] and the other operation is sampling the DTFT of that that other signal.
Vijayananda
Vijayananda 대략 1시간 전
편집: Vijayananda 대략 1시간 전
@Matt J Thank you so much Matt for your insightful answers. regarding the problem of inverse heat conduction, I only have the output T(t) and impulse response g(t). I need to find q(t). so the only way I am going to get q is to use
where the the output exists only upto 1 seconds. when I padd it it abruptly comes to zero without a decay.
And yes. in this code:
Z2 = df.* T./G;
Z3 = df.* T./Q; if I use Z1 instead of T, I get back the impulse response. But in reality, I dont have the convolved T from G and Q. I want to find Q from other two functions. I hope I am not overcomplicating things.
Or maybe I am not understanding it correctly. You said, "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"
But the time domain signals of both Z1 and T looks the same. They extend only upto 1 seconds. I am not able to see any decay. Also analytically, for the step input, the temperetaure keeps on increasing with time.

댓글을 달려면 로그인하십시오.


Matt J
Matt J 대략 14시간 전
편집: Matt J 대략 14시간 전
Since you are trying to deconvolve in the presence of noise, it would make sense to use a regularized deconvolver like deconvreg or deconvwnr. These are from the Image Processing Toolbox, but there is no reason they wouldn't apply to one-dimensional signals as well.

카테고리

Help CenterFile Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by