s-作为总线选择器

时间:2015-03-02 14:14:41

标签: matlab structure simulink s-function

我需要了解如何使s函数表现为总线选择器。我有一个结构作为s函数的输入。这个结构有283个元素(未来可能更多),并作为总线提供。我希望s函数输出结构的各个元素(因此就像一个总线选择器)。当然,我可以通过手动输入轻松完成这项工作:

y0[0]=u0->arguemtn;
y0[0]=u0->speedx; % and so on till 283

然后我需要知道所有结构元素的名称,还需要手动输入它们。有没有办法我只需要使用一个简单的for循环并将单个元素输入分配给s函数的输出。

你可以给我提示,因为我只是被困在这里

更新

在建议的答案后,我试着写这样的东西。

int number_of_elements,i;
char field_name;
number_of_elements= mxGetNumberOfFields(u0[0]);

for(i=0;i<number_of_elements;i++)
{
    field_name=mxGetFieldNameByNumber(u0[0], i);
    yi[0]=u0->field_name;
}

但首先我如何将y1 y2 y3等作为循环的一部分。当然,我不能写易,因为它是一个完全不同的变量。这部分我也写在s-function builder的Code Description部分,我觉得这个部分错了。任何人都可以建议我应该做些什么。

另一个重点是我发送的结构包含不同数据类型的字段(如uint8,uint16,single),因此我还需要确定输入数据类型。怎么可能,以及如何在循环中将此数据类型设置为我的输出?

1 个答案:

答案 0 :(得分:1)

看起来你正在使用C代码S-Function,在这种情况下,所有的C-mex API例程都可用。

有各种各样的功能可以查询结构,确定字段名称和操作它们。有关heremxGetField的链接,请参见mxGetNumberOfFields。首先查看并讨论所讨论的示例here