13
我使用函數將一些.dat文件轉換爲.mat文件。我在一個循環內調用這個函數來轉換一些文件。在某些情況下,我的.dat文件已損壞,並且該函數無法轉換併發生錯誤,從而停止循環。如何在MATLAB中發生錯誤時繼續循環?
現在我的問題是:是否有任何命令,其中當發生錯誤時,應該跳過循環中的當前(i)值並轉到下一個增量值(在我的情況下是下一個文件)?
我使用函數將一些.dat文件轉換爲.mat文件。我在一個循環內調用這個函數來轉換一些文件。在某些情況下,我的.dat文件已損壞,並且該函數無法轉換併發生錯誤,從而停止循環。如何在MATLAB中發生錯誤時繼續循環?
現在我的問題是:是否有任何命令,其中當發生錯誤時,應該跳過循環中的當前(i)值並轉到下一個增量值(在我的情況下是下一個文件)?
您可以使用TRY/CATCH聲明以及CONTINUE來執行此操作。請將您的循環中的以下內容:
try %# Attempt to perform some computation
%# The operation you are trying to perform goes here
catch exception %# Catch the exception
continue %# Pass control to the next loop iteration
end
編輯:
荷銀提出以下他的評論是個好主意。您可能希望發出警告,指出發生了錯誤和哪個文件,或者您可能甚至想要保存無法正確轉換的文件列表。對於後者,你可以在開始你的循環之前首先初始化一個空單元陣列:
failedFiles = {}; %# To store a list of the files that failed to convert
然後,您捕獲異常之後,但在發出continue
命令之前,添加當前文件的名稱/路徑被轉換到列表:
...
catch exception
failedFiles = [failedFiles; {'currentFile.dat'}];
continue
end
當你的循環完成,然後你可以看一下failedFiles
很容易地看到什麼不正確轉換。
您應該或許會通知用戶錯誤:'嘗試,...,抓住我,警告(ME.identifier,ME.message),繼續,結束' – Amro 2010-09-13 18:06:06