MATLAB: Kindly help me correct the code. I want the s output to be same length as the output

wedam nyaaba

f=60 ;
gg=tan(f);
H=6;
l=[-6:0.1:20];
x=l'
if (l<0)
s=0
end
if (l>=0&l<(H/gg))
s=l.*gg
end
if (l>=(H/gg))
s=H
end
cc=length(x)
ll=length(s)
plot(l,s,'r-')
Hello. I want to write this code such that the length of x and s are thesame so I can use it to draw lines. I have tried a couple of options but can't seem to figure it out, I only get one output of s. can anybody help me out. thank you.

Best Answer

I suspect you mean the output to be the same length as the input. The easiest way is to use logical indexing, essentially adding two vectors that have the defined values over the ranges you want them to, and zero elsewhere. This produces the output vector you want.
This works:
l=[-6:0.1:20];
f=60 ;
gg=tan(f);
H=6;
sfcn = @(l,f,gg,h) [((l>=0) & (l<(H/gg))).*(l*gg) + (l>=(H/gg)).*h];
s = sfcn(l,f,gg,H);
figure(1)
plot(l, s, '-r')