Indexing high dimension elements from a N-D matrix

3 visualizaciones (últimos 30 días)
Junhong YE
Junhong YE el 28 de Mayo de 2014
Comentada: Matt J el 28 de Mayo de 2014
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 comentario
Matt J
Matt J el 28 de Mayo de 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?

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 28 de Mayo de 2014
B(1:10)=A(1,1,:)

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by