说明

本学期的通信原理课程设计,要做一个OFDM调制解调的仿真,现在基本上理解了OFDM调制的过程,并且参照实验平台上的代码,自己仿写了个简化突出的代码,因此,梳理一下思路,写个小小总结,方便后面写课设报告之用,也希望能方便其他OFDM初学者。

本文简要介绍OFDM原理和优势,并利用数学公示推导,着重讨论IFFT相关内容,参考《移动通信 第五版》(其实也有很多地方没看懂或者觉得有错,这里写的仅是我的理解内容)。

本人也是OFDM初学者,可能有些地方理解不到位或者错误,希望各位老哥在线交流~

1.OFDM简介

OFDM全称正交频分复用,是一种高级的频分复用的调制技术。相对于传统FDM,它的频谱利用率更高,抗干扰能力更强。其基本思路是:

将串行数据并行,将并行的数据分别调制到各自的载波上去,且这些载波是正交的,然后合成各个已调的载波信号成为已调信号;在接收端,收到已调信号后,分别乘以对应的载波信号后积分,由于正交性,只有与自己相乘后积分才不为零,可以分别解调出对应的数据。

两大明显优势:

  1. 正交载波 ,由于载波正交,因此即便是载波间有重叠,也能还原出各载波信号。

图1 FDM&OFDM

  1. 串行数据并行化,串行数据传输过程中,一个比特数据错误,可能导致很大的前后误差,而并行数据传输就不一样了。

图2 OFDM原理框图

2.OFDM原理

串行原始数据,单个码元长度tst_{s}ts​,将串行数据分组,一组N(载波数)个,Ts=N∗tsT_{s}=N*t_{s}Ts​=N∗ts​,N个子载波:fn=f0+n∗Δf,n=0,1,2,…N−1f_{n}=f_{0}+n*\Delta f,n=0,1,2,…N-1fn​=f0​+n∗Δf,n=0,1,2,…N−1;
载波间隔取 Δf=1/Ts=1/(N∗ts)\Delta f = 1/T_{s}=1/(N*t_{s})Δf=1/Ts​=1/(N∗ts​); d(n)d(n)d(n)即并行的一组的N个数据,用以给N个载波进行调制;

由上图OFDM原理框图可知:

OFDM实际发射的信号:

D(t)=∑n=0N−1d(n)∗cos(2πfnt)(1.1)D(t)=\sum_{n=0}^{N-1}d(n)*cos(2\pi f_{n}t)\tag{1.1}D(t)=n=0∑N−1​d(n)∗cos(2πfn​t)(1.1)

在接收端也是接收信号D(t)D(t)D(t),乘以对应的频率后积分有:

d′(k)=∫0TsD(t)∗2cos(wkt)dt=∫0Ts∑n=0N−1d(n)2cos(wkt)2dt=d(k)d^{'}(k)=\int_{0}^{T_{s}}D(t)*2cos(w_{k}t)dt=\int_{0}^{T_{s}}\sum_{n=0}^{N-1}d(n)2cos(w_{k}t)^{2}dt=d(k) d′(k)=∫0Ts​​D(t)∗2cos(wk​t)dt=∫0Ts​​n=0∑N−1​d(n)2cos(wk​t)2dt=d(k)
补充:正交性:如果f(t)与g(t)正交f(t)与g(t)正交f(t)与g(t)正交
∫f(t)∗g(t)dt=0\int f(t)*g(t) dt=0 ∫f(t)∗g(t)dt=0

因此通过正交性能够恢复出原始信号。
实现OFDM一般在产生叠加的已调信号的时候有两种方法:
(1)叠加法 (2)IDFT 法。

2.1叠加法

很简单,就是单纯的将各个载波调制的信号加起来,也就是式子(1-1)所表达内容,这里就不赘述了。

2.2IDFT

一般为了更加高效的调制,通常会进行一些数字调制、多进制调制,如QPSK、16QAM等,通过幅度和相位进行保存数据信息来进行调制。

D(t)=∑n=0N−1A(n)∗cos(2πfnt+ϕn)=∑n=0N−1A(n)cos(ϕn)cos(2πfnt)−A(n)sin(ϕn)sin(2πfnt)=∑n=0N−1a(n)cos(2πfnt)−b(n)sin(2πfnt)D(t)=\sum_{n=0}^{N-1}A(n)*cos(2\pi f_{n}t+\phi_{n}) \\ =\sum_{n=0}^{N-1}A(n)cos(\phi_{n})cos(2\pi f_{n}t)-A(n)sin(\phi_{n})sin(2\pi f_{n}t)\\ =\sum_{n=0}^{N-1}a(n)cos(2\pi f_{n}t)-b(n)sin(2\pi f_{n}t) D(t)=n=0∑N−1​A(n)∗cos(2πfn​t+ϕn​)=n=0∑N−1​A(n)cos(ϕn​)cos(2πfn​t)−A(n)sin(ϕn​)sin(2πfn​t)=n=0∑N−1​a(n)cos(2πfn​t)−b(n)sin(2πfn​t)
写成复数形式如下:
D(t)=Re[∑n=0N−1(a(n)+jb(n))∗ej2πfnt](1.2)D(t)=Re[ \sum_{n=0}^{N-1}(a(n)+jb(n))*e^{j2\pi f_{n}t}] \tag{1.2} D(t)=Re[n=0∑N−1​(a(n)+jb(n))∗ej2πfn​t](1.2)
根据数字调制里面的知识,原始序列d(n)d(n)d(n)经过映射成为a(n)+jb(n)a(n)+jb(n)a(n)+jb(n),也就是星座图里面的实轴、虚轴值。

图3 a,b分别对应I,Q轴的值

由于d(n)映射成a(n)+jb(n)d(n)映射成a(n)+jb(n)d(n)映射成a(n)+jb(n),故而式子(1.2)可写成下面形式:
D(t)=Re[∑n=0N−1d(n)∗ej2πfnt](1.3)D(t)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{n}t}] \tag{1.3} D(t)=Re[n=0∑N−1​d(n)∗ej2πfn​t](1.3)
将fn=f0+Δff_{n}=f_{0}+\Delta ffn​=f0​+Δf带入上式有:
D(t)=Re[∑n=0N−1d(n)∗ej2πf0t∗ej2πnΔft]D(t)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}t}*e^{j2\pi n\Delta ft}]\\ D(t)=Re[n=0∑N−1​d(n)∗ej2πf0​t∗ej2πnΔft]
如果对D(t)D(t)D(t)以采样频率FsFsFs进行采样得到离散序列:
D(m)=Re[∑n=0N−1d(n)∗ej2πf0m/Fs∗ej2πnΔfm/Fs](1.4)D(m)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}m/Fs}*e^{j2\pi n\Delta fm/Fs}] \tag{1.4} D(m)=Re[n=0∑N−1​d(n)∗ej2πf0​m/Fs∗ej2πnΔfm/Fs](1.4)
若Δf/Fs=1/N,即Fs=NΔf=N∗1/Ts=N∗1/(N∗ts)=1/ts\Delta f/Fs=1/N ,\\即Fs =N\Delta f=N*1/T_{s}=N*1/(N*t_{s})=1/t_{s}Δf/Fs=1/N,即Fs=NΔf=N∗1/Ts​=N∗1/(N∗ts​)=1/ts​,则(1.4)可写为:
D(m)=Re[∑n=0N−1d(n)∗ej2πf0m/Fs∗ej2πnm/N]=Re[∑n=0N−1IDFT(d(n))∗ej2πf0m/Fs]=Re[∑n=0N−1IDFT(d(n))](若f0=0)(1.5)D(m)=Re[ \sum_{n=0}^{N-1}d(n)*e^{j2\pi f_{0}m/Fs}*e^{j2\pi nm/N}] \tag{1.5}\\=Re[ \sum_{n=0}^{N-1}IDFT(d(n))*e^{j2 \pi f_{0}m/Fs}]\\=Re[ \sum_{n=0}^{N-1}IDFT(d(n))] (若f_{0}=0) D(m)=Re[n=0∑N−1​d(n)∗ej2πf0​m/Fs∗ej2πnm/N]=Re[n=0∑N−1​IDFT(d(n))∗ej2πf0​m/Fs]=Re[n=0∑N−1​IDFT(d(n))](若f0​=0)(1.5)

IDFT定义为: x(n)=∑k=0N−1X(k)ej2πnk/N=IDFT(X(k))x(n)=\sum_{k=0}^{N-1}X(k)e^{j2\pi nk/N}=IDFT(X(k))x(n)=∑k=0N−1​X(k)ej2πnk/N=IDFT(X(k))

因此,可用并行序列的数字调制映射的IDFT得到叠加后的时域信号的采样的离散信号。当采样频率足够高,满足奈奎斯特速率,即可无失真,不损失频率分量,可见IDFT的可行高效。

3.OFDM仿真结果

进行MATLAB仿真,可得如下结果:

图4 四个载波时域图

图5 载波频谱(16QAM)

图6 两种方法的合成信号对比

4.Problem

1.为什么IDFT法得到的合成波形和叠加法的波形差别比较大?
答:IDFT得到的波形是连续信号的采样,可用通过对叠加法以同样频率采样得到信号在与IDFT的信号比较,不出意外,应该是相同的。

我也是刚刚写博客才想到这个问题的可能答案,还没来得及写代码验证,稍后有时间我会写代码看看。

2.前面分析IDFT里面采样频率Fs=NΔfFs=N\Delta fFs=NΔf,而合成信号最大频率是fmax=f0+NΔff_{max}=f_{0}+N\Delta ffmax​=f0​+NΔf,并不满足Fs>2fmaxF_{s}>2f_{max}Fs​>2fmax​,何解?

学习笔记——OFDM仿真课设相关推荐

  1. HTML4基本编译原理,Stanford公开课《编译原理》学习笔记(1~4课)

    课程里涉及到的内容讲的还是很清楚的,但个别地方有点脱节,任何看不懂卡住的地方,请自行查阅经典著作<Compilers--priciples, Techniques and Tools>(也 ...

  2. 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十一课:Cocos2D-X网格特效1-3

    [麦可网]Cocos2d-X跨平台游戏开发---学习笔记 第二十一课:Cocos2D-X网格特效1-3 ================================================ ...

  3. Qt 5.9.5学习笔记第三节课

    Qt 5.9.5学习笔记第三节课 学习目标 1.Qt资源图标添加和使用 1.1添加资源文件 1.2qmake让资源文件生效 1.3修改widget应用程序窗口ICO 1.3.1第一种方法 1.3.2 ...

  4. VGGNet学习笔记及仿真

    VGGNet学习笔记及仿真 文章目录 VGGNet学习笔记及仿真 引言 VGGNet论文笔记 VGGNet架构 参数详解 创新点 训练细节 结果 代码实现 Visualize a few images ...

  5. 大数据学习笔记第1课 Hadoop基础理论与集群搭建

    大数据学习笔记第1课 Hadoop基础理论与集群搭建 一.环境准备 二.下载JDK 三.安装JDK 四.下载hadoop 五.安装hadoop集群 六.打通3台服务器的免密登录 七.hadoop集群配 ...

  6. 深度学习笔记第一门课第一周:深度学习引言

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  7. 珍大户《认知世界的经济学》学习笔记 --第19课 时间补偿 第20课 利率 国债 MLF SLF OMO 利率

    珍大户<认知世界的经济学>学习笔记 – 第五章 第19课 时间补偿 文章目录 珍大户<认知世界的经济学>学习笔记 -- 第五章 第19课 时间补偿 把钱借给国家 通货膨胀程度 ...

  8. 【金字塔Python量化学习笔记】01课:利用Python导出价格数据

    作为一个交易员,一直都想学Python量化,无奈文科生一个,根本不懂编程,看了vn.py的教程头大了,买了课但一直都学不下去.最近看了看金字塔的Python量化系统,感觉还可以,代码编写没那么难,我P ...

  9. kitti之ros可视化_学习笔记--第1课:资料准备及环境介绍

    概要:本系列笔记,记录的是使用kitti数据集在ros可视化操作,并案例方式进行介绍.在开始本系列课程学习之前,交代清楚一些所需要的材料. 0.环境及工具 ubuntu16.04,ros-kineti ...

最新文章

  1. NeurIPS 2019 少样本学习研究亮点全解析
  2. 关于cocos2d的下载和安装
  3. A Router may have only one child element
  4. maven 多模块项目关系
  5. 使用Java程序通过http post访问ABAP Netweaver服务器
  6. php图片旋转显示不出来的,php – 我服务的图像不正确,它们都显示为旋转90度
  7. leetcode 【 Sort List 】 python 实现
  8. k8s从入门到放弃--使用kubeadm快速安装kubernetes
  9. JavaScript判断office的版本
  10. 使用python构建基于hadoop的mapreduce日志分析平台
  11. poedit 图文教程 转载
  12. b站视频怎么引流?b站做什么视频有流量?b站流量引流技巧
  13. phpstorm如何找回删除的文件
  14. ABAP ALV上的红绿灯状态
  15. Markov blanket 马尔科夫毯子
  16. 代码中的软件工程:正则表达式十步通关
  17. 第3章 Linux内核调试手段之内核打印
  18. Java连接sqlserver数据库,并进行增删改查操作
  19. jinja2中if和for的使用
  20. 420个生活小窍门,很有用的哦!

热门文章

  1. 为什么今天不写技术文章
  2. oc引导win方法_Win10安装Mac os双系统引导过程总结2020
  3. 美国计算机加音乐专业,史上最全的美国大学音乐学院专业解析
  4. iOS开发-类似微信录音上滑取消功能
  5. 使用vivado调用自定义IP的两种方法
  6. 腾讯会议:资源加载失败请重新安装程序解决方案
  7. 前端笔记—从入门到坟墓[网站基础与优化][12.1]
  8. python实验中遇到的问题及解决方法_Python中遇到的小问题及解决方法汇总
  9. Idea中文件图标发生变化,导致文件显示出现异常
  10. css3边框圆角、背景