如何将Simulink非线性系统响应曲线导入Matlab并获取响应特性参数
问题原因
普通plot()函数生成的是基础坐标系下的线对象,不绑定Control System Toolbox的时域特性计算逻辑,因此右键的Characteristics菜单默认灰化不可用。只有通过控制工具箱专用绘图函数(step/impulse/lsimplot等)生成的响应图窗才会自带该功能。
解决方法
方法1:直接用stepinfo命令计算所有时域特性(推荐)
MATLAB自带的stepinfo函数支持直接传入时间序列和响应值计算上升时间、超调量、调节时间等参数,不需要依赖图窗菜单:
% 配置计算规则 opts = stepinfoOptions('SettlingTimeThreshold',0.02,... % 调节时间阈值,默认2%,可修改为0.05对应5%阈值 'RiseTimeLimits',[0.1 0.9]); % 上升时间上下限,默认10%~90%稳态值区间 % 输入仿真输出的时间、响应数据、系统稳态值,计算特性 sys_char = stepinfo(simout.Data, simout.Time, 你的系统稳态值, opts);
得到的sys_char结构体直接包含所有需要的参数,调用对应字段即可读取:
- RiseTime:上升时间
- Overshoot:超调量(百分比)
- SettlingTime:调节时间
- Peak:响应峰值
- PeakTime:峰值时间
方法2:生成带Characteristics右键菜单的图窗
如果你需要可视化界面操作的标注功能,可以不用plot,改用lsimplot函数绘图,生成的图窗自带和step响应一致的特性菜单:
% 构造和仿真时间等长的输入序列,幅值和Simulink中输入信号一致,示例为幅值1的阶跃输入 u = ones(size(simout.Time)); % 绘制响应曲线,自动绑定控制工具箱特性功能 lsimplot([], u, simout.Time, simout.Data);
绘图完成后右键点击曲线,即可正常找到「Characteristics」子菜单,勾选对应参数即可在图上自动标注。
方法3:自定义手动计算
如果你的非线性系统有特殊的特性定义规则,可以直接遍历数据计算:
- 上升时间:响应从稳态值10%上升到90%的时间差
- 超调量:(峰值-稳态值)/稳态值*100%
- 调节时间:响应进入稳态值±阈值区间后不再超出的最早时间点
内容的提问来源于stack exchange,提问作者Nadiah N.
相关产品推荐
相关产品推荐

