函数 > 信号处理 > 数字滤波 > 示例:使用 Remez 交换算法的 FIR 滤波器
  
示例:使用 Remez 交换算法的 FIR 滤波器
remez 函数执行用于 FIR 滤波器设计的 Remez 交换算法。
有关该算法和示例的说明,请参阅 Prentice-Hall, Inc. 出版的由 Rabiner 和 Gold 合著的 Theory and Application of Digital Signal Processing (《数字信号处理的理论和应用》) 以及 Wiley-Interscience 出版的由 Parks 和 Burrus 合著的 Digital Filter Design (《数字滤波器设计》)。
低通滤波器
1. 将通带响应定义为 1,并将阻带响应定义为 0,然后在通带和阻带边缘之间内插直线过渡。
单击复制此表达式
单击复制此表达式
单击复制此表达式
通常,频率网格中的点数量约为滤波器长度的 8 至 10 倍,起始频率为 0,并均匀增大至略低于 0.5。要定义响应,需要首先定义频带边界并在每个频带中定义为误差所分配的权重。该算法在频率范围 [0, 0.5] 内最小化最大加权误差。
2. 定义通带和阻带边界:
单击复制此表达式
单击复制此表达式
3. 定义通带、阻带和过渡带的权重:
单击复制此表达式
单击复制此表达式
单击复制此表达式
4. 定义一个函数,该函数将所需响应指定为频率的函数。可通过在每个网格点处进行计算来构建响应矢量。
单击复制此表达式
单击复制此表达式
5. 定义权重矢量,该矢量用于为每个网格点分配相应频带的权重。
单击复制此表达式
6. 使用函数 remezlength 计算滤波器系数:
单击复制此表达式
单击复制此表达式
7. 使用函数 gain 计算此奇长度滤波器在 0 和 0.5 处增益所产生的最大通带和阻带误差:
单击复制此表达式
单击复制此表达式
8. 绘制函数及其从 0 到 0.5 的频率响应图像。
单击复制此表达式
单击复制此表达式
单击复制此表达式
将显示十个极值频率,包括 (1 - δ1) 线与通带边界 pb 的交叉点,以及 δ2 线与阻带边界 sb 的交叉点。误差在每个频带中的极值频率上均匀交替出现。要查看两误差 d 不相等的示例,需在上面的滤波器技术规格中将阻带权重更改为 .5。
带通滤波器
1. 定义一个响应函数,通过将每个过渡带以及通带中的响应函数相加来构建该函数。
单击复制此表达式
2. 使用矢量化运算符将滤波器函数同时应用于整个网格。各个权重相同。
单击复制此表达式
单击复制此表达式
3. 生成具有 45 个系数的滤波器:
单击复制此表达式
单击复制此表达式
4. 绘制滤波器频率响应图像:
单击复制此表达式
单击复制此表达式