Filtering out high frequency content from test data
Mostrar comentarios más antiguos
I've got test data in an Excel spreadsheet which is a time history from an accelerometer. I would like to filter out the high frequency content of this data which will smooth the data. From my searches so far it looks like I need to read in the data, run an FFT to see the frequencies and then use the linear filter with the cut-off frequency I choose from the FFT result. Is this correct?
I loaded my Excel data into Matlab and tried to use the matlab example given in the Help guide for the linear filter, but Matlab failed at the timeseries stage and I don't know why. I looked at my test data and at the start there's some data which is zero before the acceleration occurs and that the sample frequency at the start differs at about the 9th decimal place. Is this going to be a problem? I guess this process has been done lots of times before so is there a simple rountine for doing this?
Thanks
Stuart
Respuestas (3)
Wayne King
el 30 de Sept. de 2013
Editada: Wayne King
el 30 de Sept. de 2013
0 votos
I would not worry about the sampling frequency differing at the 9th decimal place. Can you provide some more specifics:
When you read the data into MATLAB, is the accelerometer data just a (double-precision) vector?
If that is true, then it should be easy to look at the Fourier transform magnitudes as you suggest and pick a reasonable place to put your cutoff frequency.
Since you plan on lowpass filtering the data, I would also not worry about the intial zeros.
Can you attach just the accelerometer data for us to look at?
S Wybrow
el 30 de Sept. de 2013
0 votos
1 comentario
Wayne King
el 30 de Sept. de 2013
OK, it sounds like it will be very easy to do if you have the Signal Processing Toolbox.
If you don't have the Signal Processing Toolbox, you can still design a simple lowpass filter with base MATLAB.
Image Analyst
el 30 de Sept. de 2013
A simple low pass filter is just a box filter where you convolve your signal with a flat pulse - basically a sliding mean.
windowWidth = 9; % Whatever you want.
denoisedSignal = conv(signal, ones(1, windowWidth), 'same');
Fourier filtering would be good if you want a band pass filter because you have periodic noise but of course it will work with simple low pass filtering too - it just takes longer than a convolution. Another option is a median filter (a non-linear filter) which gets rid of impulse noise but doesn't blur out true edges or steps like a sliding mean filter would.
You could also look at John D'Errico's SLM or the curve fitting toolbox if you need something more sophisticated.
Categorías
Más información sobre Multirate Signal Processing en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!