我的代码中的MATLAB函数参数

时间:2016-05-03 13:18:52

标签: matlab

我有一个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)

我的问题是什么是tunestruct?那么,data,kernel_type,maxk,tunestruct arguments是函数吗?

我已经粘贴了tunestruct.m http://pastebin.com/cFH433Md

1 个答案:

答案 0 :(得分: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;