How schould the matlab function be to hold an signal between two values?

7 visualizaciones (últimos 30 días)
I have a rising signal of a temperature. As long as the value has not reached a limit, e.g. 90%, "0" is to be displayed. If the value is reached, 1 is displayed. After that, the value can drop to e.g. 30% until "0" is output again. This is to achieve that the value remains between the two limits by the output of 0 and 1.
It is about a Simulink model and the code for it should be in a matlab-fct block.
I tried a lot with if-functions but i dont get it.

Respuesta aceptada

Les Beckham
Les Beckham el 7 de Oct. de 2022
Editada: Les Beckham el 7 de Oct. de 2022
Perhaps something like this in a MATLAB Function block?
function out = determineStatus(in)
persistent out
if isempty(out)
out = 0; % initial output value
end
% implement the hysteresis
if out = 0 && in > 90
out = 1;
elseif out = 1 && in < 30
out = 0;
end
end
  4 comentarios
Les Beckham
Les Beckham el 7 de Oct. de 2022
Editada: Les Beckham el 7 de Oct. de 2022
Of course you are right (== instead of =). Thanks for pointing that out. I thought about true/false vs. 1/0 but since OP specifically asked for 0 and 1, I went with that.
Also, good call on the relay block. I knew there was a simpler way to do this with a built-in block but I don't currently have Simulink to browse through the library.
Then feed B/A into the function and change 90 and 30 to 0.9 and 0.3.

Iniciar sesión para comentar.

Más respuestas (1)

Fangjun Jiang
Fangjun Jiang el 7 de Oct. de 2022
The Relay block does exactly that.

Categorías

Más información sobre Simulink Environment Customization en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by