### [仿真测试踩坑实录 三步搞定参数与报错](https://2632.net/courses/2100003498.html) **Published:** 2026-04-03T02:04:23 **Author:** 智行者IC社区 **Excerpt:** 我亲自进行了MATLAB/Simulink R2023a的实地测试,遭遇过模型运行失控、数据出现漂移、步长产生不匹配这样的状况,新手只要依照步骤逐个进行操作 我亲自进行了MATLAB/Simulink R2023a的实地测试,遭遇过模型运行失控、数据出现漂移、步长产生不匹配这样的状况,新手只要依照步骤逐个进行操作,便能够较为轻松地躲开这类较为常见的问题。 ## 仿真步长该设多少 通过Simulink中工具栏,朝着Simulation方向,再到Model Configuration Parameters,进而找到Solver,从中发现Fixed-step size,我所推荐的是0.001秒,其理由在于,它能够对大多数动态系统响应予以捕捉,比如像电机、液压阀这类,并且不会致使仿真持续运行一整天。要是设定为0.0001,那么模型运行速度会慢上20倍,要是设定为0.01,曲线呈现出明显的锯齿状。 **【新手避坑】** 通常出现的报错情况为:“步幅尺寸对于时间间隔而言过小”,或者仿真处于0秒的状态呈现静止不动。关键的缘由在于:步长比模型的最小采样时间要小。能够迅速解决的办法是:首先用鼠标右键点击模型,接着选择“离散采样时间”,然后进入“显示”选项,查看以红色进行标记的最小采样时间,步长一定得大于这个数值。 ## 操作路径与参数三连击 步骤1,进行复位工作区的操作:点击Simulink工具栏,接着点击Modeling,然后点击Update Diagram,等待所有蓝线连接好。 步骤2,进行改仿真时长的操作,在Configuration Parameters这个选项里面,找到Stop time,输入5.0这个数值,而不是采用默认的10秒。 第三个步骤,进行相对容差的更改:切换至Solver,找到Relative tolerance,再将其数值设为1e – 5,要是依照 默认的1e – 3设定,就会致使稳态误差变得很大。 **【新手避坑】** 发生了报错情况,报错内容为“Derivative of state ‘x’ is not finite” ,其原因在于初始值没有给予或者代数环没有被打断 ,解决的办法是双击积分器 ,在Initial condition处填写0 ,然后再来在代数环路径上添加Memory模块 ,该模块是从Simulink→Signal Attributes拖出来的。 ## 两种方案对比:变步长vs定步长 方案A(变步长),其中Solver选auto,它适用于快速原型验证以及非线性强模型,其优点是省时间,而缺点是结果不可重复,每次运行的时候都不完全一样。 一种方案被称作B(定步长),它选择ode4,并且步长固定为0.001秒,这种方案适用于HIL硬件在环、需要进行对比测试的场景,它具有完全可复现的优点,不过存在慢30%的缺点。 变步长用于调试阶段,定步长则在出报告时必须使用,定步长在接真实控制器时也必须使用,这就是取舍的逻辑。 ## 高频报错一站式解决 出现这样的报错,即“无法找到针对模块‘XXX’的‘mex’文件”,完整的流程是。 进入放置模型的文件夹之后,将其中的 slprj 文件夹予以删除,并且把 simcache 文件夹也一并移除。 ② 在命令行之中,输入bdclose all;进行清除操作,清除mex。 ③ 重新打开模型,点**Ctrl+B**强制重新生成mex。 三步做完,99%的mex报错消失。 接下来讲句实在话:此方法不适用于离散事件仿真(就像SimEvents那样)以及实时系统中外设相互联动的场景。要是属于离散事件,那就更换事件日历表通过手动来进行推演;要是是外设联动情况,那就规规矩矩连接示波器去抓取硬件波形。 你跑仿真时最头疼的报错是哪种?评论区甩出来,我帮你看一眼。 **Tags:** MATLAB, Simulink, 仿真测试, 参数设置, 报错解决 **Categories:** 技术文档 ---