双线性变换法MATLAB实现巴特沃斯低通滤波器

news2024/12/23 9:10:39

实验名称  数字信号处理实验4  实验(实习)日期 12.13 得分       指导老师                

学院 电信院 专业 电子信息工程 年级 2020  班次       姓名        学号  20208327         

1.实验目的

  1. 掌握利用MATLAB求滤波器阶数和自然截至频率;
  2. 掌握利用MATLAB求分子、分母多项式系数;
  3. 掌握利用MATLAB改变滤波器的截止频率;
  4. 掌握利用MATLAB将模拟滤波器转化成数字滤波器。

2.实验内容

(1)试用双线性变换法设计一个数字低通滤波器,给定技术指标fp=100Hz,fs=300Hz,αp=3dB, αs=20dB,采样频率fs=1000Hz。

3.实验步骤和实验结果

①分析:根据给定的技术指标fp、fs、αp、αs和fs,可以算出通带和阻带的Ωp和Ωs。通过buttord()函数求得阶数和截止频率,函数为[n,wn]=buttord(wap,was,rp,rs,'s'),其中n为滤波器阶数,wn为截止频率;然后使用buttap()函数求得极点、零点和增益,使用zp2tf()函数,将已知的极、零点和增益转换为传递函数的形式,之后使用lp2lp()函数将截止频率为1rad/s的模拟低通滤波器变换成截止频率为wap的模拟低通滤波器:最后使用bilinear()函数,根据双线性变换法将模拟滤波器转为数字滤波器,最后使用freqz()函数求得离散系统的频响特性。

clc;clear;
%参数设置
f_p=100;   %通带上截止频率
f_st=300;   %阻带下截止频率
R_p=3;   %通带允许的最大衰减
R_st=20;   %阻带允许的最小衰减
f_s=1000;   %采样频率
T_s=1/f_s;   %采样间隔
%归一化为数字角频率参数
s_p=2*pi*f_p/f_s;
s_st=2*pi*f_st/f_s;
%变换成模拟低通滤波器的角频率参数
C=2/T_s ;
S_p=C*tan(s_p/2);
S_st=C*tan(s_st/2); 
%模拟低通滤波器角频率参数归一化处理
lamda_p=S_p/S_p;
lamda_st=S_st/S_p;
%归一化模拟低通滤波器的转移函数
[N,Wn]=buttord(S_p,S_st,R_p,R_st,'s'); %求阶数和截止频率
%选择模拟巴特沃斯低通滤波器的最小阶数
[z,p,k]=buttap(N);%求极点、零点和增益
[Bp,Ap]=zp2tf(z,p,k);%将已知的极、零点和增益转换为传递函数的形式
%将截止频率为1rad/s的模拟低通滤波器变换成截止频率为Omega_p的模拟低通滤波器
[b,a] = lp2lp(Bp,Ap,Wn);
%根据双线性变换法将模拟滤波器转为数字滤波器 
[bz,az]=bilinear(b,a,f_s);
%滤波效果测试 
N=1000
t=[0:N-1]*T_s ;
f1=20;
f2=300;
f3=500;
x1=2*sin(2*pi*f1*t);
x2=2*2*sin(2*pi*f2*t);
x3=2*3*sin(2*pi*f3*t);
x=x1+x2+x3;
fft_x=fft(x);
X_mag=fftshift(abs(fft_x))/N ;
X_ang=fftshift(angle(fft_x));
delta_f=f_s/N;
f=(-N/2:N/2-1)*delta_f;
%滤波
lp_x=filter(bz,az,x);
lp_fft_x=fft(lp_x);
lp_X_mag=fftshift(abs(lp_fft_x))/N ;
lp_X_ang=fftshift(angle(lp_fft_x));
%显示
figure(1);
freqz(bz,az);
title('低通滤波器幅度谱和相位谱');
figure(2);
subplot(3,1,1);
plot(t,x);
title('原信号时域波形');
xlabel('t(s)');
subplot(3,1,2);
plot(f,X_mag);
title('原信号幅度谱');
xlabel('f(hz)');
subplot(3,1,3);
plot(f,X_ang);
title('原信号相位谱');
xlabel('f(hz)');
figure(3);
subplot(3,1,1);
plot(t,lp_x);
title('滤波后信号时域波形');
xlabel('t(s)');
subplot(3,1,2);
plot(f,lp_X_mag);
title('滤波后信号幅度谱');
xlabel('f(hz)');
subplot(3,1,3);
plot(f,lp_X_ang);
title('滤波后信号相位谱');
xlabel('f(hz)');

结果:

实验小结

本次实验主要掌握了如何用MATLAB实现低通滤波器,实验过程中要注意数字角频率和模拟角频率的转化,并且采用双线性变换法将模拟滤波器转化为数字滤波器。模拟滤波器设计的主要流程总结为:1)根据信号处理的要求确定设计指标;2)选择滤波器类型;3)计算滤波器阶数。同时本实验也用到了前几节课所学的滤波、显示图像等知识,需要进行融会贯通。

至此四次数字信号处理四次实验已经结束,通过这四次实验,我对MATLAB的熟悉程度有所加深,从第一次做实验不知道如何切换MATLAB的运行环境,到现在掌握了一些编程方法和函数的使用,还是很有收获的。也在实验过程中深深意识到了自己编程水平的不足,常常需要到CSDN等博客平台上寻求帮助,虽然作为一名电信人,可能接触到的更多的是硬件,但是对基础算法和编程思想的掌握和熟练程度还是需要进一步精进的。

路漫漫其修远兮,继续加油吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/99813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手带你理解TPS趋势分析

在性能分析中,前端的性能工具,我们只需要关注几条曲线就够了:TPS、响应时间和错误率。这是我经常强调的。 但是关注 TPS 到底应该关注什么内容,如何判断趋势,判断了趋势之后,又该如何做出调整,调整之后如何定位原因,这才是我们关注 TPS 的一系列动作。 今天,我们就通…

SSM闲置物品

14-13开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):基于s5m闲置物品交易系统 网站前台:关于我们、联系我们、公告信息、闲置物品、求购信息 管理员功能&…

SQL语句练习06

目录 一、建表 二、SQL语句练习 一、建表 一、建立如下学生表(命名格式“姓名拼音_三位学号_week8student”,如LBJ_023_week8student) create table LYL_116_week8student(SNO int primary key, SNAME char(8) not null unique,SEX char(2), DEPTNO i…

初学Nodejs(7):mysql模块的简单使用

文章目录Nodejsmysql模块1、在项目中操作数据库的步骤1.1 安装操作mysql数据库的第三方模块(mysql)1.2 通过mysql模块连接到mysql数据库,并进行必要配置1.3 通过mysql模块执行sql语句1.3.1 查询数据1.3.2 插入数据插入数据的快捷方式1.3.3 更…

43_读写内部Flash实验

目录 STM32的内部FLASH简介 内部FLASH的构成 主存储器 系统存储区 对内部FLASH的写入过程 解锁 擦除扇区 写入数据 操作内部FLASH的库函数 FLASH解锁、上锁函数 设置操作位数及擦除扇区 写入数据 实验源码 STM32的内部FLASH简介 在STM32芯片内部有一个FLASH(nor …

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_ Traceability Documentation Environment

由于Traceability & Documentation和Environment的两块内容较少,所以就合并起来介绍,单独的功能介绍略少,就不分开了,vTESTstudio工具栏介绍这块内容主要也是给大家做个普及,大家也是主要做个了解,方便…

可信启动、安全启动:SGX、TrustZone、SecureEnclave

最近在公众号上看到了一篇文章,算是又丰富了自己的安全方面的眼界。 最近看公众号取代了小视频、知乎这些东西。以前是真的不喜欢碎片化的东西,看什么学什么总是要找到书籍。但是这样的做法太过的极端,因为有时候有些事是两面性的。比如像安全…

SD nand与SD卡 SPI模式驱动

SD nand 与 SD卡的SPI模式驱动 文章目录SD nand 与 SD卡的SPI模式驱动1. 概述2. SPI接口模式与SD接口模式区别2.1 接口模式区别2.2 硬件引脚2.3 注意事项3. SD接口协议3.1 命令3.1.1 命令格式3.1.2 命令类型3.2 响应3.2.1 响应格式4. SD nand(SD卡)结构描…

小程序01/ 小程序 模板语法—条件渲染方式、小程序 模板语法-列表循环渲染方式

模板语法—条件渲染方式 1.wx:if 语法: 单分支: wx:if" 条件 " 双分支: wx:else 多分支: wx:elif" 条件 " 作用: 根据条件渲染 如果条件不满足 则该元素不会添加到DOM数 注意: wx:else前面必须要有 wx:if 或 wx:elif 2.hidden 语法: hidden&qu…

Vue Router安装与基本使用

Vue Router安装与基本使用(入门使用) 一、安装 npm install vue-router4在package.json 会配置一行 “vue-router”: “^4.1.6” 二、基本使用 2.1、新建路由器 新建 router文件夹 1个index.js文件 //1.定义路由组件 import Home from ../views/Home.vue import About from ..…

[附源码]Python计算机毕业设计Django学生社团信息管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

QtCreator同时运行多个程序

更多精彩内容👉个人内容分类汇总 👈👉Qt开发经验 👈 QtCreator同时运行多个程序 在Windows下QtCreator默认只能运行一个程序,再次编译运行就会自动关闭之前运行的程序; 有时候我们想运行多个程序时&#x…

【电力系统】考虑储能优化的微网能量管理双层模型附matlab代码

​✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法…

一篇文章带你了解HBase、Zookeeper的安装部署

第 2 章 HBase 快速入门2.1 HBase 安装部署2.1.1 Zookeeper 正常部署2.1.2 Hadoop 正常部署2.1.3 HBase 的解压2.1.4 HBase 的配置文件2.1.5 HBase 远程发送到其他集群2.1.6 HBase 服务的启动2.1.7 查看 HBase 页面2.1.8 高可用(可选)2.2 HBase Shell 操…

「地表最强」C++核心编程(四)类和对象—对象初始化和清理

环境: 编译器:CLion2021.3;操作系统:macOS Ventura 13.0.1 文章目录一、构造函数和析构函数1.1 构造函数1.2 析构函数1.3 示例二、构造函数的分类及调用1.1 构造函数的分类1.2 构造函数的调用三、拷贝构造函数调用时机3.1 调用时机…

黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版)

黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版) 文章目录黑*头条_第1章_环境搭建、SpringCloud微服务(注册发现、服务调用、网关)(新版)1)课程对比2)项目概述2.1)能让你收获什么2.2)项目课程大纲2.3…

计算机毕业设计——基于HTML仿淘宝电商项目的设计与实现管理系统论文源码(21页)

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

毕业设计 stm32便携用电功率统计系统 -物联网 嵌入式 单片机

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 降压电路4.2 接口部分4.3 主控4.4 OLED模块5 部分核心代码5 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的…

小黑被劝退了,生活学习依然继续的leetcode之旅:572. 另一棵树的子树

小黑代码 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isSubtree(self, root: Optional[TreeNode],…

PyTorch~cpp_extension

还是pytorch哈~~ 结合 Python 与 C 各自的优点,在 PyTorch 中加入 C / CUDA的扩展,详细解释C/CUDA 算子实现和调用全流程 代码来源:MMCV, PyTorch。 https://github.com/open-mmlab/mmcv https://github.com/pytorch/pytorch 注&#xff1a…