Как я могу продолжить цикл при возникновении ошибки в MATLAB?

Я конвертирую некоторые .dat файлы в файлы .mat с помощью функции. Я вызываю эту функцию внутри цикла, чтобы преобразовать несколько файлов. Есть некоторые случаи, когда мой .dat файл поврежден и функция не может конвертироваться и возникает ошибка, останавливая цикл.

Теперь мой вопрос: есть ли какая-либо команда, в которой при возникновении ошибки она должна пропустить текущее значение (i) в цикле и перейти к следующему значению приращения (в моем случае следующий файл)?

Ответы

Ответ 1

Вы можете сделать это, используя оператор 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

EDIT:

Amro предлагает хорошую идею в своем комментарии ниже. Возможно, вы захотите выпустить предупреждение о том, что произошла ошибка, и для какого файла, или, возможно, вы даже захотите сохранить список файлов, которые не удалось правильно преобразовать. Для этого вы можете сначала инициализировать пустой массив ячеек, прежде чем запускать цикл:

failedFiles = {};  %# To store a list of the files that failed to convert

Затем, после того как вы поймаете исключение, но перед тем, как вы выполните команду continue, добавьте имя/путь к текущему файлу, который будет преобразован в список:

...
catch exception
  failedFiles = [failedFiles; {'currentFile.dat'}];
  continue
end

Когда ваш цикл будет выполнен, вы можете посмотреть failedFiles, чтобы легко увидеть, что не правильно конвертировалось.