필터 지우기
필터 지우기

do specific work after a specific warning

조회 수: 1 (최근 30일)
civil tech
civil tech 2022년 7월 4일
댓글: civil tech 2022년 7월 5일
Hello everyone.
I want to write a command with the following task:
if a specific warning is happend, do a specific work.
For example:
class 0 = [1, 2, 2, 1, 4, 5, 4, 4,];
warning('off');
class = kmeans(X,10);
if (Warning: Failed to converge in 100 iterations during replicate 10)
class = class0;
end
How to write the "if-condition" above in the command line?

답변 (2개)

Walter Roberson
Walter Roberson 2022년 7월 4일
Use lastwarn, especially the two-output version that lets you get the message id.
Trick of the trade, though: immediately before the command to be tracked, use
warning('')
otherwise lastwarn might refer to a warning from before the kmeans call.

Image Analyst
Image Analyst 2022년 7월 4일
Maybe try this:
% Clear the last warning.
lastwarn('Success');
class = kmeans(X,10);
% See if there was a warning.
[warningMessageString, warningMessageID] = lastwarn;
if contains(warningMessageString, 'Failed to converge')
% Alert user
uiwait(warndlg(warningMessageString));
% Do anything else you want to do, like exit or whatever.
end

카테고리

Help CenterFile Exchange에서 Debugging and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by