Use DTW to cluster Uneven size time series

8 次查看(过去 30 天)
Dear friends ,
I want to use DTW to clustor un even size data time series
my below code is working
data = rand(161,20);
[idx,c,sumd,d] = kmedoids(data,10,'Distance',@dtwf);
function dist = dtwf(x,y)
% n = numel(x);
m2 = size(y,1);
dist = zeros(m2,1);
for i=1:m2
dist(i) = dtw(x,y(i,:));
end
end
But the problem is I'm trying to use it for my time series (raws) witch are not in same length. I alined them with a time and make a matrics somthing like data = rand(161,20); but the problem is due to un even size (time), some raws has NaN at the 'end' and the 'beginning;
could you kindly helped me ...
my dat is look like this
NaN NaN NaN 0.5652 ... 0.9338 NaN NaN NaN
NaN NaN 0.6514 0.6486 ... 0.8719 NaN NaN NaN
NaN NaN 0.4987 0.7981 ... 0.3011 0.8229 NaN NaN
NaN NaN 0.2845 0.2204 ... 0.2360 0.6886 0.8708 NaN
NaN NaN 0.8306 0.8579 ... 0.8316 0.6039 0.3528 0.7837
NaN 0.1909 0.8184 0.9047 ... 0.4378 0.3870 0.4002 0.6733
0.7114 0.4286 0.9382 0.2920 ... 0.5071 0.0655 0.5979 0.8407
0.7834 0.0145 3.2610e-04 0.7259 ... 0.1855 0.9986 0.9115 0.4209
0.6239 0.3253 0.6404 0.3394 ... 0.1515 0.6610 0.1330 0.7037
... ... ... ... ... ... ... ... ... ...
When I run the codes all the raws that have NaN value going to give NaN as clustor, how i can avoid this
please kindly help me
  1 个评论
Amila
Amila 2023-3-27
If anyone has any idea on how to do it please give me some advice ,
Thank you !

请先登录,再进行评论。

回答(1 个)

yamid
yamid 2023-11-2
Just make sure the samples in data are in rows, then I would define dtwf as below:
function dist = dtwf(x,y)
x_nonNan= x(~isnan(x));
y_nonNan= y(~isnan(y));
m2 = size(y,1);
dist = zeros(m2,1);
for i=1:m2
dist(i) = dtw(x_nonNan,y_nonNan(i,:));
end
Then I use hierarchical clustering
ncluster=3;
dist = pdist(data, @dtwf);
Z = linkage(dist, 'complete');
idx = cluster(Z, 'maxclust', nclusters);

类别

Help CenterFile Exchange 中查找有关 Sequence and Numeric Feature Data Workflows 的更多信息

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by