sum and average of a vector
3 views (last 30 days)
Show older comments
shalipse
on 30 Jul 2016
Answered: Image Analyst
on 30 Jul 2016
Dear all,
I am fairly new to matlab and struggling to write a code. I will be grateful to be given a push. For instance given a vector one to hundered, I want to take every three values and average them. Also print the output result. E.g
(1+2+3)/3 + (4+5+6)/3 + (7+8+9)/3 + .......
Thank you in advance and I appreciate your contribution.
regards
Ismaeel
2 Comments
John D'Errico
on 30 Jul 2016
Unless your vector has a length that is a multiple of 3, any such solution will fail. So 100 elements will not allow you to do that.
The simple solution uses reshape and sum to solve the problem. So why not try it? You will learn by trying. So see what reshape does. How might that help you? Then think about what the sum function does.
Accepted Answer
Azzi Abdelmalek
on 30 Jul 2016
Edited: Azzi Abdelmalek
on 30 Jul 2016
A=randi(10,30,1) % Example
mean(reshape(A,3,[]))
If the length of A is not a multiple of 3
A=randi(10,38,1)
n=numel(A)
p=mod(-n,3)
A(n+1:n+p)=nan % complete with nan
out=nanmean(reshape(A,3,[]))
More Answers (2)
Image Analyst
on 30 Jul 2016
Yet another way using conv() to take the moving average:
m = 1 : 33 % Create sample data.
m2 = conv(m, [1,1,1]/3, 'valid'); % Intermediate array.
output = m2(1:3:end) % Subsample to get final array.
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!