Piecewise function plot in Matlab

You can always concatenate the data from your two functions before plotting. However, here's a solution similar to that of @user1772257 that uses logical indexing to avoid extra multiplication, addition, and also sets values outside of both ranges to NaN:

function y = f(t)
t1 = (t>0 & t<pi);    % (0, pi)
t2 = (t>=-pi & t<=0); % [-pi, 0]
y = NaN(size(t));     % Pre-allocate and set for [-Inf, -pi), [pi, Inf]
y(t1) = 3*t(t1);
y(t2) = -3*t(t2);

Note that this scheme is careful to evaluate each piece only at values for which it is valid. This can be useful if more complex functions are computationally expensive or generate errors or extrema at out-of-range values. If you want it periodic, then you'll need to add mod in various places. However, if you know that your input will always be $[-\pi, \pi)$, or don't care, then the following optimization can be used

function y = f(t)
t1 = (t>0 & t<pi);
y(t1) = 3*t(t1);
t1 = ~t1;
y(t1) = -3*t(t1);

Then plot with

t = -pi:0.01:pi;
plot(t,f(t))

You also could consider adding the line y = zeros(size(t)); in the second function before the pieces are evaluated to avoid occasional memory reallocation in some cases (probably not costly in current Matlab version unless the function has many pieces and/or is called many times).


function y=f(t)
    y1=(-3*t).*(-pi<=t & t<=0);
    y2=(3*t).*(0<t & t<pi);
    y=y1+y2;

end

From matlab workspace call function and plot by the following

 x=-pi:.01:pi;
 y=f(x);
plot(x,y);