我需要知道如何使 s-function 充当总线选择器。我有一个结构作为 s-function 的输入。这个结构有 283 个元素(将来可能更多)并且作为总线提供。我希望 s-function 输出结构的各个元素(因此就像一个总线选择器)。当然,我可以通过手动输入轻松做到这一点:
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 等成为循环的一部分。当然我不能写 yi,因为它是一个完全不同的变量。这部分也是我在 s-function builder 的代码描述部分中写的,我认为这又是错误的。任何人都可以建议我到底应该做什么。
另一个重要的一点是,我正在发送具有不同数据类型(如 uint8、uint16、single)的字段的结构,因此我还需要确定输入数据类型。这怎么可能以及如何在循环中将此数据类型设置为我的输出?