Время обработки для построения и численного расчета в 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.'), Это построит все за один шаг.

Другие вопросы по тегам