我正在设计一个9抽头FIR滤波器,我使用MATLAB来获得滤波器系数
-0.0041 0.0077 0.0893 0.2433 0.3276 0.2433 0.0893 0.0077 -0.0041
我将所有系数乘以比例因子,将它们缩放到16位。过滤器的输入是由自定义MATLAB代码生成的随机200值
样本数据的最大值为6.3445,最小值为-7.5099。我试图弄清楚我是否应该使用相同的比例因子来缩放系数和输入数据,或者我应该为每个使用单独的比例因子。如果我应该使用相同的比例因子来缩放两者,那么我该如何计算该因子?
答案 0 :(得分:1)
我猜你会使用整数运算,因此缩放。缩放输入的程度取决于所需滤波器的精度/性能。基本上我所做的是:
input_integer_value = trunc(input_value*scale_factor_input);
coeff_integer_value = trunc(coeff_value*scale_coeff);
由于您在Matlab中获得了该函数,您可以使用新的输入/系数值运行过滤器并将它们与浮点值进行比较
input_integer_converted = input_integer_value/scale_factor_input;
coeff_integer_converted = coeff_integer_value/scale_coeff;
现在你可以改变比例因子,看看哪个能给你带来最佳性能w.r.t.比特数。
希望它有所帮助。