Computes the best so far Matrix Profile and Profile Index for Univariate Time Series. DISCLAIMER: This algorithm still in development by its authors. Join similarity, RMP and LMP not implemented yet.

  exclusion_zone = getOption("tsmp.exclusion_zone", 1/2),
  verbose = getOption("tsmp.verbose", 2),
  s_size = Inf,
  pre_scrimp = 1/4,
  pre_only = FALSE



a matrix or a vector.


an int. Size of the sliding window.


a numeric. Size of the exclusion zone, based on window size (default is 1/2). See details.


an int. See details. (Default is 2).


a numeric. for anytime algorithm, represents the size (in observations) the random calculation will occur (default is Inf).


a numeric. Set the pre-scrimp step based on window_size, if 0, disables pre-scrimp. (default is 1/4).


a logical. Returns only the pre script data. (Default is FALSE).


Returns a MatrixProfile object, a list with the matrix profile mp, profile index pi

left and right matrix profile lmp, rmp and profile index lpi, rpi, window size w and exclusion zone ez.


The Matrix Profile, has the potential to revolutionize time series data mining because of its generality, versatility, simplicity and scalability. In particular it has implications for time series motif discovery, time series joins, shapelet discovery (classification), density estimation, semantic segmentation, visualization, rule discovery, clustering etc. The anytime SCRIMP computes the Matrix Profile and Profile Index in such manner that it can be stopped before its complete calculation and return the best so far results allowing ultra-fast approximate solutions. verbose changes how much information is printed by this function; 0 means nothing, 1 means text, 2 adds the progress bar, 3 adds the finish sound. exclusion_zone is used to avoid trivial matches.

See also

Other matrix profile computations: mstomp_par(), stamp_par(), stomp_par(), tsmp(), valmod()


mp <- scrimp(mp_toy_data$data[1:200, 1], window_size = 30, verbose = 0)
# \donttest{
ref_data <- mp_toy_data$data[, 1]
query_data <- mp_toy_data$data[, 2]
# self similarity
mp <- scrimp(ref_data, window_size = 30, s_size = round(nrow(ref_data) * 0.1))
#> Finished in 0.24 secs
# join similarity
mp <- scrimp(ref_data, query_data, window_size = 30, s_size = round(nrow(query_data) * 0.1))
#> Join similarity not implemented yet.
#> Finished in 0.19 secs
# }