Data filtering one-second averages

3 views (last 30 days)
Chad Wiggins
Chad Wiggins on 28 Mar 2016
Commented: Chad Wiggins on 30 Mar 2016
I have a data set that is collected at about 6.5hz. In the processing of the data, I put the data into Excel and just do a 3 second running average for the entire data set to smooth out the data. Next I would like for a Matlab program to just pick one point per second. I was thinking it could be the first data point each second. For example, if the times for the first second are 1.088, 1.242. 1.398, 1.553, 1.706, and 1.863, I would just want to pull the row of data at 1.088 and output it into a new a variable.
What would be the best way to go about doing this. If there's code to automate the 3 second running average (about 20 lines in excel), that'd be awesome too. Thanks!
  3 Comments
Chad Wiggins
Chad Wiggins on 29 Mar 2016
Pretty much, I just want to pull one line of data each second. In the case above, I would want it to have the line where time = 0, 1.088, 2.020, 3.103, 4.033, and 5.12
This will just downsample the data and make it easier to work with and do different analysis with.
Help a little?

Sign in to comment.

Accepted Answer

MHN
MHN on 30 Mar 2016
Edited: MHN on 30 Mar 2016
Load your data in a matrix which the name is Data, then
EndSecond = 3;
NewData = zeros(EndSecond+1,5);
for i = 0:EndSecond
ind = find(Data>=i & Data<i+1,1,'first');
NewData(i+1,:) = Data(ind, :);
end
  2 Comments
Chad Wiggins
Chad Wiggins on 30 Mar 2016
Only change you need to make is to add in the first line of the for-loop statement. must add a "-1" to keep from getting an error
for i= 0:EndSecond-1

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!