get(0,'screensize')给出结果[0 0 1 1]而不是实际像素

时间:2013-11-28 13:25:07

标签: matlab properties matlab-figure

在MATLAB会话期间,get(0,'screensize')首先给出正确的分辨率。稍后,答案将变为[0 0 1 1]。这种行为只会在我重新启动matlab时停止,然后再次返回正确的值。

当我运行程序的特定部分时,总会发生此错误。它似乎发生在这一特定代码行之后:

 set(0,'PointerLocation',[.4*GUI.scrsz(3),.5*GUI.scrsz(4)],'units','normalized');

即使我设法隔离错误,我也无法弄清楚这种行为的原因。我在Windows 7 64bit上使用MATLAB R2010b。

请注意,我不是MATLAB的高级用户,所以如果我忽视了一些明显的事情,请原谅我。请提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

原因是您将'units'设置为'normalized'。你的屏幕自然地在一个角落里开始 - > [0 0 ...并填充整个屏幕 - > ... 1 1](第一对定义位置,第二对定义高度和宽度) 所以这些值是正确的,只是不再显示像素。

在完成之前的任务之后,只需将其设置回set(0,'units','pixels'),这需要规范化的单位。或者将你的屏幕大小存储在一个变量的脚本开头,以便以后使用它。

使用get(0,...)获取默认属性并使用set(0,...)更改它们,这就是为什么它在重新启动后再次正常,因为Matlab会在每次启动时将所有值设置为默认值,这在您的情况下'units','pixels'