我希望你对这个问题有正确的答案,这是一个相当具有挑战性的问题。
我有两个一维矢量Y和Z,它们保存着位于正方形网格上的N网格点的坐标。所以
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定义为网格上第一个点和残余(N )点之间的距离。
通常,为了计算我所调用的整个矩阵
D = squareform(pdist([Y Z]));或者,相当的,
D = pdist2([Y Z],[Y Z]).但是,由于D是一个对称矩阵,我只想生成独立于N(N + 1)/2的条目,并将它们存储到一行有序向量Dd中。
因此,问题是:如何生成一个行顺序数组Dd,其条目由矩阵D的下三角项定义?此外,我还想把条目存储在列的主要顺序中。
我希望解释得足够清楚。
发布于 2013-06-04 14:25:44
正如woodchips所评论的,计算整个矩阵和提取您所关心的元素更简单、更快。以下是一种方法:
ndx = find(tril(true(size(D))));
Dd = D(ndx);如果必须首先计算Dd的元素而不计算矩阵D,则可能需要双for循环。
https://stackoverflow.com/questions/16920040
复制相似问题