【发布时间】:2017-02-21 10:39:38
【问题描述】:
我正在使用您喜欢的 pzmap.m 或 pzplot.m 绘制系统的闭环极点。当我更改 L 所描绘的变量时,我想查看极点和零点的移动。
该函数没有颜色的直接句柄。在示例中,您可以只选择标准颜色,但不能提供您自己的颜色。由于我必须在同一个图形上多次绘制,我在 for 循环中为每次迭代创建一个句柄,并使用 findobj 来设置曲线的颜色。为了获得我想要的颜色,我需要一个 colorbar。所以我使用 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 轴都标有刻度。我想要一个合适的 colorbar 从蓝色到红色,颜色分布正确,但多次尝试后无法获得。如果我能减少混乱,那也很有帮助。
【问题讨论】:
-
我已经运行了你的代码:如果我没有理解错,你只是想给“时间”上色,所以每次你绘制的东西都会有一些不同的颜色。我在我的电脑(Matlab 2014b)中看到的是
h=findobj(...行实际上没有效果,那是你的问题。h为空。 -
是的,我想通了……但我一生都无法理解要使用什么属性名称。使用 'type' 'point' 返回空值。如果我使用 h=findobj(gcf,'marker', 'o') 或 h=findobj('marker','x') 那么我除了设置命令 set(h,'MarkerSize',12,'MarkerEdgeColor ',=cb(i,:)) 使所有内容都具有相同的颜色...我知道这是处理问题,但无法弄清楚
-
我正在写回复,我明白了。
-
荣誉 :) 感谢您的努力...干杯
-
检查我的答案,如果有帮助,请考虑接受它;)