2015-09-23 3 views
1

Я хотел бы настроить цвет моего сюжета rootlocus. Я использую цикл for для построения 10 корневиков (с немного разными системами в цикле), и я хотел бы, чтобы каждый из них был другого оттенка серого. Я решил использовать команду grey для получения матрицы для хранения RGB-данных, а затем использовать эту матрицу в команде rlocus (sys, K, 'style') (выбор i-й строки на i-й итерации моего цикла). К сожалению, команда требует, чтобы стиль был ячейкой (например, «g» или «b»), а не вектором чисел.Настройка нескольких цветов сюжета rootlocus (шкала серого цвета) Matlab

Это пример моего кода:

figure() 
hold on 
L = [sys1, sys2, ..., sys10]; 
colors = gray(10); 
for i = 0:9 
rlocus (L(i+1), 'Color', colors(i+1, :)); 
end 
+1

У меня есть идея, но это поможет, если вы разместите код, который у вас уже есть. Вы должны взглянуть на [ask] и [mcve], а затем вернуться сюда и изменить свой вопрос, чтобы нам было легче ответить. – IKavanagh

+1

Я редактировал вопрос. Спасибо! –

ответ

1

rlocus() функция не столь мощный, как функции plot() и имеет только ограниченную поддержку для настройки цветов с rlocus(sys, 'b'), как вы заметили. Однако мы можем объединить его с функцией plot(), чтобы использовать ее мощность.

Здесь я использую [R, K] = rlocus(sys) для возврата значений корневого локуса, R. Каждая строка R представляет собой другую траекторию. Мы можем построить 1 траекторию корневого локуса с plot(R(m, :)) и использовать силу plot(), чтобы изменить цвет, однако мы желаем.

L = [sys1, sys2, sys3, sys4, sys5, sys6, sys7, sys8, sys9, sys10]; 
C = gray(numel(L) + 1); % Extra 1 because the last value will be 
         % white and plotting white on white does 
         % not look well :P 

figure; 
hold on 
for n = 1:numel(L) 
    [R, K] = rlocus(L(n)); 

    for m = 1:numel(R)/length(R) 
     plot(R(m, :), 'Color', C(n, :)); 
    end 
end 
hold off