在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的高级用户,所以如果我忽视了一些明显的事情,请原谅我。请提前感谢您的帮助。
答案 0 :(得分:5)
原因是您将'units'
设置为'normalized'
。你的屏幕自然地在一个角落里开始 - > [0 0 ...
并填充整个屏幕 - > ... 1 1]
(第一对定义位置,第二对定义高度和宽度)
所以这些值是正确的,只是不再显示像素。
在完成之前的任务之后,只需将其设置回set(0,'units','pixels')
,这需要规范化的单位。或者将你的屏幕大小存储在一个变量的脚本开头,以便以后使用它。
使用get(0,...)
获取默认属性并使用set(0,...)
更改它们,这就是为什么它在重新启动后再次正常,因为Matlab会在每次启动时将所有值设置为默认值,这在您的情况下'units','pixels'
。