Form a Cumulative sum matrix
조회 수: 3 (최근 30일)
이전 댓글 표시
S= 10x1300
R=10x1300
z1= S1+R1 x1300
z2=S1+R1+R1+S2+R2 x1300
z3=S1+R1+R1+S2+R2+R2+S3+R3 x1300
.
.
.
z10=S1+R1+R1+S2+R2+R2+S3+R3+.. +R9+S10+R10+R10 x 1300
Result: Form z, a 10x1300 matrix
S & R is a 10x1300 matrix of random numbers
First row of matrix z= First row of S + first row of R
Second row of matrix z= First row of S + first row of R + first row of R + second row of S + second row of R + second row of R
Each addition adds Previous row of R and the next row of S and R
채택된 답변
Stephen23
2017년 11월 15일
편집: Stephen23
2017년 11월 15일
>> S = randi(9,10,1300);
>> R = randi(9,10,1300);
>> Z = cumsum(S,1)+2*cumsum(R,1)-R;
>> Z(10,:) = Z(10,:)+R(10,:);
This correctly takes into account that each row Z(n,:) only adds row R(n,:) once, except for the tenth row which is a special case because R(10,:) is added twice.
Here is a complete example:
>> R = repmat((1:10).',1,3)
R =
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
10 10 10
>> S = repmat((1:3),10,1)
S =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
>> Z = cumsum(S,1)+2*cumsum(R,1)-R;
>> Z(10,:) = Z(10,:)+R(10,:)
Z =
2 3 4
6 8 10
12 15 18
20 24 28
30 35 40
42 48 54
56 63 70
72 80 88
90 99 108
120 130 140
And checking against the given examples from rows one and three:
>> S(1,:)+R(1,:)
ans =
2 3 4
>> S(1,:)+R(1,:)+R(1,:)+S(2,:)+R(2,:)+R(2,:)+S(3,:)+R(3,:)
ans =
12 15 18
댓글 수: 0
추가 답변 (2개)
Andrei Bobrov
2017년 11월 15일
편집: Andrei Bobrov
2017년 11월 15일
z = cumsum(S + 2*R) - [R(1:end-1,:); zeros(1,size(R,2))];
댓글 수: 2
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!