-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方向)にあります。

独自の秘密関数を取り付けた場合でも、関数 diff と average を 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');
于 2014-06-23T15:52:30.477 に答える