2016-12-07 53 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

相關問題