"for" loops and branching help
5 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
Matt Fig
on 2 Mar 2011
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)
0 Comments
More Answers (1)
Paulo Silva
on 2 Mar 2011
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
Matt Tearle
on 3 Mar 2011
Yes. Logical indexing > loops + branching. All bow before the logical index!!!
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!