How to remove noise from strain data?

I am fairly new to DSP so I have no idea what am I doing after reading so many papers and stuff. I was given a set of strain data as shown below and asked to remove the noise in these data using MatLab.
As you can see the time is from 0 to 480 MSec and end at 0 for the last data. The total data collected is 1001.
Below is a plot of the first set of data in MatLab that i trying to use FFT to remove high frequency noises but I keep getting error and not sure how to do it. I tried following Youtube tutorial but I am not sure how to input my data into the script.
Can anyone teach or guide me how to remove noise in these data ? I don't know if FFT is a best method for noise removal but it seems to be one of the recommended technique from what I have read. Please advice.
My ultimate goal of my thesis is to develop a normalisation tool for SHM data with techniques such as regression analysis, neural network, novelty detection and more.
Any further information required in order to help, please ask me, I will provide as much information as I could. Thank you all so much.
Edit: Below shows a part of the waveform zoomed in.

Answers (2)

You could try just taking a moving average with conv():
kernel = ones(51, 1); % Bigger first args give more smoothing.
smoothedSignal = conv(noisyColumnVector, kernel, 'same');

6 Comments

Hi Image Analyst,
Thank you for your reply.
As I am really new to this, I don't really know how to do that but if you have a video tutorial or any kind of tutorial regarding of it, it would be really helpful.
Thanks
The first thing to do is read the documentation and try their examples
help conv
doc conv
Next search BOTH NEWSGROUP and ANSWERS. Note the column to the right on this page which may have some helpful examples.
Greg
Do you have your data into MATLAB yet? Like, have you called readtable or xlsread yet?
I have imported the data into MATLAB workspace but I am not sure if I did what you mention.
Well show your code and upload your data. My code assumed you read your data into a variable called noisyColumnVector. So, did you?
kernel = ones(51, 1); % Bigger first args give more smoothing.
smoothedSignal = conv(RF01VDA, kernel, 'same');
I changed the noisyColumnVector to the name of first data set RF01VDA, not sure if I am allowed to do so and got a smoothed data. Below is the plotted graph of the smoothed data. Is that correct?
I imported my data which can be seen above using the "Import Data" in MATLAB and imported each set of data as column vector as shown in the 2nd figure below.
Sorry, I am really new in these so it's a little harder for me to understand some of the function and what you actually mean sometimes.

Sign in to comment.

Te first thing to do is to take the fft of your data. That will tell you if your noise is band-limited. If it is, you can use a discrete filter to filter out the noise (or a significant part of it).
There are several ways to design filters in MATLAB, including dfilt and designfilt. My procedure for designing IIR filters is here: How to design a lowpass filter for ocean wave data in Matlab? It contains general design guidelines as well as specific approaches.

1 Comment

Thank you for your reply. I will look at your procedure and get back to you if I have any question.

Sign in to comment.

Asked:

on 28 Jul 2016

Commented:

on 29 Jul 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!