Showing results for 
Search instead for 
Did you mean: 

How to implement two dimensional short-time Fourier transform ( 2-D STFT), 2-D Gabor filter in the LabVIEW 2019?


Dear all,

We have a short-time Fourier transform ( STFT), and Gabor filter VI programs are available in an advanced signal processing toolkit. Similarly, is there any possibility of 2-D STFT and 2-D Gabor filter VI programs in LabVIEW. If we don't have these VI programs in the LabVIEW, How we could proceed to implement these 2-D filters in the LabVIEW cRIO (compact RIO) environment. Anyone can guide me in this problem.


Thanks and regards


0 Kudos
Message 1 of 5

I know about the Short-Time Fourier Transform of a signal, which is a 2-D plot of the signal spectrum as a function of time (sometimes called Time-Frequency Analysis), and I think there are functions in LabVIEW that can perform this (but it helps to both understand LabVIEW and also Signal Theory), but I've not heard of 2-D STFT (which sounds, to me, like looking at a 3-D representation of how a 2-D Fourier Transform changes as a function of time).  I'm pretty sure that here is no LabVIEW function to do this.  


Bob Schor

0 Kudos
Message 2 of 5

Taking a guess, I wonder if you mean you'd like to consider the simultaneous behaviour of the FFTs of two different physical signals (for example, vibration in X and Y directions, leading to the "2D" mention).


If so, I think you may still want to use the same VIs, but you'll need to consider how to combine your outputs to give the desired display. Like Bob_Schor said, this might result in a 3D plot.

0 Kudos
Message 3 of 5

Thank you so much for your advice.

Is it possible to implement a time-frequency analysis for a 2-D signal (images)  in the LabVIEW environment?. kindly share your views about this problem. Incase if possible, what is the better approach to computing a time-frequency analysis for images (2-D signal)?

0 Kudos
Message 4 of 5

@NAGINENI wrote:

Is it possible to implement a time-frequency analysis for a 2-D signal (images)  in the LabVIEW environment?. kindly share your views about this problem.

I would say that it is possible (as you can certainly state the problem, and can come up with an algorithm that allows you to do the computation), but displaying the result may give you some problems, as you need to create a plot in four dimensions (hard to do on our present 2D display devices).


To explain:  Consider a 1D signal whose spectrum you wish to know.  You do an FFT, and produce a 2D plot of Amplitude (or sometimes Power) as a function of Frequency.  Now you want to ask "How does the Spectrum vary over Time?", so you do something like a Short Time Fourier Transform and let Time be one of your variables, resulting in a 3D plot with Time and Frequency being the independent variables and Amplitude (or Power) being the dependent variable.  This is often plotted as an Intensity Graph, with Time on the X axis, Frequency on the Y, and Intensity as the Z axis for Amplitude/Power.


Now you want to do the same thing for a 2D Transfer function of an Image, which starts out as a 3D plot, with two Spatial Frequencies as the X and Y axes and Amplitude/Power typically plotted as Z/Intensity.  How are you going to show Time?  One way, of course, is to make a Video and let Time be "time".  Keep Spatial Frequencies "isolated" from Time.  For example, suppose you are acquiring Videos at 30 images/second.  Take each Image and do a 2D transform of it, creating a 2D Intensity "Image", and save these Images in an AVI file that you can view at 30 images/second.


Bob Schor 

Message 5 of 5