scipy.signal.hilbert和scipy.fftpack.hilbert的区别

提示:分析scipy.signal.hilbert和scipy.fftpack.hilbert在应用的区别

一、代码

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from pyhht import EMD
from scipy.signal import hilbert
import tftb.processing
from scipy import signal, fftpack, statsmatplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
matplotlib.rcParams['axes.unicode_minus'] = False  # 显示负号def envelope_spectrum1(data1, fs):'''fun: 绘制包络谱图param data: 输入数据,1维arrayparam fs: 采样频率param xlim: 图片横坐标xlim,default = Noneparam vline: 图片垂直线,default = None'''plt.figure(figsize=(15, 8))plt.plot(data1)# ----去直流分量----#data = np.array(data1)data = data - np.mean(data)# ----做希尔伯特变换----#xt = dataht = fftpack.hilbert(xt)at = np.sqrt(xt ** 2 + ht ** 2)  # 获得解析信号at = sqrt(xt^2 + ht^2)plt.plot(at)plt.show()# 计算各组分的Hilbert变换imfsHT = hilbert(xt)# 计算各组分Hilbert变换后的瞬时频率instf, timestamps = tftb.processing.inst_freq(imfsHT)plt.figure(figsize=(15, 8))plt.plot(instf*fs)plt.show()am = np.fft.fft(at)  # 对解析信号at做fft变换获得幅值am = np.abs(am)  # 对幅值求绝对值(此时的绝对值很大)am = am / len(am) * 2am = am[0: int(len(am) / 2)]  # 取正频率幅值freq = np.fft.fftfreq(len(at), d=1 / fs)  # 获取fft频率,此时包括正频率和负频率freq = freq[0:int(len(freq) / 2)]  # 获取正频率am[0] = 0plt.figure(figsize=(15, 8))plt.plot(am)plt.show()return freq, amif __name__ == "__main__":# 生成0-1时间序列,共2048个点N = 1000t = np.linspace(0, 1, N)# 生成信号# signal = (2 + np.cos(8 * np.pi * t)) * np.cos(40 * np.pi * (t + 1) ** 2) + np.cos(#     20 * np.pi * t + 5 * np.sin(200 * np.pi * t))signal = 0.8 *np.cos(90 * np.pi * t * 2) + np.sin(100 * np.pi * t * 2)freq, am = envelope_spectrum1(signal, N)

二、调试代码

  • at: 是scipy.fftpack.hilbert(xt)的结果
  • imfsHT: 是scipy.fftpack.hilbert(xt)的结果(在代码里是hilbert(xt)的结果)
  • data(ht):是原始信号
    在这里插入图片描述
    可以发现at和imfsHT的虚部相差一个负号。
    可以发现data和imfsHT的实部。

三、实际应用

yt = xt + ht*j

  • yt:是解调信号
  • xt:是解调信号的实部
  • ht:是解调信号的虚部
at = np.sqrt(xt ** 2 + ht ** 2)    #  解调信号的瞬时幅值用于包络解调

也可以通过xt和ht计算瞬时频率——信号的时频分析(HHT:希尔伯特黄变换)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

26种主流的神经网络偏微分方程求解方法汇总

偏微分方程(PDE)是数学中一门重要的分支,应用范围广泛涉及自然科学、工程技术、生物学领域等。然而我们都知道,偏微分方程的求解过程异常艰难,如果碰上了特别复杂的,传统的计算方法可能需要数百万个CPU小时…

网站服务器/域名/备案到底有什么关联?

​  在一个网站的组成中,网站服务器、域名、备案这几个要素是要被常提到的。在谈及三者关联之前,我们先了解下三者的各自概念。 域名:它是网站的唯一标识符,通俗理解来说就是用户在浏览器地址栏中输入的网址。一般来说&#xff…

自动驾驶技术:驶向未来的智能之路

导言 自动驾驶技术正引领着汽车产业向着更安全、高效、智能的未来演进。本文将深入研究自动驾驶技术的核心原理、关键技术、应用场景以及对交通、社会的深远影响。 1. 简介 自动驾驶技术是基于先进传感器、计算机视觉、机器学习等技术的创新,旨在实现汽车在不需要人…

DICOM 文件中,VR,VL,SQ,图像二进制的几个注意点

DICOM 文件的结构,在网上有很多的学习资料,这里只介绍些容易混淆的概念,作为回看笔记。 1. 传输语法 每个传输语法,起都是表达的三个概念:大小端、显隐式、压缩算法 DICOM Implicit VR Little Endian: 1.2.840.1000…

CSS基础面试题

介绍一下标准css盒子模型与低版本IE的盒子模型? 标准盒子模型:宽度内容的宽度(content) border padding margin 低版本IE盒子模型:宽度内容宽度(contentborderpadding) margin box-sizing 属性…

JOSEF 组合中间继电器 RXMM1-RK214003 DC220V 不带底座

系列型号 RXMM1 RK 214 002组合中间继电器;RXMM1 RK 214 003组合中间继电器; RXMM1 RK 214 004组合中间继电器;RXMM1 RK 214 005组合中间继电器; RXMM1 RK 214 006组合中间继电器; 1 用途 RXMM1系列组合中间继电器用于电力系统二次回路及…

01-EEA电子电器架构

1.背景 汽车正在从传统的机械装置逐步电气化,汽车电子电气功能不断的丰富。越来越多的电气系统和功能被集成到汽车上,传统的原理及线束设计已经远远不能满足。为此,EEA(电子电气架构)应运而生。如何设计电子电气架构,满足日益增长…

Linux系统中如何开启和配置OpenGauss数据库的远程连接

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试7. 结语 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍…

HTTP 410错误:资源已永久删除,了解与处理

在Web开发中,HTTP状态码是用于表示Web服务器响应的各种状态。其中,HTTP 410错误表示资源已永久删除。这意味着请求的资源已经不再存在,无法通过HTTP请求再次获取。 当HTTP 410错误出现时,客户端可能会收到一个“410 Gone”响应&a…

蓝牙物联网智慧工厂解决方案

蓝牙物联网智慧工厂解决方案是一种针对工厂管理的智能化解决方案,通过蓝牙、物联网、大数据、人工智能等技术,实现工厂人员的定位、物资的定位管理、车间的智慧巡检、智慧安防以及数据的可视化等功能。 蓝牙物联网智慧工厂解决方案构成: 人员…

(WPF)Serilog 使用demo实例

Serilog 日志效果&#xff1a; 引入的Serilog库文件 实现代码 xaml 代码&#xff1a; <Window x:Class"Wpf_demo_Serilog.MainWindow" xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x"http://sche…

spring boot集成mybatis和springsecurity实现登录认证功能

参考了很多网上优秀的教程&#xff0c;结合自己的理解&#xff0c;实现了登录认证功能&#xff0c;不打算把理论搬过来&#xff0c;直接上代码可能入门更快&#xff0c;文中说明都是基于我自己的理解写的&#xff0c;可能存在表述或者解释不对的情况&#xff0c;如果需要理论支…