MATLAB: Need help with plotting a complicated for loop

for loopif statementMATLABplotting

Create a function called f that receives an input vector and satisfies the following criteria:
For values of x > 2, f(x) = x^2
For values of x ≤ 2, f(x) = 2x
Plot your results for values of x from –3 to 5. The plot should have a title, and both the x and y axis should be labeled.
I've got my function written and it works, but when I run it, it only plots values for when f(x)=x^2. I know I have a small mistake somewhere, and I'd appreciate if someone could help me out. Here's what I've got so far:
function y=f(x)
for i=x
if i>2
y=x.^2;
elseif i<=2
y=2*x;
end
end
xlabel 'x'
ylabel 'f(x)'
title('Unit Example 4, Problem 6')
plot(x,y,'k*')
end

Best Answer

function y=f(x)
for i=x
if i>2
y=x.^2;%you are reassigning y every iteration, your y will be the last one
elseif i<=2
y=2*x;
end
end
xlabel 'x'
ylabel 'f(x)'
title('Unit Exam 4, Problem 6')
plot(x,y,'k*')
end
It is actually much easier without a for-loop.
function y=f(x)
y=zeros(size(x));
y(x>2)=x(x>2).^2;
y(x<=2)=x(x<=2)*2;
xlabel 'x'
ylabel 'f(x)'
title('Unit Exam 4, Problem 6')
plot(x,y,'k*')
end