我在S-function文档中读到"S-function level-1 supports vector inputs and outputs. DOES NOT support multiple input and output ports"。
第二句话是否意味着输入和输出维度必须相同?
我一直在使用S-function level-1来做以下事情:
[a1, b1] = choose_cells(c, d);其中a1和b1是输出,c和d是输入。所有的变量都只有一个值,除了d是一个有6个值的数组。
参考附图,我们都知道在S-function块中,输入尺寸必须与输出尺寸相同,否则我们会得到错误,在这种情况下,输入尺寸是7,而输出尺寸是2,所以我必须在图中包含"Terminator“块才能完美地工作,否则,我会得到一个错误。
我的问题是,当系统变得更大时,数组d可能包含数百个变量,使用这种方法,这意味着我必须添加数百个"Terminator“块才能完成这项工作,这听起来肯定不实用。
你能给我一个实现这一点的明智方法吗?
http://imgur.com/ib6BTTp
http://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co
更新:实际上我一直在尝试将我的level-1 S-function转换为level-2,但我在函数输出(Block)调用另一个子函数时遇到了问题,试图寻找其他线程,但没有用,您介意提供相关链接吗?
我的输出依赖于大量的输入处理,这就是为什么我需要调用子函数来计算然后返回输出值的原因,我看到的所有例子都是直接在"function Output(block)“中计算他们的输出,在我的例子中,我认为这是不可能的。
然后我尝试使用解释的Matlab函数块,但由于输出尺寸与输入尺寸不同而失败,而且它不支持返回多个输出................
发布于 2013-07-17 21:55:59
1级s-函数支持单输入和单输出端口。这些端口必须是矢量。但对长度没有限制。输入和输出可以有不同的长度。您可以使用选择器块仅选择相关数据。您不需要在输出中使用Bus。
对于从输出中调用其他子函数也没有限制。如果您的子函数不在同一文件中,则必须在path或当前目录中。
如果您的MATLAB代码与MATLAB函数块兼容,我建议您使用该块。它的设置和使用更简单。
https://stackoverflow.com/questions/17696325
复制相似问题