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

2 ビュー (過去 30 日間)
Giorgos Papakonstantinou
Giorgos Papakonstantinou 2012 年 12 月 18 日
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 Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by