gpt4 book ai didi

matlab - 在Matlab中防止 “MATLAB:unassignedOutputs”

转载 作者:行者123 更新时间:2023-12-03 08:30:02 26 4
gpt4 key购买 nike

我正在寻找捕捉和处理Matlab中的“unassignedOuputs”错误。更具体地说,请看下面的代码:

try
[out1,out2]= somefunction(in1,in2);
catch err
if strcmp(err.identifier,'MATLAB:unassignedOutputs')
<some code>
else
rethrow(err);
end
end

如果“somefunction”未分配out2并捕获了导致的错误,是否有可能以某种方式从函数中检索其余输出(在这种情况下为out1)?如果不是,是否有一种方法可以忽略该值而重新调用该函数,以使该函数不会引发错误?

最佳答案

据我所知,一旦函数因此错误而终止,就无法检索变量。对于产生第一个输出但不产生第二个输出的情况,您可以仅使用一个输出重试它,就像这样:

try
[out1,out2]= somefunction(in1,in2);
catch err
if strcmp(err.identifier,'MATLAB:unassignedOutputs')
try
out2 = [];
out1 = somefunction(in1, in2);
catch err2
% rethrow original error
rethrow(err)
end
else
rethrow(err);
end
end

要显示一条消息,指出未分配哪个输出,您必须解析 err.message(尽管默认消息本身应该相当清晰)。

但是,如果您有两个以上的输出,并且您不知道哪些可能未正确定义,那么使此功能正常工作将不是一件容易的事。而且,如果未定义第一个输出,则根本无法使用。在这种情况下,我认为您必须编辑函数本身。

如果特定用例正在检查一堆学生代码,这些代码都具有相同的输入并提供相同的输出,则另一种选择是为他们提供一个功能模板,该模板最后包含检查输出是否存在以及是否存在输出。不会将它们设置为空并显示您的自定义消息。

关于matlab - 在Matlab中防止 “MATLAB:unassignedOutputs”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28160309/

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