-
Notifications
You must be signed in to change notification settings - Fork 313
/
EN_CID.m
69 lines (58 loc) · 2.55 KB
/
EN_CID.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
function out = EN_CID(y)
% EN_CID Simple complexity measure of a time series.
%
% Estimates of 'complexity' of a time series as the stretched-out length of the
% lines resulting from a line-graph of the time series.
%
% cf. Batista, G. E. A. P. A., Keogh, E. J., Tataw, O. M. & de Souza, V. M. A.
% CID: an efficient complexity-invariant distance for time series. Data Min.
% Knowl. Disc. 28, 634–669 (2014). https://doi.org/10.1007/s10618-013-0312-3
%
%---INPUTS:
%
% y, the input time series
% ------------------------------------------------------------------------------
% Copyright (C) 2020, Ben D. Fulcher <ben.d.fulcher@gmail.com>,
% <http://www.benfulcher.com>
%
% If you use this code for your research, please cite the following two papers:
%
% (1) B.D. Fulcher and N.S. Jones, "hctsa: A Computational Framework for Automated
% Time-Series Phenotyping Using Massive Feature Extraction, Cell Systems 5: 527 (2017).
% DOI: 10.1016/j.cels.2017.10.001
%
% (2) B.D. Fulcher, M.A. Little, N.S. Jones, "Highly comparative time-series
% analysis: the empirical structure of time series and their methods",
% J. Roy. Soc. Interface 10(83) 20130048 (2013).
% DOI: 10.1098/rsif.2013.0048
%
% This function is free software: you can redistribute it and/or modify it under
% the terms of the GNU General Public License as published by the Free Software
% Foundation, either version 3 of the License, or (at your option) any later
% version.
%
% This program is distributed in the hope that it will be useful, but WITHOUT
% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
% FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
% details.
%
% You should have received a copy of the GNU General Public License along with
% this program. If not, see <http://www.gnu.org/licenses/>.
% ------------------------------------------------------------------------------
% Original definition (in Table 2 of paper cited above)
% sum -> mean to deal with non-equal time-series lengths
% (now scales properly with length)
f_CE1 = @(x) sqrt(mean(diff(x).^2));
out.CE1 = f_CE1(y);
% Definition corresponding to the line segment example in Fig. 9 of the paper
% cited above (using Pythagoras's theorum):
f_CE2 = @(x) mean(sqrt(1+diff(x).^2));
out.CE2 = f_CE2(y);
% Defined as a proportion of the minimum such value possible for this time series,
% this would be attained from putting close values close; i.e., sorting the time
% series
out.minCE1 = f_CE1(sort(y));
out.minCE2 = f_CE2(sort(y));
out.CE1_norm = out.CE1/out.minCE1;
out.CE2_norm = out.CE2/out.minCE2;
end