Manipulate multidimensional matrix in for loop

1 次查看(过去 30 天)
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?

采纳的回答

Andrei Bobrov
Andrei Bobrov 2017-5-3
a = num2cell(multidim,[1,2]);
matrix = cat(1,a{:});
  2 个评论
Stephen23
Stephen23 2017-5-3
编辑:Stephen23 2017-5-3
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

请先登录,再进行评论。

更多回答(1 个)

Stephen23
Stephen23 2017-5-3
编辑:Stephen23 2017-5-3
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

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by