Indexing high dimension elements from a N-D matrix

3 views (last 30 days)
Hi, all,
I met a problem when I was trying to index the third dimension elements of a 3-dim matrix, i.e.
A=rand(10,10,10);
B=A(1,1,:);
, I found B was not a vector as I expected, but rather, a 1-by-1-by-10 array. But A(:,1,1) and A(1,:,1) return a column and row vector respectively.
I wonder why MATLAB is designed in this way and how to obtain what I want ?
I know a workaround is use squeeze(A(1,1,:)), which ignores the singleton dimensions. Is there any other more direct way?
Thanks.
  1 Comment
Matt J
Matt J on 28 May 2014
I wonder why MATLAB is designed in this way
As you already pointed out, A(:,1,1) and A(1,:,1) are not the same shape and have singleton dimensions where you provided singleton subscripts. If that makes sense to you, why should A(1,1,:) obey a different rule?

Sign in to comment.

Accepted Answer

Matt J
Matt J on 28 May 2014
B(1:10)=A(1,1,:)

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!