0

我有这个功能

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

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

该函数在此范围内的所有有效值 a 和 b 处是连续的。(真的!你自己试试吧!)但我不确定如何在 Simulink 中评估它。min(a*a,b*b)/b问题是b=0我无法弄清楚如何以一种可以评估函数的两个“分支”并取最小值或最大值(例如'希望避免陷入诸如有条件执行的子系统之类的事情。

有谁知道我该怎么做?

4

2 回答 2

2

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

在此处输入图像描述

或使用 if 动作块: 在此处输入图像描述

于 2012-04-18T14:30:24.727 回答
0

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

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

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

于 2012-04-18T02:01:42.937 回答