我有一个大小为centroids
的向量n
和一个大小为points
的向量p
(这两个都是Vx3
矩阵,其中{{} 1}}是点数或质心数。)
对于来自V
的任何给定点pt
,我想生成另一个距离向量:points
与每个质心的距离。
有没有任何函数式编程风格的方法呢?这样的东西,也许(Python风格):
pt
如果没有,对我来说最好的方法是什么?我正在使用Octave,但我添加了matlab标签,因为语言类似(至少从我看到的)。
答案 0 :(得分:2)
因此,您有3D质心和3D点,并且您希望points
中的任何点 pt 来确定距所有质心的距离。
arrayfun(@(x) norm(x),pt(ones(v,1),:)-centroids)
答案 1 :(得分:1)
我有一个比g24l更长的解决方案......我不确定哪个MATLAB版本arrayfun
有效,所以这适用于旧版本:
pt = rand(1,3);
centroids = rand(2,3);
pt = repmat(pt, [size(centroids,1) 1]); % duplicate your point to vectorize
dists = sum((pt - centroids).^2,2)
你需要做的就是将它包装在一个函数中,该函数只需一个pt
和一个centroids
矩阵,你就可以得到解决方案。