以下是5G NR PDSCH加扰、调制、层映射、预编码、加DM-RS的MATLAB代码示例:
```
% 参数设置
MCS = 5; % 调制阶数
Nrb = 50; % RB数
Ninfo = Nrb*12*14; % 信息比特数
Qm = 2; % 星座点数
Nlayers = 2; % 天线数
Nre = Nrb*12; % RB上RE数
Nsymbs = 1; % 符号数
Nscid = 0; % SCID
Nid = 1; % ID
Nid2 = 0; % ID2
Nant = 4; % 天线数
Nprb = 25; % PRB数
Ncellid = 0; % 小区ID
Ncp = 'normal'; % 循环前缀类型
Ndmrs = 'on'; % 是否加DM-RS
Ndmrsconfig = 0; % DM-RS配置
Ndmrsoffset = 0; % DM-RS偏移量
Ncyclicshift = 0; % 循环移位
% 生成随机的信息比特
info_bits = randi([0,1],Ninfo,1);
% 信道编码
coded_bits = lteConvolutionalEncode(info_bits);
% 块分组
K = 8448;
Z = 1024;
n = ceil(length(coded_bits)/K);
Q = n*Z;
padded_bits = [coded_bits; zeros(Q-length(coded_bits),1)];
C = reshape(padded_bits,Z,n).';
% 信道编码后的调制符号
modulated_syms = lteSymbolModulate(C,Qm);
% 生成PDSCH符号
pdsch_symbols = reshape(modulated_syms,Nre,Nlayers*Nsymbs);
% 进行加扰
c_init = 0;
pdsch_symbols_scrambled = ltePDSCH(coded_bits,Nrb,MCS,Qm,Nlayers,Nid,Nid2,Nscid,Ncellid,c_init);
% 进行层映射
pdsch_layer_mapped = lteLayerMap(pdsch_symbols_scrambled,Nlayers);
% 进行预编码
pdsch_precoded = lteDLPrecode(pdsch_layer_mapped,Nant);
% 加DM-RS
dmrs_symbols = lteDMRS(Nid,Nid2,Nscid,Ndmrsconfig,Nant,Nprb,Ndmrsoffset,Ncellid);
pdsch_dmrspadded = ltePDSCH(pdsch_precoded,Nrb,MCS,Qm,Nlayers,Nid,Nid2,Nscid,Ncellid,c_init,dmrs_symbols);
% 进行OFDM调制
ofdm_symbols = lteOFDMModulate(pdsch_dmrspadded,Nrb,Ncp,Ncyclicshift);
% 将OFDM符号串行化
tx_waveform = reshape(ofdm_symbols,[],1);
```