How expand a matrix?

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 Commenti

jgg
jgg il 22 Gen 2016
Aren't there a very large number of ways to do this? Is there some specific form you want?
Star Strider
Star Strider il 23 Gen 2016
It seems that it’s constrained to use only {1, 2, 3}. That may be what ‘step of 3 refers to.
Mori
Mori il 23 Gen 2016
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 il 23 Gen 2016
Yea, works perfectly. Thnaks

Accedi per commentare.

 Risposta accettata

jgg
jgg il 23 Gen 2016
Modificato: jgg il 23 Gen 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;

Più risposte (0)

Categorie

Scopri di più su Interpolation in Centro assistenza e File Exchange

Richiesto:

il 22 Gen 2016

Commentato:

il 23 Gen 2016

Community Treasure Hunt

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

Start Hunting!

Translated by