Определить кусочную функцию с тремя переменными - PullRequest
3 голосов
/ 26 января 2012

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

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

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

Ответы [ 2 ]

1 голос
/ 26 января 2012

Следующее создает анонимную функцию с уравнением, которое вы описали выше

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

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

y = f(tData,xData,yData);

Если это сложнее, то это должна быть подфункция , вложенная функция или частная функция .

1 голос
/ 26 января 2012

Если я правильно понимаю, нужно сделать 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 с.Или в случае двух переменных - 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
...