设计与实现IIR和FIR低通滤波器:数字信号处理实践

5星 · 超过95%的资源 需积分: 15 26 下载量 15 浏览量 更新于2024-07-27 收藏 674KB DOC 举报
"该资源是一份关于数字信号处理的作业,主要内容涉及设计和实现IIR(无限脉冲响应)和FIR(有限脉冲响应)低通滤波器。作业由宁波理工学院09通信2班的学生完成,要求包括语音信号的采集、滤波器设计以及对加噪语音的滤波处理,最终通过比较不同滤波器的效果来分析其性能差异。设计的滤波器性能指标如通带截止频率、阻带截止频率、通带衰减量和阻带衰减量都有明确的规定。" 在数字信号处理领域,滤波器是一种至关重要的工具,用于去除或减弱信号中的某些频率成分,保留或增强其他成分。IIR和FIR滤波器是两种常见的数字滤波器类型。 IIR滤波器是一种递归结构的滤波器,通常具有较高的计算效率,因为它需要较少的系数。在本作业中,设计了一个手工设计的IIR滤波器A和一个由Matlab的fdatool工具生成的巴特沃思IIR低通滤波器B。巴特沃思滤波器以其平坦的通带和陡峭的滚降特性著称。IIR滤波器的一个关键特点是它们可以实现非常陡峭的过渡带,但可能有轻微的非线性相位。 FIR滤波器则具有线性相位特性,这意味着在所有频率上相位响应是恒定的,这对于保持信号的时间对齐至关重要。作业中手工设计了一个FIR低通滤波器C,线性相位特性对于音频信号处理尤其重要,因为它能保持原始信号的时间结构。FIR滤波器通常需要更多的计算资源,因为它们基于非递归结构,但它们可以提供非常精确的频率选择性。 在实验部分,学生们使用Matlab编程实现滤波过程,对原始语音信号进行滤波,然后添加高斯白噪声,形成加噪语音。接着,使用设计的IIR和FIR滤波器对加噪语音进行滤波,比较不同滤波器处理后的效果。这一步骤旨在评估滤波器的噪声抑制能力和信号恢复质量。 滤波器性能指标的设定是为了确保在特定频段内的信号处理效果。例如,通带截止频率fp和阻带截止频率fs定义了滤波器允许通过和需要衰减的频率范围。通带衰减量和阻带衰减量分别规定了通带内信号的最大衰减和阻带内的最小衰减。在本案例中,要求通带内衰减不超过1dB,而在阻带内至少达到15dB的衰减,以确保信号的有效过滤。 最后,通过播放和比较滤波后的语音文件x1、x2、f1、f2和f3,学生可以直观地感知不同滤波器在实际应用中的表现,从而分析和理解IIR和FIR滤波器在滤波效果、相位特性以及计算复杂性等方面的差异。这种实践性的学习方法有助于深入理解和掌握数字信号处理的核心概念。

clear,clc; val=importdata('Ecg.txt'); signal=val(1,1:1800); fs=500; figure(1) subplot(4,2,1); plot(signal); title('干净的EGC信号'); xlabel('采样点'); ylabel('幅值(dB)'); grid on; signal1=awgn(signal,10,'measured'); subplot(4,2,2); plot(signal1); title('高斯噪声的EGC信号'); xlabel('采样点'); ylabel('幅值(dB)'); % 设计IIR低通滤波器 Wp = 0.1*pi; % 通带截止频率 Ws = 0.16*pi; % 阻带截止频率 Rp = 1; % 通带衰减 Rs = 15; % 阻带衰减 [n, Wn] = buttord(Wp, Ws, Rp, Rs, 's'); [b, a] = butter(n, Wn); % 绘制数字低通滤波器的幅频响应 [H, w] = freqz(b, a, 512); f = w/pi*500; subplot(4,2,3); plot(w/pi,20*log10(abs(H))); xlabel('频率'); ylabel('幅值(dB)'); title('IIR低通滤波器幅频响应'); iir_filtered_signal = filter(b, a, signal1); subplot(4,2,4); plot(iir_filtered_signal); xlabel('频率'); ylabel('幅值(dB)'); title('IIR低通滤波后的含高斯噪声的图像'); iir_signal = abs(fft(signal)); subplot(4,2,5); plot(20*log10(abs(iir_signal))); xlabel('频率'); ylabel('幅值(dB)'); title('含高斯噪声的频谱'); iir_signal1 = abs(fft(signal1)); subplot(4,2,6); plot(20*log10(abs(iir_signal1))); xlabel('频率'); ylabel('幅值(dB)'); title('IIR低通滤波后的含高斯噪声的频谱'); n = 80; % 滤波器阶数 wc = 0.1*pi; % 通带截止频率 h = fir1(n, wc/(fs/2), kaiser(n+1, 6)); % 计算FIR低通滤波器系数 filtered_signal_fir = filter(h, 1, signal); % 应用FIR滤波器 subplot(4,2,7); plot(20*log10(abs(h))); title('FIR低通滤波幅频响应'); xlabel('频率'); ylabel('幅值(dB)'); [Pxx_filtered_fir, f_filtered_fir] = periodogram(filtered_signal_fir, [], [], fs); subplot(4,2,8); plot(20*log10(abs(Pxx_filtered_fir))); title('FIR低通滤波后的含高斯噪声的频谱'); xlabel('频率'); ylabel('幅值(dB)');注释这段代码

2023-06-01 上传