4

我想myfunc.m在我的 MATLAB 路径中有一些文件,并在模拟开始之前以某种方式将其内容自动加载到MATLAB 功能块中。这样,我可以使用外部编辑器编写这些嵌入式函数,将它们分别作为独立文件进行版本控制等。

有没有办法以编程方式实现这一目标?

我最初的尝试是尝试使用类似的东西访问功能块的内容get_param,但我似乎无法获得对代码本身的读/写访问权限。

4

3 回答 3

2

如果目标MATLAB Function块尚不存在,则可以按如下方式添加它(请参阅此 SO 帖子):

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';

另请参阅MATLAB Answers 上的这篇文章

于 2014-03-28T07:08:25.770 回答
1

首先,您需要将包含 m 文件的文件夹添加到默认路径。去做这个:

(在命令窗口中)转到文件 -> 设置路径 -> 添加文件夹(选择包含 m 文件的文件夹)

现在,您应该使用模型属性中的 InitFcn 回调来调用您的函数。为此,请打开模型:

(在模型窗口中)转到文件 -> 模型属性 -> 回调 -> InitFcn 在为 InitFcn 提供的编辑框中,编写调用函数的命令,即 myfunc(); 您必须根据您的功能和要求修改此命令。

完成后,将更改应用到“模型属性”窗口并模拟模型。

于 2016-07-12T16:45:44.747 回答
0

我认为模型回调可能是一种做你想做的事的方法,尽管我自己没有使用过这种技术。

于 2012-05-01T15:39:23.643 回答