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:绘制线条.绘制椭圆.绘制图片 ...
随机推荐
- Eolinker----全局变量的不同场景使用
因为目前eolinker的API自动化测试不支持“构造参数”,因此针对“全局变量”的使用在不同的场景下,可采用不同的方式实现,但是一个参数既然设计成为了全局变量,那么在接口中使用时尽量保证书写风格一致 ...
- JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决
设置: document.getElementById('id').style.width=value document.getElementById('id').style.height=va ...
- spring+atomikos+mybatis 多数据源事务(动态切换)
注:自动切换,是为不同的数据源,却要对应相同的dao层: 1.与无事务版的一样,创建DynamicDataSource类,继承AbstractRoutingDataSource package com ...
- 【笔试题】Java 中如何递归显示一个目录下面的所有目录和文件?
笔试题 Java 中如何递归显示一个目录下面的所有目录和文件? import java.io.File; public class Test { private static void showDir ...
- 深入理解正则表达式-----应用于检测csrf的正则表达式
如何写检测和防御csrf的规则?我们可以利用正则表达式进行匹配.对POST包进行正则匹配,这里只是提供了一个思路. pcre:"/POST \/(?P<uri>.*?) HTTP ...
- NOIP2017 D1T1小凯的疑惑
这应该是近年来最坑的第一题了. 我第一眼看到这题上来就打表,数据范围告诉我复杂度应该是log级的,然而一个小时后才发现是一个输出结论. 设较小数是a 较大数是b 写出几组可以发现一个规律就是一旦出现连 ...
- 【推导】【贪心】【高精度】Gym - 101194E - Bet
题意:每个队伍有个赔率pi,如果你往他身上押x元,它赢了,那么你得到x+(1/pi)x元,否则你一分都得不到.问你最多选几支队伍去押,使得存在一种押的方案,不论你押的那几支队伍谁赢,你都能赚得到钱. ...
- [CodeForces850C]Arpa and a game with Mojtaba
题目大意: 给你一个包含n个数的数列,两个人轮流对数列进行如下操作: 选择一个质数p和一个正整数k,将数列中所有能被p^k整除的数除以p^k. 最后不能操作者负. 问先手是否有必胜策略. 思路: 显然 ...
- bzoj 3931: [CQOI2015]网络吞吐量 -- 最短路+网络流
3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec Memory Limit: 512 MB Description 路由是指通过计算机网络把信息从源地址传输到目的地址 ...
- Linux下对拍程序
在程序对应文件夹下存为.sh文件 在终端命令中进入相应文件夹,用 sh XXX.sh 调用 while true; do ./datamaker>tmp.in ./baoli<tmp.in ...