Need help with plotting a complicated for loop

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

 Accepted 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

2 Comments

Your funtion works properly and shows the correct values and figure, but question I posted is intending on the user utililzing for/while loops.
function y=f(x)
for i=1:length(x)
if x(i)>2
y(i)=x(i)^2;
else
y(i)=2*x(i);
end
end
xlabel 'x'
ylabel 'f(x)'
title('Unit Exam 4, Problem 6')
plot(x,y,'k*')
end

Sign in to comment.

More Answers (0)

Categories

Find more on Programming in Help Center and File Exchange

Products

Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!