Simulink数值评估,以防止溢出

时间:2012-04-17 18:11:42

标签: matlab simulink

我有这个功能

f(a,b) = { 
            a*a/b   if a < b,
            b       if a >= b 
         }

为a和b的值定义,介于0和1之间。

该范围内的a和b的所有有效值都是连续的。 (真的!亲自尝试一下!)但我不确定如何在Simulink中对它进行评估。问题是我无法弄清楚如何以一种我可以评估函数的“叉”的方式来重述它,并采用最小值或最大值(例如min(a*a,b*b)/b)而不进行除零错误b=0,我想避免陷入有条件执行的子系统之类的事情。

有谁知道我会怎么做呢?

2 个答案:

答案 0 :(得分:2)

你有一些奇怪的限制。既然你坚持评估两个分叉并取两个分钟的最小值,唯一的解决方案是不要除以零,而是用足够小的数字来避免错误(例如eps)。

enter image description here

或if动作块: enter image description here

答案 1 :(得分:0)

我认为最简单的方法是使用MATLAB function block。你可以这样编码,

function retVal = myfunc(a, b)
   if (a < b)
     retVal = a*a/b;
   else
     retVal = b;
   end
end

这将创建一个具有2个输入和1个输出的块。我不确定你是如何确保a,b \ in [0,1],但只要满足限制就行。

相关问题