如何在Octave / MATLAB中生成此向量?

时间:2012-03-19 18:28:30

标签: matlab octave

我有一个大小为centroids的向量n和一个大小为points的向量p(这两个都是Vx3矩阵,其中{{} 1}}是点数或质心数。)

对于来自V的任何给定点pt,我想生成另一个距离向量:points与每个质心的距离。

有没有任何函数式编程风格的方法呢?这样的东西,也许(Python风格):

pt

如果没有,对我来说最好的方法是什么?我正在使用Octave,但我添加了标签,因为语言类似(至少从我看到的)。

2 个答案:

答案 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矩阵,你就可以得到解决方案。