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