主要内容

comm.OFDMModulator

使用OFDM调制方法

描述

comm.OFDMModulator系统对象™调节频域信号通过使用正交频分复用(OFDM)的方法。有关更多信息,请参见正交频分复用。的输出是一个基带表示OFDM-modulated信号。

使用OFDM调制信号:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

ofdmMod= comm.OFDMModulator创建一个OFDM调制器系统对象。

例子

ofdmMod= comm.OFDMModulator (的名字=价值)指定属性使用一个或多个名称参数。例如,comm.OFDMModulator (NumSymbols = 8)指定了八个OFDM符号的时频网格。

例子

ofdmMod= comm.OFDMModulator (ofdmDemod)设置OFDM调制器基于指定的对象属性comm.OFDMDemodulator对象。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

FFT点数,指定为一个积极的整数标量。FFT的长度必须大于或等于8,相当于副载波的数量。

数量的副载波分配给左、右后卫乐队,指定为一个2×1整数向量。左派和右派的数量保护带副载波,NleftG;NrightG),必须在[0,NFFT/ 2⌋−1),NFFT副载波的总数在指定的OFDM信号FFTLength。有关更多信息,请参见副载波分配、保护频带和保护间隔

选择插入一个零直流副载波,指定为一个数字或逻辑0()或1(真正的)。当插入时,零直流副载波的中心频带,索引值:

  • (NFFT/ 2)+ 1时NFFT是偶数。

  • (NFFT+ 1)/ 2NFFT是奇数。

NFFT副载波的总数在指定的OFDM信号FFTLength

选择输入飞行员副载波,指定为一个数字或逻辑0()或1(真正的)。当你将此属性设置为:

  • 输入数据,X,可能包括嵌入式飞行员信息但对象并不分配飞行员副载波指数。

  • 真正的——指定的对象分配副载波PilotCarrierIndices调制信号的领航员飞行员输入参数。

指数的飞行员副载波位置,指定为一个列向量,矩阵,或与integer-element 3 d数组值的范围

( N leftG + 1 , N FFT / 2 ] ( N FFT / 2 + 2 , N FFT N rightG ] ,

在哪里NFFT指定的副载波的总数吗FFTLength,NleftGNrightG指定的左和右后卫乐队吗NumGuardBandCarriers

你可以分配N飞行员导频指数相同或不同N信谊每个符号的副载波,NT发射天线。

  • 当飞行员指标是相同的每一个符号和传输天线,属性维度N飞行员1

  • 当飞行员指数不同符号,属性维度N飞行员——- - - - - -N信谊

  • 如果飞行员输入只有一个符号,但对象配置分配多个发射天线,属性维度N飞行员-by-1-by -NT

  • 如果指数不同符号和发射天线的数量,属性维度N飞行员——- - - - - -N信谊——- - - - - -NT

提示

最小化跨多个发射天线之间的干扰传输,每个符号的试验指标必须相互不同的天线。

依赖关系

适用于当您设置这个属性PilotInputPort1

每个OFDM符号的循环前缀的长度,指定为一个积极的,整数标量或行向量包含NumSymbols元素。当你循环前缀长度指定为:

  • 标量的循环前缀长度是相同的所有符号通过天线。

  • 行向量——循环前缀的长度可能不同符号但不不同天线。

选择应用提出了OFDM符号之间的余弦窗口,指定为一个数字或逻辑0()或1(真正的)。

降低带外频谱再生造成的副载波的力量,应用窗口。有关更多信息,请参见OFDM提出了余弦窗口

的长度提出了余弦窗口中,指定为积极、整数标量。这个值必须小于或等于指定的最小循环前缀长度CyclicPrefixLength。例如,在配置四个符号与循环前缀长度12日,14日,16日和18日,窗口的长度必须小于等于12。

依赖关系

要启用这个特性,设置窗口财产真正的

过采样因素,指定为一个积极的标量。过采样因子必须满足这些约束条件:

提示

如果你将过采样因子设置为一个无理数,指定部分的价值。例如,FFT长度12和过采样因子4/3他们的产品是整数16。然而,舍入4/31.333当设置过采样因素导致noninteger产品15.9960,从而导致一个代码错误。

OFDM符号的时频网格数量,指定为一个积极的,整数标量。

数量的传输天线OFDM调制信号传输使用,指定为一个积极的,整数标量小于或等于64年

使用

描述

Y= ofdmMod (X)使用OFDM方法调节副载波频域输入数据并返回OFDM-modulated基带信号。

Y= ofdmMod (数据,飞行员)分配控制信号,飞行员到指定的副载波频率PilotCarrierIndices。要启用这种语法,设置PilotInputPort财产真正的

输入参数

全部展开

输入基带信号,指定为一个N数据——- - - - - -N信谊——- - - - - -NT数组中。

  • N数据是副载波数量的数据。有关更多信息,请参见信息对象的功能。

  • N信谊符号的数量,是指定的吗NumSymbols

  • NT发射天线的数量,是指定的吗NumTransmitAntennnas

有关更多信息,请参见副载波分配、保护频带和保护间隔

数据类型:
复数的支持:金宝app是的

控制信号,指定为一个N飞行员——- - - - - -N信谊——- - - - - -NT数组中。

有关更多信息,请参见副载波分配、保护频带和保护间隔

数据类型:
复数的支持:金宝app是的

输出参数

全部展开

OFDM-modulated基带信号,作为一个返回(NCPTotal+NFFT×N信谊)———NT矩阵相同的数据类型作为输入信号。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

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

例子

全部折叠

创建和显示一个OFDM调制器系统对象™使用默认属性值。

ofdmMod = comm.OFDMModulator
ofdmMod = comm.OFDMModulator属性:FFTLength: 64 NumGuardBandCarriers: [2 x1双]InsertDCNull:假PilotInputPort:假CyclicPrefixLength: 16个窗口:假OversamplingFactor: 1 NumSymbols: 1 NumTransmitAntennas: 1

修改数量的副载波和符号。验证数量的副载波和符号的数量改变。使用信息目标函数来显示输入和输出信号的维度。

ofdmMod。FFTLength = 128; ofdmMod.NumSymbols = 2
ofdmMod = comm.OFDMModulator属性:FFTLength: 128 NumGuardBandCarriers: [2 x1双]InsertDCNull:假PilotInputPort:假CyclicPrefixLength: 16个窗口:假OversamplingFactor: 1 NumSymbols: 2 NumTransmitAntennas: 1
信息(ofdmMod)
ans =结构体字段:DataInputSize (117 2): OutputSize (288: 1)

使用showResourceMapping目标函数的映射数据,飞行员和空副载波在时频空间。

showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

更新对象添加一个直流零和激活飞行员输入参数。显示更新的配置对象。使用showResourceMapping目标函数来显示更新后的资源映射。使用信息目标函数来显示更新后的输入和输出信号的维度。更新后的输入和输出尺寸显示对象更改配置。具体来说,当对象运行时,飞行员必须提供副载波。

ofdmMod。InsertDCNull = 1;ofdmMod。飞行员InputPort = 1
ofdmMod = comm.OFDMModulator属性:FFTLength: 128 NumGuardBandCarriers: [2 x1双]InsertDCNull:真正的PilotInputPort:真正的PilotCarrierIndices: x1双[4]CyclicPrefixLength: 16个窗口:假OversamplingFactor: 1 NumSymbols: 2 NumTransmitAntennas: 1
信息(ofdmMod)
ans =结构体字段:DataInputSize (112 2): PilotInputSize: 2 [4] OutputSize: 288 [1]
showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

创建调制器通过解调器配置确保一对匹配的调制器和解调器。

创建一个OFDM解调器系统对象™使用默认属性值。然后,指定试点指标一个符号和两个传输天线。当你使用的解调器调制器的创建、设置PilotCarrierIndices解调器的属性影响OFDM调制器传输天线的数量。解调器接收天线的数量是不相关的和发射天线的数量。

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

使用OFDM解调器创建OFDM调制器。

ofdmMod = comm.OFDMModulator (ofdmDemod);

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

disp (ofdmMod)
comm.OFDMModulator属性:FFTLength: 64 NumGuardBandCarriers: [2 x1双]InsertDCNull:假PilotInputPort:真正的PilotCarrierIndices: [4 x1x2双]CyclicPrefixLength: 16个窗口:假OversamplingFactor: 1 NumSymbols: 1 NumTransmitAntennas: 2
disp (ofdmDemod)
comm.OFDMDemodulator属性:FFTLength: 64 NumGuardBandCarriers: [2 x1双]RemoveDCCarrier:假PilotOutputPort:真正的PilotCarrierIndices: [4 x1x2双]CyclicPrefixLength: 16 OversamplingFactor: 1 NumSymbols: 1 NumReceiveAntennas: 1

showResourceMapping目标函数为每个传输天线显示时频资源映射。

创建一个OFDM调制器。

ofdmMod = comm.OFDMModulator;

应用showResourceMapping对象的功能。

showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

插入一个直流零。

ofdmMod。InsertDCNull = true;

显示添加直流零后的资源映射。

showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

创建一个OFDM调制器和指定驾驶员的副载波索引信号。指定每个符号的指数和传输天线。当发射天线的数量大于1,设置不同的试验指标之间的每个符号天线。

创建一个OFDM调制器对象,指定两个符号和插入一个直流零。

ofdmMod = comm.OFDMModulator (FFTLength = 128,NumSymbols = 2,InsertDCNull = true);

使飞行员输入端口,这样你可以指定驾驶员指数。

ofdmMod。飞行员InputPort = true;

符号指定相同的试验指标。

ofdmMod。飞行员CarrierIndices = [12; 56; 89; 100];

显示飞行员的位置信号和OFDM时频网格使用nullshowResourceMapping对象的功能。

showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

为第二个指定不同的指标符号连接第二列的试验指标PilotCarrierIndices财产。

ofdmMod。飞行员CarrierIndices =猫(2 ofdmMod.PilotCarrierIndices [17;61;94;105));

验证试验副载波指数两个符号之间的不同。

showResourceMapping (ofdmMod)

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含2图像类型的对象,线。

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

ofdmMod。NumTransmitAntennas = 2;

指定试验指标的两个传输天线。提供指标为多个天线同时最小化干扰天线,指定PilotCarrierIndices房地产作为一个三维数组,这样每个符号的指数不同的天线。

ofdmMod。飞行员CarrierIndices =猫([20;50;70;110年],[15;60;75;105));

显示的资源映射两个传输天线。灰色的线表示插入定制的null。飞行员符号从不同天线间的干扰减至最小,对象创建null。

showResourceMapping (ofdmMod)

图OFDM子载波映射为Tx天线1包含一个坐标轴对象。坐标轴对象与标题为Tx天线OFDM子载波映射1,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

图OFDM子载波映射为Tx天线2包含一个坐标轴对象。坐标轴对象与标题OFDM子载波映射为Tx天线2,包含OFDM符号,ylabel副载波索引包含一个类型的对象的形象。

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

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

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

显示OFDM调制器的属性确认配置循环前缀长度变化的符号。

disp (ofdmMod)
comm.OFDMModulator属性:FFTLength: 64 NumGuardBandCarriers: [2 x1双]InsertDCNull:假PilotInputPort:假CyclicPrefixLength:[12 10 14 11 13]窗口:假OversamplingFactor: 1 NumSymbols: 5 NumTransmitAntennas: 1

通过使用获得OFDM调制器的数据维度信息对象的功能。

创建一个OFDM调制器对象与试验指标,一个直流零,和两个传输天线。

ofdmMod = comm.OFDMModulator (NumGuardBandCarriers = [4;3),PilotInputPort = true,PilotCarrierIndices =猫(3 [12;26日;40;54]、[11;25;39;53]),InsertDCNull = true,NumTransmitAntennas = 2);

使用信息目标函数调制器输入数据,飞行员输入数据和输出数据的大小。

信息(ofdmMod)
ans =结构体字段:DataInputSize: [48 1 2] PilotInputSize: [4 1 2] OutputSize: 80 [2]

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

构造一个OFDM调制器直流零插入,七保护带副载波,和两个不同的试验指标为每一个符号象征。

ofdmMod = comm.OFDMModulator (NumGuardBandCarriers = (4; 3),PilotInputPort = true,PilotCarrierIndices = [12 11;26日27日;40 39;54 55),NumSymbols = 2,InsertDCNull = true);

确定输入数据,飞行员,和输出数据的维度。

modDim = info (ofdmMod);

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

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

创建一个控制信号,有正确的维度。

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

应用OFDM调制数据和试验信号。

modData = ofdmMod (dataIn pilotIn);

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

ofdmDemod = comm.OFDMDemodulator (ofdmMod);

解调的OFDM信号和输出数据和试验信号。

[dataOut, pilotOut] = ofdmDemod (modData);

确认,在一个严格的公差,输入数据和飞行员符号匹配输出数据和飞行员符号。

isSame = (max (abs ([dataIn (:)——dataOut (:);pilotIn (:)——pilotOut(:)))) < 1平台以及)
isSame =逻辑1

过滤的OFDM调制信号数据和飞行员输入和输出时生成的四倍采样率通过对于单通道的输出。解调channel-filtered信号和原始数据比较。

创建一个OFDM解调器对象有三个不同符号和飞行员副载波指数和循环前缀长度为每个符号。

ofdmDemod = comm.OFDMDemodulator (NumGuardBandCarriers = (9。8),RemoveDCCarrier = true,PilotOutputPort = true,PilotCarrierIndices =[[12、26、40; 54],[14; 28, 38岁,52],[12、26、40;54]],CyclicPrefixLength = [16 32],OversamplingFactor = 4,NumSymbols = 3);

创建一个OFDM调制器系统对象从OFDM解调器对象,ofdmDemod

ofdmMod = comm.OFDMModulator (ofdmDemod);

显示配置的副载波资源映射数据,飞行员,保护带和零信号使用showResourceMapping对象的功能。获得通过使用输入和输出维度信息信息对象的功能。

showResourceMapping (ofdmDemod);

图所有Tx天线OFDM子载波映射包含一个坐标轴对象。坐标轴对象与标题所有Tx天线OFDM子载波映射,包含OFDM符号,ylabel副载波索引包含3图像类型的对象,线。

modDim = info (ofdmMod);

创建随机数据和飞行员输入和应用QAM调制。

M = 16;xd =兰迪([0 m - 1], modDim.DataInputSize);dataIn = qammod (xd, M, UnitAveragePower = true);xp =兰迪([0 m - 1], modDim.PilotInputSize);pilotIn = qammod (xp, M, UnitAveragePower = true);

应用OFDM调制和飞行员QAM信号的数据。通过一个AWGN信道滤波器的信号。恢复数据和飞行员符号,应用OFDM解调,然后QAM-demodulation。

modOut = ofdmMod (dataIn pilotIn);chanOut = awgn (modOut 20“测量”);[dataOut, pilotOut] = ofdmDemod (chanOut);码= qamdemod (dataOut, M, UnitAveragePower = true);yp = qamdemod (pilotOut, M, UnitAveragePower = true);

验证数据和飞行员通过这个过程不变。

码dataSame = isequal (xd)
dataSame =逻辑1
pilotSame = isequal (xp, yp)
pilotSame =逻辑1

算法

全部展开