我正在尝试有效地生成大约200.000个2D点的距离矩阵,但不知何故我感觉我使用pdist
for循环的琐碎方法效率不高 - 我的想法是手动创建一个包含距离的下三角矩阵。
最后,目标是使用graphminspantree
从2D点数据生成最小生成树。有没有推荐的方法来解决这个问题?也许甚至是一个我根本找不到的内置函数?任何建议将不胜感激。
更新
根据要求,这是一个最小的工作示例
G = [2,3;3,4;4,5];
D = zeros(length(G), length(G));
for col = 1:length(G)
for row = (col+1):length(G)
D(row, col) = pdist(cat(1, G(col,:), G(row,:)), 'euclidean');
end
end
disp(D);
在其他语言中,有方法可以即时生成所需的数字;它被称为流编程。例如。 Sage或Scala具有即时生成列表的方法。 Matlab中有类似的东西吗?我是Matlab的新手。
例如,您可以根据需要在Scala中生成如下的斐波纳契序列:
val fibs: Stream[Int] = 0 #:: fibs.scanLeft(1)(_ + _)