相同的默认图形位置和大小与不同计算机上的屏幕分辨率无关

时间:2015-07-06 11:06:16

标签: matlab matlab-figure

我在屏幕的右半部分使用MATLAB,所以我希望数字在屏幕的左半部分打开。但是,图形高度应该大约是默认图形的大小,因此不是屏幕的高度。此外,我在具有可变屏幕尺寸(像素)的不同计算机上使用MATLAB,因此图形尺寸应取决于屏幕尺寸,但在屏幕上产生相同的数字。因此,图形尺寸和位置取决于屏幕分辨率,但生成尺寸和位置的代码应独立于其上。

我已经使用下面的答案中的代码完成了这个,我认为我会分享给那些认为这对他们自己的设置有用的人。

1 个答案:

答案 0 :(得分:2)

可以在MATLAB的首选项中设置默认的MATLAB当前文件夹。我已将其设置为所有MATLAB计算机上的网络文件夹,这也可以是云服务的云文件夹,例如Dropbox的。然后我将文件startup.m放在包含以下代码的文件夹中。

ss = get(0,'screensize');
b = 7; % border around figures is 7 pixels wide
%TODO different for various operating systems and possibly configurations.
p = 0; % extra padding pixels from left edge of screen

if ispc
    win = feature('getos');
    i = (1:2) + regexp(win,'Windows ','end');
    switch win(i)
        case '10'
            b = 0;
            p = 2;
        otherwise
            % other cases will be added in the future
    end
end

fwp = ss(3)/2-2*b-p; % figure width in pixels
b = b+p;
n = 5;
set(0,'defaultfigureposition',[b ss(4)/n, fwp, ss(4)*(1-2/n)])
clear

现在,每次启动MATLAB时,它都会运行这个脚本,它会将我创建的默认数字移动到屏幕的左半部分,尺寸很合适(轴只比它们高一点宽)。

图形的单位是标准化的,但它们也可以设置为像素或您喜欢的任何尺寸。我希望有人能为他们的设置找到一个有用的脚本。

编辑:我更新了脚本以保持默认的数字单位:像素。这是必要的,因为诸如曲线拟合工具(cftool)或分类学习者(classificationLearner)之类的应用程序以及可能的其他应用程序都会使用标准化的数字单位进行监控。他们的(对话框)窗口要么不显示(它们位于屏幕区域之外),要么太小或太大。

编辑2:我已经更新了脚本以与Windows 10兼容。图形窗口现在有一个1像素的边框,而不是7.此外,数字有点填充到右边,因为Windows 10放置它们离左边太远了。 Windows 10会自动检测到。

待办事项:支持其他操作系统(带检测功能),例如Mac,Linux。如果您有这样的系统,请在评论中报告以下内容:

  • 打开MATLAB并从feature getos命令复制粘贴结果字符串。
  • 将图形对准(不在屏幕左边缘上方或上方),并对着屏幕右半部分(不在屏幕的上方或上方),并在此处报告图形的位置和外部位置。