How expand a matrix?

조회 수: 3 (최근 30일)
Mori
Mori 2016년 1월 22일
댓글: Mori 2016년 1월 23일
How we can expand matrix A to B? each element of matrix A is equal to sum of each B columns. (step of 3)
A=
[1 5 8 12 7 5 2 1]
to B=
1 3 3 3 3 3 2 1
0 2 3 3 3 2 0 0
0 0 2 3 1 0 0 0
0 0 0 3 0 0 0 0
0 0 0 0 0 0 0 0
  댓글 수: 4
Mori
Mori 2016년 1월 23일
I will use this code for a large Matrix with large numbers. 3 is the gris size, in real data will be 300. I will post the results. Thanks
Mori
Mori 2016년 1월 23일
Yea, works perfectly. Thnaks

댓글을 달려면 로그인하십시오.

채택된 답변

jgg
jgg 2016년 1월 23일
편집: jgg 2016년 1월 23일
This should work
A = [1 5 8 12 7 5 2 1];
floors = floor(A./3);
C = cumsum(3.*ones(max(floors)+1,length(A)),1)
A_p = repmat(A,max(floors)+1,1);
res = 3.*(C <= A_p);
remainder = A - sum(res);
r = cellfun(@(row) find(row == 0, 1, 'first'), num2cell(res,1));
ind = sub2ind(size(res),r,[1:length(A)]);
res(ind) = remainder;
  댓글 수: 1
Mori
Mori 2016년 1월 23일
thanks, it works

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by