Maci Posted January 31, 2009 Report Share Posted January 31, 2009 Hello everybody, I am using an FFT function to analyse a time series that I am reading from memory. I am using a FFT function that produces a spectrum whose frequency range complies with the Nyquist criterion. I want to lower my highest frequency of interest to increase the spectral resolution. Would someone point at a function in the function palette which allows to input the the maximum frequency. In my application, I need a resolution on the order of a fraction of a hertz. Please, help. Quote Link to comment
Norm Kirchner Posted January 31, 2009 Report Share Posted January 31, 2009 How long are you acquiring for. in sec The bin size of your FFT is dependent on the timespan of your acquisition. Now I am not a signal processing guru, but I am working my way up the treacherous part of the learning curve, so perhaps I'm not getting your point. But step 1, how long are you acquiring for? If you want 1hz resolution I believe you need 1 sec worth of samples. Your resolution is 1/(acquisition time) Quote Link to comment
Anu Kalidas Posted January 31, 2009 Report Share Posted January 31, 2009 You can use Zoom FFT to get higher resolution. This VI is available with the sound and Vibration Suite. Quote Link to comment
Mads Posted January 31, 2009 Report Share Posted January 31, 2009 As previously mentioned the resolution is decided by Sample rate / number of samples, if e.g. I sample 2000 samples at 4 MS/s the resolution will be 4000000/2000 = 2000 (Hz) It is possible to improve the situation a bit by zero padding the signal though, this is often referred to as spectral interpolation. Let's say that you have sampled 2000 samples - prior to running the FFT you add n * 2000 zeroes to the sample array. If n =1 this will double your resolution...however we are really just talking about an interpolation effect here so there is a limit as to how much you actually gain. Mads QUOTE (Maci @ Jan 30 2009, 04:39 AM) Hello everybody, I am using an FFT function to analyse a time series that I am reading from memory. I am using a FFT function that produces a spectrum whose frequency range complies with the Nyquist criterion. I want to lower my highest frequency of interest to increase the spectral resolution. Would someone point at a function in the function palette which allows to input the the maximum frequency. In my application, I need a resolution on the order of a fraction of a hertz. Please, help. Quote Link to comment
Neville D Posted January 31, 2009 Report Share Posted January 31, 2009 There is a Zero padder VI somewhere in the signal processing pallets. Also, if padding, add zeroes upto a power of 2 to get a total of 2^N elements in your time array so that a more efficient (faster) FFT algorithm is used. Neville. Quote Link to comment
Maci Posted February 2, 2009 Author Report Share Posted February 2, 2009 QUOTE (Norm Kirchner @ Jan 30 2009, 12:37 AM) How long are you acquiring for. in secThe bin size of your FFT is dependent on the timespan of your acquisition. Now I am not a signal processing guru, but I am working my way up the treacherous part of the learning curve, so perhaps I'm not getting your point. But step 1, how long are you acquiring for? If you want 1hz resolution I believe you need 1 sec worth of samples. Your resolution is 1/(acquisition time) Thank you, guys, for your prompt input. You all are saying the same thing and I agree. I think that I have enough data points to satisfy the basic Nyquist criterion, which requires that the data be sampled (at least) at twice the highest frequency of interest to avoid aliasing. In my case, I am sampling at 50kS/s. The FFT function I am using is giving me by default a spectrum with a range up to 25kHz. What I want to do is to reduce my frequency range to, say, 12.5kHz. This is in fact equivalent to sampling the data at 4 times the highest frequency of interest. So, I nead help locating a function in the LV-palette labyrinth which will allow me to input something (maximum frequncy, sampling rate, number of samples, or a combination of these). That way, I inclease the resolution. I hope my question is clearer. Quote Link to comment
Neville D Posted February 4, 2009 Report Share Posted February 4, 2009 QUOTE (Maci @ Feb 1 2009, 05:00 PM) What I want to do is to reduce my frequency range to, say, 12.5kHz. This is in fact equivalent to sampling the data at 4 times the highest frequency of interest. So, I nead help locating a function in the LV-palette labyrinth which will allow me to input something (maximum frequncy, sampling rate, number of samples, or a combination of these). That way, I inclease the resolution. I hope my question is clearer. I think you already have all the information you need from the posts above. If you need to add 4x pts to your current time record, pad with zeroes. In the search button above pallets type "zero pad" and find the function. Search around in the "Signal Processing" pallets for other functions that might be of use to you. After all, you have to do some of the work yourself. N. Quote Link to comment
Maci Posted February 5, 2009 Author Report Share Posted February 5, 2009 QUOTE (Neville D @ Jan 30 2009, 02:45 PM) There is a Zero padder VI somewhere in the signal processing pallets. Also, if padding, add zeroes upto a power of 2 to get a total of 2^N elements in your time array so that a more efficient (faster) FFT algorithm is used. Neville. Let paraphrase myself. I have more data points than I need for the spectrum I am after (3kHz). What I cannot find in the palettes is a function that will allow me to use up to 4 times the Nyquist frequency as a sampling rate. I can do this well in Excel, but the maximum number of points that the FFT algorithm in Excel is limited to 4096 points, which is not enough for the kind of frequency resolution I am after. Please, try again. Quote Link to comment
Norm Kirchner Posted February 10, 2009 Report Share Posted February 10, 2009 Maci, You have two basic knobs to deal with. Signal Acquisition Time Signal Sampling Rate If you want a finer resolution the you MUST capture for a longer time. If you are concerned about data size and time to process the FFT then you can utilize the 'Zoom FFT' (See more details here) But the jist of the Zoom is that you still sample for a longer time(to get finer frequency resolution), but a lower sampling rate accompanied with band filtering is applied and you 'zoom' into a section of the spectrum. So the net effect is that you don't decrease your capture time (in fact you increase it) but you decrease the data size and processing power needed. Hopefully that gives a better picture of what we're getting at. So for your situation, where you're sampling at 50k, you're taking unneeded samples. But if there is significant spectral content above 1/2 what you would like to sample at (12.5k) then it would get aliased into your signal and skew your results. That is where the filtering of the zoom FFT comes into play. So for you, go ahead and turn down the sampling rate to what you really want, sample for a longer time and put the data into a zoom fft function and you'll get what you're looking for. Enjoy Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.