我希望你能对这个相当具有挑战性的问题有正确的答案。
我有两个一维向量Y和ZN
,它们保存位于正方形网格上的网格点的坐标。所以
Ny points along Y
Nz points along Z
N = Ny*Nz
Y = Y[N]; (Y holds N entries)
Z = Z[N]; (Z holds N entries)
现在,目标是生成D
包含N*N
条目的距离矩阵:因此矩阵的每一行都D
定义为网格上第i 个点与剩余(N - i)个点之间的距离。
通常,要计算整个矩阵,我会调用
D = squareform(pdist([Y Z]));
或者,等效地,
D = pdist2([Y Z],[Y Z]).
但是,由于D
是一个对称矩阵,我只想生成N(N + 1)/2
独立的条目并将它们存储到按行排序的向量Dd
中。
所以问题是:如何生成一个行序数组Dd
,其条目由矩阵的下三角项定义D
?此外,我还想以列优先顺序存储条目。
我希望解释足够清楚。