我怀疑这与Matlab检测到的最大显示尺寸以及系统的像素密度有关。
在我的Matlab R2013a,Windows 7和1900x1200的屏幕上,我可以得到比你大的身材,但是它仍然会被截断:
%% // MATLAB R2013A - Windows 7, 1900x1200pixels
set(gcf,'units','inches','position',[1 -5 6 15])
get(gcf,'position')
get(gcf,'OuterPosition')
返回:
ans =
1.00 -5.00 6.00 11.81
ans =
0.92 -5.08 6.17 12.71
我的最大垂直身材尺寸减少为11.81英寸。 现在,这是Matlab图形的内部。 包括标题栏和边框的实际大小由属性OuterPosition 。
现在考虑:
>> get(0,'ScreenSize')
ans =
1.00 1.00 1920.00 1200.00
>> get(0,'ScreenPixelsPerInch')
ans =
96.00
如果我们做1200pixel / 96ppi = 12.5。 在这种屏幕密度下,Matlab只能显示价值12.5英寸的图形。 如果将单位设置为“像素”,则这甚至是显而易见的模式:
set(gcf,'units','inches','position',[1 -5 6 15])
set(gcf,'units','Pixels')
get(gcf,'position')
get(gcf,'OuterPosition')
ans =
97.00 -479.00 576.00 1134.00
ans =
89.00 -487.00 592.00 1220.00
该图正好在1220像素处被截断(英寸单位只是一个转换,Matlab基本单位将以像素为单位)。 我怀疑允许的额外20像素是标题栏的额外余量。
现在有了您的数字,我没有图形的outerposition位置,但是即使图形内部位置也确实与您的屏幕尺寸大致匹配(900px * 96ppi = 9.375英寸)。 尝试将单位强制返回Pixels ,获得图形的OuterPosition ,如果您获得920pixels,我不会感到惊讶。
现在看来,您只需要为旧版本的Matlab担心。 在使用Matlab R2015b的同一台计算机上(Win 7,1900x1200px),不再进行自动裁剪:
%% // MATLAB R2015B - Windows 7, 1900x1200pixels
set(gcf,'units','inches','position',[1 -5 6 15])
get(gcf,'position')
get(gcf,'OuterPosition')
ans =
1.00 -5.00 6.00 15.00
ans =
0.92 -5.08 6.17 15.40
set(gcf,'units','Pixels')
get(gcf,'position')
get(gcf,'OuterPosition')
ans =
97.00 -479.00 576.00 1440.00
ans =
89.00 -487.00 592.00 1478.00
Matlab的新图形引擎似乎已经解除了这种限制,现在我的身材大于屏幕尺寸(无论您是看像素还是英寸)。