2016-08-23 12 views
-1

空間内の3Dポイントセット(またはポイントクラウド)にカーブをフィッティングする際に問題があります。カーブフィッティングツールを見ると、ポイントセット[x、y、z]が与えられたときに大部分がサーフェスを作成します。しかし、それは私が望むものではありません。私は、曲面ではない点集合曲線に合っていたいと思います。matlabまたはRで曲線フィッティング「3dに最適」R

宇宙(3D)のカーブフィッティングに最適なソリューションは何ですか?

特に、私のデータは3dの多項式曲線のように見えます。

式は〜X^2 + B X Y + C Y^2 + D

Zであり、任意の事前推定係数[A、B、Cが存在しません、d]。

ありがとうございました。

xyz <- read.table(text="x y z 
518315,750 4328698,260 101,139 
518315,429 4328699,830 101,120 
518315,570 4328700,659 101,139 
518315,350 4328702,050 101,180 
518315,3894328702,849 101,190 
518315,239 4328704,020 101,430", header=TRUE, dec=",") 

sample image is here

+1

サーフェスではない「#Dポイントセットカーブ」の意味を定義する必要があると思います。データの欠如を考えると、実際にはまだ何もできません。 –

+0

多変量回帰直線のようなものですが、Rとmatlabの線形モデルを自分の関数に実装できませんでした。 – Muzo583

+0

私はその質問を理解していません。あなたが提供する方程式は、表面を表しています。 'lm(z〜I(x^2)+ x:y + I(y^2)、data = yourdata)'を使ってパラメータをフィットさせるのは簡単ですが、それを強制しない限り、 'x'と' y'の制約。 – Roland

答えて

0

私はあなたがこのタイプののパラメータ化曲線にフィットするようにしたいと仮定:

R(T)= + Bトン+ Ct^2

したがって、3つの独立したフィットを行う必要があります:

x = ax + bx*t + cx*t^2 
y = ay + by*t + cy*t^2 
z = az + bz*t + cz*t^2 

九個のフィッティングパラメータAX、AY、AZ、BX、によって、BZ、CX、CY、CZを得ました。あなたのデータには位置x,y,zが含まれています。また、ポイントが等しい時間間隔でサンプリングされると仮定して、時間変数t=1,2,3,...,5を含める必要があります。

データポイントの「時間」パラメータが不明/ランダムの場合、データポイントごとに1つずつ別のフィッティングパラメータとして自分自身で推定する必要があると思います。それでは、私がお勧めすることは以下の通りです:

  1. は、いくつかの合理的なパラメータを想定、BC
  2. によって各データポイントの時間t_iを計算する関数を作成して、そのポイントとテンポラリ カーブr(t)の間の平方距離を最小化します。
  3. 全ての和を計算する(R(T) - R(t))と曲線とデータセットR間^ 2 。これはメリット
  4. の図あなたのフィッティングスコア、または こと にMATLABの遺伝そのアルゴリズムのGA()ルーチンを使用して、最適なを得る、B、定義されている性能指数 を最小限に抑えることができますCます上記

幸運!

+0

答えをありがとうございます。私は時間変数はありません。ソリューションは、2次元xy、xz、yzを補間(またはフィッティング)し、それらを結合することができます。しかし、3つの異なる非線形モデルを3次元座標系に結合する方法.. – Muzo583

+0

x、y、zが進んでいくという前提があった場合、最初にソート操作を行うことができるのだろうか? –

1

データのビットで、私たちは今、これは本当にそうでない場合は、私たちを説得するためにあなたの最善の努力にもかかわらず、表面を推定しているが、むしろ、あなたが提案する方向で努力をhackis発揮することができます

xyz <- read.table(text="x y z 

518315,750 4328698,260 101,139 
518315,429 4328699,830 101,120 
518315,570 4328700,659 101,139 
518315,350 4328702,050 101,180 
518315,389 4328702,849 101,190 
518315,239 4328704,020 101,430", header=TRUE, dec=",") 
lm(z ~ I(x^2)+I(x*y) + I(y^2), data=xyz) 
#--------------- 

Call: 
lm(formula = z ~ I(x^2) + I(x * y) + I(y^2), data = xyz) 

Coefficients: 
(Intercept)  I(x^2)  I(x * y)  I(y^2) 
-1.182e+05 -3.187e-07 9.089e-08   NA 

の共線をx^2およびx*yy^2とすると、y = x * y/xであるため、可変係数の推定値は無効になります。 nlsを使用して、非線形サーフェスのパラメータを推定することもできます。

関連する問題