Matlab 如何控制显示器上显示的监视器绘图?

Matlab 如何控制显示器上显示的监视器绘图?,matlab,matlab-figure,multiple-monitors,Matlab,Matlab Figure,Multiple Monitors,我有一个运行MATLAB的3监视器GentooLinux系统。MATLAB在中央监视器上运行。我需要MATLAB在左监视器上生成绘图,但它总是在右监视器上绘图 我相信这至少部分是由于我的显示器的非标准物理布置方式造成的——基本上是2,3,1: >> get(0,'MonitorPositions') ans = 1 1 1920 1080 -3839 1 1920

我有一个运行MATLAB的3监视器GentooLinux系统。MATLAB在中央监视器上运行。我需要MATLAB在左监视器上生成绘图,但它总是在右监视器上绘图

我相信这至少部分是由于我的显示器的非标准物理布置方式造成的——基本上是2,3,1:

>> get(0,'MonitorPositions')

ans =

           1           1        1920        1080
       -3839           1        1920        1080
       -1919           1        1920        1080
有没有一种方法可以在MATLAB中作为默认值进行控制?

您可以这样:

默认情况下,这将创建填充左侧监视器的窗口。但是,每次重新启动MATLAB时,该默认值可能会重置,因此,如果希望它在会话之间保持不变,则必须将其放入文件中

注意:根对象的

每行的前两个元素表示相对于原点的显示位置。每行的最后两个元素表示显示大小。原点位于主显示器的左下角

如果更改用作主要显示的监视器,左两列中的相对坐标将更改,这意味着您必须更改上面代码行中的位置值。如果您认为显示设置可能经常更改,或者您将在不同的监视器设置上运行代码,则可以通过在左列中查找具有最低值的监视器位置,确保绘图始终显示在最左侧的监视器上。以下是您如何做到这一点(还包括在监视器中合并以前的默认窗口大小和位置):


很好的解释,效果很好。由于monitorPos(leftIndex,:)命令返回的值创建了一个窗口,该窗口使用所有左侧监视器,而不是我得到的旧默认大小,因此我将对其进行一些修改,但解决方案非常好。谢谢@交易者:说得好。我忽略了这会使一个窗口与显示器一样大。我将使用更好的解决方案进行更新。只有当所有监视器的大小都相同时,才可以添加监视器设置更改的案例。@Adiel:实际上,现在我再看一看,处理监视器设置更改的案例将适用于不同大小的监视器。使用上一个默认位置,您可以保持相同的默认体形大小,但只需将其移动到不同的监视器,这正是OP想要的。如果要更改监视器和图形大小(如自动填充监视器),则需要执行不同的操作(如
monitorPos(leftIndex,:)-[1 1 0]
)。(注意修订历史记录)
set(0, 'DefaultFigurePosition', [-3839 1 1920 1080]);
monitorPos = get(0, 'MonitorPositions');
figurePos = get(0, 'DefaultFigurePosition');
[~, leftIndex] = min(monitorPos(:, 1));
set(0, 'DefaultFigurePosition', figurePos + [monitorPos(leftIndex, 1:2)-1 0 0]);