matlab两条曲线之间的距离

时间:2015-03-07 16:15:10

标签: matlab distance curves

我有两组x,y数据。这些数据的图表如下图所示:

enter image description here

假设,如果蓝线是参考,我如何计算蓝线和红线之间的距离?为了更清楚,如果红线在蓝线后面,差异将是负的,反之亦然。

我尝试过使用pdist,但我认为这不是我想要的解决方案。

任何帮助都将非常感激。 谢谢

1 个答案:

答案 0 :(得分:4)

计算轨迹之间的欧几里德距离每个时间步骤非常简单,困难的部分是签署这个距离。一种可能性是使用交叉产品。

这是我的代码:

% --- Define and display sample curves
x1 = cumsum(rand(100,1)-0.3);
y1 = cumsum(rand(100,1)-0.3);

x2 = cumsum(rand(100,1)-0.3);
y2 = cumsum(rand(100,1)-0.3);

subplot(1,2,1)
plot(x1, y1, x2, y2)

% --- Get the distance
d = sqrt((x2-x1).^2 + (y2-y1).^2);

% --- Sign the distance with cross product
u = [x1(:) y1(:)];
u(:,3) = 0;

v = [x2(:) y2(:)];
v(:,3) = 0;

tmp = cross(u, v);
d = d.*sign(tmp(:,3));

% --- Display the result
subplot(1,2,2)
plot(d)

给出了以下结果(右图):

Result

最佳,