八度函数应该 return 一个向量,而不是 'ans'
Octave function should return a vector, not an 'ans'
我正在尝试了解如何在 Octave 函数中 return 编辑值。我写了一个 return 多个变量的函数,它是 [error, accuracy, precision, npv, recall, F1_score]
.
我想要实现的是 return 每个 结果变量 到控制台而不是 标准 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
虽然我希望看到整个 return 变量列表。
我也想让这个工作(测试功能的断言):
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])
),它将 return 第一个输出变量仅作为 ans
。
- 如果您只指定一个变量,它也将 return 第一个输出变量 (
z = describeConfMatrix([546, 0;314, 0])
)。
- 如果您希望所有变量都被 returned,您必须在函数调用中指定它们,如
[error, accuracy, precision, npv, recall, F1_score] = describeConfMatrix([546, 0;314, 0])
这是 MATLAB/Octave 中的正常行为和预期行为。由于同样的原因,您的 assert
行将无法使用。
我正在尝试了解如何在 Octave 函数中 return 编辑值。我写了一个 return 多个变量的函数,它是 [error, accuracy, precision, npv, recall, F1_score]
.
我想要实现的是 return 每个 结果变量 到控制台而不是 标准 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
虽然我希望看到整个 return 变量列表。
我也想让这个工作(测试功能的断言):
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])
),它将 return 第一个输出变量仅作为ans
。 - 如果您只指定一个变量,它也将 return 第一个输出变量 (
z = describeConfMatrix([546, 0;314, 0])
)。 - 如果您希望所有变量都被 returned,您必须在函数调用中指定它们,如
[error, accuracy, precision, npv, recall, F1_score] = describeConfMatrix([546, 0;314, 0])
这是 MATLAB/Octave 中的正常行为和预期行为。由于同样的原因,您的 assert
行将无法使用。