This is now a second time I am attempting to ask this very important but simple question here. What I want to know is can you do deconvolution by convolving a signal. It is often stated that, for example by cutting and boosting the same frequency on an equalizer the result is the original signal. Is that the case? Can convolution be removed by convolving? That would certainly brake the identity that the convolved signal must be n+m-1 in length. I tried this with an equalizer and the results seem to be close to perfect, just some quantization distortion.

If the above can be done, I can not arrive at this conclusion. For example If I convolve (1) with (1, 1) the result is (1, 1). I can not find any impulse response that if convolved with (1, 1) would result in (1).

So what is the truth here?

  • $\begingroup$ Hi, Anything missing in the answers? If not, could you please mark one of them? Thank You. $\endgroup$
    – Royi
    Mar 16, 2022 at 16:20

5 Answers 5


Since convolution describes the operation of a linear time-invariant (LTI) system, the question is if the effect of an LTI system can be compensated by another LTI system. In the discrete-time domain you can use the $\mathcal{Z}$-transform to analyze LTI systems. If a signal $x(n)$ (with $\mathcal{Z}$-transform $X(z)$) is filtered by a system with impulse response $h(n)$ (with $\mathcal{Z}$-transform $H(z)$), then the $\mathcal{Z}$-transform of the resulting output signal $y(n)$ is given by


Recovering $X(z)$ from $Y(z)$ can theoretically be done by


except at points $z$ where $H(z)=0$. The above equation corresponds to convolution with an impulse response $g(n)$ with $\mathcal{Z}$-transform


The question is if this system can be realized by a causal and stable filter. This is indeed the case if $H(z)$ is a minimum-phase system. Assuming rational transfer functions (which we always get when discrete-time systems consist of adders, multipliers, and delay elements), this means that $H(z)$ is a causal and stable system with all its zeros inside the unit circle of the complex plane (its poles are of course also inside the unit circle because of stability). Due the inversion in (1), the zeros of $H(z)$ are the poles of $G(z)$ and vice versa, i.e. if the zeros of $H(z)$ are inside the unit circle, then $G(z)$ is stable. One more thing that can be seen from (1) is that if $H(z)$ is an FIR system, then $G(z)$ is IIR. Nevertheless, in practice equalization if often done by FIR filters, which approximate the inverse filter in some optimal sense.

Let's look at a simple example. Assume an FIR system

$$h(n)=\delta(n)-a\delta(n-1),\quad |a|<1$$

Then we have


$H(z)$ is a minimum-phase system because it has one pole at $z=0$ and a zero at $z=a$, which is inside the unit circle if $|a|<1$. The inverse system is given by


the impulse response of which is

$$g(n)=a^n,\quad n\ge 0$$

which is of course IIR.

So in this case the convolution


can be perfectly compensated for by the convolution


Note that exact deconvolution of a minimum-phase FIR system can only be achieved by an IIR system. The only systems that can be inverted (exactly) by FIR systems are all-pole IIR systems, i.e. systems with all their zeros at the origin of the complex plane (like $g(n)$ in the example above). Note however that in practice exact compensation is usually not the goal. E.g., in digital communications, almost all (linear) equalizers are implemented by transversal (FIR) filters, because they can be adapted more easily and because they are always stable.

  • 1
    $\begingroup$ @Matt L. With "FIR filters are unable deconvolve" I meant that FIR is unable deconvolve it's own FIR impulses. It seems like IIR filters are able to produce responses that settle to 0(audio) quickly and deconvolve their own impulses. By the way, in circular convolution it seems FIR can be deconvolved by FIR, as long as multiplication/division by 0 does not take place in the non0 frequency domain. That would also indicate that by aliasing the time domain FIR can be deconvolved by FIR. True? DC offset only proof: (1,1)*(1,1)=(2, 2); (2, 2)*(0.25, 0.25)=(1,1), where * = Circular Conv. $\endgroup$
    – Tony
    Jun 5, 2014 at 16:47
  • 1
    $\begingroup$ @MattL. Here is a better proof with a DC offset and a sin component in both functions. The first term is linear convolution to show that the circular convolution can deconvolve linear FIR convolution with a finite impulse: (1, 0) * (2, 1) = (2, 1); (2,1) circular (0.66,-0.33) = (1, 0). 0.66 and -.0.33 are rounded. However, this does not work in the (1,1) * (1.0) "diracDC" case, which makes sense since we are multiplying a filled frequency bin by 0. I don't yet fully grasp why this kind of function can be deconvolved in any form. $\endgroup$
    – Tony
    Jun 5, 2014 at 18:00
  • 1
    $\begingroup$ @Tony: Circular deconvolution is a different matter. With circular (de)convolution it does not make sense to make the distinction FIR vs. IIR because by definition all involved sequences are of length $N$. So if (circular) deconvolution is possible, it is naturally always possible by a finite length sequence. And it is possible if the DFT of the impulse response does not introduce any zeros in the DFT of the original sequence. $\endgroup$
    – Matt L.
    Jun 7, 2014 at 11:48
  • 1
    $\begingroup$ @Tony: If the two sinc functions have the same zero crossings, convolution changes nothing. This is of course much easier to see in the frequency domain than in the time domain. $\endgroup$
    – Matt L.
    Jun 8, 2014 at 7:37
  • 1
    $\begingroup$ @Tony: Linear convolution IS multiplication in the frequency domain. Of course not of the DFTs but the the DTFTs. A sinc function extends infinitely, so I'm not sure what you mean by 'zero padding' in this context. And two sincs convolved with each other cannot get any steeper because each of them is already in ideal lowpass filter. $\endgroup$
    – Matt L.
    Jun 8, 2014 at 20:50

What you want is $$x(t) = (x(t)\otimes h(t))\otimes h'(t)$$ where $\otimes$ denotes convolution. Taking $Z$ transform, $$X(z) = X(z) \times H(z) \times H'(z)$$ or $$H'(z) = \frac{1}{H(z)} \tag{1}$$

So you can deconvolve a convolution sum if you you have inverse transfer function as expressed in (1).

For causal and stable system, the ROC of $H'(z)$ must extend to infinity and ROC should contain the unit circle.


Another approach (Though the same).

Let's assume we're in a Finite Dimension Space and the convolution operator is the Circular Convolution (Namely, the same we would do using the DFT).

Then $ y = h \ast x $ can be written as:

$$ y = H x $$

Where $ H $ is a circulant matrix.
Now, the Deconvolution Operator is basically the Inverse of $ H $.
Yet, since $ H $ is a circulant matrix it can be diagonalized by the DFT Matrix:

$$ H = {D}^{T} \mathcal{{H}_{f}} D \Rightarrow {H}^{-1} = {D}^{T} \mathcal{{H}_{f}}^{-1} D $$

Where $ \mathcal{{H}_{f}} $ is a diagonal matrix (Basically the DFT of the $ h $ filter).
The above implies $ {H}^{-1} $ is also a circulant matrix and since:

$$ x = {H}^{-1} y $$

The operation can be carried out as a convolution.

Pay attention, we assumed the there are no vanishing elements in the diagonal matrix (Otherwise it can be inverted).
This is a valid assumption to any deconvolution problem.
In any case information it lost (Vanished) there is no way to return it using direct convolution (Some priors might do, but this is not what the question is all about).


If you deconvolve the output signal with the system response, then you will obtain the (almost) input signal.

(sig_noisy = sig_clean * h + noise)

Alternatively, if you don't know the h function, but know the input and output, this time why not deconvolve the input signal with the output which will give the h^-1 function. Then you can use it as a filter to filter the noisy signal.

(sig_clean = sig_noisy * h^-1)

So, it is possible. I believe I have answered it in more detail in other related question.


I know this is an old thread, but it's an interesting topic. The answer is yes, you can perform deconvolution by convolution.

1) In FFT deconvolution, one normally divides the spectrum of the signal we want to deconvolve by the spectrum of the point spread function, and then take the inverse FFT.

So in this context, division in the frequency domain is deconvolution.

However this is equivalent to taking the same signal and multiplying by the reciprocal of the point spread function.

Multiplication in the frequency domain is convolution.

I have been using this trick for years. If I want to deconvolve a lot of data that has the same point spread function (PSF), I take the FFT of the PSF, and then take the complex reciprocal of it. I call this the inverse point spread function - IPSF.

Now one only need do a complex multiply of the FFT of signal we wish to deconvolve by the IPSF, which is a must faster operation than complex division.

In theory, one could take this IPSF, convert it to the time domain, and do time domain convolution with it, and get a similar result. I have not tried it myself, so your mileage might vary. However, I'm not sure if performing it in the time domain will have the power to shrink the length of the output down to it's original length (see my comment below in (2)) - you would need to experiment.

What one must bear in mind with simple FFT deconvoltion like this, is that if the original convolution was really aggressive, deconvolving it will just produce a lot of noisy mess, unless you have a way to temper the amount of deconvolution you need.

But in simple cases, it works like a charm.

2) To answer your second question, about the length of the resulting signal, it is true that when performing convolution, one needs to allow the output length to grow from n to n*2-1 samples in the output.

Deconvolution, if it is perfect, can shrink the result back form n*2-1 to n again. And this is the case whether you do it by FFT division, or by multiplying by the IPSF - deconvolution by convolution. However, with rounding noise and other distortions, this can't be relied upon.

Mark R


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.