2014-12-11 2 views
1

최근에 Matlab과 호환되지 않는 기능을 사용할 때 Octave가 경고를받을 수 있다는 사실을 알게되었습니다. 다른 사람들과 일하기 때문에이 기능은 매력적입니다.경고 ('on', 'Octave : matlab-incompatible') 사용

warning ('on', 'Octave:matlab-incompatible') 

그러나 나는 때문에 비 matlab에 호환 기능을 사용 plot의 구현에 심지어 간단한 스크립트에

warning ('on', 'Octave:matlab-incompatible'); 
x = 5; 
plot(x); 

나는 많은 경고를 사용할 때. 예 :

warning: potential Matlab compatibility problem: ! used as operator near line 215 offile /usr/share/octave/3.8.1/m/plot/draw/plot.m 

이러한 경고를 끄는 방법이 있습니까? plot이 Matlab이 아닌 기능을 사용하여 구현되는 경우 신경 쓰지 않아요. Matlab을 사용할 때 그 구현은 괜찮을 것이기 때문입니다.

+0

[옥타브의'경고'에 대한 온라인 문서] (https://www.gnu.org/software/octave/doc/interpreter/Enabling-and-Disabling-Warnings.html#Enabling-and-Disabling-Warnings) "Matlab의 경고"(http://www.mathworks.com/help/matlab/ref/warning.html)와 비슷한 경우 경고를 선택적으로 비활성화 할 수 있어야합니다. 지금 옥타브가 없기 때문에 이것을 테스트 할 수 없습니다. 이 문제를 해결하면 자유롭게 답을 적어 두십시오. – horchler

+0

안녕하세요. 예. 문서를 읽었으며 진행 방법으로 뛰어 내리지 않았습니다. 내가 경고를 선택적으로 비활성화 할 수 있음을 안다. 이 파일에이 선택 해제 된 경고 만 적용하고 호출 할 함수는 필요하지 않을 수도 있습니다 ... –

+0

예, 경고는 전역입니다. 원하는 것을하기위한 표준 방법은 문제가되는 경고를 트리거 한 다음 나중에 다시 활성화 할 수있는 함수를 호출하기 전에 경고를 해제하는 것입니다. 우아한 것은 아니지만 그것이 작동하는 방식입니다. – horchler

답변

2

아니요. Octave:matlab-incompatible을 거의 쓸모 없게 만드는 것은 불가능합니다. 또한이 경고는 구문에 대해서만 인쇄되므로 아무런 문제없이 옥타브 전용 함수 (예 : center 또는 sumsq)를 계속 사용할 수 있습니다.

별도의 Matlab 및 Octave 구문 강조 (예 : gedit)가있는 텍스트 편집기를 사용하고 강조 표시되지 않도록하는 것이 좋습니다.

0

여기가 옥타브의 경우와 유사한 것으로 보인다 matlab에,에 끝낼 방법은 다음과 같습니다

warning('on', 'Octave:matlab-incompatible'); % Your Octave warning 
x = 5; 
WarnState = warning('off', 'Offending_MSGID'); % You'll need to get the specific ID 
plot(x); 
warning(WarnState); % Restore 

예, 그것은 조금 서투른입니다. 내가 아는 특정 파일 내에서 경고가 활성화되지 않도록 지정할 수있는 방법이 없습니다.

경고 상태가 복원되기 전에 코드가 사용자에 의해 인터럽트되거나 오류가 발생할 수 있습니다. 이 경우 시스템이 알 수없는 경고 상태가됩니다. 이것을 피하는 한 가지 방법은 onCleanup을 사용하는 것입니다. 이 함수는 오류로 인해 종료 되더라도 함수가 종료 될 때 호출됩니다. 함수가 이렇게 경고 상태가 그때까지 복원되지 않습니다 종료 될 때까지 onCleanup가 호출되지 않습니다

warning('on', 'Octave:matlab-incompatible'); % Your Octave warning 
x = 5; 
WarnState = warning('off', 'Offending_MSGID'); % You'll need to get the specific ID 
C = onCleanup(@()warning(WarnState)); 
plot(x); 
... 

참고 : 당신은 위의를 다시 작성 할 수 있습니다. 원하는 경우 전에 수동으로 복원하려면 warning(WarnState); 행을 추가 할 수 있어야합니다. onCleanup이 어떤 기능을 호출하든간에 은 결코 오류 자체를 반환 할 수 있습니다.

+0

안녕하세요, 그렇습니다.하지만 솔루션은 매우 엉망입니다.예를 들어, 많은 핵심 기능이 비 - MATLAB 호환 방식으로 구현되어 있으므로 정기적으로 경고를 켜고 끌 필요가 있습니다. 그것의 거래 차단기는 나를 위해 ... –

+0

@AndyT : 내 유일한 다른 제안은 함수로 이렇게 뭔가를 돌려서 하나의 라인입니다. – horchler