Мне еще не удалось найти такую информацию в объекте класса GeneralizedLinearModel
, возвращаемом из fitglm
.Тем не менее, один вариант, который технически не позволяет смотреть на вывод консоли, - это захват информации о последнем предупреждении с использованием lastwarn
или warning
:
>> [lastMsg, lastID] = lastwarn
lastMsg =
Iteration limit reached.
lastID =
stats:glmfit:IterationLimit
>> w = warning('query', 'last')
w =
struct with fields:
identifier: 'stats:glmfit:IterationLimit'
state: 'on'
Обратите внимание, что это все равно будет работать, даже если предупреждения были подавлены (т.е. предупреждения все еще генерируются и сохраняются, но не отображаются).
Один из способов, которыми вы могли бы воспользоватьсяэто для того, чтобы сначала установить последнее предупреждение для фиктивного сообщения (используя lastwarn
), затем установить модель, затем снова получить последнее предупреждение и сравнить его с вашим фиктивным сообщением.Если он отличается, при установке модели выдается новое предупреждение:
lastwarn('Nothing to see here', 'this:is:not:a:warning');
m = fitglm(x, y, 'distr', 'binomial');
[lastMsg, lastID] = lastwarn;
warningWasThrown = ~strcmp(lastID, 'this:is:not:a:warning');
Кроме того, вы можете иметь оператор switch , который проверяет значение идентификатора предупреждения lastID
исоответственно выполняет различные действия, такие как попытка подбора модели с альтернативным набором параметров.