数字滤波器:FIR和IIR

传统的线性数字滤波器一般有两种类型,有限冲激响应(FIR)滤波器和无限冲激响应(IIR)滤波器。

FIR:finite impulse response,有限冲激响应

FIR数字滤波器只用当前和过去的输入样点值来得到当前的输出样点值,过去的输出样点值一个也未用到。

给定一个有限持续时间的非0输入值,FIR滤波器给出一个有限持续时间的非0输出值。

给定一个全为0的输入,FIR滤波器给出全为0的输出。

FIR滤波器为非递归滤波器。

如果和数字电路做个参照,那么FIR滤波器相当于组合电路。

有限冲激响应的意思是:输入一个冲激信号,滤波器输出在某段持续时间内是非0输出,其它时间内输出0。

冲激信号:某一小段时间内有信号,其余时间内均为0。对数字序列而言,有一个值为1,其余均为0的信号序列。

响应:滤波器的输出称为响应。

有限冲激响应:滤波器对冲激信号的响应是有限的。

IIR:infinite impulse response,无限冲激响应

IIR滤波器输出值取决于以前的输入值和以前的滤波器输出值。

因为IIR的输出不仅和输入有关,而且还跟以前的输出有关,因此IIR具有记忆效应。即使某段时间内输入全为0,那IIR滤波器的输出也未必为0。

IIR滤波器为递归滤波器。

如果和数字电路做个参照,那么IIR滤波器相当于时序电路。

无限冲激响应的意思是:输入一个冲激信号,滤波器输出持续不断,延绵不绝。

无限冲激响应:滤波器对冲激信号的响应是无限的。

参考文献

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的MATLAB示例程序,用于进行语音信号数字滤波器的仿真报告。这个程序可以用于设计FIRIIR两种类型的数字滤波器,并进行频谱分析和时域信号分析。 ``` % 语音信号数字滤波器仿真报告 % 作者:XXX %% 清空环境变量 clear all; %% 加载语音信号 load handel.mat; % 加载Matlab自带的handel语音文件 h = y'/2; % 将语音信号归一化到[-1,1]范围内 Fs = 8192; % 采样频率为8192Hz %% 设计数字滤波器 % FIR滤波器 B = fir1(128, 0.5); % 采用Hamming窗口设计一个128阶FIR低通滤波器 % IIR滤波器 [b, a] = butter(8, 0.5); % 采用Butterworth滤波器设计一个8阶IIR低通滤波器 %% 频谱分析 % FIR滤波器 H_fir = fft(B, length(h)); % 计算FIR滤波器的频谱响应 H_fir_mag = abs(H_fir); % 取模值 H_fir_phase = unwrap(angle(H_fir)); % 取相位 % IIR滤波器 [H_iir, W_iir] = freqz(b, a, length(h)); % 计算IIR滤波器的频谱响应 % 绘制FIR滤波器的频谱响应 figure(1); subplot(2, 1, 1); plot(H_fir_mag); title('FIR滤波器的幅度频谱响应'); subplot(2, 1, 2); plot(H_fir_phase); title('FIR滤波器的相位频谱响应'); % 绘制IIR滤波器的频谱响应 figure(2); subplot(2, 1, 1); plot(W_iir, abs(H_iir)); title('IIR滤波器的幅度频谱响应'); subplot(2, 1, 2); plot(W_iir, angle(H_iir)); title('IIR滤波器的相位频谱响应'); %% 时域信号分析 % FIR滤波器 y_fir = filter(B, 1, h); % 对语音信号进行FIR滤波 % IIR滤波器 y_iir = filter(b, a, h); % 对语音信号进行IIR滤波 % 绘制原始语音信号和FIR滤波器输出信号的波形图 figure(3); subplot(2, 1, 1); plot(h); title('原始语音信号'); subplot(2, 1, 2); plot(y_fir); title('FIR滤波器输出信号'); % 绘制原始语音信号和IIR滤波器输出信号的波形图 figure(4); subplot(2, 1, 1); plot(h); title('原始语音信号'); subplot(2, 1, 2); plot(y_iir); title('IIR滤波器输出信号'); %% 播放语音信号和滤波器输出信号 sound(h, Fs); % 播放原始语音信号 pause(length(h)/Fs); % 等待语音播放完毕 sound(y_fir, Fs); % 播放FIR滤波器输出信号 pause(length(h)/Fs); % 等待语音播放完毕 sound(y_iir, Fs); % 播放IIR滤波器输出信号 pause(length(h)/Fs); % 等待语音播放完毕 ``` 上述程序中,我们首先加载了MATLAB自带的handel语音文件,并将其归一化到[-1,1]范围内。然后,我们分别采用fir1和butter函数设计了一个FIR和一个IIR数字低通滤波器,并通过fft和freqz计算了它们的频谱响应。接着,我们将原始语音信号分别进行了FIRIIR滤波,并绘制了它们的波形图。最后,我们播放了原始语音信号和滤波器输出信号。 在运行上述程序之后,您将得到4个图形窗口,分别显示FIRIIR滤波器的幅度和相位频谱响应,以及原始语音信号和滤波器输出信号的波形图。您可以进一步对这些图形进行分析,以评估滤波器的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值