# Tag Info

44

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

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 ...

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)... 13 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: 13 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{... 10 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 (... 10 A transform (FT or Hilbert, etc.) doesn't create new information from nothing. It only represents the information already present in a different way. The "information we 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 ... 8 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 ... 7 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 ... 6 Great answers already, but I wanted to add that converting a signal to its analytic version is easy in the digital domain (the half band filter required has half of its coefficients equal to zero), but once there, the sample rate can be cut in half, essentially splitting the processing into real and imaginary paths. Obviously, there is a cost here, and some ... 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 You have to use the following form of Parseval's identity:$$\int_{-\infty}^{\infty}x(t)y^*(t)dt=\int_{-\infty}^{\infty}X(f)Y^*(f)df\tag{1}$$where ^* denotes complex conjugation, and where X(f) and Y(f) are the Fourier transforms of x(t) and y(t), respectively. With y(t)=\hat{x}(t) and Y(f)=-j\,\textrm{sgn}(f)X(f), we get from (1)$$\int_{...

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

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 ...

5

More taps. You don't have anywhere near enough taps for a filter that steep. Start large with 8192 or so cut to desired accuracy, if needed Due to the low number of tabs you are seeing the effect of "circular" hilbert transform. See for example: http://andrewduncan.net/air/ How do you know you have zeros outside the unit circle? Calculating the roots of a ...

4

As you already know, the two methods are theoretically identical if there's no noise. If there is out-of-band noise then the low pass filters in method A will further suppress the out-of-band noise, whereas there's no such noise suppression with method B. This would be one advantage of method A over method B. Note, however, that the phase splitter in method ...

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 ...

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

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

As already explained in other answers that Hilbert transform is used to get anaytic signal which can be used to find envelope and phase of signal. Another way of looking Hilbert transform is in frequency domain. As real signal have identical positive and negative frequency components, therefore in analysis this information is redundant. Hilbert Transform ...

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