diff --git a/AutocorrRegSymmSteps.m b/AutocorrRegSymmSteps.m new file mode 100644 index 0000000..c37505c --- /dev/null +++ b/AutocorrRegSymmSteps.m @@ -0,0 +1,7 @@ +% autocorrelation for step symmetrie +function [c, lags] = AutocorrRegSymmSteps(x) +[c,lags] = xcov(x,200,'unbiased'); +c = c/c(lags==0); +c = c(lags>=0); +lags = lags(lags>=0); + diff --git a/AutocorrStrides.m b/AutocorrStrides.m new file mode 100644 index 0000000..b49a726 --- /dev/null +++ b/AutocorrStrides.m @@ -0,0 +1,43 @@ +function [ResultStruct] = AutocorrStrides(data,FS, StrideTimeRange,ResultStruct); + +%% Stride-times measures +% Stride time and regularity from auto correlation (according to Moe-Nilssen and Helbostad, Estimation of gait cycle characteristics by trunk accelerometry. J Biomech, 2004. 37: 121-6.) +RangeStart = round(FS*StrideTimeRange(1)); +RangeEnd = round(FS*StrideTimeRange(2)); +[AutocorrResult,Lags]=xcov(data,RangeEnd,'unbiased'); +AutocorrSum = sum(AutocorrResult(:,[1 5 9]),2); % This sum is independent of sensor re-orientation, as long as axes are kept orthogonal +AutocorrResult2= [AutocorrResult(:,[1 5 9]),AutocorrSum]; +IXRange = (numel(Lags)-(RangeEnd-RangeStart)):numel(Lags); +% check that autocorrelations are positive for any direction, + +AutocorrPlusTrans = AutocorrResult+AutocorrResult(:,[1 4 7 2 5 8 3 6 9]); +IXRangeNew = IXRange( ... + AutocorrPlusTrans(IXRange,1) > 0 ... + & prod(AutocorrPlusTrans(IXRange,[1 5]),2) > prod(AutocorrPlusTrans(IXRange,[2 4]),2) ... + & prod(AutocorrPlusTrans(IXRange,[1 5 9]),2) + prod(AutocorrPlusTrans(IXRange,[2 6 7]),2) + prod(AutocorrPlusTrans(IXRange,[3 4 8]),2) ... + > prod(AutocorrPlusTrans(IXRange,[1 6 8]),2) + prod(AutocorrPlusTrans(IXRange,[2 4 9]),2) + prod(AutocorrPlusTrans(IXRange,[3 5 7]),2) ... + ); +if isempty(IXRangeNew) + StrideTimeSamples = Lags(IXRange(AutocorrSum(IXRange)==max(AutocorrSum(IXRange)))); % to be used in other estimations + StrideTimeSeconds = nan; + ResultStruct.StrideTimeSamples = StrideTimeSamples; + ResultStruct.StrideTimeSeconds = StrideTimeSeconds; + +else + StrideTimeSamples = Lags(IXRangeNew(AutocorrSum(IXRangeNew)==max(AutocorrSum(IXRangeNew)))); + StrideRegularity = AutocorrResult2(Lags==StrideTimeSamples,:)./AutocorrResult2(Lags==0,:); % Moe-Nilssen&Helbostatt,2004 + RelativeStrideVariability = 1-StrideRegularity; + StrideTimeSeconds = StrideTimeSamples/FS; + + ResultStruct.StrideRegularity_V = StrideRegularity(1); + ResultStruct.StrideRegularity_ML = StrideRegularity(2); + ResultStruct.StrideRegularity_AP = StrideRegularity(3); + ResultStruct.StrideRegularity_All = StrideRegularity(4); + ResultStruct.RelativeStrideVariability_V = RelativeStrideVariability(1); + ResultStruct.RelativeStrideVariability_ML = RelativeStrideVariability(2); + ResultStruct.RelativeStrideVariability_AP = RelativeStrideVariability(3); + ResultStruct.RelativeStrideVariability_All = RelativeStrideVariability(4); + ResultStruct.StrideTimeSamples = StrideTimeSamples; + ResultStruct.StrideTimeSeconds = StrideTimeSeconds; + +end \ No newline at end of file diff --git a/CalcMaxLyapConvGait.m b/CalcMaxLyapConvGait.m new file mode 100644 index 0000000..554056b --- /dev/null +++ b/CalcMaxLyapConvGait.m @@ -0,0 +1,118 @@ +function [L_Estimate,ExtraArgsOut] = CalcMaxLyapConvGait(ThisTimeSeries,FS,ExtraArgsIn) +if nargin > 2 + if isfield(ExtraArgsIn,'J') + J=ExtraArgsIn.J; + end + if isfield(ExtraArgsIn,'m') + m=ExtraArgsIn.m; + end + if isfield(ExtraArgsIn,'FitWinLen') + FitWinLen=ExtraArgsIn.FitWinLen; + end +end + +%% Initialize output args +L_Estimate=nan;ExtraArgsOut.Divergence=nan;ExtraArgsOut.J=nan;ExtraArgsOut.m=nan;ExtraArgsOut.FitWinLen=nan; + +%% Some checks +% predefined J and m should not be NaN or Inf +if (exist('J','var') && ~isempty(J) && ~isfinite(J)) || (exist('m','var') && ~isempty(m) && ~isfinite(m)) + warning('Predefined J and m cannot be NaN or Inf'); + return; +end +% multidimensional time series need predefined J and m +if size(ThisTimeSeries,2) > 1 && (~exist('J','var') || ~exist('m','var') || isempty(J) || isempty(m)) + warning('Multidimensional time series needs predefined J and m, can''t determine Lyapunov'); + return; +end +%Check that there are no NaN or Inf values in the TimeSeries +if any(~isfinite(ThisTimeSeries(:))) + warning('Time series contains NaN or Inf, can''t determine Lyapunov'); + return; +end +%Check that there is variation in the TimeSeries +if ~(nanstd(ThisTimeSeries) > 0) + warning('Time series is constant, can''t determine Lyapunov'); + return; +end + +%% Determine FitWinLen (=cycle time) of ThisTimeSeries +if ~exist('FitWinLen','var') || isempty(FitWinLen) + if size(ThisTimeSeries,2)>1 + for dim=1:size(ThisTimeSeries,2), + [Pd(:,dim),F] = pwelch(detrend(ThisTimeSeries(:,dim)),[],[],[],FS); + end + P = sum(Pd,2); + else + [P,F] = pwelch(detrend(ThisTimeSeries),[],[],[],FS); + end + MeanF = sum(P.*F)./sum(P); + CycleTime = 1/MeanF; + FitWinLen = round(CycleTime*FS); +else + CycleTime = FitWinLen/FS; +end +ExtraArgsOut.FitWinLen=FitWinLen; + +%% Determine J +if ~exist('J','var') || isempty(J) + % Calculate mutual information and take first local minimum Tau as J + bV = min(40,floor(sqrt(size(ThisTimeSeries,1)))); + tauVmax = FitWinLen; + [mutMPro,cummutMPro,minmuttauVPro] = MutualInformationHisPro(ThisTimeSeries,(0:tauVmax),bV,1); % (xV,tauV,bV,flag) + if isnan(minmuttauVPro) + display(mutMPro); + warning('minmuttauVPro is NaN. Consider increasing tauVmax.'); + return; + end + J=minmuttauVPro; +end +ExtraArgsOut.J=J; + +%% Determine m +if ~exist('m','var') || isempty(m) + escape = 10; + max_m = 20; + max_fnnM = 0.02; + mV = 0; + fnnM = 1; + for mV = 2:max_m % for m=1, FalseNearestNeighbors is slow and lets matlab close if N>500000 + fnnM = FalseNearestNeighborsSR(ThisTimeSeries,J,mV,escape,FS); % (xV,tauV,mV,escape,theiler) + if fnnM <= max_fnnM || isnan(fnnM) + break + end + end + if fnnM <= max_fnnM + m = mV; + else + warning('Too many false nearest neighbours'); + return; + end +end +ExtraArgsOut.m=m; + +%% Create state space based upon J and m +N_ss = size(ThisTimeSeries,1)-(m-1)*J; +StateSpace=nan(N_ss,m*size(ThisTimeSeries,2)); +for dim=1:size(ThisTimeSeries,2), + for delay=1:m, + StateSpace(:,(dim-1)*m+delay)=ThisTimeSeries((1:N_ss)'+(delay-1)*J,dim); + end +end + +%% Parameters for Lyapunov +WindowLen = floor(min(N_ss/5,10*FitWinLen)); +if WindowLen < FitWinLen + warning('Not enough samples for Lyapunov estimation'); + return; +end +WindowLenSec=WindowLen/FS; + +%% Calculate divergence +Divergence=div_calc(StateSpace,WindowLenSec,FS,CycleTime,0); +ExtraArgsOut.Divergence=Divergence; + +%% Calculate slope of first FitWinLen samples of divergence curve +p = polyfit((1:FitWinLen)/FS,Divergence(1:FitWinLen),1); +L_Estimate = p(1); + diff --git a/CalcMaxLyapWolfFixedEvolv.m b/CalcMaxLyapWolfFixedEvolv.m new file mode 100644 index 0000000..8021140 --- /dev/null +++ b/CalcMaxLyapWolfFixedEvolv.m @@ -0,0 +1,134 @@ +function [L_Estimate,ExtraArgsOut] = CalcMaxLyapWolfFixedEvolv(ThisTimeSeries,FS,ExtraArgsIn) + +%% Description +% This function calculates the maximum Lyapunov exponent from a time +% series, based on the method described by Wolf et al. in +% Wolf, A., et al., Determining Lyapunov exponents from a time series. +% Physica D: 8 Nonlinear Phenomena, 1985. 16(3): p. 285-317. +% +% Input: +% ThisTimeSeries: a vector or matrix with the time series +% FS: sample frequency of the ThisTimeSeries +% ExtraArgsIn: a struct containing optional input arguments +% J (embedding delay) +% m (embedding dimension) +% Output: +% L_Estimate: The Lyapunov estimate +% ExtraArgsOut: a struct containing the additional output arguments +% J (embedding delay) +% m (embedding dimension) + +%% Copyright +% COPYRIGHT (c) 2012 Sietse Rispens, VU University Amsterdam +% +% This program is free software: you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation, either version 3 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . + +%% Author +% Sietse Rispens + +%% History +% April 2012, initial version of CalcMaxLyapWolf +% 23 October 2012, use fixed evolve time instead of adaptable + +if nargin > 2 + if isfield(ExtraArgsIn,'J') + J=ExtraArgsIn.J; + end + if isfield(ExtraArgsIn,'m') + m=ExtraArgsIn.m; + end +end + +%% Initialize output args +L_Estimate=nan;ExtraArgsOut.J=nan;ExtraArgsOut.m=nan; + +%% Some checks +% predefined J and m should not be NaN or Inf +if (exist('J','var') && ~isempty(J) && ~isfinite(J)) || (exist('m','var') && ~isempty(m) && ~isfinite(m)) + warning('Predefined J and m cannot be NaN or Inf'); + return; +end +% multidimensional time series need predefined J and m +if size(ThisTimeSeries,2) > 1 && (~exist('J','var') || ~exist('m','var') || isempty(J) || isempty(m)) + warning('Multidimensional time series needs predefined J and m, can''t determine Lyapunov'); + return; +end +%Check that there are no NaN or Inf values in the TimeSeries +if any(~isfinite(ThisTimeSeries(:))) + warning('Time series contains NaN or Inf, can''t determine Lyapunov'); + return; +end +%Check that there is variation in the TimeSeries +if ~(nanstd(ThisTimeSeries) > 0) + warning('Time series is constant, can''t determine Lyapunov'); + return; +end + +%% Determine J +if ~exist('J','var') || isempty(J) + % Calculate mutual information and take first local minimum Tau as J + bV = min(40,floor(sqrt(size(ThisTimeSeries,1)))); + tauVmax = 70; + [mutMPro,cummutMPro,minmuttauVPro] = MutualInformationHisPro(ThisTimeSeries,(0:tauVmax),bV,1); % (xV,tauV,bV,flag) + if isnan(minmuttauVPro) + display(mutMPro); + warning('minmuttauVPro is NaN. Consider increasing tauVmax.'); + return; + end + J=minmuttauVPro; +end +ExtraArgsOut.J=J; + +%% Determine m +if ~exist('m','var') || isempty(m) + escape = 10; + max_m = 20; + max_fnnM = 0.02; + mV = 0; + fnnM = 1; + for mV = 2:max_m % for m=1, FalseNearestNeighbors is slow and lets matlab close if N>500000 + fnnM = FalseNearestNeighborsSR(ThisTimeSeries,J,mV,escape,FS); % (xV,tauV,mV,escape,theiler) + if fnnM <= max_fnnM || isnan(fnnM) + break + end + end + if fnnM <= max_fnnM + m = mV; + else + warning('Too many false nearest neighbours'); + return; + end +end +ExtraArgsOut.m=m; + +%% Create state space based upon J and m +N_ss = size(ThisTimeSeries,1)-(m-1)*J; +StateSpace=nan(N_ss,m*size(ThisTimeSeries,2)); +for dim=1:size(ThisTimeSeries,2), + for delay=1:m, + StateSpace(:,(dim-1)*m+delay)=ThisTimeSeries((1:N_ss)'+(delay-1)*J,dim); + end +end + +%% Parameters for Lyapunov estimation +CriticalLen=J*m; +max_dist = sqrt(sum(std(StateSpace).^2))/10; +max_dist_mult = 5; +min_dist = max_dist/2; +max_theta = 0.3; +evolv = J; + +%% Calculate Lambda +[L_Estimate]=div_wolf_fixed_evolv(StateSpace, FS, min_dist, max_dist, max_dist_mult, max_theta, CriticalLen, evolv); + diff --git a/CalculateNonLinearParametersFunc.m b/CalculateNonLinearParametersFunc.m new file mode 100644 index 0000000..61b6dbe --- /dev/null +++ b/CalculateNonLinearParametersFunc.m @@ -0,0 +1,48 @@ +function [ResultStruct] = CalculateNonLinearParametersFunc(ResultStruct,dataAccCut,WindowLen,FS,Lyap_m,Lyap_FitWinLen,Sen_m,Sen_r) + +%% Calculation non-linear parameters; + +% cut into windows of size WindowLen +N_Windows = floor(size(dataAccCut,1)/WindowLen); +N_SkipBegin = ceil((size(dataAccCut,1)-N_Windows*WindowLen)/2); +LyapunovWolf = nan(N_Windows,3); +LyapunovRosen = nan(N_Windows,3); +SE= nan(N_Windows,3); + +for WinNr = 1:N_Windows; + AccWin = dataAccCut(N_SkipBegin+(WinNr-1)*WindowLen+(1:WindowLen),:); + for j=1:3 + [LyapunovWolf(WinNr,j),~] = CalcMaxLyapWolfFixedEvolv(AccWin(:,j),FS,struct('m',Lyap_m)); + [LyapunovRosen(WinNr,j),outpo] = CalcMaxLyapConvGait(AccWin(:,j),FS,struct('m',Lyap_m,'FitWinLen',Lyap_FitWinLen)); + [SE(WinNr,j)] = funcSampleEntropy(AccWin(:,j), Sen_m, Sen_r); + % no correction for FS; SE does increase with higher FS but effect is considered negligible as range is small (98-104HZ). Might consider updating r to account for larger ranges. + end +end + +LyapunovWolf = nanmean(LyapunovWolf,1); +LyapunovRosen = nanmean(LyapunovRosen,1); +SampleEntropy = nanmean(SE,1); + +ResultStruct.LyapunovWolf_V = LyapunovWolf(1); +ResultStruct.LyapunovWolf_ML = LyapunovWolf(2); +ResultStruct.LyapunovWolf_AP = LyapunovWolf(3); +ResultStruct.LyapunovRosen_V = LyapunovRosen(1); +ResultStruct.LyapunovRosen_ML = LyapunovRosen(2); +ResultStruct.LyapunovRosen_AP = LyapunovRosen(3); +ResultStruct.SampleEntropy_V = SampleEntropy(1); +ResultStruct.SampleEntropy_ML = SampleEntropy(2); +ResultStruct.SampleEntropy_AP = SampleEntropy(3); + +if isfield(ResultStruct,'StrideFrequency') + LyapunovPerStrideWolf = LyapunovWolf/ResultStruct.StrideFrequency; + LyapunovPerStrideRosen = LyapunovRosen/ResultStruct.StrideFrequency; +end + +ResultStruct.LyapunovPerStrideWolf_V = LyapunovPerStrideWolf(1); +ResultStruct.LyapunovPerStrideWolf_ML = LyapunovPerStrideWolf(2); +ResultStruct.LyapunovPerStrideWolf_AP = LyapunovPerStrideWolf(3); +ResultStruct.LyapunovPerStrideRosen_V = LyapunovPerStrideRosen(1); +ResultStruct.LyapunovPerStrideRosen_ML = LyapunovPerStrideRosen(2); +ResultStruct.LyapunovPerStrideRosen_AP = LyapunovPerStrideRosen(3); + +end \ No newline at end of file diff --git a/CalculateStrideParametersFunc.m b/CalculateStrideParametersFunc.m new file mode 100644 index 0000000..df5c40d --- /dev/null +++ b/CalculateStrideParametersFunc.m @@ -0,0 +1,48 @@ +function [ResultStruct] = CalculateStrideParametersFunc(dataAccCut_filt,FS,ApplyRemoveSteps,dataAcc,dataAcc_filt,StrideTimeRange) + +%% Calculate stride parameters +ResultStruct = struct; % create empty struct + +% Run function AutoCorrStrides, Outcomeparameters: StrideRegularity,RelativeStrideVariability,StrideTimeSamples,StrideTime +[ResultStruct] = AutocorrStrides(dataAccCut_filt,FS, StrideTimeRange,ResultStruct); +StrideTimeSamples = ResultStruct.StrideTimeSamples; % needed as input for other functions + +% Calculate Step symmetry --> method 1 +ij = 1; +dirSymm = [1,3]; % Gait Synmmetry is only informative in AP/V direction: See Tura A, Raggi M, Rocchi L, Cutti AG, Chiari L: Gait symmetry and regularity in transfemoral amputees assessed by trunk accelerations. J Neuroeng Rehabil 2010, 7:4. + +for jk=1:length(dirSymm) + [C, lags] = AutocorrRegSymmSteps(dataAccCut_filt(:,dirSymm(jk))); + [Ad,p] = findpeaks(C,'MinPeakProminence',0.2, 'MinPeakHeight', 0.2); + + if size(Ad,1) > 1 + Ad1 = Ad(1); + Ad2 = Ad(2); + GaitSymm(:,ij) = abs((Ad1-Ad2)/mean([Ad1+Ad2]))*100; + else + GaitSymm(:,ij) = NaN; + end + ij = ij +1; +end +% Save outcome in struct; +ResultStruct.GaitSymm_V = GaitSymm(1); +ResultStruct.GaitSymm_AP = GaitSymm(2); + +% Calculate Step symmetry --> method 2 +[PksAndLocsCorrected] = StepcountFunc(dataAccCut_filt,StrideTimeSamples,FS); +LocsSteps = PksAndLocsCorrected(2:2:end,2); + +if rem(size(LocsSteps,1),2) == 0; % is number of steps is even + LocsSteps2 = LocsSteps(1:2:end); +else + LocsSteps2 = LocsSteps(3:2:end); +end + +LocsSteps1 = LocsSteps(2:2:end); +DiffLocs2 = diff(LocsSteps2); +DiffLocs1 = diff(LocsSteps1); +StepTime2 = DiffLocs2(1:end-1)/FS; % leave last one out because it is higher +StepTime1 = DiffLocs1(1:end-1)/FS; +SI = abs((2*(StepTime2-StepTime1))./(StepTime2+StepTime1))*100; +ResultStruct.GaitSymmIndex = nanmean(SI); +end diff --git a/FilterandRealignFunc.m b/FilterandRealignFunc.m new file mode 100644 index 0000000..d63fa5d --- /dev/null +++ b/FilterandRealignFunc.m @@ -0,0 +1,18 @@ +function [dataAcc, dataAcc_filt] = FilterandRealignFunc(inputData,FS,ApplyRealignment) + +%% Filter and Realign Accdata + +% Apply Realignment & Filter data + +if ApplyRealignment % apply relignment as described in Rispens S, Pijnappels M, van Schooten K, Beek PJ, Daffertshofer A, van Die?n JH (2014). + data = inputData(:, [3,2,4]); % reorder data to 1 = V; 2= ML, 3 = AP% + % Consistency of gait characteristics as determined from acceleration data collected at different trunk locations. Gait Posture 2014;40(1):187-92. + [RealignedAcc, ~] = RealignSensorSignalHRAmp(data, FS); + dataAcc = RealignedAcc; + [B,A] = butter(2,20/(FS/2),'low'); + dataAcc_filt = filtfilt(B,A,dataAcc); +else % we asume tat data is already reorderd to 1 = V; 2= ML, 3 = AP in an earlier stage; + [B,A] = butter(2,20/(FS/2),'low'); + dataAcc = inputData; + dataAcc_filt = filtfilt(B,A,dataAcc); +end diff --git a/GaitOutcomesTrunkAccFuncIH.m b/GaitOutcomesTrunkAccFuncIH.m new file mode 100644 index 0000000..7fa4d7a --- /dev/null +++ b/GaitOutcomesTrunkAccFuncIH.m @@ -0,0 +1,210 @@ +function [ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps) + +% DESCRIPTON: Trunk analysis of Iphone data without the need for step detection +% CL Nov 2019 +% Adapted IH feb-april 2020 + +% koloms data of smartphone +% 1st column is time data; +% 2nd column is X, medio-lateral: + left, - right +% 3rd column is Y, vertical: + downwards, - upwards +% 4th column is Z, anterior- posterior : + forwards, - backwards + +%% Input Trunk accelerations during locomotion in VT, ML, AP direction +% InputData: Acceleration signal with time and accelerations in VT,ML and +% AP direction. +% FS: sample frequency of the Accdata +% LegLength: length of the leg of the participant in m; + + +%% Output +% ResultStruct: structure coninting all outcome measured calculated +% Spectral parameters, spatiotemporal gait parameters, non-linear +% parameters +% fields and subfields: include the multiple measurements of a subject + +%% Literature +% Richman & Moorman, 2000; [ sample entropy] +% Bisi & Stagni Gait & Posture 2016, 47 (6) 37-42 +% Kavagnah et al., Eur J Appl Physiol 2005 94: 468?475; Human Movement Science 24(2005) 574?587 [ synchrony] +% Moe-Nilsen J Biomech 2004 37, 121-126 [ autorcorrelation step regularity and symmetry +% Kobsar et al. Gait & Posture 2014 39, 553?557 [ synchrony ] +% Rispen et al; Gait & Posture 2014, 40, 187 - 192 [realignment axes] +% Zijlstra & HofGait & Posture 2003 18,2, 1-10 [spatiotemporal gait variables] +% Lamoth et al, 2002 [index of harmonicity] +% Costa et al. 2003 Physica A 330 (2003) 53–60 [ multiscale entropy] +% Cignetti F, Decker LM, Stergiou N. Ann Biomed Eng. 2012 +% May;40(5):1122-30. doi: 10.1007/s10439-011-0474-3. Epub 2011 Nov 25. [ +% Wofl vs. Rosenstein Lyapunov] + + +%% Settings +Gr = 9.81; % Gravity acceleration, multiplication factor for accelerations +StrideFreqEstimate = 1.00; % Used to set search for stride frequency from 0.5*StrideFreqEstimate until 2*StrideFreqEstimate +StrideTimeRange = [0.2 4.0]; % Range to search for stride time (seconds) +IgnoreMinMaxStrides = 0.10; % Number or percentage of highest&lowest values ignored for improved variability estimation +N_Harm = 12; % Number of harmonics used for harmonic ratio, index of harmonicity and phase fluctuation +LowFrequentPowerThresholds = ... + [0.7 1.4]; % Threshold frequencies for estimation of low-frequent power percentages +Lyap_m = 7; % Embedding dimension (used in Lyapunov estimations) +Lyap_FitWinLen = round(60/100*FS); % Fitting window length (used in Lyapunov estimations Rosenstein's method) +Sen_m = 5; % Dimension, the length of the subseries to be matched (used in sample entropy estimation) +Sen_r = 0.3; % Tolerance, the maximum distance between two samples to qualify as match, relative to std of DataIn (used in sample entropy estimation) +NStartEnd = [100]; +M = 5; % maximum template length +ResultStruct = struct(); + +%% Filter and Realign Accdata + +% Apply Realignment & Filter data + +if ApplyRealignment % apply relignment as described in Rispens S, Pijnappels M, van Schooten K, Beek PJ, Daffertshofer A, van Die?n JH (2014). + data = inputData(:, [3,2,4]); % reorder data to 1 = V; 2= ML, 3 = AP% + % Consistency of gait characteristics as determined from acceleration data collected at different trunk locations. Gait Posture 2014;40(1):187-92. + [RealignedAcc, ~] = RealignSensorSignalHRAmp(data, FS); + dataAcc = RealignedAcc; + [B,A] = butter(2,20/(FS/2),'low'); + dataAcc_filt = filtfilt(B,A,dataAcc); +else % we asume tat data is already reorderd to 1 = V; 2= ML, 3 = AP in an earlier stage; + [B,A] = butter(2,20/(FS/2),'low'); + dataAcc = inputData; + dataAcc_filt = filtfilt(B,A,dataAcc); +end + + +%% Step dectection +% Determines the number of steps in the signal so that the first 30 and last 30 steps in the signal can be removed + +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 + +%% Calculate stride parameters +ResultStruct = struct; % create empty struct + +% Run function AutoCorrStrides, Outcomeparameters: StrideRegularity,RelativeStrideVariability,StrideTimeSamples,StrideTime +[ResultStruct] = AutocorrStrides(dataAccCut_filt,FS, StrideTimeRange,ResultStruct); +StrideTimeSamples = ResultStruct.StrideTimeSamples; % needed as input for other functions + +% Calculate Step symmetry --> method 1 +ij = 1; +dirSymm = [1,3]; % Gait Synmmetry is only informative in AP/V direction: See Tura A, Raggi M, Rocchi L, Cutti AG, Chiari L: Gait symmetry and regularity in transfemoral amputees assessed by trunk accelerations. J Neuroeng Rehabil 2010, 7:4. + +for jk=1:length(dirSymm) + [C, lags] = AutocorrRegSymmSteps(dataAccCut_filt(:,dirSymm(jk))); + [Ad,p] = findpeaks(C,'MinPeakProminence',0.2, 'MinPeakHeight', 0.2); + + if size(Ad,1) > 1 + Ad1 = Ad(1); + Ad2 = Ad(2); + GaitSymm(:,ij) = abs((Ad1-Ad2)/mean([Ad1+Ad2]))*100; + else + GaitSymm(:,ij) = NaN; + end + ij = ij +1; +end +% Save outcome in struct; +ResultStruct.GaitSymm_V = GaitSymm(1); +ResultStruct.GaitSymm_AP = GaitSymm(2); + +% Calculate Step symmetry --> method 2 +[PksAndLocsCorrected] = StepcountFunc(dataAccCut_filt,StrideTimeSamples,FS); +LocsSteps = PksAndLocsCorrected(2:2:end,2); + +if rem(size(LocsSteps,1),2) == 0; % is number of steps is even + LocsSteps2 = LocsSteps(1:2:end); +else + LocsSteps2 = LocsSteps(3:2:end); +end + +LocsSteps1 = LocsSteps(2:2:end); +DiffLocs2 = diff(LocsSteps2); +DiffLocs1 = diff(LocsSteps1); +StepTime2 = DiffLocs2(1:end-1)/FS; % leave last one out because it is higher +StepTime1 = DiffLocs1(1:end-1)/FS; +SI = abs((2*(StepTime2-StepTime1))./(StepTime2+StepTime1))*100; +ResultStruct.GaitSymmIndex = nanmean(SI); + +%% Calculate spatiotemporal stride parameters + +% Measures from height variation by double integration of VT accelerations and high-pass filtering +[ResultStruct] = SpatioTemporalGaitParameters(dataAccCut_filt,StrideTimeSamples,ApplyRealignment,LegLength,FS,IgnoreMinMaxStrides,ResultStruct); + +%% Measures derived from spectral analysis + +AccVectorLen = sqrt(sum(dataAccCut_filt(:,1:3).^2,2)); +[ResultStruct] = SpectralAnalysisGaitfunc(dataAccCut_filt,WindowLen,FS,N_Harm,LowFrequentPowerThresholds,AccVectorLen,ResultStruct); + + +%% Calculation non-linear parameters; + +% cut into windows of size WindowLen +N_Windows = floor(size(dataAccCut,1)/WindowLen); +N_SkipBegin = ceil((size(dataAccCut,1)-N_Windows*WindowLen)/2); +LyapunovWolf = nan(N_Windows,3); +LyapunovRosen = nan(N_Windows,3); +SE= nan(N_Windows,3); + +for WinNr = 1:N_Windows; + AccWin = dataAccCut(N_SkipBegin+(WinNr-1)*WindowLen+(1:WindowLen),:); + for j=1:3 + [LyapunovWolf(WinNr,j),~] = CalcMaxLyapWolfFixedEvolv(AccWin(:,j),FS,struct('m',Lyap_m)); + [LyapunovRosen(WinNr,j),outpo] = CalcMaxLyapConvGait(AccWin(:,j),FS,struct('m',Lyap_m,'FitWinLen',Lyap_FitWinLen)); + [SE(WinNr,j)] = funcSampleEntropy(AccWin(:,j), Sen_m, Sen_r); + % no correction for FS; SE does increase with higher FS but effect is considered negligible as range is small (98-104HZ). Might consider updating r to account for larger ranges. + end +end + +LyapunovWolf = nanmean(LyapunovWolf,1); +LyapunovRosen = nanmean(LyapunovRosen,1); +SampleEntropy = nanmean(SE,1); + +ResultStruct.LyapunovWolf_V = LyapunovWolf(1); +ResultStruct.LyapunovWolf_ML = LyapunovWolf(2); +ResultStruct.LyapunovWolf_AP = LyapunovWolf(3); +ResultStruct.LyapunovRosen_V = LyapunovRosen(1); +ResultStruct.LyapunovRosen_ML = LyapunovRosen(2); +ResultStruct.LyapunovRosen_AP = LyapunovRosen(3); +ResultStruct.SampleEntropy_V = SampleEntropy(1); +ResultStruct.SampleEntropy_ML = SampleEntropy(2); +ResultStruct.SampleEntropy_AP = SampleEntropy(3); + +if isfield(ResultStruct,'StrideFrequency') + LyapunovPerStrideWolf = LyapunovWolf/ResultStruct.StrideFrequency; + LyapunovPerStrideRosen = LyapunovRosen/ResultStruct.StrideFrequency; +end + +ResultStruct.LyapunovPerStrideWolf_V = LyapunovPerStrideWolf(1); +ResultStruct.LyapunovPerStrideWolf_ML = LyapunovPerStrideWolf(2); +ResultStruct.LyapunovPerStrideWolf_AP = LyapunovPerStrideWolf(3); +ResultStruct.LyapunovPerStrideRosen_V = LyapunovPerStrideRosen(1); +ResultStruct.LyapunovPerStrideRosen_ML = LyapunovPerStrideRosen(2); +ResultStruct.LyapunovPerStrideRosen_AP = LyapunovPerStrideRosen(3); + +end \ No newline at end of file diff --git a/GaitVariabilityAnalysisIH.m b/GaitVariabilityAnalysisIH.m new file mode 100644 index 0000000..f40b72c --- /dev/null +++ b/GaitVariabilityAnalysisIH.m @@ -0,0 +1,74 @@ +% Gait Variability Analysis +% Script created for BAP students 2020 +% Iris Hagoort +% April 2020 + +% Input: needs mat file which contains all raw accelerometer data +% Input: needs excel file containing the participant information including +% leg length. + +%% Clear and close; +clear; +close all; + +%% Load data +load('Phyphoxdata.mat'); % loads accelerometer data, is stored in struct with name AccData +load('ExcelInfo.mat'); +Participants = fields(AccData); + +%% Settings +FS = 100; % sample frequency +LegLengths = excel.data.GeneralInformation(:,5); % leglength info is in 5th column +LegLengthsM = LegLengths/100; % convert to m + +%% Calculate parameters; +for i = 1: length(Participants); +tic; + LegLength = LegLengthsM(i); + WalkingConditions = fields(AccData.([char(Participants(i))])); + + for j = 1: length(WalkingConditions); + + if strcmp(char(WalkingConditions(j)),'Treadmill') + + SubConditions = fieldnames(AccData.([char(Participants(i))]).([char(WalkingConditions(j))])); + + for k = 1: length(SubConditions); + inputData = AccData.([char(Participants(i))]).([char(WalkingConditions(j))]).([char(SubConditions(k))]); + WindowLength = FS*10; + ApplyRealignment = true; + ApplyRemoveSteps = true; + [ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps); + OutcomesAcc.([char(Participants(i))]).([char(WalkingConditions(j))]).([char(SubConditions(k))]) = ResultStruct; + end + + elseif strcmp(char(WalkingConditions(j)),'Balance') || strcmp(char(WalkingConditions(j)),'TwoMWT') + disp('Files are not used for current analysis'); + + elseif strcmp(char(WalkingConditions(j)),'InsideStraight') + inputData = AccData.([char(Participants(i))]).([char(WalkingConditions(j))]); + ApplyRealignment = true; + ApplyRemoveSteps = false; % don't remove steps for the straight conditions + % function specific for the walking conditions containing a lot + % of turns + [ResultStruct] = GaitVariabilityAnalysisIH_WithoutTurns(inputData,FS,LegLength,ApplyRealignment,ApplyRemoveSteps); + OutcomesAcc.([char(Participants(i))]).([char(WalkingConditions(j))]) = ResultStruct; + + else + inputData = AccData.([char(Participants(i))]).([char(WalkingConditions(j))]); + ApplyRealignment = true; + ApplyRemoveSteps = true; + WindowLen = FS*10; + [ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps) + OutcomesAcc.([char(Participants(i))]).([char(WalkingConditions(j))]) = ResultStruct; + end + end + + toc; +end + +% Save struct as .mat file +save('GaitVarOutcomes30pril.mat', 'OutcomesAcc'); + + + diff --git a/GaitVariabilityAnalysisIH_WithoutTurns.m b/GaitVariabilityAnalysisIH_WithoutTurns.m new file mode 100644 index 0000000..21c90bb --- /dev/null +++ b/GaitVariabilityAnalysisIH_WithoutTurns.m @@ -0,0 +1,108 @@ +function [ResultStruct] = GaitVariabilityAnalysisIH_WithoutTurns(inputData,FS,LegLength,ApplyRealignment,ApplyRemoveSteps); + + +% SCRIPT FOR ANAlysis straight parts +% NOG GOEDE BESCHRIJVING TOEVOEGEN. + +%% Realign data +data = inputData(:, [3,2,4]); % reorder data to 1 = V; 2= ML, 3 = AP + +%Realign sensor data to VT-ML-AP frame +if ApplyRealignment % apply relignment as described in Rispens S, Pijnappels M, van Schooten K, Beek PJ, Daffertshofer A, van Die?n JH (2014). + % Consistency of gait characteristics as determined from acceleration data collected at different trunk locations. Gait Posture 2014;40(1):187-92. + [RealignedAcc, ~] = RealignSensorSignalHRAmp(data, FS); + dataAcc = RealignedAcc; +end + +%% Filter data strongly & Determine location of steps + +% Filter data +[B,A] = butter(2,3/(FS/2),'low'); % Filters data very strongly which is needed to determine turns correctly +dataStepDetection = filtfilt(B,A,dataAcc); + +% Determine steps; + +%%%%%%% HIER MISSCHIEN ALTERNATIEF VOOR VAN RISPENS %%%%%%%%%%%%% + +% Explanation of method: https://nl.mathworks.com/help/supportpkg/beagleboneblue/ref/counting-steps-using-beagleboneblue-hardware-example.html +% From website: To convert the XYZ acceleration vectors at each point in time into scalar values, +% calculate the magnitude of each vector. This way, you can detect large changes in overall acceleration, +% such as steps taken while walking, regardless of device orientation. + +magfilt = sqrt(sum((dataStepDetection(:,1).^2) + (dataStepDetection(:,2).^2) + (dataStepDetection(:,3).^2), 2)); +magNoGfilt = magfilt - mean(magfilt); +minPeakHeight2 = std(magNoGfilt); +[pks, locs] = findpeaks(magNoGfilt, 'MINPEAKHEIGHT', minPeakHeight2); % for step detection +numStepsOption2_filt = numel(pks); % counts number of steps; + +%%%%%%%%%%%%%%%%%%%%%%%% TOT HIER %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Determine locations of turns; + +diffLocs = diff(locs); % calculates difference in step location +avg_diffLocs = mean(diffLocs); % average distance between steps +std_diffLocs = std(diffLocs); % standard deviation of distance between steps + +figure; +findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs, 'MINPEAKDISTANCE',5); % these values have been chosen based on visual inspection of the signal +line([1 length(diffLocs)],[avg_diffLocs avg_diffLocs]) +[pks_diffLocs, locs_diffLocs] = findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs,'MINPEAKDISTANCE',5); +locsTurns = [locs(locs_diffLocs), locs(locs_diffLocs+1)]; + +%% Visualizing turns + +% Duplying signal + visualing +% to make second signal with the locations of the turns filled with NaN, so +% that both signals can be plotted above each other in a different colour + +magNoGfilt_copy = magNoGfilt; +for k = 1: size(locsTurns,1); + magNoGfilt_copy(locsTurns(k,1):locsTurns(k,2)) = NaN; +end + + +% visualising signal; +figure; +subplot(2,1,1) +hold on; +plot(magNoGfilt,'b') +plot(magNoGfilt_copy, 'r'); +title('Inside Straight: Filtered data with turns highlighted in blue') +hold off; + +%% Calculation +% VRAAG LAURENS zie blauwe blaadje + +startPos = 1; +for i = 1: size(locsTurns,1); + endPos = locsTurns(i,1)-1; + + inputData = dataAcc(startPos:endPos,:); + WindowLen = size(inputData,1); + ApplyRealignment = false; + [ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps); % Naam van deze moet nog aangepast. + + if i ==1 % only the firs time + Parameters = fieldnames(ResultStruct); + NrParameters = length(Parameters); + end + + for j = 1:NrParameters % only works if for every bin we get the same outcomes (which is the case in this script) + DataStraight.([char(Parameters(j))])(i) = ResultStruct.([char(Parameters(j))]); + end + startPos = locsTurns(i,2)+1; + +end + +clear ResultStruct; + +% Calculate mean over the bins without turns to get 1 outcome value per parameter for inside +% straight; + +for j = 1:NrParameters; + ResultStruct.([char(Parameters(j))]) = nanmean(DataStraight.([char(Parameters(j))])) +end + + +end + diff --git a/GaitVariabilityAnalysisLD.html b/GaitVariabilityAnalysisLD.html new file mode 100644 index 0000000..122281a --- /dev/null +++ b/GaitVariabilityAnalysisLD.html @@ -0,0 +1,1709 @@ + +Gait Variability Analysis CLBP

Gait Variability Analysis CLBP

% Gait Variability Analysis
% Script created for MAP 2020-2021
% adapted from Claudine Lamoth and Iris Hagoort
% version1 October 2020
% Input: needs mat file which contains all raw accelerometer data
% Input: needs excel file containing the participant information including
% leg length.

Clear and close;

clear;
close all;

Load data;

Select 1 trial. For loop to import all data will be used at a later stage
[FNaam,FilePad] = uigetfile('*.xls','Load phyphox data...');
filename =[FilePad FNaam];
PhyphoxData = xlsread(filename)
PhyphoxData = 24092×4
0 0.4018 -8.5041 4.8779 + 0.0100 0.3962 -8.4703 4.7944 + 0.0199 0.4335 -8.4378 4.7159 + 0.0299 0.5209 -8.3889 4.6266 + 0.0399 0.6495 -8.3796 4.5437 + 0.0498 0.7528 -8.3817 4.4288 + 0.0598 0.8820 -8.3622 4.3134 + 0.0697 0.9841 -8.4321 4.2221 + 0.0797 1.1041 -8.5237 4.1916 + 0.0897 1.1959 -8.5418 4.1310 +
%load('Phyphoxdata.mat'); % loads accelerometer data, is stored in struct with name AccData
%load('ExcelInfo.mat');
%Participants = fields(AccData);

Settings;

LegLength = 98 % LegLength info not available!
LegLength = 98
%LegLengths = excel.data.GeneralInformation(:,5); % leglength info is in 5th column
LegLengthsM = LegLength/100; % convert to m
t1 = length(PhyphoxData(:,1)); % Number of Samples
FS = 100; % sample frequency
Time_ms = PhyphoxData(:,1);
accX = PhyphoxData(:,2);
accY = PhyphoxData(:,3);
accZ = PhyphoxData(:,4);
AccData = (PhyphoxData(:,[1 2 3 4])); % matrix with accelerometer data
Start = 1; % Start time (s) for plot
End = 60; % End time (s) for plot
T1 = Start*FS; % Start time calculated from Hz
T2 = End*FS; % End time calculated from Hz
c = (Start:(1/FS):End)'; % Time STEPSIZE = 1/100

Plot the data;

(1) first step in notebook
1st column is time data (ms)
2nd column is X, medio-lateral: + left, - right
3rd column is Y, vertical: + downwards, - upwards
4th column is Z, anterior- posterior : + forwards, - backwards
AccX = accX(T1:T2); % Signal over timeframe
AccY = accY(T1:T2); % Signal over timeframe
AccZ = accZ(T1:T2); % Signal over timeframe
figure(1);
plot(c,AccX,c,AccY,c,AccZ); % Plot signal over timeframe
title('acc signal not filtered - First Minute')
xlabel('Time (s)');
ylabel('acceleration (g)');
legend('X - ML','Y - Vertical','Z - AP')

Calculate parameters;

calculate only for the first participant;
inputData = AccData;
WindowLength = FS*10; % why FS*10?
ApplyRealignment = true; % reorder data to 1 = V; 2= ML, 3 = AP
ApplyRemoveSteps = false; % if true - removes first 30 and last 30 steps
[ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLength,ApplyRealignment,ApplyRemoveSteps)
ResultStruct = struct with fields:
StrideRegularity_V: 0.3908 + StrideRegularity_ML: 0.4191 + StrideRegularity_AP: 0.1101 + StrideRegularity_All: 0.3529 + RelativeStrideVariability_V: 0.6092 + RelativeStrideVariability_ML: 0.5809 + RelativeStrideVariability_AP: 0.8899 + RelativeStrideVariability_All: 0.6471 + StrideTimeSamples: 132 + StrideTimeSeconds: 1.3200 + GaitSymm_V: 16.8830 + GaitSymm_AP: NaN + GaitSymmIndex: 2.8065 + StepLengthMean: 11.5894 + Distance: 1.8825e+03 + WalkingSpeedMean: 7.8279 + StrideTimeVariability: 0.1931 + StrideSpeedVariability: 1.1210 + StrideLengthVariability: 0.7532 + StrideTimeVariabilityOmitOutlier: 14.7357 + StrideSpeedVariabilityOmitOutlier: 0.8713 + StrideLengthVariabilityOmitOutlier: 0.4511 + IndexHarmonicity_V: 0.6094 + IndexHarmonicity_ML: 0.8041 + IndexHarmonicity_AP: 0.9122 + IndexHarmonicity_All: 0.6742 + HarmonicRatio_V: 2.4928 + HarmonicRatio_ML: 2.8449 + HarmonicRatio_AP: 1.6364 + HarmonicRatioP_V: 9.1114 + HarmonicRatioP_ML: 14.1449 + HarmonicRatioP_AP: 5.6995 + FrequencyVariability_V: 0.5234 + FrequencyVariability_ML: 0.6435 + FrequencyVariability_AP: 0.6281 + StrideFrequency: 0.7367 + LyapunovWolf_V: 1.3653 + LyapunovWolf_ML: 1.1477 + LyapunovWolf_AP: 1.4231 + LyapunovRosen_V: 1.0151 + LyapunovRosen_ML: 0.7871 + LyapunovRosen_AP: 0.9792 + SampleEntropy_V: 0.1999 + SampleEntropy_ML: 0.2537 + SampleEntropy_AP: 0.2710 + LyapunovPerStrideWolf_V: 1.8534 + LyapunovPerStrideWolf_ML: 1.5579 + LyapunovPerStrideWolf_AP: 1.9318 + LyapunovPerStrideRosen_V: 1.3780 + LyapunovPerStrideRosen_ML: 1.0685 + LyapunovPerStrideRosen_AP: 1.3292 +
output:
- NaN GaitSymm_V:
- SampEn has two advantages over ApEn: data length independence and a relatively trouble-free implementation.
- Some Settings ResulStruct
IgnoreMinMaxStrides = 0.10; % Number or percentage of highest&lowest values ignored for improved variability estimation
N_Harm = 12; % Number of harmonics used for harmonic ratio, index of harmonicity and phase fluctuation
Lyap_m = 7; % Embedding dimension (used in Lyapunov estimations)
Lyap_FitWinLen = round(60/100*FS); % Fitting window length (used in Lyapunov estimations Rosenstein's method)
Sen_m = 5; % Dimension, the length of the subseries to be matched (used in sample entropy estimation)
Sen_r = 0.3; % Tolerance, the maximum distance between two samples to qualify as match, relative to std of DataIn (used in sample entropy estimation)

Index of harmonicity (Lamoth et al. 2002)

by means of a discrete Fourier transform (DFT). The peak power at the first six harmonics was estimated and, subsequently, the index of harmonicity was defined as ; FORMULA
where P0 is the power spectral density of the fundamental frequency (first harmonic) and $ Pi the cumulative sum of power spectral density of the fundamental frequency and the first five superharmonics. A power ratio of 1 indicates that the rotation of the pelvis or the thorax is perfectly harmonic. In view of possible drift, which could lead to missing or widening peaks, the power spectral density of each peak was calculated within the frequency bands of +0.1 and −0.1 Hz of the peak frequency value. All power spectral densities were normalized by dividing the power by the sum of the total power spectrum, which equals the variance.

Lyapunov exponents (Wolfs vs. Rosenstein)

The W-algorithm is advocated for use when examining local dynamic stability with small gait data sets.

Visualize step detection;

function [ResultStruct] = GaitVariabilityAnalysisIH_WithoutTurns(inputData,FS,LegLength,ApplyRealignment,ApplyRemoveSteps);
script for analysing straight parts
(1) Realign Data
%% Realign data
data = inputData(:, [3,2,4]); % reorder data to 1 = V; 2= ML, 3 = AP
%Realign sensor data to VT-ML-AP frame
if ApplyRealignment % apply relignment as described in Rispens S, Pijnappels M, van Schooten K, Beek PJ, Daffertshofer A, van Die?n JH (2014).
% Consistency of gait characteristics as determined from acceleration data collected at different trunk locations. Gait Posture 2014;40(1):187-92.
[RealignedAcc, ~] = RealignSensorSignalHRAmp(data, FS);
dataAcc = RealignedAcc;
end
(2) Filter Data
%% Filter data strongly & Determine location of steps
% Filter data
[B,A] = butter(2,3/(FS/2),'low'); % Filters data very strongly which is needed to determine turns correctly
dataStepDetection = filtfilt(B,A,dataAcc);
(3) Determine Location of steps
% Determine steps;
%%%%%%% HIER MISSCHIEN ALTERNATIEF VOOR VAN RISPENS %%%%%%%%%%%%%
% Explanation of method: https://nl.mathworks.com/help/supportpkg/beagleboneblue/ref/counting-steps-using-beagleboneblue-hardware-example.html
% From website: To convert the XYZ acceleration vectors at each point in time into scalar values,
% calculate the magnitude of each vector. This way, you can detect large changes in overall acceleration,
% such as steps taken while walking, regardless of device orientation.
magfilt = sqrt(sum((dataStepDetection(:,1).^2) + (dataStepDetection(:,2).^2) + (dataStepDetection(:,3).^2), 2));
magNoGfilt = magfilt - mean(magfilt);
minPeakHeight2 = std(magNoGfilt);
[pks, locs] = findpeaks(magNoGfilt, 'MINPEAKHEIGHT', minPeakHeight2); % for step detection
numStepsOption2_filt = numel(pks); % counts number of steps;
(4) Determine location of turns
%% Determine locations of turns;
diffLocs = diff(locs); % calculates difference in step location
avg_diffLocs = mean(diffLocs); % average distance between steps
std_diffLocs = std(diffLocs); % standard deviation of distance between steps
figure(2);
findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs, 'MINPEAKDISTANCE',5); % these values have been chosen based on visual inspection of the signal
line([1 length(diffLocs)],[avg_diffLocs avg_diffLocs])
[pks_diffLocs, locs_diffLocs] = findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs,'MINPEAKDISTANCE',5);
locsTurns = [locs(locs_diffLocs), locs(locs_diffLocs+1)];
(5) Visualize turns
%% Visualizing turns
% Duplying signal + visualing
% to make second signal with the locations of the turns filled with NaN, so
% that both signals can be plotted above each other in a different colour
magNoGfilt_copy = magNoGfilt;
for k = 1: size(locsTurns,1);
magNoGfilt_copy(locsTurns(k,1):locsTurns(k,2)) = NaN;
end
% visualising signal;
figure;
subplot(2,1,1)
hold on;
plot(magNoGfilt,'b')
plot(magNoGfilt_copy, 'r');
title('Inside Straight: Filtered data with turns highlighted in blue')
hold off;
(6) CALCULATIONS
%% Calculation
% VRAAG LAURENS zie blauwe blaadje
startPos = 1;
for i = 1: size(locsTurns,1);
endPos = locsTurns(i,1)-1;
inputData = dataAcc(startPos:endPos,:);
WindowLen = size(inputData,1);
ApplyRealignment = false;
[ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps); % Naam van deze moet nog aangepast.
if i ==1 % only the firs time
Parameters = fieldnames(ResultStruct);
NrParameters = length(Parameters);
end
for j = 1:NrParameters % only works if for every bin we get the same outcomes (which is the case in this script)
DataStraight.([char(Parameters(j))])(i) = ResultStruct.([char(Parameters(j))]);
end
startPos = locsTurns(i,2)+1;
end
clear ResultStruct;
% Calculate mean over the bins without turns to get 1 outcome value per parameter for inside
% straight;
for j = 1:NrParameters;
ResultStruct.([char(Parameters(j))]) = nanmean(DataStraight.([char(Parameters(j))]))
end
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 + LyapunovPerStrideWolf_ML: 2.0830 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 + LyapunovPerStrideWolf_ML: 2.0830 + LyapunovPerStrideWolf_AP: 2.4095 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 + LyapunovPerStrideWolf_ML: 2.0830 + LyapunovPerStrideWolf_AP: 2.4095 + LyapunovPerStrideRosen_V: 1.5914 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 + LyapunovPerStrideWolf_ML: 2.0830 + LyapunovPerStrideWolf_AP: 2.4095 + LyapunovPerStrideRosen_V: 1.5914 + LyapunovPerStrideRosen_ML: 1.2964 +
ResultStruct = struct with fields:
StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + SampleEntropy_V: 0.2014 + SampleEntropy_ML: 0.2358 + SampleEntropy_AP: 0.2608 + LyapunovPerStrideWolf_V: 2.3378 + LyapunovPerStrideWolf_ML: 2.0830 + LyapunovPerStrideWolf_AP: 2.4095 + LyapunovPerStrideRosen_V: 1.5914 + LyapunovPerStrideRosen_ML: 1.2964 + LyapunovPerStrideRosen_AP: 1.7481 +

AggregateFunction;

+
+ \ No newline at end of file diff --git a/GaitVariabilityAnalysisLD.mlx b/GaitVariabilityAnalysisLD.mlx new file mode 100644 index 0000000..edd5a70 Binary files /dev/null and b/GaitVariabilityAnalysisLD.mlx differ diff --git a/GaitVariabilityAnalysisLD.tex b/GaitVariabilityAnalysisLD.tex new file mode 100644 index 0000000..9b5130d --- /dev/null +++ b/GaitVariabilityAnalysisLD.tex @@ -0,0 +1,1944 @@ +% This LaTeX was auto-generated from MATLAB code. +% To make changes, update the MATLAB code and export to LaTeX again. + +\documentclass{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{graphicx} +\usepackage{color} +\usepackage{hyperref} +\usepackage{amsmath} +\usepackage{amsfonts} +\usepackage{epstopdf} +\usepackage[table]{xcolor} +\usepackage{matlab} + +\sloppy +\epstopdfsetup{outdir=./} +\graphicspath{ {./GaitVariabilityAnalysisLD_images/} } + +\matlabhastoc + +\begin{document} + +\label{T_D37184EE} +\matlabtitle{Gait Variability Analysis CLBP} + +\matlabtableofcontents{Table of Contents} +\begin{matlabcode} +% Gait Variability Analysis +% Script created for MAP 2020-2021 +% adapted from Claudine Lamoth and Iris Hagoort +% version1 October 2020 + +% Input: needs mat file which contains all raw accelerometer data +% Input: needs excel file containing the participant information including +% leg length. + + +\end{matlabcode} + + +\label{H_7D86BAF1} +\matlabheading{Clear and close;} + +\begin{matlabcode} +clear; +close all; +\end{matlabcode} + + +\label{H_82614DF8} +\matlabheading{Load data;} + +\begin{par} +\begin{flushleft} +Select 1 trial. \textbf{For loop to import all data will be used at a later stage} +\end{flushleft} +\end{par} + +\begin{matlabcode} +[FNaam,FilePad] = uigetfile('*.xls','Load phyphox data...'); +filename =[FilePad FNaam]; +PhyphoxData = xlsread(filename) +\end{matlabcode} +\begin{matlaboutput} +PhyphoxData = 24092x4 + 0 0.4018 -8.5041 4.8779 + 0.0100 0.3962 -8.4703 4.7944 + 0.0199 0.4335 -8.4378 4.7159 + 0.0299 0.5209 -8.3889 4.6266 + 0.0399 0.6495 -8.3796 4.5437 + 0.0498 0.7528 -8.3817 4.4288 + 0.0598 0.8820 -8.3622 4.3134 + 0.0697 0.9841 -8.4321 4.2221 + 0.0797 1.1041 -8.5237 4.1916 + 0.0897 1.1959 -8.5418 4.1310 + +\end{matlaboutput} +\begin{matlabcode} + +%load('Phyphoxdata.mat'); % loads accelerometer data, is stored in struct with name AccData +%load('ExcelInfo.mat'); +%Participants = fields(AccData); +\end{matlabcode} + + +\label{H_04FF0795} +\matlabheading{Settings;} + +\begin{matlabcode} +LegLength = 98 % LegLength info not available! +\end{matlabcode} +\begin{matlaboutput} +LegLength = 98 +\end{matlaboutput} +\begin{matlabcode} +%LegLengths = excel.data.GeneralInformation(:,5); % leglength info is in 5th column +LegLengthsM = LegLength/100; % convert to m +t1 = length(PhyphoxData(:,1)); % Number of Samples + + +FS = 100; % sample frequency +Time_ms = PhyphoxData(:,1); +accX = PhyphoxData(:,2); +accY = PhyphoxData(:,3); +accZ = PhyphoxData(:,4); +AccData = (PhyphoxData(:,[1 2 3 4])); % matrix with accelerometer data + +Start = 1; % Start time (s) for plot +End = 60; % End time (s) for plot +T1 = Start*FS; % Start time calculated from Hz +T2 = End*FS; % End time calculated from Hz +c = (Start:(1/FS):End)'; % Time STEPSIZE = 1/100 +\end{matlabcode} + + +\label{H_A9CB60AB} +\matlabheading{Plot the data;} + +\begin{par} +\begin{flushleft} +\textbf{(1) first step in notebook} +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +1st column is time data (ms) +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +2nd column is X, medio-lateral: + left, - right +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +3rd column is Y, vertical: + downwards, - upwards +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +4th column is Z, anterior- posterior : + forwards, - backwards +\end{flushleft} +\end{par} + +\begin{matlabcode} +AccX = accX(T1:T2); % Signal over timeframe +AccY = accY(T1:T2); % Signal over timeframe +AccZ = accZ(T1:T2); % Signal over timeframe + +figure(1); +plot(c,AccX,c,AccY,c,AccZ); % Plot signal over timeframe +title('acc signal not filtered - First Minute') +xlabel('Time (s)'); +ylabel('acceleration (g)'); +legend('X - ML','Y - Vertical','Z - AP') +\end{matlabcode} +\begin{center} +\includegraphics[width=\maxwidth{56.196688409433015em}]{figure_0.eps} +\end{center} + +\label{H_77261343} +\matlabheading{\includegraphics[width=\maxwidth{37.431008529854495em}]{image_0}} + +\label{H_4A6AF4FC} +\vspace{1em} + +\label{H_CA962223} +\matlabheading{Calculate parameters;} + +\begin{par} +\begin{flushleft} +calculate only for the first participant; +\end{flushleft} +\end{par} + +\begin{matlabcode} +inputData = AccData; +WindowLength = FS*10; % why FS*10? +ApplyRealignment = true; % reorder data to 1 = V; 2= ML, 3 = AP +ApplyRemoveSteps = false; % if true - removes first 30 and last 30 steps +[ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLength,ApplyRealignment,ApplyRemoveSteps) +\end{matlabcode} +\begin{matlaboutput} +ResultStruct = + StrideRegularity_V: 0.3908 + StrideRegularity_ML: 0.4191 + StrideRegularity_AP: 0.1101 + StrideRegularity_All: 0.3529 + RelativeStrideVariability_V: 0.6092 + RelativeStrideVariability_ML: 0.5809 + RelativeStrideVariability_AP: 0.8899 + RelativeStrideVariability_All: 0.6471 + StrideTimeSamples: 132 + StrideTimeSeconds: 1.3200 + GaitSymm_V: 16.8830 + GaitSymm_AP: NaN + GaitSymmIndex: 2.8065 + StepLengthMean: 11.5894 + Distance: 1.8825e+03 + WalkingSpeedMean: 7.8279 + StrideTimeVariability: 0.1931 + StrideSpeedVariability: 1.1210 + StrideLengthVariability: 0.7532 + StrideTimeVariabilityOmitOutlier: 14.7357 + StrideSpeedVariabilityOmitOutlier: 0.8713 + StrideLengthVariabilityOmitOutlier: 0.4511 + IndexHarmonicity_V: 0.6094 + IndexHarmonicity_ML: 0.8041 + IndexHarmonicity_AP: 0.9122 + IndexHarmonicity_All: 0.6742 + HarmonicRatio_V: 2.4928 + HarmonicRatio_ML: 2.8449 + HarmonicRatio_AP: 1.6364 + HarmonicRatioP_V: 9.1114 + HarmonicRatioP_ML: 14.1449 + HarmonicRatioP_AP: 5.6995 + FrequencyVariability_V: 0.5234 + FrequencyVariability_ML: 0.6435 + FrequencyVariability_AP: 0.6281 + StrideFrequency: 0.7367 + LyapunovWolf_V: 1.3653 + LyapunovWolf_ML: 1.1477 + LyapunovWolf_AP: 1.4231 + LyapunovRosen_V: 1.0151 + LyapunovRosen_ML: 0.7871 + LyapunovRosen_AP: 0.9792 + SampleEntropy_V: 0.1999 + SampleEntropy_ML: 0.2537 + SampleEntropy_AP: 0.2710 + LyapunovPerStrideWolf_V: 1.8534 + LyapunovPerStrideWolf_ML: 1.5579 + LyapunovPerStrideWolf_AP: 1.9318 + LyapunovPerStrideRosen_V: 1.3780 + LyapunovPerStrideRosen_ML: 1.0685 + LyapunovPerStrideRosen_AP: 1.3292 + +\end{matlaboutput} + +\begin{par} +\begin{flushleft} +\textbf{output:} +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +- \underline{NaN GaitSymm\_V: } +\end{flushleft} +\end{par} + +\begin{itemize} +\setlength{\itemsep}{-1ex} + \item{\begin{flushleft} Gait Synmmetry is only informative in AP/V direction: See Tura A, Raggi M, Rocchi L, Cutti AG, Chiari L: Gait symmetry and regularity in transfemoral amputees assessed by trunk accelerations. J Neuroeng Rehabil 2010, 7:4 \end{flushleft}} +\end{itemize} + +\begin{par} +\begin{flushleft} +- SampEn has two advantages over ApEn: data length independence and a relatively trouble-free implementation. +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +- Some Settings ResulStruct +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{IgnoreMinMaxStrides = 0.10; } \% Number or percentage of highest\&lowest values ignored for improved variability estimation +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{N\_Harm = 12; } \% Number of harmonics used for harmonic ratio, index of harmonicity and phase fluctuation +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{Lyap\_m = 7; } \% Embedding dimension (used in Lyapunov estimations) +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{Lyap\_FitWinLen} = round(60/100*FS); \% Fitting window length (used in Lyapunov estimations Rosenstein's method) +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{Sen\_m = 5;} \% Dimension, the length of the subseries to be matched (used in sample entropy estimation) +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{Sen\_r = 0.3;} \% Tolerance, the maximum distance between two samples to qualify as match, relative to std of DataIn (used in sample entropy estimation) +\end{flushleft} +\end{par} + +\label{H_2EA43FAC} +\matlabheadingtwo{Index of harmonicity (Lamoth et al. 2002)} + +\begin{par} +\begin{flushleft} +by means of a discrete Fourier transform (DFT). The peak power at the first six harmonics was estimated and, subsequently, the index of harmonicity was defined as ; \textbf{FORMULA} +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +where P0 is the power spectral density of the fundamental frequency (first harmonic) and \$ Pi the cumulative sum of power spectral density of the fundamental frequency and the first five superharmonics. A power ratio of 1 indicates that the rotation of the pelvis or the thorax is perfectly harmonic. In view of possible drift, which could lead to missing or widening peaks, the power spectral density of each peak was calculated within the frequency bands of +0.1 and −0.1 Hz of the peak frequency value. All power spectral densities were normalized by dividing the power by the sum of the total power spectrum, which equals the variance. +\end{flushleft} +\end{par} + +\label{H_3E396779} +\matlabheadingtwo{Lyapunov exponents (Wolfs vs. Rosenstein)} + +\label{H_B1B85E8D} +\begin{par} +\begin{flushleft} +The W-algorithm is advocated for use when examining local dynamic stability with small gait data sets. +\end{flushleft} +\end{par} + +\label{H_9FD2A70A} +\matlabheading{Visualize step detection;} + +\begin{par} +\begin{flushleft} +function [ResultStruct] = GaitVariabilityAnalysisIH\_WithoutTurns(inputData,FS,LegLength,ApplyRealignment,ApplyRemoveSteps); +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +\textbf{script for analysing straight parts} +\end{flushleft} +\end{par} + +\begin{par} +\begin{flushleft} +(1) Realign Data +\end{flushleft} +\end{par} + +\begin{matlabcode} +%% Realign data +data = inputData(:, [3,2,4]); % reorder data to 1 = V; 2= ML, 3 = AP + +%Realign sensor data to VT-ML-AP frame +if ApplyRealignment % apply relignment as described in Rispens S, Pijnappels M, van Schooten K, Beek PJ, Daffertshofer A, van Die?n JH (2014). + % Consistency of gait characteristics as determined from acceleration data collected at different trunk locations. Gait Posture 2014;40(1):187-92. + [RealignedAcc, ~] = RealignSensorSignalHRAmp(data, FS); + dataAcc = RealignedAcc; +end + +\end{matlabcode} + +\begin{par} +\begin{flushleft} +(2) Filter Data +\end{flushleft} +\end{par} + +\begin{matlabcode} + +%% Filter data strongly & Determine location of steps + +% Filter data +[B,A] = butter(2,3/(FS/2),'low'); % Filters data very strongly which is needed to determine turns correctly +dataStepDetection = filtfilt(B,A,dataAcc); + +\end{matlabcode} + +\begin{par} +\begin{flushleft} +(3) Determine Location of steps +\end{flushleft} +\end{par} + +\begin{matlabcode} +% Determine steps; + +%%%%%%% HIER MISSCHIEN ALTERNATIEF VOOR VAN RISPENS %%%%%%%%%%%%% + +% Explanation of method: https://nl.mathworks.com/help/supportpkg/beagleboneblue/ref/counting-steps-using-beagleboneblue-hardware-example.html +% From website: To convert the XYZ acceleration vectors at each point in time into scalar values, +% calculate the magnitude of each vector. This way, you can detect large changes in overall acceleration, +% such as steps taken while walking, regardless of device orientation. + +magfilt = sqrt(sum((dataStepDetection(:,1).^2) + (dataStepDetection(:,2).^2) + (dataStepDetection(:,3).^2), 2)); +magNoGfilt = magfilt - mean(magfilt); +minPeakHeight2 = std(magNoGfilt); +[pks, locs] = findpeaks(magNoGfilt, 'MINPEAKHEIGHT', minPeakHeight2); % for step detection +numStepsOption2_filt = numel(pks); % counts number of steps; +\end{matlabcode} + +\begin{par} +\begin{flushleft} +(4) Determine location of turns +\end{flushleft} +\end{par} + +\begin{matlabcode} +%% Determine locations of turns; + +diffLocs = diff(locs); % calculates difference in step location +avg_diffLocs = mean(diffLocs); % average distance between steps +std_diffLocs = std(diffLocs); % standard deviation of distance between steps + +figure(2); +findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs, 'MINPEAKDISTANCE',5); % these values have been chosen based on visual inspection of the signal +line([1 length(diffLocs)],[avg_diffLocs avg_diffLocs]) +\end{matlabcode} +\begin{center} +\includegraphics[width=\maxwidth{56.196688409433015em}]{figure_1.eps} +\end{center} +\begin{matlabcode} +[pks_diffLocs, locs_diffLocs] = findpeaks(diffLocs, 'MINPEAKHEIGHT', avg_diffLocs,'MINPEAKDISTANCE',5); +locsTurns = [locs(locs_diffLocs), locs(locs_diffLocs+1)]; + +\end{matlabcode} + +\begin{par} +\begin{flushleft} +(5) Visualize turns +\end{flushleft} +\end{par} + +\begin{matlabcode} +%% Visualizing turns + +% Duplying signal + visualing +% to make second signal with the locations of the turns filled with NaN, so +% that both signals can be plotted above each other in a different colour + +magNoGfilt_copy = magNoGfilt; +for k = 1: size(locsTurns,1); + magNoGfilt_copy(locsTurns(k,1):locsTurns(k,2)) = NaN; +end + + +% visualising signal; +figure; +subplot(2,1,1) +hold on; +plot(magNoGfilt,'b') +plot(magNoGfilt_copy, 'r'); +title('Inside Straight: Filtered data with turns highlighted in blue') +hold off; +\end{matlabcode} +\begin{center} +\includegraphics[width=\maxwidth{56.196688409433015em}]{figure_2.eps} +\end{center} +\begin{matlabcode} + +\end{matlabcode} + +\begin{par} +\begin{flushleft} +(6) CALCULATIONS +\end{flushleft} +\end{par} + +\begin{matlabcode} +%% Calculation +% VRAAG LAURENS zie blauwe blaadje + +startPos = 1; +for i = 1: size(locsTurns,1); + endPos = locsTurns(i,1)-1; + + inputData = dataAcc(startPos:endPos,:); + WindowLen = size(inputData,1); + ApplyRealignment = false; + [ResultStruct] = GaitOutcomesTrunkAccFuncIH(inputData,FS,LegLength,WindowLen,ApplyRealignment,ApplyRemoveSteps); % Naam van deze moet nog aangepast. + + if i ==1 % only the firs time + Parameters = fieldnames(ResultStruct); + NrParameters = length(Parameters); + end + + for j = 1:NrParameters % only works if for every bin we get the same outcomes (which is the case in this script) + DataStraight.([char(Parameters(j))])(i) = ResultStruct.([char(Parameters(j))]); + end + startPos = locsTurns(i,2)+1; + +end + +clear ResultStruct; + +% Calculate mean over the bins without turns to get 1 outcome value per parameter for inside +% straight; + +for j = 1:NrParameters; + ResultStruct.([char(Parameters(j))]) = nanmean(DataStraight.([char(Parameters(j))])) +end +\end{matlabcode} +\begin{matlaboutput} +ResultStruct = + StrideRegularity_V: 0.9005 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 + HarmonicRatio_AP: 2.5141 + HarmonicRatioP_V: 21.1829 + HarmonicRatioP_ML: 19.5829 + HarmonicRatioP_AP: 12.5052 + FrequencyVariability_V: 0.2160 + FrequencyVariability_ML: 0.4381 + FrequencyVariability_AP: 0.1981 + StrideFrequency: 0.6364 + LyapunovWolf_V: 1.4401 + LyapunovWolf_ML: 1.2904 + LyapunovWolf_AP: 1.5238 + LyapunovRosen_V: 0.9931 + LyapunovRosen_ML: 0.8064 + LyapunovRosen_AP: 1.0984 + +ResultStruct = + StrideRegularity_V: 0.9005 + StrideRegularity_ML: 0.7110 + StrideRegularity_AP: 0.6643 + StrideRegularity_All: 0.7765 + RelativeStrideVariability_V: 0.0995 + RelativeStrideVariability_ML: 0.2890 + RelativeStrideVariability_AP: 0.3357 + RelativeStrideVariability_All: 0.2235 + StrideTimeSamples: 217.5556 + StrideTimeSeconds: 2.1756 + GaitSymm_V: 5.7952 + GaitSymm_AP: 7.0128 + GaitSymmIndex: 2.3916 + StepLengthMean: 11.9893 + Distance: 83.0819 + WalkingSpeedMean: 6.1785 + StrideTimeVariability: 0.0200 + StrideSpeedVariability: 0.1990 + StrideLengthVariability: 0.5502 + StrideTimeVariabilityOmitOutlier: 6.0071 + StrideSpeedVariabilityOmitOutlier: 0.2542 + StrideLengthVariabilityOmitOutlier: 0.3722 + IndexHarmonicity_V: 0.4981 + IndexHarmonicity_ML: 0.7579 + IndexHarmonicity_AP: 0.8968 + IndexHarmonicity_All: 0.6349 + HarmonicRatio_V: 3.6118 + HarmonicRatio_ML: 3.4148 +