2013-07-17 39 views
0

我在S函数文档中阅读"S-function level-1 supports vector inputs and outputs. DOES NOT support multiple input and output ports"S功能文档“S功能级别1支持矢量输入和输出,不支持多个输入和输出端口”

第二句意思是输入和输出维度必须相同吗?

我已经使用S-功能1级执行以下操作:

[a1, b1] = choose_cells(c, d); 

其中,a1和b1的输出,c和d是输入。所有变量都具有单个值,除了d是具有6个值的数组。

参考附图,我们都知道在S函数块中,输入维度必须是SAME作为输出维度,否则我们会得到错误,在这种情况下,输入维度是7,而输出维度是2,所以我必须在图中包含“Terminator”块以使其完美运行,否则,我会收到错误消息。

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

你能否建议我一个明智的方式来实现呢?

http://imgur.com/ib6BTTp

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

更新:其实我一直想我的第1级S-功能转换为2级,但我被困在在功能输出(块)试图调用另一个子功能去寻找其他线索,但无济于事,你介意提供相关链接?

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

然后我试着使用解释的Matlab函数模块,但由于输出尺寸与输入尺寸不一样,也不支持返回多于一个输出.......... ......

回答

0

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

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

如果您的MATLAB代码与MATLAB功能块兼容,我推荐使用该功能块。设置和使用更简单。