2014-07-01 3 views
1

fmincon 루틴을 사용하여 함수를 최소화했습니다.MATLAB fmincon에서의 경고

이 함수는 integral 명령을 여러 번 사용합니다. 그러나 이러한 적분 중 일부는 Inf 또는 NaN으로 밝혀졌으며 MATLAB에 경고가 표시되는 것을 원하지 않습니다.이 함수는 항상 유한합니다.

나는 warning('off','MATLAB:integral:NonFiniteValue') 명령을 사용해 보았지만 최적화를 실행할 때 작동하지 않는 것 같습니다.

답변

2

단순히 잘못된 메시지를 표시하지 않을 수 있습니다. 당신은 100 % 정확한 경고 메시지를 살해하고 있는지를 확인하기 위해 출력 기능 (opts = optimset('OutputFcn', @myOutFcn);) 내부

[a,b] = lastwarn 

의 값을 검사 할 수 있습니다.

하지만 전에도이 성가신 동작이 발생했습니다. MATLAB의 자체 기능에서 특정 경고를 억제하지 못하는 것 같습니다. 그 경우, 당신은 추악하고 연약한 해킹에 의존해야합니다.

당신은 '...'섹션에 포함 된 모든 코드에 대해 모든 경고를 억제

warning off 
... 
warning on 

을 시도 할 수 있습니다. 일시적 오류로 경고를 촉진 :

ws = warning('error', 'MATLAB:integral:NonFiniteValue'); 
... 
warning(ws); 

을하고 try....catch에서 그것을 마무리

또한 문서화되지 않은 기능을 사용할 수 있습니다. 기회는 당신이 integral과 그러므로 fmincon을 조기에 중단 할 것이므로 어떤 구조 메커니즘과 함께 마무리해야하지만, 그것은 실제 복잡하고 실제 못 생기고 빠르기 때문에 최후의 수단으로 만 사용됩니다.

... 그럼에도 불구하고 경고와 함께 생활하는 것이 가장 쉽습니다.