目的是在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. 洛谷 P1184高手之在一起 题解

    题目传送门 那位高手是谁啊?@jxpxcsh  QWQ. 这道题数据特别水,所以直接使用O(n*m),每读进一个m内的字符串,就扫一遍n的字符串.但注意地点字符串中有可能会有空格,所以这时候就要请出g ...

  2. 【转】Android打印机--没有设备驱动sdk,自己实现USB打印功能

    原文:http://blog.csdn.net/johnwcheung/article/details/71576833 Android下的设备调试,如果设备提供了驱动,按照厂家的驱动调试即可:设备未 ...

  3. 二安装Python

    因为Python是跨平台的,它可以运行在Windows.Mac和各种Linux/Unix系统上.在Windows上写Python程序,放到Linux上也是能够运行的. 要开始学习Python编程,首先 ...

  4. 500 多个 Linux 命令文档搜索

    500 多个 Linux 命令文档搜索 搜索界面:https://wangchujiang.com/linux-command/ 源码:https://github.com/jaywcjlove/li ...

  5. JavaScript中变量、作用域、内存问题

    这几天,闲的没事看看JavaScript高级编程,感觉JavaScript真的很强大,尤其是采用面向对象的编程方式. 一.   基本类型和引用类型的值: ECMAScript变量可能包含两种不同数据类 ...

  6. QString 与中文问题

    原文请看:http://www.cnblogs.com/phoenixlaozhu/articles/2553180.html (更新:本文的姊妹篇Qt5与中文问题) 首先呢,声明一下,QString ...

  7. SQL必知必会 -------- 通配符、计算字段、函数

    1.LIKE操作符 1.1百分号(%)通配符 SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%' 此例子使用了搜索 ...

  8. CodeForces 811C Vladik and Memorable Trip

    $dp$. 记录$dp[i]$表示以位置$i$为结尾的最大值. 枚举最后一段是哪一段,假设为$[j,i]$,那么可以用$max(dp[1]...dp[j-1]) + val[j][i]$去更新$dp[ ...

  9. Android之 解析XML文件(1)—— Pull解析

    (以下文章基本照抄<第一行代码>) 解析XML文件有很多方法,这里主要讲Pull解析和SAX解析.这篇文章主要是讲Pull解析. 一.Pull解析参考代码 先上代码: private vo ...

  10. 从Mybatis的视角去看Bean的初始化流程

    不涉及Spring完整的启动流程,仅仅从Mybatis的视角去分析几个关键的方法,找到Mybatis是如何通过这几个扩展点植入进去的,反过来看Spring是如何设计,埋下这些伏笔,实现其可扩展性. s ...