0

我在模型中多次使用 Matlab 1 级 S 函数,但不希望相互覆盖全局/持久变量。

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

谢谢!

4

1 回答 1

1

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

1 级 m-code S-Function 没有工作向量(并且所有 ssGet/Set 函数无论如何都用于 c-code S-Function)。不再推荐它们的一个原因是它们的功能有限——如果不使用 2 级功能,就没有很好的解决方法。

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

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

于 2015-07-16T14:09:27.763 回答