簡體   English   中英

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

[英]How to generate this vector in Octave/ MATLAB?

我有一個大小為n的矢量centroids和一個大小為p的矢量points (這兩者實際上都是Vx3矩陣,其中V是點或質心的數量)。

對於來自points任何給定點pt ,我想生成另一個距離矢量: pt與每個質心的距離。

有什么功能編程風格的方式可以做到這一點? 可能是這樣的(Python風格):

distances = [ norm(pt - c) for c in centroids ]

如果沒有,對我來說最好的方法是什么? 我使用的是Octave,但我也添加了標簽,因為這些語言需要相似的語言(至少從我所看到的)。

所以,你有3D質心和三維點,並希望任何點數PTpoints來確定所有質心的距離。

arrayfun(@(x) norm(x),pt(ones(v,1),:)-centroids)

我的解決方案比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矩陣,您將擁有自己的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM