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

2023-11-19

用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图

公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用python绘制RC低通滤波器bode图 的相关文章

  • 在 python 中 pickling 数据时出现内存错误

    我正在尝试使用 python 中提供的 dump 命令将字典转储为 pickle 格式 字典的文件大小约为 150 mb 但仅转储 115 mb 的文件时会出现异常 例外情况是 Traceback most recent call last
  • 如何在GPU支持下运行python代码

    我创建了一个 Flask 服务 用于接受以相机 URL 作为参数的请求 用于在相机框架中查找对象 桌子 椅子等 我已经在 Flask 中编写了用于接受 POST 请求的代码 app route rest detectObjects meth
  • 如何获取Python对象父级?

    所以 我试图获取自定义对象 内部 的对象 这是一个例子 假设 o 是一个对象 无论是什么类型 它都可以存储变量 o Object class Test def init self self parent o This is where I
  • 反转 Python 整数的位

    给定一个十进制整数 例如 65 如何反转 Python 中的底层位 即以下操作 65 01000001 10000010 130 看来这个任务可以分为三步 将十进制整数转换为二进制表示形式 反转位 转换回十进制 第 2 步和第 3 步看起来
  • 如何在仍然使用 unique = True 的同时允许 ModelForm 中的空字段?

    目前在models py I have class ModelName models Model rowname models CharField max length 100 blank True unique True 就确保相同的值不
  • 读取大文件并制作字典

    我有一个大文件 我需要读取它并从中制作字典 我希望这一切能够尽可能快 然而我的Python代码太慢了 这是一个显示问题的最小示例 首先制作一些假数据 paste lt seq 20000000 lt seq 2 20000001 gt la
  • IndexError:布尔索引与维度 0 上的索引数组不匹配

    在我将 Numpy 更新到 1 13 1 之前 我的代码工作正常 现在我收到以下错误 IndexError boolean index did not match indexed array along dimension 0 dimens
  • 将 Python 列表(JSON 或其他)插入 MySQL 数据库

    所以我在Python中有一堆数组数据 嗯 相反 我有一个清单 我试图将此数组存储到 MySQL 数据库中的单个单元格中 我尝试使用 JSON 来序列化我的数据 但也许我不明白 JSON 是如何工作的 因此 在连接到我的数据库后 我尝试了上游
  • 增加 sigmoid 预测输出值?

    我创建了一个用于文本分类的 Conv1D 模型 当在最后一个密集处使用 softmax sigmoid 时 它产生的结果为 softmax gt 0 98502016 0 0149798 sigmoid gt 0 03902826 0 00
  • 使用 python3 查找表情符号的宽度

    我尝试使用 python 中的模式打印字母 A def printA length height symbol a for i in range length for i in range height for i in range hei
  • 使用unittest时如何知道每次测试花费的时间?

    Unittest 仅显示运行所有测试所花费的总时间 但不单独显示每个测试所花费的时间 使用unittest时如何添加每个测试的计时 我想 目前不可能 http bugs python org issue4080 http bugs pyth
  • Django 模板:输出带有所有小数位的浮点数

    我如何在 django 模板中输出这个数字 小数位数是可变的 我事先不知道 x 0 000015 1 x 输出是 1 5e 05 2 x stringformat f 输出是 0 000015 这不是本地化的 应该有逗号 我需要对输出进行本
  • 获取SVG绘图的边界框

    我想提取 SVG 绘图的边界框 由于 Python 已经在系统上可用并且还用于执行其他任务 因此我不想使用 JavaScript 或任何其他语言 我的理解是是否可以计算单个元素的边界框 但我不知道如何计算 整个绘图的边界框只是所有元素的最小
  • Django Rest框架Json解析

    我想解析传入的POSTdjangoviews py 文件中的数据 发布数据 number 17386372 data banana apple grapes 这是我尝试读取上述传入数据的方法request views py class Fr
  • Django 自定义文件存储系统

    我有一个自定义存储 import os from django core files storage import Storage class AlwaysOverwriteFileSystemStorage Storage def get
  • 使用 python 将多个 JSON 文件插入 MongoDB

    JSON文件如下a json b json z json 26个json文件 每个文件的 json 格式如下 a cappella word a cappella wordset id 5feb6f679a meanings id 4920
  • 无法使用python和beautifulsoup抓取网页中的某些href

    我目前正在使用 Python 3 4 和 bs4 爬取网页 以收集塞尔维亚在里约 2016 年的比赛结果 所以网址here http rio2016 fivb com en volleyball women teams srb serbia
  • pyodbc 无法正确处理 unicode 数据

    我确实使用 pyodbc 成功连接了 MySQL 数据库 并且它可以很好地处理 ascii 编码的数据 但是当我打印使用 unicode utf8 编码的数据时 它引发了错误 UnicodeEncodeError ascii codec c
  • 评估 df 每行中的日期时间函数是否落在另一个 df 中的日期时间范围内

    我是 python 新手 需要一些帮助来解决有关日期时间函数的问题 I have df a其中有一列标题为time 我正在尝试创建一个新专栏id在这个df a 我想要id根据时间是否包含在某个时间范围内来确定的列df b date 和 da
  • gis计算点和多边形/边界之间的距离

    我想使用 python 计算一个点到一个国家边界之间的距离shapely 它应该工作得很好 point distance poly 例如在这里展示查找多边形形状上最近点的坐标 https stackoverflow com question

随机推荐

  • 爬虫实例十一 全国城市房价排行

    目标网址 https www creprice cn rank index html 这一看就是个静态页面 没有用任何反爬措施所以很好爬 直接发送请求解析数据就可以了 完整代码 import requests from lxml impor
  • 睿智的目标检测54——Tensorflow2 搭建YoloX目标检测平台

    睿智的目标检测54 Tensorflow2 搭建YoloX目标检测平台 学习前言 源码下载 YoloX改进的部分 不完全 YoloX实现思路 一 整体结构解析 二 网络结构解析 1 主干网络CSPDarknet介绍 2 构建FPN特征金字塔
  • ElementUI浅尝辄止26:Notification 通知

    悬浮出现在页面角落 显示全局的通知提醒消息 1 如何使用 适用性广泛的通知栏 Notification 组件提供通知功能 Element 注册了 notify方法 接收一个options字面量参数 在最简单的情况下 你可以设置title字段
  • 资源路径嵌套异常,检测不到:IOException parsing XML document from class path resource [applicationContext.xml]

    org springframework beans factory BeanDefinitionStoreException IOException parsing XML document from class path resource
  • ARP与ARP代理的理解

    1 ARP 首先讲到ARP ARP是地址解析协议 它的作用是在以太网环境下 通过第3层的网络层IP地址来找寻2层数据链路层的MAC地址 得到一张ARP缓存表 转发数据的时候根据ARP缓存表来进行传输 下图详细说明数据传输时ARP是如何一步步
  • TVP新书上架

    新书速递 近期 在腾讯云 TVP 联合出书计划中 腾讯云 TVP 山金孝老师推出了新书 融合 产业数字化转型的十大关键技术 融合 产业数字化转型的十大关键技术 作者 山金孝 李琦 中译出版社 内容简介 数字经济已成为高质量发展的新引擎 数字
  • [Django基础06]模型和数据库交互

    2 数据库配置 MySQL 通常情况下 如果你只是做测试使用 可以使用Django内置的数据库SQLite就完全可以满足需要了 我们在本次教程中 通过使用MySQL这个数据库来完成后续的功能操作 我们首先要做的是 在配置文件中指定数据库的配
  • Densely Connected Convolutional Networks 密集连接卷积网络

    什么是DenseNet DenseNet是由清华大学的Zhuang Liu 康奈尔大学的Gao Huang和Kilian Q Weinberger 以及Facebook研究员Laurens van der Maaten在CVPR 2017所
  • 5.13 综合案例2.0-火焰检测系统(2.2版本接口有更新)

    综合案例2 0 火焰检测系统 简介 火焰传感器 准备 硬件连接图 代码流程 功能实现 1 物联网平台开发 2 设备端开发 调试 3 物联网应用开发 4 1新建 普通项目 4 2创建 Web应用 4 3页面设计 4 4关联产品 4 5关联数据
  • 蓝桥杯C/C++百校真题赛(3期)Day3(考勤刷卡、最大和)

    Day3 Q1 考勤刷卡 Q2 最大和 Q1 考勤刷卡 问题描述 小蓝负责一个公司的考勤系统 他每天都需要根据员工刷卡的情况来确定 每个员工是否到岗 当员工刷卡时 会在后台留下一条记录 包括刷卡的时间和员工编号 只 要在一天中员工刷过一次卡
  • 【反向工程】从科研文献表格,反向还原数据

    很多时候会遇到这样一个问题 有一些文章在chart中汇报了实验结果 但是并没有标注上具体的实验数值 如果逍遥获得具体数值 就得用尺子去量 这里推荐一个网站 能够帮助你估计一张chart中 每个数据点对应的横纵坐标 在某些情况下很有用处 至少
  • 数据仓库灵魂30问之数仓基础理念理解

    主题 主题是一个抽象概念 是在较高层次上将数据综合 归类并进行分析利用的抽象 每一个主题都对应一个宏观的分析领域 在实际上 每一个主题对应这个分析领域的所有的分析对象 比如销售主题对应所有和销售这个领域有关的数据 主题域 主题域通常是联系较
  • 效果奇特的HTML5动画,12个效果奇特的HTML5动画赏析

    本文将为大家分享12个效果奇特的HTML5动画 HTML5强大的动画特性可以让你的网页变得更加生动和富有活力 交互性也会进一步得到提高 一起来看看下面的这些HTML5动画案例 没个案例都提供源代码下载 1 HTML5 Canvas瀑布动画
  • KVM源代码分析1:基本工作原理

    http www oenhan com kvm src 1 13年的时候准备挖 KVM源代码分析 的坑 陆陆续续2年过去了 坑也没有填上 当时是因为对KVM了解的肤浅 真正的理解必然要深入到代码级别 所谓 摈弃皮毛 看到血肉 看到真相 当时
  • CH347读写SPI Flash

    前面耽搁了几天 今天终于把CH347 SPI接口调试好了 CH347动态库中SPI接口函数如下 typedef struct SPI CONFIG UCHAR iMode 0 3 SPI Mode0 1 2 3 UCHAR iClock 0
  • SD卡系列之---SD初始化(SPI)

    SD卡分为SDIO模式与SPI模式 SDIO模式使用SD总线协议 使用4根数据线进行数据传输 SPI使用1收1发2根数据线数据传输 理论上SDIO模式会比SPI模式速度快4倍 但SDIO模式还牵扯到CRC校验位的计算 所以 如果使用CPU有
  • 高防cdn和高防服务器的区别,有什么不一样

    CDN通俗的理解就是网站加速 可以解决跨运营商 跨地区 服务器负载能力过低 带宽过少等带来的网站打开速度慢等问题 一个网站的服务器性能比较差 负载能力有限 优势面临突发流量 招架不住 直接导致服务器奔溃 网站打不开 CDN 跟 高防服务器
  • 快速玩转 Llama2!阿里云机器学习 PAI 推出最佳实践

    前言 近期 Meta 宣布大语言模型 Llama2 开源 包含7B 13B 70B不同尺寸 分别对应70亿 130亿 700亿参数量 并在每个规格下都有专门适配对话场景的优化模型Llama 2 Chat Llama2 可免费用于研究场景和商
  • DesktopUI与ZeroTierOne的数据交互机制分析

    分析源码 梳理了一个调用关系图
  • 用python绘制RC低通滤波器bode图

    用python绘制RC低通滤波器bode图 Bode图 Bode图 国内有译作 伯德图 也有译作 波特图 是一种用于描述线性系统的频率响应的图形工具 频率响应是指系统对不同频率的输入信号的响应程度 通常用幅度和相位来表示 Bode图以对数坐