我正在用pzmap.m或pzplot.m绘制系统的闭环极点。当我改变由L描述的变量时,我想看到极点和零点的移动。
该函数没有颜色的直接句柄。在本例中,您可以选择标准颜色,但不能给出自己的颜色。因为我必须在同一个图形上多次绘制,所以我为for循环中的每个迭代创建一个句柄,并使用findobj来设置曲线的颜色。为了得到颜色,我想要一个彩色条。所以我用jet来得到我的图形的颜色分布。但市场规模保持不变,我有一个丑陋的形象。
MWE:
cb=jet(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);
h = findobj(gcf,'type','point'); set(h,'markers',12,'color',cb(i,:));
clear L G CL h
end
grid;
c=colorbar
c.Label.String = 'L'如果你运行它,你会看到大小没有变化,图形看起来疯狂,y轴在两边都贴上了蜱的标签。我想要一个适当的颜色条从蓝色到红色和颜色分布适当,但不能得到它经过多次尝试。如果我能减少杂乱,那也会有帮助的。
发布于 2016-10-12 15:43:16
这是代码中的几个问题。
h = findobj(gcf,'type','point');在屏幕上画的东西实际上是'line'类型的!此外,h = findobj(gcf,'type','line');将不会返回单个东西,而是返回一组内容,因此需要对其进行索引以设置属性。我修改过的代码如下所示:
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
% lets do this in the end!
% you will have length(L_array)*2 +1 items in h
h = findobj(gca,'type','line');
for jj=2:length(h)
set(h(jj),'MarkerSize',12,'Color',cb(floor(jj/2),:));
end
grid;
colormap(parula); % I am using parula, you can use jet, but I discourage it
c=colorbar;

PD:不使用jet有很多原因!请使用感觉上统一的鞋垫!
https://stackoverflow.com/questions/40001798
复制相似问题