目的是在MATLAB中绘图,在LaTeX中利用PGFPlots实现对图的修饰,比如坐标系、坐标轴标记、标题等等。这样能够保证图的中标记与正文文本的一致性,同时又可利用MATLAB强大的数据处理和丰富的绘图功能。整个过程比较顺畅,可以一试。

假设LaTeX文档所在的文件夹是E:\TeX,如下MATLAB代码构成的脚本文件保存在该文件夹下,改变MATLAB的当前目录为E:\TeX,执行该MATLAB脚本,在当前目录下得到如下pdf文档。

MATLAB代码:

  1. %% 第一个图
  2. figname='fig1';
  3. % 绘图
  4. x=linspace(0,3*pi,20);
  5. plot(x,sin(x)+100,'-o',x,100+x.^2/20)
  6. % 绘图结束
  7. axis off
  8. set(gca,'Position',[0,0,1,1])
  9. set(gcf,'PaperSize',[8,8])
  10. set(gcf,'PaperPosition',[0.01,0.01,7.98,7.98])
  11. lim=get(gca,'xlim');
  12. set(gca,'xlim',[lim(1) lim(2)+(lim(2)-lim(1))/19])
  13. lim=get(gca,'ylim');
  14. set(gca,'ylim',[lim(1) lim(2)+(lim(2)-lim(1))/19])
  15. print('-dpdf',figname);
  16. dlmwrite([figname '.dat'],[get(gca,'xlim');get(gca,'ylim');get(gca,'zlim')],' ');
  17. %% 第二个图
  18. figname='fig2';
  19. % 绘图
  20. peaks(300);
  21. shading interp
  22. view([0,90])
  23. % 绘图结束
  24. axis off
  25. set(gca,'Position',[0,0,1,1])
  26. set(gcf,'PaperSize',[8,8])
  27. set(gcf,'PaperPosition',[0.01,0.01,7.98,7.98])
  28. set(gca,'XLimMode','manual')
  29. print('-dpdf',figname);
  30. dlmwrite([figname '.dat'],[get(gca,'xlim');get(gca,'ylim');get(gca,'zlim')],' ');
  31. %% 编译LaTeX文档
  32. !pdflatex exam.tex

LaTeX文档(exam.tex):

  1. \documentclass[a4paper]{article}
  2. \usepackage{CJK}
  3. \usepackage{pgfplots}
  4. \usepackage{pgfplotstable}
  5. \pgfplotsset{width=8cm,compat=1.3}
  6. \begin{document}
  7. \begin{CJK*}{GBK}{kai}
  8. \thispagestyle{empty}
  9. \pgfplotstableread{fig1.dat}\loadedtable
  10. \pgfplotstablegetelem{0}{[index]0}\of{\loadedtable}
  11. \edef\xmin{\pgfplotsretval}
  12. \pgfplotstablegetelem{0}{[index]1}\of{\loadedtable}
  13. \edef\xmax{\pgfplotsretval}
  14. \pgfplotstablegetelem{1}{[index]0}\of{\loadedtable}
  15. \edef\ymin{\pgfplotsretval}
  16. \pgfplotstablegetelem{1}{[index]1}\of{\loadedtable}
  17. \edef\ymax{\pgfplotsretval}
  18. \begin{center}
  19. 这是第一个图
  20. \end{center}
  21. \begin{tikzpicture}
  22. \begin{axis}[axis x line=bottom, axis y line=left,enlargelimits=false,axis on top]
  23. \addplot graphics [xmin=\xmin,xmax=\xmax, ymin=\ymin,ymax=\ymax] {fig1.pdf};
  24. \end{axis}
  25. \end{tikzpicture}
  26. \pgfplotstableread{fig2.dat}\loadedtable
  27. \pgfplotstablegetelem{0}{[index]0}\of{\loadedtable}
  28. \edef\xmin{\pgfplotsretval}
  29. \pgfplotstablegetelem{0}{[index]1}\of{\loadedtable}
  30. \edef\xmax{\pgfplotsretval}
  31. \pgfplotstablegetelem{1}{[index]0}\of{\loadedtable}
  32. \edef\ymin{\pgfplotsretval}
  33. \pgfplotstablegetelem{1}{[index]1}\of{\loadedtable}
  34. \edef\ymax{\pgfplotsretval}
  35. \begin{center}
  36. 这是第二个图
  37. \end{center}
  38. \begin{tikzpicture}
  39. \begin{axis}[enlargelimits=false,axis on top]
  40. \addplot graphics [xmin=\xmin,xmax=\xmax, ymin=\ymin,ymax=\ymax] {fig2.pdf};
  41. \end{axis}
  42. \end{tikzpicture}
  43. \end{CJK*}
  44. \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结合绘图的更多相关文章

  1. TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)

    TeX 家族 带有 TeX 的词,仅仅是本文就已经提到了 TeX, LaTeX, XeLaTeX.通常中国学生面对不了解意思的一群形近单词,都会有一种「本能的恐惧」(笑~).因此,「大神们」在为新手介 ...

  2. matlab构建栅格地图绘图思路

    matlab构建栅格地图绘图思路 近来因研究需要,调研并思考了栅格地图的生成方法,暂时总结以备不时之需. 栅格的建立最需要注意栅格粒度的问题,即根据需要调整栅格的边长,目前有两种思路一种是固定栅格边长 ...

  3. TeX系列: tikz-3dplot绘图宏包

    tikz-3dplot包提供了针对TikZ的命令和坐标变换样式, 能够相对直接地绘制三维坐标系统和简单三维图形. tikz-3dplot包当前处于初创期, 有很多功能有待完善. 安装过程如下: (1) ...

  4. matlab作图 latex插图

    推荐用saveas eps,再用eps2pdf转成pdf.这样可以之间pdflatex编译. if result.savepic saveas(gcf,[ pwd '/picture/right_' ...

  5. Tex系列: pgfplots安装

    (1)  上网下载最新宏包压缩包 http://sourceforge.net/projects/pgfplots/files/pgfplots/ (2)解压压缩包,把该包下的tex子目录拷贝至D:\ ...

  6. matlab figure 论文级别绘图

    1.将figure调整为最大: figure;set(gcf,'outerposition',get(0,'screensize')); 2.获得figure中的大小 [x,y] = ginput 3 ...

  7. matlab实现贝塞尔曲线绘图pdf查看

    贝塞尔曲线绘图方法: %Program 3.7 Freehand Draw Program Using Bezier Splines %Click in Matlab figure window to ...

  8. matlab图片 latex显示

    matlab图片另存为bmp格式,用在线网站转换格式为png. 莫要直接另存为jpg格式,在latex中显示,否则图片显示的质量不高.

  9. Html5 学习系列(五)Canvas绘图API快速入门(2)

    Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...

随机推荐

  1. apache Apache winnt_accept: Asynchronous AcceptEx failed 错误的解决

    httpd配置文件中添加: AcceptFilter http noneAcceptFilter https none apache优化: http://blog.csdn.net/hytfly/ar ...

  2. NIO-5补充

    import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import ...

  3. 【PAT】1007. 素数对猜想 (20)

    1007. 素数对猜想 (20) 让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数.显然有 d1=1 且对于n>1有 dn 是偶数.“素数对猜想”认为“存在无穷多对相 ...

  4. SQL Server Connection Pooling (ADO.NET)

    SQL Server Connection Pooling (ADO.NET) Connecting to a database server typically consists of severa ...

  5. 阿里云ecs 服务器配置

    阿里云ecs 7.0+安装mysql 5.6 http://jingyan.baidu.com/article/454316ab67bd02f7a7c03af4.html 安装jdk yum -y i ...

  6. 【C#】数据类型(sbyte,byte,short,ushort,int,uint,long,ulong和char。、、、)

    C#的数据类型可以分为3类:数值类型,引用类型,指针类型.指针类型仅在不安全代码中使用. 值类型包括简单类型(如字符型,浮点型和整数型等),集合类型和结构型.引用类型包括类类型,接口类型,代表类型和数 ...

  7. Scrapy 笔记(三)

    摘抄自Python 一.随机user-agent 的设置 关于配置和代码 这里我找了一个之前写好的爬虫,然后实现随机更换User-Agent,在settings配置文件如下: DOWNLOADER_M ...

  8. [JSOI2007]文本生成器 --- AC自动机 + DP

    [JSOI2007]文本生成器 题目描述: JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版. 该软件可以随机 ...

  9. [APIO2014]序列分割 --- 斜率优化DP

    [APIO2014]序列分割 题目大意: 你正在玩一个关于长度为\(n\)的非负整数序列的游戏.这个游戏中你需要把序列分成\(k+1\)个非空的块.为了得到\(k+1\)块,你需要重复下面的操作\(k ...

  10. HDU1429 胜利大逃亡 状压bfs

    http://acm.hdu.edu.cn/viewcode.php?rid=22225154 因为总共a-j有10种钥匙,所以可以把有没有钥匙的状态压到一个int数里,然后dfs. 昨天状态特别不好 ...