2015-01-03 58 views
0

我使用MATLABMATLAB使用pdist處理的時間序列聚類

我試圖使用DTW庫下面是我的距離測量方法對時間序列數據的聚類問題 http://www.mathworks.com/matlabcentral/fileexchange/16350-continuous-dynamic-time-warping

TimeData = csvread('testData10.csv',1,0) 
Y = pdist(TimeData,@dtw_dist) 
Z = linkage(Y,'complete') 
dendrogram(Z) 

我做一個功能,以適應「pdist」距離函數

function d2 = dtw_dist(XI,XJ) 
    [dist,D,k,w,rw,tw] = dtw2(XI,XJ,0) 
    d2 = dist 
end 

的格式,但我得到的錯誤信息

Error using pdist (line 373) 
Error evaluating distance function 'dtw_dist'. 

Caused by: 
    Error using - 
    Matrix dimensions must agree. 

我會apericiate如果有人可以幫助我

謝謝!

--- 2015年1月5日更新---

更改我的功能可按到DTW調用,以適應格式 和它的作品

function d2 = dtw_dist(XI,XJ) 
    result =[]; 
    [m1,n1] = size(XI); 
    [m2,n2] = size(XJ); 
    for j=1:m2 
     result = horzcat(result,dtw(XI,XJ(j,:))); 
    end 
    d2=result;  
end 
+0

如果沒有您的數據或工具箱,很難說清楚,但是在調用「dtw2」時看起來有些問題。我建議您檢查您是否正確調用該功能,例如通過在該行上放置一個斷點並檢查「XI」和「XJ」的值以及它們是否與函數期望的輸入類型相匹配。 –

回答

0

很難說沒有知道什麼dtw2是。但這裏有一個可能的原因:當你調用pdist2有一個自定義的距離函數,它應滿足以下條件:

距離函數的形式必須是

 function D2 = DISTFUN(ZI,ZJ) 

以作爲參數1包含來自X或Y的單個觀測值的N×N向量ZI,包含來自X或Y的多個觀測值的M2×N矩陣ZJ,並且返回距離D2的M2乘1向量,其第J個元素是距離在觀察ZI和ZJ(J,:)之間。

檢查dtw2滿足的是,如果沒有,相應地修改它(或使用替代pdist2循環)。

+0

非常感謝! 我終於修改我的函數來呼叫dtw到那個角色 它的工作原理! –