Matlab function 'movmean' doesn't work on simulink

I'm designing movmean function on simulink using Matlab function block
And when i try to test the block by inputing timeseries data, the input and output of 'movmean' function is same.
I attach pics below
1) Moving Average function block
2) code of Moving Average block
3) input and output of Moving Average block (output is not computed well)

1 件のコメント

Ivo
Ivo 2025 年 12 月 22 日
移動済み: Walter Roberson 2025 年 12 月 22 日
I have exactly the same problem. :(

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2025 年 12 月 22 日

0 投票

This is expected if the input data is scalar (not a 1 x N or N x 1 vector or 2D array.)
Simulink feeds scalar signals to MATLAB Function Blocks one sample at a time. The moving mean of a scalar alone is the same scalar back again.
Simulink does not keep a history of all the (individually scalar) signals that have gone before, and feed the entire time history into a MATLAB Function Block.
One way to achieve the desired behaviour, is to use a DSP "buffer" block https://www.mathworks.com/help/dsp/ref/buffer.html with the overlap set to one less than the buffer size, and feed the output of the buffer block to a mean block (not a movmean block)
I suspect there might also be methods that involve transfer functions.

2 件のコメント

Fangjun Jiang
Fangjun Jiang 2025 年 12 月 22 日
There is a "Moving Average" block in DSP toolbox.
Walter Roberson
Walter Roberson 2025 年 12 月 22 日
Oh, that is useful!

サインインしてコメントする。

カテゴリ

製品

リリース

R2017a

質問済み:

2022 年 1 月 6 日

コメント済み:

2025 年 12 月 22 日

Community Treasure Hunt

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

Start Hunting!

Translated by