%% function [BER,PER,SyncErr] = ExecutedMAIN0701(PacketSize, NumerologySel, MCS_no, ChanPara, FreqCarrier, FrameNo, seed_set) [SysParameters,WaveformPara] = WaveformNumerologyCal(PacketSize,NumerologySel,MCS_no); %% TX rng(seed_set(1),'twister'); dataPacketBits = randi([0 1],WaveformPara.Payload,1); scrData = TX_CRC32_Scramble(dataPacketBits); trellis = poly2trellis(7,[171 133]); tx_encoded_bit = convenc(scrData,trellis,WaveformPara.puncpat); tx_padded_bit = [tx_encoded_bit;zeros(WaveformPara.DataPadding,1)]; %--------------------------------------------- dataMod = qammod(tx_padded_bit,WaveformPara.Mod,'InputType','bit'); WaveformPara.Power_sym = mean(abs(dataMod).^2); dataMod = reshape(dataMod,WaveformPara.UsedSubcarrier,[]); %% 获取信道响应 %假设已知前一时刻的信号 % 生成信道响应 N_carriers = WaveformPara.N_FFT; channel_response=sqrt(1/2)*(randn(1,N_carriers)+1i*randn(1,N_carriers)); % 窗的数目 N_windows = 8; % 定义量化水平总数 N_level = 10; % 最小CP值,外部条件,取决于最大延迟拓展,有最小CP值>最大延迟拓展 min_len_CP = 30; % 测试函数 CPset = Generate_CP(channel_response,N_windows,N_level,min_len_CP); % 物理层加密 [serialOFDMsym,WaveformPara.pilot,myFrameLen] = tx_FFTSymbolGen_PilotBlockPN(dataMod,WaveformPara,CPset); % 加CP的地方 WaveformPara.Power_sig = mean(abs(serialOFDMsym).^2); [WaveformPara.preamble,WaveformPara.c1,WaveformPara.c2] = ... generatePreamble(WaveformPara,WaveformPara.Power_sig); % hb:这里前导码的目的是什么? txSignal = [WaveformPara.preamble;serialOFDMsym]; % RFSignal = RFimpairment(txSignal, FreqCarrier); % 分两块,发送 接收 %% Channel [rxSignal,ChanPara] = PassChan(txSignal,WaveformPara,SysParameters,ChanPara,seed_set(2)); % SIR = InterfCal(rxSignal,ChanPara); %% RX [rxSignal_sync,SyncErr] = rxSyncSC(rxSignal,WaveformPara,myFrameLen); [rxDataModLs] = rx_PilotBlockChanEst(rxSignal_sync,ChanPara,WaveformPara,CPset,SysParameters); % 去CP的地方 dataDemod = qamdemod(rxDataModLs,WaveformPara.Mod,'OutputType','approxllr', ... 'UnitAveragePower',false,'NoiseVariance',ChanPara.N0); dataDePadded = dataDemod(1:end - WaveformPara.DataPadding); tb = 8; decoded = vitdec(dataDePadded,trellis,tb,'trunc','unquant',WaveformPara.puncpat); [rx,PER] = RX_CRC32_deScramble(decoded); [numErrors,BER] = biterr(dataPacketBits,rx); end %%