如何通过Matlab脚本提取Simulink模型中Display、Display2、Display3的输出
报错根因
sim函数的多返回值格式有固定规则:当使用多变量直接接收返回结果时,前两个返回值固定为仿真时间序列T、模型状态序列X,后续的返回值才对应模型根层级Outport模块的输出,你直接用3个变量接收返回值自然和要求的格式不匹配。
可行解决方法
方案1:添加根输出端口,直接从sim返回值提取
- 打开Simulink模型,给Display、Display2、Display3的输入信号线各接1个根级Outport模块(位于Simulink > Sources库,直接拖到模型根画布即可),共需添加3个Outport。
- 修改sim调用代码如下:
% 前两个返回值为固定的时间向量T、状态向量X,不需要X可以用~占位忽略 [T, ~, Display, Display2, Display3] = sim('test_lau.slx', t_stop, options);
运行后三个变量就对应三个Display的输出值/输出序列。
方案2:无需修改模型,仿真后直接读取Display模块属性
如果不想改动原模型加Outport,也可以仿真结束后通过get_param直接读取Display模块的显示值,代码如下:
% 先运行仿真 sim('test_lau.slx', t_stop, options); % 读取三个Display模块的数值,注意模块路径要和你模型内的实际命名一致 Display = str2double(get_param('test_lau/Display', 'Value')); Display2 = str2double(get_param('test_lau/Display2', 'Value')); Display3 = str2double(get_param('test_lau/Display3', 'Value'));
如果需要提取全量时间序列而非最终显示值,可以给三个Display对应的输入信号勾选「Log signal data」选项,仿真结束后从仿真输出对象的logsout属性中提取对应信号的完整序列即可。
内容的提问来源于stack exchange,提问作者elle.delle
相关产品推荐
相关产品推荐

