【问题标题】:Define a piecewise function with three variables定义具有三个变量的分段函数
【发布时间】:2012-01-26 15:21:24
【问题描述】:

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

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

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

【问题讨论】:

  • 我很困惑为什么你需要一个分段函数。函数f(t,x,y) = -abs(t) * (x/y) + 1 肯定满足条件吗?

标签: function matlab piecewise


【解决方案1】:

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

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

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

y = f(tData,xData,yData);

如果比这更复杂,那么它需要是sub-functionnested functionprivate function

【讨论】:

    【解决方案2】:

    如果我理解正确,你需要做 3 ifs。 我将向您展示如何为 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-elseifs。或者,在 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
    

    【讨论】:

      猜你喜欢
      • 2021-05-29
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2016-03-16
      • 1970-01-01
      • 2011-12-06
      相关资源
      最近更新 更多