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:绘制线条.绘制椭圆.绘制图片 ...
随机推荐
- 解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
https://itbilu.com/linux/management/NymXRUieg.html
- Good Bye 2014 E - New Year Domino 单调栈+倍增
E - New Year Domino 思路:我用倍增写哒,离线可以不用倍增. #include<bits/stdc++.h> #define LL long long #define f ...
- Docker数据卷和Docker系统管理(二)
一. 在镜像中定义卷 1. Dockerfile中定义卷的案例 VOLUME /app/data VOLUME /app/data, /app/profiles, /app/config VOLUME ...
- 16.Spark Streaming源码解读之数据清理机制解析
原创文章,转载请注明:转载自 听风居士博客(http://www.cnblogs.com/zhouyf/) 本期内容: 一.Spark Streaming 数据清理总览 二.Spark Streami ...
- nodejs pm2配置使用教程
pm2是非常优秀工具,它提供对基于node.js的项目运行托管服务.它基于命令行界面,提供很多特性: 内置的负载均衡器等等,下面我们就一起来看看吧. 一.简介 pm2是一个带有负载均衡功能的应用进程管 ...
- 洛谷P2231 [HNOI2002]跳蚤 [数论,容斥原理]
题目传送门 跳蚤 题目描述 Z城市居住着很多只跳蚤.在Z城市周六生活频道有一个娱乐节目.一只跳蚤将被请上一个高空钢丝的正中央.钢丝很长,可以看作是无限长.节目主持人会给该跳蚤发一张卡片.卡片上写有N+ ...
- linux下安装Python3.4.1
1.下载linux 版本的 Python 我是在Windows下下载的,然后共享到linux下. 2.解压文件 tar -xvf Python-3.4.1.tar x是解压 v是查看所有过程 f是使用 ...
- Bzoj2152/洛谷P2634 聪聪可可(点分治)
题面 Bzoj 洛谷 题解 点分治套路走一波,考虑\(calc\)函数怎么写,存一下每条路径在\(\%3\)意义下的路径总数,假设为\(tot[i]\)即\(\equiv i(mod\ 3)\),这时 ...
- 「COCI2016/2017 Contest #2」Bruza
「COCI2016/2017 Contest #2」Bruza 解题思路 : 首先对于任意时刻 \(i\) ,硬币一定移动到了深度为 \(i\) 的节点,所以第 \(i\) 时刻 Danel 一定染掉 ...
- ( VIJOS )VOJ 1049 送给圣诞夜的礼品 矩阵快速幂
https://vijos.org/p/1049 非常普通的矩阵快速幂... 但是我 第一次写忘了矩阵不能交换律... 第一二次提交RE直到看到题解才发现这道题不能用递归快速幂... 第三次提交成 ...