-2

要确定地球的走向,我需要使用 Matlab 确定坡度的方向。我的数据是点云。在一个区域中,我在窗口中分割该区域,每个窗口选择一个地面点。例如,在一个区域中,一些地面点是(XYZ):

32512033.4400000    5401401.33000000    346.950000000000
32512044.0300000    5401399.54000000    346.850000000000
32512052.5800000    5401400.37000000    346.760000000000
32512065.0100000    5401401                 346.620000000000
32512073.5100000    5401399.99000000    346.480000000000
32512082.6900000    5401400.45000000    346.380000000000
32512094.1000000    5401401.41000000    346.330000000000
32512104.5300000    5401402.62000000    346.120000000000
32512114.5500000    5401401.42000000    345.860000000000
32512116.4800000    5401401.75000000    345.780000000000
32512033.7100000    5401409.82000000    347.120000000000
32512035.3900000    5401410.57000000    347.090000000000
32512052.7300000    5401415.40000000    350.110000000000
32512061.8500000    5401409.82000000    348.740000000000
32512065.8200000    5401415.45000000    359.700000000000
32512079.9800000    5401410.76000000    346.570000000000
32512093.4400000    5401409.58000000    349.620000000000
32512105.0100000    5401409.70000000    346.330000000000
32512114.9800000    5401409.66000000    346.170000000000

我绘制从这些点经过的表面并在此处绘制 现在我想确定坡度的方向,即从下到上......或从左到右或......我该怎么做?

4

1 回答 1

0

我要提出的第一个问题是:你是如何适应你的东西的?

对于一阶拟合来说,它似乎并不完全平坦,但如果你使用

sf=fit([X(:),Y(:)],Z(:),'poly11');

那么你的答案是在 sf 中,尤其是在 sf.p01(y 方向)和 sf.p10(x 方向)中。

如果你安装了一些你的秘密函数,你仍然可以在 X 和 Y 方向上使用函数 diff 和 average。

%Initialization with grid corresponding to your image
[Xmat,Ymat]=ndgrid(-40:40,-60:60);
Zmat=yourFunction(Xmat,Ymat);
dZdX = diff(Zmat,1,1)./diff(Xmat,1,1);%X direction
dZdY = diff(Zmat,1,2)./diff(Ymat,1,2);%Y direction
SlopeX=mean(dZdX(:));
SlopeY=mean(dZdY(:));

如果正确答案不是直接来自它,您可能需要考虑一下。在我的情况下(使用 yourFunction = sf)它工作得很好。

干杯

ps:如果您正在寻找法线向量,从而为您提供准确的方向,您可以这样计算:

%Normal vector to fitted surface
n=-1.*[SlopeX, SlopeY, -1];
n=-1.*[SlopeX, SlopeY, -1]./sqrt(n*n');
于 2014-06-23T15:52:30.477 回答