Python如何实现信号包络,Python包络提取怎么做?

Python 信号包络提取指南

在信号处理领域,包络(Envelope)是指信号振幅随时间变化的轮廓线,提取信号包络对于分析调制信号、振动分析、音频处理以及检测信号特征至关重要,在 Python 中,最常用且最标准的方法是使用 希尔伯特变换(Hilbert Transform)。

核心原理

提取包络的标准数学方法是构造信号的解析信号(Analytic Signal)。

python实战之pywifi
加载中
python实战之pywifi
  • 给定一个实数信号 $x(t)$,通过希尔伯特变换得到其虚部 $y(t)$。
  • 构造解析信号 $z(t) = x(t) + i \cdot y(t)$。
  • 信号的瞬时振幅(即包络)等于解析信号的模:$A(t) = |z(t)| = \sqrt{x(t)^2 + y(t)^2}$。

实现工具

在 Python 生态中,实现包络提取的核心库包括:

  • NumPy:用于高效的数值计算和数组操作。
  • SciPy:其中的 scipy.signal.hilbert 函数是实现希尔伯特变换的标准工具。
  • Matplotlib:用于将原始信号与提取出的包络进行可视化对比。

代码实现示例

以下是一个完整的代码示例,展示了如何生成一个振幅调制的信号并提取其包络。

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert
# 1. 生成模拟信号
fs = 1000  # 采样频率
t = np.linspace(0, 1, fs, endpoint=False)
# 载波频率 (50Hz)
carrier_freq = 50
# 调制信号 (5Hz,控制振幅)
modulating_freq = 5
modulating_signal = 0.5  (1 + np.sin(2  np.pi  modulating_freq  t))
# 生成被调制的信号
signal = modulating_signal  np.sin(2  np.pi  carrier_freq  t)
# 2. 使用希尔伯特变换提取包络
# hilbert 函数返回的是解析信号
analytic_signal = hilbert(signal)
# 包络即为解析信号的模
amplitude_envelope = np.abs(analytic_signal)
# 3. 绘图可视化
plt.figure(figsize=(12, 6))
# 绘制原始信号
plt.subplot(2, 1, 1)
plt.plot(t, signal, label='Original Signal', color='blue', alpha=0.7)'Original Modulated Signal')
plt.grid(True)
plt.legend()
# 绘制包络线
plt.subplot(2, 1, 2)
plt.plot(t, amplitude_envelope, label='Extracted Envelope', color='red', linewidth=2)
plt.plot(t, modulating_signal, '--', label='True Envelope', color='green', alpha=0.6)'Extracted Envelope vs True Envelope')
plt.grid(True)
plt.legend()
plt.tight_layout()
plt.show()

关键步骤解析

  • scipy.signal.hilbert(signal):
    注意这个函数返回的不是变换后的虚部,而是解析信号(复数形式),这是初学者最容易出错的地方。
  • np.abs(analytic_signal):
    通过计算复数的模,直接获得信号的瞬时振幅,这便是我们需要的包络线。
  • 性能优化:
    对于极大规模的数据,scipy.signal.hilbert 基于 FFT(快速傅里叶变换)实现,计算复杂度为 $O(N \log N)$,能够高效处理大规模采样数据。

应用场景

  • 通信工程:解调 AM(幅度调制)信号。
  • 机械故障诊断:通过提取轴承振动信号的包络,识别冲击特征(包络谱分析)。
  • 音频处理:分析音频信号的动态范围和能量随时间的变化。
  • 生物医学信号:处理 ECG(心电图)或 EEG(脑电图)信号中的特征提取。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/493843.html

赞 (0)
CDN参数如何配置?CDN加速参数设置与优化方法有哪些?
上一篇 2026年7月14日 10:37
哪家CDN厂商好?国内CDN厂商哪个好用?CDN服务商推荐
下一篇 2026年7月14日 10:42

相关推荐

  • 服务器弹性带宽是什么意思?服务器弹性带宽怎么收费

    服务器弹性带宽是现代企业降低IT成本、应对流量波动的核心解决方案,其核心价值在于打破传统固定带宽的资源闲置与突发流量瓶颈,实现真正的“按需付费、弹性伸缩”,企业通过部署弹性带宽,可将带宽利用率提升至90%以上,同时将流量高峰期的业务中断风险降至最低,这是构建高可用、高性价比网络架构的必经之路,核心优势:成本控制……

    2026年3月25日
    10200
  • 服务器已经关闭了吗?服务器关闭了怎么重新启动

    当遇到网站无法访问或游戏连接中断时,用户脑海中浮现的第一个问题往往是:服务器已经关闭了吗,判断服务器状态的核心结论是:绝大多数情况下,服务器并未真正“关闭”,而是处于暂时性故障、网络连接异常或维护更新中, 真正的永久性关闭极其罕见,用户应优先排查本地网络、DNS设置或查看官方公告,而非默认服务器已停止运营,通过……

    2026年4月11日
    11600
  • 服务器怎么开3306端口?服务器3306端口开启方法

    服务器开3306端口是数据库服务正常运行并提供外部访问能力的核心前提,其本质是在服务器防火墙与云平台安全组层面放行MySQL数据库的默认通信接口,确保客户端与服务器之间能够建立可靠的TCP连接,这一操作直接决定了应用程序能否成功读写数据库中的数据,是搭建Web服务、企业级应用及各类数据驱动型系统的关键基础设施配……

    2026年4月1日
    10000
  • 服务器就是主机吗?服务器和主机有什么区别

    服务器并不等同于主机,二者在性能、功能、应用场景及可靠性要求上存在本质区别,主机是一个泛指的概念,而服务器是具备特定专业属性的高性能计算机,所有的服务器都可以称为主机,但并非所有的主机都能被称为服务器,核心定义的本质差异要厘清二者的关系,首先需要明确各自的定义边界,主机的广义范畴:在计算机网络中,主机是指任何一……

    2026年4月11日
    6000
  • 服务器属于计算机设备吗,服务器和普通电脑有什么区别

    服务器绝对属于计算机设备,它是计算机设备中一种高性能、高可靠性、专为网络服务而生的专业化形态, 这一结论在计算机科学定义、硬件架构组成以及实际应用场景中均有确凿的支撑依据,虽然服务器在外形、性能指标及运行环境上与普通个人电脑(PC)存在显著差异,但从本质上讲,服务器依然遵循冯·诺依曼体系结构,具备运算器、控制器……

    2026年4月10日
    6800
  • fivem有哪些常用的游戏服务器,哪个最稳定?

    FiveM平台上的常用游戏服务器主要分为角色扮演(RP)、竞速、僵尸生存和自由模式等类型,其中角色扮演服务器凭借高度拟真的社交体验和丰富的任务系统,成为目前玩家基数最大、生态最成熟的选择,在深入探索这些服务器之前,需要理解不同类型对硬件和网络要求的差异,以及如何根据自身场景选择玩法方向,FiveM服务器类型概览……

    2026年8月3日
    1700
  • 个人如何注册域名?注册域名需要哪些条件和流程

    个人注册域名只需选定心仪名称、选择正规注册商并完成实名认证,通常耗时不到半小时,费用在几十至百元不等,是搭建个人网站或品牌保护的第一步,在数字化浪潮席卷全球的今天,拥有一个属于自己的域名,就像是在互联网世界中买下了一块专属的“数字地产”,对于许多初次接触网络建设的个人用户来说,面对琳琅满目的域名后缀和复杂的注册……

    服务器运维 2026年6月6日
    5500
  • Python参数如何传入?,python传参有哪些方法

    Python 参数传递详解在 Python 编程中,“传入”通常涉及三个层面:函数参数传递、类构造函数传参以及命令行参数传递,理解这些机制是编写高效、灵活代码的基础,函数参数传递这是最常见的场景,指在调用函数时将数据传递给函数内部,位置参数 (Positional Arguments)按照定义的顺序进行传递,d……

    2026年7月13日
    12500
  • 服务器忘记了终端密码怎么办?终端密码忘记怎么找回

    服务器终端密码遗忘并非不可逆转的灾难,通过正确的重启引导模式或使用云平台控制台的远程连接功能,管理员可以在几分钟内重置密码并恢复系统的完全控制权,核心解决路径在于打破现有系统的权限壁垒,利用单用户模式或救援模式获得根权限,进而修改密码文件,这一过程在物理服务器和云服务器上虽有操作差异,但底层逻辑一致,面对密码遗……

    2026年3月24日
    10500
  • 服务器开多个网站视频教程,服务器怎么同时搭建多个网站?

    一台服务器完全能够同时运行多个网站视频平台,核心在于虚拟主机技术的应用、合理的带宽资源分配以及流媒体传输协议的正确配置,通过构建高效的Web服务环境,服务器资源利用率可提升300%以上,显著降低多站点运营成本,实现这一目标并非简单堆砌网站数量,而是需要建立一套科学的资源隔离与流量调度机制,确保每个视频站点都能独……

    2026年3月27日
    10300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注