2012-01-26 4 views
3

я пытаюсь определить функцию в MATLAB в соответствии со следующими условиями:Определим функцию кусочно с тремя переменными

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

Я нашел способ, чтобы определить функцию кусочно в одной переменной, но здесь у меня есть три переменные. Есть ли способ определить такую ​​функцию в MATLAB?

+1

Я смущен, почему вам нужна кусочная функция для этого. Разумеется, функция «f (t, x, y) = -abs (t) * (x/y) + 1' удовлетворяет условиям? –

ответ

1

Следующая создает anonymous function с уравнением вы описали выше

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

Затем вы можете использовать его как обычную функцию:

y = f(tData,xData,yData); 

Если это гораздо сложнее, чем это, то он должен быть sub-function, nested function или private function.

1

Если я правильно понял, вам нужно сделать 3 if s. я покажу вам, как сделать это для 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 с. Или, в 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 
Смежные вопросы