Finn's LabVIEW Goldmine:

Moving Average (MA) Filter

LabVIEW file (sub-VI):

SubVI_moving_average_filter.vi

What is it?

It is a recursive (or online, or real-time) moving average filter implemented as a sub-VI.

The filter output is calculated with

out_k = (1 - a)*out_km1 + a*in_k

where

a = 1/N

where

N = t_ma/dt + 1

Above:

·       in_k is filter input at time index k (“now”).

·       out_k is filter output at time index k (“now”).

·       out_km1 is filter output at time index k-1 (“km1 = k minus 1”, i.e. previous time index).

·       dt is the time step (sampling time).

·       t_ma [s] is the filter time window. The smallest value of t_ma is 0 implying the filter does not filter.

·       N is the filter length (number of samples to be averaged).

·       a is a filter parameter.

This MA filter is identical to a time constant filter if the filter time window (t_ma) is identical to the filter time constant, and the time steps of both filters are equal.

Inputs and outputs of this subVI

Inputs:

·        in_k

·        t_ma

·        dt [s]

Outputs:

·        out_k

·        N

·        a

How to include the filter in your block-diagram?

1.     Save the subVI file to any folder (do not open it directly in LabVIEW).

2.     Add the subVI to the block diagram of your VI via Functions Palette / Select a VI etc. Then connect its inputs and outputs to the proper signals (wires) in the block diagram.

Filter tuning

To increase the filtering (smoothing), increase t_ma.


[Finn 's LabVIEW Page]


Updated 4 March 2022 by Finn Aakre Haugen