关于低通滤波后幅值降低问题
请教硬汉一个问题我在学习你的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 ;
}
最后附上我的滤波效果,还是不错的,最后感谢硬汉辛苦编写的教程。谢谢
我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀 庄永 发表于 2022-7-23 19:16
我记得Matlab除了生成滤波器系统参数外好像还会生成幅值矫正参数的呀
可能有,但是我是新手,不熟悉,所以来问问硬汉 :lol
页:
[1]