Как выйти из ml файла matlab (не сам matlab), если пользователь вводит плохие входы?
Как выйти из m файла matlab (не сам matlab), если пользователь вводит плохие входы?
Я знаю, если во время выполнения m файл идет не так, мы можем нажать Ctrl-C, чтобы остановить его. но мне нужна команда, чтобы поместить его в мой файл m, чтобы сделать это, если что-то не так.
Пожалуйста, не предлагайте команды "exit" или "quit", поскольку они завершают весь matlab, и я не хочу этого.
Ответы
Ответ 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