2015-06-20 5 views
0

У меня есть очень простой вопрос, но я не выяснить, как решить this.I есть определение функции ниже:Передача параметров в функции Matlab

function model = oasis(data, class_labels, parms) 
% model = oasis(data, class_labels, parms) 
% 
% Code version 1.3 May 2011 Fixed random seed setting 
% Code version 1.2 May 2011 added call to oasis_m.m 
% Code version 1.1 May 2011 handle gaps in class_labels 
% 
% Input: 
% -- data   - Nxd sparse matrix (each instance being a ROW) 
% -- class_labels - label of each data point (Nx1 integer vector) 
% -- parms (do sym, do_psd, aggress etc.) 
% 
% Output: 
% -- model.W - dxd matrix 
% -- model.loss_steps - a binary vector: was there an update at 
%   each iterations 
% -- modeo.parms, the actual parameters used in the run (inc. defaults) 
% 
% Parameters: 
% -- aggress: The cutoff point on the size of the correction 
%   (default 0.1) 
% -- rseed: The random seed for data point selection 
%   (default 1) 
% -- do_sym: Whether to symmetrize the matrix every k steps 
%   (default 0) 
% -- do_psd: Whether to PSD the matrix every k steps, including 
%   symmetrizing them (defalut 0) 
% -- do_save: Whether to save the intermediate matrices. Note that 
%   saving is before symmetrizing and/or PSD in case they exist 
%   (default 0) 
% -- save_path: In case do_save==1 a filename is needed, the 
%   format is save_path/part_k.mat 
% -- num_steps - Number of total steps the algorithm will 
%   run (default 1M steps) 
% -- save_every: Number of steps between each save point 
%   (default num_steps/10) 
% -- sym_every: An integer multiple of "save_every", 
%   indicates the frequency of symmetrizing in case do_sym=1. The 
%   end step will also be symmetrized. (default 1) 
% -- psd_every: An integer multiple of "save_every", 
%   indicates the frequency of projecting on PSD cone in case 
%   do_psd=1. The end step will also be PSD. (default 1) 
% -- use_matlab: Use oasis_m.m instead of oasis_c.c 
%  This is provided in the case of compilation problems. 
% 

Я хочу, чтобы использовать эту функцию, но Я не понимаю, как установить параметры или использовать значения по умолчанию. Что такое переменная parms в этом случае, это объект, который содержит все остальные переменные? Могу ли я сделать что-то вроде python как синтаксис, где мы помещаем имя параметра плюс значение? Например:

model = oasis(data_example, labels_example, agress = 0.2) 

Кроме того, если я правильно понял, я получаю два объекта в выходном, который является моделью и Modeo, поэтому мне нужно, чтобы сделать этот вызов, чтобы получить все содержимое этой функции возвращает?

[model,modeo] = oasis(data_example, labels_example, ?(parms)?) 

ответ

0

Из документации выше, я не знаю, какой из них является правильным, но есть два распространенных способа для необязательных параметров в MATLAB.

пар значений параметров:

model = oasis(data, class_labels, 'do_sym',1,'do_psd',0) 

: Структуры

params.do_sym=1 
params.do_psd=0 
model = oasis(data, class_labels, params) 

Вероятно, один из этих двух вариантов является правильным.

+0

Я решаю проблему создания структуры с параметрами. И для вывода в тексте была опечатка, как прокомментировал Тамаш – Mike

1

Из определения вашей функции кажется, что params - это просто заполнитель для параметров. Как правило, сами параметры передаются в виде пар входов в виде:

model = oasis(data, class_labels, 'do_sym',do_symValue, 'do_psd', do_psdValue,...)

где do_symValue и do_psdValue являются значения, которые вы хотите передать в качестве соответствующих параметров.

Что касается возвращаемого значения функций, он возвращает один struct с элементами W, loss_steps и parms. Я считаю, что то, что вы считали вторым выходом (modelo), - это просто опечатка в тексте - по крайней мере, на основе определения функции.

Смежные вопросы