簡體   English   中英

如何使MatLab(.m)文件的所有行都運行?

[英]How do i get all lines of my MatLab (.m) files to run?

我有一個.m文件,當我手動運行它(意味着已經在MatLab中,然后鍵入三行)時,它會按預期運行。

我想做的是將這三行放入am文件並運行,而不必在MatLab中一次輸入這些行

這是m文件,我正在嘗試運行名為“ ABOVE2019_TF01_MatLabCommands_Test.m”的文件

這是其中的三行:

in_dir_list = {'/j078_8/58667_TF01_G11','/j078_8/58667_TF01_G09',};
out_dir_list = {'/j078_8/58667_TF01_G11','/j078_8/58667_TF01_G09',};
resid_process_GPS(in_dir_list,out_dir_list);

(再次在MatLab中運行這三行,就像我期望的那樣)

所以我嘗試像這樣運行ABOVE2019_TF01_MatLabCommands_Test.m文件

/Applications/MATLAB_R2017a.app/bin/matlab -r "cd /volumes/promiseraid9/workspace/colleen/NewResiduals/j078_8; try, run('ABOVE2019_TF01_MatLabCommands_Test.m'); end; quit" 

它沒有錯誤或只是從MatLab退出而不是運行第三行

如果相反,我將m文件的第三行更改為只打印出in_dir_list文件。 上面的命令將打印出沒有問題。 但是問題出在第三行。 無論出於何種原因,以上代碼都不會運行第三行。 我究竟做錯了什么?

您正在使用try語句,而沒有捕獲或處理發生的任何異常。 因此,腳本ABOVE2019_TF01_MatLabCommands_Test.m中發生的任何錯誤都不會返回到命令行。

您可以通過從命令行運行以下代碼來驗證這一點:

try; asdfasdfalwelknwerewr_THIS_LINE_SHOULD_ERROR; end;

您應該使用catch語句來處理所有返回的異常。

如果您是在MATLAB桌面環境(維護用於搜索函數的路徑)之外的環境中運行此函數,那么您確定函數位於搜索路徑中嗎? resid_process_GPSresid_process_GPS位於名為/j078_8的文件夾中?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM