0

我知道 Matlab 中的 pdist(X,distance) 采用 (nxd) 点矩阵并计算它们之间的成对距离。我也知道,如果矩阵包含向量而不是点,它还有一个额外的选项来计算余弦距离。

我想做的是采用(nxdxt)矩阵,它保存样本随时间 t 的变化位置,并有效/快速地计算所有对/所有帧之间的余弦方向距离,其中 av(t) 被定义为方向由 p(t+1) - p(t) 计算,p(t) 指的是行 M(p,:,t)。

显然,如果可以得到帮助,我不想使用循环。有什么建议么?

非常感谢任何帮助。

4

1 回答 1

0

回想一下,余弦距离等于归一化向量之间的欧几里得距离的两倍。这使我们不必在余弦距离函数中一遍又一遍地计算范数。

听起来您想要矢量差异与每次时间变化之间的距离。那是对的吗?

data = diff(data,1,3);
[m,n,nt] = size(data);
data = reshape(data,m*nt,n);
data = data./repmat(sqrt(sum(data.^2,2)),1,n);
d = pdist(data);
d = d/2; %# The uniform scaling may not matter to you.
于 2012-04-22T00:39:05.140 回答