構造体を持つ組織
struct
これらのパラメーターをフィールドとして持つ を入力できます。
たとえば、フィールドを持つ構造
setts.TrainNeg
.TrainPos
.nf
.nT
.factors
.removeEachStage
.applyEstEachStage
.removeFeatures
そうすれば、フィールドを設定すると、パラメーターの順序を覚えておく必要がある関数呼び出しとは異なり、フィールドが何であるかが明確になります。
次に、関数呼び出しは次のようになります
[Model threshold] = detect(setts);
そして、あなたの関数定義は次のようになります
function [model, threshold] = detect(setts)
param
次に、出現する egをに置き換えるだけsetts.param
です。
混合アプローチ
必要に応じて、このアプローチを現在のアプローチと組み合わせることもできます。
[Model threshold] = detect(in1, in2, setts);
in1
とを明示的に含めたい場合はin2
、残りを にバンドルし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