09-23-2013 11:37 AM
Hi.
I am trying to find the frequency content of an incoming signal from a geophone which has a 500 Hz vibrational signal on it. However, using two different methods, I find that I am only given a large DC component for the frequency spectrum of the signal. I have two different methods set up in a case statement to make it easy to try each one without having to rewrite code. The first method is to just use the FFT function (in the attached picture I have a high-pass filter on the front to try and block the DC signal, but this only blocked the DC signal and did not make the 500 Hz signal any more noticeable). The second method uses the Power Spectrum function with my array data converted to waveform for input.
The first picture shows the two different methods I tried. The 1st picture with graphs is the result I get using the FFT method. The 2nd picture with graphs is the result I get using the Power Spectrum method. Any information or advice would be greatly appreciated. I can provide further information upon request.
Thanks.
09-23-2013 12:49 PM
Well, first thing, it would be a lot easier for someone to help you if you were to attach your VI to a post than to send those little pictures. Take out anything that is irrelevant or proprietary, fine. Please set up labels and scales for your axes so they reflect your data, don't just use the default labels and arbitrary scales. Taking a wag that your bottom "time" axis is scaled to the number of data points (0-9999) and your signal is actually a 500 Hz sine, you are actually only taking about 200 points per wave, instead of 600, like your VI picturette says. Even though you would certainly be above the Nyquist frequency for sampling, it throws everything else into doubt because you haven't described it accurately.
Second, if I were to also assume that the tunnel into your case structure is the array you want to get frequency from (here's where attaching the working VI comes in), you are feeding one point at a time into the FT or PS functions. With one point at a time, it'll be real hard to get any more than a DC frequency. You need to feed the whole array in for the spectral analysis functions, or at least a larger portion of it. You've just got a single point, followed by 2999 zeros, at least for the FFT portion.
Cameron
09-23-2013 01:31 PM
The array being fed into the for-loop is 2-d, so the auto-indexing produces a 1-d array.
I'll attach the VI here for further clarification.
Thanks.