
Matlab中巧用LaTex
众所周知,大多数科研工作者(大Boss或者象我们一样的学术打工仔)都会用到Matlab生成,的title或者legend最好有相应的说明,经常用到公式,比方说α,β等。但大多数人往往是利用图像后处理软件如Photoshop或illustrator等对生成的进行加工。
Latex是被公认的生成公式最漂亮的排版语言(软件),成为事实上学术排版的标准。那么能否利用latex生成公式插入到Matlab生成的中呢?答案是肯定的。
Matlab带有Latex解析器,能支持latex的各种符号,比如积分符号等等。
Matlab图形中title、xlabel、ylabel、zlabel、textbox和legend等的Interpreter属性有三个属性:latex 、tex、none。默认为tex。
当键入:>> set(text,'Interpreter')
Matlab将返回'Interpreter'所包含的属性值:
[ latex | {tex} | none ]。
利用Matlab文本的Interpreter属性使我们能在图形中显示一个较为复杂的公式,例如在公式中除了有希腊字母外,还有分号、根号等数学符号。
Tex的用法在Matlab的帮助文档里有详细介绍,这里主要介绍一下如何采用latex编辑公式。
在matlab中,Latex编辑公式的基本格式:
1、\( LaTeX命令 \)
2、$ LaTeX命令 $
3、$$ LaTeX命令 $$
1 在图象中直接加字符,很简单。
text('Interpreter','latex','String','$$\sqrt{x^2+y^2}$$','Position',[55],… 'FontSize',16);
2 在legend里加数学字符
h=legend('$$\sqrt{x^2+y^2}$$');
set(h,'Interpreter','latex')
当然也可以使用\( \)命令。以此类推也可以对title、xlabel、ylabel、zlabel和legend等使用LaTeX命令,如:
xlabel({'$\int_0^x\!\int_y dF(u,v)$'},'Interpreter','latex')
至于LaTeX命令使用方法可以参考LaTeX教程。
另外,Matlab可以吧计算结果转化成Latex格式,对于Matlab计算出的符号运算结果,可以通过latex()函数转化成LeTeX命令格式。由于latex()函数只对符号表达式进行转换,对于数值结果一定要通过sym()函数转化成符号结果。所以,为防止对数值结果转化出错,可同时使用latex()和sym()函数:latex(sym(s)); 其中s代表符号表达式。
例如:>>syms a b c
s=a/b+c
使用latex(s)后转化为LeTeX命令:
{\frac {a}{b}}+c
Tex字符在输出一些数学公式时经常使用,它只能由类型为text的对象创建。函数title、xlabel、ylabel、zlabel或text都能 创建一个text对象,因此Tex字符转义符(带“\”的字符串)经常作为这些函数的输入参数。如果要输出希腊字母,可以使用texlabel函数将希腊 字母的变量名转化为希腊字母的函数,供函数title、xlabel、ylabel、zlabel或text使用。texlabel转换MATLAB表达式为等价的Tex格式字符串。它处理希腊字母的变量名为实际显示的希腊字母字符串。希腊字母的变量名为“\”后面的字符串。
Tex字符及其函数表
函数字符 代表符号 函数字符 代表符号 函数字符 代表符号
\alpha α \upsilon υ \sim ~
\beta β \phi ϕ \leq ≤
\gamma γ \chi χ \infty ∞
\delta δ \psi ψ \clubsuit
\epsilon ϵ \omega ω \diamondsuit
\zeta ζ \Gamma Γ \heartsuit
\eta η \Delta Δ \spadesuit
\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 ς \ni \div ÷
\tau τ \cong ≅ \neq ≠
\equiv ≡
\approx ≈ \aleph ℵ
\Im \Re \wp
\otimes ⊗ \oplus ⊕ \oslash
\cap ∩ \cup ∪ \supseteq ⊇
\supset ⊂ \subseteq ⊆ \subset ⊃
\int ∫ \in ∈ \o ο
\rfloor \lceil \nabla
\lfloor \cdot \ldots
\perp \neg \prime
\wedge \times \0 ∅
\rceil \surd \mid |
\vee \varpi \copyright ©
\langle \rangle
具体的公式编辑命令:
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.省略号: $\cdots \ldots \vdots \ddots $
(1)Tex字符的字体设置有如下6种。
①\bf:设置字体为粗体字。
②\it:设置字体为斜体字。
③\sl:设置字体为斜体字,很少使用。
④\rm:设置字体为正常字体。
⑤\fontname{字体名}:设置字体名。例如:\fontname{宋体}。
⑥\fontsize{字体大小}:设置字体大小。例如:\fontsize{16}。
(2)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}。
(3)Tex字符的位置有2种设置。
①_:表示下标。 ②^:表示上标。
您可以通过以下代码为 Matlab 绘图中的坐标轴命名为 r∞:
xlabel('r∞')
ylabel('y')
其中,xlabel 用于命名 x 轴,ylabel 用于命名 y 轴。
close all;
clear all;
data = xlsread('工作簿数据xlsx','sheet2','g2:g106556'); %读入数据
%测试数据 data = lognrnd(8,7,10000,1);
[y x]=hist(data,200); %统计频次分布
h=bar(x,y,1); %画直方图
hold on;
%对数正态分布密度函数
fun=@(p,x) p(1)/xexp(-((log(x)-p(2))/p(3))^2/2);
%A=p(1),mu=p(2),sigma=p(3)
[maxy ind]=max(y);
%做非线性数据拟合
p=nlinfit(x,y,fun,[maxyx(ind),log(x(ind)),1]);
%画拟合曲线
x1 = min(x):001:max(x);
yfit=fun(p,x1);
plot(x1,yfit,'r','linewidth',1);
%极大似然处 x=exp(mu-sigma^2);
xmax=exp(p(2)-p(3)^2);
ymax=fun(p,xmax);
plot([xmax xmax],[0 ymax],'g','linewidth',2);
%期望值处 x=exp(mu+sigma^2/2)
xmean=exp(p(2)+p(3)^2/2);
ymean=fun(p,xmean);
plot([xmean xmean],[0 ymean],'c','linewidth',2);
xlim([min(x) max(x)]);
xlabel('BC浓度(ng/m^3)');
ylabel('频数');
legend('统计数据',['对数正态分布:\mu=' num2str(p(2)) ',\sigma=' num2str(p(3))],
['极大概然分布位置:x=' num2str(xmax)],['期望值位置:x=' num2str(xmean)]);
text(xmean+10000,ymean+10,'$ y=\frac{A}{x}e^{-\frac{(lnx-\mu)^2}{2\sigma^2}} $',
'interpreter','latex','FontSize',18);
您好,看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分的并且你的悬赏分也会被没收!所以我给你提几条建议,希望对你有所帮助:
一,
你可以选择在正确的分类和问题回答的高峰时段(中午11:00-3:00 晚上17:00-24:00)去提问,这样知道你问题答案的人才会多一些,回答的人也会多些。
二,你可以请教老师,问问同学,共同学习互相进步
三,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的。
四,网上很多专业论坛以及知识平台,(如作业帮)上面也有很多资料,我遇到专业性的问题总是上论坛求解决办法的。
五,将你的问题问的细一些,清楚一些!让人更加容易看懂明白是什么意思!
~\(^o^)/~祝学习进步~~~
希望对你有帮助,你的采纳就是我们回答的动力!帅气又萌萌哒你不要忘了采纳!!!!
在MATLAB中,可以通过如下代码实现此任务:
% 定义时间范围
t = linspace(0, 002, 1000);
% 计算x1, x2和y
x1 = sin(50t);
x2 = 2sin(500t);
y = x1 + x2;
% 绘制图形
figure;
% 上面窗口
subplot(2,1,1);
plot(t, x1, '-r', 'LineWidth', 2, 'DisplayName', 'x1');
hold on;
plot(t, x2, '-b', 'LineWidth', 2, 'DisplayName', 'x2');
xlabel('时间 (s)');
ylabel('幅值');
title('个人学号、姓名 - x1和x2的函数曲线');
text(001, 18, '图1');
legend('show');
% 下面窗口
subplot(2,1,2);
plot(t, y, '-g', 'LineWidth', 2, 'DisplayName', 'y');
xlabel('时间 (s)');
ylabel('幅值');
title('个人学号、姓名 - y的函数曲线');
text(001, -35, '图2');
legend('show');
其中,subplot(2,1,1)表示将图形窗口分成2行1列,当前窗口位于第1行;subplot(2,1,2)表示当前窗口位于第2行。plot函数用于绘制曲线,其中'DisplayName'参数用于标注曲线名称,legend('show')用于显示图例。xlabel和ylabel用于标注坐标轴,title用于标注图形标题,text用于标注其他信息。
顺序无所谓
你的程序是直接复制上来的吗?xlabel前半个括号是中文的,但这个不应该报“Missing variable or function”的,lz检查下拼写以及括号和引号是否配对
以上就是关于如何在matlab中的xlabel,ylabel,legend和text函数中使用latex全部的内容,包括:如何在matlab中的xlabel,ylabel,legend和text函数中使用latex、matlab绘图坐标轴命名r∞、请问如何用matlab对一列数据画出对数正态分布曲线,并得到如下图所示的参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)