资源简介

零初始化的零相位数字滤波器C代码,与Matlab中的filtfilt()功能相似。滤波器初始化部分许改进。VS2010下编写,使用时注意设置编译优化选项

资源截图

代码片段和文件信息

#include 
#include 


// Zero-phase digital filter with a 5 order IIR filter
void filtfilt(float * b float * a float * rfData float * psData int sampLength)
{
// Usage...
// b ---------- the numerator coefficients of the filter
// a ---------- the denominator coefficients of the filter
// rfData ----- the input data
// psData ----- filtered data
// sampLength - length of the input Data 


// Using digital filter coefficients obtained from b a = signal.butter(5 0.5) in python
int i;
float tData;
//double *tpData;
// Zero initialization.
psData[0] = + ( b[0]*rfData[0] );

psData[1] = - ( a[1]*psData[0] )
        + ( b[0]*rfData[1] + b[1]*rfData[0] );

psData[2] = - ( a[1]*psData[1] + a[2]*psData[0] )
        + ( b[0]*rfDat

评论

共有 条评论