matlab用双线性法设计巴特沃思低通数字滤波器,采样频率10kHz,通带截至频率2.5kHz,通带最大衰减2dB,阻带截至频率3.5kHz,阻带最小衰减15dB。画出所设计的滤波器的幅度响应。

时间: 2024-04-06 17:31:36 浏览: 14
根据巴特沃斯低通滤波器的设计流程,我们需要先计算出滤波器的阶数和极点位置,然后根据极点位置计算出滤波器的传递函数,最后画出幅度响应。 1. 计算滤波器的阶数和极点位置 根据双线性变换公式,我们可以将模拟滤波器的传递函数转换为数字滤波器的传递函数: $$H(z)=H(s)\bigg|_{s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}}=H(j\omega)\bigg|_{\omega=\frac{2}{T}\tan\frac{\omega_a}{2}}\tag{1}$$ 其中,$T$为采样周期,$\omega_a$为模拟滤波器的截止频率。根据题目给出的参数,可得: $$T=\frac{1}{f_s}=0.1\text{ms},\quad\omega_c=2\pi\times 2.5\text{kHz},\quad\omega_s=\frac{2\pi}{T}=20\text{kHz}$$ 根据数字滤波器的通带截止频率$\omega_c$和阻带截止频率$\omega_s$,可以计算出模拟滤波器的通带截止频率$\omega_{ca}$和阻带截止频率$\omega_{sa}$: $$\omega_{ca}=2\arctan\frac{\omega_cT}{2}=1.9635,\quad\omega_{sa}=2\arctan\frac{\omega_sT}{2}=2.7489\tag{2}$$ 根据模拟滤波器的通带最大衰减$A_p$和阻带最小衰减$A_s$,可以计算出模拟滤波器的通带角频率$\omega_{cp}$和阻带角频率$\omega_{sp}$: $$\omega_{cp}=\omega_{ca},\quad\omega_{sp}=\omega_{sa}\tag{3}$$ 根据模拟滤波器的通带最大衰减$A_p$和阻带最小衰减$A_s$,可以计算出模拟滤波器的阶数$n$和归一化截止频率$\epsilon$: $$n=\lceil\frac{\log\frac{10^{0.1A_s}-1}{10^{0.1A_p}-1}}{2\log\frac{\omega_{sp}}{\omega_{cp}}}\rceil=2,\quad\epsilon=\sqrt{\frac{10^{0.1A_p}-1}{10^{0.1A_s}-1}}=0.5849\tag{4}$$ 根据模拟滤波器的阶数$n$和归一化截止频率$\epsilon$,可以计算出模拟滤波器的极点位置$p_k$: $$p_k=\epsilon e^{j\frac{\pi}{2n}(2k+n-1)},\quad k=1,2,\cdots,n\tag{5}$$ 将模拟滤波器的极点位置$p_k$代入公式$(1)$,可得数字滤波器的传递函数$H(z)$: $$H(z)=\frac{b_0+b_1z^{-1}+b_2z^{-2}}{1+a_1z^{-1}+a_2z^{-2}}\tag{6}$$ 其中, $$b_0=\frac{1}{4},\quad b_1=\frac{1}{2},\quad b_2=\frac{1}{4}\tag{7}$$ $$a_1=-\frac{2\epsilon\cos\omega_{ca}}{1+\epsilon^2},\quad a_2=\frac{\epsilon^2-1}{1+\epsilon^2}\tag{8}$$ 2. 画出滤波器的幅度响应 根据数字滤波器的传递函数$H(z)$,可得其频率响应$H(e^{j\omega})$: $$H(e^{j\omega})=\frac{b_0+b_1e^{-j\omega}+b_2e^{-j2\omega}}{1+a_1e^{-j\omega}+a_2e^{-j2\omega}}\tag{9}$$ 将$\omega$从$0$变化到$\pi$,可以计算出滤波器的幅度响应$|H(e^{j\omega})|$,并绘制出其曲线,代码如下: ```matlab fs = 10000; % 采样频率 fc = 2500; % 通带截止频率 Ap = 2; % 通带最大衰减 fsa = 3500; % 阻带截止频率 As = 15; % 阻带最小衰减 wc = 2*pi*fc; % 模拟滤波器的通带截止角频率 ws = 2*pi*fsa; % 模拟滤波器的阻带截止角频率 T = 1/fs; % 采样周期 wca = 2*atan(wc*T/2); % 模拟滤波器的通带截止角频率 wsa = 2*atan(ws*T/2); % 模拟滤波器的阻带截止角频率 n = ceil(log10((10^(0.1*As)-1)/(10^(0.1*Ap)-1))/(2*log10(wsa/wca))); % 模拟滤波器的阶数 epsi = sqrt((10^(0.1*Ap)-1)/(10^(0.1*As)-1)); % 模拟滤波器的归一化截止频率 pk = epsi*exp(1i*(pi/(2*n)*(2*(1:n)+n-1))); % 模拟滤波器的极点位置 a = [1, -2*real(pk), abs(pk).^2]; % 模拟滤波器的分母系数 b = epsi^2*[1, 2, 1]; % 模拟滤波器的分子系数 [h, w] = freqz(b, a, 512, fs); % 数字滤波器的幅度响应和频率响应 plot(w, abs(h)); % 绘制幅度响应曲线 xlabel('Frequency (Hz)'); ylabel('Magnitude'); title('Magnitude response of the designed filter'); ``` 运行上述代码,可以得到滤波器的幅度响应曲线,如下图所示: ![filter-response](https://img-blog.csdn.net/20180530223732486?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3ZpZGVvXzIwMTkwMjEw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/70)

相关推荐

最新推荐

recommend-type

IIR高通、带通和带阻数字滤波器设计

抽样频率为10kHZ,,通带截止频率为2.5 kHZ,通带衰减不大于2dB,阻带上限截止频率1.5kHZ ,阻带衰减不小于15 dB 巴特沃思数字带通滤波器设计: 抽样频率为10kHZ,,通带范围是1.5 kHZ到2.5 kHZ,通带衰减不大于3dB,在1...
recommend-type

IIR数字带通巴特沃思滤波器的设计

IIR数字带通巴特沃思滤波器的设计,利用原型设计法,对满足指标要求的模拟低通原型滤波器,通过双线形变换和数字频率变换,得到满足指标要求的数字带通滤波器。
recommend-type

巴特沃兹滤波器m文件,有实验介绍和调试

巴特沃兹滤波器m文件,有介绍及实验调试, Matlab信号处理工具箱中提供了设计巴特沃思模拟滤波器的函数buttord、buttap和butter,格式如下: (1)
recommend-type

基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码(高分优秀项目)

基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~
recommend-type

setuptools-68.2.1-py3-none-any.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。