Set up an OR argument for equation

I am using Matlab to simulate the pounding bwtween structures during earthquake events.
To do this the equation for the pounding force, F, must change depending on the output of another parameter. The conditions are:
F(t) = k*s + c*v(t) when v(t) > 0
F(t) = k*s when v(t) < 0
What is the best way to set this up?
The code for both the equations above is:
fp = (k_inp*(x1-x2-gap)+c_inp*(xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2 when v(t) > 0
fp = (k_inp*(x1-x2-gap) when v(t) < 0
where v(t) = (xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2
Thanks in advance for any replies.

 Respuesta aceptada

Torsten
Torsten el 18 de Mzo. de 2019
Editada: Torsten el 18 de Mzo. de 2019

1 voto

v = (xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2;
if v > 0
fp = (k_inp*(x1-x2-gap)+c_inp*(xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2
else
fp = k_inp*(x1-x2-gap)
end

Más respuestas (2)

Jos (10584)
Jos (10584) el 18 de Mzo. de 2019
Can't you use logical indexing? A simplified example
v = 10:20
q = v > 13 & v < 18
f(q) = 2*v(q)
f(~q) = 30 + v(q)
Jos (10584)
Jos (10584) el 18 de Mzo. de 2019
Simpler, without an if-else:
v = (xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2;
fp = (k_inp*(x1-x2-gap) + (v>0) * c_inp * (xdot_1-xdot_2)).*(sign(x1-x2-gap)+1)/2
% |||||||

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 18 de Mzo. de 2019

Respondida:

el 18 de Mzo. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by