I have a time series measurement $v(t)$ from a physical nonlinear system and its power spectrum $E(f)$ look like the following enter image description here

From a theoretical point of view, the solution of the system is modeled as $$A(t) = |A|e^{i\phi(t)}$$ (of course the amplitude $|A|$ by itself is a function of $t$). This physical measurement corresponds to its real part, i.e., $$v(t) = \Re\big[A(t)\big]$$

Now I'm trying to construct the full complex expression, $A(t)$, from the measurement $v(t)$. I use Hilbert transform in MATLAB, A = hilbert(v), for this purpose. The result is shown below. In the figure, red line is $v(t)$, blue line is the imaginary part from Hilbert transform, black line is $|A|$, and green line is the amplitude of $v(t)$ naively extracted by spline interpolation. enter image description here The boundary issue is not the primary concern to me. But the Hilbert transform sort of overpredicts the imaginary part, and so the resulting amplitude $|A|$ oscillates significantly (especially for, say, $t>230$), compared to the more reasonable one (the green line). To me, I would expect $|A|$ from Hilbert transform to more or less agree with the green line.

With some digging, I think those peaks at higher frequencies are causing this trouble. I don't know if this signal counts as a broad-band signal so that Hilbert transform fails (as discussed in this and this). Anyway, I'd say that Hilbert transform does not give a reasonable imaginary part in this case for a proper construction of $A(t)$.

So, I am wondering if there is a better technique that can construct the complex $A(t)$ from the given real-valued measurement $v(t)$?



1 Answer 1


Clearly, $A(t)$ is the analytic signal of $v(t)$.

How so ? This is simply a conversion from cartesian to polar co-ordinates. Every complex signal can be written this way regardless of whether it's analytic or not.

But the Hilbert transform sort of overpredicts the imaginary part,

It does not. It calculates the correct imaginary part for an analytical signal. It's probably not what you expected but that's an issue with your model assumptions, not with the transform itself

so that Hilbert transform fails

The transform doesn't fail. It does what it is defined to do. Your result looks perfectly correct.

So, I am wondering if there is a better technique that can construct the complex A(t) from the given real-valued measurement v(t)?

First you need to define what $A(t)$ actually is. Your original definition is doesn't help since it applies to every complex signal on the planet. I think you want something like an "envelope" but you need to specify clearly what that is and what it isn't in the context of your specific application and requirements.

  • $\begingroup$ All I'm looking for is to construct $A(t)=|A|\exp[\phi(t)]$ from $v(t)$. Write this out $A(t) = |A|\cos(\phi) + i|A|\sin(\phi) = v(t) + iu(t)$, so I'm looking for this $u(t)$. It appears to me that $v$ and $u$ share the same phase $\phi$, and the envelope of $A$ is supposed to be the same of $v$, so I'd expect the envelope of $u$ would be the same as $v$. I was told that Hilbert transform is able to find $u$ from $v$; but from your comments, perhaps I'm wrong about this. Anyway, I have a hard time finding a way to do this, i.e., find $u$ from $v$. $\endgroup$
    – TurbPhys
    Commented Oct 19, 2022 at 15:55
  • $\begingroup$ Unless you have some application specific information, there is no way you can get $u$ from $v$. Could be zero, could be a sine wave, could be white noise, could be 17, could be anything. You simply have $A(t) = \sqrt{v^2(t)+u^2(t)}$ and $\phi(t) = \text{atan2}(u(t),v(t))$. This works for ALL possible choices of $v(t)$ and $u(t)$. If you can constrain the problem to something like $\phi(t) = \omega t$ and $A(t)$ is bandlimited to xxx, then something like the Hilbert Transform can work, but it really depends on what your actual constraints are. $\endgroup$
    – Hilmar
    Commented Oct 20, 2022 at 19:14

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.