Running average from vector of data
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
shobhit mehrotra
le 8 Avr 2015
Modifié(e) : Image Analyst
le 8 Avr 2015
Hi, I have a vector A A = (1 ,3 ,4 -2, 5 ,6 8, 9, -4, -2)
I want to create a vector with the running average such that
B = (A1, (A1+A2)/2, (A1+A2+A3)/3, ....) then plot(B)
Thanks!
0 commentaires
Réponse acceptée
James Tursa
le 8 Avr 2015
Modifié(e) : James Tursa
le 8 Avr 2015
x = 1:numel(AA);
B = cumsum(AA)./x;
plot(x,B);
0 commentaires
Plus de réponses (1)
Image Analyst
le 8 Avr 2015
Modifié(e) : Image Analyst
le 8 Avr 2015
If you have the Curve Fitting Toolbox, try smooth: http://www.mathworks.com/help/curvefit/smooth.html?searchHighlight=smooth
Otherwise, use conv() (twice) and plot().
% Create sample data.
signal = randi(9, 1, 5)
% Make a moving window (kernel) to do the counting.
kernel = [1, 1, 1];
% Count the number of elements in the moving window.
counts = conv(ones(1, length(signal)), kernel, 'full')
% Sum the signal in the moving window.
sums = conv(signal, kernel, 'full')
% Divide the sums by the counts to get the average.
movingAverage = sums ./ counts
plot(movingAverage, 'b-', 'LineWidth', 3);
grid on;
Sample data:
signal =
3 2 8 2 1
counts =
1 2 3 3 3 2 1
sums =
3 5 13 12 11 3 1
movingAverage =
3.0000 2.5000 4.3333 4.0000 3.6667 1.5000 1.0000
0 commentaires
Voir également
Catégories
En savoir plus sur Signal Generation and Preprocessing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!