Matlab FIR滤波器

时间:2016-01-31 19:47:48

标签: matlab signal-processing

我必须分析有限脉冲响应(FIR)滤波器的系数,以获得最小字长,这样就不会有内部溢出影响输出。

  

-0.0041 0.0077 0.0893 0.3276 0.0893 0.0077 -0.0041

我试过了

f = fdesign.bandpass(0.0041,0.0077,0.0893,0.3276, 0.0893, 0.0077,0.0041);
Hd = design(f, 'equiripple');
fvtool(Hd)

我收到以下错误:

  

频率规格必须介于0和1之间。

然后我计算了比例因子并乘以所有系数

coefficients  h[0] +  h[1] +  h[2] +…+  h[M] = S

Log base 2 (S )+ 1

但我仍然得到同样的错误:

  

频率规格必须介于0和1之间。

1 个答案:

答案 0 :(得分:4)

fdesign.bandpass可用于根据滤波器规范设计带通滤波器,包括以下参数:

  • 第一个阻带开始边缘的频率
  • 通带开始和结束边缘的频率
  • 第二个阻带开始边缘的频率
  • 阻带衰减
  • 通带中允许的纹波量
  • 过滤顺序

您所看到的是滤波器系数,而不是基于上述参数的滤波器规格。要使用这些系数创建过滤器对象,您可以使用dfilt中许多可用结构选项之一。在您的情况下,FIR滤波器的适当结构为dfilt.dffir

b = [-0.0041,0.0077,0.0893,0.3276, 0.0893, 0.0077,-0.0041];
Hd = dfilt.dffir(b);
fvtool(Hd)