17

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


16

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


11

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


8

"Is there any practical application?" Definitely yes, at least to check code, and bound errors. "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)\right)=x(-t)$ (up to a potential scaling factor). However, it can be ...


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


5

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


4

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


3

[Update: I mentioned a possible +3dB processing gain by including the Hilbert Transform prior to DDC for the case of a real IF signal in the first version of this post, which @MattL questioned so I dug into this further and confirmed that there is no such processing gain, so the only advantage to doing that would be to simplify filtering since it would ...


3

Hm well, technically it is some kind of envelope: it oscillates between hilbert(x) and -hilbert(x). Your examples (dashed lines are $\pm$hilbert(x)): I'm assuming you're looking for something smoother. Matlab has a function called envelope where you have various ways of controlling how the envelope is extracted. Not sure if there is a Python equivalent. ...


3

I am not a signal processing expert, but I have made it a good practice not to mix concepts. There is something called the Hilbert Transform, and there is an analytic signal. Here is what I do to compute the Hilbert Transform. Starting with amplitude sampled values, equally spaced samples, the time-domain signal is placed in an array of $N$ locations of ...


2

I don't know python. But theoretically, Hilbert transformation is done by: Real part of the signal Rotating the phase of the signal by 90° Analytical signal = real + i*(rotated signal). Envelope is a distance function. It's the distance between the center of the analytic signal to the amplitude of the sample. Instantaneous frequency is the angle. So, I ...


2

You can't design a filter that creates a phase shift that's constant with frequency for real valued input (if that's what you are trying to do). A Hilbert transformer appears to be doing this. However, the problem is, you can't implement a perfect Hilbert transformer since it's non causal with an infinite length impulse response. The tricky part is that ...


2

From the mathworks documentation of the function envelope(): The filter is created by windowing an ideal brick-wall filter with a Kaiser window of length fl and shape parameter $\beta = 8$. So without hacking the function you can't directly get the filter coefficients, but you can easily find them yourself by just doing what they do, i.e., windowing the ...


2

Usually an IQ signal is generated from a real (RF, AF, etc.) signal by a radio (by quadrature heterodyne, Tayloe demodulation, complex vector arithmetic, or otherwise). However, if you need IQ data, and the radio only generates I (or real) component samples, a Hilbert transform can be used to generate “fake” Q components (an approximation by making some ...


1

One technique that I've seen used in determining bearing faults is using the kurtosis of the vibration signal. You can track as a function of time what Wikipedia calls the sample excess kurtosis. This is the kurtosis that is different from the kurtosis you would see if the signal was Gaussian distributed. The sample excess kurtosis is defined as: $$ \frac{...


1

(I am relatively new to this field of study as well, but here is my input which I hope is of help). Frequency analysis techniques should be chosen that reflect the characteristics of the system you use. Fourier analysis in this way assumes that the data is stationary for each sample interval over which the data is collected. As you only take the data in 10 ...


1

You could use a SOGI-based PLL. They are used for single-phase power systems. https://www.researchgate.net/figure/Diagram-of-the-SOGI-based-PLL-SOGI-PLL_fig3_224165889 You could use the Vd and Vq output, Vd would correspond to your input, and Vq would be your input shifted by 90 degrees.


1

There are many applications for the analog equivalent of the Hilbert Transform, often implemented with “90 degree power dividers” also referred to as “quadrature splitters” as well as broadband variants implemented with phase tracking networks. One application is single sideband frequency translators done with IQ mixers; I have another posting that details ...


1

The phase jumps by $\pi$ at exactly the point where the magnitude of the analytic signal has a zero. Note that the phase of any complex signal jumps by $\pi$ if its trace moves through the origin of the complex plane. This has nothing to do with the signal being "well behaved" or not. The figure below shows the magnitude and the (unwrapped) phase of the ...


1

A Hilbert Transformer is an acausal linear time-invariant (LTI) filter. Being LTI it has all of the things an LTI filter has: the output is the convolution of the input against an impulse response. And it has a frequency response with magnitude and phase. But being acausal, that means that the impulse response begins to respond before the impulse hits ...


1

This information was provided by the user "Birdwes", but he didn't have enough reputation to post it himself so I will post it here for him because it does seem relevant and useful. "I do not have enough points in this forum to add a comment, so I'm doing it here: take a look at the source code for Accord.Math Hilbert Transform and you will see why this can ...


1

Your code does what you ask it do and the result look fine to me. It would be helpful to state why you think this is wrong and what you did expect instead. Envelope detection using Hilbert Transform works well for narrow band signals, (Amplitude modulation for example), but it typically does not do well for broad band signals as you do have here. You ...


1

The real part, the Hilbert transform and the derivation are all operators that commute. So you can move the derivative just close to the function.


1

There's not much need for complicated calculations. If you have the zero-delay frequency response $H(e^{j\omega})$ as defined in the first equation of your question, the frequency response with a linear-phase (constant delay) is given by $$H_d(e^{j\omega})=H(e^{j\omega})e^{-j\omega\tau}=e^{-j\left(\frac{\pi}{2}\textrm{sgn}(\omega)+\omega\tau\right)},\qquad \...


1

I forgot about the property of a dirac delta function: $f(t)\delta (t)=f(t)|_{t=0} \delta (t)=f(0)\delta (t)$ $Y(\omega)=F\{x(t-\frac{\pi}{2})\}=X(\omega)e^{-j\omega\frac{\pi}{2}}=(\pi \delta(\omega-1)+\pi \delta(\omega+1))e^{-j\omega\frac{\pi}{2}}=\pi \delta(\omega-1)e^{-j(1)\frac{\pi}{2}}+\pi \delta(\omega+1)e^{-j(-1)\frac{\pi}{2}}=-j\pi \delta(\omega-1)+...


1

I did use Differential Evolution to calculate the coefficients. But you can re-design the filter pair easily using the HIIR library by Laurent de Soras (its source code will automatically unzip to a subdirectory hiir). You can use this C++ HilbertDesign.cpp source and compile with g++ using the compile-command quoted on the first line: // -*- compile-...


1

Are you looking for already available, or you want your own specifically customized? You can try mine, it is called irolz, google it and you find it. There is an explanation, but you have to be an expert in data compression to customize the code. Also you can try another my code ezcodesample.com/abs/abs_article.html it works well for small alphabets. For ...


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