【发布时间】:2013-12-05 03:36:31
【问题描述】:
以下是文献如何解释如何计算两个时间序列的多维动态时间扭曲:
library(dtw)
x<- cbind(1:10,1)
y<- cbind(11:15,2)
cxdist <-dist(x,y,method="euclidean")
dtw(cxdist)$distance
实际上,它首先计算交叉距离矩阵,然后将其用作 dtw 函数的输入。
我想在具有相当大图像的图像分类中使用多维动态时间扭曲。 图像值存储在可能如下所示的数据框中:
inDf <- data.frame(matrix(rnorm(60), ncol = 6))
colnames(inDf) <- c('var1t1','var2t1','var1t2','var2t2','var1t3','var2t3')
在这个例子中,有两个变量(var1 和 var2)被观察了 3 次。
问题是如何在计算强度方面以尽可能高的效率获得 dtw 距离矩阵?
以下是一些想法: - 遍历输入图像矩阵的每个值,将向量重塑为矩阵,以便能够计算交叉距离,然后计算 dtw 距离并将其存储在专用矩阵中。 这无疑是计算量最大的解决方案
【问题讨论】:
-
那么,您需要高效计算 var1 和 var2 之间的距离矩阵(欧几里得)(两者都是相同长度的 3 维数组)吗? IE。在
x <- inDf[,c("var1t1","var1t2","var1t3")]和y <- inDf[,c("var2t1","var2t2","var2t3")]之间? -
您能否说明
inDf与您的第一个示例有何关联?是var1t1x,和var2t1y,然后再重复另外两个时间段?您是否要计算每个时间段内每对变量的dtw距离?这些东西与图像有什么关系?另外,看起来dtw自己计算了dist,所以你不需要这一步。 -
第一个示例和第二个示例之间的区别在于每个样本测量的变量数量。首先,x 和 y 都是同一唯一变量随时间变化的时间序列。在第二种情况下,每个 x 都由两个变量、两个时间序列来表征。希望更清楚
-
在第二个例子中,
cxdist的尺寸是多少?据我了解,他们应该是10x10。因此,我们正在计算var1中的 10 个 3 维点和var2中的 10 个 3 维点之间的成对距离。对不对?
标签: r performance image-processing distance