用python绘制RC低通滤波器bode图

news2024/11/24 11:14:29

用python绘制RC低通滤波器bode图

Bode图

Bode图(国内有译作“伯德图”,也有译作“波特图”)是一种用于描述线性系统的频率响应的图形工具。频率响应是指系统对不同频率的输入信号的响应程度,通常用幅度和相位来表示。Bode图以对数坐标轴的形式显示系统的幅频特性和相频特性,通常使用dB和度作为单位。

Bode图通常由两个子图组成:幅频特性图和相频特性图。幅频特性图显示系统对输入信号的不同频率的响应,横轴为频率,纵轴为幅度,以dB为单位。相频特性图显示系统对输入信号不同频率的相位响应,横轴为频率,纵轴为相位,以度为单位。

在幅频特性图中,Bode图的曲线通常由两个部分组成:低频段和高频段。在低频段,幅度响应随着频率的增加而增加;在高频段,幅度响应随着频率的增加而减小。相位曲线的形状也会随着频率变化而变化。在低频段,相位曲线的斜率比较平缓,而在高频段,相位曲线的斜率比较陡峭。

Bode图可以用来分析系统的稳定性和性能特性。例如,如果系统的幅频特性曲线在截止频率处穿越0dB水平线,那么该系统可能会产生振荡,因为这意味着系统在该频率处的增益为1,可能引起反馈环路不稳定。另外,Bode图还可以用于设计控制系统,例如选择合适的控制器增益和频率补偿网络来满足性能要求。

Bode图是一种非常有用的工具,用于描述线性系统的频率响应特性。它可以帮助工程师更好地理解系统的行为,以便更好地设计和优化控制系统。

RC低通滤波器

一阶RC低通滤波器

一阶RC滤波器就是电容和电容的串联,电阻和电容对输入信号进行分压,则电容两端电压为:

频域:
V C ( s ) = 1 / C s R + 1 / C s V i n ( s ) = 1 1 + R C s V i n ( s ) \begin{align} V_{C}(s) &= \frac {1/C_{s}} {R + 1/C_{s}} V_{in}(s) \notag \\ &= \frac {1} {1 + RC_{s}} V_{in}(s) \end{align} VC(s)=R+1/Cs1/CsVin(s)=1+RCs1Vin(s)

或时域:
V C ( t ) = V i n ( t ) ( 1 − e − t R C ) \begin{equation} V_{C}(t) = V_{in}(t) (1 - e^\frac {-t} {RC}) \end{equation} VC(t)=Vin(t)(1eRCt)

python绘制Bode图

# 导入所需的库:NumPy 用于数学运算,Matplotlib 用于绘图,Scipy 中的 signal 模块用于信号处理。
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# 定义 RC 低通滤波器的参数:电阻 R、电容 C 和截止频率 fc。
R = 1000.0   # 电阻值
C = 1e-6     # 电容值
fc = 1 / (2 * np.pi * R * C)  # 截止频率

# 使用 signal.TransferFunction() 函数创建一个一阶 RC 低通滤波器的传输函数 sys,其分子系数为 [1],分母系数为 [R*C, 1]。
sys = signal.TransferFunction([1], [R*C, 1])
w, mag, phase = signal.bode(sys)

# 创建一个包含两个子图的图形窗口,并返回子图对象 ax1 和 ax2。plt.subplots_adjust() 用于调整子图之间的间距。
fig, (ax1, ax2) = plt.subplots(2, 1)
plt.subplots_adjust(hspace=0.5)

# 在第一个子图中,使用 ax1.semilogx() 绘制幅频响应曲线。ax1.set_title() 和 ax1.set_ylabel() 用于设置子图的标题和 y 轴标签。ax1.axvline() 用于绘制红色虚线,表示截止频率 fc 所在的位置。ax1.text() 用于在截止频率处添加文本标注。
ax1.semilogx(w/(2 * np.pi), mag)
ax1.set_title('Bode Plot - Magnitude')
ax1.set_ylabel('Magnitude (dB)')
ax1.axvline(fc, color='r', linestyle='--')
ax1.text(fc, -40, '{:.2f} Hz'.format(fc), ha='center', va='top')

# 在第二个子图中,使用 ax2.semilogx() 绘制相频响应曲线。ax2.set_title()、ax2.set_xlabel() 和 ax2.set_ylabel() 用于设置子图的标题和轴标签。ax2.axvline() 用于绘制红色虚线,表示截止频率 fc 所在的位置。ax2.text() 用于在截止频率处添加文本标注。
ax2.semilogx(w/(2 * np.pi), phase)
ax2.set_title('Bode Plot - Phase')
ax2.set_xlabel('Frequency (Hz)')
ax2.set_ylabel('Phase (deg)')
ax2.axvline(fc, color='r', linestyle='--')
ax2.text(fc, -90, '{:.2f} Hz'.format(fc), ha='center', va='top')

# 显示图形窗口。
plt.show()

运行结果:

RC低通Bode图

修改一下电阻值,改为10000,再次运行:

RC低通Bode图

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

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

相关文章

瑞吉外卖管理端具体代码

目录 以下是后台的部分代码: EmployeeController CategoryController DishController SetmealController OrderController 具体的代码可到:reggie_take_out: 瑞吉外卖——功能实现 - Gitee.com 全部页面展示: 以下是后台的部分代码&#xf…

2023牛客五一集训派对day1部分题解

F Infinite String Comparision FInfinite String Comparision 题目描述 给你两个可以无限复制自身的字符串 a, b。请你判断其无限复制后两字符串的字典序大小 。 解题思路 我们可以设 s1 a b, s2 b a 则有: 通过观察可见 s1, s2 包含 和 ,于是我们比较 …

01 KVM虚拟化简介

文章目录 01 KVM虚拟化简介1.1 简介1.2 虚拟化架构1.3 虚拟化组件1.4 虚拟化特点1.5 虚拟化优势1.6 openEuler虚拟化 01 KVM虚拟化简介 1.1 简介 在计算机技术中,虚拟化是一种资源管理技术,它将计算机的各种实体资源(处理器、内存、磁盘、网…

基于simulink采用 QSHB 和 HBPS 算法的混合 MIMO 波束成形仿真

一、前言 本例展示了多输入多输出 (MIMO) 无线通信系统的 Simulink 模型。无线系统使用混合波束成形技术来提高系统吞吐量。 二、介绍 5G和其他现代无线通信系统广泛使用MIMO波束成形技术进行信噪比(SNR)增强和空间复用&#xff0…

数据恢复软件EasyRecovery16下载安装步骤教程

EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…

阿里云u1服务器通用算力型CPU处理器性能测评

阿里云服务器u1通用算力型Universal实例高性价比,CPU采用Intel(R) Xeon(R) Platinum,主频是2.5 GHz,云服务器U1实例的基准vCPU算力与5代企业级实例持平,最高vCPU算力与6代企业级实例持平,提供2c-32c规格和1:1/2/4/8丰富…

16.基于主从博弈理论的共享储能与综合能源微网优化运行研究

说明书 MATLAB代码:基于主从博弈理论的共享储能与综合能源微网优化运行研究 关键词:主从博弈 共享储能 综合能源微网 优化调度 参考文档:《基于主从博弈理论的共享储能与综合能源微网优化运行研究》完全复现 仿真平台:MATLAB …

前端面试题汇总-代码输出篇

1. 异步 & 事件循环 1. 代码输出结果 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); 输出结果如下: 1 2 4 promise.then 是微任务,它…

力扣刷题实录(大厂用题)—— 前言

写在前面 力扣刷题笔记与力扣官方的解答有什么区别吗?为什么不直接去看官方的解答呢 ?并且官方的解答部分还有视频讲解。 这个问题困扰了我很长时间,我不断地怀疑自己做笔记是否有意义。 后来有一个小伙伴问我问题的时候我悟了&#xff0c…

【Linux 裸机篇(八)】I.MX6U EPIT 定时器中断、定时器按键消抖

目录 一、EPIT 定时器简介二、定时器按键消抖 一、EPIT 定时器简介 EPIT 的全称是: Enhanced Periodic Interrupt Timer,直译过来就是增强的周期中断定时器,它主要是完成周期性中断定时的。学过 STM32 的话应该知道, STM32 里面的…

windows卸载wsl下的ubuntu

查看: wsl --list删除: wsl --unregister Ubuntu-18.04 注意名字别输入错误了,版本号是你wsl安装的对应的ubuntu版本号。 查看: wsl --list

提速科研,AI 正引领一场新革命

By 超神经 内容一览:五一国际劳动节假期,HyperAI超神经为大家汇总了往期 ScienceAI 相关报道,对该领域感兴趣的读者可以来一探究竟了! 关键词:ScienceAI 盘点 整理 | 缓缓 作为近两年的技术热点,Scien…

Sybase使用sp_helptext查看系统存储过程的源码

sp_helptext存储过程用于显示已编译对象的源代码。 sp_helptext是Sybase ASE内置的存储过程,可从任何位置调用。 但实际上,如果直接使用,常常会得到(令人头大的)错误提示: Msg 17461 Object does not exi…

JavaWeb学习------Servlet

目录 JavaWeb学习------Servlet Servlet 生命周期 Servlet 生命周期 Servlet 方法介绍 •Servlet 体系结构 Servlet 体系结构 •Servlet urlPattern配置 Servlet urlPattern配置 •XML 配置方式编写 Servlet XML 配置方式编写 Servlet JavaWeb学习------Servlet •快速…

centos安装 磁盘分区选择

1 介绍 INSTALLATION SUMMARY 在硬盘进行分区后,我们一般都会进行格式化,因为每种操作系统对文件属性/权限/存储数据格式的设定都有所不同,故而为了使得其跟操作系统一致,则需要格式化。 哈喽,大家好,我是…

Java AQS学习

目录 1、AQS初步 2、AQS源码 2.1、ReentrantLock类解析 2.2、AQS源码 JUC-->AQS-->AbstractQueuedSynchronizer:字面意思:抽象的队列同步器 AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO…

InnoDB 引擎 底层逻辑

目录 0 课程视频 1 逻辑存储结构 1.1 结构图 1.2 表空间 -> 记录 索引 存储记录 等数据 1.2.1 储存在 cd/var/lib/mysql -> ll -> 目录 mysql.ibd 1.3 段 -> 索引 存储记录 具体存储 1.3.1 数据段 b树 叶子节点 1.3.2 索引段 b树的 非叶子节点 1.3.3 回滚段…

Java 基础入门篇(一)——— Java 概述

文章目录 一、Java 概述二、Java 的产品 JDK2.1 JDK 安装2.2 Java与 Javac 介绍2.3 Java 程序的开发步骤 三、Java 程序的执行原理四、JDK 的组成五、Java 的跨平台工作原理 一、Java 概述 Java 是 sun 公司在 1995 年推出的一门计算机高级编程语言,其语言风格接近人…

javaEE+mysql学生竞赛管理系统

本系统是基于JAVA平台开发的一套学生竞赛信息管理的系统。系统采用JSP为编程语言。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 本课题的目的是使…

none模式配置网络操作

基于Docker引擎启动Nginx WEB容器,默认以None方式启动Docker容器,此处使用pipework工具手工给容器指定桥接网卡,并且手工配置IP地址,操作指令如下: #查看镜像列表; docker images#运行新的容器 docker ru…