|
请教硬汉一个问题
我在学习你的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] ;
}
最后附上我的滤波效果,还是不错的,最后感谢硬汉辛苦编写的教程。谢谢
|
|