【问题标题】:MATLAB using pdist to deal with Time series ClusteringMATLAB使用pdist处理时间序列聚类
【发布时间】:2015-03-01 09:40:57
【问题描述】:

我在使用 MATLAB 进行时间序列数据聚类时遇到问题

我正在尝试使用下面的 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.

如果有人帮助我,我会很高兴

谢谢!

---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

【问题讨论】:

  • 如果没有您的数据或该工具箱,很难判断,但在调用 dtw2 时似乎出了点问题。我建议检查您是否正确调用该函数,例如通过在该行设置断点并检查 XIXJ 的值以及它们是否与函数期望的输入类型匹配。

标签: matlab time-series cluster-analysis


【解决方案1】:

如果不知道dtw2 是什么,很难说清楚。但是有一个可能的原因:当您使用自定义距离函数调用pdist2 时,它应该满足以下条件:

距离函数的格式必须为

     function D2 = DISTFUN(ZI,ZJ)

将包含来自 X 或 Y 的单个观测值的 1×N 向量 ZI、包含来自 X 或 Y 的多个观测值的 M2×N 矩阵 ZJ 作为参数,并返回一个 M2×1 距离向量D2,其第J个元素是观测值ZI和ZJ(J,:)之间的距离。

检查dtw2 是否满足,如果不满足,则进行相应修改(或使用循环代替pdist2)。

【讨论】:

  • 非常感谢!我终于修改了我的函数以将 dtw 调用到该角色并且它起作用了!
猜你喜欢
  • 2013-03-09
  • 1970-01-01
  • 2015-07-22
  • 2017-04-10
  • 2012-03-18
  • 2011-01-29
  • 1970-01-01
  • 2016-08-16
相关资源
最近更新 更多