You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab pdist输入数据设置错误 如何正确计算每行两点欧氏距离

问题原因
  • Matlab的pdist函数默认计算输入矩阵所有行两两之间的成对距离,你输入的dArray是12行4列的矩阵,12个行向量的两两组合数为12*11/2=66,因此会输出66个结果,和你逐行计算对应点距离的需求不匹配。
正确实现方案

方案1:直接向量化计算(推荐,性能更高)

你需要的是每行内(x1,y1)到同一行(x2,y2)的欧氏距离,直接用向量运算即可实现,无需调用pdist:

clc;
clear all;
x1 = [0;0;1;0;9;3;4;5;6;10;11;22];
y1 = [0;1;11;10;19;13;14;15;16;10;22;12];
 
x2 = [1;1;2;3;4;5;6;7;8;9;10;11];
y2 = [1;1;2;3;4;5;16;17;18;19;15;18];

% 逐行计算欧氏距离
D = sqrt((x1 - x2).^2 + (y1 - y2).^2);

注:你给出的x1、y1、x2、y2都是12个元素的向量,计算后会得到12个距离结果,你提到的预期10个可能是笔误。

方案2:使用pdist实现

如果必须使用pdist函数完成计算,可以逐行提取对应两个点单独计算距离:

D = zeros(length(x1), 1);
for i = 1:length(x1)
    % 构造当前行两个点的2行2列坐标矩阵,计算两点距离
    D(i) = pdist([x1(i), y1(i); x2(i), y2(i)], 'euclidean');
end

内容的提问来源于stack exchange,提问作者alirazi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:24:04