我正在尝试根据以下条件在MATLAB中定义一个函数:
If t<0
f(t,x,y)=t*(x/y)+1.
else
f(t,x,y)=-t*(x/y)+1.
end
我找到了一种在一个变量中定义分段函数的方法,但这里我有三个变量。有没有办法在MATLAB中定义这样的函数?
答案 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-function,nested function或private function。