提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

5G NR学习理解系列——利用matlab工具生成5G NR信源

  • 前言
  • NR工具箱的使用
  • 直接使用代码

前言

既然发现了4G LTE toolbox的matlab工具箱,那5G NR是否也有类似的工具箱呢,一查,果然也有,不过matlab版本要2021b才有图形化app生成NR信源。没办法,网上搜集资源,安装上。

NR工具箱的使用

暂时没有找到怎么输入指令直接打开,只能通过matlab的app菜单,找到


这个按钮,打开,选择


用法很简洁,都不需要用文字来描述了,看图就知道怎么操作了,跟4G LTE的操作差不多

里面有我们常用的一些测试模式,例如TM11、TM31之类的。而且可以设定CELL ID,而我们做同步,解出CELLID,也就需要这些信息就行了。还多了一个可以设置采样率的选项,这点很好哦
不过似乎没看到哪里可以配置时隙配比的,不知道是没有这个接口配置,还是暂时我没发现。这个以后要是找到了再来补充了。

直接使用代码

但每次通过这样使用tool界面还是有点麻烦,需要手动生成,导出数据(mat格式),然后在把mat数据导入到需要仿真的程序中。

  newData1 = load('-mat', 'TEST.mat');lte_data = newData1.waveStruct.waveform;lte_data = lte_data.';(这个转置,看实际是否需要)

可惜,暂时还没找到类似于4G LTE的lteTestModel函数来替代上述图形交互过程。
不过,在上面图形化界面导出按钮中,可以选择

可以得到以下代码

% Generated by MATLAB(R) 9.11 (R2021b) and 5G Toolbox 2.3 (R2021b).
% Generated on: 22-Feb-2022 20:09:27%% Generating NR Test Models waveform
% NR Test Models configuration
cfgDLTM = nrDLCarrierConfig;
cfgDLTM.Label = 'NR-FR1-TM3.1a';
cfgDLTM.FrequencyRange = 'FR1';
cfgDLTM.ChannelBandwidth = 100;
cfgDLTM.NCellID = 1;
cfgDLTM.NumSubframes = 20;
cfgDLTM.WindowingPercent = 0;
cfgDLTM.SampleRate = 122880000;
cfgDLTM.CarrierFrequency = 0;%% SCS specific carriers
scscarrier = nrSCSCarrierConfig;
scscarrier.SubcarrierSpacing = 30;
scscarrier.NSizeGrid = 273;
scscarrier.NStartGrid = 0;cfgDLTM.SCSCarriers = {scscarrier};%% Bandwidth Parts
bwp = nrWavegenBWPConfig;
bwp.BandwidthPartID = 1;
bwp.Label = 'BWP1';
bwp.SubcarrierSpacing = 30;
bwp.CyclicPrefix = 'normal';
bwp.NSizeBWP = 273;
bwp.NStartBWP = 0;cfgDLTM.BandwidthParts = {bwp};%% Synchronization Signals Burst
ssburst = nrWavegenSSBurstConfig;
ssburst.BlockPattern = 'Case B';
ssburst.TransmittedBlocks = [1 0 0 0];
ssburst.Period = 10;
ssburst.NCRBSSB = [];
ssburst.KSSB = 0;
ssburst.DataSource = 'MIB';
ssburst.DMRSTypeAPosition = 2;
ssburst.CellBarred = false;
ssburst.IntraFreqReselection = false;
ssburst.PDCCHConfigSIB1 = 0;
ssburst.SubcarrierSpacingCommon = 30;
ssburst.Enable = false;
ssburst.Power = 0;cfgDLTM.SSBurst = ssburst;%% CORESET and Search Space Configuration
coreset = nrCORESETConfig;
coreset.CORESETID = 1;
coreset.Label = 'CORESET1';
coreset.FrequencyResources = 1;
coreset.Duration = 2;
coreset.CCEREGMapping = 'noninterleaved';
coreset.REGBundleSize = 2;
coreset.InterleaverSize = 2;
coreset.ShiftIndex = 0;cfgDLTM.CORESET = {coreset};% Search Spaces
searchspace = nrSearchSpaceConfig;
searchspace.SearchSpaceID = 1;
searchspace.Label = 'SearchSpace1';
searchspace.CORESETID = 1;
searchspace.SearchSpaceType = 'common';
searchspace.StartSymbolWithinSlot = 0;
searchspace.SlotPeriodAndOffset = [1 0];
searchspace.Duration = 1;
searchspace.NumCandidates = [8 8 0 0 0];cfgDLTM.SearchSpaces = {searchspace};%% PDCCH Instances Configuration
pdcch = nrWavegenPDCCHConfig;
pdcch.Enable = true;
pdcch.Label = 'PDCCH1';
pdcch.Power = 0;
pdcch.BandwidthPartID = 1;
pdcch.SearchSpaceID = 1;
pdcch.AggregationLevel = 1;
pdcch.AllocatedCandidate = 1;
pdcch.SlotAllocation = 0:7;
pdcch.Period = 10;
pdcch.Coding = false;
pdcch.DataBlockSize = 20;
pdcch.DataSource = 'PN23';
pdcch.RNTI = 0;
pdcch.DMRSScramblingID = 1;
pdcch.DMRSPower = 0;cfgDLTM.PDCCH = {pdcch};%% PDSCH Instances Configuration
% PDSCH 1
pdsch1 = nrWavegenPDSCHConfig;
pdsch1.Enable = true;
pdsch1.Label = 'Partial band PDSCH sequence with 256QAM modulation scheme (target, RNTI = 0) (Full downlink slots)';
pdsch1.Power = 0;
pdsch1.BandwidthPartID = 1;
pdsch1.Modulation = '256QAM';
pdsch1.NumLayers = 1;
pdsch1.MappingType = 'A';
pdsch1.ReservedCORESET = [];
pdsch1.SymbolAllocation = [0 14];
pdsch1.SlotAllocation = 0:6;
pdsch1.Period = 10;
pdsch1.PRBSet = 3:272;
pdsch1.VRBToPRBInterleaving = 0;
pdsch1.VRBBundleSize = 2;
pdsch1.NID = [];
pdsch1.RNTI = 0;
pdsch1.Coding = false;
pdsch1.TargetCodeRate = 0.4785;
pdsch1.TBScaling = 1;
pdsch1.XOverhead = 0;
pdsch1.RVSequence = 0;
pdsch1.DataSource = 'PN23';
pdsch1.DMRSPower = 0;
pdsch1.EnablePTRS = false;
pdsch1.PTRSPower = 0;% PDSCH Reserved PRB
pdsch1ReservedPRB = nrPDSCHReservedConfig;
pdsch1ReservedPRB.PRBSet = 0:2;
pdsch1ReservedPRB.SymbolSet = [0 1];
pdsch1ReservedPRB.Period = 1;pdsch1.ReservedPRB = {pdsch1ReservedPRB};% PDSCH DM-RS
pdsch1DMRS = nrPDSCHDMRSConfig;
pdsch1DMRS.DMRSConfigurationType = 1;
pdsch1DMRS.DMRSReferencePoint = 'CRB0';
pdsch1DMRS.DMRSTypeAPosition = 2;
pdsch1DMRS.DMRSAdditionalPosition = 1;
pdsch1DMRS.DMRSLength = 1;
pdsch1DMRS.CustomSymbolSet = [];
pdsch1DMRS.DMRSPortSet = [];
pdsch1DMRS.NIDNSCID = [];
pdsch1DMRS.NSCID = 0;
pdsch1DMRS.NumCDMGroupsWithoutData = 1;pdsch1.DMRS = pdsch1DMRS;% PDSCH PT-RS
pdsch1PTRS = nrPDSCHPTRSConfig;
pdsch1PTRS.TimeDensity = 4;
pdsch1PTRS.FrequencyDensity = 2;
pdsch1PTRS.REOffset = '00';
pdsch1PTRS.PTRSPortSet = [];pdsch1.PTRS = pdsch1PTRS;% PDSCH 2
pdsch2 = nrWavegenPDSCHConfig;
pdsch2.Enable = true;
pdsch2.Label = 'Partial band PDSCH sequence with 256QAM modulation scheme (target, RNTI = 2) (Full downlink slots)';
pdsch2.Power = 0;
pdsch2.BandwidthPartID = 1;
pdsch2.Modulation = '256QAM';
pdsch2.NumLayers = 1;
pdsch2.MappingType = 'A';
pdsch2.ReservedCORESET = [];
pdsch2.SymbolAllocation = [2 12];
pdsch2.SlotAllocation = 0:6;
pdsch2.Period = 10;
pdsch2.PRBSet = 0:2;
pdsch2.VRBToPRBInterleaving = 0;
pdsch2.VRBBundleSize = 2;
pdsch2.NID = [];
pdsch2.RNTI = 2;
pdsch2.Coding = false;
pdsch2.TargetCodeRate = 0.4785;
pdsch2.TBScaling = 1;
pdsch2.XOverhead = 0;
pdsch2.RVSequence = 0;
pdsch2.DataSource = 'PN23';
pdsch2.DMRSPower = 0;
pdsch2.EnablePTRS = false;
pdsch2.PTRSPower = 0;pdschreserved = nrPDSCHReservedConfig;
pdschreserved.PRBSet = 0:2;
pdschreserved.SymbolSet = [0 1];
pdschreserved.Period = 1;pdsch2.ReservedPRB = {pdschreserved};pdschdmrs = nrPDSCHDMRSConfig;
pdschdmrs.DMRSConfigurationType = 1;
pdschdmrs.DMRSReferencePoint = 'CRB0';
pdschdmrs.DMRSTypeAPosition = 2;
pdschdmrs.DMRSAdditionalPosition = 1;
pdschdmrs.DMRSLength = 1;
pdschdmrs.CustomSymbolSet = [];
pdschdmrs.DMRSPortSet = [];
pdschdmrs.NIDNSCID = [];
pdschdmrs.NSCID = 0;
pdschdmrs.NumCDMGroupsWithoutData = 1;pdsch2.DMRS = pdschdmrs;pdschptrs = nrPDSCHPTRSConfig;
pdschptrs.TimeDensity = 4;
pdschptrs.FrequencyDensity = 2;
pdschptrs.REOffset = '00';
pdschptrs.PTRSPortSet = [];pdsch2.PTRS = pdschptrs;% PDSCH 3
pdsch3 = nrWavegenPDSCHConfig;
pdsch3.Enable = true;
pdsch3.Label = 'Partial band PDSCH sequence with 256QAM modulation scheme (target, RNTI = 0) (Partial downlink slots)';
pdsch3.Power = 0;
pdsch3.BandwidthPartID = 1;
pdsch3.Modulation = '256QAM';
pdsch3.NumLayers = 1;
pdsch3.MappingType = 'A';
pdsch3.ReservedCORESET = [];
pdsch3.SymbolAllocation = [0 6];
pdsch3.SlotAllocation = 7;
pdsch3.Period = 10;
pdsch3.PRBSet = 3:272;
pdsch3.VRBToPRBInterleaving = 0;
pdsch3.VRBBundleSize = 2;
pdsch3.NID = [];
pdsch3.RNTI = 0;
pdsch3.Coding = false;
pdsch3.TargetCodeRate = 0.4785;
pdsch3.TBScaling = 1;
pdsch3.XOverhead = 0;
pdsch3.RVSequence = 0;
pdsch3.DataSource = 'PN23';
pdsch3.DMRSPower = 0;
pdsch3.EnablePTRS = false;
pdsch3.PTRSPower = 0;pdschreserved = nrPDSCHReservedConfig;
pdschreserved.PRBSet = 0:2;
pdschreserved.SymbolSet = [0 1];
pdschreserved.Period = 1;pdsch3.ReservedPRB = {pdschreserved};pdschdmrs = nrPDSCHDMRSConfig;
pdschdmrs.DMRSConfigurationType = 1;
pdschdmrs.DMRSReferencePoint = 'CRB0';
pdschdmrs.DMRSTypeAPosition = 2;
pdschdmrs.DMRSAdditionalPosition = 1;
pdschdmrs.DMRSLength = 1;
pdschdmrs.CustomSymbolSet = [];
pdschdmrs.DMRSPortSet = [];
pdschdmrs.NIDNSCID = [];
pdschdmrs.NSCID = 0;
pdschdmrs.NumCDMGroupsWithoutData = 1;pdsch3.DMRS = pdschdmrs;pdschptrs = nrPDSCHPTRSConfig;
pdschptrs.TimeDensity = 4;
pdschptrs.FrequencyDensity = 2;
pdschptrs.REOffset = '00';
pdschptrs.PTRSPortSet = [];pdsch3.PTRS = pdschptrs;% PDSCH 4
pdsch4 = nrWavegenPDSCHConfig;
pdsch4.Enable = true;
pdsch4.Label = 'Partial band PDSCH sequence with 256QAM modulation scheme (target, RNTI = 2) (Partial downlink slots)';
pdsch4.Power = 0;
pdsch4.BandwidthPartID = 1;
pdsch4.Modulation = '256QAM';
pdsch4.NumLayers = 1;
pdsch4.MappingType = 'A';
pdsch4.ReservedCORESET = [];
pdsch4.SymbolAllocation = [2 4];
pdsch4.SlotAllocation = 7;
pdsch4.Period = 10;
pdsch4.PRBSet = 0:2;
pdsch4.VRBToPRBInterleaving = 0;
pdsch4.VRBBundleSize = 2;
pdsch4.NID = [];
pdsch4.RNTI = 2;
pdsch4.Coding = false;
pdsch4.TargetCodeRate = 0.4785;
pdsch4.TBScaling = 1;
pdsch4.XOverhead = 0;
pdsch4.RVSequence = 0;
pdsch4.DataSource = 'PN23';
pdsch4.DMRSPower = 0;
pdsch4.EnablePTRS = false;
pdsch4.PTRSPower = 0;pdschreserved = nrPDSCHReservedConfig;
pdschreserved.PRBSet = 0:2;
pdschreserved.SymbolSet = [0 1];
pdschreserved.Period = 1;pdsch4.ReservedPRB = {pdschreserved};pdschdmrs = nrPDSCHDMRSConfig;
pdschdmrs.DMRSConfigurationType = 1;
pdschdmrs.DMRSReferencePoint = 'CRB0';
pdschdmrs.DMRSTypeAPosition = 2;
pdschdmrs.DMRSAdditionalPosition = 1;
pdschdmrs.DMRSLength = 1;
pdschdmrs.CustomSymbolSet = [];
pdschdmrs.DMRSPortSet = [];
pdschdmrs.NIDNSCID = [];
pdschdmrs.NSCID = 0;
pdschdmrs.NumCDMGroupsWithoutData = 1;pdsch4.DMRS = pdschdmrs;pdschptrs = nrPDSCHPTRSConfig;
pdschptrs.TimeDensity = 4;
pdschptrs.FrequencyDensity = 2;
pdschptrs.REOffset = '00';
pdschptrs.PTRSPortSet = [];pdsch4.PTRS = pdschptrs;cfgDLTM.PDSCH = {pdsch1,pdsch2,pdsch3,pdsch4};%% CSI-RS Instances Configuration
csirs = nrWavegenCSIRSConfig;
csirs.Enable = false;
csirs.Label = 'CSIRS1';
csirs.Power = 0;
csirs.BandwidthPartID = 1;
csirs.CSIRSType = {'nzp'};
csirs.CSIRSPeriod = 'on';
csirs.RowNumber = 1;
csirs.Density = {'three'};
csirs.SymbolLocations = {0};
csirs.SubcarrierLocations = {0};
csirs.NumRB = 273;
csirs.RBOffset = 0;
csirs.NID = 1;cfgDLTM.CSIRS = {csirs};% Generation
[waveform,info] = nrWaveformGenerator(cfgDLTM);Fs = info.ResourceGrids(1).Info.SampleRate;                                 % Specify the sample rate of the waveform in Hz%% Visualize
% Spectrum Analyzer
spectrum = dsp.SpectrumAnalyzer('SampleRate', Fs);
spectrum(waveform);
release(spectrum);

ncellid 配置0到1007

waveform就是我们所需要的时域信源数据了,默认是生成20ms的数据

这样就不用每次打开那个APP进行操作了,直接代码就可以改cellid,对于目前我只关注下行同步来说应该足够了。

还有一个问题就是我暂时还不清楚哪个字段是修改时隙配比的,5G那一堆定义太多了也一时半会看不明白。/(ㄒoㄒ)/~~

那我上面这个配置生成的是什么时隙配比的信源呢,

20ms数据叠成4个5ms来显示


至少是一个5ms周期函数。且5ms存在3.7146ms的下行数据。经过分析

(7+6/14)*0.5 = 3.7143与上述信源的时间最为贴近

从这个网站内容截图如下 https://www.txrjy.com/thread-1184207-1-1.html


5G NR学习理解系列——利用matlab工具生成5G NR信源相关推荐

  1. LTE学习理解系列——利用matlab工具生成4G LTE信源

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LTE学习理解系列--利用matlab工具生成4G LTE信源 前言 LTE工具箱的使用 直接使用函数 生成信源的采样率 总结 前言 ...

  2. 5G NR学习理解系列——MATLAB5G信源的生成之SSB参数配置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--MATLAB5G信源的生成之SSB参数配置 前言 SSB参数的位置 SSB参数详细解释 信号时频图 总结 前 ...

  3. 5G NR学习理解系列——NR小区搜索的matlab仿真

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--NR小区搜索的matlab仿真 前言 信源生成 降采样 PSS和SSS本地序列生成 相关结果 前言 既然已经 ...

  4. 5G NR学习理解系列——时频结构及相关概念

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 5G NR学习理解系列--时频结构 频段 工作带宽 信道带宽 子载波间隔(SCS) SLOT长度 OFDM符号时长 采样点时长 无线帧 ...

  5. matlab patch 透明度,怎么利用Matlab工具生成带有透明度对象的矢量图

    从很早的版本开始MATLAB就支持对 patch.surface 等对象设定透明属性,有些示意图也必须使用透明的对象才能充分展示所要表达的含义.对透明对象支持最好的通用图片格式就是 .png 了,但是 ...

  6. LTE学习理解系列——TDD-LTE的TA、GP、TDD开关、覆盖范围、拉远距离的更深入理解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LTE学习理解系列--TDD-LTE的TA.GP.TDD开关.覆盖范围.拉远距离的更深入理解 前言 TA.GP 为什么需要所有终端的上 ...

  7. LTE学习理解系列——PSS和SSS序列定点化

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LTE学习理解系列--PSS和SSS序列定点化 前言 PSS 定点化 SSS 定点化 前言 此文的作用在于我做定点化matlab仿真以 ...

  8. LTE学习理解系列——TDD LTE信源指定时隙配比设置

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 LTE学习理解系列--TDD LTE信源指定时隙配比设置 前言 详细配置 结语 前言 目前暂时关注时隙配比的设置,因为每一种时隙配比可 ...

  9. 神经网络人口预测matlab,利用MATLAB工具模拟实现人口预测实例分析.doc

    摘要:人口预测对于国民经济计划的制定和社会战略目标的决策具有重要参考价值.本文主要利用MATLAB软件对中国1974-2015年的人口总数数据进行统计分析,建立BP神经网络预测模型.把它与一元非线性回 ...

最新文章

  1. 【Linux学习】epoll详解
  2. 面试官:Spring为什么建议使用构造器来注入?
  3. openocd安装与调试
  4. Docker Machine搭建并加入节点
  5. Java历经20年沧桑,将持续革新
  6. scala中class与object区别.
  7. mysql赋予权限的时候报错_想要远程连接MySQL,赋予root权限没用啊?一直报语法错误...
  8. linux arm. 快速启动,教你如何快速启动Linux 系统
  9. 《统计学习方法》的Python 3.6复现,实测可用
  10. java addall 不能传null_null 之AddAll、Add和Boolean
  11. 比深度学习更值得信赖的模型ART
  12. 【模拟】牛客网:区间表达
  13. 十天学会单片机(一)
  14. 闸机常用通讯协议(韦根,485等),或者开关量输出(继电器)直接控制
  15. 关于磁碟机及Javqhc病毒
  16. 五种对称加密算法总结
  17. CodeForces 312B Archer
  18. wfp 禁用ip_WFP 层要求和限制
  19. BGP知识手册-华为-华三-思科
  20. mysql rownum groupby_如何正确利用Rownum来限制查询所返回的行数?

热门文章

  1. html连接accdb文件,与.accdb文件的简单C#连接
  2. 微信公众号 模板消息
  3. swift 计时器timer
  4. vue实现二维码识别功能 读取二维码内容
  5. JDK版本8u191与8u192的区别, jdk小版本号奇数与偶数的区别
  6. 一文讲透图像分割经典网络:FCN、Unet、DeepLabV3+、Vnet、Unet++
  7. PyQt5入门讲解——01.安装与配置
  8. oracle插入日期异常,Oracle插入日期数据常见的2个问题和解决方法
  9. SQLite轻量级数据库jar包链接
  10. Kali的ZMap安装经验总结