// peak location is acutally index for sharpest location of raw signal since we flipped the signal maxim_find_peaks( an_dx_peak_locs, &n_npks, an_dx, BUFFER_SIZE-HAMMING_SIZE, n_th1, 18, 4);//peak_height, peak_distance, max_num_peaks n_peak_interval_sum =0; if (n_npks>=3){ for (k=1; k<n_npks; k++) n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]); n_peak_interval_sum=n_peak_interval_sum/(n_npks-1); *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);// beats per minutes //(int32_t)(sample_rate * 60/n_peak_interval_sum); *pch_hr_valid = 1; } else { *pn_heart_rate = -999; *pch_hr_valid = 0; } for ( k=0 ; k<n_npks ;k++) an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2;
时间: 2024-04-20 16:26:10 浏览: 122
jspm心理健康系统演示录像2021.zip
这段代码是一个心率检测算法的一部分。首先,通过调用`maxim_find_peaks`函数,使用一些参数(峰值高度、峰值间距、最大峰值数量等)来寻找信号中的峰值位置,并将结果存储在`an_dx_peak_locs`数组中。
接下来,如果找到的峰值数量大于等于3个,那么通过计算相邻峰值之间的间隔的平均值来估计心率。具体来说,它计算了相邻峰值位置之间的差值,并将其累加到`n_peak_interval_sum`变量中。然后,将`n_peak_interval_sum`除以峰值数量减1的结果作为平均间隔。最后,根据平均间隔计算心率(以每分钟心跳数为单位),并将结果存储在`pn_heart_rate`中。同时,将`pch_hr_valid`设置为1,表示心率有效。
如果找到的峰值数量少于3个,则将`pn_heart_rate`设置为-999,表示心率无效。同时,将`pch_hr_valid`设置为0,表示心率无效。
最后,根据峰值位置和汉明窗口大小,计算出对应的谷底位置,并将结果存储在`an_ir_valley_locs`数组中。
这段代码的目的是通过寻找信号中的峰值位置来估计心率,并计算出对应的谷底位置。
阅读全文