一、LaTeX 在 MATLAB 中的作用
MATLAB 支持使用 LaTeX 解释器 来渲染文本对象中的数学公式和特殊符号,适用于:
- 坐标轴标签(
xlabel,ylabel,zlabel) - 图形标题(
title) - 图例(
legend) - 文本注释(
text,annotation) - 颜色条标签(
colorbar)
✅ 效果:显示斜体变量、希腊字母、积分、求和、分数等,媲美论文级排版。
二、启用 LaTeX 解释器
在任何文本命令中,通过设置 'Interpreter' 属性为 'latex' 来启用 LaTeX:
xlabel('$\sin(x)$', 'Interpreter', 'latex')
title('$\int_0^\infty e^{-x^2} dx$', 'Interpreter', 'latex')
legend('$y = \alpha x^2 + \beta$', 'Interpreter', 'latex')
text(0.5, 0.5, '$\sqrt{a^2 + b^2}$', 'Interpreter', 'latex')
📌 注意:
- 文本必须用 单引号
' '包裹,LaTeX 公式用 美元符号$ $包围(行内模式)。 - 使用
$$ $$可以实现居中显示的“显示模式”公式(类似独立公式)。
三、LaTeX 基础语法(MATLAB 支持子集)
MATLAB 使用的是 简化版 LaTeX(基于 TeX),支持大多数常用命令,但不支持 \usepackage 或自定义宏。
1. 数学模式
- 行内公式:
$...$ - 显示公式:
$$...$$
title('$E = mc^2$', 'Interpreter', 'latex') % 行内
title('$$E = mc^2$$', 'Interpreter', 'latex') % 居中大公式
2. 上标与下标
| LaTeX | 效果 | MATLAB 示例 |
|---|---|---|
x^2 | x² | '$x^2$' |
x_{i,j} | xi,j | '$x_{i,j}$' |
3. 希腊字母
| 字母 | LaTeX | 示例 |
|---|---|---|
| α | \alpha | '$\alpha$' |
| β | \beta | '$\beta$' |
| θ | \theta | '$\theta$' |
| Δ | \Delta | '$\Delta$' |
4. 分数
ylabel('$\frac{a}{b}$', 'Interpreter', 'latex') % a/b
title('$\frac{\partial f}{\partial x}$') % 偏导
5. 根号
text(0.5,0.5, '$\sqrt{x^2 + y^2}$', 'Interpreter', 'latex')
6. 求和与积分
title('$\sum_{i=1}^n x_i$', 'Interpreter', 'latex')
title('$\int_a^b f(x) dx$', 'Interpreter', 'latex')
7. 箭头、点、向量
xlabel('$\vec{v} \cdot \dot{x}$', 'Interpreter', 'latex')
ylabel('$\rightarrow$', 'Interpreter', 'latex')
8. 字体样式(有限支持)
text(0.5,0.5, '$\mathbf{bold}$, \mathit{italic}$', 'Interpreter', 'latex')
⚠️ 注意:
\mathrm,\mathbf,\mathit支持,但\usepackage{amsmath}等不可用。
四、完整示例:绘制带 LaTeX 标签的图形
x = linspace(0, 4*pi, 100);
y = exp(-x/(2*pi)) .* sin(x);
figure;
plot(x, y, 'LineWidth', 2);
hold on;
plot(x, exp(-x/(2*pi)), 'r--', 'LineWidth', 1);
plot(x, -exp(-x/(2*pi)), 'r--', 'LineWidth', 1);
hold off;
% 使用 LaTeX 设置标签
xlabel('$\theta$ (rad)', 'Interpreter', 'latex', 'FontSize', 14);
ylabel('$A e^{-\theta / 2\pi} \sin(\theta)$', 'Interpreter', 'latex', 'FontSize', 14);
title('$$\text{Damped Oscillation: } y = A e^{-\theta / 2\pi} \sin(\theta)$$', ...
'Interpreter', 'latex', 'FontSize', 16);
% 图例
legend('$y$', '$\pm A e^{-\theta / 2\pi}$', 'Interpreter', 'latex', 'Location', 'best');
grid on;
set(gca, 'FontSize', 12, 'TickLabelInterpreter', 'latex'); % 刻度标签也用 LaTeX
五、高级技巧
1. 设置全局 LaTeX 默认
set(groot, 'DefaultTextInterpreter', 'latex');
set(groot, 'DefaultAxesTickLabelInterpreter', 'latex');
所有后续图形的文本和刻度标签默认使用 LaTeX。
2. 刻度标签使用 LaTeX
xticks(0:pi:4*pi);
xticklabels({'0', '$\pi$', '$2\pi$', '$3\pi$', '$4\pi$'});
xticklabelinterpreter('latex');
3. 避免中文与 LaTeX 冲突
❌ 错误:
xlabel('时间 $t$', 'Interpreter', 'latex'); % 中文不被 LaTeX 支持
✅ 正确做法:使用英文或使用 none 解释器
xlabel('Time $t$ (s)', 'Interpreter', 'latex'); % 推荐
或:
xlabel('时间 t (s)', 'Interpreter', 'none'); % 支持中文,但 t 不是斜体
4. 使用 compose 构造动态 LaTeX 字符串(R2021b+)
alpha = 0.5;
label = compose('$$y = %g e^{-\\alpha x}$$', alpha);
title(label, 'Interpreter', 'latex');
注意:反斜杠需转义为
\\。
六、常见问题与解决
| 问题 | 原因 | 解决方法 |
|---|---|---|
字符串必须具备有效的解释器语法 | 包含中文或非法 LaTeX | 避免中文,检查 $ 匹配 |
| 公式显示为红色 | LaTeX 语法错误 | 检查括号、花括号、命令拼写 |
| 字体不一致 | LaTeX 使用内置字体 | 使用 exportgraphics 导出 PDF 保持一致性 |
| 性能慢 | 复杂 LaTeX 渲染耗时 | 简化公式,或使用 'tex' 解释器 |
七、导出高质量图像(推荐)
LaTeX 渲染在屏幕和导出时效果最佳使用 矢量格式:
exportgraphics(gcf, 'plot.pdf', 'ContentType', 'vector');
exportgraphics(gcf, 'plot.eps', 'ContentType', 'vector');
避免使用 PNG/JPG,以免公式模糊。
八、LaTeX vs. Tex 解释器对比
| 特性 | 'latex' | 'tex'(默认) |
|---|---|---|
| 支持中文 | ❌ | ✅ |
| 数学公式 | ✅ 完整 | ✅ 基本(\alpha, \bf) |
| 上下标 | ✅ $x^2$ | ✅ x^2 |
| 分数 | ✅ \frac{a}{b} | ❌ |
| 积分/求和 | ✅ \int, \sum | ✅ \int, \sum |
| 字体控制 | 有限 | \bf, \it, \rm |
📌 建议:
- 需要复杂公式 → 用
'latex'(避免中文) - 需要中文 + 简单符号 → 用
'tex'
九、参考资料
- MATLAB 官方文档:
https://www.mathworks.com/help/matlab/graphics_formatting.html - LaTeX 数学符号表:
https://artofproblemsolving.com/wiki/index.php/LaTeX:Symbols
✅ 总结
| 目标 | 推荐做法 |
|---|---|
| 显示数学公式 | 使用 'Interpreter', 'latex' |
| 包含中文 | 使用 'Interpreter', 'none' 或 'tex' |
| 专业论文图表 | 全英文 + LaTeX + PDF 导出 |
| 动态公式 | 使用 compose + \\ 转义 |
📌 核心原则:LaTeX 模式下不要使用中文字符,否则会报错。
2万+






