2016-04-12 1 views
0

После выполнения сценария я пытаюсь прочитать состояние предупреждения черезCapture все предупреждения, которые происходят во время выполнения

matlab_warnings = warning; 

Дело в том, что не все предупреждения, которые имели место во время выполнения находятся внутри этого предупреждения состояния. При вызове

warning('on', 'verbose'); 

я получаю полезную подсказку о том, как отключить конкретное предупреждение, однако, я все еще интересно, почему некоторые предупреждения обыкновение появляться в warning. В моем случае я звоню quadprog, и эта функция (часть панели инструментов оптимизации) бросает предупреждения, которые я ищу.

+0

Кроме того, 'lastwarn' acutally содержит одно из предупреждений, которые я ищу. Почему «lastwarn» не синхронизируется с последней записью «warning»? – rocketsound

ответ

0

warning не возвращает предупреждения, которые произошли в вашем коде, вместо этого он возвращает настройку, если предупреждение должно отображаться или нет. lastwarn - единственный способ получить доступ к предупреждениям, и он позволяет получить доступ к последнему предупреждению.

0

Если вы знаете, какие части вашего кода могут генерировать предупреждения, вы можете добавить lastwarn в список каждый раз после выполнения кода. Ниже приведен фрагмент кода.

warnlist=[]; 
while somecondition 
    % Code that might generate a warning, eg your 'quadprog' function call. 
    warnlist = [warnlist; lastwarn] 
    warning('') % Clear the last warning, so you wont get dupes in the list 
end