2013-02-22 11 views
2

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

Что-то вроде:

hold on 

for n = N 

for t = Time_inv 

    error = func(n, t); 
    error_array_2(i) = error; 
    i = i + 1; 

end 
    plot (Time_inv, error_array_2); 
    i = 1; 
end 

Я новичок в Matlab, но опыт работы с другими языками

ответ

1

Для нескольких строк на одном участке, использование hold all и, возможно, legend.

figure 
hold all 
plot(rand(1,10)) 
plot(rand(1,10)) 
plot(rand(1,10)) 
legend('label 1', 'label 2', 'label 3') 

Для нескольких участков в одном рисунке, используйте subplot.

figure 
subplot(1,2,1) 
plot(rand(1,10)) 
subplot(1,2,2) 
plot(rand(1,10)) 

Для участков в разных фигурах используйте figure.

figure 
plot(rand(1,10)) 
figure 
plot(rand(1,10)) 
+0

Это требование, чтобы все участки на 1 окно, так как графики должны быть сравнены – user929404

+0

@ user929404 Посмотреть мое обновление. – shoelzer

0

Чтобы иметь различные цвета и этикетки для каждого графика вы можете создать карту цвета и массив ячеек меток:

h = zeros(1, length(N)) 
name = cell(1, length(N)) 

cm = hsv(length(N)); 
for n = N 
    name{n} = ['condition ' num2str(n)]; 
    i = 1 
    for t = Time_inv 
     error = func(n, t); 
     error_array_2(i) = error; 
     i = i + 1; 
    end 
    h(n) = plot (Time_inv, error_array_2, 'color', cm(n,:)); 
    hold on  
end 

legend(h, name); 

Поскольку вы указываете, что вы новичок в MatLab, я буду просто упомянуть, что вы, возможно, не нуждаетесь в итераторе i, поскольку функции обычно работают над матрицами. Поэтому ваш сценарий может быть сокращен (выдержка):

for n = N 
    ... 
    error_array_2 = func(n, Time_inv); 
    ... 
end 
Смежные вопросы