Skip to content
Snippets Groups Projects
Commit 27d0f612 authored by Federico Felici's avatar Federico Felici
Browse files

Allow function handles as init functions

parent 1e1c11b6
No related branches found
No related tags found
No related merge requests found
......@@ -239,14 +239,28 @@ classdef SCDclass_algo
function callinits(obj)
if(~isempty(obj.stdinits))
for(ii=1:numel(obj.stdinits))
% call initialization functions that set fixed parameters
if ~isempty(obj.stdinits)
for ii=1:numel(obj.stdinits)
fprintf('Calling init function ''%s'', assigning its output to ''%s'' ...\n',char(obj.stdinits{ii}{1}),char(obj.stdinits{ii}{2}));
initcmd=sprintf('[fp]=%s(obj);', char(obj.stdinits{ii}{1}));
eval(initcmd);
Simulink.data.assigninGlobal(obj.modelname, char(obj.stdinits{ii}{2}), fp);
initfunction = obj.stdinits{ii}{1};
targetname = obj.stdinits{ii}{2};
fprintf('Calling init function ''%s'', assigning its output to ''%s'' ...\n',...
char(initfunction),char(targetname));
if ischar(initfunction)
initcmd=sprintf('%s(obj);', initfunction);
value = eval(initcmd);
elseif isa(initfunction,'function_handle')
value = initfunction(obj); % call function handle directly
else
error('initfunction must be a string or a function handle')
end
% assigns in base workspace or datadictionary depending
% on where the target variable is
Simulink.data.assigninGlobal(obj.modelname, targetname, value);
end
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment