首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于多个图形的pzmap或pzmap颜色句柄

用于多个图形的pzmap或pzmap颜色句柄
EN

Stack Overflow用户
提问于 2016-10-12 14:53:45
回答 1查看 2.4K关注 0票数 1

我正在用pzmap.mpzplot.m绘制系统的闭环极点。当我改变由L描述的变量时,我想看到极点和零点的移动。

该函数没有颜色的直接句柄。在本例中,您可以选择标准颜色,但不能给出自己的颜色。因为我必须在同一个图形上多次绘制,所以我为for循环中的每个迭代创建一个句柄,并使用findobj来设置曲线的颜色。为了得到颜色,我想要一个彩色条。所以我用jet来得到我的图形的颜色分布。但市场规模保持不变,我有一个丑陋的形象。

MWE:

代码语言:javascript
复制
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轴在两边都贴上了蜱的标签。我想要一个适当的颜色条从蓝色到红色和颜色分布适当,但不能得到它经过多次尝试。如果我能减少杂乱,那也会有帮助的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 15:43:16

这是代码中的几个问题。

  • h = findobj(gcf,'type','point');在屏幕上画的东西实际上是'line'类型的!
  • 每次迭代时,您都要捕获所有的点,在删除属性之后对它们进行修改。

此外,h = findobj(gcf,'type','line');将不会返回单个东西,而是返回一组内容,因此需要对其进行索引以设置属性。我修改过的代码如下所示:

代码语言:javascript
复制
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有很多原因!请使用感觉上统一的鞋垫!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40001798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档