主要内容

正交频分复用调制

正交频分复用(OFDM)调制是一种将数字数据编码在多个载波频率上的线性基带调制技术。该发射机采用快速反傅立叶变换(IFFT)组合(调制)多个具有重叠光谱的紧密间隔正交子载波信号并行携带数据。接收器使用FFT来解调信号。

通信工具箱™软件包括这些调制和解调功能,系统对象和模块OFDM调制建模。

OFDM

如Proakis ([2]),在OFDM系统中N子通道,符号速率为1/T减少了N相对于使用整个带宽的单载波系统上的符号速率W并以与OFDM相同的速率传输数据。因此,OFDM系统中的符号间隔为TNT年代,在那里T年代是单载波系统中的符号间隔。通过选择N要足够大,则符号间隔T可以使时间持续时间明显大于信道的时间色散。因此,符号间干扰可以通过选择使之任意小N.换句话说,每个子信道似乎有一个固定的频率响应Cfk), k = 0,1,…,N- 1

OFDM调制的例子

这些例子演示了OFDM调制技术。

应用用户指定导频索引OFDM

构造一个正交频分复用(OFDM)调制器和解调器对,并指定它们的导频指标。OFDM调制器系统对象™使您能够指定导频子载波指标与所描述的约束相一致信息对象的功能。在本例中,对于3x2通道上的OFDM传输,为三个发射天线中的每一个都创建导频索引。此外,奇数和偶数符号之间的导频索引不同。

创建一个OFDM调制器对象,具有5个符号,3个发射天线,长度为6个窗口。

ofdmMod = comm.OFDMModulator (...FFTLength = 256,...NumGuardBandCarriers = [12;11),...NumSymbols = 5,...NumTransmitAntennas = 3,...PilotInputPort = true,...窗口= true,...WindowLength = 6);

为第一发射天线的偶数和奇数符号指定导频指标。

pilotIndOdd = [20;58;96;145;182;210);pilotIndEven = [35;73;111;159; 197; 225]; pilotIndicesAnt1 = cat(2,pilotIndOdd,pilotIndEven,pilotIndOdd,...pilotIndEven pilotIndOdd);

根据为第一天线指定的指标为第二和第三天线生成导频指标。连接三个天线的索引并将它们分配给PilotCarrierIndices财产。

pilotIndicesAnt2 = pilotIndicesAnt1 + 5;pilotIndicesAnt3 = pilotIndicesAnt1 - 5;ofdmMod。PilotCarrierIndices =...猫(3 pilotIndicesAnt1 pilotIndicesAnt2 pilotIndicesAnt3);

基于现有的OFDM调制器System对象创建一个带有两个接收天线的OFDM解调器。方法确定数据和导频尺寸信息函数。

ofdmDemod = comm.OFDMDemodulator (ofdmMod);ofdmDemod。NumReceiveAntennas = 2; dims = info(ofdmMod)
dim =结构体字段:DataInputSize: [215 5 3] PilotInputSize: [6 5 3] OutputSize: [1360 3]

中指定的阵列大小为OFDM调制器生成数据和导频符号modDim

dataIn =...复杂(randn (dims.DataInputSize),...randn (dims.DataInputSize));pilotIn =...复杂(randn (dims.PilotInputSize),...randn (dims.PilotInputSize));

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

modOut = ofdmMod (dataIn pilotIn);

通过一个3x2的随机通道传递调制数据。

chanGain =复杂(randn (3 2) randn (3 2));chanOut = modOut * chanGain;

使用OFDM解调器对象解调接收的数据。

[dataOut, pilotOut] = ofdmDemod (chanOut);

显示三个发射天线的资源映射。图中灰色线表示自定义空值的位置,以避免天线之间的干扰。

showResourceMapping (ofdmMod)

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

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

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

对于第一发射和第一接收天线对,演示输入导频信号与输入导频信号匹配。

pilotCompare =...abs (pilotIn (:: 1) * chanGain(1,1))——abs (pilotOut (:,:, 1, 1));max (pilotCompare(:) < 1平台以及)
ans =逻辑1

OFDM在QPSK信号双天线空间复用中的应用

对在两个发射天线上进行空间复用的QPSK信号应用OFDM调制。

初始化输入参数,为每个天线生成随机数据。

M = 4;% QPSK的调制顺序nfft = 64;cplen = 16;nSym = 5;元= 2;nullIdx = [1:6 33 64-4:64]';pilotIdx = [12 26 40 54]';numDataCarrs = nfft-length (nullIdx)长度(pilotIdx);飞行员= repmat (pskmod ((0: M - 1)。米),1,nSym, 2);ant1 = randi([0 M-1],numDataCarrs,nSym);ant2 = randi([0 M-1],numDataCarrs,nSym);

QPSK分别为每个天线调制数据。执行OFDM调制。

qpskSig (:: 1) = pskmod (ant1, M);qpskSig (:: 2) = pskmod (ant2, M);日元= ofdmmod (qpskSig nfft、cplen nullIdx, pilotIdx,飞行员);

OFDM在MIMO仿真中的应用

在一个简单的2x2 MIMO错误率模拟中使用OFDM调制器和解调器。OFDM参数基于802.11n标准。

创建一个OFDM调制器和解调器对,使用用户指定的导频指标,一个插入的直流零位,两个发射天线和两个接收天线。指定不同天线的导频指标。

ofdmMod = comm.OFDMModulator (FFTLength = 128,...PilotInputPort = true,...PilotCarrierIndices =...猫([12;40;54;76;90;118年],[13;39;55;75;91; 117]),...InsertDCNull = true,...NumTransmitAntennas = 2);ofdmDemod = comm.OFDMDemodulator (ofdmMod);ofdmDemod。NumReceiveAntennas = 2;

显示每个发射天线的导频子载波资源映射。图中的灰色线表示插入空子载波以减少导频信号干扰。

showResourceMapping (ofdmMod)

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

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

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

ofdmModDim = info (ofdmMod);numData = ofdmModDim.DataInputSize (1);%数据子载波数numSym = ofdmModDim.DataInputSize (2);OFDM符号的百分比numTxAnt = ofdmModDim.DataInputSize (3);%发射天线数

生成数据符号以填充100 OFDM帧。

nframes = 100;M = 4;%调制顺序到QPSKdata = randi([0 M-1],nframes*numData,numSym,numTxAnt);

对随机符号进行QPSK调制,并将得到的列向量重塑为符合OFDM调制器要求的列向量。

modData = pskmod(数据(:),M,π/ 4);modData =重塑(modData nframes * numData numSym, numTxAnt);

创建一个错误率计数器。

errorRate = comm.ErrorRate;

模拟超过100帧的OFDM系统,假设一个平坦的,2x2,瑞利衰落信道。使用一个简单的最小二乘解消除多径衰落的影响,并解调OFDM波形和QPSK数据。通过比较原始数据和解调数据生成误差统计。

k = 1: nframes为第k个OFDM帧查找行索引indData = (k - 1) * ofdmModDim.DataInputSize (1) + 1: k * numData;生成随机OFDM导频符号pilotData =复杂(兰德(ofdmModDim.PilotInputSize),...兰特(ofdmModDim.PilotInputSize));使用OFDM调制QPSK符号dataOFDM = ofdmMod (modData (indData,:,:), pilotData);创建平坦,id,瑞利衰落通道2 × 2通道chGain =复杂(randn (2, 2), randn(2, 2)) /√(2);通过瑞利和AWGN通道传递OFDM信号receivedSignal = awgn (dataOFDM * chGain, 30);应用最小二乘解去除衰落通道的影响。rxSigMF = chGain。“\ receivedSignal。”;解调OFDM数据receivedOFDMData = ofdmDemod (rxSigMF。');解调QPSK数据receivedData = pskdemod (receivedOFDMData (:), M,π/ 4);%计算错误统计dataTmp =数据(indData,:,);错误= errorRate (dataTmp (:), receivedData);结束

显示错误统计信息。

流('\n符号错误率= %d from %d个符号的%d个错误\n'、错误)
符号错误率= 9.471154e-02从1970错误的20800个符号

参考文献

[1]IEEE标准-2017 - 802.16。第16部分:宽带无线接入系统的空中接口。2018年3月。

[2]Proakis约翰·G。数字通信.第五版。纽约:麦格劳希尔出版社,2007年。

另请参阅

功能

对象

相关的话题