在系统ID工具箱中更改用compare()创建的图的颜色

时间:2019-10-21 12:10:32

标签: matlab

标题说了我想要的。

compare(zv, mtf)函数将生成一个包含两行的图形,一条灰色的线代表zv变量携带的实际系统数据,另一条蓝色的线代表模型对同一信号的响应。如何更改蓝线的颜色?

Compare的文档给出了将'r'用作红色的示例,但我想传递特定的RGB颜色。语法compare(zv, mtf,'color', [219/256 134/256 7/256])给出以下错误:

  

字符串“ color”不是有效的打印样式。

我正在运行R2015b(32位)。不幸的是,我仍然无法在几个星期内升级到最新版本。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,但是它不是很直观,并且图例颜色不会随着更新线颜色而更新...

更好的方法可能是通过调用获得系统的响应和拟合优度

[y_sys,fit,~] = compare(z1, sys);

并自己绘制这些结果(请参见docs)。

% load sample data and system
load iddata1 z1;
sys = tfest(z1,3);

% give the tf system a name
tf_name = 'system';
sys.Name = tf_name;

% compare in figure
fig = figure(1); clf;
compare(z1,sys)

% get handle for line of system
children = get(gca, 'Children');
grp = findobj(children, '-regexp', 'DisplayName', tf_name); % use system.Name here!
l = grp.Children; % handle to line object

% get old color
color_old = l.Color; % same as output of 'lines(1)' when using default colors

% find all lines with color
ls = findobj(fig, 'Color', color_old);
% set new color
set(ls, 'Color', [219/256 134/256 7/256])

enter image description here