2016-01-01 65 views
2

我在變量資源管理器中仔細設置了一堆子窗口和選項卡。這些選項卡以深度嵌套的數據結構顯示數據,因此需要相當多的手動瀏覽。以編程方式啓用選項「退出Matlab之前確認」

然後我偶然地關閉了Matlab。哎喲。

爲了防止這種情況發生,我找到了Confirm before exiting選項。我想以編程方式設置它,以便它可以放入我的startup.m文件中。這樣,無論我使用哪臺計算機,只要我有我的startup.m,我就不會陷入錯誤地關閉Matlab。

是否可以使用Matlab語句啓用此選項?

回答

5

這可以使用Undocumented MATLAB功能來實現,因此此行爲可隨時更改,恕不另行通知。

MATLAB在一個名爲matlab.prf文件,該文件被保存在路徑

fullfile(prefdir,'matlab.prf') 

變量的值可以讀取或寫入到使用Java保存喜好命令

com.mathworks.services.Prefs.get<type>Pref(<pref-name>) 
com.mathworks.services.Prefs.set<type>Pref(<pref-name>, newValue); 

的「退出MATLAB之前確認」變量是布爾值MatlabExitConfirm,所以你可以通過程序設置它

com.mathworks.services.Prefs.setBooleanPref('MatlabExitConfirm',1) 
+0

謝謝,hbaderts。該聲明與startup.m中的廣告一致。我甚至不需要知道java。 – user36800

2

的其他選項如下:

事實是,當MATLAB收到exit命令首先查找腳本finish.m,如果它發現它在程序退出之前,將執行該腳本。

有兩個示例腳本,通過MATLAB在MATLAB的...\toolbox\local路徑在我的安裝提供,例如:

C:\Program Files\MATLAB\R2014b\toolbox\local 

文件被稱爲finishdlg.mfinishsav.m。第一個包含確認對話框,第二個包含保存工作區的過程。

所以你應該:

  1. 副本 'finishdlg.m',
  2. 其重命名爲finish.m,然後
  3. 貼在當前文件夾或MATLAB可以看到的文件夾。

這樣,當你exit MATLAB它首先運行腳本,其中包含一個對話框,以確認退出命令。

finishdlg.m中的代碼包括:

Yes = getString(message('MATLAB:finishdlg:Yes')); 
No = getString(message('MATLAB:finishdlg:No')); 
button = questdlg(getString(message('MATLAB:finishdlg:ReadyToQuit')), ... 
        getString(message('MATLAB:finishdlg:ExitingDialogTitle')),Yes,No,No); 
switch button 
    case Yes, 
    disp(getString(message('MATLAB:finishdlg:ExitingMATLAB'))); 
     %Save variables to matlab.mat 
     save 
    case No, 
    quit cancel; 
end 

當然,你可以很容易地修改它。

+0

謝謝,NKN。您對finish.m的使用爲關閉檢查和活動提供了很大的靈活性。目前,我只是試圖激活退出確認開關。感謝您的示例代碼,作爲更復雜的結束操作的參考。 – user36800

+0

@ user36800肯定沒問題。 – NKN

相關問題