This is not a duplicate of Filter secondary bounces of a pulse signal because in that question, a convolution model is finally not appropriate, whereas here, the question is about convolution.

Given the signal y below, is there a way to recover the original signal x (before convolution), without knowing the impulse response h?

Of course, additional hypotheses are required to avoid having an infinity of solutions. In the example below, we could reasonably assume that:

  • a) x is just one Gaussian

  • b) or, weaker assumption: x has only one local maximum (for the case x is a bell curve, but not Gaussian)

  • c) or another possibility: h[i] != 0 only if i = 20, 40, 60, 80, 100, ... (reasonable here by looking at the y plot and the period of the bounces)

Can we conclude with an algorithmic solution, in one of these 3 cases?

enter image description here

import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
x = np.zeros(200)
x[:50] = norm.pdf(np.linspace(-5, 5, 50))
h = np.zeros(120)
h[0] = 1
h[20] = 0.2
h[40] = 0.1
h[60] = 0.05
h[80] = 0.02
h[100] = 0.01
y = np.convolve(x, h)

2 Answers 2


What methods are there for such deconvolution problems,

None for the general case (without additional information). We can easily see this by looking at the frequency domain

$$y(t) = h(t)*x(t) \leftrightarrow Y(\omega) = H(\omega) \cdot X(\omega) $$

This is equivalent the the question "I know that $a\cdot b = 23.78$ what are $a$ and $b$?" There is an infinite amount of possible solutions.

and which additional assumptions would be needed to get a solution

There is no general answer here either. You can always try some heuristics but how far that gets you will depend a lot in your specific.

In your example you could probably squint at the signal and identify "this looks like a repeated Gaussian with a decay on the repeats". But there are infinite ways to generate the same output. A few examples

  1. One Gaussian with a six tap sparse FIR
  2. A once repeated Gaussian with a three tap FIR
  3. A twice repeated Gaussian with a two tap FIR
  4. The output signal as is with a unit impulse FIR

You have no way of telling which one it is, so you need some way to resolve the ambiguity.

  • $\begingroup$ Thanks for stating what I've been trying to explain so nicely + kindly! +1. I'll add that your 1-4 are results of models (or models themselves), just for OP to reconcile my terminology with yours. $\endgroup$ Mar 28 at 13:20
  • $\begingroup$ Thank you Hilmar. Yes of course, there is an infinity of solutions, I totally agree with your examples, The question is: are there any "reasonable" assumptions that allow us to conclude? Example: would there be an algorithmic solution if we assume that a) x is just one Gaussian, how would you do in this case? b) weaker assumption x has only one local maximum? $\endgroup$
    – g6kxjv1ozn
    Mar 29 at 9:39
  • $\begingroup$ I edited the question @Hilmar to make the necessity of these assumptions clearer. $\endgroup$
    – g6kxjv1ozn
    Mar 29 at 9:50

The problem you raised is called Blind Deconvolution.

In the general case indeed it is an ill posed problem.
Yet with a strong prior (Model for the signals / filters) you can get a good results.

If you model the signal as a linear combination of shifted Gaussians it can be solved iteratively (Though not globally) by solving 2 sub problems:

  1. Given h estimate x.
  2. Given x estimate h.

You can solve them for different k where k is the number of combinations.
The problem for x will be non convex problem as we need to estimate the shifts.

You may have a look at a similar problem very well known in the field of Image Processing: How to Solve Blind Image Deblurring with Total Variation (TV) Prior Using ADMM.

  • $\begingroup$ Thank you for your answer @Royi. More precisely, would you have a method in mind, in a few steps, for the example signal of my question, if we assume x is just one gaussian? Then I'll try to turn it into an algorithm and I'll post it. $\endgroup$
    – g6kxjv1ozn
    Mar 29 at 17:38
  • $\begingroup$ @g6kxjv1ozn, If it is a single Gaussian and unknown filter then the parameters of the problem are: Kernel, Shift, Scale. Just build the problem is least squares and solve for each parameter iteratively assuming the other 2 are known: Kernel -> Deconvolution, Shift -> Matched Filter, Scaling -> Single Variable LS. $\endgroup$
    – Royi
    Mar 30 at 6:49

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.