Manipulate multidimensional matrix in for loop

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일

0 개 추천

a = num2cell(multidim,[1,2]);
matrix = cat(1,a{:});

댓글 수: 2

Anna
Anna 2017년 5월 3일
This works! Thank you so much!
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일

1 개 추천

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

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2017년 5월 3일

댓글:

2017년 5월 3일

Community Treasure Hunt

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

Start Hunting!

Translated by