Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "qsr.h"
- #include <stdio.h>
- #include <stdlib.h>
- void peakDetection(QRS_params *params, int* points, int counter)
- {
- params->RR_LOW = 0.92 * params->RR_AVERAGE2;
- params->RR_HIGH = 1.16 * params->RR_AVERAGE2;
- params->RR_MISS = 1.66 * params->RR_AVERAGE2;
- if(points[0] < points[1] && points[1] > points[2]) {
- //PEAK Detection
- params->PEAKS[params->PEAK_INDEX] = points[1];
- params->PEAK_INDEX += 1;
- if(params->PEAKS[params->PEAK_INDEX] < params->THRESHOLD1) {
- // Adjust Thresholds
- params->NPKF = 0.125 * params->PEAKS[params->PEAK_INDEX] + 0.875 * params->NPKF;
- params->THRESHOLD1 = params->NPKF + 0.25 * (params->SPKF - params->NPKF);
- params->THRESHOLD2 = 0.5 * params->THRESHOLD1;
- } else {
- //Calculate RR Interval
- params->RR_INTERVAL = counter - params->RR_INTERVAL_PREV;
- params->RR_INTERVAL_PREV = counter;
- //If RR Interval is between RR_low and RR_High
- if(params->RR_INTERVAL > params->RR_LOW && params->RR_INTERVAL < params->RR_HIGH)
- {
- params->RR_PEAK = params->PEAKS[params->PEAK_INDEX];
- //if(params->RR_PEAK > 2000){
- printf("A%i %i\n",counter, params->RR_PEAK);
- //}
- params->SPKF = 0.125 * params->PEAKS[params->PEAK_INDEX] + 0.875 * params->SPKF;
- params->RR_INTERVALS_OK[params->RR_INDEX_OK] = params->RR_INTERVAL;
- params->RR_INTERVALS[params->RR_INDEX] = params->RR_INTERVAL;
- if(params->RR_INDEX_OK == 7) {
- params->RR_INDEX_OK = 0;
- } else {
- params->RR_INDEX_OK += 1;
- }
- if(params->RR_INDEX == 7) {
- params->RR_INDEX = 0;
- } else {
- params->RR_INDEX += 1;
- }
- // Calculates RR_AVERAGE1
- params->RR_AVERAGE1 = 0;
- for(int i = 0; i < sizeof(params->RR_INTERVALS); i++){
- params->RR_AVERAGE1 += params->RR_INTERVALS[i];
- }
- params->RR_AVERAGE1 /= 8;
- printf("AVG1: %i ",params->RR_AVERAGE1);
- // Calculates RR_AVERAGE2
- params->RR_AVERAGE2 = 0;
- for(int i = 0; i < sizeof(params->RR_INTERVALS_OK); i++){
- params->RR_AVERAGE2 += params->RR_INTERVALS_OK[i];
- }
- params->RR_AVERAGE2 /= 8;
- printf(" AVG2: %i \n",params->RR_AVERAGE2);
- params->RR_LOW = 0.92 * params->RR_AVERAGE2;
- params->RR_HIGH = 1.16 * params->RR_AVERAGE2;
- params->RR_MISS = 1.66 * params->RR_AVERAGE2;
- params->THRESHOLD1 = params->NPKF + 0.25*(params->SPKF-params->NPKF);
- params->THRESHOLD2 = 0.5*params->THRESHOLD1;
- }
- else // SEARCHBACK
- {
- if(params->RR_INTERVAL > params->RR_MISS){
- for(int i = params->PEAK_INDEX; i >= 0; i--){
- if(params->PEAKS[i] > params->THRESHOLD2) {
- params->RR_PEAK = params->PEAKS[i];
- //if(params->RR_PEAK > 2000){
- printf("B%i %i\n",counter,params->RR_PEAK);
- //}
- break;
- }
- }
- params->RR_INTERVALS[params->RR_INDEX] = params->RR_INTERVAL;
- if(params->RR_INDEX == 7) {
- params->RR_INDEX = 0;
- } else {
- params->RR_INDEX += 1;
- }
- // Calculates RR_AVERAGE1
- params->RR_AVERAGE1 = 0;
- for(int i = 0; i < sizeof(params->RR_INTERVALS); i++){
- params->RR_AVERAGE1 += params->RR_INTERVALS[i];
- }
- params->RR_AVERAGE1 /= 8;
- printf("AVG1SB: %i ",params->RR_AVERAGE1);
- printf(" AVG2SB: %i \n",params->RR_AVERAGE2);
- params->RR_LOW = 0.92 * params->RR_AVERAGE1;
- params->RR_HIGH = 1.16 * params->RR_AVERAGE1;
- params->RR_MISS = 1.66 * params->RR_AVERAGE1;
- params->THRESHOLD1 = params->NPKF + 0.25*(params->SPKF-params->NPKF);
- params->THRESHOLD2 = 0.5*params->THRESHOLD1;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement