Access element of ND array specified by another array?

2 views (last 30 days)
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.

Accepted Answer

Walter Roberson
Walter Roberson on 7 Jun 2018
Edited: Walter Roberson on 7 Jun 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 Comment
Rohit Gupta
Rohit Gupta on 7 Jun 2018
Thanks! I wanted to avoid doing something you mentioned below. First solution works.

Sign in to comment.

More Answers (1)

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

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!