I'm trying to do simple averaging in Simulink and need some help with it.
28 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Guillermo
am 9 Nov. 2011
Beantwortet: Martin Murtagh
am 23 Mär. 2021
Assume AI'm acquiring a noisy signal at 1 mS interval and I want to get 1 point every 50 mS. I would like to collect the data for the 50 mS and spit out an average for logging. I'm not sure how to do it.
Any simple solutions would be appreciated.
0 Kommentare
Akzeptierte Antwort
Alexander Bottema
am 9 Nov. 2011
function y = my_average(u) %# codegen
persistent i buf bufSum;
if isempty(buf)
buf = zeros(1,50);
bufSum = 0;
i = 1;
end
bufSum = bufSum - buf(i);
buf(i) = u;
bufSum = bufSum + u;
i = i + 1;
if i > numel(buf)
i = 1;
end
y = bufSum / numel(buf);
2 Kommentare
Weitere Antworten (4)
Fangjun Jiang
am 9 Nov. 2011
Use the "Weighted Moving Average" block from Simulink>Discrete, click help for details.
2 Kommentare
Fangjun Jiang
am 9 Nov. 2011
Hah, it is obsolete! http://www.mathworks.com/help/toolbox/simulink/ref_obsolete_blocks/weightedmovingaverageobsolete.html
Use the new Discrete FIR Filter, http://www.mathworks.com/help/toolbox/simulink/slref/discretefirfilter.html
Walter Roberson
am 9 Nov. 2011
Feed the signal in to an integration block that is reset to 0 every 50 samples; take the 50th output and divide it by 50 to get the average for that period.
There might be a cleaner way to only trigger the output collection every 50 outputs and tie that in to the integration block being cleared right afterwards.
Martin Murtagh
am 23 Mär. 2021
I have replaced the moving average block in my models with the subsystem shown. By setting the delay length to the moving average value divided by the time-step and the gain value to one over the moving average value, this subsystem will calcuate the moving average in the same way as the moving average function with a sliding window.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Signal Operations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!