• 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

  • 相关阅读:
    java设计模式简介
    java设计模式--单例模式
    判断整形回文数
    常用正则表达式 捕获组(分组)
    [转]十分钟搞定Vue搭建
    ActiveX界面已显示,调用方法报undefined的处理办法
    [转]纯js导出json到excel(支持chrome)
    webapi 开启gzip压缩
    webapi下载文件
    iis添加共享目录为虚拟目录
  • 原文地址:https://www.cnblogs.com/GarfieldEr007/p/5588877.html
Copyright © 2020-2023  润新知