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

Pau*_*sen 1 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');
Run Code Online (Sandbox Code Playgroud)

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

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

the*_*alk 5

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

只需set(0,'units','pixels')在完成任务之后将其重新设置为需要规范化单元.或者将屏幕大小存储在脚本开头的变量中,以便稍后使用.

随着get(0,...)你获得默认属性并且set(0,...)你改变它们,这就是为什么它在重新启动后再次正常,因为Matlab在每次启动时都将所有值设置为默认值,这在你的情况下'units','pixels'.