User Tools

Site Tools


visual3d:documentation:pipeline:signal_commands:lowpass_filter

Lowpass Filter

The Lowpass Filter command filters a signal's data points using a bidirectional filter. The user can specify whether a BUTTERWORTH or CRITICALLY_DAMPED filter will be used; Visual3D uses a Butterworth Bidirectional Filter for Lowpass/Highpass filtering.

The number of bidirectional passes specified determines the order of the filter (e.g. 1 bidirectional pass results in a fourth order filter). This means if the NUM_BIDIRECTIONAL_PASSES parameter is set to 1, the filter is a fourth order, if the NUM_BIDIRECTIONAL_PASSES parameter is set to two, the filter is an eighth order filter, etc.

For the lowpass filter the slope of the signal is removed before filtering the data, then replaced after filtering.

Pipeline Command

Lowpass_Filter
! /SIGNAL_TYPES=
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_NAMES=
! /RESULT_FOLDER=PROCESSED
! /RESULT_SUFFIX=
! /FILTER_CLASS=BUTTERWORTH
! /FREQUENCY_CUTOFF=6.0
! /NUM_REFLECTED=6
! /NUM_EXTRAPOLATED=0
! /TOTAL_BUFFER_SIZE=6
! /NUM_BIDIRECTIONAL_PASSES=1
;

Command Parameters

Parameter Description
Signal TypesThe type of signal to be processed
Signal NamesThe names of the signals to be processed
Signal FolderThe name of the origin signal folder
Result FolderThe data tree folder that the resulting signal is placed
Result SuffixThe suffix for results that is be applied to the original signal name
Filter ClassBUTTERWORTH or CRITICALLY_DAMPED
Frequency CutoffThe frequency window containing the frames to be averaged
Num ReflectedThe number of points reflected at the ends of the signal
Num ExtrapolatedThe number of points added at the ends using a linear extrapolation
Total Buffer SizeTotal size of the addition buffer (includes reflected points)
Num Bidirectional PassesNumber of Bidirectional passes through the data

Dialog

The dialog box that can be used to edit the command appears like so:

lowpassfilterdlg.jpg

Example

Explore the changes to the kinematics (e.g. LINK_MODEL_BASED signals) caused by changes to the cutoff frequency. In this example:

  1. five cutoff filters (5, 6, 7, 8, and 9 Hz) are applied;
  2. The LINK_MODEL_BASED signals are updated; and
  3. the LINK_MODEL_BASED signals are copied to a unique folder.
For_Each
/ITERATION_PARAMETER_NAME=CUTOFF
/ITEMS=5+6+7+8+9
;

Lowpass_Filter
/SIGNAL_TYPES=TARGET
! /SIGNAL_NAMES=
! /SIGNAL_FOLDER=ORIGINAL
! /RESULT_SUFFIX=
! /RESULT_FOLDER=PROCESSED
! /FILTER_CLASS=BUTTERWORTH
/FREQUENCY_CUTOFF=::CUTOFF
! /NUM_REFLECTED=6
! /TOTAL_BUFFER_SIZE=6
! /NUM_BIDIRECTIONAL_PASSES=1
;

Recalc
;

Copy_Folder
/SIGNAL_TYPE=LINK_MODEL_BASED
/EXISTING_FOLDER=ORIGINAL
/NEW_FOLDER_NAME=CUTOFF&::CUTOFF
/OVERWRITE_EXISTING_SIGNALS=TRUE
;

End_For_Each
/ITERATION_PARAMETER_NAME=CUTOFF
;

Notes

Frame Inclusion Criteria

The procedure filters the input data from the first good frame of data to the last good frame of data (according to POINT Reliability - fourth component of the POINT signal in the data tree). The leading and trailing data are ignored.

Buffering Frames

Digital filters do not work particularly well at the ends of the data array. In an attempt to minimize this problem, Visual3D's procedure buffers the data at both ends.

Num_Buffered_Frames:

numbufferedframes.jpg

The user can specify that the data be reflected at the beginning and end of the array and/or that the data be linearly extrapolated at the beginning and end of the array.

Num_Reflected_Frames:

numreflected.jpg

Num_Extrapolate_Frames:

numextrapolated.jpg

For example, if 10 points are reflected and the total size of the buffer is set to 20, then 10 points will be reflected at the beginning and end of the signal and 10 additional frames of data will be extrapolated linearly beyond this. After the data is filtered, the buffer is deleted.

numextrapolatedandbuffered.jpg

Maximum Cutoff Frequency

The cutoff frequency takes into account the number of bidirectional passes through the signal. The default lowpass filter in Visual3D is a fourth order Butterworth filter.

Butterworth filters have an upper limit on the magnitude of the cutoff frequency. The maximum theoretical cutoff frequency is

sampling_rate*0.802/2

. Visual3D is a little more conservative than that because we have found the filter to be unreliable at the theoretical limits. The highest cutoff frequency that Visual3D will allow you is

0.393 * sampling-rate

For example, if your EMG signals are sampled at 1000 Hz, then the highest cutoff frequency you can implement in Visual3D is 393 Hz.

Note that the cutoff frequency can be specified as an expression. For example, consider that the signal to be filtered is an ANALOG signal:

/Frequency_Cutoff= 0.393*METRIC::PROCESSED::ANALOG_RATE

Reference

Robertson DGE and Dowling JJ (2003) Design and responses of Butterworth and critically dampted digital filters. Journal of Electromyography and Kinesiology 13. 569-573

See Also

visual3d/documentation/pipeline/signal_commands/lowpass_filter.txt · Last modified: 2026/03/10 05:05 by wikisysop