我想在我的MATLAB路径中有一些文件myfunc.m
,并在模拟开始之前以某种方式自动将其内容加载到MATLAB function block。这样,我可以使用外部编辑器编写这些嵌入式函数,版本控制它们作为独立文件等。
有没有办法以编程方式实现此目的?
我最初的尝试是尝试使用get_param
之类的东西来访问功能块的内容,但我似乎无法获得对代码本身的读/写访问权限。
答案 0 :(得分:2)
如果目标MATLAB Function
块尚不存在,那么您可以按如下方式添加它(参见this SO post):
load_system('eml_lib');
libname = sprintf('eml_lib/MATLAB Function');
add_block(libname,'myModel/myBlockName');
然后,您可以使用Stateflow API修改块的代码:
sf = sfroot();
block = sf.find('Path','myModel/myBlockName','-isa','Stateflow.EMChart');
block.Script = 'Your code goes here';
答案 1 :(得分:1)
首先,您需要将包含m文件的文件夹添加到默认路径。要做到这一点:
(在命令窗口中) 转到文件 - >设置路径 - >添加文件夹(选择包含m文件的文件夹)
现在,您应该在模型属性中使用InitFcn回调来调用您的函数。为此,请打开模型:
(在“模型”窗口中) 转到文件 - >模型属性 - >回调 - > InitFcn 在为InitFcn提供的编辑框中,编写命令来调用你的函数,即myfunc(); 您必须根据您的功能和要求修改此命令。
完成后,将更改应用于“模型属性”窗口并模拟模型。
答案 2 :(得分:0)
我认为model callbacks可能是你想做的事情的一种方式,虽然我自己没有使用过这种技术。