就我实际测试过的MATLAB/Simulink R2021b这个版本里,遭遇过仿真结果跟理论数值差出30%以上偏差的情况。
第一步核对模型参数与求解器设置
将Simulink模型打开,把菜单栏Simulation点开,接着点选Model Configuration Parameters。在 Solver 选项卡的范畴下,核查 Type 有没有被设置成 Fixed-step,Solver 选用 ode4(Runge-Kutta),把 Fixed-step size 填充为 1e-4。下面切换至Data Import/Export,对Time确认勾选,同时,对Output也确认勾选。
新手要避开的坑中,一种很常见的报错情况是,仿真结果曲线呈现出剧烈的振荡现象。其原因在于,Max step size的默认值设定得过大了,进而导致采样点变得稀疏起来。解决的办法是,手动把Max step size设置得与Fixed-step size保持一致,举例来说,就像1e-4这样。
第二步检查信号采样与数据记录
运行仿真过后,在MATLAB命令行里输入plot(simout.Time, simout.Data)来查看结果。
若在进行plot操作之后,呈现出来的是空白情况,甚至出现数据异常的情况,其背后所对应的原因在于Scope的采样率和模型步长之间存在不匹配的问题。要解决这一问题方式如下,先右键点击Scope,接着选择Block Parameters,随后把Sample time设置为 -1,也就是继承模型步长。
这里对比两种仿真方案:
方案A,采用Variable-step求解器,其结果收敛速度较快,然而波形毛刺数量较多,此方案适宜用于快速验证。
方案二情况:运用 Fixed-step 求解器再加上 ode4,所获结果具备光滑特性然而仿真速度只有常规的三分之一,这种情况适宜用于最终报告。
实际项目中,前期用方案A,最后输出用方案B,别搞混。
第三步应用后处理修正偏置误差
模拟结束之后,在MATLAB命令窗口键入:filtered_data = smoothdata(simout.Data, ‘gaussian’, 15);。随后对比原始情况与处理之后的结果:plot(simout.Time, simout.Data, simout.Time, filtered_data)。
要避免踩坑,这里存在高频报错情况,报错内容为“Error using smoothdata. Window length must be less than data length.”,究其原因,是因为数据的点数少于15,存在这种报错情况。要解决这个问题,先使用length(simout.Data)来查看点数,要是点数不足,那么就把15换成floor(len/2)。
做滤波处理时,其关键参数是smoothdata的窗口宽度,而这个窗口宽度的最优推荐数值是15。其中原因在于,要是窗口太小的话,去噪所达成的效果就会比较差,可要是窗口太大,那么真实波形的特征就会被抹除掉,然而15这个数值在工程测试里使得这两方面达到了平衡。
其中一种有高频率且具备整全性质的报错以及相应的解决流程是这样的:关于报错的信息是,呈现出“The variable ‘simout’ does not exist.”这样一种表述,而导致出现这种情况的原因在于,Scope并没有以正确的方式去记录数据。解决过程步骤如下:先双击Scope操作,接着点击Logging图标,随后要确认Log data to workspace处于已勾选状态;之后,点击Apply,再点击OK;然后,重新进行运行仿真的操作;再然后,在命令窗口输入whos simout,以此来确认变量是否存在;最后,再去执行plot命令。
本文推行的方法,适用于针对单步长固定求解器所开展的仿真结果分析。要是你运用的是变步长自适应求解器,又或者模型里包含的是Discrete离散模块,那么上述提及的滤波窗口参数,就得调整为5至10。还有替代方案:直接借助lowpass(simout.Data, 0.1, 1/1e – 4)来施行低通滤波,如此效果会更为稳定。










