"for" loops and branching help

I'm having trouble solving this question: Write the MATLAB statements required to calculate y(t) from the equation y(t) = -3*t^2 + 5 when t>=0
y(t) = 3*t^2 + 5 when t<0
for the values of t between -9 and 9 in steps of .5. Use loops and branches to solve
Heres what i have;
for t = -9:.5:9
if t<0
y=(3*t.^2)+5;
else if t>=0
y=(-3*t.^2)+5;
end
end
end
plot(y,t)
I know Im missing something, like maybe count=0; and count = count + 1 but I've tried it still was unsuccessful

 Accepted Answer

You were close. Here is one way to do what you are trying to do, keeping with the FOR loop and IF statement use.
cnt = 0;
t = -9:.5:9
for ii = t
cnt = cnt + 1;
if ii<0
y(cnt)=(3*ii.^2)+5;
else if ii>=0
y(cnt)=(-3*ii.^2)+5;
end
end
end
plot(y,t)
Here is another way, without the cnt variable.
t = -9:.5:9;
for ii = 1:length(t)
if t(ii)<0
y(ii)=(3*t(ii).^2)+5;
else if t(ii)>=0
y(ii)=(-3*t(ii).^2)+5;
end
end
end
plot(y,t)
Also, here is a more MATLABish way of doing this, for future reference:
t2 = -9:.5:9
idx = t2>=0;
y2(idx) = (-3*t2(idx).^2)+5;
y2(~idx) = (3*t2(~idx).^2)+5;
plot(y2,t2)

More Answers (1)

t=-9:0.5:9;
y=0*t;
y(t<0)=3*t(t<0).^2+5;
y(t>=0)=-3*t(t>=0).^2+5;
Here's another way
t=-9:0.5:9;
y=sign(t).*3.*t.^2+5;
PS: I know the OP wants loops but I couldn't resist :)

2 Comments

Yes. Logical indexing > loops + branching. All bow before the logical index!!!
Yeah, baby, yeah!

Sign in to comment.

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 2 Mar 2011

Community Treasure Hunt

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

Start Hunting!