“Derivative of state ‘1‘ in block ‘X/Y/Integrator‘ at time 0.55 is not finite“类问题解决办法
在MATLAB的simulink仿真时有时会遇到如下报错:
Derivative of state ‘1’ in block ‘X/Y/Integrator’ at time 0.55 is not finite.
这种报错是指在某个时间点处,某个值的运算达到了无穷大(或十分接近无穷大),以至于MATLAB将其视为数学上的“无意义”,不再予以计算。
解决这类问题的办法一般是:
1)查看建模——仿真设置,将“变步长”改成“定步长”(fixed-step),并将步长设置为小于0.001;
2)在求解器选项里把“自动”改为其他的求解器予以求解。
有些情况下这种“趋于无穷”的情况是由于步长过大、运算不精细造成的,所以方法1)有时会有效。但对于方法2),只有少数情况下修改了求解器能够解决问题,但大多数情况下出现无穷数值的情况决不仅仅是通过改变求解器就能解决的。
因此本文提出一种笔者新发现的解决方法:
点击simulink报错处的蓝色字体,将会自动定位至出现无穷大值的模块处。此时:
1)仔细观察并推导该模块所代表的物理量,如果其数学公式已知,则从表达式上推理是其中哪一项造成了无穷大的值;
2)针对造成无穷大的值的该项,上溯至该项的计算模块,即看看到底是哪一个模块是计算产生该项的;
3)在该项产生之后立即添加一个saturation模块进行限幅,所限制的上下限视实际硬件决定(可以先行估计)。
由于对模块添加了限幅,因此即使该项到达了无穷值,也依然会被限幅,不会再出现趋于无穷大的情况。
但该方法有使用条件:
1)显而易见,对该值进行限幅后,必须对整个系统影响不大,因此系统必须具有一定的鲁棒性;
2)限幅上下限的确定可以和实际相结合。
PS:有时simulink报错为“计算中出现奇点”,原理依然是分母除以了一个趋近于0的值,亦即系统中存在趋近于无穷的值。依然可以采用本文的方法解决。
此种方法的实际意义:在系统实际运行中,数学上有可能计算出无穷大的值,但由于实际硬件限制,往往存在限幅现象,因此实际上该限幅具有实际意义,能较好地反应实际硬件限制下的系统鲁棒性。
“Derivative of state ‘1‘ in block ‘X/Y/Integrator‘ at time 0.55 is not finite“类问题解决办法相关推荐
- Derivative of state ‘1‘ in block ‘untitled/PID/Integrator‘ at time 0.0 is not finite.
问题 对一个控制系统进行simulink仿真时出现错误.错误显示为"Derivative of state '1' in block 'Simulin/Controller Subsyste ...
- simulink 报错Derivative of state ‘1‘ in block ..... at time 0.0 is not finite.
An error occurred while running the simulation and the simulation was terminated Caused by: Derivati ...
- Please change the shape of y to (n_samples,), for example using ravel().python3报错问题解决
A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_sample ...
- 如何用Python 求函数 y = sinx 在区间[0, pi/2]上的弧长
今天在高数课上老师讲到求光滑曲线弧长问题,老师自己想了一个例子: 求函数 y = sinx 在区间[0, pi/2]上的弧长 但是经过微分和积分发现没法求出确定值,百度后发现不可积,是椭圆积分,只能求 ...
- 求y=sin(x)从0到2*pi,与x轴围成的面积
求y=sin(x)从0到2*pi,与x轴围成的面积 #列表推导式area = [abs(math.sin(i*width))*width for i in range(n)] #由积分算出sin(x) ...
- 编程计算下面的分段函数: y=e√x−1 (0<x<1) y=|x|+2 (3≤x≤4) y=sin(x2) (当x取其他值时)
2-1 分段函数 编程计算下面的分段函数: y=e√x−1 (0<x<1) y=|x|+2 (3≤x≤4) y=sin(x2) (当x取其他值时) 输入格式: 输入x的 ...
- Matlab 绘图画出y=sin(x)在[0,2*PI]上的图像
画出y=sin(x)在[0,2PI]上的图像 手工作图 找点:x=0;x=pi/4,x=pi/2;x=3pi/4; 给出离散点列:x=[0:pi/10:2*pi] 计算函数值 y=sin(x) 画图: ...
- echarts折线图不显示y轴值_Echarts 折线图y轴标签值太长时显示不全的解决办法
问题 先看一下正常的情况 再看一下显示不全的情况 所有的数据都是从后台取的,也就是说动态变化的,一开始的时候数据量不大不会出现问题,后面y轴的值越来越大的时候就出现了这个显示不全的情况. 分析 先贴一 ...
- Echarts 折线图y轴标签值太长时显示不全的解决办法
问题 分析 解决办法 问题 先看一下正常的情况 再看一下显示不全的情况 所有的数据都是从后台取的,也就是说动态变化的,一开始的时候数据量不大不会出现问题,后面y轴的值越来越大的时候就出现了这个显示不全 ...
最新文章
- 西门子发布最新版NX软件 助力零件制造的数字化
- 0.7秒完成动漫线稿上色,爱奇艺发布AI上色引擎
- Fedora 32 因 Bug 将推迟发布
- 【BZOJ5469】[FJOI2018]领导集团问题(动态规划,线段树合并)
- 在bcb中添加activex控件_LinkedCell 属性介绍,OLEObjects 控件
- django-cbv与fbv
- 2019.08.30数组去重的几种方法以及所需时间对比
- X 分钟速成 Python
- PHP设计模式之----观察者模式
- 深入JVM-Class装载系统
- VB获取窗体的位置和大小
- excel删除行闪退_Excel中出现表格打开闪退的处理方法
- win10 移动硬盘“拒绝访问”解决方案
- python 打开pdf文件_Python读取PDF文件--pdfminer
- Python Spider 的总结
- java .gml格式_GML格式错误
- MySQL排名问题详解
- 小米手机运行linux,小米6成功刷入UOS国产操作系统,可开机运行
- (1-2)神经网络与深度学习 | 浅层和深层神经网络
- java操作MangoDB的聚合Aggregation用法-分页查询