我有这个功能
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
,我想避免陷入有条件执行的子系统之类的事情。
有谁知道我会怎么做呢?
答案 0 :(得分:2)
你有一些奇怪的限制。既然你坚持评估两个分叉并取两个分钟的最小值,唯一的解决方案是不要除以零,而是用足够小的数字来避免错误(例如eps)。
或if动作块:
答案 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],但只要满足限制就行。