2016-07-26 571 views
1

我正在使用命令行Matlab(即遠程ubuntu linux工作站)並試圖執行腳本。命令行matlab腳本調用給出未定義的變量/類錯誤

當我跑:

matlab -nodesktop -nosplash -r "my_script.m" 

MATLAB會打開,給我一個錯誤信息,說明

Undefined variable "my_script" or class "my_script.m" 

我發現一個線程在計算器與用戶有類似的問題: Matlab: Running an m-file from command-line

但是當我試圖實現建議的語法:

matlab -nodesktop -nosplash -r "run('my_script.m');" 

現在我得到一個語法錯誤,

Unexpected MATLAB expression. 

Error in run (line 96) 
evalin('caller', [script ';']) 

我很少用Matlab和更很少這樣做瓦特/ OA貴,所以我一直在努力沒有成功修復利用網上信息的語法這個回答。

+0

很可能my_script.m不在你的Matlab路徑中,所以它找不到它。在嘗試運行腳本之前將其添加到您的路徑和/或切換當前目錄。 –

+0

我在開放的matlab會話中用pwd檢查過。工作目錄是my_script.m所在的地方 – Max

回答

4

你只需要刪除.m擴展:

matlab -nodesktop -nosplash -r "my_script" 

的原因是,my_script.m不是有效的Matlab的聲明。爲了運行腳本/函數,您需要使用它的名稱執行它,即my_script。您可以看到,如果您嘗試從Matlab命令窗口運行my_script.mmy_script語句。

您提到的第二個錯誤(使用run命令時)似乎是腳本中的實際錯誤。似乎你忘了複製粘貼最上面的一行,它應該顯示錯誤發生的行號。您在下面看到的,即Error in run (line 96)evalin('caller', [script ';'])只是堆棧跟蹤中的第二個條目。它確實在使用evalin評估腳本時發生錯誤。

+0

打我吧:)雖然我不得不說,我很難第二個錯誤... –

+0

@Max還注意到,這意味着「打開一個matlab會話並運行腳本「,而不是」運行腳本並退出「。你的matlab會話將保持打開狀態。如果你只是想運行腳本並退出,那麼執行'-r「myscript;退出」' –

+0

謝謝。該腳本現在可以正確執行。 – Max