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 日

0 投票

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 日

0 投票

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