Save the elements of different pages of a matrix in a vector

조회 수: 3 (최근 30일)
I have a matrix Z 6x100x6 and I would like to store all the elements from the 6th and the 100th column them in vector. So I do
B=(6,100,:)
Matlab the generates again a multidimensional matrix 1x1x6. instead of vector 1x6. Whereas
B=(6,:,1)
will return a vector 1x100 with 100 elements of the first row of the first page. What I am I doing wrong? Thank you

채택된 답변

Jan
Jan 2012년 12월 18일
편집: Jan 2012년 12월 18일
A trailing dimension of the length 1 is automatically omitted by Matlab. But otherwise the number of dimensions is kept, and this is the expected behavior.
B = squeeze(Z(6, 100, :));
or
B = reshape(Z(6, 100, :), 1, []);
or explicitely
B = reshape(Z(6, 100, :), 1, size(Z, 3));
Try this:
size(zeros(1,1,10)) % >> 1, 1, 10
size(zeros(1,1,10,1)) % >> 1, 1, 10 also!

추가 답변 (2개)

Wayne King
Wayne King 2012년 12월 18일
Use squeeze()
A = randn(6,100,6);
B = squeeze(A(6,:,1));

Giorgos Papakonstantinou
Giorgos Papakonstantinou 2012년 12월 18일
Thank you very much for the immediate answers. Both worked.

카테고리

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