How to solve a function with different ranges

I have a variable that is composed of two functions for different ranges:
alfa_ox = 1/15*C_ox for 0 <= C_ox <= 15
alfa_ox = 1 for C_ox > 15
When I imply this in Matlab, it doesnt consider the second condition (that alfa can't be bigger than 1). How can I solve that?
C_ox = [16;15;7.5;2;7.5;15;15];
if C_ox > 15
alfa = 1
else alfa = 1/15.*C_02
end
Output:
alfa =
1.0667
1.0000
0.5000
0.1333
0.5000
1.0000
1.0000

6 comentarios

Scott MacKenzie
Scott MacKenzie el 15 de Jun. de 2021
What is C_02?
Delia Bosshart
Delia Bosshart el 15 de Jun. de 2021
It is the oxygen concentration so in this context also a varibale
Scott MacKenzie
Scott MacKenzie el 15 de Jun. de 2021
Is it a vector? It might help if you provide the data.
Scott MacKenzie
Scott MacKenzie el 15 de Jun. de 2021
Editada: Scott MacKenzie el 15 de Jun. de 2021
And BTW, your if-expression is an array. That's probably not what is itended.
Delia Bosshart
Delia Bosshart el 15 de Jun. de 2021
Yes it is a vector. I could already solve the problem with the answers provided, thank you.
Scott MacKenzie
Scott MacKenzie el 15 de Jun. de 2021
Editada: Scott MacKenzie el 15 de Jun. de 2021
Sorry for the string of comments here, but your question uses the expression
1/15*C_ox
In your code we see
1/15.*C_02
Please clarify.

Iniciar sesión para comentar.

 Respuesta aceptada

alfa_fcn = @(C_ox) min(C_ox/15,1);
C_ox = [16;15;7.5;2;7.5;15;15];
alfa = alfa_fcn(C_ox)
alfa = 7×1
1.0000 1.0000 0.5000 0.1333 0.5000 1.0000 1.0000
.

Más respuestas (1)

Try
C_ox = [16;15;7.5;2;7.5;15;15];
C_ox(C_ox<=15)=C_ox(C_ox<=15)/15;
C_ox(C_ox>15)=1
C_ox = 7×1
1.0000 1.0000 0.5000 0.1333 0.5000 1.0000 1.0000

Categorías

Más información sobre Guidance, Navigation, and Control (GNC) en Centro de ayuda y File Exchange.

Preguntada:

el 15 de Jun. de 2021

Editada:

el 15 de Jun. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by