仿真测试误差处理 实测三步走

本人实际测试了Matlab/Simulink 2023a,在此过程中踩过因数据插值误差致使轨迹偏移了整整5个像素点的坑,对于新手而言,只要依照步骤一步步去操作,便能够轻松地躲开这类常见问题。

1 配置数据同步时间戳

拿出Simulink Data Inspector,步入Tools菜单之中对于Signal Logging的设定,寻觅到“Interpolation method”所属的下拉框,将容差参数设定成0.001秒。进入操作路径,先找到Modeling选项卡,接着进入Model Settings,再进入Data Import/Export,然后勾选“Single simulation output”,最后固定参数值为1e-3。

针对于毫无经验的新手们而言,务必要避开的坑是,经常见得的报错情形为“Time vector mismatch”,又或者是数据曲线呈现出毛刺状。而最为主关键的内在缘由在于,仿真过程当中所采用的步长跟数据采样原本所设定的周期二者并不相匹配,进而致使线性插值这一操作引入了相位误差。快速能够实现解决的办法是,首先要去确认模型步长已经被设置成为较为固定的步长即为0.001秒,随后运用resample函数将所有信号的基频统一起来。

2 低通滤波截止频率最优值

于 Signal Processing Toolbox 之中,拖入 Digital Filter Design模块,双击予以打开,把滤波器类型选定为“Lowpass”,将截止频率设定成 10Hz。其理由为:根据实测情况,5Hz 以下会致使真实响应峰值被压扁,15Hz 以上又无法滤除高频噪声,10Hz 刚好处于控制环路带宽(大约为 8Hz)与传感器噪声基频(大约为 12Hz)之间,此时误差均方根是最小的。

对于新手而言,在运行之后,波形居然出现十分严重的延迟现象,或者幅值出现衰减的状况,这是怎么回事呢?那种情况其实是因为滤波器阶数设定得过高了。默认的8阶会致使群延迟超过50ms,这种情况下,若把阶数降低到4阶,并且同时勾选“Zero-phase filtering”选项,便能够保住信号边缘的状态。

3 两种插值方案取舍对比

方案A:采用线性插值这种方式(此为Simulink默认情形),其路径是:Configuration Parameters ,接着是Data Validity ,然后是 “Linear”。方案B:运用三次样条插值,要在命令行输入set_param(gcs,’InterpMethod’,’spline’)。实作测量进行对比,线性方案所具备之速度较快(每一步骤为0.2毫秒),然而存在着约0.3%的误差,使其适用于实时仿真;样条方案的误差仅仅为0.05%,但花费之时长为1.5毫秒,故而适合用于离线回放。

谨防新手步入误区!当运行样条插值之际,遭遇了“Out of memory”这般的报错情况,其缘由在于数据点已然超过了10万个之多。具备完整的解决流程:起始阶段要暂停仿真操作,借助downsample(logsout,10)去压缩信号,之后再开展插值行为。务必牢记:在实时场景当中,倘若毫无头绪,就无脑选择线性方式,只有当精度无法满足需求之时,才切换至样条方式。

此次最后进行提醒,此方法针对于纯离散系统,或者是带有强非线性摩擦环节的模型并不适用,因为会出现放大抖振的情况。其替代方案是采用自适应卡尔曼滤波器,先对摩擦参数进行辨识,然后再进行补偿。你所处理的是何种类型的仿真误差呢?欢迎在评论区贴图,我会帮你查看具体应当如何进行调整。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

更多文章