工作区结构数组输入到 Simulink M 文件 S 函数

Posted

技术标签:

【中文标题】工作区结构数组输入到 Simulink M 文件 S 函数【英文标题】:Workspace struct array input to Simulink M file S function 【发布时间】:2012-07-13 19:27:15 【问题描述】:

我希望我的 Simulink Level 2 S 函数按顺序运行一系列测试用例。每个测试用例填充一个包含多个数值数组的结构。 我目前正在尝试分两步实现上述目标:

第 1 步:使用 M 文件生成测试用例,作为结构数组保存到 Workspace 第 2 步:使用 Level 2 M 将工作区中的结构数组读取到我的模型中 文件 S 函数来处理测试用例。

第 2 步对我来说是有问题的,因为我无法找到让 S-Function 块接受来自工作区的结构数组变量作为输入的方法。我想尝试避免使用 simin 方法(另一个 *** 讨论,here),因为它似乎需要将整个结构表示为单个数据列,并且我想保持结构完整。还尝试使用带有结构数组作为变量名的常量块,但这会返回块的“blockname 参数值的无效设置”。

对于正确设置此设置的任何建议,我们将不胜感激。如果绝对必要,也可以使用不同的方法来构建模型。谢谢!

编辑:意识到我可以使用 load 在 S 函数 M 文件本身中导入数据。这适用于我的项目。但是,我仍然有兴趣知道是否存在针对此问题的常规解决方案。

【问题讨论】:

【参考方案1】:

如果您只想访问工作区,我会考虑在您的 M 文件 S-function 中使用 evalin(caller,'expression')

mystruct = evalin('base','MyStructFromWorkspace');
/* (process mystruct) */

它也应该可以解决问题。

【讨论】:

以上是关于工作区结构数组输入到 Simulink M 文件 S 函数的主要内容,如果未能解决你的问题,请参考以下文章

matlabm文件中如何调用simulink模块

如何把MATLAB中的数据读入到SIMULINK中

怎么使用m函数获取Simulink模型运行结果参数

怎么把M文件导入Simulink

如何将 simulink 中的数组结构提供给自定义 C 代码函数?

各位大神,MATLAB中如何将编写M函数文件与Simulink之间相互调用,小弟刚学不久,求指点。最好能详细一点。