How expand a matrix?
    3 views (last 30 days)
  
       Show older comments
    
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 Comments
Accepted Answer
  jgg
      
 on 23 Jan 2016
        
      Edited: jgg
      
 on 23 Jan 2016
  
      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;
More Answers (0)
See Also
Categories
				Find more on Interpolation 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!