필터 지우기
필터 지우기

How to determine the moment (time) at which the signal exceeded the set value in simulink?

조회 수: 8 (최근 30일)
If I have a signal defined by exponential function (for example): 2e^t. How do I determine time when the value of this function will be more then (for example) 5?

답변 (2개)

Jonas
Jonas 2021년 2월 15일
Put an integrator block with input 1 inside an enabled subsystem. Use a relational operator to see if your exponential function value is above 5 and use it for the enable port of the enabled subsystem. The output of the integrator will give you the time.
  댓글 수: 4
Tiago Moraes
Tiago Moraes 2022년 8월 2일
Explaing the example:
Inside subsystem we have an integrator. Simulation time: 12s.It's generated a pulse with period 4s and pulse width 22%. So, per clicle, the pulse is high during 0,88s. In 12s, we have 3 cycles. So, the integrator result is 2,64s (3 x 0,88s). It works!
Jonas
Jonas 2022년 8월 2일
편집: Jonas 2022년 8월 2일
Instead of using an integrator I just used the clock directly.

댓글을 달려면 로그인하십시오.


Fangjun Jiang
Fangjun Jiang 2021년 2월 15일
Assume you build your model correctly, your signal varies as time goes. Compare your signal with the Constant value, its output will be a true or false signal. Use this signal to trig a tiggered subsystem, which contains a Clock block inside. Play with it and you should be able to get what you want.
  댓글 수: 2
Marko Boskovic
Marko Boskovic 2021년 2월 16일
I can do the same with the block ''MATLAB function'', but I don't get what I want. I want to determine at what point this function exceeds a certain value, and to use that moment as the time when I will call another function (because that other function is not active until that moment). For example I have a function x^2, the function x-2 should be run at the moment when the function x^3 exceeds the value 4, so I need to have number (time when fuction is higher than certain value) on output. How do I determine that moment, can I do that using for or while loop in block ,,MATLAB function''?
Fangjun Jiang
Fangjun Jiang 2021년 2월 16일
I can see that it can be done using a MATLAB Function block, but no need to use FOR or WHILE loop. Keep in mind that the MATLAB Function block is executed at every simulation step.
Did you try the method I suggested? That is a more straightforward method.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Sources에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by