【机器人】振动分析和控制工具之Bode图
Bode 图完整介绍
Bode 图由两个部分组成:
- 幅值图 (Magnitude Plot):描述系统对不同频率输入信号的增益大小(幅值响应)。
- 相位图 (Phase Plot):描述系统输出信号相对于输入信号的相位差。
Bode 图的横轴是频率,以对数刻度显示(单位:rad/s)。纵轴则分别显示幅值(以分贝 dBdB 为单位)和相位(以角度为单位)。
相位图的完整解释
什么是相位图
相位图表示系统输出信号相对于输入信号的相位差,反映了信号的延迟或超前行为。相位的单位是角度(°),常见的范围是 [−360°,0°][-360°, 0°] 或 [−180°,180°][-180°, 180°]。
相位图的特征
-
低频段:
- 在低频区域(频率接近 0),系统的相位通常接近 0° 或一个稳定值。
- 表明此时系统几乎没有延迟,输出信号能较好地跟随输入信号。
-
中频段:
- 随着频率增加,相位开始下降。
- 如果系统包含极点或零点,会导致相位快速变化,这通常对应于系统的特征频率(如谐振频率)。
-
高频段:
- 在高频区域,相位趋于一个负的稳定值(如 −90°-90°、−180°-180° 等),反映出系统对高频信号具有较大的延迟。
实际意义
-
信号延迟和超前:
- 相位的正值表示信号超前,负值表示信号延迟。
- 控制系统中,如果相位延迟过大,可能导致系统不稳定。
-
系统动态行为:
- 相位的变化率和方向反映了系统在不同频率下的动态性能。例如,相位快速变化的区域可能是谐振频率或系统的重要特征点。
-
稳定性分析:
- 结合幅值图,可以计算增益裕度和相位裕度,判断闭环系统是否稳定。
幅值图的完整解释
什么是幅值图
幅值图描述系统对不同频率输入信号的放大或衰减程度。幅值通常以分贝 dBdB 为单位,其公式为:
其中 H(jω) 是系统的频率响应。
幅值图的特征
-
低频段:
- 在低频区域(频率接近 0),幅值通常较高,表示系统能很好地通过低频信号。
- 如果系统是稳定的低通滤波器,此时幅值接近直流增益值(例如 0 dB 或其他值)。
-
中频段:
- 中频区域的幅值可能会出现一个峰值(如果系统存在谐振)。
- 谐振频率对应幅值最大的位置。谐振频率由系统的阻尼比和自然频率决定。
-
高频段:
- 在高频区域,幅值通常下降,以一个固定的斜率递减(例如 -20 dB/decade 或 -40 dB/decade)。
- 反映出系统对高频信号的衰减特性。
实际意义
-
频率选择性:
- 幅值图显示系统对不同频率信号的放大或衰减能力。通过观察幅值图,可以判断系统是低通、高通、带通还是带阻滤波器。
-
增益分析:
- 控制系统中,幅值图用于确定增益裕度,确保系统在反馈时的稳定性。
-
噪声抑制:
- 对高频噪声的衰减程度可通过高频段的幅值特性分析。
-
动态范围:
- 幅值图可以帮助理解系统能处理的最大和最小信号幅度范围。
结合相位图和幅值图的整体意义
-
系统特征频率:
- 幅值图中谐振峰值对应的频率,通常会在相位图中表现为相位快速变化的点。这些频率是系统的特征频率。
-
稳定性判断:
- 使用幅值图和相位图可以计算系统的增益裕度和相位裕度,判断闭环系统的稳定性。
- 增益裕度:当相位为 -180° 时,幅值距离 0 dB 的距离。
- 相位裕度:当幅值为 0 dB 时,相位距离 -180° 的距离。
-
滤波性能:
- 幅值图显示系统对不同频率信号的处理能力,相位图则补充了延迟和动态行为的分析。
总结
Bode 图是控制系统和信号处理领域中最常用的工具之一,提供了频域内关于系统增益和相位的全方位信息。它直观地展示了系统如何响应不同频率的输入信号,为稳定性分析、滤波器设计和控制器优化提供了重要依据。
代码摘抄
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal# Define the transfer function
# Example: Second-order system H(s) = ω_n^2 / (s^2 + 2ζω_ns + ω_n^2)# Parameters for the system
zeta = 0.5 # Damping ratio (controls how oscillatory the system is)
omega_n = 10 # Natural frequency (rad/s), determines the frequency of oscillation# Numerator and denominator of the transfer function
numerator = [omega_n**2] # The numerator of the transfer function (constant gain)
denominator = [1, 2*zeta*omega_n, omega_n**2] # The denominator (s^2 + 2ζω_ns + ω_n^2)# Create the transfer function
# signal.TransferFunction represents the system in the Laplace domain
system = signal.TransferFunction(numerator, denominator)# Frequency range for the Bode plot
frequencies = np.logspace(0, 2, 500) # From 10^0 (1 rad/s) to 10^2 (100 rad/s), 500 points# Compute the Bode plot data
w, mag, phase = signal.bode(system, frequencies) # Get magnitude and phase responses# Plot the Bode magnitude and phase
plt.figure(figsize=(10, 8)) # Set the figure size# Magnitude plot
plt.subplot(2, 1, 1) # First subplot: Magnitude
plt.semilogx(w, mag, color='orange') # Logarithmic x-axis for frequency, y-axis in dB
plt.title('Bode Plot') # Plot title
plt.ylabel('Magnitude (dB)') # y-axis label
plt.grid(True, which='both', linestyle='--', linewidth=0.5) # Add grid lines for better readability# Phase plot
plt.subplot(2, 1, 2) # Second subplot: Phase
plt.semilogx(w, phase, color='orange') # Logarithmic x-axis for frequency, y-axis in degrees
plt.ylabel('Phase (degrees)') # y-axis label
plt.xlabel('Frequency (rad/s)') # x-axis label
plt.grid(True, which='both', linestyle='--', linewidth=0.5) # Add grid lines for better readability# Adjust layout to prevent overlap between subplots
plt.tight_layout()# Display the plots
plt.show()
Key Points:
-
System Definition:
- The transfer function is defined as H(s)=ωn2s2+2ζωns+ωn2H(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_ns + \omega_n^2}.
- The numerator and denominator coefficients represent the system's dynamics.
-
Frequency Range:
- A logarithmic frequency range (
logspace
) is chosen to visualize behavior over multiple orders of magnitude.
- A logarithmic frequency range (
-
Bode Plot:
signal.bode
computes the magnitude (in dB) and phase (in degrees) for the specified frequency range.
-
Visualization:
- Two subplots: one for magnitude and one for phase.
semilogx
is used for a logarithmic x-axis to match standard Bode plot conventions.
-
Customization:
- Grid lines (
grid
) improve readability. tight_layout
ensures that the labels and titles don't overlap.
- Grid lines (
You can adjust the damping ratio (zeta
), natural frequency (omega_n
), or even replace the transfer function to analyze different systems. Let me know if you'd like further customization!
相关文章:

【机器人】振动分析和控制工具之Bode图
Bode 图完整介绍 Bode 图由两个部分组成: 幅值图 (Magnitude Plot):描述系统对不同频率输入信号的增益大小(幅值响应)。相位图 (Phase Plot):描述系统输出信号相对于输入信号的相位差。 Bode 图的横轴是频率&#x…...

生成:安卓证书uniapp
地址: https://ask.dcloud.net.cn/article/35777 // 使用keytool -genkey命令生成证书: 官网: keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore ----------------------------------…...

酒店/电影推荐系统里面如何应用深度学习如CNN?
【1】酒店推荐系统里面如何应用CNN?具体过程是什么 在酒店推荐系统中应用卷积神经网络(CNN)并不是一个常见的选择,因为 CNN 主要用于处理具有空间结构的数据,如图像、音频和某些类型的序列数据。然而,在某…...

【CSS in Depth 2 精译_069】11.3 利用 OKLCH 颜色值来处理 CSS 中的颜色问题(上)
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第四部分 视觉增强技术 ✔️【第 11 章 颜色与对比】 ✔️ 11.1 通过对比进行交流 11.1.1 模式的建立11.1.2 还原设计稿 11.2 颜色的定义 11.2.1 色域与色彩空间11.2.2 CSS 颜色表示法 11.2.2.1 RGB…...

Redis篇-6--原理篇5--单线程模型
1、概述 Redis 采用单线程模型来处理客户端请求,这意味着在任意时刻只有一个命令被执行。这种设计简化了 Redis 的实现,并确保了高并发环境下的数据一致性。尽管 Redis 是单线程的,但它通过高效的内存管理和网络 I/O 操作,仍然能…...

Java版-图论-最小生成树-Prim算法
实现描述 如图: Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下: 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权…...

Python 基础学习(一)
一.基础语法 注释 Python中单行注释以 # 开头,如下: #!/usr/bin/python3# 第一个注释 print ("Hello, Python!") # 第二个注释多行注释可以用多个 # 号,还有 ‘’’ 和 “”": #!/usr/bin/python3# 第一个注释…...

vue2使用rtsp视频流接入海康威视摄像头(纯前端)
一.获取海康威视rtsp视频流 海康威视官方的RTSP最新取流格式如下: rtsp://用户名:密码IP:554/Streaming/Channels/101 用户名和密码 IP就是登陆摄像头时候的IP(笔者这里IP是192.168.1.210) 所以笔者的rtsp流地址就是rtsp://用户名:密码192.168.1.210:554/Streaming/Channel…...
利用PHP和GD库实现图片拼接的方法
利用PHP和GD库实现图片拼接的方法主要涉及到加载图片资源、创建目标画布、将图片资源绘制到目标画布上,并最终输出或保存拼接后的图片。以下是实现图片拼接的基本步骤: 加载图片资源: 使用imagecreatefromjpeg()、imagecreatefrompng()或ima…...

自动驾驶领域常用的软件与工具
CarSim:专门针对车辆动力学的仿真软件,能够预测和仿真汽车整车的操纵稳定性、制动性、平顺性、动力性和经济性。CarMaker:德国IPG公司推出的动力学、ADAS和自动驾驶仿真软件,提供精准的车辆本体模型和闭环仿真系统。VTD (Virtual …...
uniapp-内部项目使用文档
uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容:阶段1问题记录: 阶段2自行实现内容: 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...

ASP .NET Core 中的环境变量
在本文中,我们将通过组织一场小型音乐会(当然是在代码中)来了解 ASP .NET Core 中的环境变量。让我们从创建项目开始: dotnet new web --name Concert 并更新Program.cs: // replace this: app.MapGet("/"…...
学科竞赛管理系统
文末获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率&am…...

unity 让文字变形
效果: using TMPro; using UnityEngine; using NaughtyAttributes;[ExecuteInEditMode] public class TMTextPerpective : MonoBehaviour {[OnValueChanged("DoPerspective")][Range(-1f, 1f)]public float CenterBias 0f;[OnValueChanged("DoPers…...

Linux高并发服务器开发 第一天(Linux的目录结构 cd用法 终端提示符格式)
目录 1.命令解析器:shell 2.LINUX下的目录结构 3.cd的使用 3.1cd 绝对路径 3.2cd 相对路径 3.3cd 回车 3.4cd - 4. 终端提示符格式 1.命令解析器:shell 默认运行与计算机系统终端的 用来解析用户输入命令的工具 内核:操作系统的核…...

可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
1.介绍 Spring Boot是一个基于Spring的套件,它提供了一个即开即用的应用程序架构,可以简化Spring应用的创建及部署流程,帮助开发者更轻松快捷地构建出企业及应用。 Spring Boot项目中Actuator模块提供了众多HTTP接口端点(Endpoi…...

支持图像和视频理解多模态开源大模型:CogVLM2 CogVLM2-Video
CogVLM2和CogVLM2-Video是新一代的开源模型,支持图像和视频理解,具有显著的性能提升。最近发布的更新包括CogVLM2论文的发表、在线演示和对视频理解的支持,能够处理最多1分钟的视频。新模型支持中英文,文本长度可达8K,…...

ClouderaManager 集群搭建
前提:服务器之前做过域名映射、免密登录 ClouderaManager 集群 1. 组件分布规划 服务器服务器h1zk、hdfs(dn)、yarn(nm)、spark、kafka、flumeh2hdfs(nn-standy)、yarn(rm-active)、sparkh3hdfs(nn-active)、yarn(rm-standy)、hive、sparkh4zk、hdfs(dn)、yarn(n…...
Docker 搭建 gitlab 服务器卡顿问题解决方法(创建:swap分区)
Docker 安装系列 服务器搭建了一个 gitlab 服务器以供自己开发使用,服务器搭建很简单,但是使用起来是相当的卡顿,在代码 pull,push 过程中都会有相应的延迟。gitlab 启动运行就占用了大量的内存,4G内存在启动后已经所…...

PVE修改IP地址
一、在局域网的电脑浏览器输入PVE的IP地址登录后台,从左边的菜单找到“PVE”—“_Shell”菜单,进入网页版的ssh界面下;或者在主机的控制台下输入root密码后登录到ssh下; 二、输入以下命令回车: vi /etc/network/inter…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...