Borrar filtros
Borrar filtros

How expand a matrix?

1 visualización (últimos 30 días)
Mori
Mori el 22 de En. de 2016
Comentada: Mori el 23 de En. de 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 comentarios
Mori
Mori el 23 de En. de 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 el 23 de En. de 2016
Yea, works perfectly. Thnaks

Iniciar sesión para comentar.

Respuesta aceptada

jgg
jgg el 23 de En. de 2016
Editada: jgg el 23 de En. de 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 comentario
Mori
Mori el 23 de En. de 2016
thanks, it works

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by