MATLAB: How to plot function with discontinous range

#linearfunctionplot

Hey, I want to plot P(x) over x=-10:0.5:20
P(x) is defined as
P(x)= x for 0=<x=<1;
= 2-x for 1<=x<=2;
P(x) is zero at other points.
For this I have written following code:
dx=1; xx=1:dx:20;
for i=1:1:20;
fp(1,i)=bilinear(i);
end
plot(xx',fp');
function [ z ] = bilinear( x )
if (1>=x>=0)
z=x;
elseif (2>=x>=1)
z=2-x;
else
z=0;
end
end
But after running this code, I am not getting the triangular plot which I want. Can somebody tell me where is my logic wrong?
Thanks in advance,
Nikhil

Best Answer

1>=x>=0 does not do a range comparison in MATLAB. Instead it tests ((l>=x)>=0) . The l>=x subexpression will return true (1) or false (0) . Both 0 and 1 are >= 0, so the outer comparison will always return true.
Use 0 <= x & x <= 1
And after you have done the assignment, read up on logical indexing.