38

One application of the Hilbert Transform is to obtain a so-called Analytic Signal. For signal $s(t)$, its Hilbert Transform $\hat{s}(t)$ is defined as a composition: $$s_A(t)=s(t)+j\hat{s}(t) $$ The Analytic Signal that we obtain is complex valued, therefore we can express it in exponential notation: $$s_A(t)=A(t)e^{j\psi(t)}$$ where: $A(t)$ is the ...


22

No, taking the Fourier transform twice is equivalent to time inversion (or inversion of whatever dimension you're in). You just get $x(-t)$ times a constant which depends on the type of scaling you use for the Fourier transform. The inverse Fourier transform applied to a time domain signal just gives the spectrum with frequency inversion. Have a look at ...


17

Whilst taking the Fourier transform directly twice in a row just gives you a trivial time-inversion that would be much cheaper to implement without FT, there is useful stuff that can be done by taking a Fourier transform, applying some other operation, and then again Fourier transforming the result of that. The best-known example is the autocorrelation, ...


14

"Is there any practical application?" Definitely yes, at least to check code, and bound errors. Especially for huge data or a large number of iterations "In theory, theory and practice match. In practice, they don't." So, mathematically, no, as answered by Matt. Because (as already answered), $\mathcal{F}\left(\mathcal{F}\left(x(t)\right)...


12

In layman terms, the Hilbert transform, when used on real data, provides "a true (instantaneous) amplitude" (and some more) for stationary phenomena, by turning them into "specific" complex data. For instance, a cosine $\cos(t)$ is inherently of amplitude 1, which you do not see directly, since it visually wiggles between $-1$ and $1$, and periodically ...


12

Nice question! It uses one of my favorite trig identities (which can also be used to show that quadrature modulation is actually simultaneous amplitude and phase modulation). The impulse response of the system described above is given by: Block diagram:


12

2D Fourier transform (2D DFT) is used in image processing since an image can be seen as a 2D signal. E.g. for a grayscale image $I$, $I(x,y)=z$, that means that at the coordinates $x$ and $y$ the image has intensity value z. Look at this for example: https://ch.mathworks.com/help/matlab/ref/fft2.html Try this: x=imread('cameraman.tif'); X=fft2(fft2(x)); ...


11

The error lies in the assumption that if $g(t)$ is the Hilbert transform of $f(t)$, then the Hilbert transform of $f(-t)$ must be $g(-t)$. This is not the case. Let $f^-(t)=f(-t)$. Then we have $$g(t)=\mathcal{H}\{f\}(t)=\frac{1}{\pi}\text{p.v.}\int_{-\infty}^{\infty}\frac{f(\tau)}{t-\tau}d\tau\tag{1}$$ and $$\begin{align}\mathcal{H}\{f^-\}(t)&=\frac{...


9

The analytic signal produced by the Hilbert transform is useful in many signal analysis applications. If you bandpass filter the signal first, the analytic signal representation gives you information about the local structure of the signal: phase indicates the local symmetry at the point, where 0 is positive symmetric (peak), $\pi$ is negative symmetric (...


8

A transform (FT or Hilbert, etc.) doesn't create new information from nothing. Thus, the "information you get", or the added dimension in the resultant analytic complex signal provided by a Hilbert transform of a 1D/real signal, is a form of summarization of the local environment of each point in that signal, joined to that point. Information such as local ...


7

The description complex helical sequence indicates that it is a sequence of complex numbers that, when plotted in three dimensions (real part, imaginary part, position in the sequence), resembles a screw, or helix. See this illustration (by RobHar, on Wikimedia Commons): From a mathematical point of view, all signals can be decomposed into complex ...


6

Check out Julius O. Smith III's write up. There is a Hilbert transform relationship between the magnitude response, $G(\omega)$, and the phase response, $\theta(\omega),$ of the associated minimum phase filter. If $$ H(\omega) = G(\omega) \exp(\jmath \theta(\omega)) $$ then $$ \ln( H(\omega) ) = \ln(G(\omega)) + j\theta(\omega) $$ and $$ \theta(\omega) ...


6

Implementing a Hilbert transform enables us to create an analytic signal based on some original real-valued signal. And in the comms world we can use the analytic signal to easily and accurately compute the instantaneous magnitude of the original real-valued signal. That process is used in AM demodulation. Also from the analytic signal we can easily and ...


6

MBaz's answer is correct. I would just like to add another way of thinking about it, of course leading to the same result: Note that this system can be approximated quite well in a practical (discrete-time) implementation. Just take a well designed FIR linear-phase Hilbert transformer of length $2N+1$, and add a delay of $N$ samples to the other signal path....


6

Complex signals are a special case of multidimensonal signals (where the dimension is two). A lossy approach tackling compression of multidimensional signals is vector quantization. A very good resource is the book: "Vector Quantization and Signal Compression", co-authored by Robert M. Gray. Vector Qquantization is a classic lossy source coding technique ...


6

This is achievable with two parallel all pass filters. The two all pass filters synthesize an odd ordered low pass filter whose pass band extends from -90º to +90º in the z-domain. (I will discuss this below). $$ G_{lowpass}(z) = \frac{A_0(z)+z^{-1}A_1(z)}{2} $$ The low pass filter is then rotated by +90º so that its pass band extends from 0º to 180º, which ...


6

I would use a linear phase FIR Hilbert transformer, and use block processing, such as the overlap-add method. That means that you partition the input signal into contiguous non-overlapping blocks and compute the convolution of each block with your filter impulse response. The results are then overlapped and added. Overlap occurs because the result of the ...


6

It works fine for me: from scipy.signal import hilbert import numpy as np from matplotlib.pyplot import plot sensor = np.loadtxt('signal.txt') plot(sensor) analytical_signal = hilbert(sensor) plot(analytical_signal.real) plot(analytical_signal.imag) amplitude_envelope = np.abs(analytical_signal) plot(amplitude_envelope) What are you doing differently? ...


6

There are several reasons why the two results don't match: the coefficients of the FIR Hilbert transformer are wrong the FIR Hilbert transformer is too short to even come close to the performance of the FFT-based implementation the frequency of the input signal is too low for the FIR Hilbert transformer to perform properly. A FIR Hilbert transformer always ...


6

To answer the second question, in digital communications there is a technique in use in cellphones right now that makes good use of applying the IFFT to a time-domain signal. OFDM applies an IFFT to a time-domain sequence of data at the transmitter, then reverses that with an FFT at the receiver. While the literature likes to use IFFT->FFT, it really makes ...


6

So the point is that "classically", communications theory tends to be done in complex baseband, i.e. signals centered around 0 Hz, but not necessarily symmetric in spectrum. When you want to represent such signals, you need complex values. When you want to transmit such signals over the air, you need to: Convert them from digital to analog, mix the I(...


5

Depends on context. For strictly real-valued signals it sometimes refers to creating an analytic signal (see: http://en.m.wikipedia.org/wiki/Analytic_signal ) from a signal with no imaginary component, and taking the magnitude (or complex with both magnitude and phase) envelope of that hypothetical now complex creation.


5

The Hilbert transform can be applied to complex functions of a real variable. E.g., the Hilbert transform of the complex exponential $e^{j\omega_0t}$, $\omega_0>0$, is given by $$\mathcal{H}\{e^{j\omega_0t}\}=-je^{j\omega_0t},\qquad\omega_0>0$$ The problem you encounter has to do with Matlab's implementation of the function hilbert.m. It is designed ...


5

I have insufficient reputation to answer in the comments, so here goes: I believe Olli calculated his coefficients using some kind of genetic algorithm (I don't know the details). All I did was plot (from Olli's coefficients) the resulting pole/zero positions in the z-plane, and then take the logarithm to transform into the s-plane. Olli's poles and ...


5

A Hilbert transform is dispersive, as in any constant phase shift over frequency, which will distort a signal that has bandwidth. This is because a fixed DELAY, which would have no distortion, has linear phase versus frequency. If you fix the phase versus frequency to be constant (as we do in a Hilbert transform), the delay at each frequency will be ...


4

The analytical signal approach works very well for chirp signals. It stops working for mixtures of different tones. Taking the absolute value is a nonlinear operation that introduces cross terms and thus distorts you envelope. I'd say that the envelope of a broad band signal as a property that is not well defined. First you need to define what you actually ...


4

The short answer: with a finite convolution you can't calculate the Hilbert transform exactly. The long answer: You will have to make approximations and decide what types and amounts of error you can live with. This will depend heavily on the application, the signals itself and what you are trying to do with the results. This paper may give good guidance on ...


4

A system that shifts the input signal by 90 degrees is a Hilbert transformer. For a single sine wave, a 90 degree phase shift is simple (e.g., sine becomes cosine), but for a general signal you need a Hilbert transformer. Check the basics here. It can be implemented using an FIR (finite impulse response) digital filter. Such a filter can be designed in ...


4

Not really an answer but maybe helpful: Personally I found that the concept of instantaneous frequency is only useful for sufficiently narrow band signals. Consider the simple example of two steady sine waves, say 100Hz and 934Hz. In this case you can certainly define and calculate the instantaneous frequency (in whatever way you want) but what should the ...


4

At least f2 and f3 seem to work appropriate on a pure chirp signal, but all methods, including f2 and f3 seem to fail horrible, when it comes to more than one frequency in the signal. In reality having more than one frequency in a signal is rather always the case. So how can one get the (more or less) correct instantaneous frequency? as Hilmar suggests, the ...


Only top voted, non community-wiki answers of a minimum length are eligible