GMT(Generic Mapping Tools)是由Paul Wessel和Walter Smith开发的一款开源的绘图软件。它使用命令行生成ps或者eps文件。GMT的常用命令包括psbasemap,psxy,grdimage,pstext等,可以在linux和Windows下使用。Matlab是MathWorks开发的数学软件,使用以矩阵作为基本数据类型,集算法开发、数值计算和数据可视化为一体的高级语言。使用Matlab可以方便地处理数据,文件等,也可以画图,但是Matlab生成的图不是很美观,通常需要进一步的修饰。而GMT可以绘制高质量的图件,但是需要事先生成所需的文件。

为了解决这一问题,我们在Windows使用Matlab将GMT画图的命令写入一个批处理文件中,然后使用Matlab的system命令运行该批处理文件,生成.ps文件。然后可以用system命令调用ghostview等软件打开.ps文件,查看绘制结果。

这是我使用Matlab生成批处理文件的第一段。% write .bat file for GMT

batfile = 'Fig4_Matlab_GMT.bat';

epsfile = 'Fig4_Matlab_GMT.ps';

fid = fopen(batfile,'w');

fprintf(fid, [ ...

'@echo offrn', ...

'set file1=Ricker.datrn', ...

'set file2=RickerDeriv.datrn', ...

'set file3=ur000000.1_00001000_00000030.datrn', ...

'set tfile3=theo_ur000000.1_00001000_00000030.datrn', ...

'set ps=%srnrn', ...

'gmt set MAP_FRAME_PEN thinrn', ...

'gmt set MAP_TITLE_OFFSET 8p MAP_LABEL_OFFSET 8prn', ...

'gmt set FONT_ANNOT_PRIMARY 12p FONT_TITLE 12p FONT_LABEL 12prn', ...

'gmt set PS_CHAR_ENCODING Standard+rnrn', ...

'set pat=0.4821rn'

], epsfile);

这是最后一段

fprintf(fid,[ ...

'echo :convert to epsrn' ...

'gmt ps2raster -Te -P %%ps%%rn' ...

]);

fprintf(fid,'del gmt.*rn');

fclose(fid);

system(batfile); % 运行Fig4_Matlab_GMT.bat

system(['gsview32 ', epsfile, '&']); % 调用gsview32打开Fig4_Matlab_GMT.ps

注:对于fprintf函数来说,%%->%,rn->回车,\->

使用Matlab生成批处理文件的好处是:

(1)方便使用%f或%e设置GMT命令需要的参数;

(2)随时使用dlmwrite或csvwrite等命令生成GMT需要的临时性文件,弥补Windows下echo命令的不足;

(3)实现运行批处理文件和查看ps文件的自动化。

目前存在的问题,GMT命令错误的提示没有显示在Matlab中,不能直接地检验GMT命令执行是否有误。Matlab向文件输出的命令略微有些繁琐。不过瑕不掩瑜,在Matlab中调用GMT画图仍是一个很好的方法。

转载本文请联系原作者获取授权,同时请注明本文来自徐逸鹤科学网博客。

链接地址:http://blog.sciencenet.cn/blog-725052-850807.html

上一篇:与拖延症的战斗(2)——了解我们的“时间”

下一篇:世界的方向掌握在少数“疯子”手中

matlab gmt,科学网—在Matlab中调用GMT画图 - 徐逸鹤的博文相关推荐

  1. 提升matlab效率,科学网—写Matlab程序,提高运算速度的小技巧 - 吴景鹏的博文

    同样的算法和思路,不同的人写出来的程序,执行效率可能有成倍的差别.主要原因就是写代码的习惯,这里介绍点个人的小体会. 1. 向量化,少用for.很多人写Matlab代码,会沿用C语言的思路,经常用fo ...

  2. matlab+whisker,科学网—如何绘制箱线图(Box- Whisker Chart) - 陆绮的博文

    如何绘制箱线图(Box-&-Whisker Chart) 厚颜无耻的人肉翻译机小水獭又活奔乱跳滴跳出来了,本獭看到一篇文章上使用了箱线图(box-&-Whisker Chart)来表示 ...

  3. matlab surf颜色,科学网[转载]matlab中控制mesh或者surf的颜色

    科学网[转载]matlab中控制mesh或者surf的颜色 曲面的顏色越发柔順滑腻,del2 (Z) 根據數值微分來產生矩陣 Z 的 discrete Laplacian, Y,surf 及 mesh ...

  4. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...

    由于自己科研水平较低,记录的各种体会更多的是给自己做个小结,错误之处,欢迎大家指正. 使用MATLAB求解偏微分方程或者方程组,大致有三类方法.第一种是使用MATLAB中的PDE Toolbox,PD ...

  5. matlab中显示变量大小写,科学网—一些MATLAB的编程规范总结1.0版 - 何亮的博文

    好的编程习惯,可以提高编程效率,不仅可以使代码容易修改,也容易给别人看懂,便于交流.我们不仅要写出"给机器读懂的代码",也写出"给人看得懂的代码". 本文根据一 ...

  6. matlab在图片上显示文字颜色,科学网-解决matlab saveas printf保存图片时 colorbar中的字体颜色发生改变-肖鑫的博文...

    matlab在画多个图片循环保存时很容易出现看到的图跟保存的图片不一样,最常见的是大小不同导致坐标轴拉伸变形,主要是图片分辨率跟屏幕分辨率不同的原因,这个可以通过在设置figure时,固定画布大小解决 ...

  7. matlab print 保留颜色,科学网—解决matlab saveas printf保存图片时 colorbar中的字体颜色发生改变 - 肖鑫的博文...

    matlab在画多个图片循环保存时很容易出现看到的图跟保存的图片不一样,最常见的是大小不同导致坐标轴拉伸变形,主要是图片分辨率跟屏幕分辨率不同的原因,这个可以通过在设置figure时,固定画布大小解决 ...

  8. java 调用matlab rank_科学网—Matlab: X is rank deficient - 李旭的博文

    Summary 开贴讨论Rank deficient matrix线性回归之过程.示例数据包含在附件中,x is a matrix whose columns represent random var ...

  9. matlab 数组去掉0,科学网—在Matlab环境下去除矩阵中的零向量 - 李航的博文

    主要用到了any()函数. e.g.1 找到矩阵中为零的列向量,并将其删除. >> a=[1,2,3;0,0,0;4,5,6;0,0,0;7,8,9]' a = 1     0     4 ...

最新文章

  1. 什么是滚动灯箱的全数字滚动系统?
  2. Volley源码分析
  3. (0038) iOS 开发之Xcode下的DerivedData文件
  4. java 文件随机读取_Java 实现文件随机读写-RandomAccessFile
  5. eclipse手动添加SVN插件
  6. C++ Primer 第10章 习题10.24
  7. 计算机二级 java和web_2020年全国计算机二级WEB程序复习知识点:JavaBean
  8. 用 Python 实现溺水识别
  9. Linux初步(一)——关于操作系统的启动
  10. 一些比较恶心的代码片段
  11. 两台机器实现QPS3000的服务优化
  12. VMware中linux访问共享文件夹设置流程
  13. 93.接收上游的响应
  14. 熊猫分发_熊猫重命名列和索引
  15. 二极管(一):反向恢复时间
  16. TT畅聊物联网(一)-初识物联网
  17. 计算机术语 打桩,动力打桩公式
  18. 京东商城禁止一淘网蜘蛛抓取内容
  19. 阿里云ESC搭建SVN服务端-----实测有效,并补充了一些坑点
  20. 大厂裁员潮下,测试人员路在何方?

热门文章

  1. 你也能成为手机摄影高手之教程分享
  2. 时间戳与时间转换、js时间戳判定是 今天、昨天还是更前的日子
  3. Hotsopt对象探秘
  4. C++错误解决:double free or corruption (out): 0x00000000011abe70 ***
  5. 高通平台手机开发之LCD
  6. 枚举进程:ring3-ring0
  7. UITextField改变return键显示的字
  8. 找不到php软件包无法卸载,为什么有些软件卸载不了怎么办
  9. python和PQ的完美结合——python批量刷新PQ工作簿模型
  10. [九度][何海涛] 斐波那契数列