使用三个变量定义分段函数

时间:2012-01-26 15:21:25

标签: function matlab piecewise

我正在尝试根据以下条件在MATLAB中定义一个函数:

If t<0 
     f(t,x,y)=t*(x/y)+1.
else
     f(t,x,y)=-t*(x/y)+1.
end

我找到了一种在一个变量中定义分段函数的方法,但这里我有三个变量。有没有办法在MATLAB中定义这样的函数?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,你需要做3 if秒。 我将向您展示如何为2个变量执行此操作:

If t<0 
  if x<0
     %Case 1
  else
     %Case 2           
  end
else
  if x<0
     %Case 3
  else
     %Case 4
  end

end

或者,您可以使用2 ^ 3 = 8 if - elseif s。或者,在2个变量的情况下 - 2 ^ 2 = 4。

 if t<0 && x<0
     %Case 1      
 elseif t<0 && x>0
     %Case 2     
 elseif t>0 && x>0
     %Case 3
 else
     %Case 4
 end

答案 1 :(得分:1)

以下内容使用您在上面描述的等式创建anonymous function

f = @(t,x,y) -abs(t) * (x/y) + 1;

然后你可以像普通函数一样使用它:

y = f(tData,xData,yData);

如果它比那更复杂,那么它必须是sub-functionnested functionprivate function