希尔伯特变换的在信号解调时的示例

1.希尔伯特变换的应用场景

希尔伯特变换,在数学上的含义是清晰的。它是一个数字移相器,可以把通过它的任何一个信号相移-90度。这个数学工具在信号解调时,会有非常有用的特性出现。可以看示例:

解释一下:

1.最上面的波形是载波和待叠加的低频信号。

2.中间的波形是经过信道传输的经过载波叠加的调幅波

3.是包络信号,实际上就是去除载波后的低频信号。注意,最后的载波信号被整体提升了一个幅度为载波信号幅度的直流分量。

2.相关例程

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert

# Generate a sample signal
t = np.linspace(0, 1, 1000)
frequency = 100  # Frequency of the carrier signal
amplitude = 0.5  # Amplitude of the modulating signal
carrier_signal = np.sin(2 * np.pi * frequency * t)
modulating_signal = amplitude * np.sin(2 * np.pi * 2 * t)  # Modulating signal

# Combine modulating signal and carrier signal
fm_signal = carrier_signal * (1 + modulating_signal)

# Perform Hilbert transform
analytic_signal = hilbert(fm_signal)

# Extract envelope
amplitude_envelope = np.abs(analytic_signal)

# Plotting
plt.figure(figsize=(8, 6))
plt.subplot(311)
plt.plot(t, carrier_signal, color='blue', label='Carrier')
plt.plot(t, modulating_signal, color='green', label='Modulating')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()

plt.subplot(312)
plt.plot(t, fm_signal, color='red', label='FM Signal')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()

plt.subplot(313)
plt.plot(t, amplitude_envelope, color='purple', label='Envelope')
plt.xlabel('Time')
plt.ylabel('Amplitude')
plt.legend()

plt.tight_layout()
plt.show()

3.分析

我理解希尔伯特变换的物理含义,可以徒手编写代码完成计算。我也大致能理解它的上述应用场景。但是我很难把这两者关联起来。网络有一则看起来很能自圆其说的分享帖,关于地球物理中地震波的各个频段的震波因介质传播速度而必须进行的相位校准,那个场景无需希尔伯特变换出马。FFT本身就能搞定。FFT本身就有相位信息,用那个方法做相位修正似乎不必要。

但是,注意希尔伯特变换提供的是一个非常精准的90度移相,这意味着,控制好输入参数,它可以精准的进行特定频点的抹除。

3.1 一个物理解释 - 锁相 - 相移 - 变换 - 得到包络

希尔波特变换生成的虚部是不是实信号相移-90度的信号?

是的,希尔伯特变换生成的虚部信号通常可以看作是原始信号的相移后的信号,相移角度为-90度(或π/2 弧度)。

希尔伯特变换是一种特殊的傅里叶变换,其结果包括原始信号的实部和虚部。虚部信号经常用于表达原始信号的相位信息。而在大多数情况下,希尔伯特变换生成的虚部信号可以视为原始信号相位后退90度。

在调幅调制中,通过载波信号的幅度变化来传输调制信号的信息。希尔伯特变换可以帮助我们提取出调制信号的相位信息,从而能够进行解调。

需要注意的是,在某些特定情况下,虚部信号的相位角度可能不完全是-90度,这取决于信号的频谱特性和具体的应用场景。

它的作用是不是消除一切固定信号,只保留瞬时信号?

希尔伯特变换的一个重要应用是消除固定信号,只保留瞬时信号。瞬时信号指的是信号的瞬时特征,例如信号的瞬时幅度和瞬时相位。

希尔伯特变换通过引入90度相移来进行这种固定信号的消除。在频域中,它可以通过乘以一个复指数来实现。这个复指数在频率上具有一个极点,而在相位上具有一个-90度的延迟。

因此,希尔伯特变换可以将固定信号转换为实部为0的复数信号,而将瞬时信号保留在虚部中。通过舍弃实部为0的部分,可以消除固定信号,只留下瞬时信号。

这种特性使得希尔伯特变换在信号分析和处理中有广泛的应用,特别是在瞬时频率分析和振动信号处理等领域。

需要注意的是,希尔伯特变换并不总是能完美地消除固定信号,因为它依赖于信号的频谱特性和变换的精确度。在实际应用中,要根据具体情况来确定使用的方法和技术。

感谢您的问题,如果还有其他疑问,请随时提问。

它是怎么把固定信号滤掉的?

希尔伯特变换是一种通过引入90度相移来消除固定信号的变换方法。更具体地说,希尔伯特变换需要在频域中乘以一个复指数,这个复数在频率上具有一个极点,相位上具有一个-90度的延迟。

当信号通过希尔伯特变换时,它会被分解为实部和虚部两个部分。固定信号通常会体现在实部中,而瞬时信号则主要体现在虚部中。

由于复指数的相位延迟,固定信号在希尔伯特变换后会出现在实部,并且实部为0。同时,瞬时信号在虚部中得到保留。

因此,通过丢弃实部为0的部分,希尔伯特变换能够实现固定信号的滤除,保留瞬时信号。

需要注意的是,希尔伯特变换并不总是能够完全消除固定信号,因为它受到信号的频谱特性和变换的精确度的限制。因此,在实际应用中,要根据具体情况来确定使用的方法和技术。

他需要把载波信号对齐到0相位才行,对吧?

是的,对于希尔伯特变换的应用,如果要将所处理的信号与一个参考信号进行相位对齐,通常需要将载波信号对齐到0相位。

在某些应用中,例如调幅调制或解调中,希尔伯特变换通常用于提取信号的相位信息。而为了准确提取相位信息,需要将信号的载波信号与参考信号进行相位对齐。

相位对齐可以通过多种方式实现,具体取决于应用场景和系统要求。一种常见的方法是使用相位锁定环路(PLL)来追踪和控制相位偏移,使得载波信号与参考信号保持相位一致。另一种方法是使用触发器或延迟线等设备来调整信号的相位。

需要注意的是,在某些应用中,希尔伯特变换的结果可能对相位的初始对齐要求比较敏感。因此,在使用希尔伯特变换之前,确保载波信号与参考信号的相位对齐非常重要。

复平面的离散矢量乘法是复数域的两组矢量的逐点扭转。通过对矢量乘法之后的信号叠加上固定信号的同频信号,就可以在希尔伯特变换后,让这两个信号因为-90度的相位关系(希尔伯特变换会保证在运算过程中把这两个同频等幅信号,精确各自扭转到方向相反的位置——矢量乘法已经扭了一次,从而实现反向消除)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nuget包缓存存放位置迁移

本文介绍了如何通过环境变量修改Nuget包缓存的存放位置。 一、背景 默认情况下,NuGet会将项目中使用的包缓存到C盘,随着项目开发积累nuget包越来越多,这会逐渐挤占大量C盘空间,所以我们可以将nuget包缓存位置指定到其他盘中存放…

秋招面试—浏览器原理篇

浏览器原理篇 1.什么是XSS、CSRF,怎么预防? (1)XSS(跨站脚本攻击):攻击者将恶意代码植入到浏览器页面中,盗取存储在客户端的Cookie; ​ XSS分为:①存储型:论坛发帖、商品评论、用户…

(2024,CompAgent,LLM,提示分解,基于布局的对象组合)分而治之:语言模型可以规划和自我纠正组合文本到图像的生成

Divide and Conquer: Language Models can Plan and Self-Correct for Compositional Text-to-Image Generation 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1…

Golang 流媒体服务器lalserver使用指南

目录 安装 使用 1.推流 2.播放 官方地址 安装 1.下载源码 wget https://github.com/q191201771/lal/releases/download/v0.36.7/lal_v0.36.7_linux.zipunzip lal_v0.36.7_linux.zip cd lal_v0.36.7_linux 2.启动 ./bin/lalserver -c ./conf/lalserver.conf.json 使用 …

C语言第十三弹---VS使用调试技巧

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 VS调试技巧 1、什么是bug 2、什么是调试(debug)? 3、Debug和Release​编辑​ 4、VS调试快捷键 4.1、环境准备 4.2、调试…

java.util.LinkedHashSet cannot be cast to java.util.List 的解决方案

出现 “java.util.LinkedHashSet cannot be cast to java.util.List” 的错误,通常是因为你试图将一个 LinkedHashSet 对象直接强制转换为 List 类型。在 Java 中,LinkedHashSet 和 List 是两种不同的集合类型,不能直接进行转换。LinkedHashS…

小白水平理解面试经典题目LeetCode 455 Assign Cookies【Java实现】

455 分配cookies 小白渣翻译: 假设你是一位很棒的父母,想给你的孩子一些饼干。但是,你最多应该给每个孩子一块饼干。 每个孩子 i 都有一个贪婪因子 g[i] ,这是孩子满意的 cookie 的最小大小;每个 cookie j 都有一个…

sv program module

为了避免races,在验证中引入program; Similarities between program and module block A program block can instantiate another program block in the way how the module is instantiated another module block.Both can have no or more inputs, …

知识推理的多重途径

目录 前言1 逻辑及推理简介2 演绎推理:Top-Down Logic2.1 肯定前件假言推理2.2 否定后件假言推理2.3 演绎推理的逻辑链条 3 归纳推理:Bottom-Up Logic3.1 从特例到一般3.2 逐步推导的过程 4 溯因推理:结果的可解释逻辑4.1 推断过程的回溯4.2 …

vue 使用echarts-gl实现3d旋转地图

之前也有使用过echarts开发项目中涉及到的地图功能,当时使用geo来实现地图轮廓,看上去有种3d的感觉。最近闲来无事看了一份可视化大屏的UI设计图,感觉3d旋转地图挺好玩的,今天就来尝试实现下。 首先安装下echarts和echarts-gl依赖…

关于paddleocr的predict_system按高度顺序画图

关于paddleocr的predict_system按高度顺序画图,(coco格式) 增加adjust_res函数: 实现代码: def adjust_res(res):res_cp deepcopy(res)res_cp sorted(res_cp, keylambda x: x[bbox][1], reverseFalse)return res …

Android Studio项目——TCP客户端

目录 一、TCP客户端UI 1、UI展示 2、xml代码 二、TCP客户端数据发送 三、TCP客户端数据接收 一、TCP客户端UI 1、UI展示 2、xml代码 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.…

【算法专题】贪心算法

贪心算法 贪心算法介绍1. 柠檬水找零2. 将数组和减半的最少操作次数3. 最大数4. 摆动序列(贪心思路)5. 最长递增子序列(贪心算法)6. 递增的三元子序列7. 最长连续递增序列8. 买卖股票的最佳时机9. 买卖股票的最佳时机Ⅱ(贪心算法)10. K 次取反后最大化的数组和11. 按身高排序12…

leetcode514. 自由之路【线性dp】

原题链接&#xff1a;leetcode514. 自由之路 题目描述 电子游戏“辐射4”中&#xff0c;任务 “通向自由” 要求玩家到达名为 “Freedom Trail Ring” 的金属表盘&#xff0c;并使用表盘拼写特定关键词才能开门。 给定一个字符串 ring &#xff0c;表示刻在外环上的编码&…

CHS_03.2.3.2_2+进程互斥的硬件实现方法

CHS_03.2.3.2_2进程互斥的硬件实现方法 知识总览中断屏蔽方法TestAndSet指令Swap指令 知识回顾 进程互斥的四种软件实现方法 知识总览 这个小节我们会介绍另外的三种进程互斥的硬件实现方法 那么 这个小节的学习过程当中 大家需要注意理解各个方法的原理 并且要稍微的了解各个…

OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?

使用2个纹理实现 NV21 格式图像渲染 前文提到渲染 NV21 格式图像需要使用 2 个纹理,分别用于保存 Y plane 和 UV plane 的数据,然后在片段着色器中分别对 2 个纹理进行采样,转换成 RGB 数据。 OpenGLES 渲染 NV21或 NV12 格式图像需要用到 GL_LUMINANCE 和 GL_LUMINANCE_A…

更改远程桌面网关端口和远程Web应用程序端口

很多玩Home-Lab的小伙伴会使用远程桌面网关&#xff08;Remote Desktop Gateway&#xff09;来安全远程家庭内网的计算机&#xff0c;但由于国内电信法律法规的原因&#xff0c;普通家庭宽带并不能使用默认的443端口&#xff08;TCP&#xff09;和3391端口&#xff08;UDP&…

Shell中sed编辑器

1.简介 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个 命令文本文件中。 2.sed编辑器的工作流程 sed…

【高效开发工具系列】Wolfram Alpha

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

linux离线升级openssh方法

检查openssh版本&#xff1a; 升级前openssh 版本为7.4 openssl 版本为1.0.2k Openssh9.6 所需openssl >1.1.1 因此openssl也需要升级。 为了防止升级失败&#xff0c;无法使用SSH登录&#xff0c;首先安装telnet 预防。查看是否安装了telnet 客户端及服务 未安装tel…