TeX系列: MATLAB和LaTeX结合绘图
目的是在MATLAB中绘图,在LaTeX中利用PGFPlots实现对图的修饰,比如坐标系、坐标轴标记、标题等等。这样能够保证图的中标记与正文文本的一致性,同时又可利用MATLAB强大的数据处理和丰富的绘图功能。整个过程比较顺畅,可以一试。
假设LaTeX文档所在的文件夹是E:\TeX,如下MATLAB代码构成的脚本文件保存在该文件夹下,改变MATLAB的当前目录为E:\TeX,执行该MATLAB脚本,在当前目录下得到如下pdf文档。

MATLAB代码:
- %% 第一个图
- figname='fig1';
- % 绘图
- x=linspace(0,3*pi,20);
- plot(x,sin(x)+100,'-o',x,100+x.^2/20)
- % 绘图结束
- axis off
- set(gca,'Position',[0,0,1,1])
- set(gcf,'PaperSize',[8,8])
- set(gcf,'PaperPosition',[0.01,0.01,7.98,7.98])
- lim=get(gca,'xlim');
- set(gca,'xlim',[lim(1) lim(2)+(lim(2)-lim(1))/19])
- lim=get(gca,'ylim');
- set(gca,'ylim',[lim(1) lim(2)+(lim(2)-lim(1))/19])
- print('-dpdf',figname);
- dlmwrite([figname '.dat'],[get(gca,'xlim');get(gca,'ylim');get(gca,'zlim')],' ');
- %% 第二个图
- figname='fig2';
- % 绘图
- peaks(300);
- shading interp
- view([0,90])
- % 绘图结束
- axis off
- set(gca,'Position',[0,0,1,1])
- set(gcf,'PaperSize',[8,8])
- set(gcf,'PaperPosition',[0.01,0.01,7.98,7.98])
- set(gca,'XLimMode','manual')
- print('-dpdf',figname);
- dlmwrite([figname '.dat'],[get(gca,'xlim');get(gca,'ylim');get(gca,'zlim')],' ');
- %% 编译LaTeX文档
- !pdflatex exam.tex
LaTeX文档(exam.tex):
- \documentclass[a4paper]{article}
- \usepackage{CJK}
- \usepackage{pgfplots}
- \usepackage{pgfplotstable}
- \pgfplotsset{width=8cm,compat=1.3}
- \begin{document}
- \begin{CJK*}{GBK}{kai}
- \thispagestyle{empty}
- \pgfplotstableread{fig1.dat}\loadedtable
- \pgfplotstablegetelem{0}{[index]0}\of{\loadedtable}
- \edef\xmin{\pgfplotsretval}
- \pgfplotstablegetelem{0}{[index]1}\of{\loadedtable}
- \edef\xmax{\pgfplotsretval}
- \pgfplotstablegetelem{1}{[index]0}\of{\loadedtable}
- \edef\ymin{\pgfplotsretval}
- \pgfplotstablegetelem{1}{[index]1}\of{\loadedtable}
- \edef\ymax{\pgfplotsretval}
- \begin{center}
- 这是第一个图
- \end{center}
- \begin{tikzpicture}
- \begin{axis}[axis x line=bottom, axis y line=left,enlargelimits=false,axis on top]
- \addplot graphics [xmin=\xmin,xmax=\xmax, ymin=\ymin,ymax=\ymax] {fig1.pdf};
- \end{axis}
- \end{tikzpicture}
- \pgfplotstableread{fig2.dat}\loadedtable
- \pgfplotstablegetelem{0}{[index]0}\of{\loadedtable}
- \edef\xmin{\pgfplotsretval}
- \pgfplotstablegetelem{0}{[index]1}\of{\loadedtable}
- \edef\xmax{\pgfplotsretval}
- \pgfplotstablegetelem{1}{[index]0}\of{\loadedtable}
- \edef\ymin{\pgfplotsretval}
- \pgfplotstablegetelem{1}{[index]1}\of{\loadedtable}
- \edef\ymax{\pgfplotsretval}
- \begin{center}
- 这是第二个图
- \end{center}
- \begin{tikzpicture}
- \begin{axis}[enlargelimits=false,axis on top]
- \addplot graphics [xmin=\xmin,xmax=\xmax, ymin=\ymin,ymax=\ymax] {fig2.pdf};
- \end{axis}
- \end{tikzpicture}
- \end{CJK*}
- \end{document}
也许有一个更好的办法,使用matlab2tikz把matlab图形直接转化成tikzp/gfplots代码. 参见
http://blog.csdn.net/mathsoperator/article/details/6826208
from: http://blog.csdn.net/mathsoperator/article/details/6821336
TeX系列: MATLAB和LaTeX结合绘图的更多相关文章
- TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)
TeX 家族 带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX.通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~).因此,「大神们」在为新手介 ...
- matlab构建栅格地图绘图思路
matlab构建栅格地图绘图思路 近来因研究需要,调研并思考了栅格地图的生成方法,暂时总结以备不时之需. 栅格的建立最需要注意栅格粒度的问题,即根据需要调整栅格的边长,目前有两种思路一种是固定栅格边长 ...
- TeX系列: tikz-3dplot绘图宏包
tikz-3dplot包提供了针对TikZ的命令和坐标变换样式, 能够相对直接地绘制三维坐标系统和简单三维图形. tikz-3dplot包当前处于初创期, 有很多功能有待完善. 安装过程如下: (1) ...
- matlab作图 latex插图
推荐用saveas eps,再用eps2pdf转成pdf.这样可以之间pdflatex编译. if result.savepic saveas(gcf,[ pwd '/picture/right_' ...
- Tex系列: pgfplots安装
(1) 上网下载最新宏包压缩包 http://sourceforge.net/projects/pgfplots/files/pgfplots/ (2)解压压缩包,把该包下的tex子目录拷贝至D:\ ...
- matlab figure 论文级别绘图
1.将figure调整为最大: figure;set(gcf,'outerposition',get(0,'screensize')); 2.获得figure中的大小 [x,y] = ginput 3 ...
- matlab实现贝塞尔曲线绘图pdf查看
贝塞尔曲线绘图方法: %Program 3.7 Freehand Draw Program Using Bezier Splines %Click in Matlab figure window to ...
- matlab图片 latex显示
matlab图片另存为bmp格式,用在线网站转换格式为png. 莫要直接另存为jpg格式,在latex中显示,否则图片显示的质量不高.
- Html5 学习系列(五)Canvas绘图API快速入门(2)
Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...
随机推荐
- Spring MVC数据绑定(二)
之前学习了SpringMVC数据绑定的基本知识和简单数据绑定以及POJO类型数据的绑定.接下来总结剩下的一些数据类型的绑定 1. 绑定包装POJO 所谓的包装POJO,就是在一个POJO中包含另一个简 ...
- 关于node.js的模块查找顺序(require.resolve())
前几天社团群里有人问了阿里秋季前端笔试的一道题,想起来以前在官方文档看到过查找模块的算法,干脆自己写一写…… 官方的require.resolve实现在这里. 因为我只是想看看查找过程,所以就直接把会 ...
- 获取对象的key【键】和分别获取数组的key【键】和值
一.先说对象,如何获取key[键]: var obj={ name:"websong", qq:289483936 } 想要获取这个obj对象的键“name”和"qq&q ...
- 使用自己的域名解析 cnblogs 博客
使用自己的域名解析 cnblogs 博客(博客园) 1.实现原理 用户访问 -> 阿里云解析 -> github page 跳转 -> 真实的博客地址 2.创建 github pag ...
- 20169211《Linux内核原理与分析》第四周作业
20169211<Linux内核原理与分析>第四周作业内容列表 1.教材第3.5章节知识学习总结: 2.实验楼配套实验二实验报告: 1.<linux内核设计与实现>教材第3.5 ...
- 爱奇艺全国高校算法大赛初赛A
$01$背包. 数据范围:物品个数小于等于$3000$,背包大小小于等于$1000000$. $map<int,long long>dp$,用$map$去做$dp$,可以少遍历很多状态,可 ...
- Python并发编程-进程池的返回值
同步或异步获取返回值 #p = Pool() #p.map(funcname,iterable) 默认异步的执行任务,且自带close,join功能 #p.apply(), 同步调用进程池的方法 #p ...
- 关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false
关于如何在 Unity 的 UI 菜单中默认创建出的控件 Raycast Target 属性默认为 false 我们在 Unity 中通过 UI 菜单创建的各种控件,比如 Text, Image 等, ...
- 使用 Eigen 3.3.3 进行矩阵运算
Eigen是一个能够进行线性代数运算的C++开源软件包,包含矩阵和矢量操作,Matlab中对矩阵的大多数操作都可以在Eigen中找到. 最近需要计算厄米特矩阵的逆,基于LLT分解和LDLT分解,自己写 ...
- CentOS服务器安装Telnet来远程连接服务器
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.前言 在连接远程服务器时有很多种连接方式,如SSH.telnet.SFTP等.但是如果大家在docker上面安装gitlab做 ...