主要内容

非码本预编码方案的PDSCH吞吐量:端口5 (TM7),端口7或8或端口7-8 (TM8),端口7-14 (TM9和TM10)

此示例演示如何使用LTE Toolbox™来测量用于基于以下非码本的预编码传输模式(TM)的LTE Toolbox™来测量物理下行链路共享通道(PDSCH)吞吐量性能:

  • TM7:基于非码本的单层预编码(端口5)

  • TM8:基于非码本的预编码为最多两层(双层端口7-8,或单个天线端口,端口7或8)

  • TM9和TM10:基于非码本最多八层端口7-14或单个天线端口,端口7或8的预编码

支持FDD和TDD双工方案。金宝app该示例还展示了如何为不同的传输模式参数化和自定义设置。它还支持使用并行金宝app计算工具箱™来减少有效的模拟时间。

介绍

此示例为多个SNR点测量吞吐量。提供的代码可以在多种传输模式下运行:TM7,TM8,TM9和TM10。支持FDD和TDD双工方案。金宝app有关如何绘制TM1,TM2,TM3,TM4和TM6的信息,请选中以下示例:单天线(TM1)、发射分集(TM2)、开环(TM3)和闭环(TM4/6)空间复用PDSCH吞吐量一致性测试

由于考虑了基于非码本的TMS,因此必须计算预编码(波束成形)矩阵。这是使用奇异值分解(SVD)方法实现的。假设对频道的完美了解。

对于所考虑的SNR点,按子帧在子帧上操作:

  • 预编码(波束形成)矩阵是从一个完美的信道估计计算出来的。

  • 生成填充的资源网格,OFDM调制以创建波形以发送。

  • 产生的波形通过嘈杂的衰落通道。

  • 执行接收器操作(信道估计,均衡,解调和解码)。

  • 使用块CRC导致通道解码器的输出确定PDSCH的吞吐量性能。

一个parfor可以使用Loop来代替循环SNR计算。这在该示例中表示。这parfor语句是并行计算工具箱的一部分,并并行执行SNR循环以减少总模拟时间。

模拟配置

执行该示例以用于模拟长度nframes.= 2帧用于多个信噪比点。大量的nframes.应用于产生有意义的吞吐量结果。SNRIn可以是值数组或标量。一些TMs和某些调制方案对噪声和信道损害的鲁棒性比其他的更强,因此不同的参数集可能需要使用不同的信噪比值。

NFrames = 2;%帧数snrin = [-4 1];DB中%SNR范围

首先为所有的TMs指定一组公共参数,包括带宽、期望的码率、调制方案和分配的资源块集。不指定RMC编号确保所有下行链路子帧都被调度。如果指定了RMC(例如:'R.0'),子帧调度定义在TS 36.101 [1]。

变量TxMode.通过switch语句选择TM。对于每个TM,都指定了所需的参数。此示例不执行DCI格式解码,因此dciformat.字段不是严格必需的。但是,由于DCI格式与TM紧密相连,因此包含它是为了完整性。

出于此示例的目的,除了DCI格式之外,TM9和TM10是相同的,但是,它们在切换语句中分开了完整性。

一旦指定了基本参数集,请呼叫lteRMCDL需要完全填充下行链路参数结构enb

SimulationParameters = [];%明显simulationParametersSimulationParameters.ndlrb = 50;SimulationParameters.pdsch.targetCoderate = 0.5;SimulationParameters.pdsch.modulation = {'16QAM'};simulationParameters.PDSCH.PRBSet = (0:9) ';txMode ='tm8'% tm7 tm8 tm9 tm10duplexmode =.“TDD”%的FDD, TDD的转变TxMode.案件“TM7”%单层(端口5)simulationParameters.PDSCH.DCIFormat ='format1';simulationParameters.PDSCH.TxScheme =“Port5”;SimulationParameters.pdsch.nlayers = 1;ntxants = 4;案件'tm8'%最多两层(双层端口7-8或单个天线%端口,端口7或8)simulationParameters.PDSCH.DCIFormat =“Format2B”;simulationParameters.PDSCH.TxScheme =“Port7-8”%'port7-8','port8'simulationParameters.PDSCH.NLayers = 2;ntxants = 4;simulationParameters.PDSCH.NSCID = 0;案件'tm9'%最多八层(最多八层7-14或单个%天线端口,端口7或8)simulationParameters.PDSCH.DCIFormat ='format2c';simulationParameters.PDSCH.TxScheme =“Port7-14”;simulationParameters.PDSCH.NLayers = 4;ntxants = 8;simulationParameters。CSIRefP = ntxants;案件“TM10”%多达8层(多达8层端口7-14或%单天线端口,端口7或8)simulationParameters.PDSCH.DCIFormat ='format2d';simulationParameters.PDSCH.TxScheme =“Port7-14”;simulationParameters.PDSCH.NLayers = 4;ntxants = 8;simulationParameters。CSIRefP = ntxants;否则错误(“传输模式应该是TM7, TM8, TM9或TM10之一。”结束

预编码矩阵的大小W(波束成形矩阵)是NLayers-经过-ntxants.发射天线的数量从W在后续工具箱函数调用中。稍后将接收天线的数量作为传播信道的一部分指定。

%将W初始化为零(simulationParameters.PDSCH simulationParameters.PDSCH.W = 0。NLayers ntxants);

设置双工模式,并指定子帧数为1。代码每次重复生成一个子帧,直到总数为nframes.生成。

simulationParameters.DuplexMode = DuplexMode;SimulationParameters.TotsubFrames = 1;

调用lteRMCDL,生成未指定的默认eNodeB参数模拟参数.这些将需要稍后产生波形使用ltermcdltool.

enb = lteRMCDL (simulationParameters);

输出enb结构在其他字段中包含,在帧内的每个码字子帧的传输块大小和冗余版本序列。这些在模拟后面使用。

trblksize = eNB.pdsch.trblksizes;rvequence = enb.pdsch.rvseq;

码字的数量,NCW.,是该条目的数量enb.pdsch.modulation.字段。

作战飞机=长度(string (enb.PDSCH.Modulation));

打印一些更相关的仿真参数的摘要。确认参数设置与预期值对齐。在手动指定传输块大小时,显示的报告的码率可用于检测问题。典型值是1/3,1 / 2和3/4。

hdisplayenbparametersummary(eNB,TxMode);
—参数总结:--------------------------------------------双工模式:TDD传输模式:TM8传输方案:Port7-8下行资源块数:50已分配资源块数:10蜂窝参考信号端口数:1发射天线数:4传输层数:2码字数:1调制码字1:16 qam传输块大小码字1:4584 4008 0 0 4584 4584 4008 0 0 4584编码速率码字1:0.5053 - 0.4941 0 0 0.5053 0.5053 0.4941 0 0 0.5053  ------------------------------------------------------------------

传播信道和信道估计器配置

结构通道包含通道模型配置参数。

channel = struct;%通道配置结构通道。种子= 6;%通道种子通道。NRxAnts = 8;%接收天线数量channel.delayprofile =.“环保署”%延迟配置文件通道。DopplerFreq = 5;%多普勒频率channel.mimocorrelation =.“低”%多天线相关性channel.nterms = 16;褪色模型中使用的%振荡器channel.modeltype ='gmeds'%瑞利衰落模型类型通道。InitPhase =“随机”%随机初始阶段通道。NormalizePathGains =“上”正规化延迟轮廓功率通道。NormalizeTxAnts =“上”传送天线规格化信道采样率取决于OFDM中使用的FFT大小%调制器。这可以使用函数LTEOFDMINFO获得。OFDMINFO = LTEOFDMINFO(eNB);Channel.SamplingRate = OFDMINFO.SAMPLINGRATE;

定义信道估计器配置结构。由于使用了非码本的TMs,所以将DMRS设置为参考信号进行信道估计。

cec = struct;%信道估计配置结构cec。PilotAverage =“UserDefined”导频符号平均值的类型cec。FreqWindow = 41;%频率窗口大小cec。TimeWindow = 27个;%时间窗口大小cec。InterpType =“立方”%2D插值类型cec.interpwindow =“中心”插值窗口类型cec.Interpwinsize = 1;%插值窗口大小cec.reference =.'dmrs'%使用DMRS作为参考信号

显示仿真信息

变量DisplaySimulationInformation.控制仿真信息的显示,如用于每个子帧的HARQ进程ID。在CRC错误的情况下,还会显示RV序列的索引值。

displaySimulationInformation = true;

处理链

为了确定每个SNR点的吞吐量,子帧PDSCH处理链的子帧包括:

  • 计算预编码矩阵 -采用完美信道估计来计算预编码矩阵。FDD和TDD的计算过程略有不同。下一节将对此步骤进行详细说明。

  • 更新当前的HARQ进程 -HARQ过程要么携带新的传输数据,要么重传先前发送的传输数据,这取决于基于CRC结果的确认(ACK)或否定确认(NACK)。所有这些都是由HARQ调度程序处理的,hHARQScheduling.根据HARQ状态更新PDSCH数据。

  • 〇创造发射波形将HARQ进程生成的数据传递给ltermcdltool.产生OFDM调制波形,包含物理信道和信号。

  • 嘈杂的频道建模 -将波形通过衰落信道并添加噪声(AWGN)。

  • 执行同步和OFDM解调-偏移接收的符号以考虑实现延迟和信道延迟扩展的组合。OFDM解调符号。

  • 执行信道估计 -估计信道响应和噪声水平。使用这些估计来解码PDSCH。

  • 解码PDSCH -使用。获取接收码字的估计ltePDSCHDecode为所有发射和接收天线对解调和解码恢复的PDSCH符号。

  • 解码下行共享通道(DL-SCH)和存储块CRC错误的HARQ进程-将解码的软比特传染媒介传递给LTEDLSCHDEDODE.,它解码码字并返回用于确定系统吞吐量的块CRC错误。新的软缓冲区的内容,harqProc .decState (harqID),在此函数的输出中可用,用于解码下一个子帧。

预编码矩阵计算

由于建立了基于非码本的TMs模型,因此必须计算基于信道估计的预编码(波束形成)矩阵。为简单起见,假设对通道有完全的了解。

该图显示了与信道估计相关联的定时,预编码矩阵W用于FDD和TDD模式的计算和预编码操作。

对于TDD(上行链路 - 下行链路配置1帧结构),在DL子帧之前的最后一个UL子帧中估计信道。此频道估计用于计算预编码矩阵W.所有后续的DL子帧(包括特殊的子帧)直到下一个UL子帧都用这个矩阵预编码W

对于FDD,在预编码矩阵的计算之间存在一个子帧的延迟W以及使用它的子框架。例如,子帧中使用的预编码矩阵n用子帧中获得的信道估计进行了计算吗N-1,如图所示。

功能hcalculateprecodingmatrix.计算W经过:

  • 为所考虑的子帧获得一个完美的信道估计

  • 为所有已分配的RBs平均信道估计

  • 计算奇异值分解并提取第一NLayers列以获得预编码向量。

的不同计算或值W可以用在这里而不是调用hcalculateprecodingmatrix.

该图显示了信道估计平均过程和W计算。

所描绘的过程显示了单通道矩阵估计的估计,H,通过随时间和频率的平均,从整个分配的资源块集合中获得。使用这个信道估计,H,预编码矩阵,W,通过奇异值分解得到。

请注意,对于单个资源块的分配,预编码矩阵W通常与信道条件相匹配,与最佳预编码很小。但随着分配大小的增加,预编码矩阵考虑了整个分配中的信道条件的平均值。该平均导致偏离最佳预编码矩阵。因此,您可以期望在资源分配的大小增加时性能下降。

处理循环

信噪比点处理的“for”循环如下所示。为了使用并行计算来提高速度,在循环中使用'parfor'而不是'for'。这需要并行计算工具箱。如果没有安装,'parfor'将默认为正常的'for'语句。如果使用'parfor',则建议使用该变量DisplaySimulationInformation.上面设置为false,否则每个SNR点显示模拟信息将重叠。

%初始化在模拟和分析中使用的变量%数组存储所有SNR点的最大吞吐量maxThroughput = 0(长度(SNRIn), 1);%数组存储所有SNR点的模拟吞吐量simthrougupput = zeros(长度(snrin),1);%数组用于存储RV序列索引历史记录allRvSeqIdxHistory =细胞(1,元素个数(SNRIn));%通道结构的拷贝以优化并行处理(仅当%使用并行计算工具箱运行示例)channelInit =通道;%在模拟过程中,enb的一些字段将被更新,复制到%在模拟每个信噪比点时重新初始化它enbInit = enb;TDD的%用于子帧类型的预留矢量:D,S和U用于下行链路,分别特殊和上行链路如果Strcmpi(DuplexMode,“TDD”) subframeType = char(10,1);initialSubframeNo = enb.NSubframe;sno = 0:9%表示一帧中的所有子帧enb。NSubframe = sNo;duplexInfo = lteDuplexingInfo (enb);subframeType (sNo + 1) = duplexInfo.SubframeType (1);%第一个字符:D, S或U结束enb。NSubframe = initialSubframeNo;结束%CFI可以是标量或向量,创建作为向量的CFI本地副本%(每个子帧一个值)如果numel(eNB.CFI)== 1 CFI = REPMAT(ENB.CFI,1,10);其他的CFI = enb.CFI;结束%获取HARQ ID序列,进行HARQ处理。这是一个索引列表HARQ流程调度的百分比。[~,~,enbOut] = lteRMCDLTool(enb, []);harqProcessSequenceInit = enbOut.PDSCH.HARQProcessSequence;snrIdx = 1:元素个数(SNRIn)%评论并行计算%parfor snrIdx = 1:numel(SNRIn) % uncomment用于并行计算%设置随机数生成器种子,具体取决于循环变量%以确保独立随机流rng (snrIdx“combRecursive”);%重新初始化变量(在每个SNR点期间修改它们% 模拟)eNB = enbinit;Channel = ChannelInit;harqprocesssequence = harqprocesssequenceinit;%初始化所有HARQ进程的状态HarqProcesses = HNewHarqProcess(eNB);%设置主循环的变量lastOffset = 7;初始化整体帧定时偏移%(设置为通道实现延迟)FrameOffset = 7;%初始化帧定时偏移量%(设置为通道实现延迟)blkCRC = [];所有被认为的子帧的%块CRCbittput = [];%每子帧成功接收比特数txedtrblksizes = [];每个子帧的百分比传输比特数precodingmatrix = [];%预编码矩阵rxSymbols = [];星座图的%DL-SCH符号(码字1)rxSymbols2 = [];星座图的%DL-SCH符号(码字2)%变量rvSeqIdxHistory存储该值的历史记录所有HARQ进程的% RV索引序列rvSeqIdxHistory = nan(ncw, NFrames*10);%表示预编码矩阵W是否可用。这是非常有用的如果在模拟开始时没有计算W,则%。isWready = false;%表示要处理的子帧。设为true%在子帧中有数据要处理,即DL子帧或%非零传输块大小。processSubframe = false;% Main for循环:用于所有子帧subframeno = 0 :( nframes * 10-1)%更新子帧号enb。NSubframe = subframeNo;用于当前子帧的%加载CFIenb。CFI = CFI (mod (subframeNo长度(CFI)) + 1);当前子帧的%信道时间通道。InitTime = subframeNo / 1000;%从HARQ进程序列获取子帧的HARQ进程IDharqid = harqprocesssequence(mod(subframeno,length(harqprocesssequence))+ 1);%提取当前子帧传输块大小trBlk = trBlkSizes(:, mod(subframeNo, 10)+1).';%加载预编码矩阵计算前一个子帧%存在,如果有数据传输。将标志设置为触发%子帧处理。如果isWready && any(trBlk) harqProcesses(harqID). txconfig . isWready && any(trBlk)W = precodingMatrix;processSubframe = true;其他的processSubframe = false;结束%预编码矩阵计算如果Strcmpi(DuplexMode,“TDD”UL子帧中的%估计频道如果比较字符串(subframeType (mod (subframeNo, 10) + 1),“U”)processsubframe = false;%UL子帧,没有DL数据%仅在下一个子帧为DL时执行信道估计如果比较字符串(subframeType (mod ((subframeNo + 1), 10) + 1),'D')precodingmatrix = hcalculateprecodingmatrix(eNB,频道);isWready = true;结束结束其他的% FDD%获取下一个子帧的传输块trblknext = trblksizes(:, mod(subframeno + 1,10)+1)。';%仅当它计算下一个子帧的预编码矩阵%携带数据(即非零trblknext)如果任何(trBlkNext) precodingMatrix = hCalculatePrecodingMatrix(enb, channel);isWready = true;其他的isWready = false;结束结束%子帧处理如果processSubframe%更新当前HARQ进程harqProcesses (harqID) = hHARQScheduling (...HarqProcesses(Harqid),亚弗拉梅诺,rvsequence);%显示运行时间信息如果DisplaySimulationInformation &&任何(trblk)disp(' ');disp (['子帧:'num2str(subframeno)'。HARQ过程指数:'num2str (harqID)]);结束%更新RV序列索引表rvseqidxhistory(:,subframeno + 1)=...harqprocesses(harqid).txconfig.rvidx。';%使用HARQ更新PDSCH传输配置%过程状态eNB.PDSCH = HarqProcesses(Harqid).txconfig;%细胞有效载荷dlschTransportBlk = harqProcesses (harqID) . data;%创建发送波形txwaveform = ltermcdltool(eNB,dlschtransportblk);%加入25个样品填料。这是为了涵盖延迟范围%期望从渠道建模(组合实现延迟和信道延迟扩展%)txwaveform = [txwaveform;零(25,Ntxants)];% #好< AGROW >%通过通道模型传递数据rxNoiselessWaveform = lteFadingChannel(通道、txWaveform);%计算噪声增益,包括补偿下行链路%功率分配信噪比= 10 ^ (SNRIn (snrIdx) -enb.PDSCH.Rho) / 20);将噪声功率归一化以考虑采样率,%,它是OFDM中使用的IFFT大小的函数%调制,以及天线的数量N0 = 1 /(SQRT(2.0 * Ntxants * Double(Ofdminfo.nfft))* SNR);%创建添加剂白色高斯噪声噪声= n0 *复杂(Randn(尺寸(rxnoisesswaveform)),...randn(尺寸(rxnoisesswaveform)));%将AWGN加入到接收到的时域波形和尺度中所需功率%rxwaveform = rxnoiselesswaveform +噪声;% 接收者%每一帧,在子帧0上计算一个新的%同步偏移量。范围内的偏移量从通道建模预期的延迟%(一个组合实现时延和信道时延扩展的百分比)%表示成功如果(mod(subframeNo,10)==0) frameOffset = lteDLFrameOffset(enb,rxWaveform);如果(frameOffset > 25) frameOffset = lastOffset;结束lastOffset = frameOffset;结束rxWaveform = rxWaveform (1 + frameOffset:最终,);%对接收到的数据进行OFDM解调获得%资源网格rxsubframe = lteofdmdemodulate(eNB,rxwaveform);%信道估计数[Estchannelgrid,噪音] =...lteDLChannelEstimate (enb.PDSCH, enb cec rxSubframe);执行均衡,预编码,层映射,对接收数据进行解调和解编%信道估计。%获得PDSCH指数pdschindices = ltepdschindices(eNB,enb.pdsch,enb.pdsch.prbset);获取PDSCH资源元素。缩放接收的子帧%除以PDSCH功率因数。PDSCH按比例缩放%rho,而用于通道的小区参考符号%估计(用于PDSCH解码阶段)不是。[pdschRx, pdschHest] = lteExtractResources(pdschIndices, pdschRx, pdschHest)...rxsubframe *(10 ^( -  enb.pdsch.rho / 20)),Estchannelgrid);%解码PDSCH.[dlschbits,dlschsymbols] = ltepdschdecode(eNB,enb.pdsch,...pdschRx pdschHest,噪音);%存储Constellation的解码的DLSCH符号%绘制rxSymbols = [rxSymbols;dlschSymbols {1} (:));% #好< AGROW >如果ncw>1 rxSymbols2 = [rxSymbols2;dlschSymbols {2} (:));% #好< AGROW >结束解码DL-SCH[decbits harqProcesses (harqID) .blkerr harqProcesses (harqID) .decState] =...LTEDLSCHDECODE(eNB,eNB.PDSCH,TRBLK,DLSCHBITS,...HarqProcesses(Harqid).decstate);%显示块错误如果DisplaySimulationInformation.如果任何(HarqProcesses(Harqid).blkerr)disp([“块错误。RV指数:'num2str(harqprocesses(harqid).txconfig.rvidx)',CRC:'num2str(HarqProcesses(Harqid).blkerr)])其他的disp (['没有错误。RV指数:'num2str(harqprocesses(harqid).txconfig.rvidx)',CRC:'num2str(HarqProcesses(Harqid).blkerr)])结束结束计算吞吐量所需的%存储值%仅用于带有数据的子帧如果(任何(trblk))blkcrc = [blkcrc harqprocesses(harqid).blkerr];% #好< AGROW >bitTput = [bitTput trBlk.*(1-...harqProcesses (harqID) .blkerr)];% #好< AGROW >txedtrblksizes = [txedtrblksizes trblk];% #好< AGROW >结束结束结束% Plot收到符号星座如果displaySimulationInformation图;情节(rxSymbols,“r”);标题(['收到星座。SNR'...num2str (SNRIn (snrIdx))dB。码字1 '])Xlabel(“同相振幅”);ylabel ('正交振幅');如果作战飞机> 1图;情节(rxSymbols2“r”);标题(['收到星座。SNR'...num2str (SNRIn (snrIdx))dB。码字2》])Xlabel(“同相振幅”);ylabel ('正交振幅');结束结束%计算最大和模拟吞吐量maxThroughput (snrIdx) =总和(txedTrBlkSizes);%最大吞吐量simkrougupput(snridx)= sum(bittput,2);%模拟吞吐量%在命令窗口中动态显示结果流(' \ nSNR = %。2 f dB。%d帧的吞吐量= %。4 f Mbps \ n”...SNRIn (snrIdx) NFrames 1 e-6 * simThroughput (snrIdx) / (NFrames * 10 e - 3));流('信噪比= %。2 f dB。吞吐量(%%)为%d帧(s) = %。4 f % % \ n”...SNRIn (snrIdx)、NFrames simThroughput (snrIdx) * 100 / maxThroughput (snrIdx));allRvSeqIdxHistory {snrIdx} = rvSeqIdxHistory;结束
子帧:4。HARQ进程索引:3块错误。RV索引:1,CRC:1子帧:5。HARQ进程索引:4块错误。RV索引:1,CRC:1子帧:6。HARQ进程索引:5块错误。RV索引:1,CRC:1子帧:9。HARQ进程索引:6块错误。RV索引:1,CRC:1子帧:10。HARQ进程索引:7块错误。RV索引:1,CRC:1子帧:11。HARQ进程索引:2块错误。RV索引:1,CRC:1子帧:14。HARQ进程索引:1块错误。RV索引:1,CRC:1子帧:15。HARQ过程索引:3没有错误。RV索引:2,CRC:0子帧:16。HARQ进程索引:5没有错误。RV索引:2,CRC:0子帧:19。HARQ进程索引:4没有错误。 RV index: 2, CRC: 0 SNR = -4.00 dB. Throughput for 2 Frame(s) = 0.6588 Mbps SNR = -4.00 dB. Throughput(%) for 2 Frame(s) = 29.8694 % Subframe: 4. HARQ process index: 3 No error. RV index: 1, CRC: 0 Subframe: 5. HARQ process index: 4 No error. RV index: 1, CRC: 0 Subframe: 6. HARQ process index: 5 No error. RV index: 1, CRC: 0 Subframe: 9. HARQ process index: 6 No error. RV index: 1, CRC: 0 Subframe: 10. HARQ process index: 7 No error. RV index: 1, CRC: 0 Subframe: 11. HARQ process index: 2 No error. RV index: 1, CRC: 0 Subframe: 14. HARQ process index: 1 No error. RV index: 1, CRC: 0 Subframe: 15. HARQ process index: 3 No error. RV index: 1, CRC: 0 Subframe: 16. HARQ process index: 5 No error. RV index: 1, CRC: 0 Subframe: 19. HARQ process index: 4 No error. RV index: 1, CRC: 0 SNR = 1.00 dB. Throughput for 2 Frame(s) = 2.2056 Mbps SNR = 1.00 dB. Throughput(%) for 2 Frame(s) = 100.0000 %

RV序列索引图

下面的代码生成带有模拟子帧的RV序列中元素索引值的图。这提供了需要重新传输的概念。绘制指数而不是RV值的原因是后者可能不是按升序组织的。例如,在某些情况下,RV序列可以是[0,2,3,1]。在使用时绘制这些值并不能清楚地了解所需的重传次数。

当发送新的传输块时,使用RV序列的第一元素,并且为该子帧示出了1的值。这是在模拟开始时的情况。如果需要重传,则选择RV序列中的下一个元素,并且索引增加。将为2的子帧绘制2的值。如果需要进一步重传,则索引值将进一步增加。该曲线不显示连续帧的子帧5中的任何值。这是因为在该示例中使用的那些子帧中没有发送数据。

hplotrvsequence(snrin,allrvseqidxhistory,nframes);

吞吐量结果

在每个信噪比点完成后,吞吐量结果显示在MATLAB®命令窗口中。它们也在输出数组中捕获SimThrougup.maxThroughputSimThrougup.将测量的吞吐量存储在所有模拟SNR点的比特数中。maxThroughput存储每个模拟SNR点的比特数的最大可能吞吐量。

%绘制吞吐量图legendString = [char(txMode)]“:”num2str (simulationParameters.PDSCH.NLayers)...'层,'num2str(ntxants)“蚁(s)”];绘图(Snrin,Simkrouguput * 100. / maxthrougpul,* - - - - - -。);包含('snr(db)');ylabel ('吞吐量(%)');标题(吞吐量和信噪比的);传奇(Legendstring,'地点'“西北”);网格

为了得到统计上有效的结果,应该对大量的帧进行模拟。下图比较了TDD和FDD在模拟1000帧时的吞吐量结果。

附录

本示例使用以下帮助函数。

选定的参考书目

  1. 3GPP TS 36.16.101“用户设备(UE)无线电传输和接收”