Indexing high dimension elements from a N-D matrix

3 visualizzazioni (ultimi 30 giorni)
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 Commento
Matt J
Matt J il 28 Mag 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?

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 28 Mag 2014
B(1:10)=A(1,1,:)

Più risposte (0)

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by