0

我需要一个涉及一些简单数学计算的matlab simulink块。作为第一步,我制作了一个块,它从常量块中获取输入并在输出端口中生成它。我直接从matlab示例中获取代码。它是2级c sfunction 这里是 mdlouputs 函数

static void mdlOutputs(SimStruct *S, int_T tid)
{
    int_T element;
    int_T portWidth = ssGetInputPortWidth(S,0);
    InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
    real_T *y = ssGetOutputPortSignal(S,0);

    for (element=0; element<portWidth; element++) {
        y[element] = *uPtrs[element];
    }


}

但我从街区得到奇怪的输出

这是 我期望输出等于输入的结果

when const block(input) is 1  output is 1.875
                           2            2
                           3            2.125
                           10           2.563  etc.

我无法弄清楚这个问题

4

1 回答 1

0

确保您在 mdlInitializeSizes 中正确设置了 ssSetInputPortDirectFeedThrough。在您的情况下,它似乎应该是

ssSetInputPortDirectFeedThrough(S, 0, 1)

否则 uPtrs 会给你胡言乱语。

菲尔。

于 2013-03-17T04:56:26.173 回答