Подтвердить что ты не робот

Как выйти из ml файла matlab (не сам matlab), если пользователь вводит плохие входы?

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

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

4b9b3361

Ответ 1

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

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

inp = input('>', s)

if validateInput(inp)
    %do you stuff here or call your main function
else
    fprintf('Invalid input')
end

Ответ 2

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

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

disp( sprintf('y=%f', y ) );

Ответ 3

Эй, я полагаю, вы могли бы использовать комбинацию 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