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

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일

0 개 추천

Thank you very much for the immediate answers. Both worked.

카테고리

도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by