函数 > 信号处理 > 数字滤波 > 示例:数字滤波器的时间响应
  
示例:数字滤波器的时间响应
使用 response 函数和 fftfilt 函数可通过直接计算卷积来求出 FIR 或 IIR 滤波器的输出。函数将返回长度为 n 的复值输出矢量。
这些函数所采用的方法已得到确认,在大多数信号处理教科书中均可查到。例如,可参阅 A.V. Oppenheim 和 R. W. Schafer 合著的 Discrete-Time Signal Processing (《离散时间信号处理》) 的 556-558 页,1989 版
低通 IIR 滤波器的阶
1. 定义包含低频和高频分量的输入信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 计算截断频率为 f 的二阶低通巴特沃斯滤波器的前 100 步响应。
单击复制此表达式
单击复制此表达式
单击复制此表达式
如函数说明中所指定的那样,截断频率应介于 0 和 0.5 之间。
3. 使用 iirlow 函数获取传递函数系数。
单击复制此表达式
4. 使用 response 函数获取过滤器响应。
单击复制此表达式
单击复制此表达式
响应信号 YA 为平滑器,同原始信号 x 相比,其振幅较小,时间漂移较轻微。
5. 指定截断频率同样为 f 的六阶低通巴特沃斯滤波器。response 函数将第一部分的输出传递给第二部分、然后将第二部分的输出传递给第三部分,依此类推。
单击复制此表达式
单击复制此表达式
单击复制此表达式
过滤器的阶数越高,其提供的响应越平滑,这在过滤高频时更有效,但会造成更大的时间漂移,并会使截断频率的过渡更急速。
带通 FIR 滤波器
1. 设计一个 FIR 带通滤波器 F,以传送上面定义的两个信号频率中较高的一个。
单击复制此表达式
单击复制此表达式
2. 计算长度为 51 的带通滤波器 (通带介于上述低频和高频之间) 的系数,并使用布拉克曼锥度 (最后一个自变量为 6)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
3. 计算由滤波器造成的延迟。
单击复制此表达式
单击复制此表达式
4. 应用 response 函数计算前 100 步。
单击复制此表达式
单击复制此表达式
虽然滤波器在启动时不立即进行传送,但其会非常精确地选择高频 (f2=0.2,T=5)。
带通 FIR 滤波器 2
显示下面的低通 FIR 滤波器对于其通带内的多个频率具有零相位偏移。
1. 定义两个输入信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 定义 FIR 滤波器的截断频率和系数个数。
单击复制此表达式
单击复制此表达式
3. 计算使用汉宁窗渐缩的系数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
4. 计算由滤波器造成的延迟。
单击复制此表达式
单击复制此表达式
5. 定义两个延迟的输入信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
6. 绘制第一个延迟输入信号 x1d 和滤波器对 x1 的响应。
单击复制此表达式
两个信号相同并具有零相位偏移。
7. 绘制第二个延迟输入信号 x2d 和滤波器对 x2 的响应。
单击复制此表达式
两个信号相同并具有零相位偏移。
使用卷积响应
如果滤波器数组具有一列,则响应函数将执行卷积运算。因此,此函数是基于 FFT 的函数 convolve 的备用函数。对于两个长序列卷积的最初一小部分,响应特别快。
1. 定义一个范围和两个数组,数组中的各项均为介于 0 和 1 之间的随机正数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 对这两个数组应用 convolve 函数。
单击复制此表达式
3. 使用 response 函数获取前 8 步的响应。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
这两个数组相同。
将响应的输出与 fftfilt 函数进行比较
显示通过 responsefftfilt 函数获得的结果相同。
1. 定义一个范围和两个频率。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 就 f1 和 f2 定义输入信号。
单击复制此表达式
3. 创建截断频率为 f 的 FIR 低通滤波器,并用汉宁窗对其进行渐缩处理。
单击复制此表达式
单击复制此表达式
4. 计算滤波器对输入信号的响应。
单击复制此表达式
单击复制此表达式
5. 对输入信号应用 fftfilt 函数并获取前 64 步的响应。
单击复制此表达式
单击复制此表达式
* 
y_f 是由复值元素构成的矢量。
单击复制此表达式
单击复制此表达式
6. 绘制输入信号与滤波器传递函数进行卷积运算的结果,并绘制响应信号。两个轨迹完全重合。
单击复制此表达式