2011-11-24 111 views
2

我有一個選項卡分隔XYZ文件,其中包含3列,例如,MATLAB XYZ到網格

586231.8  2525785.4   15.11 
    586215.1  2525785.8   14.6 
    586164.7   2525941   14.58 
    586199.4  2525857.8   15.22 
    586219.8   2525731   14.6 
    586242.2  2525829.2   14.41 

第1列和第2列是X和Y座標(在UTM米中),第3列是在點X,Y的相關Z值;例如點的高程(z)爲z(x,y)

我可以在這個文件中使用dlmread()來讀取工作空間中的3個變量,例如, X = 41322x1 double,但我想用這些變量創建大小爲(m x n)的表面。我將如何去做這件事?

從以下評論中,我嘗試使用TriScatteredInterp(請參閱下面的命令)。我不斷得到下面顯示的結果(它似乎是讓我的一些表面雖然): enter image description here

任何想法是怎麼回事,導致這個結果?我認爲問題在於meshgrid命令,儘管我不確定在哪裏(或爲什麼)。我目前把下面的命令集來計算上圖中(我的X和Y列是米,我知道我的網格大小爲8M,因此TI/TJ在787-8往上走):

F = TriScatteredInterp(x,y,z,'nearest'); 
ti = ((min(x)):8:(max(x))); 
tj = ((min(y)):8:(max(y))); 
[qx,qy] = meshgrid(ti,tj); 
qz = F(qx,qy); 
imagesc(qz) %produces the above figure^ 

回答

3

我想你想要griddata函數。請參閱MATLAB幫助中的Interpolating Scattered Data

+0

繼從您的建議我已經使用了[TriScatteredInterp(http://www.mathworks.co.uk/help/techdoc/ref/triscatteredinterp.html)功能。任何想法如何將其轉化爲實際表面? – MBL

+2

請按照幫助中的示例進行操作:http://www.mathworks.co.uk/help/techdoc/ref/triscatteredinterp.html – Nzbuu

+0

我已將我的結果圖像添加到原始問題中。任何想法是怎麼回事? – MBL

0

也許您正在尋找的功能 「ndgrid(X,Y)」 或 「meshgrid(X,Y)」

1

的GridData和tirscattteredinterp是極其緩慢。在文件交換中使用utm2deg函數,並從那裏結合使用vec2mtx來創建一個規則的網格,然後將數據嵌入到網格中。 I.E.

for i = 1:length(X) 
[Lat,Lon ] = utm2deg(Easting ,Northing ,Zone); 
end 

[Grid, R] = vec2mtx(Lat, Lon, gridsize); 
Grid= imbedm(Lat, Lon,z, Grid, R);