Concatenate multi dimensional matrix

조회 수: 4 (최근 30일)
David Ponce
David Ponce 2018년 10월 12일
답변: Matt J 2018년 10월 12일
I have a matrix which has these 3rd dimensions or pages. A(:,:,1), A(:,:,2), A(:,:,3)
Now, I wanted these three to be vertically concatenated. But i'm looking for an algorithm like in a for sentence for do it in large scale.
I know this: b = cat(1,a(:,:,i)) but i don't have the entire matrix in b because its override. Thank you.

채택된 답변

Guillaume
Guillaume 2018년 10월 12일
편집: Guillaume 2018년 10월 12일
Your b = cat(1, a(:, :, i)) is incorrect and is just equivalent to b = a(:, :, i). If you were to use a loop you could do it like this:
b = [];
for i = 1:size(a, 3)
b = [b; a(:, :, 1)]; %which is cat(1, b, a(:, :, i))
end
This would be extremely innefficient and matlab's editor will warn you that you're resizing b on every iteration. The proper way to do it in matlab is:
b = reshape(permute(a, [1 3 2]), [], size(a, 2))
without a loop.

추가 답변 (1개)

Matt J
Matt J 2018년 10월 12일
Another way,
Acell=num2cell(A,[1,2]);
B=vertcat(Acell{:});

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by