如何找到两个矩阵之间最近的两点?
How to find nearest two points between two matrices?
我有
X = (Yt.*sin(W))-(Xt.*cos(W));
Y = (Yt.*cos(W))+(Xt.*sin(W)); % which give the coordinates X and Y.
X_inv = R.*sin(B_involute);
Y_inv = R.*cos(B_involute); % which give the coordinates X_inv and Y_inv.
我需要找到 X
、Y
和 X_inv
、Y_inv
之间最近的两个点。
从现在开始非常感谢。
我给你一些线索:
- 使用 loops 迭代两个矩阵中的每个 X 和 Y 元素。
- 使用Euclidean Distance获取当前点之间的距离。
- 取你得到的所有距离中的最小值。
您可以使用 pdist2
有效地计算成对距离
D = pdist2( [X(:) Y(:)], [X_inv(:) Y_inv(:)] );
一旦有了成对距离,就很容易找到最小距离
[md mi] = min(D(:));
将线性索引转换为对索引
[idx, inv_idx] = ind2sub( size(D), mi );
结果
fprintf(1, 'Closest points are [%d]: (%f,%f) -> [%d]: (%f,%f)\n',...
idx, X(idx), Y(idx), inv_idx, X_inv(inv_idx), Y_inv(inv_idx) );
我有
X = (Yt.*sin(W))-(Xt.*cos(W));
Y = (Yt.*cos(W))+(Xt.*sin(W)); % which give the coordinates X and Y.
X_inv = R.*sin(B_involute);
Y_inv = R.*cos(B_involute); % which give the coordinates X_inv and Y_inv.
我需要找到 X
、Y
和 X_inv
、Y_inv
之间最近的两个点。
从现在开始非常感谢。
我给你一些线索:
- 使用 loops 迭代两个矩阵中的每个 X 和 Y 元素。
- 使用Euclidean Distance获取当前点之间的距离。
- 取你得到的所有距离中的最小值。
您可以使用 pdist2
D = pdist2( [X(:) Y(:)], [X_inv(:) Y_inv(:)] );
一旦有了成对距离,就很容易找到最小距离
[md mi] = min(D(:));
将线性索引转换为对索引
[idx, inv_idx] = ind2sub( size(D), mi );
结果
fprintf(1, 'Closest points are [%d]: (%f,%f) -> [%d]: (%f,%f)\n',...
idx, X(idx), Y(idx), inv_idx, X_inv(inv_idx), Y_inv(inv_idx) );