Moving average on window of latest inputs with Exponential Weighting method

1 回表示 (過去 30 日間)
Aviad Aviad
Aviad Aviad 2018 年 4 月 22 日
回答済み: Benjamin Großmann 2018 年 5 月 22 日
I want to create a subsystem in Simulink that performs moving average with exponential weighting method on a finite-size window of latest inputs.
Currently, the Moving Average block in Simulink performs this task on on the entire input while I wish to perform the moving average with exponential weighting on the 10 most recent elements only.
What is the best way to do this in Simulink? Thanks in advance.

回答 (1 件)

Benjamin Großmann
Benjamin Großmann 2018 年 5 月 22 日
One possibility is to use the discrete filter block with denominater = [1] and Numerator are the exponential weights. If you do not want some static gain, then the sum of the weights shoul equal 1, e.g.
Numerator = exp(-[1:10])./sum(exp(-[1:10]));
A hand made solution could exist of a tapped delay block which outputs N delays of the input inside a vector. Then you can multiply your weights to this vector and sum up all elements:

カテゴリ

Help Center および File ExchangeSources についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by