asj 发表于 2022-7-23 16:18:57

关于低通滤波后幅值降低问题

请教硬汉一个问题

我在学习你的dsp教程之后,尝试matlab生成系数,编写低通滤波器,程序写好了,运行也没有问题,滤波效果也不错

唯一的问题是,这个滤波之后的幅值变低了,请问这是正常的吗?

我想让它幅值不变,尝试给滤波后的数据 乘以一个比例系数,发现很完美。

但是我发现不同的滤波系数,这个比例系数也不一样? 请问有什么办法求出来这个比例系数吗?

目前我使用了一个很笨的方法如下也能求出来,但是我感觉不够完美。

#define TEST_LENGTH_SAMPLES2    100
float testdata2;
float ratioLpf;
void calcratio(void)
{
    uint32_t i;
    arm_fir_instance_f32 S;
    float32_t*inputF32, *outputF32;

    for( i=0; i<TEST_LENGTH_SAMPLES2; i++ )
    {
      testdata2 = 1000.0;
    }

    /* 初始化输入输出缓存指针 */
    inputF32 = &testdata2;
    outputF32 = &testOutput;

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

    /* 实现FIR滤波,这里每次处理1个点 */
    for(i=0; i < TEST_LENGTH_SAMPLES2; i++)
    {
      arm_fir_f32(&S, inputF32 + (i * blockSize),outputF32 + (i * blockSize),blockSize);
    }

    ratioLpf = 1000.0 / testOutput ;
}

最后附上我的滤波效果,还是不错的,最后感谢硬汉辛苦编写的教程。谢谢





庄永 发表于 2022-7-23 19:16:28

我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀

asj 发表于 2022-7-23 19:36:16

庄永 发表于 2022-7-23 19:16
我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀

可能有,但是我是新手,不熟悉,所以来问问硬汉 :lol
页: [1]
查看完整版本: 关于低通滤波后幅值降低问题