В общем случае векторизация Matlab работает с массивами / матрицами фиксированного размера. Если вы хотите ускорить этот код другими способами, самое большое, что вы можете сделать, это повторно использовать ваши предыдущие результаты в каждой итерации цикла и избавляться от посторонних переменных.
y0 = f(x0);
while (delta_F > e) && (i < maxLoop)
x1 = x0+d;
y1 = f(x1);
if (y1 < y0) %# new starting point, so swap points
x0 = x1;
y0 = y1;
d = a*d;
else %# same starting point, refine step and see if we're done
d = -b*d;
delta_F = abs(x1-x0)/2;
end
i = i+1;
end
Это удаляет половину вызовов на f
и динамическое изменение размера vF
, что ужасно медленно, особенно когда vF
становится большим.