I have a black box-like deterministic model $h(t)$, which provided with a real-valued input $x(t)$ returns a real-valued response $y(t)$. The model should produce little to no noise. My goal is to determine an input signal $x^*(t)$ that produces a specific output $y^*(t)$.

I'm trying to use deconvolution in the frequency domain to do this, as explained in this answer. So basically I'm estimating $X^*(\omega)$ by multiplication and division of the signals' FFTs:

$$ X^*(\omega) = Y^*(\omega) \,\, \frac{X(\omega)}{Y(\omega)}, $$

and then performing an IFFT to recover the time-domain signal $x^*(t)$. I'm using MATLAB to do this.

The whole procedure is done iteratively, each time running the model with the newly determined input. But I'm facing a problem with the first few seconds of my input, which seems to be due to high-frequency components that should not be there.

To be clearer, this is a representation of what the output and the target look like after the first run, after four iterations and after seven iterations. Please take a look at the first few seconds of the signal.

Output comparison after one iteration

Output comparison after four iterations

Output comparison after seven iterations

What could be causing this? I apologise, should the question be trivial or old, but I'm pretty inexperienced in the field, so I searched but couldn't find a specific question. My knowledge of the lingo is also pretty limited, so that may be part of it.

  • $\begingroup$ As also mentioned in Hilmar's answer, you should check for very small values of $Y(\omega)$. I wouldn't be surprised if they cause the problems you see. $\endgroup$
    – Matt L.
    Commented Jan 26, 2023 at 17:42

1 Answer 1


Without seeing your actual data and code it's not easy to debug this.

A few things to consider.

  1. Dividing spectra requires you to have good signal to noise ratio over the entire frequency range. At frequencies where $Y(\omega)$ is small $1/Y(\omega)$ is very large and hence any noise would be greatly amplified there.
  2. Division in the frequency domain is circular de-convolution on the time domain. You probably need to manage this properly with zero-padding.
  3. Not all systems are invertible. To be precise: only a minimum-phase system is invertible (and the inverse is minimum phase too). The inverse of a non-minimum phase systems tends to be non-causal.
  • $\begingroup$ Thanks for this info. I would like to edit the question to add some data and code. What's the most useful way I can share the data, considering that the model itself is an external applications, and as such I am not able to share it? $\endgroup$ Commented Jan 26, 2023 at 16:11
  • $\begingroup$ You can share some example data as a Matlab or text file $\endgroup$
    – Hilmar
    Commented Jan 26, 2023 at 19:24

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.