matlab仿真计算精度提高,[转载]改善simulink仿真的性能和精确度

一、加速仿真

1。模型包括一个MATLab Fcn模块。当执行一个包含MATLab

Fcn模块的模型,Simulink在每一个仿真时间步都要调用MATLab

解释器。所以应尽可能地使用Simulink的内置Fcn模块或者是最基本的math模块。

2。模型包含M文件的S函数,M文件的S函数同样会使Simulink在每一个仿真时间步调用MATLAB解释器,替代方法是把M文件的S函数转化为C-mex函数或者建立一个等价的子系统。

3.模型包含一个存储模块。使用存储模块将使阶数可变的求解器在每个仿真时间步被重置回1阶

4.仿真时间步太小。解决的方法是把最大仿真步长参数设置回simulink的默认值-auto

5.。仿真的精度要求过高。一般来说,相对误差容限为0.1%就已经够了,当模型存在取值趋向于零的状态,仿真时如果绝对误差限度太小,会使仿真在接近零的状态附近耗费多过的仿真步。

6 仿真时间过长,应按仿真情况减小仿真的时间间隔

7

所解决的问题是stiff问题,却选择了非stiff的求解器。解决方法是ode15s。

8

模型所设置的采样时间的公约数过小,这样使Simulink可以采用的基准采样时间过小,因为Simulink会选择足够小的时间步以保证所设置的采样点都能取到。

9。模型包含一个代数环。代数环的求解方法就是在每一个时间步迭代地进行计算,这样会严重地降低仿真的性能。

10 模型吧一个random number

模块作为integrator模块的输入。对于连续系统,可以使用source子库里的Band-Limited

WhiteNoise模块。

二、仿真精度:检验仿真精度的方法是修改仿真的相对误差及绝对误差容限。在一个时间跨度反复仿真,如果结果不变或者变化不大,表示该解是收敛的。

如果仿真在开始错过模型的关键行为,那么改变初识步长,使仿真不会忽略这些关键行为;

如果结果不稳定,可能有以下几个原因:

1 所要仿真的系统本身不稳定。

2.如果正在使用ode15s,用户可以把阶数定为2或者尝试ode23s。

3.如果仿真的结果看起来不是很精确,可能有两个原因造成:

模型有取值接近零的状态,如果模型的绝对误差容限过大,会使仿真在接近零的区域包含的仿真时间步太少,解决的方法是修改绝对误差容限参数或者在积分模块的对话框修改初始的状态。

如果改变绝对误差容限不能达到预期的效果,可以修改相对误差容限,使可接受的误差降低,并减小仿真步长。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值