主要内容

comm.OFDMModulator

使用OFDM方法调制信号

描述

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

使用OFDM调制信号:

  1. 创建comm.OFDMModulator对象,并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

例子

hMod= comm.OFDMModulator创建一个OFDM调制器System对象™。

例子

hMod= comm.OFDMModulator (的名字价值指定属性使用多个名称-值对参数中的一个。将每个属性名用引号括起来。例如,comm.OFDMModulator (NumSymbols, 8)指定时频网格中的8个OFDM符号。

例子

hMod= comm.OFDMModulator (hDemod基于指定的OFDM解调器系统对象设置OFDM调制器系统对象属性comm.OFDMDemodulator

属性

全部展开

除非另有说明,属性是nontunable,这意味着在调用对象后无法更改其值。当您调用它们时,对象锁定,以及释放函数打开它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改属性值的更多信息,请参见在MATLAB中使用系统对象进行系统设计

快速傅里叶变换(FFT)点的数目,指定为正整数。FFT的长度,NFFT.,必须大于等于8,且等于子载波数。

数据类型:

分配给左右保护带的子载波数,指定为整数的两元素列向量。子载波数量必须在[0,NFFT./ 2⌋−1].这个向量的形式为[NleftGNrightG),NleftGNrightG分别指定左侧和右保护频带。

数据类型:

选择插入DC空,指定为数字或逻辑0)或1真正的).直流副载波为频带中心,指标值为:

  • FFTLength/ 2) + 1 whenFFTLength甚至

  • FFTLength+ 1) / 2当FFTLength是奇数

选项指定先导输入,指定为数字或逻辑0)或1真正的).如果这个属性是1真正的),您可以为导频传输分配单个子载波。如果这个属性是0),假设导频信息嵌入输入数据中。

导频子载波索引,指定为列向量。如果PilotCarrierIndices属性设置为1真正的),可以指定导频子载波的索引。您可以为每个符号指定相同或不同的子载波索引。类似地,导频载波指数可以在多个发射天线之间有所不同。根据索引赋值所需的控制级别,属性的维度有所不同。有效的飞行员指数落在范围内

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

其中索引值不能超过子载波数。当每个符号和发射天线的导频指标相同时,该特性具有维数N飞行员1。当导频索引因符号而异时,该属性具有维度N飞行员-经过-N信谊.如果只传输一个符号,但有多个传输天线,则属性具有维度N飞行员-by-1-by -Nt,在那里Nt为发射天线数。如果指数随符号和发射天线的数量而变化,则该属性具有维度N飞行员-经过-N信谊-经过-Nt.当发射天线数大于1时,为了减少干扰,需要保证每个符号的指标在天线之间相互区分。

要启用此属性,请设置PilotInputPort财产1真正的).

循环前缀的长度,指定为正整数。如果指定标量,则所有天线中的所有符号的前缀长度都是相同的。如果你指定一个长度的行向量N信谊,前缀长度可以在不同的符号,但在所有天线中保持相同。

数据类型:

选择在OFDM符号之间应用凸起的余弦窗,指定为真正的.窗口是OFDM符号乘以凸起的余弦窗口之前的过程,然后传输以更快地减少带外子载波的功率。窗口减少了光谱再生。

凸余弦窗的长度,指定为正标量。该值必须小于或等于最小循环前缀长度。例如,在4个循环前缀长度为12、14、16和18的符号的配置中,窗口长度必须小于或等于12。

要启用此属性,请设置窗口财产1真正的).

时频网格中OFDM符号的个数,指定为正整数。

发射天线数,用于发射OFDM调制信号,指定为正整数。

使用

描述

波形= hMod (insignal将OFDM调制应用于指定的基带信号,并返回调制后的OFDM基带信号。

波形= hMod (数据飞行员指定导频信号,飞行员的频率子载波PilotCarrierIndices属性值hMod系统对象。要启用此语法,请将PilotCarrierIndices财产真正的

输入参数

全部展开

输入基带信号,指定为数值矩阵或三维数组。输入基带信号必须是大小的Nf-经过-N信谊-经过-Nt在哪里Nf为除保护带和直流零外的频率子载波数。

数据类型:
复数的支持:万博1manbetx是的

输入数据,指定为矩阵或三维数组。输入必须是一个有大小的数字Nd-经过-N信谊-经过-Nt在哪里Nd是每个符号中数据子载波的数量。了解更多信息Nd是计算出来的,看到了吗PilotCarrierIndices财产。

数据类型:
复数的支持:万博1manbetx是的

导频信号,指定为数值的三维数组。导频信号必须是大小的N飞行员-经过-N信谊×nt

数据类型:
复数的支持:万博1manbetx是的

输出参数

全部展开

OFDM调制的基带信号,作为一个二维阵列返回。如果CyclicPrefixLength属性是标量,即输出波形是尺寸((NFFT.+ CPlen)⁎n.信谊)--by-nt.否则,大小为(NFFT.⁎N信谊+∑(CPlen)×nt

数据类型:
复数的支持:万博1manbetx是的

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用此语法:

发行版(obj)

全部展开

信息 提供OFDM调制器的尺寸信息
showresourcemapping. 显示由OFDM调制器创建的OFDM符号的子载波映射系统对象
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置内部状态系统对象

例子

全部折叠

创建并显示带有默认属性值的OFDM调制器系统对象™。

hmod = comm.ofdmmodulator.
hMod = comm.OFDMModulator with properties: FFTLength: 64 NumGuardBandCarriers: [2x1 double] InsertDCNull: false PilotInputPort: false CyclicPrefixLength: 16 Windowing: false NumSymbols: 1 numtransmitantenna: 1

修改子载波和符号的数量。

hMod。FFT.Length = 128; hMod.NumSymbols = 2;

检查子载波的数量和符号的数量是否发生了变化。

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

使用showresourcemapping.对象函数显示时频空间中数据、导频和空子载波的映射。

showresourcemapping(hmod)

图所有Tx天线的OFDM子载波映射包含一个轴对象。具有所有TX天线的DM子载波映射标题的轴对象包含类型图像的对象。

创建一个具有默认属性值的OFDM解调器系统对象™。然后,为单个符号和两个发射天线指定导频指标。

设置PilotCarrierIndices当你在创建调制器时使用解调器时,解调器的特性会影响OFDM调制器中发射天线的数量。解调器中接收天线的数量与发射天线的数量无关。

ofdmDemod = comm.OFDMDemodulator;ofdmDemod。PilotOutputPort = true;ofdmDemod。PilotCarrierIndices =猫(3 [12;26日;40;54]、[13;27个;41; 55]);

用OFDM解调器来构造OFDM调制器。

ofdmMod = comm.OFDMModulator (ofdmDemod);

显示OFDM调制器和解调器的特性,验证适用的特性匹配。

disp (ofdmMod)
comm.ofdmodulator具有属性:fftlenth
DISP(OFDMDEMOD)
Comm.ofdmdeModulator具有属性:FFTLenth

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

构造一个OFDM调制器。

mod = comm.OFDMModulator;

应用showresourcemapping.方法。

showresourcemapping(mod)

图所有Tx天线的OFDM子载波映射包含一个轴对象。具有所有TX天线的DM子载波映射标题的轴对象包含类型图像的对象。

插入一个DC空值。

mod.InsertDCNull = true;

在添加DC NULL后显示资源映射。

showresourcemapping(mod)

图所有Tx天线的OFDM子载波映射包含一个轴对象。具有所有TX天线的DM子载波映射标题的轴对象包含类型图像的对象。

创建一个OFDM调制器,并指定导频信号的副载波指数。指定每个符号和发射天线的指数。当发射天线数大于1时,天线间每个符号设置不同的导频指标。

创建一个OFDM调制器System对象,指定两个符号并插入一个DC空值。

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

启用导频输入端口,以便您可以指定导频索引。

mod.PilotInputPort = true;

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

mod.pilotcarrierindices = [12;56;89;100];

可视化OFDM时频网格中导频信号和零值的位置showresourcemapping.对象的功能。

showresourcemapping(mod)

图所有Tx天线的OFDM子载波映射包含一个轴对象。具有所有TX天线的DM子载波映射标题的轴对象包含类型图像的对象。

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

mod.PilotCarrierIndices =猫(2,国防部。PilotCarrierIndices,...[17;61;94;105));

验证导频子载波指数在两个符号之间有所不同。

showresourcemapping(mod)

图所有Tx天线的OFDM子载波映射包含一个轴对象。名为OFDM Subcarrier Mapping for All Tx antenna的轴对象包含2个类型为image, line的对象。

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

mod.NumTransmitAntennas = 2;

为每一个发射天线指定导频索引。为使多天线间的干扰最小,可设置PilotCarrierIndices属性为三维阵列,因此每个符号的索引在天线之间是不同的。

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

显示两个发射天线的资源映射。灰色的行表示插入自定义空值。空值由目标产生,以减少来自不同天线的导频符号之间的干扰。

showresourcemapping(mod)

Tx天线1的图形副载波映射包含轴对象。具有TX天线1的DM子载波映射标题的轴对象包含类型图像的对象。

图Tx天线2的OFDM子载波映射包含一个轴对象。标题为OFDM Subcarrier Mapping for Tx Antenna 2的轴对象包含一个类型为image的对象。

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

创建一个OFDM调制器,指定五个符号,四个左保护带子载波和三个右保护带子载波,以及每个OFDM符号的循环前缀长度。

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

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

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 numtransmitantenna: 1

利用该方法得到OFDM调制器的数据维数信息对象的功能。

构建一个OFDM调制器系统对象™,具有用户指定的导频指标、插入的DC空值,并指定两个发射天线。

hMod = comm.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]输出:[80 2]

生成用于链路级仿真的OFDM调制符号。

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

mod = comm.OFDMModulator (“NumGuardBandCarriers”,[4; 3],...“PilotInputPort”,真的,...'pilotcarrierindices', (12 11;26日27日;40 39;54 55),...“NumSymbols”2,...“InsertDCNull”,真正的);

确定输入数据、导频和输出数据维度。

modDim = info (mod);

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

dataIn =复杂(randn (modDim.DataInputSize) randn (modDim.DataInputSize));

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

pilotIn =复杂(兰特(modDim.PilotInputSize),兰德(modDim.PilotInputSize));

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

modData =步骤(mod, dataIn pilotIn);

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

解调= comm.OFDMDemodulator (mod);

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

[dataout,pilotout] =步骤(demod,moddata);

验证,在严格的公差范围内,输入数据和导频符号与输出数据和导频符号匹配。

isSame = (max(abs([dataIn(:) - dataOut(:);...pilottin (:) - pilotOut(:))) < 1e-10)
isSame =逻辑1

更多关于

全部展开