1

我需要知道如何使 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)的字段的结构,因此我还需要确定输入数据类型。这怎么可能以及如何在循环中将此数据类型设置为我的输出?

4

1 回答 1

1

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

有多种功能可用于查询结构、确定字段名称和操作它们。请参阅此处以获取它们的链接,包括mxGetFieldmxGetNumberOfFields。首先查看并完成此处讨论的示例。

于 2015-03-02T23:22:32.390 回答