zoukankan      html  css  js  c++  java
  • TeX系列: MATLAB和LaTeX结合绘图

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

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

     MATLAB代码:

    [python] view plain copy
     
    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.   
    32. %% 编译LaTeX文档  
    33. !pdflatex exam.tex  

    LaTeX文档(exam.tex):

    [python] view plain copy
     
    1. documentclass[a4paper]{article}  
    2. usepackage{CJK}  
    3. usepackage{pgfplots}  
    4. usepackage{pgfplotstable}  
    5. pgfplotsset{width=8cm,compat=1.3}  
    6. egin{document}  
    7. egin{CJK*}{GBK}{kai}  
    8. hispagestyle{empty}  
    9.   
    10. pgfplotstableread{fig1.dat}loadedtable  
    11. pgfplotstablegetelem{0}{[index]0}of{loadedtable}  
    12. edefxmin{pgfplotsretval}  
    13. pgfplotstablegetelem{0}{[index]1}of{loadedtable}  
    14. edefxmax{pgfplotsretval}  
    15. pgfplotstablegetelem{1}{[index]0}of{loadedtable}  
    16. edefymin{pgfplotsretval}  
    17. pgfplotstablegetelem{1}{[index]1}of{loadedtable}  
    18. edefymax{pgfplotsretval}  
    19.   
    20. egin{center}  
    21.   这是第一个图  
    22. end{center}  
    23.   
    24. egin{tikzpicture}  
    25. egin{axis}[axis x line=bottom, axis y line=left,enlargelimits=false,axis on top]  
    26.   addplot graphics [xmin=xmin,xmax=xmax, ymin=ymin,ymax=ymax] {fig1.pdf};  
    27. end{axis}  
    28. end{tikzpicture}  
    29.   
    30. pgfplotstableread{fig2.dat}loadedtable  
    31. pgfplotstablegetelem{0}{[index]0}of{loadedtable}  
    32. edefxmin{pgfplotsretval}  
    33. pgfplotstablegetelem{0}{[index]1}of{loadedtable}  
    34. edefxmax{pgfplotsretval}  
    35. pgfplotstablegetelem{1}{[index]0}of{loadedtable}  
    36. edefymin{pgfplotsretval}  
    37. pgfplotstablegetelem{1}{[index]1}of{loadedtable}  
    38. edefymax{pgfplotsretval}  
    39.   
    40.   
    41. egin{center}  
    42.   这是第二个图  
    43. end{center}  
    44.   
    45. egin{tikzpicture}  
    46. egin{axis}[enlargelimits=false,axis on top]  
    47.   addplot graphics [xmin=xmin,xmax=xmax, ymin=ymin,ymax=ymax] {fig2.pdf};  
    48. end{axis}  
    49. end{tikzpicture}  
    50.   
    51.   
    52. end{CJK*}  
    53. end{document}  


     

    也许有一个更好的办法,使用matlab2tikz把matlab图形直接转化成tikzp/gfplots代码.  参见

    http://blog.csdn.net/mathsoperator/article/details/6826208

    from: http://blog.csdn.net/mathsoperator/article/details/6821336

  • 相关阅读:
    分布式唯一ID:雪花ID Snowflake .Net版
    jTopo HTML5 Canvas 画图组件
    运用四色建模法进行领域分析
    .netcore 分布式事务CAP2.6之控制台使用
    .netcore 分布式事务CAP2.6 快速入门
    .NetCore从零开始使用Skywalking分布式链路追踪系统
    Docker安装Skywalking APM分布式追踪系统
    ubuntu18.04安装docker
    github超级小白入门攻略
    记录AJAX充电点点滴滴
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5588877.html
Copyright © 2011-2022 走看看