当前位置: 首页 > news >正文

复指数与高斯函数乘积的傅里叶变换_希尔伯特变换:将实数信号变换成解析信号?节省带宽,提升效率...

bfd2f0a26306ceb938085fcd21295968.png

通信中的调制,我们可以看作为在频域范围内的频谱搬移技术。

对于一个原始信号m(t),我们加上一个直流分量A0,再乘以载波信号,就得到了调幅AM信号。

9ad6a8ef69effe4554f67d1626a4d2ec.png

AM信号,之前的文章介绍过。

模拟调制:我们为什么要调制?先从AM幅度调制开始

对于AM信号,其时域与频域的变化过程如图1所示。原始信号m(t)加上一个直流分量A0,然后再与载波相乘,得到已调信号Sam(t);与之对应的,原始信号m(t)的频谱为M(ω),经过载波调制后,已调信号Sam(t)的频谱出现了搬移。

4810f12b4039fcbfd25d66a54448281e.png

图1 AM信号的产生与频域变化过程

DSB信号

AM信号中,加一个直流分量A0。由"典型信号傅里叶变换"可知,直流分量的傅里叶变换为冲激函数,所以图1中,可以在频域中看到冲激(红色箭头)

为什么要加上一个直流分量?

83d8785b83ba437dc1ff3cc165dea896.gif

图2 AM调制器

这个直流分量的累加(需要满足一定的条件),是保证已调制信号的包络与原始信号m(t)保持一致。然后通过简易的包络检波器进行检波。

现在我们把直流分量去掉,如图3所示

509eaada169b03d663a47beaf1a7d73c.gif

图3 双边带信号的产生与频谱变化过程

此时已调信号Sdsb(t)的包络已经不再与m(t)保持一致了,所以此时不能用包络解调器,而需要用相干解调器。

相干解调:三角函数公式有何用?原来就是通信中的调制解调过程

时域表达式可以写作

1e1d33152559829b36e6885bf9de6776.gif

频域表达式为

df4a90cd1e6412fc846b12a1ec91ab48.gif

截止目前,我们所说的基带信号频谱均是关于纵坐标轴(零点)对称的,因此会出现负频率。负频率只有数学上的意义,并不实际占用带宽。但是基带信号调制到高频之后,形成了关于Wc的对称频谱,原来的负频率是占用了实实在在的频率资源的。

9caef44d4fbe379da2be15b51f1523e0.gif

图4 DSB信号调制器

我们把这种信号叫作双边带信号DSB(Double Side Band),Wc左边的边带叫下边带,Wc右边的边带叫上边带。我们在接收端,通过一些滤波操作,获取这些频谱信息,然后恢复出原始信号。

很明显,我们希望占用少量的带宽,就可以恢复出原来的信号。

因为频谱资源非常稀缺,在同一个频率段,如果张三用了,李四就不能用了,会造成相互间干扰!

双边带信号占用了两倍的频率资源,造成了浪费。

|那怎么办呢?最直接的办法就是把基带信号的频谱砍掉一半|

SSB信号

用阶跃函数可以实现这个目的,图像为

7bb5a9de4bb2da81a3409a49dece7b05.gif

图5 阶跃函数

用两倍的阶跃函数与基带信号的频谱相乘,得到基带信号的单边带信号(SSB,Single Side Band)的频谱,

abef81e21b94e9f630901d855f69c554.gif

2倍因子是为了使信号的形式更简单(还有一层原因,是引入负频率后,原先正频率的幅度值降低一半,这里把负频率削去,自然要补上这一半)。调制到射频后,得到射频的单边带频谱,如图6所示。

b86416be84d41a0b2a17790bf69d2029.gif

图6 SSB信号调制过程

上下边带的频谱是对称的,我们只要知道一个边带,其他的信息自然就知道了。

Hilbert变换

图6已经清楚的描述了M(w)被"削"去一半边带的过程。那么其时域的情况呢?

根据傅里叶变换的性质,频域相乘对应时域卷积,我们得到

8ec329f1b64b1e9574a70b49e606ede1.gif

根据之前班长与大家所述的内容,阶跃函数的傅里叶变换为

4be32e2dbcedb692b4aefc84cb7130ef.gif

那么根据傅里叶变换的对称与尺度特性

ea937d1038dde722eb4e5ae1ed084894.gif

最终可以得出频域阶跃函数的时域表达式。

9bd9e553d97bb815a5961f6c71742db4.gif

那么,

8bd98dfb13c61f20f8dfa595e601592d.gif

我们做一个定义

4668cd56fb728a2f27f37932d5eb3385.gif

可以认为信号s(t)经过一个系统后的响应,系统的冲激响应为h(t)=1/πt。

5dc40bcc299f53fefb4f214a13403e03.png

图7 希尔伯特

在零点处,可以认为h(t)=0,如图8所示。这个系统有一个专门的名字叫作希尔伯特变换。

6b8ad53aeb1f7ab7b45f4f4b63f7d6cb.gif

图7 希尔波波特变换的冲激响应

没错,我们在推导SSB信号的时域表达式时,不小心"发现"了希尔波特变换。

频域表达式可以写成

60ec1eb9c726dc9dddcd16e39fc3c74f.gif

频域乘积,时域卷积,可以得出

eeb4d1cf3f3370dbc102cb7c9e2ee057.gif

根据两种不同的表达形式,我么可以得出希尔伯特变换的频域特性:

714dcaf8df14b677b19c54d34d7c3444.gif

也可以直接通过冲激响应h(t)=1/πt,取傅里叶变换得出。这个积分需要一定技巧。

我们知道引入虚数j,可以更加方便的表达旋转。

所以从频域响应可以看出,希尔伯特变换不会改变幅度值,对于正频率w>0,相移-90度;对于负频率w<0,相移+90度;

fc027e4090ccba961dd9ff6c110e1460.gif

图8 希尔波特四次变换

图8描述了对信号进行4次希尔伯特变换,频域的变化过程。每一次在时域进行希尔伯特变换,那么在频域就出现一次90度相位翻转。二次希尔伯特变换后,得到了原频域信号的相;四次希尔伯特变换后,恢复原频域信号。

|希尔伯特的逆变换|

很明显,如果我知道一个信号的希尔伯特变换,那么我们再对他进行一次希尔伯特变换,然后再求傅里叶反变换,就可以得到原始的时域信号了。

总结

到这里,我们知道对于一个双边带信号m(t),只需要加上自身的希尔伯特变换,就可以得到单边带信号SSB了,

bff8f032fa156c405fb8c1ecd8959239.gif

此时,节省了一半带宽。

更为一般的,实数信号x(t),Hilbert变换信号为x~(t),那么把两者相加,

134b178b4e079db2859ef3e805779e5a.gif

得到的信号我们叫做解析信号。

有SSB推导过程看出,解析信号的频谱只有正频段且幅度值为原来的两倍,实现了信号由双边谱转换成单边谱。

将实数信号变换成解析信号的结果就是,把一个一维的信号变成了二维复平面上的信号,复数的模和幅角代表了信号的幅度和相位,如图9所示。

8ca405f7785a6a73d270c4ec562b23f9.gif

图9 解析信号的投影

欧拉公式表明,复指数信号e^jx可以表示成一个实数信号和一个虚数信号的和的形式,看着和解析信号是多么的相似啊!

欧拉公式实际上是一种特殊的,或者说,最简单的Hilbert变换。

fc6e121ceb10ce4b5636c8fddd21aa2a.png

@通信M班长

相关文章:

  • 最大正整数和最小负整数的代码_【国际数学竞赛】一个正整数等于最小的四个正因子平方和...
  • 如何实现数据监控_如何在数据中心中安装环境监控系统
  • ps制作20种特效文字_如何用PS制作人体特效?
  • 华为手机相册怎么镜像翻转_怎么制作照片视频?利用手机相册快速制作卡点视频...
  • 项目管理软件对比分析_做项目管理的痛,你不懂!
  • win10打开程序响应很慢_Win10按alt+tab切换很慢?联想电脑Alt+Tab切换窗口很卡解决方法...
  • python 进入E盘_零基础学Python—基础班04期
  • css 毛玻璃_CSS之函数的小技巧
  • html js获取session_如何用 JS 一次获取 HTML 表单的所有字段 ?
  • springboot默认数据源如何设置连接数_HTML如何设置复选框、单选框以及默认选项?...
  • pta求阶乘序列前n项和_python在时间序列分析中的简介
  • python链表实现多项式_Python数据结构——链表的实现
  • python的整数类型_Python数字类型Number
  • python变量名有哪些_python变量名命名规则
  • unity3d 求两个点长度_初二数学经典的做对称求最小值问题,也是中考中的常客...
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Apache的基本使用
  • Gradle 5.0 正式版发布
  • Mocha测试初探
  • MySQL几个简单SQL的优化
  • Redis中的lru算法实现
  • Vue2.0 实现互斥
  • 免费小说阅读小程序
  • 前端面试题总结
  • 前端之React实战:创建跨平台的项目架构
  • 前嗅ForeSpider采集配置界面介绍
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 思考 CSS 架构
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 提醒我喝水chrome插件开发指南
  • 我看到的前端
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • 阿里云移动端播放器高级功能介绍
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (12)目标检测_SSD基于pytorch搭建代码
  • (6)STL算法之转换
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)C#调用WebService 基础
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Sublime Text3配置Lua运行环境
  • *p++,*(p++),*++p,(*p)++区别?
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net core 6 redis操作类
  • .NET Reactor简单使用教程
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET业务框架的构建
  • .project文件
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @ModelAttribute使用详解
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [04]Web前端进阶—JS伪数组