fvtool生成的数字中断了亲子关系?

时间:2012-09-26 10:55:44

标签: matlab matlab-figure

要重现我所面临的问题,我将使用fvtool文档中某个示例的略微修改版本:

b1 = firpm(20,[0 0.4 0.5 1],[1 1 0 0]); 
fvtool(b1, 1, 'Analysis', 'freq');

上面的代码应该生成下图:

Figure generated by fvtool

我试图独立操纵您在该图中可以看到的两条线的属性(相位和幅度线)。我可以轻松修改幅度线的属性:

h = findobj(gcf, 'Tag', 'magnitude_line');
set(h, 'Color', 'Red');

但是,我不能对相位线做同样的事情。以下任何命令都只返回空数组:

h = findobj(gcf, 'Tag', 'phasez_line')
h = findobj('Tag', 'phasez_line')
h = findobj(0, 'Tag', 'phasez_line')

1 个答案:

答案 0 :(得分:2)

我刚刚找到了问题的答案,这实际上是相当明显的。似乎fvtoolHandleVisibility轴(它是相位线的父级)的fvtool_axes_2属性设置为callback,因此,此类对象不是使用findobj时找到。使用findall解决了问题,即:

h = findall(0, 'Tag', 'phasez_line');

同样,你可以使用allchild来找到这样的隐藏句柄,即:

parentAxes = findall(0, 'Tag', 'fvtool_axes_2');
% This returns empty
intersect(parentAxes, get(get(parentAxes, 'Parent'), 'Children'))
% But this returns a handle to the fvtool_axes_2 axes
intersect(parentAxes, allchild(get(parentAxes, 'Parent')))