首页 理论教育 如何解决MATLAB中常见的Nan错误和代数环问题

如何解决MATLAB中常见的Nan错误和代数环问题

时间:2023-06-18 理论教育 版权反馈
【摘要】:nan在MATLAB中,Nan的含义是not a number,往往在0为除数的情况下出现。因为此时不能进行运算,所以导致严重错误,此时MATLAB也会自动弹出运行错误的小窗口。此时可以利用MATLAB中的eps,它是MATLAB的一个内部常数,绝对值非常小的一个正数。另外,出现代数环时,MATLAB/SIMULINK常常会有相应的问题描述,可以尝试一下仿真系统给出的问题解决方案。

如何解决MATLAB中常见的Nan错误和代数环问题

(1)nan

在MATLAB中,Nan的含义是not a number,往往在0为除数的情况下出现。因为此时不能进行运算,所以导致严重错误,此时MATLAB也会自动弹出运行错误的小窗口。为了找到错误的根源,可以找到运行错误窗口提示的模块,然后在与其相关的各条信号线上面连接display单元,可以观察到底是哪条信号线的数值有问题,然后逐一分析,直至找出问题所在。

图I-12 Integrator3、Integrator4与Integrator5参数设置对话框

(2)除零错误与eps

除零运算是无法进行的,系统一定会报错。有时情况比较特殊——在某些特殊条件下,需要对两个绝对值非常小的数进行除法运算,正常情况下两个数都比较大。此时可以利用MATLAB中的eps,它是MATLAB的一个内部常数,绝对值非常小的一个正数。采用合适的形式,把eps叠加在分子与分母后,就可以消除仿真错误了。(www.xing528.com)

(3)rad/s与Hz

需要注意的是SIMULINK中需要设置频率参数的很多模块中,有的频率单位是rad/s,有的则是Hz,注意不要使用错误,否则结果只能出错。

(4)代数环问题

代数环(algebraic loop)问题有的时候并不严重,mdl仿真程序可以进行仿真,但是仿真速度会大受影响;有的时候则不能进行仿真。它描述的是系统的输出与输入之间存在没有任何延时的环路——即代数运算环节,从而导致系统难以对其进行求解。有的时候,把模块的建模方式改变一下可以消除代数环;有的时候,可以考虑在适当的位置加入一个延时环节来消除代数环。另外,出现代数环时,MATLAB/SIMULINK常常会有相应的问题描述,可以尝试一下仿真系统给出的问题解决方案

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈