我需要一个matlab simulink块,它涉及一些简单的数学计算。作为第一步,我创建了一个块,它从一个常量块中获取输入并在输出端口生成它。我直接从matlab示例中获取代码。它是 2级功能 这是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.
我无法弄清楚问题
答案 0 :(得分:0)
确保在mdlInitializeSizes中正确设置了ssSetInputPortDirectFeedThrough。在你的情况下,它似乎应该是
ssSetInputPortDirectFeedThrough(S, 0, 1)
否则uPtrs会给你乱码。
菲尔。