If Loop for specific condition

7 Ansichten (letzte 30 Tage)
Fereizqo Sulaiman
Fereizqo Sulaiman am 27 Feb. 2018
Beantwortet: Esha Almas am 4 Mär. 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

Akzeptierte Antwort

KL
KL am 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 Kommentar
Fereizqo Sulaiman
Fereizqo Sulaiman am 7 Mär. 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Andrei Bobrov
Andrei Bobrov am 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 Kommentar
Jan
Jan am 7 Mär. 2018
Bearbeitet: Jan am 7 Mär. 2018
I have to think twice, how I can express "@(x,y)x{:}(y)" in words. :-)

Melden Sie sich an, um zu kommentieren.


Esha Almas
Esha Almas am 4 Mär. 2020
If else by while loop

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by