Workspace struct数组输入到Simulink M文件S函数

时间:2012-07-13 19:27:16

标签: matlab struct simulink

我希望我的Simulink Level 2 S功能能够顺序运行一系列测试用例。每个测试用例都会填充包含多个数值数组的结构。 我目前正试图通过两个步骤实现上述目标:

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

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

非常感谢有关正确设置此设置的任何建议。如果绝对必要,也可以使用不同的方法来构建模型。谢谢!

编辑:意识到我可以使用 load 在S函数M文件中导入数据。这适用于我的项目。但是,我仍然有兴趣了解是否存在传统的解决方案。

1 个答案:

答案 0 :(得分:1)

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

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

它也应该这样做。