Как выйти из m-файла matlab (НЕ сам matlab), если пользователь вводит неверные данные? Я знаю, что если во время выполнения m-файл работает неправильно, мы можем нажать Ctrl-C, чтобы остановить его. но мне нужна команда, чтобы поместить это в мой m-файл, чтобы сделать это, если что-то плохое случится.
Пожалуйста, не предлагайте команды «выход» или «выход», так как они завершают весь matlab, и я не хочу этого.
Вы можете просто ввести команду ошибки, например error ('неправильный ввод пользователя'), и она должна остановить сценарий.
Изменить: в качестве альтернативы вы можете просто отрефакторить свой код, чтобы он не запускался, если вы не установите флаг ввода равным true. Что-то вроде
inp = input('>', s)
if validateInput(inp)
%do you stuff here or call your main function
else
fprintf('Invalid input')
end
Я не уверен, как вы определяете «выход», но ошибка
кажется вам нужной функцией.
y = input('Please input a non-negative number: ');
if(y<0)
error('input must be non-negative');
end
disp( sprintf('y=%f', y ) );
Эй, я полагаю, вы могли бы использовать комбинацию 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