एक struct
आप इनपुट सकता है के साथ संगठन एक struct
इन मानकों है कि के रूप में यह क्षेत्रों है।
उदाहरण के लिए खेतों
setts.TrainNeg
.TrainPos
.nf
.nT
.factors
.removeEachStage
.applyEstEachStage
.removeFeatures
इस तरह जब आप फ़ील्ड सेट यह स्पष्ट है क्या क्षेत्र एक समारोह कॉल जहां मापदंडों के आदेश को याद करने के लिए है के विपरीत, है के साथ एक संरचना।
फिर अपने समारोह कॉल
[Model threshold] = detect(setts);
हो जाता है और अपने कार्य परिभाषा
function [model, threshold] = detect(setts)
की तरह कुछ
तो बस जैसे की घटनाओं की जगह होगी param
setts.param
के साथ।
मिश्रित दृष्टिकोण
तुम भी यदि आप चाहें, जैसे अपने वर्तमान से एक के साथ इस दृष्टिकोण मिश्रण कर सकते हैं
[Model threshold] = detect(in1, in2, setts);
अगर आप अभी भी स्पष्ट रूप से in1
और in2
, शामिल हैं और setts
में आराम बंडल करना चाहता था।
OOP दृष्टिकोण
एक अन्य विकल्प एक वर्ग में पता लगाने चालू करने के लिए है। इसका लाभ यह है कि detect
ऑब्जेक्ट के बाद निश्चित नामों के साथ सदस्य चर होते हैं, क्योंकि structs के विपरीत जहां आप फ़ील्ड सेट करते समय टाइपो बनाते हैं तो आप गलत वर्तनी वाले नाम के साथ एक नया फ़ील्ड बनाते हैं।
उदाहरण के लिए
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
तुम यहाँ से कुछ उत्तर प्राप्त हो सकता है उपयोगी: [कैसे MATLAB में समारोह तर्क का नाम/मान युग्म से निपटने के लिए] (http://stackoverflow.com/q/2775263/97160) – Amro
फ़ाइल एक्सचेंज पर 'parseArgs' देखें। मैं इसे हर दिन उपयोग करता हूं: http://www.mathworks.com/matlabcentral/fileexchange/10670-parseargs-simplifies-input-processing-for-functions-with-multiple- विकल्प – slayton
@ स्लेटन - मुझे यह नहीं पता था । मैं इसका परीक्षण करूंगा। धन्यवाद! : डी – Yamaneko