干货分享 - MatLab

2023-10-27

目录

1、前言

2、Latex基础

3、Latex尝鲜

4、Latex在MatLab中换行

5、Latex在MatLab中小花招

6、附录1:Tex对照表

7、附录2:常用Tex字符


1、前言

LaTeX语言作为应用最广泛的Tex格式,Tex这种语言具有简单排版和程序设计的功能。

利用Latex,即使我们不会排版和程序设计也可以生成复杂的论文规格的表格和数学公式。

为了更加直观的感受LaTeX的排版作用,因此查看下图的红色方框区域部分。

Latex具有强大的显示数学公式的能力,能轻松表达出复杂的数学公式且非常美观。

 
f=@(x)exp(-2*x);
x=0:0.1:2;plot(x,f(x),'.-k');
xlabel('{\itx}'); ylabel('{\ity=e^{-2x}}');
legend('f(x)=e^{-2x}');

latexf=['$$f(x)=e^{-2x}$$'];
lgh=legend(latexf);
set(lgh,'interpreter','latex');

而Matlab在最新版本更新了对Tex/LaTeX的支持,使得我们在科学绘图中能够快捷方便的使用。

在用matlab对数据或模型进行计算处理之后,时常会需要输出结果呈现Latex的格式,或者能方便转换成Latex格式方便后续编辑。

可以提前给本文的内容做出一个总结:

  • MATLAB绘图时,可以使用LaTeX公式输入,前提是将相应的解释器从默认的'tex'改为'latex',使用最多还是在编写公式上,无法对一些算法图和排版进行深入的使用。

  • 无法自定义加载LaTeX的各种宏包,导致功能很受限,例如算法包,绘图包。


Matlab中使用Latex大体可分为两种类型:

  • 使用Latex公式标注Matlab生成的各类图形

  • 把Matlab的运行结果转换成Latex格式。

今天我们的内容就是好好盘点一下这些基础内容~


2、Latex基础

让我们先从基础的数学表达开始:

当我们在命令行键入: set(text,‘Interpreter’)

(部分低版本matlab为TickLabelInterpreter)

系统将返回'Interpreter'所包含的属性值:“none”||"tex"||"laTex"

可见默认值是:tex。我们可以将其设置为laTex。

在MatLab使用LaTex主要有这两种方式:

 %格式一:'$ 表达式或值 $'      %        一个公式只占一行当公式高度超过设定字符高度时会缩小公式中的字符 %格式二:'$$ 表达式或值  $$' %        一个公式能占多行公式中的每个字符都为设定的字符高度​​​​​​

常见数学符号的表达方法

在新版本的matlab中,实时脚本的内容中有插入LaTex方程的选项。

我们利用该app进行基础的学习:

部分规则请查看附录~

单个字符:

希腊字母的变量名为“\”后面的字符串

求和符号:

卧氏大括号:

\overbrace{x+y+z+x+a+d}

上划线和下划线:

具体公式总结请看附录内容~


3、Latex尝鲜

编写MATLAB的绘图窗口时候,我们很多时候需要在图中制作公式图。

Matlab可以在title、xlabel、ylabel、zlabel...上插入LaTeX公式。

(部分代码来自csdn,感谢各位大佬的贡献)

值得注意的是,‘interpreter’ 表示所采用的解释器语法,此时需要设置为'latex'

  • 标题 title

% 标题中添加LaTeX格式公式
x = 0.1:0.1:10;
plot(x, sin(x)./x);
title('$\frac{sin(x)}{x}$','interpreter','latex', 'FontSize', 20);
set(gcf, 'position', [0 0 400 300]);
set(gca,'FontSize',18);

title('$\frac{sin(x)}{x}$','interpreter','latex', 'FontSize', 20);
  • 图例 legend

K = 0.2;a1 = -0.3;a2 = 0;a3 = 0.3;t=-5:0.1:5;
f1 = K*exp(a1*t);f2 = K*exp(a2*t);f3 = K*exp(a3*t);
plot(t,f1,'b','LineWidth',4);hold on;
plot(t,f2,'r','LineWidth',4);hold on;
plot(t,f3,'k','LineWidth',4);axis([-6,6,-0.2,1.2])
set(gca,'XAxisLocation','origin');
set(gca,'YAxisLocation','origin');
legend({'$\it{K}e^{\alpha\it{t}}(\alpha < 0)$','$\it{K}e^{\alpha\it{t}}(\alpha > 0)$','$\it{K}$'},'Interpreter','latex')

为了让图例中可以插入一些好看的公式,比如下划线之类的我们也可以使用下面的代码进行调整与混合普通文字使用

plot(rand(20, 3), 'o-');
legend({'Mean Energy Consumption', 'Mean of $u_{i}$ Value', ...
        'Client Selection Frequency'}, ...
       'location', 'northwest', ...
       'interpreter', 'latex');

leg1 = legend('$\bar{x}$','$\tilde{x}$','$\hat{x}$');
set(leg1,'Interpreter','latex');
set(leg1,'FontSize',17);

【注】:legend语句中的 {} 不可缺少,且不可替换为 [] 

  • 坐标轴 xlabel/ylabel

alpha = 0:0.01:4*pi;
y1 = sin(alpha )+cos(alpha);
plot(alpha,y1,'r','LineWidth',3);
grid  minor
axis([0,4*pi,-4,4])
set(gca,'FontSize',18);
ylabel(['$f_{1}(\alpha)=sin(\alpha)+cos(t)$'],'Interpreter','latex','FontSize',18);
xlabel(['$\alpha$'],'Interpreter','latex','FontSize',18);
box on

因此我们可以得到总结,只要需要输出科学公式或者文字的地方,几乎都能够无缝使用LaTeX进行美化排版。

因此我们来完成一个比较完整的内容

syms x y
f = y*sin(x)-x*cos(y);
fsurf(f,[-2*pi 2*pi])
a = gca;
a.TickLabelInterpreter = "latex";

S = sym(a.XLim(1):pi/2:a.XLim(2));
S = sym(round(S/pi*2)*pi/2);
xticks(double(S));
labels = "$" + arrayfun(@latex,S,UniformOutput=false) + "$";
xticklabels(labels);

S = sym(a.YLim(1):pi/2:a.YLim(2));
S = sym(round(S/pi*2)*pi/2);
yticks(double(S))
labels = "$" + arrayfun(@latex,S,UniformOutput=false) + "$";
yticklabels(labels);

xlabel("$x$",Interpreter="latex");
ylabel("$y$",Interpreter="latex");
zlabel("$z$",Interpreter="latex");
titletext = "$" + latex(f) + "$ for $x$ and $y$ in $[-2\pi,2\pi]$";
title(titletext,Interpreter="latex")

4、Latex在MatLab中换行

是不是很上头?使用Lex语言编译出来的公式具有一定的美感。

想一想如果我们如果一个公式过长需要两行才能显示是否有技巧可以完成了?

目前根据我练习两年半的经验操作来看,有两类方式在MatLab中进行换行。

  • 将LaTex公式字符串改写为{'$...$', '$...$'}。单美元符号

  • 使用关键字newline进行控制,将LaTex公式字符串改写为['$...$', newline, '$...$']。美元符号

【注】:两种方式的括号不一样哦

% 换行方式一
title({'$liu:\sin(x)+\alpha_1(k_1+x)+\alpha_2(k_2+x)+a_0c(k+n)+a_1c(k+n-1)$',...
    '$+...+\alpha_n(k_n+x)$'},'interpreter','latex', 'FontSize', 10);
% 换行方式二
title(['$liu:\sin(x)+\alpha_1(k_1+x)+\alpha_2(k_2+x)+a_0c(k+n)+a_1c(k+n-1)$',newline,...    
       '$+...+\alpha_n(k_n+x)$'] ,'interpreter','latex','FontSize', 10)

5、Latex在MatLab中小花招

使用颜色修饰符 \color 将其后尾随字符的颜色从先前的颜色更改为新颜色。​​​​​​​

title(['\fontsize{16}liu {\color{magenta}love '...
'\color[rgb]{0 .5 .5}every \color{red}red} nice girl'])

可以通过latex()函数转化成LeTeX命令格式。由于latex()函数只对符号表达式进行转换,对于数值结果一定要通过sym()函数转化成符号结果。

因此为防止对数值结果转化出错,可同时使用latex()和sym()函数:

latex(sym(表达式))

例如:​​​​​​​

syms x phi
chr = latex(x^2 + 1/x)

chr =

'\frac{1}{x}+x^2'

利用latex函数创建数组的字符表达形式:​​​​​​​

syms x
S = [sym(1)/3 x; exp(x) x^2]

让我们使用那个神奇的命令将S转为latex字符串吧~

当然我们也可以定义一些矩阵符号表达式:​​​​​​​

syms A 3 matrix
syms X [3 1] matrix
f = X.'*A*X
H = diff(f,X,X.')
chrf = latex(f)
chrH = latex(H)

因此我们日后想要快速的插入某些公式可以通过这种表达式进行快速转换。

6、附录1:Tex对照表

7、附录2:常用Tex字符

Tex字符在输出一些数学公式时经常使用,它只能由类型为text的对象创建。函数title、xlabel、ylabel、zlabel或text都能创建一个text对象,因此Tex字符转义符(带“\”的字符串)经常作为这些函数的输入参数。

texlabel转换MATLAB表达式为等价的Tex格式字符串。

它处理希腊字母的变量名为实际显示的希腊字母字符串。希腊字母的变量名为“\”后面的字符串

Tex字符及其函数表:​​​​​​​

  \alpha α  \upsilon υ   \sim ~  \beta β    \phi ϕ       \leq ≤  \gamma γ   \chi χ      \infty ∞  \delta δ   \psi ψ      \epsilon ϵ     \zeta ζ    \Gamma Γ    \omega ω  \eta η     \Delta Δ    \theta θ   \Theta Θ    \leftrightarrow ↔  \vartheta ϑ   \Lambda Λ    \leftarrow ←  \iota ι     \Xi Ξ      \uparrow ↑  \kappa κ    \Pi Π    \rightarrow →  \lambda λ   \Sigma Σ    \downarrow ↓  \mu μ     \Upsilon Υ     \circ °  \nu ν      \Phi Φ       \pm ±  \xi ξ    \Psi Ψ      \geq ≥  \pi π      \Omega Ω    \propto ∝  \rho ρ     \forall ∀     \partial ∂  \sigma σ    \exists ∃     \bullet ∙  \varsigma ς    \div ÷  \tau τ      \cong ≅     \neq ≠  \equiv  ≡    \approx ≈     \aleph ℵ  \otimes ⊗       \oplus ⊕    \cap ∩       \cup ∪       \supseteq ⊇  \supset ⊂      \subseteq ⊆    \subset ⊃  \int ∫      \in ∈         \o ο  \rfloor     \lceil      \nabla

具体的公式编辑命令:​​​​​​​

  1.上标用^和下表用_,希腊字母与tex一样,即\alpha表示α。    2.求和: $$\sum_{i=1}^{n} x_{i}$$    3.积分: $$ \int_{0}^{1}$$  4.求极限: $$\lim_{n \rightarrow \infty}$$ %n趋于无穷符号在lim正下方  $\lim_{n \rightarrow \infty} $ %趋于无穷符号在lim右下角  5. 分式: $$\frac{1}x$$ %1/x  6. 根式: $$\sqrt{x}$$  7. 上划线: $$\overline{x}$$  8. 下划线: $$\underline{x}$$ %下划线在x的正下方  9.卧式花括号命令: $$\overbrace{x+y+z+w}$$  10.仰式花括号命令: $$a+\underbrace{b+c+d} $$    11.戴帽命令: $$\hat{o}\ \ \check{o}\ \ \breve{o}$$  $$\widehat{A+B} \ \ \widetilde{a+b}$$  $$\vec{\imath}+\vec{\jmath}=\vec{k}$$    12.堆砌命令: $$y\stackrel{\rm def}{=} f(x) \stackrel{x\rightarrow 0}{\rightarrow} A$$  13.省略号: $\bullet \bullet \bullet \bullet \bullet \bullet $

关于Tex解释器的一些设置

  • Tex字符的字体设置有如下6种

     \bf:设置字体为粗体字。  \it:设置字体为斜体字。  \sl:设置字体为斜体字,很少使用。  \rm:设置字体为正常字体。  \fontname{字体名}:设置字体名。例如:\fontname{宋体}。  \fontsize{字体大小}:设置字体大小。例如:\fontsize{16}​​​​​​​
  • Tex字符的颜色设置有下面两种方法

  \color{颜色名}颜色名:颜色名有12种,  分别为red、green、yellow、magenta、blue、black、  white、cyan、gray、barkGreen、orange和lightBlue。    例如:\color{magenta}magenta。  \color[rgb]{a b c}:    设置字体颜色为RGB矩阵[a b c]所表示的颜色。  a、b和c都在[0 1] 范围内。  例如:color[rgb]{0 .5 .5}
  • Tex字符的位置有2种设置

      _:表示下标。  ^:表示上标。​​​​​​​
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

干货分享 - MatLab 的相关文章

  • FFT 的功率谱密度

    我有一段代码可以获取部分信号的 FFT 现在我正在尝试获取 PSD Fs 44100 cj sqrt 1 T 6 dt 1 Fs left test 1 right test 2 time 45 interval 636 w range t
  • 在 MATLAB 中使用 FFT 的频率响应

    这是场景 使用频谱分析仪 我有输入值和输出值 样本数是32000采样率为2000样本 秒 输入是正弦波50 hz 输入为电流 输出为压力 单位 psi 我如何使用 MATLAB 根据这些数据计算频率响应 使用 MATLAB 中的 FFT 函
  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 两个 y 轴与相同的 x 轴[重复]

    这个问题在这里已经有答案了 可能的重复 在单个图中绘制 4 条曲线 具有 3 个 y 轴 https stackoverflow com questions 1719048 plotting 4 curves in a single plo
  • Matlab中转换数据类型的有效方法(double vs. im2double)

    我想将真彩色图像转换为双精度 据我所知有两种方法可以做到这一点 double rgb img im2double rgb img 哪一种效率更高 谢谢 他们都是不同的 im2double将图像的范围转换为0 1如果数据类型是uint8 or
  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 为什么旋转 3D 点云后顶点法线会翻转?

    我有两个人脸 3D 点云样本 蓝色点云表示目标面 红色点云表示模板 下图显示目标面和模板面在不同方向上对齐 目标面大致沿 x 轴 模板面大致沿 y 轴 Figure 1 The region around the nose is displ
  • 在 MATLAB 中重命名文件

    我正在尝试以编程方式重命名工作目录中的文件a temp txt to b hello txt 您建议如何这样做 MATLAB中有一个简单的文件重命名函数吗 我认为您正在寻找 MOVEFILE
  • Matlab 字段名索引[重复]

    这个问题在这里已经有答案了 所以我有一个包含多个表的元胞数组 我试图访问表的第一个列名称 c table1 table2 table3 以下两行都给了我错误 fieldnames c 1 1 fieldnames c 1 1 Error i
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • MATLAB 特征函数

    我很好奇哪里可以找到完整的描述FEATURE功能 它接受哪些论点 没有找到文档 我只听说过memstats and getpid 还要别的吗 gt gt which feature built in undocumented 注意 更完整的
  • 两个向量之间的欧氏距离(单行矩阵)

    我有两个向量 单行矩阵 假设我们已经知道长度len A x1 x2 x3 x4 x5 B y1 y2 y3 y4 y5 计算它们之间的欧几里德距离最快的方法是什么 我的第一次尝试是 diff A B sum 0 for column 1 l
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 我需要转义该 MATLAB 字符串中的字符吗?

    我想在 MATLAB 中调用以下 bash 命令 grep Up to test linux vision1 1 log awk print 7 I use system 在MATLAB中 但结果有错误 gt gt status strin
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 如何在 MATLAB 中绘制 3D 曲面图?

    我有一个像这样的数据集 0 1 0 2 0 3 0 4 1 10 11 12 13 2 11 12 13 14 3 12 13 14 15 4 13 14 15 16 我想在 matlab 中绘制 3D 曲面图 使列标题位于 y 轴 行标题
  • 了解 fminunc 参数和匿名函数、函数处理程序

    请多多包涵 问题在最后 我试图找出 fminunc 调用方式的差异 这个问题源于 Andrew Ng 在他的 Coursera 机器学习课程中的第 3 周材料 我正在回答这个问题 Matlab Andrew Ng 机器学习课程中 t cos
  • MATLAB 中的霍夫变换

    有谁知道如何使用霍夫变换来检测二值图像中最强的线 A zeros 7 7 A 6 10 18 24 36 38 41 1 使用 rho theta 格式 其中 theta 以 45 为步长 从 45 到 90 以及如何在 MATLAB 中显
  • 给定协方差矩阵,在Matlab中生成高斯随机变量

    Given a M x M期望的协方差 R 以及所需数量的样本向量 N计算一个N x M高斯随机向量 X在普通 MATLAB 中 即不能使用r mvnrnd MU SIGMA cases 不太确定如何解决这个问题 通常你需要一个协方差并且意

随机推荐

  • [ C++ ] — 函数指针

    一 函数名 与 函数名 函数名就是函数的地址 void func void int main cout lt lt func lt lt endl cout lt lt func lt lt endl return 0 输出 00D2142
  • 月薪30k~50k,这个领域的人才正在被疯抢!

    2016 年 IT 业年平均工资破 12 万元 首次超过金融业 排名各行业门类首位 2017 年 IT 业再次高居榜首 并一举超过 13 万元 挣得多花的少的程序员已经成为相亲市场上的香饽饽 不过 程序员和程序员之间也是有贫富差距的 互联网
  • IntelliJ IDEA下载安装及配置JDK

    IntelliJ IDEA版本 2018 3 6 JDK版本 JDK8 目录 下载 IDEA和JDK下载 安装 JDK8安装 IDEA安装 IDEA配置JDK 下载 IDEA和JDK下载 下载文件包含IDEA2018 3 6 IDEA202
  • 测试开发必备技能

    一 掌握简单的Java基础知识 1 基本数据类型 包装类型 2 集合 List Set Map 3 能够看懂代码 不需要懂代码是怎么写的 二 数据库方面知识 1 基本常用的SQL会写 比如 查询 新增 更新 删除语句 2 会使用数据库客户端
  • 如何让PHPstorm更友好的支持Laravel

    1 在Laravel根目录下执行以下命令composer require barryvdh laravel ide helper 2 在Laravel项目中修改config app文件 将以下代码添加至providers数组中 Barryv
  • Android Studio 实现APP内部更新版本

    Android Studio 实现APP内部更新版本 需求 开发android app时 我们希望不通过应用市场而实现app内部更新 权限配置 我们需要先在AndroidManifest xml文件申请权限 允许应用程序访问有关网络的信息
  • Ubuntu安装singularity

    Ubuntu安装singularity 1 问题情景 2 解决 总结 1 问题情景 go语言安装后 安装singularit过程中出现了permission denied情况 原因是使用指定的确切版本 而不是最新版本 Configuring
  • ios文件操作

    1 NSFIleManager 获取文件名 文件管理 创建一个文件管理器 NSFileManager fm NSFileManager alloc init NSError error error输出参数 理解输入输出参数 传指针可以跨栈获
  • Java课题笔记~ 过滤器

    概念 过滤器 顾名思义 就是在源数据和目的数据之间起过滤作用的中间组件 过滤器可以动态地拦截请求和响应 以变换或使用包含在请求或响应中的信息 filter是对客户端访问资源的过滤 符合条件放行 不符合条件不放行 并且可以对目标资源访问前后进
  • Redis 学习笔记(十四)Redis Cluster介绍与搭建

    Redis Cluster 介绍与搭建 1 Redis Cluster介绍 Redis Cluster是Redis的分布式解决方案 在Redis 3 0版本正式推出的 有效解决了Redis分布式方面的需求 当遇到单机内存 并发 流量等瓶颈时
  • Linux 下 cuda 安装教程

    1 首先按照NVIDIA document上的规范 完成post install http docs nvidia com cuda cuda installation guide linux index html post install
  • JavaScript 算法 -- 动态规划

    文章目录 动态规划 动态规划与分而治之的区别 例题一 爬楼梯 例题二 打家劫舍 动态规划 动态规划是算法设计中的一种方法 它将一个问题分解为相互重叠的子问题 通过反复求解子问题 来解决原问题 动态规划与分而治之的区别 动态规划的子问题是相互
  • Elevator

    Elevator include
  • 超简单两步走解决Altium Designer 报错:Unknow Pin的解决方法

    AD 软件从原理图更新到PCB出现Unknow Pin 错误非常普遍 有因为元件封装问题 也有的是网络表问题 我找到一种超简单的解决办法 下图是一个超简单的运放电路 因为是一次画成并且已更新了PCB 并且没有出错 现在人为添上一个二极管 然
  • 基于单片机的空气质量监测

    设计简介 本设计是基于单片机的空气质量监测 主要实现以下功能 可实现LCD1602显示DS1302时间以及空气质量值 可通过按键对时间进行设置 可通过按键对空气质量阈值进行设置 可通过按键设置时间区间 当前时间在设置时间范围时 打开排风继电
  • php使用PhpSpreadsheet导入Excel表格

    一 安装 使用 composer 将 PhpSpreadsheet 安装到项目中 composer require phpoffice phpspreadsheet 二 导入 1 实例化读取类 文件格式是 xlsx 文件 objReader
  • 柚!音乐小程序 ---借鉴网易云APP设计(运用网易云真实Api)

    参考小破站小程序教程 通过点击每日推荐可以进行音乐播放 上一首下一首切换 前提要进行登录 最近可能登陆会有一些问题 运气好就登录进去了 服务器的问题 主要实现功能 点击每日推荐 会展示30首每日根据网易云推荐的歌曲 点击音乐进行播放 可以切
  • 6. 用Flask-Moment本地化日期和时间

    缘起 不同时区的时间不一样 而服务器要用的是统一的UTC时间 就跟实际中的格林威治时间一样 其他时区都以它为参考 这就需要服务器获取计算机本地的时间 一个elegant的解决方案是 把时间单位 time units 发送给Web浏览器 转换
  • unity3d实现模型点击事件

    一 实现 实现3D物体上的点击事件 点击物体Statue 01 弹出界面Image 二 Statue 01 代码 拖到Statue 01的Inspector面板上 using System Collections using System
  • 干货分享 - MatLab

    目录 1 前言 2 Latex基础 3 Latex尝鲜 4 Latex在MatLab中换行 5 Latex在MatLab中小花招 6 附录1 Tex对照表 7 附录2 常用Tex字符 1 前言 LaTeX语言作为应用最广泛的Tex格式 Te