Как выйти из m-файла matlab (НЕ сам matlab), если пользователь вводит неверно

Как выйти из m-файла matlab (НЕ сам matlab), если пользователь вводит неверные данные? Я знаю, что если во время выполнения m-файл работает неправильно, мы можем нажать Ctrl-C, чтобы остановить его. но мне нужна команда, чтобы поместить это в мой m-файл, чтобы сделать это, если что-то плохое случится.

Пожалуйста, не предлагайте команды «выход» или «выход», так как они завершают весь matlab, и я не хочу этого.

13
задан Kamran Bigdely 4 July 2012 в 20:11
поделиться

3 ответа

Вы можете просто ввести команду ошибки, например error ('неправильный ввод пользователя'), и она должна остановить сценарий.

Изменить: в качестве альтернативы вы можете просто отрефакторить свой код, чтобы он не запускался, если вы не установите флаг ввода равным true. Что-то вроде

inp = input('>', s)

if validateInput(inp)
    %do you stuff here or call your main function
else
    fprintf('Invalid input')
end
6
ответ дан 1 December 2019 в 21:23
поделиться

Я не уверен, как вы определяете «выход», но ошибка кажется вам нужной функцией.

y = input('Please input a non-negative number: ');
if(y<0)
    error('input must be non-negative');
end

disp( sprintf('y=%f', y ) );
13
ответ дан 1 December 2019 в 21:23
поделиться

Эй, я полагаю, вы могли бы использовать комбинацию try-catch, чтобы обработать несколько неожиданную ошибку и что-то с ней сделать.

Например,

function [ output ] = test(input)

  Bmat = [ 1 1 1 ]   % Some matrix

  try
    input*B;
  catch ME
    disp(ME.message)
    return;          % This is the statement that exits your function
  end

end

Если вы запустите

>> test([1 1 1])

, это не сработает, поскольку переменные input и B имеют несовпадающие внутренние размеры, но оператор try вызовет исключение для catch. , и делайте оттуда все, что хотите. В этом случае он отобразит сообщение об ошибке в командной строке и выйдет из функции.

Переменная «ME» здесь - это просто объект MATLAB для обработки ошибок, а ME.message хранит строку, содержащую тип ошибки, обнаруженной интерпретатором.

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

Вы можете узнать больше о команде 'return' и обработке ошибок из документации MATLAB,

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/return.html

7
ответ дан 1 December 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: