How to index array with an array?

2 views (last 30 days)
xiaojuezi
xiaojuezi on 8 Dec 2021
Commented: xiaojuezi on 8 Dec 2021
Hi I want to index an element in an array. The array u can be 1D, 2D or 3D, and I have an index id which is 1D, 2D or 3D. I'm currently doing:
u(id) = val;
This works fine in the 1D case. However, for 2D cases, where id = [row,column], this line doesn't set the 2D array correctly. For example:
u = [0 0 0;
0 0 0;
0 0 0];
% Access element at row 2, column 1
id = [2,1]
u(id) = 1; % Not always setting the desired element
Similarly in 3D, id = [widthId, heightId, depthId].
Is there a way to solve this?
Thank you very much!
  1 Comment
James Tursa
James Tursa on 8 Dec 2021
Please give a small numerical example of exactly how your 2D and 3D indexes are stored.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 8 Dec 2021
Edited: Stephen23 on 8 Dec 2021
u = [11,12,13;21,22,23;31,32,33]
u = 3×3
11 12 13 21 22 23 31 32 33
% Access element at row 2, column 1
id = [2,1]
id = 1×2
2 1
ic = num2cell(id);
u(ic{:})
ans = 21

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by