How to add values from vector

Hello all,
Suppose I have a vector and I want to add every five sequential values together. So for example if v1=[1 1 1 1 1 1 1 1 1 1]; Then I'm expecting to get v2 as: v2=[5 5]; How to implement this in matlab?
I tried the following code:
%%%%%%%
v=[1 1 1 1 1 1 1 1 1 1];
for i=1:i+5:length(v)
v2(i)=v(i)+v(i+1)+v(i+2)+v(i+3)+v(i+4)
end
%%%%%%%
But the answer was wrong; it was
v2=[5 0 0 0 0 5]

 采纳的回答

per isakson
per isakson 2014-3-11
编辑:per isakson 2014-3-11
A Matlabish way
>> sum( reshape( ones(1,10), 5, [] ) )
ans =
5 5
it assumes that the length of v1 is a multiple of 5

3 个评论

What if the length is not multiples of 5? How can I add zeros?
I have used the answer given by per isakson to solve your problem.Try it!
v = [1 1 1 1 1 1 1];
leng = length(v);
x = mod(leng,5);
if x ~= 0
v(leng+1 : leng+(5-x)) = 0;
end
sum( reshape( v, 5, [] ) )
Yes, pad with zeros is a good idea.
>> v1 = ones( 1, 17 );
>> v1 = cat( 2, v1, zeros( 1, (5-rem(length(v1),5) ) ) );
>> length( v1 )
ans =
20
One-liners is a Matlab sport. However, this one-liner adds an extra five zeros to v1 when length already is a multiple of five (appropriate smiley).
One more try
v1 = cat( 2, v1, zeros( 1, rem((5-rem(length(v1),5)),5) ) );
There is always another edge-case that will error.

请先登录,再进行评论。

更多回答(0 个)

类别

在 帮助中心 和 File Exchange 中查找有关 MATLAB 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by