Clear Filters
Clear Filters

Access element of ND array specified by another array?

1 view (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.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!