文章目录

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

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

1 代码演示

下面进行代码演示。

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

from scipy.signal import hilbertx=[1,2,3,4]
y=hilbert(x)
print(y)

输出如下:

[1.+1.j 2.-1.j 3.-1.j 4.+1.j]

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

from scipy.fftpack import hilbertx=[1,2,3,4]
y=hilbert(x)
print(y)

输出如下:

[-1.  1.  1. -1.]

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

>> x=[1,2,3,4];
>> y=hilbert(x);
>> yy =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 hilbertx=[1,2,3,4]
y=hilbert(x)temp=[]
for i in y:temp.append(-i)
y=tempprint(y)

输出如下:

[1.0, -1.0, -1.0, 1.0]

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

END

Python中signal.hilbert与fftpack.hilbert的区别相关推荐

  1. 浅析Python中signal包的使用

    原文链接:https://www.jb51.net/article/74844.htm 这篇文章主要介绍了Python中signal包的使用,主要在Linux系统下对进程信号进行相关操作,需要的朋友可 ...

  2. python while if 区别_对python中for、if、while的区别与比较方法

    如下所示: if应用举例: #if 若条件成立,只执行一次 #if 条件:如果条件成立,执行条件后的代码块内容,不成立,直接跳过代码块 #判断如果年龄age小于18,输出未成年 #=一个等号表示赋值的 ...

  3. Python中threading的join和setDaemon的区别及用法 例子

    Python中threading的join和setDaemon的区别及用法 Python多线程编程时,经常会用到join()和setDaemon()方法,今天特地研究了一下两者的区别. 1.join ...

  4. python的none是什么-python中的null与none有什么区别

    Python中none与null的区别有:none可以看作是一个具体的值用来初始化变量,而null表示空不是一个值,并且没有与任何一个值绑定并且存储空间也没有存储值 Python中所有的操作都是针对对 ...

  5. Python基础学习-Python中最常见括号()、[]、{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho

    Python基础学习-Python中最常见括号().[].{}的区别 2015-08-13 07:54 by xuxiaoxiaoxiaolu, 1138 阅读, 0 评论, 收藏, 编辑 Pytho ...

  6. python中_x、__x、__xx__的区别

    python中_x.__x.__xx__的区别 注释:该文章是从英文文档翻译过来的,具体代码可以参考原网址,这里只是简单解释一下他们的区别,方便大家迅速了解.原地址:difference-betwee ...

  7. Python中NaN、nan和NAN的区别及使用方法

    Python中NaN.nan和NAN的区别及使用方法 Python中的NaN(Not a Number)是一个特殊的浮点数值,用于表示非数值型计算结果或无限大的运算结果,常用于科学计算.数据分析等领域 ...

  8. Python学习笔记(一)1.Python中end=和sep=的用法与区别。

    一.Python中end=和sep=的用法与区别: python中常用到的end=和sep=两种参数用法相似,一个是python输出结尾,一个是python输出分割. end: 默认是换行,表示两个字 ...

  9. Python中最常见括号()、[]、{}的区别

    原文:https://www.cnblogs.com/xuxiaolu/p/4726064.html Python中最常见括号().[].{}的区别 在Python语言中最常见的括号有三种,分别是:小 ...

最新文章

  1. 【哲学】为什么威尔·杜兰特在其所著的《哲学的故事》一书中说“所有科学源于哲学,终于艺术?”
  2. BUUCTF-WEB:[极客大挑战 2019]Havefun 1
  3. J2ME下访问.net的webservice
  4. gettimeofday函数
  5. Silverlight中开发和设计人员的合作文档信息
  6. P4552-[Poetize6]IncDec Sequence【差分】
  7. C语言日志操作类实例
  8. mysql5.7 至少需要1560,mysq5.7.28配置innodb_page_size错误引起的错误1071(42000)
  9. Google开放最大目标检测数据集,还要为它举办AI挑战赛
  10. Qt学习笔记(3)——PushButton、RadioButton、CheckBox
  11. socket 服务器
  12. 小程序{errcode:40029,errmsg:invalid code, hints: [ req_id: 8H_oSa0564ns12 ]}
  13. 你不屑于大器晚成,就只能平庸一生
  14. 基于html人事管理报告,人事管理工作实习报告范文
  15. SCSI——小型计算机系统接口
  16. python函数调用关系分析
  17. JS循环输出数组及数组键值
  18. 分享8个超好用的免费工具/软件/网站(一定有你要的)
  19. 【重磅新闻】罗永浩约战王自如:一场两败俱伤的战役!
  20. 如何使用jQuery 制作全屏幕背景的嵌入视频

热门文章

  1. 从点石投票结果看如何做外链及外链建设趋势
  2. 超实用迷你js判断类库介绍
  3. oracle模糊匹配date类型日期,SQL时间类型模糊查询
  4. linux内核编译无线网卡,ZD1211B芯片USB无线网卡Linux驱动的编译
  5. 2025年前装搭载率突破30%,资本/车企持续加码新赛道
  6. *ngif 和 显示隐藏的区别
  7. matlab的nlinfit函数,用matlab如何进行非线性拟合 nlinfit函数?
  8. Slim Framework RabbitMQ
  9. 多线程的几种实现方法详解
  10. 解析Systemtap