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

Matlab 相同的默认图形位置和大小,与不同计算机上的屏幕分辨率无关,matlab,matlab-figure,Matlab,Matlab Figure,我在屏幕的右半部分使用MATLAB,因此我希望在屏幕的左半部分打开图形。但是,体形高度应该与默认体形的大小有关,因此不是屏幕的高度。此外,我在不同的计算机上使用MATLAB,这些计算机的屏幕大小(像素)是可变的,因此图形尺寸应该取决于屏幕大小,但在屏幕上生成相同的图形。因此,图形尺寸和位置取决于屏幕分辨率,但生成尺寸和位置的代码应独立于屏幕分辨率 我已经用下面答案中的代码实现了这一点,我想我会将这些代码分享给那些认为这对自己的设置有用的人。默认的MATLAB当前文件夹可以在MATLAB的首选项中

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


我已经用下面答案中的代码实现了这一点,我想我会将这些代码分享给那些认为这对自己的设置有用的人。

默认的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像素。此外,由于Windows10将这些数字放在左侧太远,因此这些数字被稍微向右填充。自动检测到Windows 10

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

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