为了确定地球的趋势,我需要使用Matlab确定坡度的方向。我的数据是点云。 在一个区域中,我在窗口中分割该区域,每个窗口选择一个地面点。 例如,在一个区域中,一些地面点是(X Y Z):
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
我绘制从这些点经过的表面,并计算here 现在我想确定斜率的方向,即从下到上......或从左到右或...... 我怎么能这样做?
答案 0 :(得分:0)
我要提出的第一个问题是:你是如何适合你的?
对于初次订购而言,它看起来并不完美,但如果您使用
sf=fit([X(:),Y(:)],Z(:),'poly11');
然后你的答案是sf,更特别是在sf.p01(y方向)和sf.p10(x方向)。
如果你装有你的一些秘密功能,你仍然可以使用功能diff和X和Y方向的平均值。
%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');