|||
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画图仍是一个很好的方法。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-7-28 06:42
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社