Access element of ND array specified by another array?

3 visualizzazioni (ultimi 30 giorni)
I have a N1 x N2 x N3 dimension Tensor T. Plus I have a 1 x 3 array a = [a1 a2 a3]. How do I access element T(a1,a2,a3). Is there any way to do this for N dimension.

Risposta accettata

Walter Roberson
Walter Roberson il 7 Giu 2018
Modificato: Walter Roberson il 7 Giu 2018
acell = num2cell(a);
T(acell{:})
There are also ways to calculate the location as a linear index based upon size(T)
Ts = size(T):
La = length(a);
Ts(end+1:La) = 1;
idx = a(1) + sum((a(2:end)-1) .* cumprod(Ts(1:La-1)))
T(idx)
... if I didn't miss something.
  1 Commento
Rohit Gupta
Rohit Gupta il 7 Giu 2018
Thanks! I wanted to avoid doing something you mentioned below. First solution works.

Accedi per commentare.

Più risposte (1)

James Tursa
James Tursa il 7 Giu 2018
doc sub2ind
  1 Commento
Rohit Gupta
Rohit Gupta il 7 Giu 2018
Thanks! But it also needs giving a1,a2,a3 and wont work for any general dimension.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by