2016-11-02 2 views
0

Я написал простую функцию построения октавы, код ниже, но, к сожалению, для построения графика требуется некоторое время. Есть ли способ ускорить это?Ускорьте зацикленную функцию построения октавы

function hilo_conditional_plot(high , low , condition) 
%HILO_CONDITIONAL_PLOT 
% Takes high, low and condition input vectors and plots a line chart of highs 
% and lows coloured according to the condtion. For this basic version there 
% are only 3 conditons; 1 for long, -1 for short and 0 for neutral; with the 
% respective plot colours being blue, red and green. 

date = (1 : length(high))' ; 
hold on ; 

for ii = 1 : length(high) 

    if condition(ii) == 1 
    line([ date(ii) date(ii) ] , [ low(ii) high(ii) ] , 'Color' , 'b' , 'linewidth' , 2) ; 
    elseif condition(ii) == -1 
    line([ date(ii) date(ii) ] , [ low(ii) high(ii) ] , 'Color' , 'r' , 'linewidth' , 2) ; 
    elseif condition == 0 
    line([ date(ii) date(ii) ] , [ low(ii) high(ii) ] , 'Color' , 'g' , 'linewidth' , 2) ; 
    else 
    printf('Error in condition vector - a value != 1,-1 or 0') ; 
    end 

end 

grid minor on ; 

hold off ; 

Редактировать: высокие и низкие столбцы будут содержать числовые значения для финансовых данных и столбец условия будет содержать 1, -1 или 0 значение, E, G.

1.2 1.1 0 
1.3 1.1 1 
1.4 0.9 -1 
+0

Крест отправил на http://octave.1599824.n4.nabble.com/Speeding-up-a-plotting-function -td4680459.html – babelproofreader

+1

Можете ли вы предоставить небольшой образец 'high',' low' и 'condition'? Это необязательно, но лучше понять проблему :) – RCaetano

ответ

1

только петля над условиями:

close all 

num = 40; 
date = linspace (0, 4 * pi, num); 
condition = randi (3, 1, num) - 2; 
low = sin (date) - 0.3 * rand (1, num); 
high = sin (date) + 0.5 * rand (1, num); 

for k = 1:3 
    idx = condition == k - 2; 
    c = {"r","g","b"}{k}; 
    line ([date(idx);date(idx)], [low(idx);high(idx)], "color", c, "linewidth", 2) 
endfor 

grid 

enter image description here

+0

возможно, это также интересно для вас, если вы работаете с датой/временем: http://wiki.octave.org/Date/Time_functions – Andy

+0

забыть комментарий о временной функции , это было предназначено для другого потока ... – Andy

Смежные вопросы