2016-12-07 26 views
2

我有一个运行MATLAB的3台显示器Gentoo Linux系统。 MATLAB在中央监视器上运行。我需要MATLAB来在左侧显示器上绘制图形,但它总是在右侧显示器上绘制。如何控制显示哪些监视器图?

我相信这是至少部分地引起我已经安排身体我的显示器的非标准的方式 - 基本上是2,3,1:

>> get(0,'MonitorPositions') 

ans = 

      1   1  1920  1080 
     -3839   1  1920  1080 
     -1919   1  1920  1080 

有没有一种方法,我可以控制这个作为默认在MATLAB内?

回答

4

您可以set the default figure positionroot object像这样:

set(0, 'DefaultFigurePosition', [-3839 1 1920 1080]); 

这将创建一个默认填补左监视器窗口。但是,每次重新启动MATLAB时都会重置此默认设置,因此如果您希望它在会话间持续存在,则必须将其放入startup文件中。

注:根对象的documentation for the 'MonitorPositions' property这样说:

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

如果更改使用哪个监视器作为主显示器,则左侧两列中的相对坐标将发生变化,这意味着您必须更改上述代码行中的位置值。如果您认为显示设置可能会经常更改,或者您将在不同的显示器设置上运行代码,则可以通过查看左列最低值的显示器位置,确保绘图始终出现在最左侧的显示器上。这里是你如何能做到这一点(也纳入监控范围内以前的默认窗口大小和位置):

monitorPos = get(0, 'MonitorPositions'); 
figurePos = get(0, 'DefaultFigurePosition'); 
[~, leftIndex] = min(monitorPos(:, 1)); 
set(0, 'DefaultFigurePosition', figurePos + [monitorPos(leftIndex, 1:2)-1 0 0]); 
+1

很好的解释和工作正常。由于monitorPos(leftIndex,:)命令返回的值会创建一个窗口,使用所有左侧显示器与旧的默认尺寸,但解决方案非常棒。谢谢! – LGTrader

+0

@LGTrader:好点。我忽略了这会使显示器的大小成为一个窗口。我会更新一个更好的解决方案。 – gnovice

+0

只有在所有显示器的尺寸相同的情况下,显示器设置更改情况下的添加才有效。 – Adiel

相关问题