gpt4 book ai didi

matlab - Octave 函数应该返回一个向量,而不是 'ans'

转载 作者:行者123 更新时间:2023-12-02 15:27:28 24 4
gpt4 key购买 nike

我正在尝试了解 Octave 函数中如何返回值。我写了一个返回多个变量的函数,它是 [error, accuracy, precision, npv, recall, F1_score]

我想要实现的是返回每个结果变量到控制台而不是标准ans(这似乎总是第一个变量)。

所以这很好用:

>> [error, accuracy, precision, npv, recall, F1_score] = describeConfMatrix([546, 0;314, 0])
error = 0.36512
accuracy = 0.63488
precision = 0.63488
npv = NA
recall = 1
F1_score = 0.77667

但这会产生“ans”:

>> z = describeConfMatrix([546, 0;314, 0])
z = 0.36512
>> describeConfMatrix([546, 0;314, 0])
ans = 0.36512

虽然我也希望看到完整的返回变量列表。

我也想让这个工作(测试功能的断言):

m = [546, 0;314, 0];
ans = [0.36512, 0.63488, 0.63488, NA, 1, 0.77667];
assert(isequal(describeConfMatrix(m),ans))

非常感谢 Matlab 新手!

这是我的代码:

function [error, accuracy, precision, npv, recall, F1_score] = describeConfMatrix(m)
TP = m(1,1);
FN = m(1,2);
FP = m(2,1);
TN = m(2,2);
K = TP + FN + FP + TN;
error = (FP + FN) / K;
accuracy = (TP + TN) / K;
precision = TP / (TP + FP); # sometimes called 'positive predictive value'
recall = TP / (TP + FN);
if (FN + TN) != 0
npv = TN / (FN + TN);
else
npv = NA;
end;
F1_score = (2*precision*recall)/(precision + recall);
end

最佳答案

  • 如果您没有为函数调用指定输出参数(例如 describeConfMatrix([546, 0;314, 0])),它将仅返回第一个输出变量作为 回答
  • 如果您只指定一个变量,它还会返回第一个输出变量 (z = describeConfMatrix([546, 0;314, 0]))。
  • 如果您希望返回所有变量,则必须在函数调用中指定它们,如 [error, accuracy, precision, npv, recall, F1_score] = describeConfMatrix([546, 0;314 , 0])

这是 MATLAB/Octave 中的正常和预期行为。由于同样的原因,您的 assert 行将不起作用。

关于matlab - Octave 函数应该返回一个向量,而不是 'ans',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29627847/

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