matlab实现OFDM

目录

一、作品简介

1.1 作品简介

1.2 硬件需求

1.3 系统框图

二、应用场景及作品特色

2.1 应用场景介绍

2.2 作品特色及创新

三、设计思路

3.1 单载波传输与多载波传输

3.1.1  单载波传输

3.1.2  多载波传输

3.2 OFDM基本原理

3.2.1  OFDM的调制与解调

(1)正交性

(2)OFDM调制与解调

3.2.2  OFDM保护间隔

3.2.3  OFDM保护频带

3.2.4  编码OFDM

3.3 OFDM同步技术

3.3.1  STO的影响

3.3.2  CFO的影响

3.3.3  STO估计技术

3.3.4  CFO估计技术

3.4 信道估计与均衡

3.4.1 导频选择

3.4.2 信道估计

LS信道估计

MMSE信道估计

基于DFT的信道估计技术

四、技术实现

4.1 发送端

4.1.1 参数设置

4.1.2 分帧

4.1.3 训练序列

4.1.4 卷积编码与交织

4.1.5 QPSK映射

4.1.6 子载波映射(导频插入)

4.1.7 IFFT

4.1.8 加CP

4.1.9 加前导码

4.2 接收端

4.2.1 包检测(粗同步)

 4.2.2 频偏估计与补偿

4.2.3 精同步

4.2.4 串/并转换,去CP,FFT

4.2.5 信道估计与均衡

4.2.6 纠正相偏 

4.2.7 QPSK解映射,解交织,信道译码,判决

4.2.8 帧重组

五、成果展示

5.1 系统图片展示

5.2 传输成果展示

六、测试及性能分析

七、参考资料

相关代码下载:https://download.csdn.net/download/apple_53311083/88142870

一、作品简介

1.1 作品简介

作品名称:基于Pluto SDR的OFDM点对点通信系统

本系统实现了一个基于Pluto SDR的OFDM系统传输系统,理论上能够传输任意长度的数字信号。本系统主要支持图像数据的传输,但不论具体的文件形式,只要能够通过matlab转换成二进制数字信号,都可以通过本系统进行传输。

1.2 硬件需求

使用到的设备如下:

1、硬件设备:PC机、Pluto设备两个

2、软件环境:matlab 2021b

1.3 系统框图

发射端:

接收端:

二、应用场景及作品特色

2.1 应用场景介绍

在要求高速传输的场景下,单载波传输的方式对于均衡器具有极高的要求,因此单载波调制的方式具有很大的局限性,我们通常采用多载波传输的方式来克服这一种影响。

OFDM是多载波传输的一种形式,采用相互正交的子载波进行信号的承载。相比FMT方式来说具有带宽效率高,硬件电路简单的优点。

OFDM被广泛用于无线通信中,尤其是在Wi-Fi4G LTE等标准中。在这些应用中,OFDM可以将数据分成多个子载波,并将它们在不同的时隙中传输,从而减少了多径效应对信号的影响,提高了信号的可靠性和抗干扰性。

本系统部分参考了802.11a的协议规范,设定主要应用场景为相对封闭的室内空间,由于硬件设备功率放大的限制,传输距离相对较近。

2.2 作品特色及创新

       本系统实现了一个完整的OFDM传输系统,允许任意长度的二进制数字信号进行传输。采用了(2,1,7)卷积码进行编码,并通过交织降低突发错误的影响。基带映射采用了QPSK形式,通过插入梳妆导频来在接收端完成相偏补偿.前导码采用的是802.11a中的前导码形式,通过短序列来完成粗同步并进行频偏估计与补偿,通过长训练序列来完成精同步与信道估计,在信道估计模块支持LS估计,LMMSE估计和基于DFT的信道估计共3种方式进行选择(默认选择基于DFT的LMMSE信道估计方式)。

三、设计思路

3.1 单载波传输与多载波传输

3.1.1  单载波传输

由于信道的带宽是有限的,所以信号的持续时间就不可能是有限的,如果之前的信号在码元的抽样判决时间上不能做到正好为0,就会产生符号间干扰(ISI),会降低通信的质量。

随着数据传输速率的增大,符号周期越小,这样造成的ISI就越大,这意味着在单载波传输系统中,除非基带传输特性能够满足奈奎斯特第一准则,否则当数据速率大时,ISI影响明显。

为了支持每秒传输Rs个符号的速率,所需要的最小传输带宽为奈奎斯特带宽,即Rs/2(HZ)。这意味着在单载波的传输系统中,更高的传输速率意味着需要更大的传输带宽支持。当信号的带宽大于无线信道的相干带宽时,链路会受到多径衰落的影响,从而产生ISI。

总体来说,我们可以通过的设计均衡器来处理ISI问题,但是ISI随着数据速率的增大而增大,均衡器的设计会变得非常复杂,难以实现。所以单载波传输在进行高数据速率时有很大的局限性。

3.1.2  多载波传输

为了克服宽带信道频率选择性对单载波传输的影响,可以采用多载波实现高数据速率传输。主要思路是把待传输的数据分布到各个子信道上,把宽带信号分解成多个窄带信号并行传输,并在接收端进行组合,如图3.1(a)所示。

如果每个子信道都是带宽有限的,那么多载波传输就变成了滤波多音频(FMT)传输,如图3.1(b)所示。

图3.1 多载波传输系统的结构与频谱特征

如果各个子载波之间具有正交性,那么以它们为子载波也可以互不干扰的承载各自的信息。这样的方式不仅不再需要为每个子载波信道使用独立的滤波器,而且由于子载波的频谱相互重叠(如图3.2),系统带来更大的带宽效率,这种方式被称之为正交频分复用(OFDM)。

图3.2 OFDM信号的频谱

OFDM传输方案是多信道系统的其中一种形式,采用相互正交的子载波进行信号的承载。在实际的应用中,DFT和IDFT对于这些正交信号的实现非常有用,而通过FFT和IFFT可以有效的实现DFT和IDFT。具体的实现框图如图3.3。

图3.3 基于IDFT/DFT的OFDM传输方案

设置所有的子载波的持续时间T有限时,可以认为OFDM信号的频谱是经过频移的sinc函数在频域上的叠加,其中相邻两个sinc函数的间隔为1/T。

因为每个符号上的每个子载波都是时间有限的(不是带宽有限的),所以OFDM信号会产生带外辐射,会引起邻道干扰(ACI),因此需要在外侧设置一个保护带宽,被称为虚拟载波(VC)。为了消除OFDM的符号间ISI,OFDM还会在时域插入保护间隔,称为循环前缀(CP)。

3.2 OFDM基本原理

3.2.1  OFDM的调制与解调

(1)正交性

(2)OFDM调制与解调

3.2.2  OFDM保护间隔

      信号经历多径传输后,容易因此而产生符号间干扰(ISI),如图3.4所示

图3.4 OFDM系统中的ISI现象

可以看到多径传输带来的ISI影响不能忽视,甚至在一些情况下还会破坏子载波之间的正交性,引入载波间干扰(ICI)。为了解决这个问题,需要引入保护间隔。

保护间隔一般有2种不同的插入方式,一种方法是补零(ZP),即在保护间隔填充零。另一种是利用循环前缀(CP)或循环后缀(CS),实现OFDM符号的循环扩展。图 3.5从时域和频域共同描述了OFDM符号。

图3.5 OFDM符号的时域/频域描述

图3.6 保护间隔小于多径信道最大时延的ISI影响

可以看到这种情况下,在FFT window2中依然存在来自前一个符号的干扰。

当保护间隔大于或等于多径信道的最大时延,如图3.7所示

图3.7 保护间隔大于多径信道最大时延的ISI影响

     

可以看到现在的FFT window2窗中已经不存在来自前一个符号的干扰,但是我们获得的最终结果“受到了GI的影响”。

为了使得这样的影响完全消失,保护间隔我们采用了循环前缀(CP)的方式,如图3.8

图3.8 采用CP后的ISI影响

3.2.3  OFDM保护频带

可以把有效时间为Tsub的OFDM符号中的每一个子载波看做一个单音频信号与长度为Tsub的矩形窗相乘,其中矩形窗的频谱是一个sinc函数。因此,OFDM信号的功率谱是许多频移的sinc函数的总和,具有比较大的带外功率,会产生邻道干扰(ACI)。

为了减小带外功率,可以采用BPF,但是为了设计的简化,可以采用时域成形函数,如升余弦窗。另一种抑制ACI的方式是使用虚拟载波(VC),其中VC指的是在传输带宽的两端不使用的子载波。但是由于VC不传输数据,会导致频谱效率下降。

3.2.4  编码OFDM

在OFDM系统中,一些连续的子载波可能经历深度衰落,为了解决这个问题,可以使用前向纠错的方式(FEC)。常见的FEC编码有RS码,卷积码,Turbo码等。只要随机差错在FEC编码的纠错能力范围内,FEC编码就可以纠正。

但是对于突发式的符号差错,FEC不起作用,在实际中,通常用交织把突发差错转换为随机差错。

3.3 OFDM同步技术

3.3.1  STO的影响

3.3.2  CFO的影响

3.3.3  STO估计技术

在OFDM系统中STO不仅会引起相位失真,严重时会引起ISI。因此我们需要进行STO估计,来准确定位OFDM符号的起点。总体来说可以从时域和频域角度进行估计。

从时域进行STO估计可以通过CP或训练序列来完成,主要的原理就是通过相关性的判断进行同步,基于CP的方式容易受到多径信道的干扰,基于训练序列的方式会造成额外的开销。判读相关性也具有不同的评价标准,常见的有最小差值,最大化对数似然,差值平方等,需要根据不同的应用场景进行选择。

从频域进行STO估计可以考虑接收信号会因STO而产生相位旋转,相位旋转与子载波的频率成比例,所以可以用频域接收信号中相邻子载波的相位差来估计STO。

3.3.4  CFO估计技术

和STO一样,可以从时域和频域估计CFO。

考虑到从频域推导出的频率同步估计与从时域推导出的频率同步估计在形式非常相似。但在实际的系统中,频率同步估计大多采用时域算法,频域算法的主要缺点是两个重复符号的 DFT 都必须计算。与时域相比,DFT 计算将意味着额外的计算量,而这却毫无益处,因此对于接收机来讲时域方法是更可取的,因为它在前导时间内完成所必须的同步功能,通常只需非常短的时间。

所以我们考虑从时序进行CFO 的估计,同样可以CP或训练序列进行估计。考虑到基于CP的估计技术具有很大的局限性(估计范围小于0.5),我们采用训练序列进行估计。可以通过缩小用于相关性计算所需的采样块之间的距离,来增大CFO的估计范围。将训练序列在更短的时间内进行重复可以实现这一目的。令D为OFDM符号长度与重复样式长度之比,它是一个整数。

3.4 信道估计与均衡

信道对于信息传输带来的影响通常是不可忽视的,在实际的系统中我们通常需要进行信道的估计与均衡来补偿这种影响。

3.4.1 导频选择

最常见的方式是通过插入导频的方法来进行信道估计,根据导频的排列方式不同,导频结构可以分为三种:块状类型、梳状类型和格状类型。本次实验主要采用的是梳状类型,这种类型中,在每个OFDM符号的子载波上周期性地放置导频信号,如图3.9所示。梳状导频的导频排列适用于快衰落信道,而不是频率选择性信道。

图3.9 梳妆类型的导频序列

3.4.2 信道估计

常见的OFDM信道估计方式有LS信道估计,MMSE信道估计,还可以利用DFT信道估计技术来提高LS和MMSE的信道估计性能。

LS信道估计

该算法计算简单、复杂度低,不需要信道的任何先验统计特性。假设发射信号是X(i),信道传输函数是H(i),接收端接收到的信号是Y(i),那么就有这个等式Y(i)=X(i)H(i)。信道估计中的LS算法是最基本且常用的算法,本质上就是忽略噪声,直接用接受信号除以发送信号,得到信道特性。频域接收信号导频位置Y,本地已知导频X。两者简单相除,就可以得到导频位置的信道估计值H(i)。其公式表示为H(i)=Y(i)/X(i) 。

在硬件实现时,除了在均衡时可以考虑用除法器,其他位置(包括此处的LS算法)都不要使用除法器,除法器占用的资源太多,将除法表示为乘法即可避免,而大部分的乘法可以用移位相加来实现,这样可以大大降低复杂度。

LS信道估计的均方误差(MSE):

可以看到MSE与信噪比成反比,这意味着LS估计增强了噪声。

MMSE信道估计

基于DFT的信道估计技术

 

图6.6 基于DFT的信道估计

采用这个方式,可以提高信道估计的性能,所以实际中通常会使用DFT信道估计技术来提高LS或MMSE信道估计的性能。

四、技术实现

4.1 发送端

4.1.1 参数设置

参数

数值

采样频率

600KHZ

FFT长度

64

保护间隔长度(CP)

16

一个OFDM符号的长度

80

一个数据帧中的OFDM符号的个数

80

用于传输数据的子载波个数

48

导频子载波个数

4

使用的子载波总数

52

4.1.2 分帧

根据上述使用的参数设置,一个数据帧中具有80个OFDM符号,每个OFDM符号中有48个子载波用于数据传输,因此一个数据帧中可以用于数据传输的总位数是48*80=3840.这对于一个通信系统来说是不够的,理想状态是可以进行任意长度数据的传输。

因此我们需要对于输入的数据进行分帧处理,对于待传输的数据,对其除以3840上取整,计算出需要传输的总帧数,对于最后一帧数据不足的位数进行补零。然后一帧一帧的传输数据。

以传输图片形式为例,matlab实现如下:

4.1.3 训练序列

本次OFDM系统的训练序列部分完全采用802.11a中的训练序列,如图4.1所示:其中 t1~t10 表示短训练符号,T1 和 T2表示长训练符号,总的序列时间为 16 µs。

图4.1 基于802.11a的OFDM帧结构

OFDM 的短训练符号由 12 个子载波组成,这些子载波由序列S的组成元素进行调制:

S-26,26= (13/ 6) × {0,0,1+j,0,0,0,-1-j,0,0,0,1+j,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,0,1+j,0,0,0,1+j,0,0}

上式中乘以系数13/ 6是为了使得到的OFDM符号的平均功率归一化。OFDM符号利用了52个子载波中的12个。

对短训练序列进行IFFT得到的一个周期如下:

短训练序列的单个周期被周期性扩展为161个采样(约 8ms),然后与以下的窗函数相乘:

得到的最终的短训练序列时域表示如下:

OFDM 的长训练符号由 53 个子载波组成(其中包含了一个直流零值),这些子载波由序列L的组成元素进行调制:

L-26,26={1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,0,1,-1,-1,1,1,-1,1,-1,1,-1,-1,-1,-1,-1,1,1,-1,-1,1,-1,1,-1,1,1,1,1}

      其中,长训练符号前还加了保护间隔(时域长度32),防止长、短序列互扰,从而时域总长度为160 。

对于长序列的IFFT结果如下:

最后,长短序列组合形成前导码(在重合部分各自乘上0.5相加,在首尾各自乘上0.5) 。

Matlab实现如下:

4.1.4 卷积编码与交织

本实验采用的是802.11a中的前向纠错码——(2,1,7)卷积码来对DATA部分进行卷积编码,以提高传输可靠性。其中,卷积编码的码率设为1/2,约束长度7,其上下两路的生成多项式(均用八进制)表示为:

对应的卷积编码器结构如图4.2:

图4.2卷积编码器

对于卷积码的译码,本实验采用维特比译码。它属于概率解码,基本思想是最大似然算法,即把接收到的序列与所有可能的发送序列进行比较,选择一种距离最小的序列作为发送序列。本实验的维特比译码采用硬判决和汉明距离。

4.1.5 QPSK映射

本实验采用QPSK调制的方式,采用格雷码并进行功率平均,调制后的星座图:

Matlab实现如下:

4.1.6 子载波映射(导频插入)

1、子载波映射标号表:

Data Subc Patt:[1:5 7:19 21:26 27:32 34:46 48:52]

Pilot Subc Patt:[6 20 33 47]

2、载波位置表

Used Subc Idx:[7:32 34:59]

Data Subc Idx :[7:11 13:25 27:32 34:39 41:53 55:59]

Pilot Subc Idx : [12 26 40 54]

如图4.3所示,子载波标号为1~26的符号映射到IFFT的1~26作为输入,将-26~-1的符号映射到IFFT的38~63作为输入,其余位置无输入(设为0)。其中,数据子载波标号分别为1~5,7~19,21~32,34~46,48~52,导频子载波标号为6,20,33,47。

图4.3 映射后的IFFT输入输出

matlab实现如下:

4.1.7 IFFT

OFDM系统中,在发射端进入ifft之前,需要将数据进行前半部分与后半部分进行位置对调,目的是让零频处在信号的中央。对调这个操作可以通过MATLAB自带的fftshift函数来完成。

matlab实现如下:

4.1.8 加CP

在时域内把OFDM符号的后面部分复制到该符号的开始部分,组成循环前缀,可以有效的对抗多径时延引起的ISI和ICI问题。

工程上常取OFDM符号长度为信道CP 长度的5~6倍 (2幂次方)本实验的CP长度为16,加上CP后OFDM符号长度为80。

Matlab实现如下:

4.1.9 加前导码

将数据变成一维,在前面加上长短序列构成的前导码构成完整的发射帧,送入发送设备进行发送。

4.2 接收端

4.2.1 包检测(粗同步)

设置一个门限阈值threshold = 1,然后对信号进行自相关性计算:

定义:

Cn: 相邻前后两块做一个相关   

Pn: 求后一块功率(LA:auto-correlation length)

mn: 二者相除 

win:$L_{TB}$

则可以进行如下计算:

将最终得到的结果与threshold做对比,小于门限则说明没有收到数据包,大于则说明收到数据包,选择第一次出现大于门限的那个位置作为初始位置。

Matlab实现:

 4.2.2 频偏估计与补偿

根据上述的方式,在原信号上乘一个反方向的频偏,进行频偏补偿。 

Matlab实现:

4.2.3 精同步

在粗同步的基础上,将信号与长训练序列进行相关运算,找到相关性最大的位置,就是精时间同步的位置。

Matlab实现:

4.2.4 串/并转换,去CP,FFT

去掉前导码,去掉CP,完成数据与导频的分离。

matlab代码实现:

4.2.5 信道估计与均衡

本次实验采用了LS估计,MMSE估计和基于DFT的信道估计3中方式,算法原理在实验原理部分已经有体现。

信道均衡可以使用接收到的数据与信道估计得到的共轭相乘来完成。

matlab实现:

信道估计:

信道均衡:

4.2.6 纠正相偏 

Matlab实现:

4.2.7 QPSK解映射,解交织,信道译码,判决

完成解映射,解交织,信道译码采用维特比译码,硬判决方式,信号变回二进制数字信号。

4.2.8 帧重组

每一次传输都传输一帧的数据,最终完成帧重组恢复到原始数据。

Matlab实现:

五、成果展示

5.1 系统图片展示

5.2 传输成果展示

发送一帧的结果:

粗同步结果:

可以看到存在超过阈值的位置,设置第一个大于阈值的点为粗同步后的起始点

精同步结果:

可以看到存在一个相对的明显高点,设置这个位置为精同步的结果。系统可以很好的完成同步的要求,不会存在STO的影响。

信道估计与均衡前的星座图:

可以看到系统接收后存在明显的失真,相偏影响明显。

信道均衡并纠正频偏后的星座图:

可以看到系统的整体星座图表现有了明显的好转。

在本地仿真用matlab模拟多径信道,STO,CFO的影响等:

得到的接收端星座图如下:

左侧为接收端未处理的星座图结果,右侧为均衡和频偏并相偏纠正的结果。

可以看到我们使用pluto最终实现的结果与仿真得到的性能基本一致。

系统整体的误码率如下:

在经过多次测试后,可以基本认定单独发射一次时,误码率为0,因此可以接受这样的结果。

单次发送可以认为基本实现了无损传输,但是现实中的数据并不会只有一个帧,也不可能人为控制每一次帧的发送,因此需要完成任意数据传输的系统。对于一个图像数据来说,就能体现多帧的数据传输。图片传输的效果如下:

 左侧的图片为待传输的图像,右侧的图片为接收端。整体的数据位数大约为100000个信息位,传输帧数为80。误码率计算如下

   可以看到ber为53,误码率为53/93312=0.5‰

六、测试及性能分析

       通过整体的系统,很明显在传输大量的数据的时候不能做到完全无损的传输,因此有必要进行系统的性能分析。

分析方式:传输10000000个随机数,在接收端进行比较:

  测试得出结论:系统整体的误码率为5902/10000000=0.59‰

、参考资料

书本资源:

[1] 史治国,洪少华,陈抗生.基于XILINX FPGA的OFDM通信系统基带设计

[2] Yong Soo Cho , Jaekwon Kim , Won Young Yang , Chung G.Kang . MIMO-OFDM无线通信技术及MATLAB实现

网络资源:

[1] OFDM发射机设计中长短训练序列的生成

[2]《通信MATLAB仿真》合集 - 知乎

[3] OFDM的ISI和CP(循环前缀) - 知乎

[4] 无线通信基础2:深入理解OFDM(含Matlab代码)

[5] 【OFDM】基于 802.11a 的 OFDM 系统仿真实验 (Matlab 实现+原理+注释)

  • 7
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
常规的单载波调制技术在带宽有限的测井电缆上的低传输速率制约着成像测井技术的发展。在分析测井 电缆传输特性和 OFDM 技术原理的基础上 ,设计了一种基于 OFDM 技术的测井电缆高速数据传输系统 ,并介绍了 基于 OFDM 技术的测井电缆高速数据传输系统的参数设计和工作原理 ,给出了不同长度测井电缆上的测试结果。 电缆实测结果表明 ,在 7 000 m长的测井电缆上 ,基于OFDM 技术的测井电缆高速数据传输系统可获得900 kbit / s 以上的数据传输速率和低于 5E28 的误码率。当变压器的接入模式为 Mode2II时 ,系统最高的数据传输速率可达到 1. 1 Mbit/ s。 (To solve t he low data t ransmission rate problem in t he conventional single car rier mod2 ulation met hod for logging cable and enhance t he data t ransmission rate , a new data t ransmission system with high data t ransmission rate for logging cable is propo sed , which is based on t he Or2 t hogonal Frequency Division Multiplexing (OFDM) technology. The working principle of OFDM modem and t he procedure of data t ransmission system are al so presented and lot s of test s are car2 ried out on logging cables with different lengt hs. It is verified that t he data t ransmission rate can reach 900 kbit/s on 7 000 meter s logging cable wit h bit er ror rate (BER) lower t han 5E28 , and t he maximum data t ransmission rate is 1. 1 Mbit/s under Mode2II of t he t ransformer .)
OFDM系统的同步包括时间同步和频率同步两个方面。时间同步主要目的是将接收到的OFDM符号在时域上对齐,以便进行FFT变换;频率同步则是为了消除接收到的信号的频偏,以便进行相干解调。 下面是一个简单的OFDM系统同步的matlab仿真示例: 1. 生成OFDM信号 首先,我们需要生成一个OFDM信号,可以通过matlab中的comm.OFDMModulator对象来实现。在这个示例中,我们使用的是16QAM调制方式,OFDM子载波数为64,循环前缀长度为16。 ```matlab N = 64; % 子载波数 cp_len = 16; % 循环前缀长度 mod_order = 16; % 调制阶数 % 创建OFDM调制器 ofdm_mod = comm.OFDMModulator('FFTLength', N, ... 'CyclicPrefixLength', cp_len, ... 'NumSymbols', 1, ... 'NumTransmitAntennas', 1, ... 'NumReceiveAntennas', 1, ... 'PilotInputPort', false, ... 'InsertDCNull', false, ... 'Windowing', false, ... 'NumGuardBandCarriers', [0;0], ... 'GuardBandPattern', 'Zeros', ... 'PilotCarrierIndices', [], ... 'PilotInsertionMethod', 'None', ... 'DataInputType', 'column', ... 'NormalizationMethod', 'Average power', ... 'AveragePower', 1, ... 'ModulationOrder', mod_order, ... 'BitInput', true); % 生成随机的OFDM数据 data = randi([0, 1], N*log2(mod_order), 1); mod_data = qammod(data, mod_order, 'gray'); % 调制 ofdm_data = step(ofdm_mod, mod_data); ``` 2. 添加同步信道 为了模拟实际通信系统中的同步问题,我们需要在OFDM信号中添加一些随机的时延和频偏。 ```matlab % 生成随机的时延和频偏 tau = randi([0, cp_len-1]); f_delta = randn()*0.05; % 时域同步:添加循环前缀和时延 ofdm_data_cp = [ofdm_data(N-cp_len+1:end); ofdm_data]; ofdm_data_sync = [zeros(tau, 1); ofdm_data_cp]; % 频域同步:添加频偏 t = linspace(0, 1/N, N+cp_len)'; ofdm_data_sync = ofdm_data_sync .* exp(-1j*2*pi*f_delta*t); ``` 3. 接收端同步 接收端的同步包括时域同步和频域同步两个步骤。 时域同步: ```matlab % 计算自相关函数 r = conv(ofdm_data_sync, conj(flipud(ofdm_data_sync))); r = r(length(ofdm_data_sync)-cp_len+1:end); % 找到自相关函数的峰值 [val, loc] = max(abs(r)); tau_est = loc-1; ``` 频域同步: ```matlab % 提取OFDM符号 ofdm_data_rx = ofdm_data_sync(tau_est+1:tau_est+N+cp_len); % 计算FFT并找到最大值 fft_data = fft(ofdm_data_rx(cp_len+1:end)); [val, loc] = max(abs(fft_data)); f_delta_est = (loc-1-N/2) / N; % 校正时延和频偏 ofdm_data_corrected = ofdm_data_rx .* exp(-1j*2*pi*f_delta_est*t'); ofdm_data_corrected = ofdm_data_corrected(cp_len+1:end); ``` 完整的代码示例如下:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

apple_ttt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值