Хорошо, принятый ответ довольно близок к тому, чтобы быть быстрым, но недостаточно быстрым.Вы должны использовать:
s=size(array,1);
step=0.0001;
array(:,1)=[step:step:s*step];
Есть две проблемы с принятым ответом
- , вам не нужно транспонировать
- , вы должны включить шаг внутривектор, вместо умножения
и вот сравнение (извините, я запускаю 32-битный Matlab)
array=rand(10000);
s=size(array,1);
step=0.0001;
tic
for i=1:100000
array(:,1)=[step:step:s*step];
end
toc
и
tic
for i=1:100000
array(:, 1)=[1:s]'*step;
end
toc
результатыявляются:
Истекшее время составляет 3,469108 секунд.
Истекшее время составляет 5,304436 секунд.
и без транспонирования во втором примере
Истекшее время составляет 3,524345 секунд..
Полагаю, в вашем случае все будет хуже.