Borrar filtros
Borrar filtros

Manipulate multidimensional matrix in for loop

1 visualización (últimos 30 días)
Anna
Anna el 3 de Mayo de 2017
Comentada: Andrei Bobrov el 3 de Mayo de 2017
Hi, I have a matrix called multidim with 2x100x3 values. I would like to make this a 6x100 matrix by adding the matrix defined in each page under the previous one.
for i = 1:2
matrix = [multidim(:,:,i);multidim(:,:,i+1)];
end
This is what I have tried, but this only works if I have a 2x100x2 matrix. How do I make this a loop which remembers the previous created matrix and uses this in order to keep adding rows from the next page?

Respuesta aceptada

Andrei Bobrov
Andrei Bobrov el 3 de Mayo de 2017
a = num2cell(multidim,[1,2]);
matrix = cat(1,a{:});
  2 comentarios
Anna
Anna el 3 de Mayo de 2017
This works! Thank you so much!
Stephen23
Stephen23 el 3 de Mayo de 2017
Editada: Stephen23 el 3 de Mayo de 2017
Note my answer is just one line, does not waste memory with unnecessary variables in the workspace, and runs around twice as fast as this answer:
Elapsed time is 6.32136 seconds. % this answer
Elapsed time is 3.98123 seconds. % my answer

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 3 de Mayo de 2017
Editada: Stephen23 el 3 de Mayo de 2017
Use permute and reshape:
>> X(:,:,1) = [0,1,2;3,4,5];
>> X(:,:,2) = [6,7,8;9,10,11];
>> reshape(permute(X,[1,3,2]),[],3)
ans =
0 1 2
3 4 5
6 7 8
9 10 11

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by