MATLAB设计数字高通及带通滤波器源代码

需积分: 46 9 下载量 15 浏览量 更新于2024-09-12 1 收藏 51KB DOC 举报
"该资源是MATLAB代码,用于设计和分析数字FIR(Finite Impulse Response,有限 impulse response)滤波器,包括高通和带通滤波器。通过使用汉宁窗方法来改善滤波器的性能。" 在数字信号处理领域,滤波器是一种重要的工具,用于对信号进行频率选择性处理。FIR滤波器是一种线性相位、稳定的数字滤波器,其特性主要由其单位脉冲响应(Impulse Response)决定。本资源提供的MATLAB代码着重于设计和分析两种类型的FIR滤波器:高通滤波器和带通滤波器。 1. **高通滤波器**: - 设计中,`Wp` 表示所需通带的上限频率,`Ws` 表示所需阻止带的下限频率。过渡带宽度 `tr_width` 是两者之间的差值。 - 滤波器长度 `N` 通过公式 `N=ceil(6.2*pi/tr_width)` 计算得出,确保足够的过渡带衰减。 - 使用 `ideal_hp1` 函数创建理想高通滤波器的单位脉冲响应 `hd`。 - 应用汉宁窗函数 `hanning(N)` 以减少旁瓣效应,生成实际滤波器的单位脉冲响应 `h`。 - `freqz_m2` 函数用于计算滤波器的幅度和相位响应,以便分析滤波器的性能。 - 通过计算实际通带纹波 `Ap` 和阻带纹波 `As`,可以评估滤波器的性能指标。 2. **带通滤波器**: - 虽然代码中未直接设计带通滤波器,但基本流程类似,只需修改 `Wp` 和 `Ws` 以适应带通滤波器的要求,并可能需要其他窗口函数来优化特定的带宽和选择性。 MATLAB中的滤波器设计通常涉及到窗函数法、频率采样法或脉冲不变法等。在这个例子中,窗函数法被采用,因为它简单且适用于大多数情况。汉宁窗是常用的窗函数之一,因为它在保持较低的旁瓣水平的同时,具有相对平坦的通带和陡峭的滚降边缘。 通过MATLAB代码中的子图,我们可以直观地观察到: - 理想单位脉冲响应(hd(n)) - 汉宁窗函数(w(n)) - 实际应用汉宁窗后的单位脉冲响应(h(n)) - 滤波器的幅度响应曲线,显示了通带和阻带的特性 这些图形有助于理解滤波器设计的效果,以及汉宁窗如何影响滤波器的频率响应。在实际应用中,可以通过调整参数 `Wp` 和 `Ws` 以适应不同的频率选择性需求。