Matlab FIR 滤波器

标签 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)

我收到以下错误:

Frequency specifications must be between 0 and 1.

然后我计算比例因子并将所有系数相乘

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

Log base 2 (S )+ 1

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

Frequency specifications must be between 0 and 1.

最佳答案

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)

关于Matlab FIR 滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35118586/

相关文章:

python - 系统 ('hostname' ) 从 MATLAB 到 Python

c - 无法在 while 循环外保留数组

matlab - 如何使用Matlab查找声音强度?

ios - 如何从 3 轴加速度计数据中获取运动大小

python - 以数值方式求解积分极限?

matlab - 类方法的输入参数错误太多

matlab - 如何获得图像中使用的1D和2D空间滤波器的光谱?

python - 如何使用librosa获取音乐信号整个时间段的频谱?

matlab - 如何获得所有输出(MatLab)?

c - 如何从 C .h 文件中定义的 typedef 结构创建 Simulink 总线?