Чтобы понять, как это сделать, лучше всего понять, как matlab хранит свои массивы. В матрице:
i = [1,2,3];
j = [1,3,4];
A = [1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16]
Matlab хранит элементы, идущие вниз по столбцам. Таким образом, они на самом деле находятся в памяти в следующем порядке:
{1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16}
Вы можете индексировать двумерный массив, используя индекс SINGLE. Вот почему трюк sub2ind работает. Поскольку элементы, которые вы хотите получить, это 1-й, 10-й и 15-й элементы, которые хранятся в столбцовом порядке,
singleIndex = [1 10 15];
A(singleIndex)
ans =
1 7 12
Чтобы подтвердить, что sub2ind дал этот индексный список, попробуйте ...
ind = sub2ind([4 4],i,j)
ind =
1 10 15