2

我有一个制表符分隔的 XYZ 文件,其中包含 3 列,例如

   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(请参见下面的命令)。我不断得到如下所示的结果(虽然它似乎得到了我的一些表面): 在此处输入图像描述

有什么想法会导致这个结果吗?我认为问题出在meshgrid命令上,尽管我不确定在哪里(或为什么)。我目前正在输入以下一组命令来计算上图(我的 X 和 Y 列以米为单位,我知道我的网格大小是 8m,因此 ti/tj 在 8s 内上升):

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^
4

3 回答 3

3

I think you want the griddata function. See Interpolating Scattered Data in MATLAB help.

于 2011-11-24T15:06:20.130 回答
1

Griddata 和 tirscattteredinterp 非常慢。在文件交换中使用 utm2deg 函数,并从那里结合 vec2mtx 来制作规则网格,然后嵌入以使数据适合网格。IE

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);
于 2014-03-06T01:52:33.517 回答
0

也许您正在寻找函数“ndgrid(x,y)”或“meshgrid(x,y)”

于 2011-11-24T15:21:22.767 回答