我一直受困于 MATLAB 中时间序列的后续匹配(我是新手)。
我有两个时间序列:A(长度为a)和B(长度为b)。假设a远大于b。任务是找到从 A 到 B 最近的窗口(根据欧几里得度量)。
为了做到这一点,我构造了额外的矩阵 C 来存储 A 中长度为 b 的所有子序列,然后使用 pdist2(C, B)。显然它运行缓慢并且需要太多内存。
所以我有几个问题:
如何获得没有循环的C(实际上是 reshape A)?
解决这个问题的常用方法有哪些? (最好在 MATLAB 中,但其他环境也是可能的)
感谢您的帮助!
最佳答案
对于第一个问题,你可以尝试
tmp = repmat(A,1,b);
C = reshape([tmp zeros(1,b)],a,b);
C = C(1:(a-b+1),:);
此外,与这个非常好的解决方案相比,pdist2
非常慢:Efficiently compute pairwise squared Euclidean distance in Matlab
关于matlab - 后续时间序列匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28367743/