Advertisement
Guest User

qsr.c

a guest
Sep 26th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.08 KB | None | 0 0
  1. #include "qsr.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. void peakDetection(QRS_params *params, int* points, int counter)
  6. {
  7. params->RR_LOW = 0.92 * params->RR_AVERAGE2;
  8. params->RR_HIGH = 1.16 * params->RR_AVERAGE2;
  9. params->RR_MISS = 1.66 * params->RR_AVERAGE2;
  10.  
  11. if(points[0] < points[1] && points[1] > points[2]) {
  12. //PEAK Detection
  13. params->PEAKS[params->PEAK_INDEX] = points[1];
  14. params->PEAK_INDEX += 1;
  15.  
  16. if(params->PEAKS[params->PEAK_INDEX] < params->THRESHOLD1) {
  17. // Adjust Thresholds
  18. params->NPKF = 0.125 * params->PEAKS[params->PEAK_INDEX] + 0.875 * params->NPKF;
  19. params->THRESHOLD1 = params->NPKF + 0.25 * (params->SPKF - params->NPKF);
  20. params->THRESHOLD2 = 0.5 * params->THRESHOLD1;
  21.  
  22. } else {
  23. //Calculate RR Interval
  24. params->RR_INTERVAL = counter - params->RR_INTERVAL_PREV;
  25. params->RR_INTERVAL_PREV = counter;
  26. //If RR Interval is between RR_low and RR_High
  27. if(params->RR_INTERVAL > params->RR_LOW && params->RR_INTERVAL < params->RR_HIGH)
  28. {
  29. params->RR_PEAK = params->PEAKS[params->PEAK_INDEX];
  30. //if(params->RR_PEAK > 2000){
  31. printf("A%i %i\n",counter, params->RR_PEAK);
  32. //}
  33. params->SPKF = 0.125 * params->PEAKS[params->PEAK_INDEX] + 0.875 * params->SPKF;
  34. params->RR_INTERVALS_OK[params->RR_INDEX_OK] = params->RR_INTERVAL;
  35. params->RR_INTERVALS[params->RR_INDEX] = params->RR_INTERVAL;
  36. if(params->RR_INDEX_OK == 7) {
  37. params->RR_INDEX_OK = 0;
  38. } else {
  39. params->RR_INDEX_OK += 1;
  40. }
  41. if(params->RR_INDEX == 7) {
  42. params->RR_INDEX = 0;
  43. } else {
  44. params->RR_INDEX += 1;
  45. }
  46. // Calculates RR_AVERAGE1
  47. params->RR_AVERAGE1 = 0;
  48. for(int i = 0; i < sizeof(params->RR_INTERVALS); i++){
  49. params->RR_AVERAGE1 += params->RR_INTERVALS[i];
  50. }
  51. params->RR_AVERAGE1 /= 8;
  52. printf("AVG1: %i ",params->RR_AVERAGE1);
  53.  
  54. // Calculates RR_AVERAGE2
  55. params->RR_AVERAGE2 = 0;
  56. for(int i = 0; i < sizeof(params->RR_INTERVALS_OK); i++){
  57. params->RR_AVERAGE2 += params->RR_INTERVALS_OK[i];
  58. }
  59. params->RR_AVERAGE2 /= 8;
  60. printf(" AVG2: %i \n",params->RR_AVERAGE2);
  61.  
  62. params->RR_LOW = 0.92 * params->RR_AVERAGE2;
  63. params->RR_HIGH = 1.16 * params->RR_AVERAGE2;
  64. params->RR_MISS = 1.66 * params->RR_AVERAGE2;
  65. params->THRESHOLD1 = params->NPKF + 0.25*(params->SPKF-params->NPKF);
  66. params->THRESHOLD2 = 0.5*params->THRESHOLD1;
  67. }
  68. else // SEARCHBACK
  69. {
  70. if(params->RR_INTERVAL > params->RR_MISS){
  71. for(int i = params->PEAK_INDEX; i >= 0; i--){
  72. if(params->PEAKS[i] > params->THRESHOLD2) {
  73. params->RR_PEAK = params->PEAKS[i];
  74. //if(params->RR_PEAK > 2000){
  75. printf("B%i %i\n",counter,params->RR_PEAK);
  76. //}
  77. break;
  78. }
  79. }
  80. params->RR_INTERVALS[params->RR_INDEX] = params->RR_INTERVAL;
  81. if(params->RR_INDEX == 7) {
  82. params->RR_INDEX = 0;
  83. } else {
  84. params->RR_INDEX += 1;
  85. }
  86. // Calculates RR_AVERAGE1
  87. params->RR_AVERAGE1 = 0;
  88. for(int i = 0; i < sizeof(params->RR_INTERVALS); i++){
  89. params->RR_AVERAGE1 += params->RR_INTERVALS[i];
  90. }
  91. params->RR_AVERAGE1 /= 8;
  92. printf("AVG1SB: %i ",params->RR_AVERAGE1);
  93. printf(" AVG2SB: %i \n",params->RR_AVERAGE2);
  94. params->RR_LOW = 0.92 * params->RR_AVERAGE1;
  95. params->RR_HIGH = 1.16 * params->RR_AVERAGE1;
  96. params->RR_MISS = 1.66 * params->RR_AVERAGE1;
  97. params->THRESHOLD1 = params->NPKF + 0.25*(params->SPKF-params->NPKF);
  98. params->THRESHOLD2 = 0.5*params->THRESHOLD1;
  99.  
  100. }
  101. }
  102. }
  103. }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement