2010-08-04 2 views
12

사용자가 잘못된 입력을 입력하면 matlab m 파일 (MATLAB 자체가 아닌)을 종료하는 방법은 무엇입니까? m- 파일이 런타임에 잘못되었을 때 Ctrl-C를 눌러 중지시킬 수 있습니다. 하지만 뭔가 잘못되면 m- 파일에 넣으라는 명령이 필요합니다.사용자가 잘못된 입력을 입력하면 matlab m 파일 (MATLAB 자체가 아님)을 종료하는 방법은 무엇입니까?

'exit'또는 'quit'명령은 전체 MATLAB을 종료하므로 권장하지 마십시오. 원하지 않습니다.

답변

6

오류 ('잘못된 사용자 입력')와 같은 오류 명령을 넣을 수 있으며 스크립트를 중지해야합니다.

편집 : 또는 입력 플래그를 true로 설정하지 않으면 코드가 실행되지 않도록 리팩토링 할 수 있습니다. 난 당신이 "종료"를 정의하는 방법을 잘 모르겠습니다

inp = input('>', s) 

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

함수가 종료 할 필요가 여러 위치가있는 경우,이 솔루션은 실행의 나무에 이르게 if 문이나 if 문이 아닙니다. 비실용적. – Argyll

13

같은,하지만 error 당신이 필요로하는 기능이 될 것으로 보인다.

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

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

하나의 인수로'error'를 사용하는 것이 유효하고 쉽지만 최상은 아닙니다. 그것은'lasterror' 같은 것들이 완전히 작동하지 못하게합니다. 또한 인수의'\ n '과 같은 특수 문자는 변환되지 않습니다. – horchler

+0

실제로 추출하는 방법을 모르지만 MSGID 매개 변수를 사용한다고 제안한다고 가정합니다. 나는 2017a에서도이 매개 변수가 문자열이 아닌 문자 배열이되어야한다고 말합니다 ... Matlab을 싫어하는 사람입니다. – ensignr

7

안녕하세요 저는 예상치 못한 오류를 처리하기 위해 try-catch 조합을 사용할 수 있다고 생각합니다. 당신이

>> test([1 1 1]) 

그것은 변수 '입력'과 'B'일치하지 않는 내부 차원이 있기 때문에 작동하지 않습니다 실행,하지만 '시도'경우 예를 들어

,

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 

문은 'catch'에 대한 예외를 throw하고 거기에서 원하는 것을 수행합니다. 이 경우 명령 행에 오류 메시지가 표시되고 기능이 종료됩니다.

여기서 'ME'변수는 오류 처리를위한 MATLAB 객체이며 ME.message는 해석기가 포착 한 오류 유형을 포함하는 문자열을 저장합니다.

방금 ​​질문을 다시 읽었습니다 ... 'return'명령이 실제로 당신이 수행 한 것으로 가정합니다. 논리 또는 루프 문을 종료하고 함수를 종료 할 수 있습니다.

는 당신은 '복귀'명령과 MATLAB 문서에서 오류 처리에 대한 자세한 내용을보실 수 있습니다

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

+0

'return'은 둘 이상의 출력이있는 경우를 제외하고는 작동합니다. 오류 메시지가 표시됩니다. Matlab의 디자인이 나쁜 것 같습니다. – Argyll

관련 문제