S功能文档“S-function level-1支持向量输入和输出。不支持多个输入和输出端口”

时间:2013-07-17 09:40:08

标签: matlab function

我在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块中,输入维度必须是SAME作为输出维度,否则我们会得到错误,在这种情况下,输入维度是7而输出维度是2 ,所以我必须在图表中包含“终结者”块以使其完美地工作,否则,我将收到错误。

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

你能否建议我采用一种明智的方法来实现这个目标?

http://imgur.com/ib6BTTp

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

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

我的输出取决于输入的大量处理,这就是我需要调用子函数来计算然后返回输出值的原因,我能看到的所有例子都是直接在“ function Output(block)“,在我的情况下,我认为这是不可能的。

然后我尝试使用解释的Matlab功能块,但由于输出维度与输入维度不同而失败,也不支持返回多于一个输出........... .....

1 个答案:

答案 0 :(得分:0)

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

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

如果您的MATLAB代码与MATLAB功能块兼容,我建议使用该块。它的设置和使用都比较简单。