gpt4 book ai didi

matlab - Matlab-如何捕获cp2tform函数发布的警告

转载 作者:行者123 更新时间:2023-12-03 07:46:42 28 4
gpt4 key购买 nike

我有一组2D点的N组,我想解析这些N组,以找到与另一组2D点的仿射变换(平移,旋转,缩放(包括反射))。

为此,我应用了Matlab函数q。但是,在某些情况下,该函数给我的警告类似于以下所示:

Warning: The condition number of A is 117632159740.8394. 
> In maketform>validate_matrix at 328
In maketform>affine at 163
In maketform at 129
In cp2tform>findAffineTransform at 265
In cp2tform at 168

在这些情况下,用 cp2tform函数标识的变换矩阵不适用于2组2D点之间的实际变换。如何跳过这些情况以跳过它们?我应该引入什么matlab函数或代码来捕获这些情况,以便能够跳过或处理它们?

最佳答案

处理警告:

here所述,您可以将特定的警告转换为错误,并将其捕获在try/catch块中。

这是有关如何处理特定警告(将近乎奇异的矩阵求逆)的示例:

% turn this specific warning into an error
s = warning('error', 'MATLAB:nearlySingularMatrix'); %#ok<CTPCT>

% invoke code trapping errors
try
A = [1 2 3; 4 5 6; 7 8 9];
B = inv(A);
disp(B)
catch ME
if strcmp(ME.identifier, 'MATLAB:nearlySingularMatrix')
fprintf('Warning trapped: %s\n', ME.message);
else
rethrow(ME);
end
end

% restore warning state
warning(s);

禁止警告:

当然,如果要禁止显示警告消息,则可以使用以下命令查询最近发出的警告:
[msgstr, msgid] = lastwarn;

(或使用 @Benoit_11显示的语法),然后将其关闭,直到暂时在函数中:
% turn it off
s = warning('off', msgid);

% ...

% restore state
warning(s);

关于matlab - Matlab-如何捕获cp2tform函数发布的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450154/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com