我在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://imageshack.us/content_round.php?page=done&id=4tHclZ2klaGtl66S36zY2KfO5co
更新:其实我一直想我的第1级S-功能转换为2级,但我被困在在功能输出(块)试图调用另一个子功能去寻找其他线索,但无济于事,你介意提供相关链接?
我的输出取决于输入的大量处理,这就是我需要调用子函数以计算并返回输出值的原因,我可以看到的所有示例都直接计算它们的输出“功能输出(块)”,在我的情况下,我认为这是不可能的。
然后我试着使用解释的Matlab函数模块,但由于输出尺寸与输入尺寸不一样,也不支持返回多于一个输出.......... ......