проблема с pzplots — Yticks и цветовой панелью

#matlab #plot

#matlab #график

Вопрос:

Я использую pzmap для построения системных полюсов и нулей для разных значений L. Но на графике справа есть дополнительные метки YTick, которые я не вижу в свойствах осей. Кроме того, у меня нет дескриптора, соответствующего линиям сетки с постоянным демпфированием, цвет и свойства которых я хотел бы изменить.

MWE

 clear;clc
cb=parula(10);
s=tf('s');
L_array=5:5:50;

figure; hold on;
for i=1:length(L_array)
    L=L_array(i);
    G=((58.2 11.7*L)*s^2*25^2 (3996.8   815.7*L)*s*25 815.7*25^2)/(s^2*(s^2*25^2 126.9*s*25 (3996.8 1.9*25^2)));
    CL=feedback(G,1);
    pzmap(CL);
end
h = findobj(gca,'type','line'); 
for jj=2:length(h)
    set(h(jj),'MarkerSize',12,'Color',cb(floor(jj/2),:));
end
grid;

colormap(parula);
c=colorbar;
  

Также цветовая панель инвертирована, т.е. Синий соответствует большему L и наоборот. Я бы хотел, чтобы он был перевернут! Заранее спасибо!

Комментарии:

1. Кстати, цветовая карта не инвертируется. Добавьте pause (0.2);drawnow; после pzmap в цикле, и вы увидите, что первые нарисованные точки — это те, которые позже будут синими.

2. Да, вы правы, но когда цветовая панель устанавливается в конце, цвета меняются местами…

3. Я разработал обратный порядок, просто используя flipud () в jet для операции назначения… но все еще не могу найти дескриптор для YTick. Также я не могу найти дескриптор для линий постоянного демпфирования

4. измените cb(floor(jj/2),:) значение для cb(end-floor(jj/2) 1,:) в коде, чтобы изменить цвета

5. Дополнительные галочки вставляются «сеткой». Все еще не знаю, как их удалить

Ответ №1:

Я не смог найти какой-либо дескриптор для нужных объектов на графике. Тем не менее, у меня есть некоторые дополнительные идеи. Сетка, соответствующая pzmap, по сути, имеет sgrid. Дескрипторы этой сетки не отображаются в свойствах gca. Так что вы ничего не можете с этим поделать. Даже pzoptions не позволяет изменять эти настройки. Кроме того, дополнительные Y-метки соответствуют строкам с постоянными собственными частотами.

В качестве альтернативы, лучше использовать команду sgrid напрямую. Чтобы выбрать линии постоянного затухания,

 z = [0, 0.25, 0.5, 0.75, 1];
  

Чтобы удалить дополнительные Y-метки,

 wn = [];
  

Теперь используйте sgrid и команду grid, чтобы получить все, что вы хотите.

 sgrid(z,wn);
grid;
  

Я все еще не могу изменить какие-либо свойства линий сетки, связанных с sgrid, но это все равно улучшает внешний вид графика. Вопрос все еще открыт для расследования.