文档

comm.OFDMModulator

采用OFDM方法进行调制

描述

OFDMModulator对象使用正交频分调制方法进行调制。输出是调制信号的基带表示。

调制OFDM信号:

  1. 定义并设置OFDM调制器对象。看到建设

  2. 调用一步根据…的特性调制信号comm.OFDMModulator.的行为一步特定于工具箱中的每个对象。

请注意

从R2016b开始,而不是使用一步方法来执行由System对象™定义的操作,您可以调用带有参数的对象,就像调用函数一样。例如,Y = step(obj,x)Y = obj(x)执行等效操作。

建设

H = com . ofdmmodulator创建调制器系统对象,H,采用正交频分调制(OFDM)方法对输入信号进行调制。

H = com . ofdmmodulator (的名字价值创建一个OFDM调制器对象,H,每个指定的属性设置为指定的值。可以以任意顺序指定附加的名称-值对参数,如(Name1Value1、……).

H = com . ofdmmodulator (hDemod)创建一个OFDM调制器对象,H,其属性由相应的OFDM解调器对象确定,hDemod

属性

FFTLength

FFT的长度,NFFT,相当于调制过程中使用的子载波数量。FFTLength必须≥8。

指定子载波数。默认为64

NumGuardBandCarriers

分配给左右保护频带的保护频带子载波数。

将左右子载波的数量指定为0到(之间的非负整数地板上FFTLength/ 2)−1)当你指定左,NleftG,没错,NrightG,在2 × 1的列向量中独立的保护带。默认值为[6;5]

InsertDCNull

这是一个逻辑变量,该变量控制是否插入DC null。默认值为

直流子载波是频段的中心,其指标值为:

PilotInputPort

这是一个逻辑属性,该属性控制是否可以指定导频载波索引。如果真正的,您可以为导频传输指定单独的子载波;否则,将假定先导信息嵌入到输入数据中。默认值为

PilotCarrierIndices

如果comm.OFDMModulator.PilotInputPort属性设置为真正的,可以指定导频子载波的索引。可以将索引分配给每个符号的相同或不同子载波。类似地,在多个发射天线之间,导频载波指数也可能不同。根据索引分配所需的控制级别,属性的维度会有所不同。有效的先导指数落在范围内

N leftG + 1 N FFT / 2 N FFT / 2 + 2 N FFT N rightG

其中索引值不能超过子载波数。当每个符号和发射天线的导频指标相同时,该属性具有维数N飞行员-by-1, N飞行员是先导副载波的数量。当导频索引在符号之间变化时,属性的维度为N飞行员——- - - - - -N信谊,在那里N信谊是符号的数量。如果只有一个符号但有多个发射天线,则属性的尺寸为N飞行员-by-1-by -NT,在那里NT发射天线数。如果指标随符号和发射天线的数量而变化,则该属性的尺寸为N飞行员——- - - - - -N信谊——- - - - - -NT.当发射天线的数量大于一个时,每个符号的指标应在天线之间相互不同,以避免干扰。默认值为[12;26日;40;54)

CyclicPrefixLength

CyclicPrefixLength属性指定OFDM循环前缀的长度。如果指定一个标量,则前缀长度对于通过所有天线的所有符号都是相同的。如果你指定一个长度的行向量N信谊,前缀长度可以在符号之间变化,但在所有天线中保持相同的长度。默认值为16

窗口

这是一个逻辑属性,其状态启用或禁用窗口。加窗是在传输前将OFDM符号乘上一个升高的余弦窗口,以更快地降低带外子载波的功率的过程。这有助于减少光谱再生。默认值为

WindowLength

此属性指定凸起余弦窗口的长度comm.OFDMModulator.Windowing真正的.使用最大值不大于最小循环前缀长度的正整数。例如,在具有四个循环前缀长度为的符号的配置中[12 16 14 18],窗口长度不能超过12.默认值为1

NumSymbols

此属性指定符号的数量,N信谊NumSymbols必须是正整数。默认值为1

NumTransmitAntennnas

这个特性决定了天线的数量,NT,用于传输OFDM调制信号。该属性是一个正整数。默认值为1

方法

信息 提供OFDM方法的尺寸信息
重置 的重置状态OFDMModulator系统对象
showResourceMapping 显示由OFDM调制器创建的OFDM符号的子载波映射系统对象
一步 采用OFDM方法进行调制
通用于所有系统对象
释放

允许系统对象属性值更改

例子

全部展开

可以使用默认属性构建OFDM调制器系统对象™。一旦构造好,就可以修改这些属性。

构造一个OFDM调制器。

ofdmMod = com . ofdmmodulator;

显示调制器的属性。

disp (ofdmMod)
com . ofdmmodulator with properties: FFTLength: 64 NumGuardBandCarriers: [2x1 double] InsertDCNull: false PilotInputPort: false CyclicPrefixLength: 16 Windowing: false NumSymbols: 1 numtransmitantenings: 1

修改子载波数和符号数。

ofdmMod。FFTLength = 128; ofdmMod.NumSymbols = 2;

验证子载波数和符号数是否改变。

disp (ofdmMod)
com . ofdmmodulator with properties: FFTLength: 128 NumGuardBandCarriers: [2x1 double] InsertDCNull: false PilotInputPort: false CyclicPrefixLength: 16 Windowing: false NumSymbols: 2 numtransmitantenings: 1

showResourceMapping方法显示时频空间中数据、导频和零子载波的映射。应用showResourceMapping方法。

showResourceMapping (ofdmMod)

OFDM调制器系统对象™可以从现有的OFDM解调器系统对象构建。

构造一个OFDM解调器,ofdmDemod并为单个符号和两个发射天线指定导频指标。

注意:您可以设置PilotCarrierIndices属性,然后该属性将更改调制器对象中的发射天线数。解调器中的接收天线数与发射天线数无关。

ofdmDemod = com . ofdm解调器;ofdmDemod。PilotOutputPort = true;ofdmDemod。PilotCarrierIndices = cat(3,[12;26日;40;54),...[13;27个;41;55]);

使用解调器,ofdmDemod,构造OFDM调制器。

ofdmMod = com . ofdmmodulator (ofdmDemod);

显示调制器的属性,并验证它们与解调器的属性相匹配。

disp (ofdmMod)
com . ofdmmodulator with properties: FFTLength: 64 NumGuardBandCarriers: [2x1 double] InsertDCNull: false PilotInputPort: true PilotCarrierIndices: [4x1x2 double] CyclicPrefixLength: 16 Windowing: false NumSymbols: 1 numtransmitantenings: 2
disp (ofdmDemod)
com . ofdmmodulator with properties: FFTLength: 64 NumGuardBandCarriers: [2x1 double] RemoveDCCarrier: false PilotOutputPort: true PilotCarrierIndices: [4x1x2 double] CyclicPrefixLength: 16 NumSymbols: 1 numreceiveairports: 1

showResourceMapping方法显示每个发射天线的时频资源映射。

构造一个OFDM调制器。

mod = com . ofdmmodulator;

应用showResourceMapping方法。

showResourceMapping (mod)

插入一个空DC。

mod.InsertDCNull = true;

显示添加DC null后的资源映射。

showResourceMapping (mod)

OFDM调制器使您能够为导频信号指定子载波指标。可以为每个符号和发射天线指定索引。当有多个发射天线时,确保每个符号的导频指标在天线之间不相同。

构造一个OFDM调制器,它有两个符号,并插入一个直流null。

mod = com . ofdmmodulator (“FFTLength”, 128,“NumSymbols”,2,...“InsertDCNull”,真正的);

打开导频输入端口,以便指定导频索引。

mod.PilotInputPort = true;

为两个符号指定相同的导频索引。

mod.PilotCarrierIndices = [12;56;89;100);

在OFDM时频网格中可视化导频信号和零位的位置showResourceMapping方法。

showResourceMapping (mod)

将导频索引的第二列连接到PilotCarrierIndices属性为第二个符号指定不同的索引。

mod.PilotCarrierIndices = cat(2, mod.PilotCarrierIndices,...[17;61;94;105));

验证导频子载波索引在符号之间是否不同。

showResourceMapping (mod)

将发射天线的数量增加到两个。

mod. numtransmit天线= 2;

指定两个发射天线的导频指标。为多个天线提供索引,同时尽量减少天线之间的干扰PilotCarrierIndices属性作为3-D阵列,这样每个符号的指标在天线中是不同的。

mod.PilotCarrierIndices = cat(3,[20;50;70;110年),...[15;60;75;105));

显示两个发射天线的资源映射。灰色线表示自定义空值的插入。空值由对象创建,以最小化来自不同天线的导频符号之间的干扰。

showResourceMapping (mod)

为每个OFDM符号指定循环前缀的长度。

构造一个OFDM调制器,它有五个符号,四个左保护带子载波和三个右保护带子载波。为每个OFDM符号指定循环前缀长度。

mod = com . ofdmmodulator (“NumGuardBandCarriers”(4); 3),...“NumSymbols”5,...“CyclicPrefixLength”,[12 10 14 11 13]);

显示调制器的属性,并验证循环前缀长度在符号之间的变化。

disp (mod)
com . ofdmmodulator with properties: FFTLength: 64 NumGuardBandCarriers: [2x1 double] InsertDCNull: false PilotInputPort: false CyclicPrefixLength: [12 10 14 11 13] Windowing: false NumSymbols: 5 numtransmitantenings: 1

来确定OFDM调制器的数据尺寸信息方法。

用用户指定的导频指标构造一个OFDM调制器系统对象™,插入一个直流null,并指定两个发射天线。

hMod = com . ofdmmodulator (“NumGuardBandCarriers”(4); 3),...“PilotInputPort”,真的,...“PilotCarrierIndices”猫([12;26日;40;54),...[11;25;39;53]),...“InsertDCNull”,真的,...“NumTransmitAntennas”2);

使用信息方法查找调制器输入数据、导频输入数据和输出数据大小。

信息(hMod)
ans =带有字段的结构:DataInputSize: [48 1 2] PilotInputSize: [4 1 2] OutputSize: [80 2]

生成用于链路级模拟的OFDM调制符号。

构造一个OFDM调制器,其中插入一个直流空载波,七个保护带子载波和两个符号,每个符号具有不同的导频指标。

mod = com . ofdmmodulator (“NumGuardBandCarriers”(4); 3),...“PilotInputPort”,真的,...“PilotCarrierIndices”, (12 11;26日27日;40 39;54 55),...“NumSymbols”,2,...“InsertDCNull”,真正的);

确定输入数据、导频和输出数据尺寸。

modDim = info(mod);

为OFDM调制器生成随机数据符号。结构变量,modDim,确定数据符号的数量。

dataIn = complex(randn(modDim.DataInputSize),randn(modDim.DataInputSize));

创建一个具有正确尺寸的导频信号。

pilotIn = complex(rand(modDim.PilotInputSize),rand(modDim.PilotInputSize));

对数据和导频信号应用OFDM调制。

modData = step(mod,dataIn,pilotIn);

使用OFDM调制器对象创建相应的OFDM解调器。

demod = com . ofdm解调器(mod);

OFDM信号解调,输出数据信号和导频信号。

[dataOut, pilot] = step(demod,modData);

验证在一个紧公差范围内,输入数据和导频符号是否与输出数据和导频符号匹配。

isSame = (max(abs([dataIn(:) - datout (:);...pilotIn(:) - pilot (:))) < 1e-10)
isSame =逻辑1

算法

正交频分调制(OFDM)将高速传输的数据流分成N低速率流,每一种流的符号持续时间大于信道延迟扩展。这有助于减轻符号间干扰(ISI)。单个子流被发送过去N相互正交的平行子通道。通过使用快速傅里叶逆变换(IFFT), OFDM可以使用单个无线电进行传输。具体地说,OFDM调制器系统对象使用正交频分调制调制输入信号。输出是调制信号的基带表示:

v t k 0 N 1 X k e j 2 π k Δ f t 0 t T

, {Xk}是数据符号,N是子载波的数量,和T为OFDM符号时间。Δ的子载波间距f= 1 /T使它们在每个符号周期上正交。这表示为:

1 T 0 T e j 2 π Δ f t e j 2 π n Δ f t d t 1 T 0 T e j 2 π n Δ f t d t 0 n

数据符号,Xk,通常是复杂的,可以来自任何调制字母,例如QPSK, 16-QAM或64-QAM。

图中显示的是OFDM调制器。它由一组N复杂调制器,其中每个调制器对应一个OFDM子载波。

保护带和间隔

有三种类型的OFDM子载波:数据、导频和空。数据子载波用于传输数据,导频子载波用于信道估计。空子载波上没有传输,它提供了一个DC空,并在OFDM资源块之间提供缓冲区。这些缓冲称为保护带,其目的是防止符号间干扰。null和保护带的分配根据适用的标准而不同,例如,802.11n不同于LTE。因此,OFDM调制器对象允许用户分配子载波索引。

类似于保护带的概念,OFDM调制器对象支持保护间隔,用于提供OFDM符号之间的时间分离,以便信号不会由于时间色散通道而失去正交性。金宝app只要保护间隔大于延迟扩散,每个符号都不会干扰其他符号。保护间隔是通过使用循环前缀来创建的,在循环前缀中,OFDM符号的最后一部分被复制并插入作为OFDM符号的第一部分。只要时间分散的跨度不超过循环前缀的持续时间,就可以保持循环前缀插入的好处。OFDM调制器对象允许设置循环前缀长度。使用循环前缀的缺点是增加了开销。

凸起余弦窗

虽然循环前缀在时域中创建保护周期以保持正交性,但OFDM符号很少以在前一个OFDM符号末尾显示的相同振幅和相位开始。这导致频谱再生,这是由于互调失真造成的信号带宽的扩展。为了限制这种光谱再生长,需要在符号的最后一个样本和下一个符号的第一个样本之间创建一个平滑的过渡。这可以通过使用循环后缀和上升余弦窗口来实现。

要创建循环后缀,首先N赢得给定符号的示例被附加到该符号的末尾。然而,为了符合802.11g标准,例如,符号的长度不能任意加长。相反,循环后缀必须在时间上重叠,并有效地与下面符号的循环前缀相加。这个重叠的部分就是应用窗口的地方。应用了两个窗口,其中一个在数学上是另一个的倒数。第一个凸起的余弦窗口应用于符号的循环后缀k,在持续时间内从1到0递减。第二个凸起余弦窗口应用于符号的循环前缀k+1,并且在持续时间内从0增加到1。这提供了从一个符号到下一个符号的平滑过渡。

凸起的余弦窗口,w (t),在时域内可表示为:

w t 1 0 | t | < T T W 2 1 2 1 + 因为 π T W | t | T T W 2 T T W 2 | t | T + T W 2 0 否则

在哪里

  • T表示OFDM符号持续时间,包括保护间隔。

  • TW表示窗口的持续时间。

通过窗口长度设置属性调整循环后缀的长度,后缀长度设置在1和最小循环前缀长度之间。虽然加窗改进了光谱再生,但它是以牺牲多径衰落免疫为代价的。这是因为保护带中的冗余减少了,因为保护带的采样值受到平滑的影响。

下图显示了凸起余弦窗的应用。

选定的参考书目

达尔曼,E.帕克瓦尔,J.斯科尔德。4G LTE/LTE-高级移动宽带.伦敦:Elsevier Ltd., 2011。

[2]安德鲁斯,J. G., A.高希,R.穆哈默德。WiMAX的基本原理.上马鞍河,新泽西州:普伦蒂斯大厅,2007年。

蒙特勒伊,L., R.普罗丹,T.科尔策。“OFDM TX符号整形802.3亿”,http://www.ieee802.org/3/bn/public/jan13/montreuil_01a_0113.pdf.博通公司,2013年版。

“IEEE标准802.16TM-2009,纽约:IEEE, 2009。

扩展功能

在R2014a中介绍