Не ответ. Но так как мне было интересно, я запускаю собственные тесты.
M = magic(5)
x=[1:5];
y=[1 4 3 5 2];
%%
tic
for i=1:10000
out = M(sub2ind([5,5],x,y));
end
toc % Elapsed time is 0.413526 seconds.
out
%%
tic
for i=1:10000
out = M(x+(y-1)*5);
end
toc % Elapsed time is 0.024004 seconds.
out
%%
fun = @(x,y)(M(x,y));
tic
for i=1:10000
out = arrayfun(fun,x,y);
end
toc % Elapsed time is 0.449727 seconds.
out
%%
fun = @(x,y)(M(x,y));
tic
for i=1:10000
out = nan(1,5);
for j=1:5
out(j) = M(x(j),y(j));
end
end
toc % Elapsed time is 0.045242 seconds.
out
(извините, в первой программе была глупая ошибка копирования-вставки)
Я не ожидал, что цикл for выйдет вторым.
Я нахожусь на 2011b - так что, похоже, он значительно улучшился.