我需要了解如何使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),因此我还需要确定输入数据类型。怎么可能,以及如何在循环中将此数据类型设置为我的输出?
答案 0 :(得分:1)
看起来你正在使用C代码S-Function,在这种情况下,所有的C-mex API例程都可用。
有各种各样的功能可以查询结构,确定字段名称和操作它们。有关here和mxGetField的链接,请参见mxGetNumberOfFields。首先查看并讨论所讨论的示例here。