HE/WaveAdp/WaveformNumerologyCal.m

51 lines
2.3 KiB
Mathematica
Raw Permalink Normal View History

2024-03-30 16:35:40 +08:00
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'; % ControlDataAudio
%
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