news 2026/6/9 2:11:27

别再截图了!手把手教你用MATLAB Plot函数把Simulink波形导出成论文级图片

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再截图了!手把手教你用MATLAB Plot函数把Simulink波形导出成论文级图片

别再截图了!手把手教你用MATLAB Plot函数把Simulink波形导出成论文级图片

在学术写作和工程报告中,清晰规范的图表往往比大段文字更能直观传达研究成果。然而许多研究者仍习惯直接截取Simulink示波器界面,导致图片模糊、格式混乱,最终影响论文的专业性。本文将系统介绍如何通过MATLAB Plot函数,将Simulink仿真数据转化为可直接用于期刊投稿的矢量图,涵盖从数据导出、多图排版到字体美化的全流程技巧。

1. 从Simulink到MATLAB:数据导出的正确姿势

1.1 示波器配置与数据保存

在开始仿真前,必须正确配置Scope模块的数据记录功能。不同于默认设置仅显示波形,我们需要将数据持久化到工作区:

  1. 右键点击Simulink中的Scope模块,选择Properties
  2. Logging选项卡中勾选Log data to workspace
  3. 设置变量名为有意义的标识(如motor_current),格式推荐选择Structure With Time
% 验证数据是否成功导出 whos motor_current % 查看工作区变量信息 plot(motor_current.time, motor_current.signals.values) % 快速预览波形

1.2 数据结构解析

Simulink导出的结构体包含两个关键字段:

  • time:仿真时间序列,通常为N×1的列向量
  • signals:包含所有通道数据的结构数组,每个元素的values字段存储对应信号值

当处理多通道信号时,建议先用size()函数确认数据维度,避免绘图时出现维度不匹配错误。

2. 基础到进阶:Plot函数的实战技巧

2.1 单图多曲线绘制

MATLAB的plot函数支持在同一坐标系叠加多条曲线,只需连续传入x-y数据对:

figure('Color','white') % 创建白色背景图窗 plot(voltage.time, voltage.signals(1).values, 'LineWidth', 1.5) % 主电路电压 hold on % 保持当前图形 plot(voltage.time, voltage.signals(2).values, '--', 'LineWidth', 1.5) % 参考电压 hold off

线型修饰符速查表

符号样式符号颜色
-实线r红色
--虚线b蓝色
:点线g绿色
-.点划线k黑色

2.2 专业级子图排版

使用subplot函数创建多图布局时,需注意保持一致的坐标尺度:

figure('Units','centimeters','Position',[0 0 15 10]) % 设置精确尺寸 % 第一幅子图(电流波形) subplot(2,1,1) % 2行1列的第1个图 plot(current.time, current.signals.values, 'Color',[0 0.447 0.741]) set(gca,'FontName','Times New Roman','FontSize',10) % 统一设置字体 % 第二幅子图(FFT分析) subplot(2,1,2) [freq, amp] = myFFT(current.signals.values); % 自定义FFT函数 stem(freq, amp, 'filled','MarkerSize',3)

3. 期刊级图表美化指南

3.1 字体与公式规范

学术期刊通常要求使用Times New Roman字体,MATLAB支持LaTeX语法实现特殊符号:

xlabel('$\it{t}$ (s)','Interpreter','latex','FontSize',11) ylabel('$\mathcal{I}_q$ (A)','Interpreter','latex') title('Current Waveform $\alpha$=0.5','Interpreter','latex')

在包含中文标签时,建议使用\fontname{宋体}混合排版:

ylabel({'\fontname{宋体}相电流'; '\fontname{Times New Roman}(A)'})

3.2 精细化样式调整

通过图形对象句柄实现像素级控制:

h = plot(...); % 获取曲线句柄 set(h, 'LineWidth',1.5, 'MarkerEdgeColor',[0.5 0.5 0.5]) ax = gca; ax.XMinorGrid = 'on'; % 启用次要网格线 ax.YLim = [0 10]; % 固定Y轴范围 ax.TickDir = 'out'; % 刻度线方向

4. 高效输出工作流

4.1 矢量图导出设置

通过exportgraphics函数生成高质量输出文件:

exportgraphics(gcf,'waveform.pdf','ContentType','vector',... 'Resolution',600,'BackgroundColor','none')

常见输出格式对比

格式特点适用场景
PDF矢量格式,无限缩放期刊投稿/印刷
EPS兼容LaTeX的矢量图论文排版
PNG位图,文件小网页/PPT展示
SVG可编辑的矢量图进一步AI/PS处理

4.2 自动化脚本开发

将常用配置封装成函数,实现一键生成标准化图表:

function saveAsJournalFigure(figHandle, filename) set(figHandle,'PaperUnits','centimeters',... 'PaperPosition',[0 0 12 8]) print(figHandle,'-dpdf','-r600',filename) end

在实际项目中,我通常会建立模板脚本库,针对不同期刊要求预置各种样式模板。例如IEEE Transactions系列需要特定的线宽和字体大小,而Nature系列更偏好简洁的图表风格。通过copyobj函数可以快速复用已有图形的样式设置到新图形上,大幅提升批量出图效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 2:08:39

别再只用UUID v4了!5个版本(v1到v5)的实战选型指南与避坑经验

别再只用UUID v4了!5个版本(v1到v5)的实战选型指南与避坑经验在分布式系统中,唯一标识符的生成一直是开发者需要面对的核心问题之一。UUID(通用唯一识别码)作为解决这一问题的经典方案,已经发展…

作者头像 李华
网站建设 2026/6/9 2:07:18

《原神》主题前端练习包:多页面静态站+轮播/音视频交互功能

本文还有配套的精品资源,点击获取 简介:一套开箱即用的《原神》风格纯前端静态网站合集,包含首页、新闻页及蒙德、璃月、稻妻、须弥等六大区域专属页面,每个页面对应独立HTML与CSS文件(如mengde.htmlmengde.css&…

作者头像 李华
网站建设 2026/6/9 2:07:15

Understand-Anything部署教程:打造AI代码理解平台

随着 AI Coding 与 Agent Workflow 越来越复杂,越来越多开发者开始关注:AI 如何真正理解大型代码库如何快速熟悉陌生项目如何把代码结构可视化如何构建长期可复用的知识图谱尤其是在需要长期维护大型项目、多 Agent 协作或持续运行代码分析任务的场景中&…

作者头像 李华
网站建设 2026/6/9 2:07:14

一个 C++ 线程是怎么跑起来的

🧵 从 std::thread 到 CPU 调度器💡 最近在看 C 多线程代码,发现对 std::thread 的认知只停留在"知道这函数干什么的"层面,完全不知道它和操作系统的关系是什么。这篇笔记记录我从上而下学习线程原理的过程。一、&#…

作者头像 李华