reprinted fromhttp://140.121.165.30/class/GMT/
GMT主要僅負責繪圖工作,資料之分析通常是以其他程式完成,故將其他程式的輸出
轉成GMT可讀之資料檔也成為繪圖之重要一部分,目前matlab為常用之分析工具
此以matlab的專屬結構化檔案格式為例,轉為GMT可讀之格式
假設有一matlab的*.mat檔,其中紀錄了海表面異常資料
其內儲存的變數內容如下:
分別為緯度,經度,時間,與海表面高度異常值
Lat與Lon是一維矩陣,分別有121與201個元素
jday_gmt為一維矩陣,有1371個元素
sla為三維矩陣,大小是121x201x1371,分別對應緯度,經度與時間
假設我們要取出某時間點空間上的SLA變化,所以我們預期,要給GMT的格式檔為三行如下:
經度 緯度 海表面高度異常
假設我們需要第100個時間點的sla時空資料,則第100個時間點的SLA為二維資料121x201
故,首要原則為,先讓Lon,Lat與sla的維度一致,皆為121x201,在降階為一維資料寫出到ascii
matlab程式範例如下:
lat=Lat*ones(1,201); %
121x201
lon=ones(121,1)*Lon'; % 121x201
SLA=sla(:,:,100);
% 121x201
a=[reshape(lon,121*201,1)';reshape(lat,121*201,1)';reshape(SLA,121*201,1)'];
%降階成一維後3行並列
fid=fopen(ofn,'gmtascii.dat');
% 開啟檔案gmtascii.dat
fprintf(fid,'%8.2f %8.2f .4fn',b); %
寫入檔案
fclose(fid)
如此gmtascii.dat變成上述格式,可用GMT繪圖之
註: 後三行亦可用 save gmtascii.dat a -ascii 取代之,缺點是無法自訂資料格式
ps: save gmtascii.dat a -ascii 输出的数值格式采用科学计数 (1.0000000e+000),在linux终端中运行 echo
|awk '{printf "%gn",$1}' test1.dat >test2.dat
命令可以将输出格式改为1。