Effacer les filtres
Effacer les filtres

How expand a matrix?

1 vue (au cours des 30 derniers jours)
Mori
Mori le 22 Jan 2016
Commenté : Mori le 23 Jan 2016
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 commentaires
Mori
Mori le 23 Jan 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 le 23 Jan 2016
Yea, works perfectly. Thnaks

Connectez-vous pour commenter.

Réponse acceptée

jgg
jgg le 23 Jan 2016
Modifié(e) : jgg le 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;
  1 commentaire
Mori
Mori le 23 Jan 2016
thanks, it works

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by