Extract 2D matrix from 3D matrix with different lengths.

조회 수: 3 (최근 30일)
Megha
Megha 2018년 10월 25일
댓글: Megha 2018년 10월 25일
I have 17x8x94059 class-double matrix. i.e 3D matrix., say "B"
Now I would like to extract 17x94059 elements and make it a 2D matix having a new variable name, say "A".
The command like
A = squeeze(B(:,1,:));
did not work.
Moreover I want to extract all 8-values from 17x8x94059 matrix in a similar way.
such that I can make a loop something like,
for i = 1:8
A = squeeze(B(:,i,:))
end
Any suggestions?

채택된 답변

Stephen23
Stephen23 2018년 10월 25일
편집: Stephen23 2018년 10월 25일
For just one matrix use either
A = reshape(B(:,1,:),17,[]);
or
A = permute(B(:,1,:),[1,3,2]);
For all of the matrices, it is not required to use a loop:
C = num2cell(permute(B,[1,3,2]),1:2)
Using permute and num2cell is about 30% faster than using a loop (the test file is attached):
Elapsed time is 1.09111 seconds. % loop
Elapsed time is 0.718072 seconds. % num2cell

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Startup and Shutdown에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by