3

私は常に、MATLAB では、XプロパティHandleVisibilityが 以外に設定されているグラフィック ハンドルは、 を使用する場合、またはの親であるon場合には表示されないと考えていました。ただし、これは Windows でのみ当てはまり、Linux では当てはまらないようです。Debian 6.0.6 (squeeze) と Windows 7 の両方で MATLAB R2011b を使用しています。Windows で次のコードを実行すると:findobj(h)get(h, 'Children')hX

figure;plot(randn(1,1000));
h = get(gcf, 'Children'); 

h次に、ランダム プロットを含む軸に対応する単一のハンドルを に取得します。これは私が期待するものです。ただし、Linux でまったく同じコードを実行するとh、10 個のハンドルの配列が含まれます。実際、これらのハンドルのほとんどは単なる UI 要素であり、そのHandleVisibilityプロパティは に設定されていoffます。例えば:

get(h(end), 'Type')   % returns: 'uitoolbar'
get(h(end), 'HandleVisibility') % returns 'off'

この明らかに一貫性のない動作には理由がありますか? これは他の人が再現できますか?関連する可能性がある場合、私が使用している Debian サーバーは Sun JAVA 1.6.0_26 を実行しますが、これは Debian (openJDK) のデフォルトではありません。

4

1 に答える 1

1

Sun JAVA を使用して、r2011a または r2012b で再現できませんでした。

回避策の 1 つは、可視性に基づいてフィルター処理することです。

visibleChildren = findobj(get(h,'children'),'HandleVisibility','on')

インストールに固有のもののように聞こえます。

于 2013-01-09T23:53:46.203 に答える