Matlab中的循环累加

我想实现这样的功能,把一列数每隔k个求和,比如R=7相当于把每星期的总数加起来。
我也知道应该用余数设置循环条件,无奈逻辑搞不好,总无限循环,哪位能够指点一下?代码如下:

R=7; %指定累加周期
n = length(data);
for k=1:fix(n/R)

sum=0;
for i=1:n
while rem(i,k)>0
sum=sum+data(i);
end
end
end
sum

function newData=sumR(Data,R)
r=rem(size(Data,1),R);%看行数是否为R的整数倍,rem为取余命令
if r~=0
    Data=[Data;zeros(R-r,size(Data,2))];%如果余数不为0,则给原矩阵补R-r行0元素。
end
[m n]=size(Data);%此时行数m为R的整数倍
newData=zeros(m/R,n);%创建一个新矩阵存放每R个元素的和
for i=1:n
    for j=1:m/R
   newData(j,i)=sum(Data(R*(j-1)+1:R*j,i));%求第i列每R个元素的和。
    end
end
end


我大概编了下。应该就是这样的,我就懒得测试了。。。成功了的话你改改求行元素的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-25
显然是无限循环!

几条命令语句即可搞定:

sum(data(1:7:end)) %周一的和
sum(data(2:7:end)) %周二的和
..................................

sum(data(7:7:end)) %周日的和本回答被网友采纳