Python中signal.hilbert与fftpack.hilbert的区别

news/2024/5/18 22:58:02 标签: python, signal, fftpack, hilbert, 希尔伯特变换

文章目录

  • 1 代码演示
  • 2 分析总结

在Python的scipy模块中,有两个实现希尔伯特变换计算的方式,分别为signal.hilbertfftpack.hilbert,但是这两种方式得到的结果有所区别。

1 代码演示

下面进行代码演示。

1、代码块1:使用signal.hilbert

python">from scipy.signal import hilbert

x=[1,2,3,4]
y=hilbert(x) 
print(y)

输出如下:

python">[1.+1.j 2.-1.j 3.-1.j 4.+1.j]

2、代码块2:使用fftpack.hilbert

python">from scipy.fftpack import hilbert

x=[1,2,3,4]
y=hilbert(x) 
print(y)

输出如下:

python">[-1.  1.  1. -1.]

3、代码块3:使用【MATLAB】中的Hilbert函数计算,本代码块及其结果用于与上述两个Python代码块的结果进行对比:

>> x=[1,2,3,4];
>> y=hilbert(x);
>> y

y =

   1.0000 + 1.0000i   2.0000 - 1.0000i   3.0000 - 1.0000i   4.0000 + 1.0000i

2 分析总结

1、第一节中的代码块1、2为Python中的计算结果,代码块3是MATLAB中计算的结果。

2、使用signal.hilbert的代码块1计算的结果与代码块3中的计算结果完全一致,在输出中每一项的复数由实部为x、虚部为x的希尔伯特变换结果组成,这样的输出被称为解析信号。

3、使用fftpack.hilbert的代码块2的输出结果仅为x的希尔伯特变换结果,但是与代码块1、3的输出复数的虚部部分总是相差一个负号,即总是相反的结果,因此可以断定,使用fftpack.hilbert计算的结果实际上正好为希尔伯特变换结果的相反数,实际使用时要重新输出对应结果的相反数,可以修改代码块2为:

from scipy.fftpack import hilbert

x=[1,2,3,4]
y=hilbert(x)

temp=[]
for i in y:
    temp.append(-i)
y=temp

print(y)

输出如下:

[1.0, -1.0, -1.0, 1.0]

上述结果才是正确的希尔伯特变换结果。

END


http://www.niftyadmin.cn/n/514459.html

相关文章

数据结构——平衡二叉树

特征 1、空树是平衡二叉树。2、如果一棵树不为空,并且其中所有的子树都满足各自的左子树与右子树的高度差都不超过 1。 下面介绍一个简单应用,平衡二叉树的相关操作以后补充。 判断一棵二叉树是否为平衡二叉树 给定一颗二叉树的头结点 head,判…

MATLAB中的Prony Toolbox工具箱简介

点击获取Prony工具箱下载链接。具体如何使用,请自己在下载工具箱后,去查看内部的英文帮助文档,内容并不多,自己慢慢摸索吧。 Prony分析用于对均匀采样的信号进行建模,并假设该信号可以由多个复指数信号线性组合构成。…

EasyUI:EasyUI-DataGrid多行合并实现

1、首先我们<table>增加一个属性data-options"onLoadSuccess:mergeCells",mergeCells是我们对应的JS方法名&#xff0c;意思就是datagrid加载数据成功之后&#xff0c;执行这个mergeCells方法&#xff0c;mergeCells定义如下&#xff1a; //datagrid加载完后合…

生成toeplitz矩阵的Python实现代码

toeplitz矩阵即托普利兹矩阵。 托普利兹矩阵的主对角线上的元素相等&#xff0c;平行于主对角线的线上的元素也相等&#xff1b;矩阵中的各元素关于次对角线对称&#xff0c;即T型矩阵为次对称矩阵。在数学软件MATLAB中&#xff0c;生成托普利兹矩阵的函数是&#xff1a;toepl…

Python求方阵的逆矩阵与求非方阵的伪逆矩阵

文章目录前言示例1&#xff1a;求方阵的逆矩阵示例2&#xff1a;求非方阵的伪逆矩阵前言 在Python中&#xff0c;无论是求方阵的逆矩阵&#xff0c;还是求非方阵的伪逆矩阵&#xff0c;都有现成的模块可供调用。 求方阵的逆矩阵&#xff1a;np.linalg.inv(a)&#xff0c;其中…

USACO 2017 US Open

只会做T1&#xff0c;FallDream T2 n^2暴力AC&#xff0c;太强啦。 T1.Modern Art 题目大意&#xff1a;有一个n*n的矩阵&#xff0c;一开始都是0&#xff0c;你有n^2种颜色&#xff0c;编号1到n^2&#xff0c;每次可以选出一种颜色涂满一个子矩阵&#xff08;如果已涂则覆盖&a…

Python作图时各幅子图部分重叠解决方案

Python中使用matplotlib模块进行作图&#xff0c;在输出多幅图时&#xff0c;有时会出现一些子图挤在一起&#xff0c;产生重叠的情况&#xff0c;如下图&#xff1a; 在上图中&#xff0c;四幅子图的纵轴部分重叠&#xff0c;不美观&#xff0c;可通过添加下面的代码以使各子…

BZOJ 1406 数论

思路&#xff1a; $x^2kn1$ $x^2-1kn$ $(x1)(x-1)kn$ 令$x1k1n1$,$x-1k2n2$&#xff0c;其中$k1k2k$,$n1n2n$ 枚举n约数 >$\sqrt{n}$的&#xff0c;代入验证 去重 //By SiriusRen #include <set> #include <cstdio> using namespace std; #define int long long…