fengzhishengzhu 发表于 2023-8-11 19:22:56

FIR 高通滤波器测试与matlab仿真有明显出入

1、硬件平台是M33核的EFR32bg22;

2、项目中ADC信号采集一直存在低频干扰,目前想通过FIR的高通滤波器进行滤除,Matlab仿真是可以改善信号的,现在打算移植到嵌入式软件中,发现滤波后的结果与Matlab的前面几十个点明显对不上,看了DSP教程,也没发现问题,
   想请教各位大神给予指点?数据为1024点,采样率为1199.652Hz,滤波器为截止频率为10Hz的63阶高通滤波器。



#define BLOCK_SIZE            1
#define FIR_ORDER             63



void TestFilter(FLOAT *sVTXDataArray)
{
UINT16 usIndex;
UINT16 usXLoop;


arm_fir_instance_f32 S;
float*inputF32, *outputF32;

float firStateF32;
   
inputF32 = (FLOAT *)sVTXDataArray;


outputF32 = (FLOAT *)OutTest;

/* Call FIR init function to initialize the instance structure. */
arm_fir_init_f32(&S, FIR_ORDER, (float32_t *)&HPFfirCoeffs /*滤波器系数*/, &firStateF32 /*临时数组*/, BLOCK_SIZE);

/* ----------------------------------------------------------------------
** Call the FIR process function for every blockSize samples
** ------------------------------------------------------------------- */

for(usIndex = 0; usIndex < 1024/BLOCK_SIZE; usIndex++)
{

    arm_fir_f32(&S, inputF32 + (usIndex * BLOCK_SIZE), outputF32+ (usIndex * BLOCK_SIZE), BLOCK_SIZE);

   
}


}


eric2013 发表于 2023-8-12 08:34:03

10Hz截至频率太小了,小于1%的截止,效果一般。

fengzhishengzhu 发表于 2023-8-12 09:27:50

我现在关注的不是效果,而是前面一些点的问题,我想这个问题是不是滤波器的时延造成的?

eric2013 发表于 2023-8-12 09:36:47

fengzhishengzhu 发表于 2023-8-12 09:27
我现在关注的不是效果,而是前面一些点的问题,我想这个问题是不是滤波器的时延造成的?
学习下什么是群延迟


fengzhishengzhu 发表于 2023-8-12 09:46:57

eric2013 发表于 2023-8-12 09:36
学习下什么是群延迟

谢谢eric,刚看了这个文档。FIR存在群延迟,以文档为例,当群延迟为14时,那滤波后最开始的前14个点是不是没有意义?

eric2013 发表于 2023-8-12 12:01:22

fengzhishengzhu 发表于 2023-8-12 09:46
谢谢eric,刚看了这个文档。FIR存在群延迟,以文档为例,当群延迟为14时,那滤波后最开始的前14个点是不 ...

对。

fengzhishengzhu 发表于 2023-8-12 13:56:52

谢谢eric的指导:D
页: [1]
查看完整版本: FIR 高通滤波器测试与matlab仿真有明显出入