3

我一直认为,在 MATLAB 中,一个图形句柄X,其属性HandleVisibility设置为任何其他值,而不是on在使用findobj(h)或作为. 然而,这似乎只在 Windows 下才成立,而在 Linux 下则不然。我在 Debian 6.0.6(挤压)和 Windows 7 上都使用 MATLAB R2011b。如果我在 Windows 下运行以下代码: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 上进行复制。

一种解决方法可能是根据可见性进行过滤:

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

听起来像是特定于您的安装的东西。

于 2013-01-09T23:53:46.203 回答