我有一个制表符分隔的 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 在 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^
最佳答案
我想你想要 griddata
功能。请参阅Interpolating Scattered Data在 MATLAB 帮助中。
关于MATLAB XYZ 到网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258881/