离散信号的希尔伯特变换的计算公式_希尔伯特变换和瞬时频率问题--连载(二)...

写在开始的一段话:

PS:OK,上一期关于希尔伯特变换的文章发出后,有知友在评论区说“看到最后……居然这……”,哈哈,其实我也挺愧疚大家的,明明一篇知识分享的文章,却写到结尾都没进入正题,这要是在是高中写中文,还不得被语文老师骂个半死“废话这么多,居然没一句是文章重点,偏题还好意思连载”,在此向初中、高中语文老师道歉,学生下次一定注意啦,我就“不跑题!!!”,哈哈,切入重点,我们聊一聊“希尔伯特变换在那些领域运用”。语文老师:“过来,刚刚你说的撒?”

楼主:“哦!没说撒,我说,我们正式切入希尔伯特变换,聊聊它的历史,定义、运用、问题和解决方案以及基于希尔伯特变换的新理论。”

1、Brief history of the Hilbert transform(希尔伯特变换简史)

请翻译下段文字:The Hilbert transform arose in Hilbert's 1905 work on a problem Riemann posed concerning analytic functions,(Kress (1989)Bitsadze (2001)) which has come to be known as the Riemann–Hilbert problem. Hilbert's work was mainly concerned with the Hilbert transform for functions defined on the circle (Khvedelidze 2001; Hilbert 1953). Some of his earlier work related to the Discrete Hilbert Transform dates back to lectures he gave in Göttingen. The results were later published by Hermann Weyl in his dissertation (Hardy, Littlewood & Polya 1952, §9.1). Schur improved Hilbert's results about the discrete Hilbert transform and extended them to the integral case (Hardy, Littlewood & Polya 1952, §9.2).1905年---Hilbert在研究黎曼-希尔伯特问题时提出希尔伯特变换,而他关于离散希尔伯特变换的早期工作可追溯到他在哥根廷的讲课。

Hermann Weyl在他的学位论文中发表了离散希尔伯特变换的结论。

Schur改进了离散希尔伯特变换的结果,并将其扩展到了积分条件下。

而将Hilbert变换运用到信号处理中还得追溯到解析信号表达的建立。

翻看1946年Dennis Gabor(恩,就是发明全息摄影的哥们)发表的《Theory of communication》一文这样总结:“传统经典的信号研究方法主要概括为基于傅里叶变换的谱分析、基于概率分布的统计分析和其它随机信号表示方法,同时还有起源于很早的典型谱、相关和分布特征,而这些分析方法研究的一个基本考虑是将随机信号表达为两个独立函数的乘积”PS:丹尼斯·加博尔,1900年6月5日出生在匈牙利首都布达佩斯,1971年诺贝尔物理学奖授予英国伦敦帝国科技学院的匈牙利裔物理学家伽博(Dennis Gabor,1900-1979),以表彰他发明和发展了全息摄影。伽博是在激光器还未出现前的40年代发明全息摄影的。--看来大牛都是涉猎广泛的生物。

,其中

是幅度(包络),

是瞬时相位,信号

被表示成为了幅度和相位的调幅-调频函数。

早期关于包络和瞬时相位的研究都是基于

Cartesian 坐标系(笛卡尔坐标系),xy平面的原始信号的第一个投影(x轴)为x的值,第二个投影为

,由于两个基正交,可以得到关系:

,

。恩,相信这个不需要图也能理解吧!还是给一个图吧,意思到了即可,图不一定对上,哈哈,勾股定理会吧,看图就明白啦!

当然,这样的表达也被引入了傅里叶序列中:

,每一个成分都是简单谐波信号的和,其幅度A和瞬时相位

均可由上面笛卡尔坐标系中的两

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python实现希尔伯特变换信号瞬时相位和瞬时频率的示例代码: ```python import numpy as np import scipy.signal as sig # 生成测试信号 t = np.linspace(0, 1, 1000) x = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 20 * t) # 计算希尔伯特变换 ht = sig.hilbert(x) inst_amplitude = np.abs(ht) inst_phase = np.unwrap(np.angle(ht)) inst_freq = np.diff(inst_phase) / (2 * np.pi) * fs # 绘制结果 import matplotlib.pyplot as plt fig, axs = plt.subplots(3, 1, sharex=True) axs[0].plot(t, x, label='原始信号') axs[0].plot(t, inst_amplitude, label='瞬时幅值') axs[0].legend() axs[1].plot(t, inst_phase, label='瞬时相位') axs[1].legend() axs[2].plot(t[:-1], inst_freq, label='瞬时频率') axs[2].legend() plt.show() ``` 在该示例代码中,我们首先生成了一个测试信号,它由两个正弦波叠加而成,频率分别为10Hz和20Hz。然后,我们使用`scipy.signal`库中的`hilbert`函数计算了该信号希尔伯特变换。接着,我们从希尔伯特变换中提取出了瞬时幅值、瞬时相位和瞬时频率,并将它们绘制在了三个子图中。最后,我们使用`plt.show()`函数将结果显示出来。 需要注意的是,瞬时频率的计算需要对瞬时相位进行求导。由于瞬时相位在每个周期末尾可能会出现突变,因此我们需要使用`np.unwrap`函数对其进行去突变处理,以保证求导的准确性。此外,由于求导会使数据长度减少1,因此我们在计算瞬时频率时需要对时间轴进行截取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值