diff --git a/code/classes/SCDclass_algo.m b/code/classes/SCDclass_algo.m index df9ccb77fe74f9572f11299f965617adbbcee25e..468a7941312f2b986bc1e9e00e4cdc8cf5be4e0e 100644 --- a/code/classes/SCDclass_algo.m +++ b/code/classes/SCDclass_algo.m @@ -475,8 +475,22 @@ classdef SCDclass_algo %% MDS container methods forwarders function obj = addparameter(obj, param) - obj.mdscontainer=obj.mdscontainer.addparameter(param); - obj.mdscontainer=obj.mdscontainer.bindlastparameter(obj.modelname, obj.datadictionary, obj.exportedtps); + % bind parameter(s) to algoobj's name, dictionary and last + % exported tp + + % assume this parameter is bound to last exported tp on the list + if ~isempty(obj.exportedtps), tpname = obj.exportedtps{end}; + else, tpname = ''; + end + + for ii=1:numel(param) + param(ii).bind(obj.modelname, obj.datadictionary, tpname); + end + obj.mdscontainer=obj.mdscontainer.addparameter(param); + end + + function obj = bindparameters(obj) + obj.mdscontainer=obj.mdscontainer.bindparameters(obj.modelname, obj.datadictionary, obj.exportedtps); end function obj = printparameters(obj) @@ -622,6 +636,7 @@ classdef SCDclass_algo % an algorithm block diagram % should pass ctrl-d (instandalone opening) % after this call + obj.bindparameters; % bind mds parameters obj.updatetemplatetp; obj.buildworkspacetpstruct; SCDconf_setConf('sim'); diff --git a/code/classes/SCDclass_expcode.m b/code/classes/SCDclass_expcode.m index 17dc92ba8d2d0de377ddcb3481480c0a960924c3..f69343e70e5df5d845c9b398be0ca2d67d39b72a 100644 --- a/code/classes/SCDclass_expcode.m +++ b/code/classes/SCDclass_expcode.m @@ -583,7 +583,6 @@ classdef SCDclass_expcode D = digraph(A); % directed graph % topological sorting, maintaining index order where possible isort = toposort(D,'Order','stable'); - obj.algoobjlist = obj.algoobjlist(isort); % sort the init obj list end diff --git a/code/classes/SCDclass_mdsobjcontainer.m b/code/classes/SCDclass_mdsobjcontainer.m index 7a550b510bd75da2888844a9f2bba453fa054207..fd1b6b9102c7736e620e592857b0ae9369da45c0 100644 --- a/code/classes/SCDclass_mdsobjcontainer.m +++ b/code/classes/SCDclass_mdsobjcontainer.m @@ -29,13 +29,9 @@ classdef SCDclass_mdsobjcontainer end function obj = addparameter(obj, param) - % Adds a parameter object - if obj.numparams==0 - obj.mdsparams=param; - else - obj.mdsparams=[obj.mdsparams; param]; - end - obj.numparams=obj.numparams+1; + % Adds one or more parameter objects to list of params + obj.mdsparams = [obj.mdsparams; param]; + obj.numparams = obj.numparams + numel(param); end function obj = printparameters(obj) @@ -64,6 +60,7 @@ classdef SCDclass_mdsobjcontainer end function obj = bindparameters(obj, modelname, datadictionary, exportedtps) + % bind mds parameters to their model, data dictionary and tunable parameter if obj.numparams>0 for ii=1:obj.numparams obj.mdsparams(ii)=obj.mdsparams(ii).setmodelname(modelname); @@ -76,18 +73,7 @@ classdef SCDclass_mdsobjcontainer end end end - - function obj = bindlastparameter(obj, modelname, datadictionary, exportedtps) - if obj.numparams>0 - obj.mdsparams(end)=obj.mdsparams(end).setmodelname(modelname); - obj.mdsparams(end)=obj.mdsparams(end).setdatadictionary(datadictionary); - if numel(exportedtps)>0 - obj.mdsparams(end)=obj.mdsparams(end).setparamstructure(exportedtps{end}); - end - end - - end - + function obj = addwavegen(obj, wavegen) % adds a wavegen object if obj.numwavegens==0 diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m index 8050f10b875315d76556bd04ee4696f0f329aca4..e0bb0989b7221bbe2673e5fd8e7dcc81e32aec1f 100644 --- a/code/classes/SCDclass_mdspar.m +++ b/code/classes/SCDclass_mdspar.m @@ -226,6 +226,12 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous end + function obj = bind(obj,modelname,datadictionary,exportedtp) + obj.setmodelname(modelname); + obj.setdatadictionary(datadictionary); + obj.setparamstructure(exportedtp); + end + function out = gettargetparam(obj) out = obj.modelparam; end @@ -262,7 +268,6 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous obj.datadictionary = ddname; end end - end methods