【发布时间】:2013-03-17 12:56:26
【问题描述】:
我需要一个涉及一些简单数学计算的 matlab simulink 块。作为第一步,我制作了一个块,它从常量块中获取输入并在输出端口中生成它。我直接从 matlab 示例中获取代码。它是二级c函数 这是 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.
我无法解决问题
【问题讨论】:
-
您的输入数据类型是什么?此代码应该是双精度才能按预期工作。
-
我看不出 mdlOutputs 有什么问题。下一步是使用调试器或此函数中的简单打印语句对其进行调试,以查看您是否正确接收输入。