If Loop for specific condition
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Fereizqo Sulaiman
le 27 Fév 2018
Réponse apportée : Esha Almas
le 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
0 commentaires
Réponse acceptée
KL
le 27 Fév 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?
Plus de réponses (2)
Andrei Bobrov
le 27 Fév 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 commentaire
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!