Manipulate multidimensional matrix in for loop

8 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 3 Mag 2017
a = num2cell(multidim,[1,2]);
matrix = cat(1,a{:});
  2 Commenti
Anna
Anna il 3 Mag 2017
This works! Thank you so much!
Stephen23
Stephen23 il 3 Mag 2017
Modificato: Stephen23 il 3 Mag 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

Accedi per commentare.

Più risposte (1)

Stephen23
Stephen23 il 3 Mag 2017
Modificato: Stephen23 il 3 Mag 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

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by