本人最近在用STM32的DSP库做数字滤波,使用的Kaiser窗进行滤波,代码如下:
#define BLOCK_SIZE 32;
uint32_t blockSize = BLOCK_SIZE;
uint32_t numBlocks = 100/BLOCK_SIZE;//需要滤波的次数
float32_t fft_inputbuf[100]; //输入数组
float32_t fft_outputbuf[100]; //输出数组
float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];//缓存大小BLOCK_SIZE + NUM_TAPS - 1
void lvbo()
{
u8 i ,j;//定义变量
arm_fir_instance_f32 S;//
float32_t *inputF32;
float32_t *outputF32;
u16 input_buffer11[32];
/*初始化输入输出缓存指针*/
inputF32 = &fft_inputbuf[0];
outputF32 = &fft_outputbuf[0];
for(j=0;j<32;j++)
{
fft_inputbuf[j]= (float32_t)sample_press[j];//将采用的压力值装入输入数组中
}
/*初始化结构体**/
arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&mm[0], &firStateF32[0], blockSize);
//
/*实现fir滤波*/
for(i=0; i < numBlocks; i++)
{
arm_fir_f32(&S,(inputF32 + (i* blockSize)), (outputF32 + (i*blockSize)), 32);
}
}
但是fft_outputbuffer 少了20个,是为什么呢?请大侠指点一下,谢谢
|