Tổ chức với một struct
Bạn có thể nhập một struct
mà có các thông số như đó là lĩnh vực.
Ví dụ một cấu trúc với các lĩnh vực
setts.TrainNeg
.TrainPos
.nf
.nT
.factors
.removeEachStage
.applyEstEachStage
.removeFeatures
Bằng cách đó khi bạn cài đặt các trường rõ ràng những gì lĩnh vực này là, không giống như một cuộc gọi chức năng mà bạn cần phải nhớ thứ tự của các tham số.
Sau đó gọi hàm của bạn trở nên
[Model threshold] = detect(setts);
và định nghĩa chức năng của bạn sẽ là một cái gì đó giống như
function [model, threshold] = detect(setts)
Sau đó chỉ cần thay thế các lần xuất hiện của ví dụ param
với setts.param
.
cách tiếp cận hỗn hợp
Bạn cũng có thể kết hợp phương pháp này với một hiện tại của bạn nếu bạn thích, ví dụ
[Model threshold] = detect(in1, in2, setts);
nếu bạn muốn vẫn rõ ràng bao gồm in1
và in2
, và bó phần còn lại vào setts
.
phương pháp OOP
lựa chọn khác là để biến phát hiện vào một lớp. Lợi ích của việc này là một đối tượng detect
sau đó sẽ có các biến thành viên với các tên cố định, trái ngược với các cấu trúc nếu bạn tạo lỗi đánh máy khi thiết lập trường, bạn chỉ cần tạo một trường mới với tên sai chính tả.
Ví dụ
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
bạn có thể tìm thấy một số các câu trả lời từ đây hữu ích: [Làm thế nào để đối phó với các cặp tên/giá trị của các đối số hàm trong MATLAB] (http://stackoverflow.com/q/2775263/97160) – Amro
xem 'parseArgs' trên trao đổi tệp. Tôi sử dụng nó mỗi ngày: http://www.mathworks.com/matlabcentral/fileexchange/10670-parseargs-simplifies-input-processing-for-functions-with-multiple-options – slayton
@slayton - Tôi không biết điều này . Tôi sẽ kiểm tra nó. Cảm ơn bạn! : D – Yamaneko