Level1 Matlab S-Function - "Work Vectors"

Level1 Matlab S-function - "Work Vectors"

我在模型中多次使用 Matlab 1 级 S-Function,但不想相互覆盖 global/persistent 个变量。

一个解决方案可能是工作向量,但关于 1 级 S-Function 工作向量的文档很少。我从哪里获得 ssSetNumRWork 函数的 SimStruct S?

谢谢!

正确的做法是将代码升级为 2 级 S-Function,这应该不难。

1 级 m 代码 S 函数没有工作向量(而且所有 ssGet/Set 函数都是用于 c 代码 S 函数)。不再推荐它们的一个原因是它们的功能有限——如果不使用 Level 2 功能,就没有解决这个问题的好方法。

您可以使用持久变量(在 1 级 S-Function 的每个子函数中)。但是全局变量的意义在于使它们随处可见,因此尝试使用它们而不想让每个人都看到它们似乎毫无意义。 (注意:无论如何你都不应该使用全局变量。)

话虽如此,如果您真的想使用 Level-1 功能,那么在每个 S-Function 中您可以使用 getappdata and setappdata 函数来充当工作向量存储。但是,如果您要解决这个问题,无论如何升级到 2 级 S-Function 都会更容易。