If Loop for specific condition

6 visualizaciones (últimos 30 días)
Fereizqo Sulaiman
Fereizqo Sulaiman el 27 de Feb. de 2018
Respondida: Esha Almas el 4 de Mzo. de 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

Respuesta aceptada

KL
KL el 27 de Feb. de 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 comentario
Fereizqo Sulaiman
Fereizqo Sulaiman el 7 de Mzo. de 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

Iniciar sesión para comentar.

Más respuestas (2)

Andrei Bobrov
Andrei Bobrov el 27 de Feb. de 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 comentario
Jan
Jan el 7 de Mzo. de 2018
Editada: Jan el 7 de Mzo. de 2018
I have to think twice, how I can express "@(x,y)x{:}(y)" in words. :-)

Iniciar sesión para comentar.


Esha Almas
Esha Almas el 4 de Mzo. de 2020
If else by while loop

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by