我正在尝试在MATLAB中计算中心点。然而,我不知道该如何做。我的数据集包含多个三维数据点(因此是一个具有三个轴的系统中的点云)。中心点是“其与集群中所有其他对象的平均差异最小”的点(维基百科)。
有谁知道如何在MATLAB中计算中心点吗?
顺便说一下,据我所知,k-中心点算法不能有效地计算中心点,这就是为什么我在寻找其他方法的原因。
回答:
一旦你提供了度量标准,这应该不难做到。这里有一个标量实现的例子:
function m = medoid(set,metric) [X,Y] = meshgrid(set,set); %创建所有可能的配对 dist = metric(X,Y); %运行度量标准 %每个距离被计算两次,这没关系。 %同样,添加零也没关系,因为我们在寻找最小值。 totalDist = mean(dist,1); [~,i] = min(totalDist); m = set(i); end
使用示例:
metric = @(x,y) ( abs(x-y));m = medoid([1 2 3 3 3 3 3], metric)
你可以将其扩展到向量,我将其留作读者练习。(或者有人想添加一个改进的答案)。