2016-05-03 2 views
0

У меня есть код MATLAB и я как понимаю, как это works.In основной кодаргументы функции MATLAB в моем коде

%Tuning 
tunestruct = {samplefunc,numreps,data_type,MS_criterion}; 
[Xtrain,optk,optsig2,tuningExtras] = tuneSKSC(data,kernel_type,maxk,tunestruct); 

tuneSKC.m начинается с

function [Xtrain,optk,optsig2,extras] = tuneSKSC(datastruct,kernel,maxk,tunestruct) 

Мой вопрос: что is tunestruct? Тогда, data,kernel_type,maxk,tunestruct arguments для функции?

Я приклеил tunestruct.m http://pastebin.com/cFH433Md

+0

Да, это все аргументы функции. Насколько они есть, вам нужно спросить автора. Все, что вы можете сделать, это то, что 'tunestruct' является массивом ячеек' {samplefunc, numreps, data_type, MS_criterion} ' – Suever

+0

@Suever Спасибо, почему автор использует массив ячеек вместо одиночных аргументов? – milenko

+1

Вы должны спросить автора, но одной причиной может быть сбор всей информации об объекте в одной переменной. Это упрощает передачу информации, поскольку вы можете использовать только «tunestruct» вместо 'samplefunc, numreps, data_type, MS_criterion'. Вы можете также использовать для этого структуры. –

ответ

1

tunestruct фактически cell array сделал кучу других переменных.

Ячейка клеток представляет собой тип данных с индексированными контейнерами данных, называемыми ячейками, где каждая ячейка может содержать данные любого типа. Ячейки массивов обычно содержат либо списки текстовых строк, комбинации текста и чисел, либо числовые массивы разных размеров.

Причина в создании массива ячеек вместо того, чтобы передавать эти аргументы в виде отдельных значений каждый раз, состоит в том, что код имеет очень специфический шаблон для обработки этого набора параметров, если они не переданы как аргументы, так как описанные в данном сегменте кода:

if exist('tunestruct','var') 
    if ~iscell(tunestruct) 
     tunestruct = {tunestruct,1};  
    end; 

    if(strcmp(tunestruct{1},'furs')) 
    tunestruct{2} = 1; %furs is deterministic, only one repetition is enough 
    end 

    s1 = ~strcmp(tunestruct{3},'net_unw') && strcmp(tunestruct{4},'Modularity'); 
    if(s1) 
    tunestruct{4} = 'AMS'; %Modularity is used for unweighted network data 
    warning('\nNot possible to use Modularity, using AMS instead...'); 
    end 

end; 
+0

Что заставляет вас думать, что это 'struct'? Похож на массив ячеек для меня. – Suever

+0

Это на самом деле то, что я имел в виду, и там эта строка 'if ~ iscell (tunestruct)' в сегменте кода, который я опубликовал. Прошу прощения за эту глупую ошибку. – nikaltipar

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