Умножение на значение истинности обычно работает, а затем вы просто складываете значения вместе:
y = @(x,t)( (t-5).*(t-x).*(x<(t-5)) + (t+x.^2).*(x>=(t-5)) );
Я не могу проверить это сейчас, поскольку у меня нет ноутбука MATLAB, но он должен работать так, как вы хотите.
Ваша настоящая проблема, похоже, связана с тем, что x
и t
имеют разные измерения. Это можно «исправить» с помощью функции meshgrid
, которая создает две матрицы для использования в многомерных функциях:
[X, T] = meshgrid([1:.5:10], [0:.1:10]);
Z = y(X, T); % With y(x,t) as above
Z
теперь является матрицей, содержащей значения y
для различных x
и t
соответственно. Это может быть нанесено на поверхность как surf
:
surf(X, T, Z);