0

我在 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 block中,输入维度必须与输出维度相同,否则会出错,在这种情况下,输入维度为7,输出维度为2,所以我必须在图表中包含“终结者”块才能使其完美工作,否则我会收到错误消息。

我的问题是,当系统变大时,数组 d 可能包含数百个变量,使用这种方法,这意味着我必须添加数百个“终结者”块才能完成这项工作,这听起来绝对不实用。

你能建议我一个明智的方法来实现这个吗?

http://imgur.com/ib6BTTp

http://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co

更新:实际上我一直在尝试将我的 1 级 S-Function 转换为 2 级,但我被困在函数 Output(block) 调用另一个子函数试图寻找其他线程但无济于事,你介意吗提供相关链接?

我的输出取决于对输入的大量处理,这就是我需要调用子函数来计算然后返回输出值的原因,我可以看到的所有示例都是直接在“函数输出(块)”,就我而言,我认为这是不可能的。

然后我尝试使用 Interpreted Matlab Function 块但由于输出维度与输入维度不同而失败,而且它不支持返回多个输出............ ..

4

1 回答 1

0

Level-1 s-function 支持单输入单输出端口。这些端口必须是向量。但是长度没有限制。输入和输出可以有不同的长度。您可以使用选择器块仅选择相关数据。您不需要在输出中使用 Bus。

从输出调用其他子函数也没有限制。如果您的子函数不在同一个文件中,则它必须在路径中或当前目录中。

如果您的 MATLAB 代码与 MATLAB Function 模块兼容,我建议使用该模块。设置和使用更简单。

于 2013-07-17T13:55:58.833 回答