我有一個包含4500個長度爲1800的向量的矩陣,爲此我需要計算矩陣中每兩個向量之間的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矩陣?
[關於'dtw']的文檔(http://mathworks.com/help/signal/ref/dtw.html?s_tid=doc_ta)建議你可以輸入'x'和'y'的矩陣,嘗試一下,看看它是否加快了速度。第二個和第三個輸出也給矩陣,這可能是有用的 – Adriaan
@Adriaan這是比較兩個矩陣。我想比較單個矩陣中的每兩個向量。 – Polisetty
提供示例矩陣示例 –