我收到有关simulink的错误消息"在某些执行路径上没有分配输出参数"

时间:2014-09-10 08:34:22

标签: matlab simulink

在simulink中,我使用“MATLAB函数”块制作了一些模型 但我在这里遇到了错误信息。

这里是代码和错误消息。

function [VTAS,postVTAS]=fcn(mode,initialVTAS,a,t,preVTAS)

if mode == 1
     VTAS = initialVTAS + (a * t) ;
     postVTAS = VTAS;

 elseif mode == 2
     datasize = length(preVTAS);
     lastvalue = preVTAS(datasize);
     VTAS = lastvalue + 0;
     postVTAS = VTAS;

 end

 end

在某些执行路径上未分配输出参数“VTAS”。

功能'MATLAB功能'(#36.25.28),第1行,第26列:

“FCN”

启动诊断报告。

我认为输出“VTAS”没有问题

请告诉我什么是问题。

1 个答案:

答案 0 :(得分:1)

正如编译器告诉您的那样,在某些情况下,没有为VTAS分配输出值。原因是如果mode为1或2,则只为该输出赋值。编译器不知道mode可行的值是什么。要解决此问题,您需要确保在任何和所有情况下都分配了VTAS。

这可以通过例如添加一个else构造,如下所示:

function [VTAS,postVTAS]=fcn(mode,initialVTAS,a,t,preVTAS)

if mode == 1
    VTAS = initialVTAS + (a * t) ;
    postVTAS = VTAS;

elseif mode == 2
    datasize = length(preVTAS);
    lastvalue = preVTAS(datasize);
    VTAS = lastvalue + 0;
    postVTAS = VTAS;

else
    VTAS     = NaN;
    postVTAS = NaN;
end
end

修改

此外,对于else情况,抛出错误将是一个好习惯。这对调试很有帮助。

作为次要注释,对于每种情况,postVTAS等于VTAS,因此从函数返回两者基本上是多余的。