matlab与latex结合,TeX系列:MATLAB和LaTeX结合绘图

matlab与latex结合,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);mide302
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⽂档
!
LaTeX⽂档():
\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代码.  参见

本文发布于:2024-09-23 04:20:14,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/143807.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:绘图   标记   脚本   件夹   坐标系   标题   坐标轴
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议