If Loop for specific condition

6 views (last 30 days)
Fereizqo Sulaiman
Fereizqo Sulaiman on 27 Feb 2018
Answered: Esha Almas on 4 Mar 2020
Hello, i've written the following script in MATLAB:
i = 1:0.5:50;
for t = [-5:0.5:50]
if t<10
v = 11.*t.^2 - 5.*t;
elseif t<20.5 && t>10
v = 1100-5.*t;
elseif t<30.5 && t>20
v = 50.*t + 2.*(t-20).^2;
elseif t>30
v = 1520.*exp(-0.2.*(t-30));
else
v = 0;
end
end
fprintf('value of v: %d\n', v);
I want to get value of v in every t condition First condition, t < 10 Second condition, 10<t<20 Third condition, 20<t<30 Forth condition, t>30 and if none of them, the value of v is 0 Thanks for your help

Accepted Answer

KL
KL on 27 Feb 2018
is it a homework? should you really use for loop and if-else statements?
I suppose yes. In that case, you need to store your calculated v after every iteraton. For example,
t = -5:0.5:50; %here you define t
and you may want to store v for every t, so pre-allocate v for the same size now,
v = zeros(size(t));
now, v is full of zeros. Fill it up inside your loop. It's always wise to use a indexing variable as for-loop counter,
for indx=1:numel(t)
if(t(indx) <= condition)
v(indx) = some equation
elseif ...
...
end
end
get the idea?
  1 Comment
Fereizqo Sulaiman
Fereizqo Sulaiman on 7 Mar 2018
No, i am trying to learn matlab by myself from a book then get stuck with this exercise. I understand, thanks for your help

Sign in to comment.

More Answers (2)

Andrei Bobrov
Andrei Bobrov on 27 Feb 2018
t = -5:0.5:50;
tt = [-inf,10,20,30,inf];
f = {@(t)11*t.^2 - 5*t;
@(t)1100-5*t;
@(t)50*t + 2*(t-20).^2;
@(t)1520.*exp(-.2*(t-30))};
ii = discretize(t,tt);
v = arrayfun(@(x,y)x{:}(y),f(ii),t(:));
  1 Comment
Jan
Jan on 7 Mar 2018
Edited: Jan on 7 Mar 2018
I have to think twice, how I can express "@(x,y)x{:}(y)" in words. :-)

Sign in to comment.


Esha Almas
Esha Almas on 4 Mar 2020
If else by while loop

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!