2

私が直面している問題を再現するために、次のドキュメントの例の1つを少し変更したバージョンを使用しますfvtool

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

上記のコードは、次の図を生成するはずです。

fvtoolによって生成された図

その図に示されている2本の線(位相線と振幅線)のプロパティを個別に操作しようとしています。マグニチュードラインのプロパティを簡単に変更できます。

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')
4

1 に答える 1

2

私は自分の問題に対する答えを見つけましたが、それは実際にはかなり明白でした。軸(位相線の親)のプロパティをにfvtool設定しているようで、その結果、を使用するとそのようなオブジェクトが見つかりません。問題の使用は解決されます、すなわち:HandleVisibilityfvtool_axes_2callbackfindobjfindall

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')))
于 2012-09-26T11:41:41.177 に答える