35 lines
1.4 KiB
Mathematica
35 lines
1.4 KiB
Mathematica
|
function [dataAccCut,dataAccCut_filt,StrideTimeSamples] = StepDetectionFunc(FS,ApplyRemoveSteps,dataAcc,dataAcc_filt,StrideTimeRange)
|
||
|
%% Step detecection
|
||
|
% Determines the number of steps in the signal so that the first 30 and last 30 steps in the signal can be removed
|
||
|
|
||
|
ResultStruct = struct();
|
||
|
|
||
|
if ApplyRemoveSteps
|
||
|
|
||
|
% In order to run the step detection script we first need to run an autocorrelation function;
|
||
|
[ResultStruct] = AutocorrStrides(dataAcc_filt,FS,StrideTimeRange,ResultStruct);
|
||
|
|
||
|
% StrideTimeSamples is needed as an input for the stepcountFunc;
|
||
|
StrideTimeSamples = ResultStruct.StrideTimeSamples;
|
||
|
|
||
|
% Calculate the number of steps;
|
||
|
[PksAndLocsCorrected] = StepcountFunc(dataAcc_filt,StrideTimeSamples,FS);
|
||
|
% This function selects steps based on negative and positive values.
|
||
|
% However to determine the steps correctly we only need one of these;
|
||
|
LocsSteps = PksAndLocsCorrected(1:2:end,2);
|
||
|
|
||
|
%% Cut data & remove currents results
|
||
|
% Remove 20 steps in the beginning and end of data
|
||
|
dataAccCut = dataAcc(LocsSteps(31):LocsSteps(end-30),:);
|
||
|
dataAccCut_filt = dataAcc_filt(LocsSteps(31):LocsSteps(end-30),:);
|
||
|
|
||
|
% Clear currently saved results from Autocorrelation Analysis
|
||
|
|
||
|
clear ResultStruct;
|
||
|
clear PksAndLocsCorrected;
|
||
|
clear LocsSteps;
|
||
|
|
||
|
else;
|
||
|
dataAccCut = dataAcc;
|
||
|
dataAccCut_filt = dataAcc_filt;
|
||
|
end
|