qq_33787896 2019-04-24 19:02
浏览 479

FIR低通滤波器输入缓冲区为频率等于0的常数,输出缓冲区是否跟随输入?

请教老师:

用MATLAB的FDATool设计一个FIR低通滤波器,Fs=4HZ,Fc=1.5HZ,Order=16,输入采样32个值恒定=1.那么滤波器输出是不是应该=1 ?

我用STM32的CMSIS库函数arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);

把输入缓冲区的数值全部为1,输出缓冲区数值却是随机的,这是为什么?

#define TEST_LENGTH_SAMPLES  16    /* 采样点数 */
#define BLOCK_SIZE           16    /* 调用一次arm_fir_f32处理的采样点个数 */
#define NUM_TAPS             15  //29   /* 滤波器系数个数 */


uint32_t blockSize = BLOCK_SIZE;
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;            /* 需要调用arm_fir_f32的次数 */

static float32_t testInput_f32_50Hz_200Hz[TEST_LENGTH_SAMPLES]; /* 采样点 */
static float32_t testOutput[TEST_LENGTH_SAMPLES];               /* 滤波后的输出 */
static float32_t firStateF32[BLOCK_SIZE + NUM_TAPS - 1];        /* 状态缓存,大小numTaps + blockSize - 1*/


/* 低通滤波器系数 通过fadtool获取  FS=4HZ,FC=1.5HZ */
const float32_t firCoeffs32LP[NUM_TAPS] = {
  -0.002572332276, 0.006660863757, -0.01139776595,1.279498026e-17,   0.0481939055,
    -0.1315901577,   0.2148257494,           0.75,   0.2148257494,  -0.1315901577,
     0.0481939055,1.279498026e-17, -0.01139776595, 0.006660863757,-0.002572332276
};

int main(void)
{
uint8_t ucKeyCode;      /* 按键代码 */
    uint16_t i;


    for(i=0; i<16; i++)
    {
            testInput_f32_50Hz_200Hz[i] = 1.0;
    }


while (1)
    {

            arm_fir_f32_lp();    //27ms执行周期


    for(i=0; i<16; i++)
    {

    y=testOutput[i];

    //   timeDly(1000);

    }





    }


}

static void arm_fir_f32_lp(void)
{
    uint32_t i;
    arm_fir_instance_f32 S;
    float32_t  *inputF32, *outputF32;

    /* 初始化输入输出缓存指针 */
    inputF32 = &testInput_f32_50Hz_200Hz[0];
    outputF32 = &testOutput[0];

    /* 初始化结构体S */
    arm_fir_init_f32(&S, NUM_TAPS, (float32_t *)&firCoeffs32LP[0], &firStateF32[0], blockSize);

    /* 实现FIR滤波 */
//  for(i=0; i < numBlocks; i++)
    //{
    i=0;    
    arm_fir_f32(&S, inputF32 + (i * blockSize), outputF32 + (i * blockSize), blockSize);
//  }


    }
}


  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题