私は1800の長さの4500個のベクトルを持つ行列を持っています。そのために、行列の2つのベクトルの間のDTW(動的時間ワーピング)距離を計算する必要があります。DTWをより速く走らせるには?
私は(三角形のようになります)4500x4500行列の半分を埋めるために、ネストされたループを使用しています
matr = zeros(4500,4500); %initializing empty matrix to fill dtw distance
for i=1:4500
x = new(i,:); %new is where the data lies
for j = i+1:4500
y = new(j,:);
matr(i,j) = dtw(x,y);
end
end
問題は、コードが非常に遅い実行されることです。そして、私の計算によると、それは私のコンピュータ上で実行するには4日間かかるでしょう。
ベクトル化がどのように機能するかはわかりません。しかし、私のコードをベクトル化してより速く実行できる方法はありますか?また、私はすべてのベクトルを差し込み、DTWのdist行列を自動的に生成することができるinbuilt関数はありませんか?
[dtwのドキュメント](http://mathworks.com/help/signal/ref/dtw.html?s_tid=doc_ta)は、 'x'と' y'の行列を入力できることを示唆しています。それを試し、それが何かをスピードアップするかどうかを見てください。 2番目と3番目の出力も行列を与えます。これは有用かもしれません – Adriaan
@Adriaanこれは2つの行列を比較するためのものです。私は単一の行列の2つのベクトルを比較したいと思います。 – Polisetty
サンプルマトリクスの例を提供 –