您看到此错误消息:
'coder.ceval'的输出具有未知类型。封闭式表达式无法评估。通过将“码码ICVAL”的输出分配给具有已知类型的变量来指定输出类型。
当代码生成器无法确定A的输出类型时,会发生此错误消息编码器.CEVAL.
称呼。
使用预期输出类型初始化临时变量。分配输出编码器.CEVAL.
到此变量。
假设您有一个C函数调用cfunctionthatreturnsdouble.
。您要为函数生成C库代码Foo
。代码生成器返回错误消息,因为它无法确定返回类型编码器.CEVAL.
。
功能Foo%#codegen.CallCunction(Coder.CEVAL('cfunctionthatreturnsdouble'));结尾功能CallCunction(〜)结尾
要修复错误,请使用临时变量定义C函数输出的类型。
功能Foo%#codegen.temp = 0;temp = coder.ceval('cfunctionthatreturnsdouble');CallCunction(TEMP);结尾功能CallCunction(〜)结尾
你也可以使用编码器
初始化临时变量。
假设您有一个带有自定义的类放
方法。这个课用使用放
确保对象属性值落在一定范围内的方法。
Classdef.ClassWithSetter.特性预期= []结尾特性(常数)ScalingFactor = 0.001结尾方法功能obj = set.expectedresult(obj,erin)如果erin> = 0 && erin <= 100 erin = erin。* obj.scalingfactor;obj.expectedresult = erin;别的obj.expectedresult = nan;结尾结尾结尾结尾
生成函数的C库代码时Foo
,代码生成器会产生错误消息。输入类型进入放
方法无法确定。
功能Foo%#codegen.obj = classwithsetter;obj.expedresult = coder.ceval('cfunctionthatreturnsdouble');结尾
要修复错误,请使用已知类型初始化临时变量。对于此示例,请使用一个类型的标量级。
功能Foo%#codegen.obj = classwithsetter;temp = 0;temp = coder.ceval('cfunctionthatreturnsdouble');obj.expectedresult = temp;结尾