3

シフトされていない 赤い線と一致するように、この画像の青い線の x 軸に沿ったシフトを見つける最良の方法は何ですか? 結果はこの画像のようになりますずれた )。MATLAB には fminunc のような複雑な関数がありますが、時間の制約に対処する必要があるため、より効率的な方法があるかどうか疑問に思っています。

編集:データは、シミュレートされた環境でのレーザースキャンの範囲測定からのものです。X 軸には各スキャンの方位がラジアンで表示され、Y 軸にはメートルで測定された範囲が表示されます。赤い点 (リファレンス スキャン) では、ベアリングは確かに等間隔に配置されています。これは、参照スキャンでは常に当てはまりますが、現在のスキャン (青い点) では当てはまりません。

編集:赤い点のデータ

-1.5708    6.8542
-1.3963    6.9530
-1.2217    7.2137
-1.0472    7.6592
-0.8727    8.3326
-0.6981    9.2984
-0.5236   10.6477
-0.3491   12.5060
-0.1745   15.0092
     0   18.2745
0.1745   22.3368
0.3491   27.1113
0.5236   32.4112
0.6981   38.0010

そして青い点について

-1.3963    7.0092
-1.2217    7.3112
-1.0472    7.8065
-0.8727    8.5420
-0.6981    9.5872
-0.5236   11.0407
-0.3491   13.0360
-0.1745   15.7225
     0   19.1849
0.1745   23.4301
0.3491   28.3466
0.5236   32.4114
4

2 に答える 2

1

OK、それは「最良の」方法ではありませんが、曲線を記述する適切なモデルがわからない場合の方法です。

% your first plot
figure(1), clf, hold on
plot(red(:,1), red(:,2), 'ro-')
plot(blue(:,1), blue(:,2), 'bo-')

% approximate reference with splines, so it can be evaluated anywhere
ppred = spline(red(:,1),red(:,2));

% minimize the distance between the curves
f = @(x) norm( ppval(ppred, blue(:,1)+x)-blue(:,2) );    
x0 = fminsearch(f, 0);    
blue(:,1) = blue(:,1)+x0;

% pretty close to your second plot
plot(blue(:,1), blue(:,2), 'ko-')
于 2012-10-12T18:53:45.960 に答える
0

グリッド検索を実行しないのはなぜですか?のようなオフセットの可能性のグリッドを作成delta_x = [0.0001:0.2:0.0001]し、オフセットグリッドのすべての場所で目的関数(最小二乗?)を評価し、エラーが最小のグリッドを選択します。使用する時間が短すぎる場合はfminfunc、グリッド検索が許容できる近似値である可能性があります。

于 2012-10-12T12:54:00.610 に答える