Create a moving average
    33 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
Hi There, How can I calculate a moving average for a column of data. For instance i want to average the 50 points either side of each data point in my column. Thanks
1 commentaire
  arman arefi
 le 27 Mar 2020
				You can use Moving Average Function in the FileExchange. Please find the link below:
Réponse acceptée
  Andrei Bobrov
      
      
 le 28 Juin 2013
        A - your data
L = filter(ones(101,1)/101,1,[A(:) zeros(50,1)]);
out = L(51:end);
0 commentaires
Plus de réponses (5)
  Image Analyst
      
      
 le 28 Juin 2013
        
      Modifié(e) : Image Analyst
      
      
 le 28 Juin 2013
  
      For a 1D column vector:
movingAverage = conv(yourSignal, ones(101,1)/101, 'same');
For a 2D array of columns:
movingAverage = conv2(yourSignal, ones(101,1)/101, 'same');
If you don't want the central pixel to be included in the average and have ONLY the 50 on either side, use
kernel = ones(101,1)/100;
kernel(51) = 0;
movingAverage = conv(yourSignal, kernel, 'same');
Same for a 2D matrix except use conv2 instead of conv. conv() and conv2() are highly optimized and very fast.
4 commentaires
  Nuchto
      
 le 30 Nov 2017
				So you could use ones(101,1) first, and onces it is convolved you can divide by 101?
  Grzegorz Knor
      
 le 7 Avr 2017
        
      Modifié(e) : Adam Danz
    
      
 le 19 Sep 2021
  
      1 commentaire
  Image Analyst
      
      
 le 7 Avr 2017
				True, and it offers some edge handling options ('shrink', 'discard', 'fill') that conv2() does not have.
conv2() also does not require any toolboxes because it's in base MATLAB.
  Marc
      
 le 28 Juin 2013
        If you have the financial toolbox, doc movavg()....
[Short, Long] = movavg(Asset, Lead, Lag, Alpha)
0 commentaires
  the cyclist
      
      
 le 28 Juin 2013
        This page of the MATLAB documentation has an example of using the filter() command to calculate a moving average:
  Jan
      
      
 le 28 Juin 2013
        There are many moving average filters in the FileExchange. Whenever a standard problem occurs, looking in the FEX is a good idea:
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!








