我有一个以 50Hz 采样的 PPG 信号,我想使用 Lynn 的整数滤波器对信号进行滤波。IE
截止频率为 5Hz,因此这给出了(这是一个 3db 截止),因此差分方程是
现在将此过滤器应用于信号,我的信号被过滤,但有一些线性分量使基线线性增加。
有什么建议我哪里出错了吗?
数据在基于 cortex M0 的蓝牙模块上进行处理并传输到手机。我在 Matlab 中绘制 csv 文件。
皮质 M0 代码:
float process_ppg_iir(uint16_t raw_data_ppg)
{
int b0=1, b1=-2, b2=1, a1=-2;
int a2 = 1;
if( global_sample_counter <= 7-1 )
{
ppg_raw[global_sample_counter] = raw_data_ppg;
if(global_sample_counter <=3-1)
ppg_processed[global_sample_counter] = raw_data_ppg;
global_sample_counter++;
}
else
{
// sfit values to left
int i=0;
for(i=0 ;i <=5;i++)
{
ppg_raw[i] = ppg_raw[i+1];
}
ppg_processed[0] = ppg_processed[1];
ppg_processed[1] = ppg_processed[2];
ppg_raw[6] = raw_data_ppg;
ppg_processed[2] = (b0*ppg_raw[6]+b1*ppg_raw[3]+b2*ppg_raw[0])- a1*ppg_processed[1]-a2*ppg_processed[0];
}
return ppg_processed[2];
}
