能否在Simulink窗口内直接绘图而非使用Scope或导出至工作区?
实现Simulink窗口内直接绘图的方法
可以实现,以下是两种实用方案:
方案1:使用Simulink Dashboard模块
Simulink自带的Dashboard库提供了可直接嵌入模型窗口的绘图组件,无需弹出独立窗口或导出数据到工作区:
- 从Simulink库浏览器中找到Dashboard库,拖拽其中的Graph模块到你的模型窗口
- 将需要可视化的信号连接到Graph模块的输入端口
- 双击Graph模块,在配置界面中设置要显示的信号、坐标轴范围等参数
- 配置完成后,Graph模块会直接在Simulink模型窗口内实时绘制信号曲线,仿真运行时自动更新
方案2:自定义带绘图功能的Mask模块
如果需要更灵活的定制,可以创建带内置绘图的Mask模块:
- 添加一个Subsystem模块到模型,右键选择
Mask > Create Mask - 在Mask编辑器的Initialization标签中,添加以下MATLAB代码(示例):
% 创建axes对象嵌入到Mask模块中 ax = axes('Parent', gcb, 'Position', [0.1 0.1 0.8 0.8]); hold(ax, 'on'); % 设置回调函数,仿真时更新绘图 set_param(gcb, 'StopFcn', ... 'plot(ax, get_param([gcb ''/In1''], ''RuntimeObject'').OutputPort(1).Data);');
- 在Subsystem内部添加Inport模块命名为
In1,连接到需要观测的信号 - 关闭Mask编辑器后,仿真运行时该Subsystem模块内会直接显示信号曲线
注意:方案2需要确保Simulink启用了Runtime Object访问(在模型配置的Simulation Target中勾选Allow runtime object access)
内容的提问来源于stack exchange,提问作者ureadulose
相关产品推荐
相关产品推荐

