Load code for a MATLAB function block at Simulink runtime

前端 未结 3 1807
名媛妹妹
名媛妹妹 2021-01-14 01:14

I would like to have some file, myfunc.m, in my MATLAB path and somehow load its contents into a MATLAB function block automatically just before the simulation

相关标签:
3条回答
  • 2021-01-14 02:06

    If the target MATLAB Function block doesn't already exist then you can add it as follows (see this SO post):

    load_system('eml_lib');
    libname = sprintf('eml_lib/MATLAB Function');
    add_block(libname,'myModel/myBlockName');
    

    You can then modify the block's code using the Stateflow API:

    sf = sfroot();
    block = sf.find('Path','myModel/myBlockName','-isa','Stateflow.EMChart');
    block.Script = 'Your code goes here';
    

    See also this post on MATLAB Answers.

    0 讨论(0)
  • 2021-01-14 02:06

    I am thinking that model callbacks may be a way to do what you want, though I have not used this technique myself.

    0 讨论(0)
  • 2021-01-14 02:10

    First, you will need to add the folder containing the m-file to the default path. To do this:

    (In the Command window) Go to File -> Set Path -> Add Folder (choose the folder containing the m-file)

    Now, you should use the InitFcn callback in the model properties to call your function. To do this, open the model:

    (In the Model window) Go to File -> Model Properties -> Callbacks -> InitFcn In the edit box provided for the InitFcn, write the command to call your function i.e. myfunc(); You will have to modify this command as per your function and requirements.

    Once done, apply the changes to the Model Properties window and simulate the model.

    0 讨论(0)
提交回复
热议问题