在此图像unshifted http://i49.tinypic.com/30m35zb.png中找到蓝线的x轴偏移的最佳方法是什么,它与红线匹配?结果必须看起来像这个图像shifted http://i47.tinypic.com/14ikd44.png)。在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
答案 0 :(得分:1)
好吧,这不是“最好的”方式,但如果你不知道描述曲线的正确模型,那就是一种方式:
% 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-')
答案 1 :(得分:0)
为什么不进行网格搜索?制作偏移可能性网格,如delta_x = [0.0001:0.2:0.0001]
,然后在偏移网格中的每个位置评估目标函数(最小二乘?),并选择误差最小的网格。如果您使用fminfunc
的时间太短,那么网格搜索可能是可接受的近似值。