I'm trying to do simple averaging in Simulink and need some help with it.
    22 views (last 30 days)
  
       Show older comments
    
    Guillermo
      
 on 9 Nov 2011
  
    
    
    
    
    Answered: Martin Murtagh
 on 23 Mar 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 Comments
Accepted Answer
  Alexander Bottema
    
 on 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);
More Answers (4)
  Fangjun Jiang
      
      
 on 9 Nov 2011
        Use the "Weighted Moving Average" block from Simulink>Discrete, click help for details.
2 Comments
  Fangjun Jiang
      
      
 on 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
      
      
 on 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
 on 23 Mar 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 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



