How can I avoid errors due to division by zero in Simulink?

519 visualizaciones (últimos 30 días)
I am using a simple model in Simulink in which I use a division on two input values using a 'Divide' block.
During my simulation, there might be a zero value fed to the denominator of the 'Divide' block. This often causes a warning, an error message, or erroneous results.
How can I avoid these problems?

Respuesta aceptada

MathWorks Support Team
MathWorks Support Team el 13 de Feb. de 2023
Editada: MathWorks Support Team el 13 de Feb. de 2023
Will ha marcado con alerta este/a respuesta
Numerical division by zero is a common issue in programming, and its exact solution often depends on the particular application. In almost all cases, the best approach is to change the model never feed zero to a division block.
Two possible workarounds are as follows. For clarity purposes, let us call the original signal in the denominator as 'u'.
  1. Use a 'switch' block to pass 'eps' instead of 'u' to the 'divide' denominator. The 'switch' must only be activated when the signal 'u' is zero.
  2. Use a 'MATLAB Function' block to implement a zero-avoiding condition, such as:
u + (u==0)*eps
or, if the signal 'u' is real:
u + eps*(0^u)
The second workaround is demonstrated in the attached model 'example_no_divide_by_zeroFcn'.

Más respuestas (1)

madhan ravi
madhan ravi el 10 de En. de 2024
Or making the result to be zero when the divisor is zero using a Switch block

Categorías

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

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by