目前,我正在分析红外和红色传感器的软件来计算氧饱和度和心率。我用于计算SpO2和HR的通式是:
现在我在以下几行失败:
在.h文件中:
#define FS 100
#define BUFFER_SIZE (FS* 5)
#define HR_FIFO_SIZE 7
#define MA4_SIZE 4 // DO NOT CHANGE
#define HAMMING_SIZE 5// DO NOT CHANGE
static int32_t an_dx[ BUFFER_SIZE-MA4_SIZE]; // delta
static int32_t an_x[ BUFFER_SIZE]; //ir
static int32_t an_y[ BUFFER_SIZE]; //red
C ++文件:
uint32_t un_ir_mean,un_only_once ;
int32_t k, i,s;
const uint16_t auw_hamm[31]={ 41, 276, 512, 276, 41 }
//Hamm= long16(512* hamming(5)');
// an_dx[] array with soomthed adc values
...
...
// hamming window (Buffer = 500, Hamming Size = 5, MA4 Size = 4)
// flip wave form so that we can detect valley with peak detector
for ( i=0 ; i<BUFFER_SIZE-HAMMING_SIZE-MA4_SIZE-2 ; i++)
{
s= 0;
for( k=i; k<i+ HAMMING_SIZE ; k++)
{
s -= an_dx[k] *auw_hamm[k-i] ;
}
an_dx[i]= s/ (int32_t)1146; // divide by sum of auw_hamm
}
这里的信号是如何翻转的? 汉明阵列的数字来自哪里? 我曾在Hamming窗口的理论中工作,但仍然不理解所执行的功能。我希望你们能帮助我。
祝你好运 额敏
答案 0 :(得分:-1)
我相信他们正在执行卷积运算,并且已经翻转了汉明窗,并以成批的汉明窗尺寸对信号进行了卷积。