布莱克曼哈尔窗matlab,基于matlab的布莱克曼窗函数法设计的低通滤波器

本文介绍了基于MATLAB的布莱克曼窗函数法设计FIR数字低通滤波器,详细阐述了设计原理、步骤,并通过实例展示了滤波器设计过程,包括理想低通脉冲响应的生成、布莱克曼窗函数的运用以及滤波器的频率响应分析。同时,文中探讨了提高要求,即实现Wc和M可调的布莱克曼窗,并对加噪声音信号进行滤波处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【实例简介】

基于matlab的布莱克曼窗函数法设计的低通滤波器

第一章设计要求

1.1基本要求

(1)理解FIR数字低通滤波器的作用及应用领域,掌握布菜克曼窗函数法设计

FIR数字低通滤波器的原理及其在 matlab仿真中的实现方法

(2)掌握 matlab的编程方法;

(3)通过脚本编程或 SIMULINK实现FIR数字LPF;使用布莱克曼窗函数;M-1,

n=[0:1:M-1;Wc=0.2米pi;

(4)完成课程设计报告

1.2提高要求

(1)实现Wc和M均可交的布莱克曼窗

(2)用设计岀的滤波器对声音信号加噪声后进行滤波,对滤波前后信号进行对

比,并在时域和频域进行分别进行分析。

第二章设计原理

2.1FIR滤波器

FIR( Finite Impulse response)滤波器:有限长单位冲激响应滤波器,又称

为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证幅频特

性的冋时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波

器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着

广泛的应用。

有限长单位冲激响应(FIR)滤波器有以下特点

(1)、系统的单位冲激响应h(n)在有限个n值处不为零:

(2)、系统函数H(z)在z>0处收敛,极点全部在z=0处(因果系统)

(3)、结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例

如频率抽样结构)也包含有反馈的递归部分。

FIR低通滤波器的设计方法主要分为两类:第一类是基于逼近理想滤波器特

性的方法,包括窗函数法、频夲采样法和等波纹最佳逼近法:第二类是最优设计

法。实验采用布莱克曼窗函数法设计。

2.2窗函数设计法

窗函数设计法的基木思路是用FIR低通滤波器逼近希望的滤波特性。设希

望逼近的滤波器的频率响应函数为Hd(e"),其单位脉冲响应用hd(n)表示。其

Hd(e/w)=y hd(n e/ wn

hd()=1∫

Hd(elwewndw

WC

hd(n)是无限时宽的,是非因果序列。窗函数设计法就是截取hdan)为有限

长的一段因果序列,并用合适的窗函数进行加权做为FIR低通滤波器的单位脉

冲响应h(n)。

窗口法的设计步骤如下:

(1)、通过傅里叶变换后的理想滤波器的单位脉冲响应hd(n)。

(2)、根据指标选择窗口截止频率Wc和阶数M。

(3)、给定理想频响由Hd(e")和hd(n),加窗得h(n)=w(n)hd(n)

窗函数又包含有多种,包括矩形窗,三角窗,汉明窗,布莱克曼窗等,

设计一个线性相位的FIR低通滤波器,通常会采用fir1函数或者 Parks-McClellan算法。对于Blackman和Kaiser,我们先需要确定口长度(N)和过渡带宽度(BW)。由于没有直接给出具体的口长度要求,我们将假设滤波器的性能要求决定了口长度的选择。 Blackman法: Blackman是一种近似于矩形的平顶,它具有较小的旁瓣衰减。设计过程中,可以先估算N,然后调整直到满足A_p和A_s的要求。以下是MATLAB代码示例: ```matlab % 设定参数 omega_p = 0.4*pi; % 阻止频率 omega_s = 0.6*pi; % 截止频率 Ap_db = -0.5; % 滤波器最大失真点 As_db = 45; % 过渡带最小增益 % 确定口类型 (黑曼) window_type = 'blackman'; % 设置过渡带宽度,这里通常通过计算得到,例如基于奈奎斯特频率 bw_rad = (omega_s - omega_p) / (2 * N); N = round(1 / (2 * bw_rad)); % 约束N并确保它是偶数 % 使用fir1函数设计滤波器 fir_coefs = fir1(N, [omega_p/(pi/N), omega_s/(pi/N)], window_type, Ap_db, As_db); % 绘制幅频响应 [h, w] = freqz(fir_coefs, 1, 1024); % 或者其他合适的样本点数 figure; plot(w/pi, 20*log10(abs(h)), 'b'); grid on; xlabel('Normalized Frequency (\times \pi rad/sample)'); ylabel('Magnitude (dB)'); title(['Lowpass Filter Design with ' window_type ' Window']); % 显示滤波器特性 disp(['Filter order: ', num2str(N)]); disp(['Transition band: ', num2str(bw_rad*2*freqs(1))]); ``` Kaiser法: Kaiser提供了更好的旁瓣抑制,允许更窄的过渡带。同样的步骤,我们需要找到合适的 Kaiser 角度 α 来优化函数。以下是使用 kaiser_win 函数的例子: ```matlab % 选择Kaiser口类型 alpha = kaiserord(Ap_db, As_db); % 计算Kaiser口的角度 % 使用kaiserwin函数设计滤波器 fir_coefs_kaiser = fir1(N, [omega_p/(pi/N), omega_s/(pi/N)], kaiser(alpha)); % ... 其他绘制幅频响应部分与Blackman相同 ``` 注意,实际操作中可能需要尝试不同的N值或α值,以找到最佳的设计。以上代码只是给出了基本框架,并未涵盖所有细节,可能需要多次迭代和微调以满足精确的性能要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值