硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1460|回复: 2
收起左侧

[信号与系统] 关于低通滤波后幅值降低问题

[复制链接]

4

主题

26

回帖

38

积分

新手上路

积分
38
发表于 2022-7-23 16:18:57 | 显示全部楼层 |阅读模式
请教硬汉一个问题

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

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

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

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

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

#define TEST_LENGTH_SAMPLES2    100
float testdata2[100];
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[0];
    outputF32 = &testOutput[0];

    /* 初始化结构体S */
    arm_fir_init_f32(&S,                           
                     NUM_TAPS,
                    (float32_t *)&firCoeffs32LP[0],
                     &firStateF32[0],
                     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[50] ;
}

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


1.png


回复

使用道具 举报

75

主题

684

回帖

909

积分

金牌会员

积分
909
发表于 2022-7-23 19:16:28 | 显示全部楼层
我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀
回复

使用道具 举报

4

主题

26

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2022-7-23 19:36:16 | 显示全部楼层
庄永 发表于 2022-7-23 19:16
我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀

可能有,但是我是新手,不熟悉,所以来问问硬汉
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 23:23 , Processed in 0.265321 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表