我意识到这个疑问可能已经被问过了,但是我对 LaTeX 和 matlab 还比较陌生,所以我需要一些帮助。
我正在尝试导出一个图形以包含在我的tex
文档中(使用 进行编译pdflatex
)。该图形包含带有 LaTeX 字体的轴标签(xlabel(...,'interpreter',latex)
)。
我在网上搜索了很多,但还没有找到令人满意的解决方案。到目前为止,我最好的解决方案是使用该savefig.m
函数生成 png 文件,但质量并不理想
如有任何提示我将非常感激。
答案1
以下是您可以采用的可能性(我在工作中使用前两种):
出路 1
你可以尝试matlab2tikz并将您的图形导出为tikz
代码。
出路 2
尝试matfig2pgf并获取pgf
您的图形代码。matfig2pgf 还在 matlab 图形窗口中提供了一个不错的菜单,因此更加友好。
出路 3
如果你是 PSTricks 粉丝,请尝试图2texps并获取 pstricks 代码。
出路 4
尝试plot2svg 并获取 svg 图表。但这有点过头了,因为您必须再次找到将 svg 图形插入 latex 的方法。
出路 5
如果你有表面图,你可以看看surf2latex。
您可以在 mathworks 中搜索其他应用程序matlabcentral/文件交换并寻找各种(众多)方法。在该页面上搜索时,还可以使用不同的关键词,如 pgf、tikz、PSTricks、latex 等。希望这对您有用。
如何获得内心的平静
对于所有绘图需求,您可以开始使用pgfplots
。使用 matlab 从程序中获取数据点,然后使用pgfplots
进行绘图。有关详细信息,请参阅pgfplots 文档.pgfplots
也可以与 gnuplot 无缝地一起使用。因此,我们也可以使用 gnuplot 的计算能力。
一个例子:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}[scale=1.0]
\begin{axis}[xlabel=$x-$ label and some text,
ylabel=$y-$ label
]
%
\addplot[domain=-10000:10000, no markers,green,ultra thick] gnuplot{14*x - x^2 + x^3 - x^4};
%
\end{axis}
\end{tikzpicture}
Some text to show the similarity of fonts in figures and main body.
\end{document}
您需要gnuplot
安装才能使其工作并启用--shell-escape
选项pdflatex
。
答案2
我可以建议一些其他选项,但它们并不完全简单。你可以尝试一下。
此外,savefig.m
MathWorks Central 中还有一些流行的工具可以导出 Matlab 图形,例如导出图,矩阵碎片和拉普林特。
将它们从中分离出来matlabfrag
,并将laprint
matlab 图形拆分为图形流.eps
和文本流,即“.tex”。在 latex->dvips->ps2pdf 编译期间,PDF
使用包完成嵌入 latex 字体的图形的生成psfrag
。
有关简单演示laprint
,请matlabfrag
参见下面的链接
Matlab 图形与 LaTeX和PDF文档在此。 你可能需要工具包使得包在编译 psfrag
期间工作。pdflatex
例如export_fig
可以找到这里
使用一些关键字和标签进行搜索,如此链接所示 https://tex.stackexchange.com/search?q=matlab+pdflatex
与此主题相关的问题之一包含 Matlab 图形的最佳方法是什么?
PS:我主要使用export_fig
和matlabfrag
。
更新: 使用 mlf2pdf.m 我们可以在 matlab 中运行“带有 psfrag 命令的 latex-dvi-ps-pdf 编译”。我们不需要 latex 文档中的 pstool 或 psfrag。这是非常不流行的未知魔法函数。http://www.mathworks.com/matlabcentral/fileexchange/28545-matlabfrag-to-pdf
答案3
我最近了解到了另一种方法MATLAB 答案这涉及到重载 MATLAB 处理 TeX 和 LaTeX 标签的方式。基本上,当您在将解释器设置为 TeX 或 LaTeX 的图形中创建文本标签时,MATLAB 会使用名为 的函数处理该字符串tex.m
。此函数创建一个 MATLAB 字符串,这是一个相当典型的.tex
文件。它有一个\documentclass
和一个\begin{document}
和一个\end{document}
。文档类mwarticle
是开源的,本质上与文章类相同,只是有一些间距和页面布局变化。然后将 MATLAB 字符串传递给一个封闭的源.mex
文件,该文件进行处理并创建图像。看起来该.mex
文件本质上调用了某种tex
程序。这种理解提出了两种解决方案。
第一个是添加包的字符串。这有点困难,因为您需要包含包的路径。还不清楚文件调用的程序在多大程度上.mex
完全tex
符合要求。MATLAB 创建的字符串包括\nofiles
,并且不清楚如何处理多个传递。
我认为第二个解决方案很有趣,即重载tex.m
以调用您自己的 TeX 发行版。这样,您就可以对 MATLAB 文本标签进行任何您想做的事情。您甚至可以包含交叉引用和pgfplots
任何其他您想要的内容。