MATLAB Answers

Concatenate multi dimensional matrix

조회 수: 1(최근 30일)
David Ponce
David Ponce 12 Oct 2018
답변: Matt J 12 Oct 2018
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.

  댓글 수: 0

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume
Guillaume 12 Oct 2018
편집: Guillaume 12 Oct 2018
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.

  댓글 수: 0

댓글을 달려면 로그인하십시오.

추가 답변(1개)

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

  댓글 수: 0

댓글을 달려면 로그인하십시오.

태그

Community Treasure Hunt

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

Start Hunting!

Translated by