我從Windows命令提示符下運行MATLAB腳本:力Matlab的輸出到命令行
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
的test.m很簡單:
function test
disp('Hello!');
輸出顯示在MATLAB命令窗口。有什麼辦法可以強制輸出到Windows提示符?
我從Windows命令提示符下運行MATLAB腳本:力Matlab的輸出到命令行
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
的test.m很簡單:
function test
disp('Hello!');
輸出顯示在MATLAB命令窗口。有什麼辦法可以強制輸出到Windows提示符?
我已經找到了解決的:
我會在這裏複製它的便利。 首先,我需要修改MATLAB腳本輸出到一個文本文件:
:function test
fid=fopen('output.txt','w');
fprintf(fid,'Hello!');
fclose(fid);
那我應該用一個bat文件有一個附加的命令顯示output.txt中的內容運行了Matlab
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
type output.txt
type
命令將在命令窗口中顯示'output.txt'的內容。所以@matlabgui的回答幾乎就在那裏。謝謝。
這不是一個非常優雅的解決方案,但它的工作原理。
我不知道如何在Windows中執行此操作,以便讓Matlab實際在DOS窗口中運行,而這正是您需要將顯示器寫入其中的操作。 (僅供參考:您可以在LINUX中 - 但我假設您需要在Windows中運行)。
對於在Matlab中運行,你有2個方案,我能想到的:在啓動,將記錄所有輸出到您指定的文件
-logfile文件 - 然而,當文件被寫入到如何和磁盤是由Matlab控制的,我還沒有測試過 - 如果你的代碼沒有做太多,它可能只寫在Matlab出口。
日誌文件在Matlab命令中,即-r "diary FILE.TXT; test.m; diary OFF"
- 這與上面類似 - 但使用了diary
函數。
但是你可以得到你想要的東西如果你可以運行你的代碼編譯(我知道那是一個很大的,如果因爲你可能沒有編譯器 - 或者如果你經常要更新test.m
這不是最高效...
當您從DOS提示符運行編譯代碼時,所有的終端消息都被寫入到DOS提示符下。我建議的一個事情是,如果這樣做合適的話,就是從安裝目錄中刪除"splash.png"
文件避免在DOS下運行時啓動畫面(可能不需要)。
從命令行(或任何其他shell或批處理(例如,cmd或bat)腳本)調用Matlab時,使用命令行選項-log
。
它沒有記錄爲Matlab 2017b,但它的工作原理。
備註:在Matlab的Windows版本中不支持-nodisplay
,但如果您想阻止它顯示數字,請改爲使用-noFigureWindows
。
這並不是您尋找的答案,但您可以使用'system'命令調用'echo',但是需要您修改m文件。 – Danny
@Danny。感謝您的評論。是的,它不會幫助,因爲'system'的輸出也會轉到命令窗口,而不是windows命令提示符。 – Anton