Data segmentation for Accelerometer time series data
6 views (last 30 days)
Show older comments
I have time series data collected from a cellphone accelerometer sampled at 500Hz. The data is collected from the phone of a wheelchair user as he goes over a platform of a certain thickness. The abrupt change in height causes spikes in the data stream which is the event. Each sample has two events, the user going up the platform and when he comes down the platform. What would be a good way to filter noise and perform data segmentation?
10 Comments
Answers (2)
Philipp Doblhofer
on 29 Dec 2017
Hello,
one simple option is to set a threshold value for the signal power of your data. To reduce the noise level you can apply for example a moving average filter.
close all
clc
data=csvread('acc', 26, 0);
% Width of the moving average window (filter)
window_width = 50;
% Threshold level for the signal energy
threshold = 0.005;
% Remove constant offset from data and normalize
data(:,3) = data(:,3) - mean(data(:,3));
data(:,3) = data(:,3)/max(data(:,3));
% Calculate signal power
signal_power = data(:,3).^2;
% filtered data
filtered_signal_power = movmean(signal_power, window_width);
% event detection
event = filtered_signal_power > threshold;
plot(data(:,3))
hold on
plot(event)
0 Comments
Chris Turnes
on 2 Feb 2018
For the segmentation, if you have R2017b, the new ischange function should help to separate the events.
0 Comments
See Also
Categories
Find more on Time Series Events in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!