我试图在包含两个方程式的MATLAB函数文件中写入,这两个方程式将在两者之间切换,基于时间输入的相等性。
即。
if vc(t) <= |vt*cos(2*pi*f*t)|
Execute Equation 1
if vc(t) > |vt*cos(2*pi*f*t)|
Execute Equation 2
我希望函数能够以第一个等式(时间= 0)开始,一旦时间达到某个值,就切换到第二个等式。这可能吗?
答案 0 :(得分:0)
如果两个方程之间的差异基本上是调用两个不同的函数,那么可以使用函数句柄优雅地完成这个。
如果在第一种情况下你需要
some_output=some_function1(var1,var2,var3)
在第二种情况下你需要
some_output=some_function2(var1,var2,var3)
然后你可以做
if vc(t) <= |vt*cos(2*pi*f*t)|
right_hand_side=@(var1,var2,var3) some_function1(var1,var2,var3);
else
right_hand_side=@(var1,var2,var3) some_function2(var1,var2,var3);
end
some_output=right_hand_side(var1,var2,var3); %right_hand_side is a function handle to an anonymous function
如果你有一个简单的表达式而不是一个函数,这也会有用,只需说出@(var1,var2,var3) 2*var1.*var2./var3;