gpt4 book ai didi

function - MATLAB:有没有一种方法可以更好地组织实验函数?

转载 作者:太空宇宙 更新时间:2023-11-03 19:35:02 24 4
gpt4 key购买 nike

我将进行一组实验。评估的主要方法具有以下签名:

[Model threshold] = detect(...
TrainNeg, TrainPos, nf, nT, factors, ...
removeEachStage, applyEstEachStage, removeFeatures);

其中 removeEachStageapplyEstEachStageremoveFeatures 是 bool 值。您可以看到,如果我颠倒这些 bool 参数中的任何一个的顺序,我可能会得到错误的结果。

MATLAB 中是否有一种方法可以更好地组织以最大限度地减少此类错误?或者有什么工具可以用来防止这些错误吗?

最佳答案

具有结构的组织

您可以输入一个 struct,它具有这些参数作为它的字段。

例如带有字段的结构

setts.TrainNeg
.TrainPos
.nf
.nT
.factors
.removeEachStage
.applyEstEachStage
.removeFeatures

这样,当您设置字段时,字段是什么一目了然,这与您必须记住参数顺序的函数调用不同。

那么你的函数调用就变成了

[Model threshold] = detect(setts);

你的函数定义应该是这样的

function [model, threshold] = detect(setts)

然后简单地替换出现的例如paramsetts.param

混合方法

如果您愿意,您也可以将此方法与当前方法混合使用,例如

[Model threshold] = detect(in1, in2, setts);

如果您仍想显式包含 in1in2,并将其余部分捆绑到 setts 中。

OOP 方法

另一种选择是将检测变成一个类。这样做的好处是,detect 对象将具有固定名称的成员变量,这与结构相反,如果您在设置字段时输入错误,您只需创建一个名称拼写错误的新字段。

例如

classdef detect()
properties
TrainNeg = [];
TrainPos = [];
nf = [];
nT = [];
factors = [];
removeEachStage = [];
applyEstEachStage = [];
removeFeatures =[];
end
methods
function run(self)
% Put the old detect code in here, use e.g. self.TrainNeg to access member variables (aka properties)
end
end

关于function - MATLAB:有没有一种方法可以更好地组织实验函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907166/

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