0

Matlab の pdist(X,distance) が点の (nxd) 行列を取得し、それらの間のペアごとの距離を計算することを認識しています。また、行列にポイントではなくベクトルが含まれている場合、コサイン距離を計算する追加のオプションがあることも認識しています。

私がしたいのは、(nxdxt) 行列を取得することです。これは、時間 t にわたってサンプルのさまざまな位置を保持し、すべてのペア/すべてのフレーム間のコサイン方向距離を効率的/迅速に計算します。ここで、av(t) は方向として定義されます。 p(t+1) - p(t) で計算され、p(t) は行 M(p,:,t) を参照します。

明らかに、助けがあればループを使用したくありません。助言がありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

コサイン距離は、正規化されたベクトル間のユークリッド距離の 2 倍と同じであることを思い出してください。これにより、コサイン距離関数でノルムを何度も計算する必要がなくなります。

時間の変化ごとにベクトル差の間の距離が必要なようです。あれは正しいですか?

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 に答える