51 lines
2.3 KiB
Mathematica
51 lines
2.3 KiB
Mathematica
![]() |
|
|||
|
function [SysParameters,WaveformPara] = WaveformNumerologyCal(PacketSize,NumerologySel,MCS_no)
|
|||
|
%% 函数说明:计算系统链路的参数
|
|||
|
N_FFT = NumerologySel(1); CPratio = NumerologySel(2); PilotInterval = NumerologySel(3);
|
|||
|
%% 系统参数
|
|||
|
SysParameters.ShowTiming =true;
|
|||
|
SysParameters.ShowPAPR =false;
|
|||
|
SysParameters.ShowFigure =true;
|
|||
|
SysParameters.ShowPathGain =true;
|
|||
|
SysParameters.SaveSimData =false;
|
|||
|
|
|||
|
WaveformPara.FrameType ='Data'; % Control为控制短帧,Data为数据帧,Audio为语音帧
|
|||
|
|
|||
|
% 波形参数
|
|||
|
WaveformPara.PacketSize = PacketSize;
|
|||
|
WaveformPara.Payload = WaveformPara.PacketSize*8;
|
|||
|
WaveformPara.PayloadCRC = 32;
|
|||
|
%--
|
|||
|
WaveformPara.NullRatio = 1/4;
|
|||
|
WaveformPara.N_FFT = N_FFT;
|
|||
|
WaveformPara.CPratio = CPratio;
|
|||
|
WaveformPara.PilotPattern = 'block';
|
|||
|
WaveformPara.PilotInterval = PilotInterval;
|
|||
|
|
|||
|
WaveformPara.CP_Len = WaveformPara.N_FFT*WaveformPara.CPratio; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|||
|
WaveformPara.SymbolLen = WaveformPara.N_FFT*(WaveformPara.CPratio+1);
|
|||
|
WaveformPara.UsedSubcarrier = (1-WaveformPara.NullRatio)*WaveformPara.N_FFT-1;
|
|||
|
WaveformPara.NullSubcarrier = WaveformPara.NullRatio*WaveformPara.N_FFT;
|
|||
|
%--
|
|||
|
|
|||
|
WaveformPara.Mod = MCS_no(1);
|
|||
|
WaveformPara.Modulation = log2(WaveformPara.Mod);
|
|||
|
WaveformPara.CodeRate = (MCS_no(2)-1)/MCS_no(2);
|
|||
|
puncpat=[1,1,0,1,1,0,0,1,1,0];
|
|||
|
WaveformPara.puncpat = puncpat(1:2*(MCS_no(2)-1));
|
|||
|
%---------------------------------------------
|
|||
|
|
|||
|
WaveformPara.BitsPerSig = WaveformPara.UsedSubcarrier*WaveformPara.Modulation;
|
|||
|
WaveformPara.DataFrame = ceil((WaveformPara.Payload+WaveformPara.PayloadCRC)/WaveformPara.CodeRate/WaveformPara.BitsPerSig);
|
|||
|
WaveformPara.DataPadding = WaveformPara.DataFrame*WaveformPara.BitsPerSig - floor((WaveformPara.Payload+WaveformPara.PayloadCRC)/WaveformPara.CodeRate);
|
|||
|
|
|||
|
WaveformPara.PilotNum = ceil(WaveformPara.DataFrame/WaveformPara.PilotInterval);
|
|||
|
WaveformPara.FrameSymNum = WaveformPara.DataFrame+WaveformPara.PilotNum;
|
|||
|
|
|||
|
WaveformPara.FrameConstelNum = WaveformPara.UsedSubcarrier * WaveformPara.DataFrame;
|
|||
|
WaveformPara.FrameLen = WaveformPara.SymbolLen * WaveformPara.FrameSymNum;
|
|||
|
|
|||
|
WaveformPara.InterleavLen = 4080;
|
|||
|
end
|
|||
|
|