- 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.
- Use a 'MATLAB Function' block to implement a zero-avoiding condition, such as:
How can I avoid errors due to division by zero in Simulink?
528 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2012 年 3 月 13 日
回答済み: madhan ravi
2024 年 1 月 10 日
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?
採用された回答
MathWorks Support Team
2023 年 2 月 13 日
編集済み: MathWorks Support Team
2023 年 2 月 13 日
この 回答 は Will
さんによってフラグが設定されました
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'.
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'.
1 件のコメント
その他の回答 (1 件)
madhan ravi
2024 年 1 月 10 日
Or making the result to be zero when the divisor is zero using a Switch block
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Simulink Functions についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!