# Help:Logging in

### From Orthoload Wiki

## Contents

## Software averDTW

## General

averDTW calculates an average signal from several varying, time dependent signals, using a dynamic time warping procedure.

Simplified description: k signals are first time normalized and then time distorted (warped) so that the summed squared distance between all of them become a minimum. All distorted signals are treated statistically, obtaining different output signals: mean, median, minimum, maximum, 25 percentiles, 75 percentiles.

There are two versions of the algorithm:

- Visual Basic (2015) software and

- MatLab (2016b) script.

**Data Structure**

The time can be measured using any time base (e.g. milliseconds, hours ...). It has to start with zero. The time intervals don’t have to be equidistant. The number m of synchronously measured signals is not limited but has to be the same for each measurement. The number n of data sets can be different for each measurement.

The signal A_{k}(i, j) consists of time points and m synchronously measured signals. It is measured p times. Each of the p measurements is about n data sets long. Each measurement k = 1 ... p is stored in a 2-dimensional, null-terminated array A_{k}(i,j).

**Sub-signal used for warping **

Warping is done with one of the synchronously measured signals (DTWcomp). All other signals are then distorted identically before the average/ median etc. signals are calculated. That signal DTWcomp, which is most representative for all other signals, has to be applied for warping. In case of a spatial force, for example, the most representative signal would be the resultant force F.

Example:

m = 4 synchronously measured and calculated signals: The resultant force F and its components F_{x}, F_{y}, F_{z} in directions x, y, z;

p = 5 measurements (each is about 1 second long);

Each measurement k = 1 … p (p=5) consists of n = 1001 data sets.

Each measurement k = 1 ... p (p = 5) is stored in a 2-dimensional, null-terminated array A_{k}(i,j) with the indizes:

i = 0 ... 4 - time (i = 0) and m = 4 synchronously measured signals F_{x} (i = 1), F_{y } (i = 2), F_{z } (i = 3) and F_{res }(i = 4)

j = 0 ... n - 1 - n = 1001 data sets in each measurement

**Input for the algorithm**:

Arrays Ak(i,j) from p different measurements.

The following parameters can be chosen:

- DTWComp - number of that signal in the array Ak(i,j) which is used for calculation of dynamic time warping path (interger). Standard value DTWComp = 1

- NumOfIntervals - number j of data sets in the average signal (integer). Standard value = 600

- WinConstraint - windows constraint for dynamic time warping matrix in percent (integer). Standard value = 20 (details see Bender and Bergmann 2012).

- Filter: all signals in output (average, median, maximum, minimum, 25 percentiles, 75 percentiles) can be smoothed by a single pole low-pass filter with smoothing factors between 0 and 100 (unsmoothed):

o SmoothAver- smoothing factor applied to average signal

o SmoothMedian - smoothing factor applied to median signal

o Smooth25Perc - smoothing factor applied to 25 percentile signal

o Smooth75Perc - smoothing factor applied to 75 percentile signal

o SmoothMax- smoothing factor applied to maximum signal

o SmoothMin- smoothing factor applied to minimum signal

**Output for the algorithm**:

Arrays Aout(i,j) with average (median/min etc) signals, having the same data structure as A(i,j).

**It has to be mentioned** that our load data consist of three force and three moment components. In our applications, time warping is always performed on the resultant force. The obtained warping paths of the resultant forces are then applied to the corresponding three force components.

The same strategy can be applied on synchronous gait data, for example. It then has to be decided and justified which of the variables will be used as the ‘master’ for calculating the warping paths.

**For details see:**

Bender A., Bergmann G., Determination of Typical Patterns from Strongly Varying Signals,Comput Methods Biomech Biomed Engin. 2012;15(7):761-9.

**Example 1:**

There are 10 curves of resultant force Fres=f(time). Every curve consists of 400 … 450 measurement points:

CurveA: Fres(j) = f(time(j)), j = 1…400

CurveB: Fres(j) = f(time (j)), j = 1…410

CurveC: Fres(j) = f(time (j)), j = 1…403

CurveD: Fres(j) = f(time (j)), j = 1…421

CurveE: Fres(j) = f(time (j)), j = 1…400

CurveF: Fres(j) = f(time (j)), j = 1…411

CurveG: Fres(j) = f(time (j)), j = 1…429

CurveH: Fres(j) = f(time (j)), j = 1…439

CurveI: Fres(j) = f(time (j)), j = 1…450

CurveJ: Fres(j) = f(time (j)), j = 1…410

Calculated ‘typical’ or average curve without smoothing: