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 に答える