Время обработки для построения и численного расчета в Matlab
У меня есть функция, которая в общей сложности занимает 34 с, и я хочу ускорить это. 2 самые медленные функции:
1) У меня очень простой файл функций:
function [x] = percentChange(startPoint, currentPoint)
x = ( (currentPoint-startPoint)/abs(startPoint) )*100.00;
где currentPoint и startPoint - просто целые числа. Во время моей основной функции я вызываю эту функцию 1.114.239 раз (что занимает у моего компьютера 13.364 с). Могу ли я сделать это быстрее?
2) Другая часть моей функции, которая занимает много времени, - это построение линий 1934 года. В настоящее время построение графика происходит следующим образом:
for i=1:size(patternPlot,1)
hold all
plot(xplot,patternPlot(i,:));
end
'patternPlot' хранит векторы, которые я хочу построить (xplot - это просто вектор 1:30). Могу ли я ускорить это каким-либо образом?
Заранее спасибо,
J
1 ответ
В 1): убрать внешние скобки во второй строке. Вероятно, не будет набирать скорость; просто для наглядности.
Вы действительно должны вызывать эту функцию столько раз, каждый с номером? Ты не можешь сделать (currentPoint-startPoint)./abs(startPoint)*100.00
где currentPoint
а также startPoint
есть векторы?
Во 2): вместо цикла сделайте один "векторизованный сюжет": plot(xplot,patternPlot)
, или лучше plot(patternPlot.')
, Это построит все за один шаг.