Guest User

Untitled

a guest
Feb 20th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #include <Rcpp.h>
  2. using namespace Rcpp;
  3.  
  4. // [[Rcpp::export]]
  5. double SampleEntropy(NumericVector data, int m, double r, int N, double sd)
  6. {
  7. int Cm = 0, Cm1 = 0;
  8. double err = 0.0, sum = 0.0;
  9.  
  10. err = sd * r;
  11.  
  12. for (unsigned int i = 0; i < N - (m + 1) + 1; i++) {
  13. for (unsigned int j = i + 1; j < N - (m + 1) + 1; j++) {
  14. bool eq = true;
  15. //m - length series
  16. for (unsigned int k = 0; k < m; k++) {
  17. if (std::abs(data[i+k] - data[j+k]) > err) {
  18. eq = false;
  19. break;
  20. }
  21. }
  22. if (eq) Cm++;
  23.  
  24. //m+1 - length series
  25. int k = m;
  26. if (eq && std::abs(data[i+k] - data[j+k]) <= err)
  27. Cm1++;
  28. }
  29. }
  30.  
  31. if (Cm > 0 && Cm1 > 0)
  32. return std::log((double)Cm / (double)Cm1);
  33. else
  34. return 0.0;
  35.  
  36. }
  37.  
  38.  
  39. /*** R
  40. ts <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  41. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  42. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  43. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  44. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  45. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  46. 3, 3, 0, 0, 1, 0, 0, 0, 1, 0, 0, 3, 1, 0, 1, 1, 0, 0, 0, 0, 0,
  47. 2, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 1, 4, 0, 1, 1, 0, 0, 1, 0, 0,
  48. 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 1, 0,
  49. 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  50. 0, 0, 0, 0, 0, 0)
  51. SampleEntropy(ts,m=2L,r=0.2,sd=sd(ts),N = as.integer(length(ts)))
  52. */
Add Comment
Please, Sign In to add comment