From b4a63f44a8733893ce797e01c1a8e4172e5e9c77 Mon Sep 17 00:00:00 2001 From: Vikram6G Date: Sun, 12 May 2024 00:27:41 +0530 Subject: [PATCH] Added Project-3 --- GettingStarted.html | 52 +- ..._for_TDD_Massive_MIMO_5G_Networks_10_1.png | Bin 0 -> 28840 bytes ..._for_TDD_Massive_MIMO_5G_Networks_15_1.png | Bin 0 -> 58262 bytes ..._for_TDD_Massive_MIMO_5G_Networks_15_3.png | Bin 0 -> 34609 bytes ..._for_TDD_Massive_MIMO_5G_Networks_16_0.png | Bin 0 -> 45848 bytes ..._for_TDD_Massive_MIMO_5G_Networks_31_0.png | Bin 0 -> 57745 bytes ..._for_TDD_Massive_MIMO_5G_Networks_33_0.png | Bin 0 -> 50449 bytes ...t_for_TDD_Massive_MIMO_5G_Networks_7_0.png | Bin 0 -> 45142 bytes ...for_TDD_Massive_MIMO_5G_Networks.ipynb.txt | 1225 +++++++ .../Generate_Channel_Datasets.ipynb.txt | 390 ++ .../api/Projects/Project3/project3.rst.txt | 13 +- .../Projects/Project3/trainCSINet.ipynb.txt | 1047 ++++++ api/5G_Toolkit/5Gtoolkit.html | 52 +- api/5G_Toolkit/CRC/crc.crcDecoder.html | 52 +- api/5G_Toolkit/CRC/crc.crcEncoder.html | 52 +- api/5G_Toolkit/CRC/crc.html | 52 +- .../HammingCoder/channelCoder.hamming.html | 52 +- ...oder.ldpc.codeblockprocessingReceiver.html | 52 +- ...r.ldpc.codeblockprocessingTransmitter.html | 52 +- .../ChannelCoder/LDPC/channelCoder.ldpc.html | 52 +- .../channelCoder.ldpc.ldpcParameters.html | 52 +- .../channelCoder.polar.components.html | 52 +- .../PolarCoder/channelCoder.polar.html | 52 +- .../channelCoder.reedMuller.html | 52 +- api/5G_Toolkit/ChannelCoder/channelCoder.html | 52 +- .../ChannelModels/antennaArray.html | 52 +- .../ChannelModels/channelGenerator.html | 52 +- .../ChannelModels/channelModels.html | 52 +- .../ChannelModels/nodeMobility.html | 52 +- .../ChannelModels/parameterGenerator.html | 52 +- .../ChannelModels/simulationLayout.html | 52 +- .../channelProcessing.addNoise.html | 52 +- .../channelProcessing.applyChannel.html | 52 +- .../ChannelProcessing/channelProcessing.html | 52 +- api/5G_Toolkit/Interleaver/interleavers.html | 52 +- .../interleavers.lpdc.bitInterleaver.html | 52 +- .../interleavers.pbchInterleavers.html | 52 +- ...interleavers.polar.channelInterleaver.html | 52 +- ...nterleavers.polar.inputBitInterleaver.html | 52 +- ...nterleavers.polar.subBlockInterleaver.html | 52 +- api/5G_Toolkit/MIMOProcessing/codeBooks.html | 52 +- .../MIMOProcessing/mimoProcessing.html | 52 +- api/5G_Toolkit/OFDM/ofdm.demodulator.html | 52 +- api/5G_Toolkit/OFDM/ofdm.html | 52 +- api/5G_Toolkit/OFDM/ofdm.modulator.html | 52 +- .../OFDM/ofdm.transformDecoding.html | 52 +- .../OFDM/ofdm.transformDecoding5G.html | 52 +- .../OFDM/ofdm.transformprecoding.html | 52 +- .../OFDM/ofdm.transformprecoding5G.html | 52 +- .../DCI/payloadGeneration.dci.html | 52 +- .../MIB/payloadGeneration.mib.html | 52 +- .../PayloadGeneration/payloadGeneration.html | 52 +- ...sicalChannels.pbch.components.crc.crc.html | 52 +- .../physicalChannels.pbch.components.crc.html | 52 +- ...s.pbch.components.inputBitInterleaver.html | 52 +- ...putBitInterleaver.inputBitInterleaver.html | 52 +- .../physicalChannels.pbch.components.mib.html | 52 +- ...sicalChannels.pbch.components.mib.mib.html | 52 +- ...alChannels.pbch.components.modulation.html | 52 +- ...components.modulation.symbolDemapping.html | 52 +- ...h.components.modulation.symbolMapping.html | 52 +- ...nnels.pbch.components.pbchInterleaver.html | 52 +- ...nents.pbchInterleaver.pbchInterleaver.html | 52 +- ...hannels.pbch.components.pbchScrambler.html | 52 +- ...omponents.pbchScrambler.pbchScrambler.html | 52 +- ...hysicalChannels.pbch.components.polar.html | 52 +- ...nels.pbch.components.polar.polarCoder.html | 52 +- ....components.ratematching.bitSelection.html | 52 +- ...nents.ratematching.channelInterleaver.html | 52 +- ...Channels.pbch.components.ratematching.html | 52 +- ...ents.ratematching.subblockInterleaver.html | 52 +- ...nnels.pbch.components.resourceMapping.html | 52 +- ...physicalChannels.pbch.components.rnti.html | 52 +- ...calChannels.pbch.components.rnti.rnti.html | 52 +- ...bch.components.scrambling.descrambler.html | 52 +- ...alChannels.pbch.components.scrambling.html | 52 +- ....pbch.components.scrambling.scrambler.html | 52 +- ...icalChannels.pdcch.components.crc.crc.html | 52 +- ...physicalChannels.pdcch.components.crc.html | 52 +- ....pdcch.components.inputBitInterleaver.html | 52 +- ...putBitInterleaver.inputBitInterleaver.html | 52 +- ...lChannels.pdcch.components.modulation.html | 52 +- ...components.modulation.symbolDemapping.html | 52 +- ...h.components.modulation.symbolMapping.html | 52 +- ...ysicalChannels.pdcch.components.polar.html | 52 +- ...els.pdcch.components.polar.polarCoder.html | 52 +- ....components.ratematching.bitSelection.html | 52 +- ...nents.ratematching.channelInterleaver.html | 52 +- ...hannels.pdcch.components.ratematching.html | 52 +- ...ents.ratematching.subblockInterleaver.html | 52 +- ...nels.pdcch.components.resourceMapping.html | 52 +- ...hysicalChannels.pdcch.components.rnti.html | 52 +- ...alChannels.pdcch.components.rnti.rnti.html | 52 +- ...cch.components.scrambling.descrambler.html | 52 +- ...lChannels.pdcch.components.scrambling.html | 52 +- ...pdcch.components.scrambling.scrambler.html | 52 +- .../physicalChannels.pdsch.LowerPhy.html | 52 +- ...hysicalChannels.pdsch.LowerPhyDecoder.html | 52 +- .../physicalChannels.pdsch.UpperPhy.html | 52 +- ...hysicalChannels.pdsch.UpperPhyDecoder.html | 52 +- .../PDSCH/subcomponents/PDSCH.html | 52 +- .../PDSCH/subcomponents/ReceiverUpperPHY.html | 52 +- .../subcomponents/TransmitterUpperPHY.html | 52 +- ...sch.components.codeblockConcatenation.html | 52 +- ...dsch.components.codeblockSegmentation.html | 52 +- ...annels.pdsch.components.computeTBsize.html | 52 +- ...hannels.pdsch.components.layermapping.html | 52 +- ...alChannels.pdsch.components.ldpcCodec.html | 52 +- ...lChannels.pdsch.components.modulation.html | 52 +- ...components.modulation.symbolDemapping.html | 52 +- ...h.components.modulation.symbolMapping.html | 52 +- ...omponents.ratematching.bitInterleaver.html | 52 +- ....components.ratematching.bitSelection.html | 52 +- ...hannels.pdsch.components.ratematching.html | 52 +- ...nels.pdsch.components.resourceMapping.html | 52 +- ....pdsch.components.resourceMappingDMRS.html | 52 +- ...sch.components.scrambling.descrambler.html | 52 +- ...lChannels.pdsch.components.scrambling.html | 52 +- ...pdsch.components.scrambling.scrambler.html | 52 +- ...h.components.transportblockProcessing.html | 52 +- ...icalChannels.pdcch.components.crc.crc.html | 52 +- ...physicalChannels.pdcch.components.crc.html | 52 +- ....pdcch.components.inputBitInterleaver.html | 52 +- ...putBitInterleaver.inputBitInterleaver.html | 52 +- ...lChannels.pdcch.components.modulation.html | 52 +- ...components.modulation.symbolDemapping.html | 52 +- ...h.components.modulation.symbolMapping.html | 52 +- ...ysicalChannels.pdcch.components.polar.html | 52 +- ...els.pdcch.components.polar.polarCoder.html | 52 +- ....components.ratematching.bitSelection.html | 52 +- ...nents.ratematching.channelInterleaver.html | 52 +- ...hannels.pdcch.components.ratematching.html | 52 +- ...ents.ratematching.subblockInterleaver.html | 52 +- ...nels.pdcch.components.resourceMapping.html | 52 +- ...hysicalChannels.pdcch.components.rnti.html | 52 +- ...alChannels.pdcch.components.rnti.rnti.html | 52 +- ...cch.components.scrambling.descrambler.html | 52 +- ...lChannels.pdcch.components.scrambling.html | 52 +- ...pdcch.components.scrambling.scrambler.html | 52 +- .../PhysicalChannels/PUCCH/Format0.html | 52 +- .../PUCCH/Format0/Format0.html | 52 +- .../Format0/ResourceDemappingFormat0.html | 52 +- .../PUCCH/Format0/ResourceMappingFormat0.html | 52 +- .../Format0/SequenceGenerationFormat0.html | 52 +- .../PhysicalChannels/PUCCH/Format1.html | 52 +- .../PUCCH/Format1/DespreadingFormat1.html | 52 +- .../PUCCH/Format1/Format1.html | 52 +- .../Format1/ResourceDemappingFormat1.html | 52 +- .../PUCCH/Format1/ResourceMappingFormat1.html | 52 +- .../Format1/SequenceGenerationFormat1.html | 52 +- .../PUCCH/Format1/SpreadingFormat1.html | 52 +- .../PhysicalChannels/PUCCH/Format2.html | 52 +- .../PUCCH/Format2_3_4/Format2_3_4.html | 52 +- .../channelCoder.polar.components.html | 52 +- .../PolarCoder/channelCoder.polar.html | 52 +- .../ChannelCoding/SBL/channelCoder.sbl.html | 52 +- ...annels.pucch.components.ChannelCoding.html | 52 +- ...lChannels.pucch.components.polarCodec.html | 52 +- ...calChannels.pucch.components.sblCodec.html | 52 +- ...cch.components.CodeBlockConcatenation.html | 52 +- ...ucch.components.CodeBlockSegmentation.html | 52 +- .../PUCCHComponents/PUCCHComponents.html | 52 +- ...tcher.ChannelCodingOfSmallBlockLength.html | 52 +- .../ratematcher.polarcoder.bitSelection.html | 52 +- ...atcher.polarcoder.channelInterleavers.html | 52 +- ...atcher.polarcoder.subBlockInterleaver.html | 52 +- .../PolarCoder/ratematcher.polarcoder.html | 52 +- .../RateMatching/Ratematcher/ratematcher.html | 52 +- ...h.components.ratematching.Interleaver.html | 52 +- ....components.ratematching.bitSelection.html | 52 +- ...hannels.pucch.components.ratematching.html | 52 +- ...ch.components.ratematching.polarCodec.html | 52 +- ...els.pucch.components.ratematching.sbl.html | 52 +- .../Scrambler/scrambler.deScrambler.html | 52 +- .../Scrambler/Scrambler/scrambler.html | 52 +- .../Scrambler/scrambler.rntiMasking.html | 52 +- .../Scrambler/scrambler.scrambler.html | 52 +- ...cch.components.scrambling.descrambler.html | 52 +- ...lChannels.pucch.components.scrambling.html | 52 +- ...pucch.components.scrambling.scrambler.html | 52 +- .../symbolMapping.demapper.html | 52 +- .../SymbolMapping_/symbolMapping.html | 52 +- .../SymbolMapping_/symbolMapping.mapper.html | 52 +- ...lChannels.pucch.components.modulation.html | 52 +- ...components.modulation.symbolDemapping.html | 52 +- ...h.components.modulation.symbolMapping.html | 52 +- .../PUCCHReceiver/PUCCHReceiver.html | 52 +- .../PUCCHTransmitter/PUCCHTransmitter.html | 52 +- .../PhysicalChannels/PUCCH/Format3.html | 52 +- .../PhysicalChannels/PUCCH/Format4.html | 52 +- .../PhysicalChannels/PUCCH/PUCCH.html | 52 +- .../PhysicalChannels/PUSCH/PUSCH.html | 52 +- .../PUSCH/PUSCHDecoderUpperPhy.html | 52 +- .../PhysicalChannels/PUSCH/PUSCHUpperPhy.html | 52 +- .../PhysicalChannels/physicalChannels.html | 52 +- .../physicalChannels.pbch.html | 52 +- .../physicalChannels.pdcch.html | 52 +- .../physicalChannels.pdsch.html | 52 +- .../physicalChannels.prach.html | 52 +- .../physicalChannels.psbch.html | 52 +- .../physicalChannels.pscch.html | 52 +- .../physicalChannels.pucch.html | 52 +- .../physicalChannels.pusch.html | 52 +- .../positioning.doaEstimation.dftDoA.html | 52 +- .../positioning.doaEstimation.espritDoA.html | 52 +- .../positioning.doaEstimation.musicDoA.html | 52 +- .../positioning.doaEstimation.html | 52 +- ...sitioning.optimization_Algorithms.DoA.html | 52 +- ...ioning.optimization_Algorithms.Hybrid.html | 52 +- ...itioning.optimization_Algorithms.TDoA.html | 52 +- ...ptimization_Algorithms.leastSquareToA.html | 52 +- .../positioning.optimization_Algorithms.html | 52 +- .../positioning.position_Estimation.html | 52 +- .../positioning.toaEstimation.dftToA.html | 52 +- .../positioning.toaEstimation.espritToA.html | 52 +- .../positioning.toaEstimation.musicToA.html | 52 +- .../positioning.toaEstimation.html | 52 +- api/5G_Toolkit/Positioning/positioning.html | 52 +- .../ratematcher.ldpc.bitSelection.html | 52 +- .../ratematcher.ldpc.bitInterleaver.html | 52 +- .../Ratematcher/LDPC/ratematcher.ldpc.html | 52 +- .../ratematcher.polarcoder.bitSelection.html | 52 +- ...atcher.polarcoder.channelInterleavers.html | 52 +- ...atcher.polarcoder.subBlockInterleaver.html | 52 +- .../PolarCoder/ratematcher.polarcoder.html | 52 +- api/5G_Toolkit/Ratematcher/ratematcher.html | 52 +- .../Format0/ResourceDemappingFormat0.html | 52 +- .../PUCCH/Format0/ResourceMappingFormat0.html | 52 +- .../PUCCH/Format1/DespreadingFormat1.html | 52 +- .../Format1/ResourceDemappingFormat1.html | 52 +- .../PUCCH/Format1/ResourceMappingFormat1.html | 52 +- .../PUCCH/Format1/SpreadingFormat1.html | 52 +- .../PUCCH/resourceMapping.pucch.format0.html | 52 +- .../PUCCH/resourceMapping.pucch.format1.html | 52 +- .../PUCCH/resourceMapping.pucch.format2.html | 52 +- .../PUCCH/resourceMapping.pucch.format3.html | 52 +- .../PUCCH/resourceMapping.pucch.format4.html | 52 +- .../resourceMapping.coreset.html | 52 +- .../resourceMapping.csirs.html | 52 +- .../resourceMapping.dmrsPDSCH.html | 52 +- .../ResourceMapping/resourceMapping.html | 52 +- .../resourceMapping.pdcch.html | 52 +- .../ResourceMapping/resourceMapping.prs.html | 52 +- .../resourceMapping.pscch.html | 52 +- .../resourceMapping.ptrsPDSCH.html | 52 +- .../resourceMapping.pucch.html | 52 +- .../resourceMapping.s_ssb.html | 52 +- .../resourceMapping.searchSpace.html | 52 +- .../ResourceMapping/resourceMapping.ssb.html | 52 +- .../resourceMapping.ssbGeneration.html | 52 +- .../Scrambler/scrambler.deScrambler.html | 52 +- api/5G_Toolkit/Scrambler/scrambler.html | 52 +- .../Scrambler/scrambler.rntiMasking.html | 52 +- .../Scrambler/scrambler.scrambler.html | 52 +- ...Generation.LowPAPRSequenceGeneration1.html | 52 +- ...Generation.LowPAPRSequenceGeneration2.html | 52 +- ...eGeneration.SequenceGenerationFormat0.html | 52 +- ...eGeneration.SequenceGenerationFormat1.html | 52 +- .../sequenceGeneration.csirs.html | 52 +- .../sequenceGeneration.dmrs.html | 52 +- .../sequenceGeneration.html | 52 +- .../sequenceGeneration.pnSequence.html | 52 +- .../sequenceGeneration.prs.html | 52 +- .../sequenceGeneration.pss.html | 52 +- .../sequenceGeneration.spss.html | 52 +- .../sequenceGeneration.srs.html | 52 +- .../sequenceGeneration.sss.html | 52 +- .../sequenceGeneration.ssss.html | 52 +- .../SymbolMapping/symbolMapping.demapper.html | 52 +- .../SymbolMapping/symbolMapping.html | 52 +- .../SymbolMapping/symbolMapping.mapper.html | 52 +- .../configurations.csiConfiguration.html | 52 +- ...igurations.generateValidSSBParameters.html | 52 +- .../[N]Configurations/configurations.html | 52 +- ...igurations.pdschLowerPhyConfiguration.html | 52 +- ...igurations.pdschUpperPhyConfiguration.html | 52 +- .../configurations.srsConfiguration.html | 52 +- .../configurations.ssbConfiguration.html | 52 +- ...igurations.timeFrequency_5GParameters.html | 52 +- .../CFOEstimation/cfoEstimation.html | 52 +- .../channelEstimationAndEqualizationPBCH.html | 52 +- ...channelEstimationAndEqualizationPDCCH.html | 52 +- ...channelEstimationAndEqualizationPDSCH.html | 52 +- ...iverAlgorithms.dmrsParameterDetection.html | 52 +- .../receiverAlgorithms.pssDetection.html | 52 +- .../receiverAlgorithms.sssDetection.html | 52 +- .../channelEstimationCSIRS.html | 52 +- .../Positioning/channelEstimationSRS.html | 52 +- .../receiverAlgorithms.html | 52 +- .../PDCCHScheduler/pdcchScheduler.html | 52 +- .../roundRobinScheduler.html | 52 +- .../PDSCHScheduler/linkAdpatation.html | 52 +- .../PDSCHScheduler/rankAdaptation.html | 52 +- .../PDSCHScheduler/resourceAllocation.html | 52 +- api/5G_Toolkit/[N]Scheduler/scheduler.html | 52 +- .../builtUsing5GToolkit.html | 52 +- ...rame)_Synchronization_using_PSS_in_5G.html | 52 +- .../Time_Synchronization.html | 52 +- ...rame)_Synchronization_using_PSS_in_5G.html | 52 +- ...rame)_Synchronization_using_PSS_in_5G.html | 52 +- ...k_Synchronization_in_5G_on_Plutto-SDR.html | 52 +- .../CFO_Correction.html | 52 +- ...k_Synchronization_in_5G_on_Plutto-SDR.html | 52 +- .../Downlink_Synchronization.html | 52 +- .../5G_Data_Communication.html | 52 +- .../5G_Data_Communication_using_PDSCH.html | 52 +- .../Integration_with_SDRs.html | 52 +- api/LearningResources/GW-IC5GS.html | 52 +- api/LearningResources/LearningResources.html | 52 +- api/License/license.html | 52 +- api/Preview_of_Next_Release/FeatureList.html | 52 +- api/Previous_Versions/PreviousVersions.html | 52 +- api/Projects/Project1/learning2Demap.html | 52 +- ...tory_5G_Networks_based_on_UL-TDoA_AoA.html | 52 +- api/Projects/Project10/project10.html | 52 +- ...bility for Different AL distributions.html | 52 +- ...locking Probability for Different ALs.html | 52 +- ...r of Candidates per Aggregation Level.html | 52 +- ...ling Strategy on Blocking Probability.html | 52 +- ...Es Capability on Blocking Probability.html | 52 +- ...ize for a Target Blocking Probability.html | 56 +- api/Projects/Project2/project2.html | 52 +- ...INet_for_TDD_Massive_MIMO_5G_Networks.html | 3141 +++++++++++++++++ ...Net_for_TDD_Massive_MIMO_5G_Networks.ipynb | 1225 +++++++ .../Project3/Generate_Channel_Datasets.html | 2406 +++++++++++++ .../Project3/Generate_Channel_Datasets.ipynb | 390 ++ api/Projects/Project3/project3.html | 117 +- api/Projects/Project3/trainCSINet.html | 3058 ++++++++++++++++ api/Projects/Project3/trainCSINet.ipynb | 1047 ++++++ api/Projects/Project4/project4.html | 56 +- api/Projects/Project5/project5.html | 52 +- api/Projects/Project6/project6.html | 52 +- .../E2E_Learning_for_Physical_Layer.html | 52 +- api/Projects/Project8/project8.html | 52 +- api/Projects/Project9/project9.html | 52 +- api/Projects/Projects.html | 104 +- .../BER_Analysis_of_Hamming_Codes.html | 52 +- ...or_Physical_Downlink_Control_Channels.html | 52 +- api/Tutorials/Tutorial10/tutorial9.html | 52 +- ...ombining_for_Massive_MIMO_5G_Networks.html | 52 +- ...ombining_for_Massive_MIMO_5G_Networks.html | 52 +- ...n_5G_Networks_using_SSB[P1-Procedure].html | 52 +- .../PDCCH_Blind_Decoding.html | 52 +- .../Tutorial2/Tutorial2_ReedMullerCodes.html | 52 +- ...G_Networks_Deployed_in_Indoor_Factory.html | 52 +- ..._ToA_Based_Positioning_in_5G_Networks.html | 52 +- ...rFactory_5G_Networks_based_on_UL-TDoA.html | 52 +- ...orFactory_5G_Networks_based_on_UL-ToA.html | 52 +- ...-AoD_Based_Positioning_in_5G_Networks.html | 52 +- ...orFactory_5G_Networks_based_on_UL-AoA.html | 52 +- ...nce_Comparison_of_OFDM_and_DFT-s-OFDM.html | 52 +- ...liink_Channel_Estimation_using_CSI-RS.html | 52 +- .../Tutorial3/Tutorial3_PolarCodes.html | 52 +- .../Tutorial4/Tutorial4_LDPCCodes.html | 52 +- api/Tutorials/Tutorial4/aggregateResults.html | 52 +- ...ctor_MIMO_System_for_Outdoor_Terrains.html | 52 +- ...el_Modelling_for_Mobility_Simulations.html | 52 +- ...IMO_System_for_Indoor_Factory_Terrain.html | 52 +- ...Sector_MIMO_System_for_Indoor_Hotspot.html | 52 +- ...le_User_in_Rural_Macro_Hexagonal_Site.html | 52 +- ...l_Mobility_Scenarios_in_5G_and_Beyond.html | 52 +- ..._UMa_Channel_for_Multiple_Frequencies.html | 52 +- ...n_Characteristics_of_Outdoor_Terrains.html | 52 +- ...n_Sparsity_in_Wireless_Channel_Models.html | 52 +- api/Tutorials/Tutorial5/tutorial5.html | 52 +- ...k_Synchronization_procedure_using_SSB.html | 52 +- ...oadcast_Channels_using_CDL-A_Channels.html | 52 +- .../Tutorial8/pucchFormat0_Tutorial.html | 52 +- ...Link_Level_Simulation_for_PDSCH_in_5G.html | 52 +- api/Tutorials/Tutorials.html | 52 +- api/WeekChallenge/challenge.html | 52 +- api/WeekChallenge/challengeArxiv.html | 52 +- api/WeekChallenge/challengeOftheWeek.html | 52 +- detailedInstall.html | 52 +- detailedInstall2.html | 52 +- genindex.html | 52 +- index.html | 60 +- install.html | 52 +- install2.html | 52 +- objects.inv | Bin 86331 -> 88297 bytes releaseNotes.html | 52 +- search.html | 52 +- searchindex.js | 2 +- test_GettingStarted.html | 52 +- 384 files changed, 32675 insertions(+), 382 deletions(-) create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_10_1.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_1.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_3.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_16_0.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_31_0.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_33_0.png create mode 100644 _images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_7_0.png create mode 100644 _sources/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb.txt create mode 100644 _sources/api/Projects/Project3/Generate_Channel_Datasets.ipynb.txt create mode 100644 _sources/api/Projects/Project3/trainCSINet.ipynb.txt create mode 100644 api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.html create mode 100644 api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb create mode 100644 api/Projects/Project3/Generate_Channel_Datasets.html create mode 100644 api/Projects/Project3/Generate_Channel_Datasets.ipynb create mode 100644 api/Projects/Project3/trainCSINet.html create mode 100644 api/Projects/Project3/trainCSINet.ipynb diff --git a/GettingStarted.html b/GettingStarted.html index 027fa4ba..82c9d35d 100644 --- a/GettingStarted.html +++ b/GettingStarted.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_10_1.png b/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_10_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5b0f450e99081b8210f581585b94cee5cfe6e8 GIT binary patch literal 28840 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 WzQvcH7mT0-@Ge`2Z4B#u=l%;b7;1w6 literal 0 HcmV?d00001 diff --git a/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_1.png b/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4aacf9a2758289ddec3921f5e62225c45de49dfc GIT binary patch literal 58262 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 J`~-&`{{eMFB*Xv! literal 0 HcmV?d00001 diff --git a/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_3.png b/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a313ef2179e43f62bfb84e50121494b00a5c91fe GIT binary patch literal 34609 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 literal 0 HcmV?d00001 diff --git a/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_16_0.png b/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_16_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a7224da87ba19277239f25a2dd1087a8bae0cced GIT binary patch literal 45848 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 literal 0 HcmV?d00001 diff --git a/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_31_0.png b/_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_31_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2b276d5bce59a7124c5b5c3e932faa3f63eef736 GIT binary patch literal 57745 zcmb?@RX|l~6z)L<5fD)tX(Xkjltw}n1Oz0cJEXfy5fB6vlx`%YyF*2!C8SHbQ@ZZj zGjrqN-naX}FaqbC9sj@9S8Kn0CNF&*iwp~eLS29ISW*dvx+H-@p|xRRz)u2>g{$Bj zzoV48qq2>Oql>=1F-lI~(bm$&(bC+2+S%CN!Q950oBclfJyvQnM@L%+0S*qU|Mds# zHuk0*V_2Ah@Fv%6AHQ%wp>F6SUufB)S>`Cz^!XFXhtFLT))HM@mFEwdMDH(CmWidZ zsizpzd9=T$$4tX~m6ui$h!s5D6nbh~dZn4`ilSm>RSO5xZR4MK=r7Q(_+P3Z82wCF zy}21~E78Yb)t6~iw7KZEQ^xO-=&o1lOu+_cOO68K5)#$x6=O>SIrs{qXFRnoo9yPi^ln9N zyC$_3F+*9OW4Mg5g3~yS+dtmwZ&nd-UJFWNvYf1|{;a}G5YK02Fx}+$JYVCJuP+MT z>TPIfhH{pC-Qi5g>G5h|bwzQ#+Wy+etm72#%K=;0u(DOllit<6k8GMzf*Vz@?@zkE zE-Nb&AKCk@rkl!y#ck4QYf&36a*QdZNFv~vojCsDWP5u%Rs0Q>>bvu}FL4&tSw-_q$4+yaT z^A&x6eXMn%E1uu|FO$V!o?T6NTO{Ldzk(>?(&2{>9~?I)DSX$~EN|iCkCa;w*E+Ay z%!Z4aj8#}Y&wkdter94~!euujX<%UBdb-_;{aI6IxPmIZ_h+$T>u{AF-R=9tG~(U9t;r=LvooI_ zF2Z6?XzeC)erSk;aakqzIkUM6)_0dFuh!blhLG^^8_AwK*DhbhEz?X&OzaA{e*1yb z%Ex}ME9mIkaDb)WXYOB=XK|fY2HKoBtS4$d6=>Jm|6Nkdd>Z?;&TV&ma&x@e;mOmd zMw4}JSFT*Cs`v7K@KO}6WQJ~|cbYlRHu}pIB6~m9uakK72@@FXN|PY=DkBJKpP<$3#0kKJH7G4j1xJP4e7%f=co^ zcMJR`fu8DhvOhQ(WYci;V|~5Lgxg`Uo1U857mm(Dl2L7GtdhfOv<%I5Seb~BP%4~K zc(~C=RI}2Wjj#Sr#Eh7L1fPFkAh*Z9CCdB!$kh8}{eJCy;0>w;So0ZHV-?Q}v`9ro zMcbn}6r$O+)yrS16r5eB5EvM(bzJBq&9Y+~D%3UYO_PH485qZFaf_V%sjV&Nbuymm z7GmAGmET{`OIn@lJYWU=T^otSB4kPFU(Rd9nGmiZaw#(IAVLW^tr(dqck3oFGc(s6 zuYBRL9*_C;>)ESUugrd>p!H|UebeJ4_{r|#dVaL1Nbm+$nt=9Vxahf92LMf%hjbFyxAj5%%DND?|-<2`lqI;rJHI4u5Y|dKPdA|*|6P`ll)Q3&em?L;Eu56w zfZVzz32+_(9$N}DW?gAG_1__uC}hY+zH9?piN4H>*1Hy_eS*jVn* zdQoYe=u`{$2}A)`74xcx1;%J^RWuHoSYo=iVi}k z5*STTk=uU$w5{sy%aBELT}lny+S@B{KRMX!Sxokk*VCg;6m-diEd&iJid|c#)TC>; z+QIb0iq13P031?rC~7FPf$R?xd$4S@8(KR$JLi%-HvaTVQyD{BD6<-inymMTjE!xB z0%H#4FX`Kz!iHlOSiYB2q{AtZk^rAz54EKj>XO##7{-3hYreWllPTn+ET!^16T zUzfLbIyfRfeNss|o123*iW+pD!PWIXqDR5Su&dHiQ90gQZBDmz zJgk1azb*@}hBkw9S2b@sgrmW>qv7iow1>W2mAmK1s~k1X>oTi@`TWjnBuKM{YWT5# z-FajD$?iheNWI7X^|8vuNsmo>9v%YU@82ck_^jIFZ5rC(CM@@+UxhPXINY8UIv96A zZuZBI1mPn^1}#`fLxk=A80uox#rerKEG&cJBK@aHLi|(f6IMfH4hx;Bu&9hoOpptv zSg0e6^vC*x$qu->!Umf9$!@41CGp?6D(KX3x8gQy;PTw`MQ-cbT>O0-B1VOz&hm3z zpEG*v+I2p(AnjV`5jH_+6(~t~Q6lB$+DNIv?2pi|mV9Gv{r&wdbm2m@sO@3H@cAz; z@^E<6D6}BA-37P5!=nxNtw!f;8!=u#d|s%djhe}b*0~iM8|!>R$z%2&^}R^{n^uJ> z)HGF(@l+_Tm++FIh!+@-jEtliv;<$mgWX%ASpjGLAu7s*QCUT$Gyc8;Y6k8Qac=G? zn-3rnbZQ;1J(cJ=eyi1AsS*XoNdw=AOoz6r7nAUPvvulgkS3>+^yw4*qjw}UsGGNM zTe!%*!5g%|r=(=}KHF0ZJRZnZ>Bw2%&>4dMgiS?7g%;G*B(^>M`bO|bscA^QW@Yf- zzkh`)e}}p3uf0gk%{2o&h5GKXS#MgINzcp|Mi1`&^tIpi@J2Zu#>qFn^v+n%dv_s<9Mt-3`0Z1L`p_x<|k`ol|A#bi;}emyDzCKR?%o_Xqv4@ zV13;okh(5?z54d6$5lpP$zSmGw^_O}3*u*AN%wvJhq zIxZ^(4yk?{IaxS8+NHg7=ldVw2IxXJ$;sEst`n7MTWo4cDSppN_I_Du*%C}Bu1N4_ zb~bXg`iqt6$y%|LU?u<5e1XtEbq<&0fo%%vyYRvI?9Mqct2#AmyOXh=>R+KmQ25mnGGL zo0t3EigD!x;2tKF9sJ$m=wh_4H#4fY&dnj(@t4^|P5C!sRmBGq$bFX{`enwWK@|s! z*Qvm&ufJc)$mlcb`_6pFdX)L1Pj>=;bw$U|pLqKE`j_zFu2fEx!0LVr#Ucd0YW0eR zr#yE<_X2~~TZe|!0K}@CZu(p}R3+wf-|@!-G)Lf@{VerWmGgR>ldwxdYF-|z-Q3Tc z_Z*j=p#}X2y&ZB_t)R-d2X-(zwWB~HbW+@*9L4ki)c31Yp6@MU;XXqxJ`#`!6A?(1 z7dk(joq=O>Tgg6q-*%+b74oXA8M@I;BBF(zd*jX8rrEHOaiak$!PbGoQW0svu?9Dj zzb*{$1HLaN7S=6d4xP?&Pe50L76z+kgaf2;0#3OoNvJy%)(3z46&6=ce-U990x zC@4#9rW!8cK|!{!(zX+n$Y77}Bz&%dZaZw192NEBhUjV2`PoUe{d{n_=GoUb*eL7P zh~W~4MR{oQKc;*xLYwu9!lX`)j_i(hjFps>m^3T$#!irX7;-iY)rJCf83V_*O6blV zf56nc(3DC|dnh*=POPI3uDfLoLNyrJ@PL}{HuIJd0mx8fXDi06OWFHt76D{!*y=LM zC+I=pPk3PWYIUg4kT2dZzL*-CK!#4eyY;dTUa)L?An+OGP-$^LGH!z!7kpb|(mh8;*HDWx!wT zNnRY%^)UvFxU}bjOpD zhPf|v?-GFNS>MXw8aTUBls~B7n5Y#bm$3r$5=zE9Gu`|es6oarzrPyqvP#czD1~AG zoGez~a2YEPC^g-Kx}aX`oIf;R8`1s#a)DO$CB0CJzQcuh8xlTC^`vb!4UGeBi1Bao{xjMO|yvX~GQ`-mv)~;jaPHS&ao|y@@HBSUSAtoeJLpDx~1ng`^U0(ovf9T3%R}@7M;z1p zbX$6Le}l_@?s0|9lss(dqp6E?X(gpwFJ8RB?BHbR?d`4JuZINzYbI)SHhaZNPY(do zI+n(!22d#n^svQKVEe!Gy@;=@t1XrocjT2oryz)IlZ0w;?Z%Bt%?r4CbTl-6fDJ`X z*0_OShxVG4B@wSTYrkJz$6WWE|6H}Vb%lO!Rr}l2R5HM?V)K3m7PSH#^<4f%=|~1S zsQT2)%ggKsIOa|PBF9T~s`(l%z;pBKxd2axjgdNzdZ`b{SJ0)Ur^oVHk)fzOxBU9& zFyuC@Im&CTir_8Dh21|QsOm{1gJPq%7gB6wIqD_5;&_jsf=vi`>%)aj94f73vfU@| zwT=2bEwdx8SibtIK~pGnjkLWP_=L?_i=m(++~Fxb9x}ISzpLcuqk`V2u6|+BNlD%C z2jTKrvv84n_QW15C@jvjgj84TN)8zy%NUBoDbSL4B=^2%=+~qzbPH~NM#zhx^E(Pb z=U<>rtQHzdOBiY7_@iSJ*+L^-)Y#bA8w`*w&~4nXJ&NTvC2tqbm-aU6me6^FRjwmy zrENnGMQ|`*6TmQ;g^i8((|Eqna*Lr7v)(kJQvV%;)5Gnx$@+M>9UtG~Gup%Io}HZ? zO;^2(Z@agm(rMyQKtr^ipj&PKrmT!7uwLR#j$@(9Ix13-nIE%zB(>Yu`ecQKNs|EUgO=TtiL}uj~}E1Wc2sJ`uPNe3^K2Jee2q2`}KhK(+9%*Tj8~%7lBPbY8tm|3aR8tT8`3eRGqE(0- z&EZE^h6DvsGcaJ#_@U1QeN>VeA9zQ)hQ-ZtMa;}PtcPcH3rjDdW5boaYev>wclI$t#!W( znpQg?NnQ2b1f>{53yx^fi_`u;JFv@?L4Z&#)ai2Q5nlY&(dfEuP_V1@5!l|9METZS zl`nZxvpg^4%T|R!b*i-9S*1(euM}-k6)L2a^f>4oF-0wvLr6?LE{= z3W~vCa2IUuk`uxx(261zMA}+Hh(RyhQxBhlmXiaD3K<7r z6zn%pI$|Gkx(nwqCmALny^)XJ8~!=jS=9XJh|tWBigLCAv9IWRWdXoVO~ zv?79?GB4)1E|Vnhcpn*~UJezkZ@GWY%(Oq;(iayO-wAED_y1z`OOKNi zcy!>lKLDXwP*tFnMki|7qywBQd-)p+B)FJ+hHF^AbYKI)PC#+mPB&?_VSr}wXY0?m z>ZFk`YK6{Z4@3>VV}i0W+~DO=@G4f&c}?&9^eBmojTnk;>A7#8da22E*aa=Et*xW- zJY~lkHjQT$+Pza9(Hy&Q9Umm3s^Ko*MQ?vti{9I}H(FtJ7Z@)s@`Zs*&IFvA7B-uy z9M#%zar)z@Pdm%KoSiGo2J>Q3l8+w;RRLy^0yrcE#Oh69VPQF6NczAMV8v%BS_Xzk zIAlDJp(u$Xg{j7KFz?0SY~{<}GRTjCG^;WN(^7gL{_#}4p7=rc*h4?;Y`t;{OYHFI z=sn-BdoOG_W2_@)djGWC0{`xF2k=!IfhK-T+D`` zm|Z*n36LDfcr;4(EC~u(5ZYyoAXqAxVjnqlb=D?o??-!$x;X`u&Jvb&KP%L!&l_uL zX?dF@>=Ar;=-QhhORQL7`C_#?Nz|u7S=(VSuoqPDVC~WBTBiViJfIRUK)AscW7Vqq zWn9|;+8A08U@}21Yrc4?o+RP?^+M1t5M`W}k53fMM@C?lG1bQq20-PB{ncF z5O&u%%XKhmkcyVtzkG$7jL(t@5W^jWU<0?{EuS13x037HkPmZQ?vwI=^X4tQJ_w{1;=|Zz;*4(6lCvvUuZDoa`WE!I zAn3mQUMMrIMsMx9t*_W=&g-MJ)YM|n^VAjpZcJz*_n}AN9!L&_B-|$NvXwG|K?ZVi zb?^ekC=Gx&t&orw6!0KuP9cDluvJt-21r>ti;3AZ?tr$z0{bkFZ@%tfp>{39q}w7z zZ;g}1O(5a0NTeJc%aFr&U5GXP-km6@UD5hmK*AT4*~V{Pc^c*IHS*rPUfvgHE(nVa z0Tu5i9v=0}!93<9ul*Nx>!anDe%Cw$bs*-R#6Z5L8nOlK=iC2TBG87|dQP&a-7#st zLqEirf_nTmLpC}% zkkb7z&&z?I8kHeP13#e=4_?l}^$c@3WfnB&COmG&KIMfI{*)vJ#|N z67{)aB|)f>6ch99C({C1!{Em|(lnqlU#F&Yk=2dd9S}*I%-P6H*QFH+Zr-{@OLpIy z74$KFJ1Bx#H50&7FX17Kqm4+qst=>Iv{Xu5{1piZD4>gnVPa$B`}z5$L2F9`ayJ81 zon>qL%@(fdW6X})KSztn#L#UBp`z0=F+Jun?~|KHd_3|drE99?czTFTdKsYl>($UeezzS;>CsDvj2JVhbne~JQ za_6U~_3RcCU4jwmeOaU@QIHW~F^a_oQs4kF8W0>^qX&RmX!m_5&~% zqU^}#oY059`^RD9Fa%8Xy`^Ov;G1h5yYj=M#)}itlG4&xeg~5$Uuc<8$kBgWn+8m` z1-SC^{mbLBbQjE~*+8&i+fQ$9DgZMM&ZG1LV~&6xWaLi3Qm_EF&rdd^%LMK)FaUg` z1r;&+?uoR$#TK+=TJY)601#AQU`dAi6|HH>5X6@$( zI#@ODp>yC95J-Yd-Jhjk`gf_9K0odsQ;@zLRErj{4Mr-gZa;bQ>Qs^I_Kbm`jv|pgD^{IJjOE67 zwdA8mX+x`u1TFfZ@lf-iEx%47?E9-^EG&(MM-}PxV{VmpW3|~=`8%~ zGXJ`pX0FDa@6(t-oQ%Cc<=M}IeeD_zJ9`)?2^2*i$M+8ovY@%<={6<-1TNA4h5=>h zN)s@W5Iowcx3^SO<^eC#@bC;|w5|MSmkNnv!upZVkoklq{9%plCih2B0^HpNpph1; zEX>YIl)wD_z;%ln1;7d6HPGg75fFTbUO~cd|GD35e{(7sv}G(66>OpCf8ExIhtMAE+0iXoKMpoc65N*$R}i1;^ykD`_B)LsN;2iFs^h z#)J|`#0A~(DMO^TdjoehIBf!n-8n*c?{;hqkKzpSCvuwFi;6aC$;W4ga97{0G5yyy zg!TR!n!eiDM}S!P3PR0LwYLurT*d}xN|=R(6SI=sgTcgrb-DRr^*I4wMphQLdEcEc zNiANR)rQI@CJcbk3;-5D74O)8{y3hCn>&_M{}N~}6&3U@R&4C?MjktPa*xt`b4_h+ zi_{vEwThX+`2h8LwYHXX{8sn-F9_+a4 zMVeamk(a~aK*OjzKAX#x8+Ct!+?$ubbJ5jbeYQFRHix}-vpfENIBrUoalg_!RtmR@QRCz zL7KD$d@h&>tNm@8QAw$CR=?sGRW?u%`CT>=R5rlC2G#*L-C0HI_3PK5d(gmjg!QgI zA7=Tp@@f~ zl%rY64!;MvZzKuJJaW*xK&QSPT;ScZYepXSEt#4b!f?Me_uc{KUO9-o%a_RSfD!(u z567ehhnhhl$&wKp7ncYeq$2O0?rtKG6CDA7JZqJalOyzfEH6*Q5cwqLDT6*={2RQe zkyPFnI`%3myC28ed8%`B**o6gRnNt-ch40pB}GLs%*@WdY1Z3vkH^7y4G@CZ+}vEp zD-q7V1q7vhclQ|q!Z&j8LuYrQgZjlVxwryg{3XI}O_@MW?;(0l1>DMIGldFw_mh)0 z!g$aIuTU!~D@*Bb#|<2Z5Ob8+&&#M5XkAlhktx)wjsRN*-502X?b0tAVA?H}Q{J+# zF|Ol@LofIn@m%wt6h#|b*bq)+J~+#;6WWi@z7#ghz!%c$kZObIeZVUMp*xoV?|Jq5 zHIS>Da0xknZO?Izh!OhB|PIOe8X>SV;k(y(5Et9>`) z86DBcd`jA#BrFT?T!oU9^a+@@P}xdC-c~{0;@9e4bpTqfYJM>6g??>C0;myB6cj2M zKKdFzU}azkfHF3seFJI$l+xBuch%OqJwO5jF}tkvS_&v~h*t^Ri=b8x))0@)WCAQb zxahM3nP4>lErfbcLrn7$CqaFF@rqXgnA%X9kT5u~s`cW7P&pS>(Z- ze+28jt*tGC%hw(H2&+!r@R!RX<){@13zXRY5ii6|;UmF$M=2Z!qJ^tdQ&zK{9snd& z;dO*l-wpba7?VdsFx}#>*NAbifey~#DRZ51u?SiEzxxBuASyBd$}G!QuA0s zUFOO84tt zP6nJikT;E~DfAW#_W&8PdYy2c!pcbV`?B)mpBBe$9?k`)RnfahNw5FeTsb~kUMd*Z zj`zm{C$X?mJ~wxvuat8rhtuA)#)9K8!JTLbR-abCibqw{a}OCAnHf;+p~Y!%+gU2A z5CVP!VQOuF!Dd>u7vGvfJ0mGc8q*KxJouIK$b)Bw zs@Ji9j9K-a=jN{L4LuR87_rrr}pY#v24EPF$0Y;tA6o=vadHg*IwF0eXBd*k;RWMw|3WsK)@W6`P zBc=5(BFZfN^sP&P2gE<;8qna8KkDo(^SB8nZ#okeDJiKlANrLm)c(}m-2E)d1aBbZ z1C_k?s-pk}l;@Z(liEY#E=BJ6F6ULjl50gjRzCX6iDLqfL*7OpGt9Ej@qX-6XQ}hx zj?B)^r-H)5c8S4X;dCs2_fJhV4sX`K8vcAeH2Hzu*A=t&m{eM^A2@9>G^EHm?3A|Y zaoR$4MY`ukV}h^*$fv2`RUGZ(tdCbmE;7o^bdhqK0bMUXz=2v803dGimaqiB6Wj76 zq4eB8S86PYMpL-H-V~FSupb{EKS!fHw|u<~K1uQij$5M~m&xNFIQ;#++HMaml?Ymn zi?u}?FB~?g^d?U>ORa|37kc8Q;R6y2HgS(AxEBu+DynLeU$sv(#}-KC8$O)x?#`)P zT6)|wQ+I$x=dwtljaMi5Dwm|!AfVHvbT2xUNZ~{BI3GsqhjG=+wl{d}9e!H&a>SX8~2A`WMY&I70p#faIXEDeczM@2O1ny-% zZVNOFt%~ZD);bWO0ZGzB!eVP{OMH1_?INP;piJj^el%m@UZOCakW|h(X~aDVE|Y8~ zOZa}#6_X0G9e@yCoixsS5>(!YG%;PC*LajvkVFur$J)Ks%alUImHL7QF?2evf6zxO zZESvzeAt-819z**i0cD*=byKE0lhN-6y*iwzr7#s{!=jRkHD{l2txv|$>Z8{6tIF+ z;4pPN?ROmkKRny!1uP3ufb&0~+#y>Yy+Ph&7mf!i^*#NsSAK+1#BVyax3_~?=?8I; zceAbG2nYs&mz2+v1fZuxR=?f(soVMH#d$bXaEIkSdf?l#@S9j6H!iSXF;YM$ej3B+ z2aXMSWE;ZdMv4uuLflN=>Qcvz6c8;4%sZduI0aDpoZ2B@7M;%k1FjncG%1;NR5bW8 zK;J2u=t|d40UW{q5sK5q#&BF6gj=fTKzFO2({p1QYvr&?9E&F?~1n2E~gGoG zx_cPvbrhaGd(S(esiI<$`i)*T>Q}vo3wT6d5ix$M!HeH<3D3^X&ewtQ_XjzsLXf|* zhs;yleH&{vqhXbJp0bho&`0Uof}NWJ#>U3Iknq8!6#6-kql^Sf5a|u^y?_9hS&l?N z*WZTZ4y?Hr&^aNKHw#7Da=hvTxPFTzYPIqp%1cT~&F9pPShg{Bl5$^(5`RxA@zK7l zx=rX_Wm|qgvmPEmhFch~Q$MS;MQci_Jn%d$;v@?d$E4{rp<&l9xzMUJ zBdT>t2D3D-B|}!c%&PYhs#?Td>gL!(OuR9%CGxz>LC$Pr3jzV_i$BWb*b!SCTv!Gu z3lE?nJ56SRzHvC%#EW#sZ{~kzJ?GY{DAyiD|I-oZW?v<|5NT3LD&n4TcXZ86oI!%5Q<%1|xzD zW3p#ot_4VgEvto%>|ks$fB-7_^yxeGB0WDRDu5@qd=F1|d!!KMsj;!K3Uu%mP+uHI zY&xKf`0tYe+A%M%C_+sBMXoIExFlb7$SJ9K!&XBJ^7p?&M;3|S*2axs${ zNO>!oL${(}Dplg@HW2R+I1D93s(`Joh`34eSu_#>m^7@r_MxCI0+S7b*i&zgGNT}eSLj-4*nxa zHq!9sDxGn>9rBqIJ`jGxt!x|Fx7?mP(fsjG8aDp)gyVUh*~Q!7zTOgJ-n2Bw=Xscd z`#2JTH+q>ou}__69keh0oCKSSOk$xdnivRt(;OMy0hJ2#rTW zE%>}h$V)EnJ1D2!Z?K80Z2!C(tC*8q?doiAp8e+G%ksH6hic#lK=_6)h$VJVH9-%)iewg%FcG*eQjju3A;$a- zp)C}Wu!O@r1?>ZN;4NQXi$U8ltIB&$E6=~=cdIve@*}A+IOgi8qvK;Fxd<4RhK9xy z1U~0)iIul9oMTuSE1EyOkwfohuB5p9d+ymz&L02e?D`Rg^+KZOs|EQj=8;xmu(NTPs!%e9Yfgq~i z0k5a1?k5xuxX2zzIw!G!|AJWD_UzaRoR=REu>fg0w#{L9S?LdfSu0(XP`WhxC^@9f_0P-Qp#CxDxmvt^}GPRv!V=3P!B&ofqd z^az8L)a~lCF^q*#jK|-)(n3c0KvXPeAIh~%7WRk&Jpq;bJV)HjEStAzzen@}?nnSQ z%3oMP>;WPlM$Rt|r8{Crl$RnTwE17Jv+-$`9kEYjdFrWMn2j= zZtg8o(l)TTBpy8q_?-#2a1{L<(#`|!I97?sI}{ZY&1P7o*T37v#;WXk*=Imju9E^* zz+ZP^pwvM@m?DSMm*IxCfaEn&W*({iH0}o|@NYvxBve$OR2!)c_ZxAIBudxo^gt~5 ziL7j?NF(pNM|7>>RE*HHAqv82^b-%N|2Ndj>tkXrUA^dt%?(mu`RJEKD%0i@*mE2Z zlrw@fGZG%Tew%L#WJgY)b5F2j^aX{jE>Bo(z91FTzVs9I621}ewV_t}Zi=l_i}2n^ zQyd9y=X|tHT8}oSHcY5TfO_qlQMF+7;*yrttkN!aXZiK_gL84;aPbHTjI;~Zr8^`q zb#%^DoD6k)=rsQTiKY5)pZhV`5_$Dxu>Gt&UIXm|CRvMmnJ8~M5uPs>=J*#722oVG zcEN-Te=>8ym1nDa?yJW@1O`zn&|#q45+hJ20Xx0-G3*;8;bFgCsgxn38jt8eS?M6% z?77AXv9X1M-VT@FsFF%b5#(k%$h5#`fo#8iX<`>UWfD~SJs-Jn0Q+_`->v+ADDXF?T~Bk=2Uz-PD|f9m?@&Cco8ha2_n@zyC(pE_zUh`2=6qW?cWAPwsgfF zY6~PwplhmXTOMTXeV%t=PfXM-ddjr&6U}C{j2W6r`M!|=U7xz zWCyPoj*6g;)ZrxJvONEJ#;mL3#By=I`spukEGL?wAKtWL(-rvt!;LS5@|7-sx2HW) z#K8V}1J(~Ggi?@k2k>tZ85bh3uX%N{VNrv%6Agix7=Y!wpzZDe##TQ7)Y1-dA;gjy zE;GjmrG*hZyCQ+)4KDDK0sgcidNrhbv_|A3#7Ytb`)r~eyqxubatAIz<6y*gK>KTfxdlWG z2E7h^ieO}j1v$sf#*01(D2tr^RYp7|`9y&hMA`=HV(Ir6wPtzsd;gB&FdINxw@oyf z-H!3slS0#+@EfowjNgXeNc`)*apk<)@hyaOqsnsGfqv_H?GZw2$^cx0T<)r>2OxKu zYiGfcA(b}G+-V2#Qvr%80{kF^5j?REpO^uV#&KofEyOFgU|HAt7$iK)QKENV8}=Kq zT!8#q=EK(*2z!EJT=c9E^2C^0Fz(GV8)NctDbUVC|Dic5l3G1s7*R{wtqx?pYEAvb0 z=0NyiuKZ*UilufGHjRB7uXaM4cCRoSn;fK8v0pb&@9~l1U?3(opvSsn0Z>Xqppa|+ zr?kQk*Zxyld9)#+ESraDsUgr&lu2+fR=vyjtiscOZx(<0lFI_AO-2GdMfdvb=f!Cd zTh9U;ac#U>SyC;VI_7Q;?P-p zrY3zN|MV$=?=Z|R6c2y?O=>@%K(u(&r2x{;S1m?`Wh4l!xr)QDF=fURjHEX7^4mrLgCGnG#qss)m$;;y)2&laq-v@~$ZQ(%Ri zI&V=!D0XHhNjUFC@hk9EBB2@+WNh`@J&0R)c-yX1hvF59Cza2Thy+3RdWX1@@ zSU2z`(O`u~^TxA+M5M9M^g(X)f+4ca`a;S$5*7+fLqHh)BeKD2H)=ZM6%^pmE|D^_Oo>})Pl z!G5Mk^k^rLDgooO09_WlTN|(N7ntC%aQ%^ZMj*Kn1Ynx`44upPWDgai$lyyId%aHaZ)4LXfi-Y6nE+3*n>@vq+ST8u#M*60A z8yp)|(;R3WxU=8kL}5Cr^OIaAQ&gKa@CVtKFLU?Kw4cdX^*oa|;)^{Py9592WN=7J zuig1-5;;Ia0alp)uwt^cUY&)Hc%L!S{CgM_yl(QsvI4%Ngw>ga3EAaA?{oIJ${RqGLcUYl zXJLA~QCwYm%C5Xh zf9vgBqwfe#Yglu7xVRb96%37Yk>hNsjRm8`0=?BHb1KkO;4=WUKW)2rU(MVUpjCA+ zpFlbkY=pXbY*e?(H$b8i6#R!EyThtS(g9E7c;4x9ep@5TW0PNb4ar1DzkQ3_R7x6PN;0yr zV8H_YVhMp=q`zfnGYuAKcL0Ze^7t_|z$Gv$QAI{=w-}zrG$CFl92SJ=t^y8VH6IoJ z;}2rA2&9CyitUm>*TyF#G!Bht3;lOs7VF!5$6)xzl+SvD!x0xrXjD>iAmycaJte`C zQnrq8s;g`!%k7`WPij0z*nUGL%u6mR;v|rwVPOe|jyLCi1e$^k;;Mj~Hd4N0GN zlqCg2WNoZP?hIn+5VHt@js&MD0Sp-C4@<1?Luel&P*z#}{@3tfb~JtO1iBQdkSiyE zIxq{kffz!T$&BJwKPL$egsBoh<^Y!S6^c`S2NIM`V?w4L0U6`r;fX=q8Q58fQz8<5 zgnL!%Ypdy4RfvV!E}HLkz64dI5BEEZs@*1 z9^;VEIAqfxaMg@R1%Q=Y&-R9P$9*8{f~;eXhC_p-)idC$;}HD=M;{L;6C^Y&<;)<- zO#<4j0W@RP+Y`$w#~lBm863j9;w`~TX=&MmCG<7fOkduabT#$dFzIpLz%(~9)g0{4 z);w77wiK264syuPcck3IwJsdMHsIvPt&hN?hmatfuIDy7YyvSA6)1a%z5vk_$U0mH z&c_AfMrD{F48#KRXa=zl88RJ)I0Mwvj`B%(Lm=n;Fk`h?+)6nM<6q?t!zd*AfhZzy z#^w_>ypZvjgM5I~lW<6Zaf01#-FW6~VG}1<0juYRk+JbMkahvB0)7KLO)&vamh1T-r#U=cB(LBqsKnQUPQ+Llo)-!~0l2+?sP!#GK z66S!!WEWToFUntjlI3+kvMI3Q-8QNh$^V%{LevSHx@`x&Y9_+UGbD1Z%a z?e5YsG5vg*Ui$rYU%)>z>YuYQucN>IWAg5q_vZ{hIg03+&v3T~FUpCJ;Z*WUK=D)p zIcD_$QM&Q*4Tnl0p(p(H+c$oQ_sX_D1$hR7x^P7_jA7~qMjZte&dUCXXr7@!6|*{< z0wE4cb8Viies3_zg0!O}PvhwhHmH&_kg)%5#B~pdIK&M%A|!aMMtP8E_{I4_qgDr^ zEJGRtY~5n-m4Teg>Mxg{B>cC~SqgLmQ>bluIeG6~vAkp-f}bD5JpR|J+w;O@F>kXH)B-VUO@1$2$aLXu5S@SPh{e zbI&mAIS+iLVjuVaV6gspAiHkCQX95%0nrtx_)T$`0}la$36BJ**r5AA`Rky&Zo&vM zDQ*h{=aL>*>>*SXlKa*PD$&43A|XEmUUzU>5eSunweVK=;=9<1(aU}#J*p1q38L77 zEPHooU&BvK`lLXukW$aiggkLKVQ2})WDw%)3A4z~t8jxpLd0DOBFPqeCYlo}D&?j3 zvgG)~XR%ro2b3`RDWpHpWX-~lWjVanbDo+*QsTOp+=XQ%{iU-cf4M&_YaDeXALXm)C_jT3jYgK-uUtP1g!=%& z#iOF?5!|eM-DYF}GxB9NQ%SJ2B0qe12<0$F#7h9N#9Sub7$Jj&OiZW104$)@>DAQ^ z7-9Tc+9M*1nD#8s^`MD3|Ne0K^5vW2aJ_!Ex0j55&ShbUd<*#W%La7jEMT?ZYXnw1 zEP{IX6(Yqjc%2FFhYZt0MMg4&K($TT60%2BGGqu5iV50eP*@lPOndtHTxj*%nQ@qO zrT*;f{0tWmxyDZu9((}RU>nMuGLX0KWYHc_F0Wm?_6HJCNVUuW)dEC#B)$*N3iu9Z zD)9!3&U=or!0V9zaf+$XnqsJAk{NTU9r#S-`eDjj)TCsfwUPFVp`mytx zD16s0m&xXH2X8eegzgC1sieAkjEcfK`5Ca|LDQ6qb5L-uP($+OO>XWCh$w^rrrOId zz%2{{2CR$3UlH@7P*)TQTh`7t09B{u;!;Awve)n#f?$hjIWGNbt`XwpRRM?R%QXNx@5~3){4wH+imRx6h>2lB6?-1pgI6Jo#2=w8F+#ST zQBWI+Aj49*ev^cR3AnjPv0n2fH1+7)p^tijJ|dA=R52i_z(xE2yrSxY`Zl9m7bjB} zlAv=)0?v?vKq->`jNvhlc;IthhbJBc_c8rV`cc78ng*s_AF?F}FjusI< zg){djRHK352ZKsly9z^%Fj_|l=72BejT^*BjuciZvUvvg%V5~P7bcnED9tMK(`Q{* zChxu*|KIF2KRF_T7WDyE2Udt#v`EJYRRXWND~OK+<1_p-UIJkBn%LLxcK(WmP z2o6Z&#cZ_9?SJvX%-6v`y(K?na`25hAfkypEd)Gc@B-gKp8e*{n}2#yFBEn_0Y+va z(B?GNmQ+(fN*!!_aVEYPqFXiN2VRd|Kf@NJuK$CRB-9RL!}x}t7i-8q<0d#CdZibC|Z6m{0s4qQhrx( zk>Jqhz5T8U{NSDRfeZLSeSQ57a{Nl_LiwiN1cSKwUGsTj8|Frx$b)F+Uh5Px3JHxL zi&e5c&q|%lUP%1#L7xqGF?5{8UA);*PCr@sNkV{&3tW|m@Vf==F1`? z=*~Py;7LXX>yvMXI*SBxm2?*7Ugr&kVc0I#RvuDs{{buC(Sa2R2*g29N+4mH8>D<7 zG~9q2Kq{9JlNhQ}`FrKSN$$y$RJER@=X|jbHfO&@S&boMtc!%)@qc_SUYjO63AF?l za=@b?#=R;t8b0DffnUok=#2s2Y}|W;y#I}!Uz+V<#aN7phjYOm5;J`Fj@4dxH$8g| zTz$43N*b8@K_1_88>(>N4Ktc6pm0G($D=$FIp2-dV}Ofx3j@pzsw!mggaPQCQ2KjI zWpY@^1u-sT%n1*T`=V`~Y(|O4%Lg0={Aew8TkO`duTSHY!@T7CP%N-N%N$Iu2?4BM zHTo7J>WBEjFEL6te04oOjOS6e1sD#48V z{JSj@S|7BYkFpK6=bpz{4=GZ@@mOQ-hl4S?puqtnOVFAGCmQjHE}G5ij_#4LQm|cL zdCg^^I*E&+9@Uc+3V%x%iV@+pa4GvfIZ-L;b8d&O=w~P&YO)UO7if;+>bl+QzW8G8 zp_|0MicI8^&;A_fPKTw8w}!p-Q_hp$qYb5zhTD_~JLYC?eaaRhwWy}));B2<2DBg$b(HHEjZ_TS)J&|*4GRdzbt+P{ zq)O;7D^Ymv$65rl>xMHL?%s##oV3t|qqB}N?xc>)1j zv-9+jJ+ST^DhFHG*?-j;&VEG~cn+BPtL^)fiGax$|e` zcl=JIDfS@#J*+o({@%&Jp<8A=*bBj~_kW2gwfM3tp^V4BH)zJsalfT0oe5Jz&xFFn zUeHZdT!M`<@wR(hXe>+v#N<5KXzF}eu!V9d3B2))bXhOIrO7Z@yn~2Mz0_K}_=JZ%q2U@p5FHF>uAv5GG!&qg($hHE zJGa_=UW3-+m%Bs%>#@oam;%@o7IgmfZciNaw2tB+5!A?uz#FVNesGkWONs!jt z-dn{Zn2Sm}7W3)r!y=TvE=l)YwR7cP`%N=iqm<737xEws5CnDgaTgS2#z|!q6tbW} zBb;Bv>v&G10m7^BWR}O^uI6i$8vu=jtZgVf;%2n#y2JV?FX9p)vpvdQ@DQ-}UIQx~ zkKHb${~;I-yf!3H0PSlq#YoM->M6t4LHPI9tPRss$bcxclqY`V7s)%VPJJ#R750- z^`458titn8^sHWLjV;B-;FV2vI3`$_E5ntXi@hsBn`6=Wwa#eB zgH$x;3x13q_C~SF@U6BcnLV#ai*QkpEPr{qYPI0Twd;HESf}_VF-#l+nAs9|R(5gu zOofHwC^p81SjqXsB}&XxvpeaHO@rU|tUkggBLC$Rxh8Qvw_^(Fb8~n0Klc7rR(aaw zsz<|#5px-QGxf8h#k%bux1%n7bi3kv`9C_+q9WX7Qert7iY}$1GMK0SP&BfQR}jmO zaZCgDfEyBGg2BKaP(N*u{5nvDoLY}eO_K3^n5(U8Z>)`l{M*m(%|*WQFa2o->Bt!5jW5g04T zCw8#6JZmS(_i$Rif4AM9X)#DH&G-z1r7(yc1%V|9tIBF53jMFEwTDon-^4o8DR?|e z1S@=&Kf%0MyD2QkU{&?x&yMl@58W!qC&eH1wVn5Jzo_{8NcEh3?4cWcG)tT^6smqZ zGQOCv;_w)YmX?}U9PcI#lkVis#LmG2*E&4RAnF69T0wno?!ddyjH&sKI@yh+pe#RL zLKfT8fgB+ZTF3uE*;_zm)o$&-ASNOrp`d_*bP7mFDk;+4AT8ZU3rHg%4bt7+B_JSO z(jeU(N(iE7F81Ev-uwUk&p6|Z@y6cc6`to=&sz6A?>VpQcWsU>?mm)laf*+kX9~LS zT_g3-wz>J_*GbdA!s}A&a&uwgjg61*2jVfMsmoEu>4=TvT>^MLVH^XZ|450-|55yd zgA8}8rbT!UP15E zEZ4)jGQ{p0wlC~Gx3-p%h?F@|j@z>gM3YPL=juOJ@>T1i;4B5=X{2S~e6*YOZuYbK_l7vev3zaV z(e9qBzmZzAr2-twupDX+|MSN@64*@**D#g0#w!Am zpM)EH^hoogpa2|)Qg`sP4B8<_YXWg`*E+is? zzyV>Ll)wvz4FItv{`_g1#|`~&=rlts+AJ1j_bQ?Rg|iGy-@ol#4G0QCG;T2Mo?4eL zGmrr70%B+Af{z2oRlxBiz}#PD84fWZL591^`1m6xCME^wc9xd(>JHW}TrHKE{Z4ff zlQmM};^mlzPK$QT_k+M*IhLD+2)xE4Vq)H88D2=B!NDW}ElYS%p#c*4()s>y6(iTt z773-3khXs{fk_z+eGv5Sphz6gx+QFPEq5c|FtwUe+>U-U^Urnz0lOPXg|X0UHm%m# zznt^)1}?4^npv%_a+tdfy6uuWY#_@!SPg{9N( zxy=zBKxZyadje%}wCFQ%{V?ooL2t6_|+g0#nWMqUEzqy0-PXESp zdIP8u9!c|xtj7NM7g<9phjc)AgULZWw|$T9Hi+S+St)!ZHR?+B)@7lYG3^Hal!Gv$LNYoJ!t!!IWg%j91qC}52CokCfBLe(;ergu;dRHRV1z2@;!^)oOzg+TW<+8l z1Gt(&(2p~gLuL93lutut)w?`zLHiHKJ;suwa%e`(uP#2Op$<5?+iJni>mS97vPn5; zFj4g=RmKbRA!?vdutMNg+E7laj*!B4w>lb5J8YdM6b0@-)hgn#I(L7p#I_wQ3lC;= zja?*2^wpL zf}lY`K^_n)I`SFB6ZjRT75TGL&~}4C6awFa)~ohHt3SfQgU4$Knlc9ci4smuwXAi> ztTZ4%EP5_lYp$qKSSC#oEtqIWVad*nP@5nCTsQPde%GyZU!v0};tC3_TeQw(N6?#e z7FS|0QC)8iN};|wjt-42H^_o|d(Gvg=ZLATpnnMu*#>JN+3?3phQNFBdzv0ReK zzL@JaV;};h2DD@mV(aLxYDy8PaQC1qh+qR5v_AJhi{}eG9l+0Hf?KxVIaBlA#}+;7 zn0y$-w&+#uJW(+fVu(rTo8VZiD6k?s%vEjX}em>jzF?saVVqXUtVGONTAFXGt-DM!tYsb8% zv_cWP+aU6qpFhV$3a0vsJb*fD0NY=HL?R)@k6hEzusL|ppdkl6NYfzU7aRZr;I`k+4 zIEPRL5j=T~0;9EHv(wdw5#(Y6^qLrKjCvw|Yj0Zj=ARhj*5)dRX*k1ztH|^IA3n$c ziGLcZ{xRKGCx1p@zf+FkygiQUe6-flW80Xgne`(BT8<~``zi63>e?VueC)7EuT?G6 zA)O^B9f3{YYUPLZMf(W5iRkV3<{j6w{0T7=r9wT}l-hEWFrO>Hq<0m3*8{)KW_!Ms z;-frZPgN^M`TU3TtyL?bU)>Hr5zAGlqsv-aMGsO#Be+4p2lv*$?y(sraf-`phpZEo z63gum>030xUKurPd9II7hygpAOyeKcPi(9M$sQhO&iTnn9cf>743n7bx0E-Fj4X_$ zz%~gUrCg(BlMfE|(QSWyWO}m2(w&}7 zLPE8_A63gyVXXZGe~*ai()q6+l0|XP=r9)DQN6_DJKC7_0dW#k{_ERh;?ffpVqDJ4 zXLm&|1UCykZq(U3f1z^%Z9IQ2wF+#|b$1U@D3x|HvncF$Gg2_Q)~ftmPYcMVs%V-} zj-<&+)#59QVeO_n+F}aaGIgGY{hAJ?V^1O4rC->V;WkCkxS=xb;>jdg1a3zL$9 zce)G~S_RoG#6SZ*d2OtpS2r@eIL1*ZTz zwEss*SS&Dl@Px3E4bD9G?c>TDb90@}?Y;$@vBfp8xvM%qGDZs3w_vpzEmRROd)>P+ z(i6`L4w$$h3b8rED~g4~C5E@R#z{`j-(r0^uMTlXd6B1xZZ>&+vRuY!`u>*|jVe(% z+Z8Hn7ZleSZ>z%i1O{P2DO zIRA$E9ZFc(%wjiV1yAkHWrcjIH{(x&40aRhF&w*Wi9F+qrihn-QLU-Hgrc zoA>A!V5nX(^AL=Tt*xzyBLvoMk%jq|QS`c*;l%PI8=y{svp#Xv?$YgPXMU{B&A|S_ zwBL1hv~KMoi|-aL|A8F~ALEHFmF@baB-fQmZ;j7{91N#x%`FMy+6SHHJN! z4LpIX9siW`@Vp5ZFQ^*Z2OBn+QK+MTr=X&}u|Iv9bffu^khX|C-SJQL&gS>%zL*}( z$V_W!I9L*ne|B)BC!JYmdm`GLf6u}#XIu>ZFufeNfZzGGh+>ljw zZXb~*V%2rBzc;ED^~Ubr9Rh;uT3RNzMc`)gt`N-}<;og9!dU*7gK%v$&cX8&uC(gmfpl+ zn@O>2zH)l^j`(wEVPR*7w(sMuC4OZJ!m}Szw(tJjfWHb5}?drGLI=X=hGL3zV zgRK**z{AJSFa7&GkdCcGZAwmixzedChQ#@zb06@bxy7f%=GdIH$KWpdi=Vd~RW6sX z|FO6hk0NXC(unebpX3IQ%J+EtEcIt_VFFkOY8-8<2SuqmZc$*ZnToA7ASqh)J@C>KE~e{OJMIhe&Ay)m}>GobJ{c>-5e zs(!aP0P6I4|GJ=)kR0J<_Zmzj9#nLi`c#<6SQ{8+WT+5^WQg5Kazl4LOO5C7I31F* zJbBUu(&9gwpFhz00kOKligCGIG)L_o5fGSDG9BAOp_1C(k>KZXT(1HZ$HDfSyz|r$$tAOeko=cg?ii&ZK0DK zo7+As3CY#c(qJeQC5(;nV`GK+`2)<&OaJOQ=PKR`ChFe4J`t7>1Q=<*tG6EU5KS+J zaA`8~Nyg8$K71!#<8-Lbwtk;IbE8D}r1h)ycLN=B_fLa^F{Nb)CQ!j-RM6!#$Hvvw zRr{B9wn{jQVSiX?C~8FFk-Tyokp77MWP|BysR9|CzEP;y4yKCPSBlbUncp4Bow&=_ zgNwz8V)aZUrM{aT9S`$9hct|%$0wFv4T4)Re$AZiCX-Y7bdCKf0n67?H}MZ9oA0qa zJowEf9 zD_~=J`SLmI{lP0&J#$rq(}q$wCi>r%@N^cE+%*03tf0IoOrw^O$ToFf_3(L zdo5f9EGyV=FM)>phz4C(Bv`L=q3t)rWt<*^70p_NK13whPf`N!aBkk0zAu;s{bONp zV`E#|AvRDMftmIgM5K&H3S@t+zT5kN=o1MB0JC#59Qi;90~$SkQ&ZDF51g5p<9d+i z$#~-a&ZKHQTV#|ebDGQ(!{E7Ic05@*A|>xa6**Y6Jg*TCfM}X_d*$b3xj7NQ>F2?A zw9-7&;7IxmraA^NDMWf3#^ITH21!+wlnIg|Kz9U9p?9O?#6&S1Xu~O@lIP>u+FFzQ zyYE~Qqj5(4Hlpxx8&MNGI9rcUNX?hBlBWwX%GNDKlfQTj+$IX3{x;3cxd9C7wvf;XJx;spwGcZ?#xB(D+w@l=KT0 zX&5W}%FkT+M&7d3z6|K_qaYiMPVaq+4-fm>X5Sh1t|lS!!aNDsd!T!84^BhUAKzZ+ zh8K4?#a_Olg02(yaM43fK0dG9u*9gZjnvfeAS}5ic)ovDrhoI#*)a}?_&u)O#@-v# zqEb=$-C%GlwrVzUD$^as_{!zvx=;!Iz>Qrg;qy~HRwMos@0)%%aMZ<=-W`bIUR(vo zHUvr$z!R4ba+*}&87#yaCfV*7&E~(r8`LK9(3K2KlN2B?Yz2i8pOXD19&!=7 z-Kvu=y;Z5vQF^gEigdG%2IaEpU~(w1yR<52$OJ|=WIjBJ@k zjT($$pK;Gsz_XV00Pu6q*X^kSfy7|j+ZY&R+Rc|tj$I`+8W_&nOodhI?#AP?$VV}F zOYsTKRx!F96Tx4#TJOAP-!(qFCCs~Kzgu~kpR3epo}WsKID`L6;10(phs(GP#HUBz zKDV@wOkpyw=;5^Y8km1=nU^XqK7)p1PAA0!fQof<<%7Bi1hcfo{Mi1j&ebjin$Epp zRtb;Gn_itAJ<;{icluCoxpW=RpaEM*fqvcQ7cR?Eif^(ePxs#&H+F~wWFC>X{W{>Z zQ=g62+?Jfsl zF&#`Hs{gwA`FA=`A1u$$IM4t6a~qib9Q?Cxo6lVBI0x223$zffkVnVF#IA=eYSf;Q zm;(0Y+TSMh&sLXQK@J@CLV=$3RMP>qFVU`EQt+~P?4>l3DRRz8;vNGrDKYH;f{nw0 zYNqd2?Y*E3j+#j(70%2PBdf9MB>2SRTzU8xAXU+b^|3&W9lGSVnqZLd1;k1nAmCCb zd-aMeEYlq>A@o|;7C9fm1mp5LXF}alRRnza+H%DKz1po?v2ao0H{rNsF z`YRZ_)o7ns%Z5=Phep#wtZx9Jga19=o{9#HBQppN^S1mc6X!rCYY5&Z?!#fZ#IaKR zk9I!wQ()^IX0uVVMY|iC*!|XCd3f0P;+gtOoQN4KN-iHcwW(i0OrIFPKPs zLmmx}=C_1FCb>a%wHZwxr@$CC4igM#)_iVVK0mlw`(Sl=XA3tuCPi8SH=&Pq^52l1 z0_%xHy@V7`%`90t!;UD>%J?Cex`YslxwwoOk*a+LOc%x75=jWhSIr7|+gbvPUm zpI_9qRAtPTBvQy%GsMnSEwz&=KPy+>z%ZL2l~3q1>U~((Uu(xt$hlN+A7XYZ>A|5- zJz#ubfdKo>L#`BU`)VhrHBdeQfwA8;$Trg8HZg2dL>A7NaBxg0R$?B z9cO0PrG3&Vrm_krOE?buLL6`V_S2*BXqtwBh?4FZ5>jc_If_MH$tlnqmv(Zdw%|;d zLKP)CO6-85TItpC^5m!7>iXg5&&4h^VyrF!Wjqs!W2yCSe-Do$Y+Oa0oYW+U;Z>fQ z?;3#>3^)$&nf1H&Af*KPTN-dU03GfFB`Hs4j3DVgA>Ut9(RUA-FPl1*6~MeLJ{^bh z_15@8LUO$_))#DoKi|Znp1%>fe5IM^c)Z)iHO2X@axn^nx_f~dz06W1jS6A>XIFY5 z-1ZM8tyevkcVn3DIwtWdia=nJ1LGB^CFn{Az?8{Z^`5`rf;Q$uAH$>y+~@XQsn>}e z1>rel{L9QyMQFgX_1!3T-gTODVBw}@f+vFpp~X!ylI$oJt66_d;=%(;~k7V=^&h0|P(XIYC6V-zUZhQ^{`}Q6lQOo_@y8D!m{!&-G!Yv~> zh`E*cpsaZ)FPi)j&Ev*!$J zV|eb1>35Cz`S*8x^0~G{nS^5%343@u;4KnHe#30p#l|piT13x_Wx_mO4TKxBAij0Ri8PLjo9O zK`dba))Bxg;+}9KK%i^R$HJnb+6A4hL>#O4lG&X~1-gGMS7{AYZWH~QL`-5(4=D6w zpN(WuWlvQJ@LzhRN7hwtghd$dTXE#~0i!zfE5lT{3BqT20+IxvZ|IqcL7}bA=9tTa zS0SM}lz33m32_jI80hE+7YH?t2B%2atw986?E3B=Zk4l-Ijdp20$k1+3pt}t!D*m` zzp&Ri^E^LmaE@V=7v@y9VA{h+?*((?^w_3fK!COA+ilcvxqcnmig(+eG7MMW-yR_1 z)CM_Lmo=OVzl-xm>;!3BYu2i+B+KQ3(4AYrSoTd-1$()Sr>GfTG86)Slx!oz3Suex%} zap6XH{Agz9;KcMovi=g5RjOpq02H+9*=I(JAuyFq(`+X4j!!B3J z_w9_w(RPX?kr)w)A?6^gb~!3?edpw%FS$LZq{6^p@Ic?&451ZTuC zr}M@cE2@%@bXy^S98};|{{oXs-?S8cS42ll$zlH6Hg@ zL`3ZakL&%4n(qB?K%;0zz7|M*&>3Wu<3Imd z*V<{Bcfi|e4X;j6{R?z%STnl7w}XU@p=QhHV9RBS&qJ}eSM3SUY;bq(|LOThJBi_l!vHjNe_D5 z$JYcirOPe1=iBZPSsbs#UEz$6zoiN2RaRKxfzAPTwte_pB`?~?xQq`fUv8$@x#_ps zUASUl3X&V66(e5Yd|9h4TLQCW~4SKLw_4`xQu^$P;Mx-qtBT@?&i>i zTTG3xT6+3mXV`u z_*16iATO%|FN-Tw61T1lW|Im*gZ#gse%e1gTm}*J{y^$>{^%6_d4|Wsu6mD#!c`bE;yB=5B$rI7}q;cmi6OYK1WB?gUfjon`<}) z4Oc%u42la}H2Ch2$SjC>D7SHeUJQ)JDZmbAqvipCuy19CQc%YOTn)k1)QrZmTM$Fz z1c6mRPoiXMWg8*z!~79RZGm-uIf#A6QtcYt>FRZg{&hPCs}qJKEJJRwsZHskmUAfO z<{IMYpvdLJyv-9)_c2u1zEc0!{vrT#qQ)QI67nGCnTxY{#B>KvdZdp7McyI;^sC=@ z_z}d55jft#2vd3V6?ujcPX}C^x`OAxsYT?FCwudtA*UQWfcZX>9to~rgq{G{RwP6X z3B!PeM~68UoO5v%Yr4?uF&a$0qG9%M1zVKqHCv1G?l16&SS07xyfYlmH|oSS8Ol7d z(;cN-4gM%>&(@P@Ms3PrmD;BJfa#KOh|l==!hkG{xL;j{tpc`*eGp*(0HU!Cgvx=Q z3PC}D;(!o%XWj3vU4+#kfpzf=NwBH|4_RkC$odbsP>>`v#4QHRk_+fDyM<&=&?R$# z3L)Sm$%GU@1~Qwu6>8Pl-$F?n^s{ga7x>c-7%p(8d=S^moH2DI|7!K81d}77rfv}t><*T;AL0#GFQ%!J{ z=2`r|-)~1>AM`X?0fZ?FVVeBgdC&WR_b>$*FI0p~q1o^W2Esp(L>b8POs*!$V}2I@ zUuwCj%gP8q0?2ya@cvNY+vh{rMWkMH;2$vn>xpE@e6}GKsCS?WyL+lPV+^b$pzeu* zViims~B)86Z`vWN}IVQbyrB^oq z73_G)W1EPtIGmE492`Ol*{=Qn?|kA=V>v@|uzZ5V7LmOujWhj+luP{Jzoc9~e*ZtE zTwOwOolO5eBSrVWt|kt?Ne6o4sJ)iXHub}QbC4C{!0lDw^!4jkr$eMa`wu0QIS3M|z=cE( z(G6r|f*@y;1#&;EItb#fuC5FX3(4jPuP~jE1p9i?ZAUr;S0KzDfZvO^1;{U-v zE@=Oz=Lia^UO98xAwY}N(%s`<3j2oy(pgpY69PPjHt?nys76S6c{QPF8`%N0N@f7@ z^^!i3#*6Z=-Qu&d${jBi@&nx+6JT`m5T>>HlL#1fadsvmr7N5S zY+BU?sGFQz2!#}EXSjE(HZg>RgaEGOuYLeKAjF!jR;X*+Y%t zup)&_Djo2MA@C3AYDd6ZHnEQtlpT)ezVUWCLw7-tNLY7=IK^sF{%BVT_NvPf-JSc3 zYm?vyceUX~oyDD1$Gv^VAjIw>!D+7KDN6K++Y$#s{0bH>_0O zfJ=fZO~dVO}9cx>4A z=<(UUNNSSnU2>7+a%tQ`0FRy4*t8C3dzk-miSW8S`~kxj74^Ep6_O6NI3RM+4cmc8 zWo8z{AF+fK;VpWYmQ}Pc>t_OA5VX7LfY%t1>IZy+eeiDK)yCzLfo^JMwm=KJ1@K<6 zg1(r+zOB#w+KJ`bM)EX=3;qsCVd5!tN8x2!H1^u@Ff%i^!l4o{#6Dy89^Kl^&%`Nw zJ3(lo$>wMs)3cpOA|&GgR)Zus3~*8-08p* zvJ%?~2v#j`%-dYeN~^PeYlh7a`M?1`Idf=S_E4c?KmHr5M7H2Qoyw&IPHJ~u@Ywcd z7-|=WiyZ_L&3`_do3gM#f50ZFQia*@e%?euL8Z}+2hap%LwVJ(3NER#`9~>GP07uh zmhuz{Ii7Rt%lVg6vYUO|83dNInse#M&=icPm#(BVv3xrH^$Up)g@ykshy`*q>JaGL zVT?{&5Kyo&V;xNbatgl7lrA(S)B8aNkPajZ@*$>_QwjqE|wq>Niz*#KoV$Oc{YEXx&vX^aYjQ71GN<% zf%izB4m;}-{x;}&>2^ZS++RT;Z;N(S+4}r==R&{VUqHP0IxnxPo#Q*rcIQz&NECp3T(F(<N&2=#S>> zZ%wj>g7Sdy!Bgw>F0S3{Us{OTuSUN7&@$7oc6#`}%n%g|?P~I$J+#^fa=5>hbP3CK zJ7P%sC(_R?rlP)ARB)JGP>!h>kwHP<0MI({0n&j8!63*UoM)Gc?KTymS2xGh7I2?{ z#dfomqxwDzxYSyqz6M)s7L-kps&xl4p|07i3@BaSK)Idm`F1v5sQ$Ofn|1xZ zPjIE#Ef5*QWU`gRt3X3+7}|y7JuPXbldU6Givx{kJMTEZzW6urx*qO?>m)}z)3k`4 z*9u@zd0U9F6QZISJ9b{-!i76$!YurXVfSWQ^`Ed=i_55HXelDx{p zitl^#-dyuFAo1ETn$8mIkI?*NQyBl7$Ano~>*V~QrQlm4ykhfmm6J1E^}hY@iDY5e z2GGufUdOFFcbeZkd|2w9`P$Cwsg6Yli-(L8k9>9$SSazCbOf#Pwqnetl2usRgW+2$ zwt9?f&3PX&v3^f)61w--1W1Uxm7-^PSExA4a)bi!ZcQ{M{c%0}rrl4xl0);jvsY)1 zNhn1Kr1vUS!E0-4VYg3kFX{hru??s2=+vvSxP$Lk>cF(o!;r2e^nb5p}pqvdQp80E78tZ6qoHRe)``c1v)4&GriZmG5I| z*NPhVuR=f>3i)!=OP^ftobwN^|iMFp{HChnd|u+073zenFl!)b$5YXFBvf z_<^m5QUU0wgB!_};6D1SToG_hg5tkCOLf-daCkg&c$6}Vw{6|D>UjltZaZl8C!}2_ zMb9wY?5ZEK+cqj(;x)57JaX@cXbFH(dUjhJ9)Wx&Veu%D6U0#9j^@sE7nH?CY@g6D zTaZjfbGo~T_Cfy+udVdY?>BzitYZTOg-%<-V@%7J&CJ~G_API_&DWDpEf1bUa|PRf z)so9#4U&tr50*L+fjb;}V1qTS`VFVe;}~mf(HB4^!9#zdS+x4;Gq>@mQWH@&#{A2H zbMDa44?1jR5MK@oL#5KL(_hUSBT*Qo;1PK&pCt+DFQG5VGOok8 zw03wJ*6Zf~!Rw*h^Bl!n8V=Pxh|odE;6Lu83w0=RA3@I{k=sF(w5-!SVe8)8vQ9WL z=g5^&yq$Jsm*V?@vDofAxvs~2<>NoC0fr$DSD_k(YT&Npk=UeRQYgU#F?-Ye#Z6qS z=P`pXZU6adpy5ScgV~~&qT3%#aXl-V9x$K(vlZ>B7oL-A964(fVjP`*cr?X6210j+ z)2(|T7-jtYrV}$yNh+pLGjf8_e4MPTliMU5Ci)GC*5g?_6dT|xdtg!j0uFu147;?yPqjIw z7VLWRlAxbO~u6#>yrSr;NZhmbd9 zUT7_rlAD~1bmS}>-J&W}a*GXbkK0~DD>k_0a%R@KMh)L*m^$=ZT>(siObUSBH|6L8 z-H`>LA01@Fy&^N0-jY2R(`&hf|F7;;WqLc`DV2Qg<*BL`wA;#~hx;DSZ00_nap!x% zD)SOO0JaA(d_&^0FaxBVfXm!jkQzqv&4?&1MO#3*8tdCPx`Xnk-N%^{^WBWl#hc%$ zo6kym{riM;59xaf%1T3D3pxkwa6Y&09LrY`0FV}UY6N_uD2zLS@us~PL2fj=v@sdU=ATH<%@qpi=WQX6ViXa5Irq)`CiEw|YN_C^+Qe`irBE@<{#i+h42T1Y z?W$gp0Hpje9o+{QCIWQ`&0&|3Ov-r%k-tO02>1>bA*E=9O&^ktV5ohULH#8VD%2_= zl_~h)yZQ;1pF4FlQasBZi77qe5lzq4A(;D-i)%q+$E${2S3);b;1fUl06m38Fw4+E9?F@_O>IfWqtN)$&btW0>XLc`z!LFx3pfF-@t<|~bJ zZXXsZDi*di%NtI{3%O<|0o!(tbIKEBJ*}=>;vf z&oxIK@{BtGMNV*m;JX`h2zVIaB#q#bfvW}7064;3R!{(ZqMpneRcHhq-1ikG!O=X2 zxZnMnErC)X9y4cEf!w$7^Y%WKrW0SFll2^$q6MX}lCr$rQLi+g-jG>_O&lmf+H=pV ze@Hqk27T|gT}y*Kw~MZ51O(e7#d{Cf=m8u zln_}Exoe7rOw=J^)4|GbpG-XedK*Y5AK1@a|HsRg5*gsjs1t0DjqWJu`I!7_xs z+Xk&2a6kwp3wJ)Im3BtgcsBZ1jQ4hq$Y`ab zXOMrcdQdIH1B(8fjFR$ZcqbV`BKM7~x*7WR@t*&F!`(5oDf8{?>TVC1td%yG& zQo?Xcd(`s!I=r@$^4-KC#9*vWJ9zLBbqCm4L`nlI)`ID-C&r|=?Eu^@NxDP67YCF@qU7`UBWwQxvh?e60 zgHNNxpwf1+qLbn}#lR@W4U{L^?vwyQI454s{seqMJh z&QpN3oUDr2yzvS|o%Tah<+eLCupnvdCuGL~(5}>eTQ!81Dzv&SmIX{a<;GVYx-MDb z388)s@g)&RM}{(F*vAPeFqE){t??3KLfhY-mXKO=>H*#-= z3vbC~@e6YSpA`v0C_eThA{w&Gx`hCLgR8}fSe^ZD9uzuwjCJ^+x$ zk?F_a8f4Q|Zw1K-$k=47%r%fC+D&y$6o4`tKp{@7ASwGwMnSAdQc|QNYRgni_4oc_ z6u*B-NwGPR>36D&MJ2QvIa8VxH3)xt?@xd0Dq2y)(I=4z>u6v)4Hjz)Ko+MsbQN9+ zUi0^jW$mtcoF1BR3vP)9r{?*Vfx4;|rY9G=X0ot)=!uD6*G?E}jY3e5Wj(Jv;f+il z%8Qz7+j4?eX>1f66WG{Gxc4uv#1jTC0ob5~WN-mK4(pjcX6S?|1<=+@Fg+E>v8y^e zid(PN@T=a}Gw^I|?5>MO9Y%hxq)q=~wYpA%&+Ebg@Af`m^+xq!V2Hp?U>H(Y&;)<61gMJD(tp2GZ?s4%Z!l?Frxx8d)Qp=BU>=|LkBIMx{Mzy|=Q zAy*Wg%9o|iaMWxU-O7D%a06Pk88Be+oC07IgcR_}iK|hLquk4L(=;$8fpv7qL`4?7 zTglEF)DanCKQL2|4u!;H+>P17^=%|s@CRFf)3~n2{;8^fvJ*!dp>7^!u zB+gu*2%<0&%LVR`{+;awFBOoEk)SZh=!NtE`r=7bh7&Pi03c|W!rlYb3}i|NO%F_f z2(ub$6oeZNwnqpafgnlf4FYY<13n0htmgOdVcKpLb9e+G$S6+34pX)=lQ9O6;zT-s z3dAOZYz69~dQVtgY;W^{v+3Ya2!Q6pGYzrKb~G?ok~}{C(a-oXLVotN!DvW-xbR$8 zCVQu1^(kdlK%(U)40V2TR|OQx_J<)+>M%F^`03Mzy@bklcNleg z9=b@ zl>(o^H+rB(bJ=UYh5!W0IqhS-pZ}eE?G8jYpKHbnV8>{br>AsOrO{Bjnzh@z*9@X@ z5p-4Cx1Q~e(K2>)_J;S@94D?UIrjbFj^R99R~@8ZwlNN_Tf6*Sgmx46;oHG3&Q0Ic zR8r_C2}M+Hz48I9r|#ij*<^)0Md0|ApE&@&>qMElT7f3=?NP&*1Y(*Rbpy~7 z)a>OfV(FbnW|)U^ry-D&p^iTV<&Mg@gsSPp_MkZ^b+@-~K@b5XQNHY>e2n6#jK4M{ zMWR-LF5EzDt)=yG@H&=<9y9#s??XzlJ*9~q-Q71|El+C+>71p@(?Au3mLW^sWtZEz z(`CmzrZRS%_?S1gJXf9u9#(7anl-47y`rO|Ew>Z)D;QiC9I*Q-Z4ziAUwxaEIy#Y8 z6maxP_@|8ctV7i|Yko|CIWA^L z5`yBtqqDQ58iDBDU}R)OXlrkb!EHrDOB)&&M?1b`{S1`&(z3Fiv<7jZ@IH}L_xnLt z$BMM>ZNXv(eLWF3H(nSkk&hSrl9!S308|3X$9$=vS+@tbj(1@1_T_$rGMP=K4w}`- z$VhuF$^-^N_oThk?WtcKUA4~Utv^MJ#t`r>k~du6&>&PJIqG74$f;59FvxGHG3y+B zg8W{bx_8;Vie z-5DbI)XJ5n1Q6lqHKC8u@&x`WoU>#Gj6@KEF4N0mFH9_4sZL1-o0f!$s@V z8rgh0qZn7sUEi*cvQKAmi&G>@af`3i?64v>DI;G)ll7x5CWmfjavSdxd)FKE@PP(mfN`ZS% zVx4U_l^#&gGT1xDd@u~Jk*eao9lrmBpdIIS_(AT-(2U5Iuf^)!WaZq7GbYRzn^6Y54 zuFm)r=nUdL$zSV z!Fn+3+c#O*-Cu*0K{`iX@|UU-uNAldX1He2J=@$7W6^hf6N_@%+9W`_*fhUl{8r2| z{zZzkyjtRS+x@(S?CH_c)!=b`=2!uH=ck{{6`eyGqlHDb?SIMZZ{9Q6t%*L$t!wXC zwpI?Oj*=2i+wbp}Rvu4ikSrWGGh#pY$jL1$+~E<~qA18TbLU7@|Izuoestw<(IHHe zJ9aa|iMvMU?bSL}PQVUN-vVw9!iJW-se|vMjqj5qwzWav1Po-PG67l@0o+9If%jFR zi_Dy1rh#Az+JR;jh~%y@RI)MQWAMLC!L184Nqg|^_gJO8YuFtXy)D6|Jz$_Lqv#o! z;cGt`PL#^*hlo`eNwS}FK3$K{xpy+XX;{8yH}7EW%7r=9xROLW(g;t{f_b~P+lPq8 zq^(0yI@manSB2rk0&Jx1)mDpGczE8xGUm^aO-W8hf!pN0VqROeOj1x#cH0CGBbOp$l9+Ff<>O40~=Hl?JOOYePOm+e`t;PbQHBMjFA|2uM7 z*3DU5xGvVHtoNjCxUEnt=#w_;-6!M0mVpp~8CW{h8@|aq zO`7=HQM1NO zn^*S!U&v3uq*&y6HtkB|nhDlgG#Zs>0eFt#n zte88}|M9bxF1cf$QqJ%S3Bo>0Wir?(nfT~27ZNZdH=10)Aqqu-Y>|~^v;#9=kvhwg z%D!Hq+{XS=z%&7&`8v?ipR1^-usSB=3jdWr$9@8AcfLTk#{TUJ9(l5TddhuqC_Qh-sWecwcJ!*61sB*iwFzrfI(22CNkAO z?K?BFf4FCQ{l+e`9{{ERAk>V_StnA(ss=IrL9Zv$YsJucpG#6rL5C|4VJNf zin3+7h8~JIzIVJRkC>UUA$gW!q6CFZQZ7cPs&jusxf0PxWVa(*?D}nSg#_7n zYMpO1htTN0BUQ{@#2wf3pEs8}3oamTCVg4NHJYvr!=)9M;E2bFHH;X|o?QNl>?jzI z^$8_?paEtailHDcKL>{bBsIsomel9Yt({R=7qpED;M)QoykZ#-NEyHeg9d(_51{|| zPYKjE4!Y0DMgZ%_ZNc(wILNFaX@Di4@@yOuNQ_R&z7`(V_kFb6hW(L4u2qlSXxYvO z{!1{WreSujln%)&W{`{`1mLGS>_Mj7A+qRL4W{w|NX&4lm@FPR4YiLA=H=tF!~?!5%#gVp_%K4 zYz8-coqaN;l7gYZ{2Ek`UzC%ZUpE2a6hS)x|Cup0Q12hR20h^p0R(YKhM0)`!3_S;|7&d<`AsXLb`YTQ4;>oT>^ zYnMVy1~P+!-ve=dJSZq4!GtfM*9&J>PvH98Xt&=O7Ujns^4517 zO*~2av(N2z9ERW^BwBwD?mY`8tbrxiIPy+7AVp_DTY&dRn-7E3`2;NuphaIYXNN%M`G(C zl)efq1=%xL=Vy7FG!~$mIIt&7#6!wmVzAUEG{c34N(Y&)!087I zGF;=O=Ykh^K4CCnXH?@4Y@#+0qh@5hO*}j09QHCic4dZ}^%%aMwZ9N!TnvfyJ%CAI z`}yPpxy=eno?`R8CK{ATiBBlBN~2XYu&S)^ewpXZ^z^)hI4&zvypiNu--C9EX#f1#=P73O;$Fvm!SGX2X_2^fh z$m535QcZ#>RglDL5~WZlPVxR#20!$Vm>`P;iAmD8y7(hcDuP-%2jHtl0{;N_Ty8dX z7sV2KJ5;#nU{%M2TnuVt=tv0ZdV_<5sW%O{3Gd`4{l{}~=dmyX@qoz~AB>}{2>ILy zA<`I9ba(?G2#S8MOJ_J8kv&bh90*41^bwZ6XL_j`Zu@Z9%vKlcM& z@<@Q&kLW$)O^UI#kx2YFb>BJOH*PP`TYTyeu47@t&qq5kC-nc=x<`qHmG#wC29^<2 zxgSW>?SfAH6?QZw9_Q_7Mujw$b6u~w#CeK2c~ENGx@;w4s?XRW3a3pz*lQDo2~I)3 z#p~a`oolFXRKYBQ6~GM;V;>q9KEZ15_Nh+1kp-+ZIz>R>&VUO(0P7Q2dXttSizuY4 z6l|_@o0?y^$&(h;NXKzY++&3@KfzHAs~lJ;@>u*bKE4|$^PuL_f>VP0B0t%x~ z)b;W9W=3@vybapZnvC@H1kmpL`j^L%viU|QtSoNMuFN+Ic=JXT$@iJNC%J~-sQNre zOHEzQ!``=B(A79>3fzQ3@?OuiDa=E*8gx_DOj!ZCA2!JiMcq07f#c-NnzgqohELy9 z^T61fWF_Y13DMF8(Rqf`l7g-e0YyazE!zuPJLgdFR0uk9^ySi3AAk5Vu<#mp6uH+A zXv$5;l&x1-a*YnX*LHSxc7o05)A#?4+Vds)nJ!vjdV-tV^|glK#f|Hdb)^^D^WA^^ zSnB@8&Mu+)NqvD}TZhblxGWwXo{y=gSau2emBfgd+h&=^op^CMuwKhy6w^9q-Rp;t z^TQS*0`UazB&NwHbcfYQpN0&Dx>ZOIAP(-0TTc|Ubeg^CKF9A@N*m5R9b9e}SZ>DN zNEbm9ro9yletSTX9Sl)YL;nsOPfrc9mqWLFYcl@nQ&t=pB~hQvK=4R?wg{Ko{P|0} zs}*XnoQAT^ElOY$aRVb^TH?)fRpWTFwz{Kva*#%>!m(qwB7R~1n*NEys;VT_SV!Ak z7UUz>JK+pHGaFgG*q*fuKHSj+c9}8re#EmycRz@Mnb~sTaAp>kXCSU=!*)wBS)V8v zV;Inzjto079rWI4j+R!`3T$IOnbK0|5I+q`<~R#wvX z8jo-J@~hx(h(=^1h?D^cau}JJiIv^9)786waYdv}a!CnzxAl2>d4YHCoQg~Y4ITIN zY1&5?4YA<0Xih~<*71^iSI4NnG51k`kf7yo?-JpTXjR&H@zggv(%*VQkZgSC@)GIEaqLpC<)BUhY>^M4N?_dO`y2ZhCJ;BEPg|4aNF_4cjsXCeJj`(s!Y%zoysW)|5(Y zZ8Z?);e>jr0gI_2Hv3niK_712 zTJA5(d8r0p1ba50-=DnwZ}A?dRrCjQXmP_`C-43Ko-QlM(6Rpm8+h!i@6YTK*|v=h z{hYWbo|B`^V^mE@c*FA&l@e!XkkqBWty7+7`n7@dn^{0J$WziJO^<*6qcH+Ai=$rPK>! zi4^S!zx0hsNl`KISbPi`DHHypINX#4?9^q#0bR7tEa;W%Hjx;;)M+A7=?B{CxgQ8P z1Y-+9c2kCx4~|9?*vqktnu5(t)U`6Y6BDxz1pU62jI|rNy=mHP-RJtFJ^h=k)J+^- zi3ODlr8Y-b>kQfqk51KmjcXMPU%vcGxh+F;UUm%9t+nL!7j3u%jGTUPPBJWJfh_!I^aQzTlxx;) zbWbY^M5dg}T5wG9{oPgv)5g>XO}jJcT(1kdp6FST6c?#VS9i+i36rKRSc3w?L~AK2uv=>i!v?pB+Ap|l}q9P3Rc z{N4HGH%WL1y5(V#fYjw5k`-aHEEEFpkbV-mAD45*!lNa+bd65*fj~VM5X+hKKUk9l za(-F}Wu5l4@Q@74I(_)oZiR~%FQRLg{H<~`ZuCP(pt&xnJPx{Jhptk#Lk|)z;9X6- z+0p2Ih5Bhkc4Qf4t@h z;RYae@&>(3Pa%8|m{Ala(Iaf--maaXfG>`cD>s|E6tJ@aAI7!51kqw4)bfjHIsN+Y zSok3;Bp)pDKSr(vGSclw(IqzB(9IEdnGJTXQx7*&jz0B%*-fs7^3>CwxVLu}OJfYW zjAvNK6t8vRyUD%AwOM%hDo59|spo?U=h1DpeIMvjC+T@~XH3JPMOnE^cpF%=HT~!t zSnb{~BXo^Q>ghA2kPRZmDs1Zv%^)=5;GeMz@}IvA44;v0_USl_<8SXrPV{G&zBHr> zsZDJH{qqIianV}F?tP#YP!{#sNd^y&RsLuiPJ}ZQ(w0|dyh`Ca;8@Aqnm&HeG;x~0 zS$I6H+b3xsigA>s3B5~K%`biV3qoRew}ibruPPg6@J#wzak-Y0lOzd)(DI26F$+Bf zLUCaf_HwIp|ALH$9a<8g_vw&xAw8gAq*{XDld7N7CnOee_p#s;_l>!QfZ@^-O$PM{+;airYnZ>t-zwaszhkg%4 zzL%!!kMql)yk5LFQLlC760Th>Xba%T$m9b{)R<-Zz%?SM7Wq1C-(W9J@Xx@#oL&~MCv*Tlxe*E$Uj+bzB9#&I(1r&mKeckL4-G30{ z@$-FaMR2FVg{G&_^`c$g@bB$=dwSn_FFErPOM`mO$U znTu$p>ezffW^rz&BzXID@CY#F%{jUz5Xxa_Ef{McYVBqz{!*!ulEOs&KsrW>R%C5` zrU<^VM~?g~mj3T(FlKbIn=aL(w`QIgbMnr`hxdko zN{ZWa>0Gc==Xnp>l>x;KK}Qi0R8i}{jV z%iOnO&Df4FB=S{?;!^Cpye=eW`YH6Y-s3ykZbL42s<)C4q}t`SPdIf^uASN-;r}976{lpW8XAyEg#ielYauVM{lA_f9nY4h&{KfZmOE0zWz{k>k zTZ_$3idnxB*C>{~O}^)~=icppChJt|E7n)Ul90+?XmdnCc*me*Os{tRpyc7}gOWpA z?^QN0%_^Rx!`eGhe51=Nv+I*n=b&Vtm9+mXTbqBeYz7D8md#hEPqGV&W^`@b;&Xl4 zQE0CX*pL6f{mA4==x_YFyiD!7Qg(ZVZDdbSsh-%h1F1`Nv$_t_2jMFC4BDtO79lu>s=SN# z@4{qBgMsrgVGEagA+{|j5*Goxzt#KpHTLy`MJWYUCk|NiP||MEjvYHlp^kM+)*2x$ z5G$w;|J>8l+5U5W@3(K?`c&l>4q|JK{03IGl~UYLAf->w)I2(JGcfQ95-5u(5JkCT z96HgMu^1hNw)$J4)gi9M7A-GH<)Lo#mMvQp^z`nHkkt!)OOiQhp zIiMzQwk~qfieFR%T*a4Dw2X|{G2Vc0jC&}k7CnR^fj5?aUY<-`Jq>;i6vU4Zw~{Kk z>Sv~h62eJGKd9PM?$4p9dpyhRwXygo6i6y#P`R0vT;D!>Gai2V;PBgE_b<&&>BS9( zIUpS>LWiT{;&3w;hEI8VN>YoZAC~?5^+f`UfcN-AIr;z;)<>-BT`INITXN2`fZKpd z>RHO(vo(tsA|4c43V>`q*fD-&d%oFD&P7+yp@#?FOv}UgczD*x$Oyqn*LK=02L{l> z=qD_qn`FRr;zaw*T~nT6FD|<0W@knM*YN+CY-Ufde&oY3KR{Vb0YAVKt*p*@B#Plb z5F)5j1tH?I(Mm;1AoT{&4DmB{%>xSn)B7ilcU0HkR$YHZT2|*=wh%-xCr{tsmTMq( zLv6$Jv(P{AhOZB97f3}D3CBhrW(LpKMbV*{R}sI2VJExGc~cTZU{ zZ{NOAC{H7G^Uf-80+Bi&!ZZQ>alDfpl|k(N0pJz;(DSat`#OVE5>y{u1>h$fhk&25 z)5VKS4Q&D^`fEh}MMp15G{obOUpSFMaw!pkQ@0Y zg%SUY!cerfPBIR9+YN7_gW&T}!zc0)0|l8EgP-y>)-A-doRjWVHAu1r+$6f?^4MbzIpTJDmbH|QXZ4pUzE>P;tu_P2DcR`5mH^CfW#j7 z31+dXFj7ciqKOYwfdHHx*)NSFpz)|iW74&6%mKm|?FRE-B%yr9j9>ch*NPl3MarH0Z{EcP8CDiZ zQx(kT{C`VR#ZQH;0cQ!ZeaA&>YcbUDRzd6uk%}=mQL@Bgy1|KtAmF(oV`3CT3`<+S zu<}!wnXe*Mghs9-4MVLR^QYX%seC(b%50;o>`K60uCNE*54yU#o|zOcfoskZNS$6i zuqp7uQ;bHx6?ps|PmiJ<>M)Vm+xua-b;adtOV(iK{Jgi9BN7KlkBLNZa!{^A|CqP{ zN06P&sJNaXYmf?!=IW~Tm*nGlc?|XNM#n#>XU}dzXVYhpBdhRTy3gE=W~9EiZ*#}# zY{tP`b-;h@%P{Xzx4CpqO_`&A7keE1BZ`|v?!44Wm{Ev)y?xRyrrZb-GMYxNM&^c= ze!r_+DI8VmWFyA;!}#oTT=MyDuCkyk!Vn&ah1h6;#^T}S6_J$uJ|9j!5lm=?ez6d- z%fAVwH&ZKLaw2zN|Jpi0x%NHnPnO{*x@ersHozQIfBZYvVJS_@F#A8KJM{h#(oC90 z)MYU?V<)4s{hzRoUR1&DB&HFop7)DD+S;)_U<-1PH%Gp+xWVf%`zPzlWj8sOC=5=U z%~(S0-gqMQvApMo&|^R9%~Kzw-S;Q53|fBgiLuH%eGAg9*bfg@t?eEbbwOS|K-~kd z(v>EJ?nl?{Z3KfdySa=t-&e6A`266lX+X3CSJDVx{u9VUga8QwL;~rjH%d|cS@?z! z=8XAqMl0L-U6Zbpw0*w}Xqh0~ZQ%geybvmQ&5VE0-%l01t-RJq+D*7E+>N~it%lD& zEw5ORJs2nb*0-DeS77q5ssl-Z87^Sp$C{}yTfNjSw~?Yqzww1bxmUlL-cAQ|gK!HW zpx@Es;pNsfZ~iHeAbNpc_XW6opO>#VZ|r$WN)-aeH*ctPS-DFA!v6);+r8IXiTkWc zvJ3QE#WCIUzGz4Hb905!3TgJ~rh6L}oLLgDf1~?=S9F3&<+SJz{nGl6>Z2n8r(s%#T zuiLoNB+D%KfR_iN6rOOkmSKi)z-)%P1z^rlcb>8Ut+n@93w=J}woOP|&YYdw=EY!O z@?cZ>%~01&^RLY|e*8PGLah?{DTpNw>8LI*mN=_vVET0O;W`4M%ZG*-!h5KXj7EBS zM;E^xd&5xox2)hF3vu0_5nzkYW?7}lPybMMd@@Ou?`Slu8INzWln@Cv58?!Dy>Rbu z5{QIy(Ptwc%{(FSDjNuX(rm}g%^OwtveAr(=PoJ?TRt_K{R`eLeO}&2fk0xgaeMvg zp!cCHC7mUB5E+R=`}UCsVGT1O+pxJ#_U9)cviMUZl5q)eI~{_Kpg2ugmqm(kyZ8ey z5Af$Wel2`nE|iix3u#H>vGBRhU$=)6!oQdkdgR<|dWPMW7R(FsoVe`O?KaKAswvlN z%N5o-RgUCf3kyQvfMPGEv)KCHxw48X;NPspPP+_tj*H5q8#T$@o8KMIJ}^)>0}+dk zG3bY_{=0~Xg(j<+_{FI+e&Wwb=|sz)Rb!YO8{?|TKil_YTR0_*Y7+pw&l3{+VXV#> zc%NFS-QSOwx6j2FB9DeJHbmy41PU3h_ZCjhG(Gkc%FZUkV70T;#;q&9a7g@bpS5|5 zFF3(6Qs?Y7ljg7q-t)JY(4UTpEtcNR;|+7sBc|$(Vboz^?LXe9tGaGZ(SOCYwQ`GQ z;?&=y2oG6z)bxy)7{BG+NO?sUC+U(=z(b(flz_|w-(NBN-?2f+Y}ga+#ZJ{qh}TOY zJ^2eOw6Ofrn<)PE_Au&CQGkzKuD4eBi4U`gh}=l#;DQ} zB!7Rj{@26-f(aO;zfVgSKXE*bs2tobd(1W4$uJh`JI(dHmw~EBHY}4PaA=YapZqiL z4{^YG7 z_BMZzgPC0^-Q?$4@Eyx1;#FU!sTsMl(3vOU#SY>B1CshDW(t`Vt`ue@dFLSpQ3ceY@>jm4|Xy2hq-2iF)WP! z3K_KpfsgN@;__wo?Ztn}e{3aQISFA$zZ;?l zMM+b}iEUn-LASY4#q3o1(95gL|G<3fg^5Ih{IV-;XX7V~jEsm>6{UT?a+lV9=sxv58V5)xo`t{ZF^5H>i zN;mv@iQ2=(X0ubnWylr!6ZIeDT*wsH`>SYZpe_A6oy|PRQ`(|AZ-UiI5JiaZJ32bj zpAsnv;G?^4_UwK-RpJZfY zjI-IdyHkv+7yCWS=db*<;&og(vi)`48S6q>8;eiOf8*o#o8-6%y?!A?%SF80-0M;| zPl>EvU1+ta7(i2F)Q&IlsrIE7r7itWUBFl>osDf{iL-#^5unGSi@(tn0g|CQp=v%^ z*haF$105uw^e4XHa42HhgPb*r^2Q<57rsMQ1*`oFEzBt7LBSUnjX@3w@D*WF>;ay- z5cfsW4VvL-!)6cmn;(FmQ)FSXUc>5s(1A~=YPLWIPxg68>Ct(sYqgb>1*9jq> z{?|&x(k2(&Rc$NrxyQ0KhX>_A%XOS=>Dp~1m7P_`BU7j@`}_$AB^ zr%zg(tbMGG#5%gs#kd-Qgodrcms8vx0NZnu6N7L$cR`K#AapjyZxMP z$Ct1Gu|@$EN;(dNlj?96cY1e0_a$tpn&CT5Ha3zm?LHVfX!%*G_z`zBZ4AT7zouUPvh5 z1%DWAFrh{qo}R}%r+s)TFgKCx_6VY)-}CMU2JYvO`@VXx@%fE&_V#D-)8N6*%uWtY zSvK%ir0p}W5TYTSLQIIyojZpr8~OEjRFyIT60*DchDf$(NAu6U?(zzL=P|~t0_OX3ynH!N!`bmEj~S!;hLD2 z4(LeL5t3Xm<6ZD`-sMesc_b<)YB5tuZ3w8bqp?(V;`j(@5ULn8cG>r+y_|>Mu!>7l z<^ZVF2tZUaj;JHA`dS?w`r#hh*dU!0)A-!H7A)CDlx~5G(!j2}r`@ztHs@^ZhGU!W zApIC#jr5`_>TtNZxpho)PxiMwH|MZw&AEeQqXM=F(vch5QpmN$IzpN}UCf7Op}Ek8 z_{Pf z8n_0*c74zbFm;TAAnF)Mru6MYknlq`<+IfiPx4WNkxOE!qeaoZJ;g;uXRvSaW{8G4 zT}4g0&6q5T2V*er17S}Y+Pf}iYG3+kt{_YzEl{IY1xdBNP-9fN&5x~Ona#gcduG?- zE0?k8q-tr%{D+|6MFBmvWG8xS%R~fHOVP1iUG>o|&?ygVcAtL7?~L+)Pq2{}wS z`S?WhzMwJ_+u}h`8SbV_*o7Fg4K7zkdZngHP_BR~vjhhRx(tGCW4~cTq;5dJ5aqL; zYd-cYxF;`7GRkKbDFWL;lzps%yW)NgBvdL}f6!BqIDIgGCpZ{w$X>jHD(=&`$IFVD z%gOf4EqWYJp*TL%oU!e(MyNLuP|}Z{ZN?1!h%Lx3+)z)C35`-lrqxtb4uD3(vhPz% z@Pd4(>sgubbI-{85Od_LMD@I#QtW|MbmHT7v8pgdl?jd z+b#vZ?dF%Xjd=fJWqM?-kjOzQRS>?40f*2!Af-XMh2Fn?3Uh?KEM|~Jp`cjr6%0p6 zYqf+jY0T^RS|KRt!N-B@iD{}}CqaTIE(_Ck#Ex-)fuSQ zE$ZyIKRjy>2{8A{mFj$A2CE?m%DphW0na0$;i~7Ev7YzX?}i!^He_hHRP=(AK8w8% z(at7Sb@fM(8`Q$MQw@xqhQ;nt*bE)BwM{7*N!aZ?IiP~mEfPzORGiJ>s1V6EFd7v8 z;r4U*Clacw%FQIm#<>zg%2R&+v{o!uStKBe?51YiUB`OV$&F#PglqJos#}n5bvjiY zHGhwACe(luRFJsmi+rTTnCn!|Ayi$dQodqHQk~in!ED;IC!@k)d28=I;K8*JP<tb`u;_DS-zgBQQH^VWCX+eBIqpj2%TlK8L-C$MQo#7FNBhx3_oHN@+)})2BDM zek&LKJUpz4m-Fi#6Hclp?6hjjvb(12%YWcp_Cs71XmMm&Y7aj;rYCzDPkKD_#oT)_ zzmvUbQxA35gBTv_h`m3gClUqI8KB!5+2-R_gbQnS$e~ z**bq{v8aNzA~N$p4NM%N8lripw+KkI7DA)XJBa{?n&S{(U%7)pyFNqs;%CnLJ4}~w zaw2y3N44};qvW`_)$Rum0C=VAUobI=)cPd2V#N`JbI+gjqNJmUFR~Y9b%!?u-Nb{# zaf#$TWO#;&8D=#xD!Z_~B@F78+}AzcRM$U2j$`yxC2Q8(-#^Lm9hxm377MP$zz@`H zyo&`BzYPl?cFezN^zM4*_Ve2k7CUvnLF_(2l;zGhEw&6L+9l5xVBqWfQrevRx6u#_rkjRl|17CF>qkewMC;_q zsP_%&)NOPr8x3BB$4&WB1!m78Ge}(Us$5`ju>|=Npac`t>`<P`um4Kcn^pqb^XT!g_e$p>N=(=2>aM+!8()y2anz3reXs#d z8x?NoX$g%&Auh-V>p!Py2T=7PsIW)j3eouJ=+@B5huRiIUY%*vu1tE|OTE|2v|fpu z>d{gUz&3Y#tL6f{95=%Lgvw0!N#0J$hqJ*Jb|30cR1^^d^?d}5$62%~+rS_4mZo3jHs0}dQGQ1tt_C+FIy8i~Vb z5HW{|;Q)(nR7Lw4YWI5$y$eIk$I<=yGx3g&gXVAi6_@7kLSrrVmDRxJmKi2ihhq_f z)kP{SZNfWI$9$8xt8Tv27j|B4w~6M1-_nKQ35!nE`XmrVS&TLUop?-%dgreQsvttF zLU1S&_5R!&|cv5}laH4K4%mES$ z+FrQ1&A{B}`WIlFsGoDgZVu?6(vptp}tGywTAXhTctPMP1FW0Uyb$-DK}Dwn`s=8wsl`Csk^|S1(B4bLiyh$)0(1p*=!*m_xPoNi*3)6$ zE2k#grhZFyy>v+iM}t}j^#x2MnVFd4b#K`wyFAG_UjeTS9F~U=R*|#wK9~@kf8>TZ zTLtbKAzpeE8>@}nkrkXRkgQV*koo3$#Q6~zQR|ACiGHU2>1Bvl-A$2!Ltx>DqF5CS z783PaZ^8PRl7=hn$cC}Z-ZrOeq-h|=VHa9?OS#SGmAF7GrjGKC^++|sv^oNT{xLhd zXNEaw=VMB1%iDL+#YG#DU;g||Klb0#c52~rt{dg#+D@jh#P)gRYwQWxV4Tx}iI$TpRXt)^VaZDe*ZT|C!1Q_?jOaHi3!m){msLR1#vW$e; z*h|$>cN~E_oY)tv>cp-5lB;Vx(g=P1cs(WS2C`gg&|Hf=I;H~g_AbcOeWv;*oJl*2 z-7q9W$`|6NYV2`Jn<5-_@SHa&K>zwo@Hu7U-n|WHLy12Lgt$SfkD@|CLTJTF6>ZV~ zE{d%c46U9<(=4X4rAwD;SBA;r_SAWYIi-gN^M@0RW>HahACC1zNsBLncAy%rF1mv@ z&G|#|O&_Lgw!Jr+^dMMHnF`-`(x4w3br&|UQjBX))$GjV;Fj+j zg31ZIMk<)HE={M}szG~73MH|=b7F3q#Ngn^^`iDh5WQ|*A(lm&Ow1S{lCZFtVlP)Z9Fl;fP($^bxI$Y7#Rx@`q-j7FSw8xjvpN(I6a-M-i1-|#Au;}l)vFdV){w%3Tf}4sduIiv>5k5^v zdGX^L3%sQ`$ZgW<7$MTAqNPt+j)C?mf&d2CiS0odVEZS0?vSmmILb3T*jIX^M5SW_ zGI-e7d~HZxg#}9d@*JSI$Dv%*zm!Ax)rp@o$H6*@K-__{u&gi30`cTwECb>U-0gO? z`@5J91qdr0J$lpj9kzNH)iXfZg2mE7s34qj5q7AT0Y2icXoc0)^^Et)={vui!%8Dk zp>3AXxDzJ1V|X|KW*?V;hIQK$bQ2ib$wP+*0J@)|&JehcbAv%e-Ps90Xa)_5kgAXL zmW2+&6ek||k>~xgh>92VM^MZVxe&-FUN{n2Ond}pXTupyyp)N?lh4TMfRlPc{Yh|- zhmRa7M%md8v)9XH=D&A2a!e81Lt;8kUIHh>h6SJibU~a$uqf6_O7dg26@$sRMx?;- z#GJAu;OPtqCeku$ECfv9YGm(;Yz+t90Y$L;A%SOfPW|{kdImc!jv^0WZd1rOMkXhh z*ov+Zk}zXL@unYEpa~*g0O$xqs(MS79esR!yw*l;{JEMBe>p;x5@9!jZhngoPhVnG z7JsVHY6D*O1xLa7#Tvw3eUoF4K@TWDv{CxnmY?hH3epJ!w~7diuvMEv=vseE$im7M zZkwJyKF?FO+)*W*>r&LVf0;Jn&x{D$>wStpz#L2(k*IIJWw-QPq{6VA4w(}9 zV+r*|{$rTMDb9IbV2HvIoo$c_M|m3}3LWW+A5>|3G0iX;70Oq{l3bRERzQ!t+bb$M z%uZT;o0xcny^}dZ&UGd*Gc(iO21xw&g9rM9_JDy(TpQHls?9y@__E9~HSd8~#KtyX zh=(nXc?6?KK9EN|9_mld!N?QmKNB2iQc6losj?Y(>_tC8CQ*t*=(Qwm0Dg3DcYBGg-Xz@$K-VYC8`l$wGg{JR z@@f4f@kqf0H$`nEJVcm4P+o69gI*#iiM&yPAAqj|43&szNZpT3aMyliEza%0#0FuTkeJTJX zI$+M9yhwGX| z_vHcdgcHT0XyCwrRrXNg6f-_~{SXi~+A5B~1FOkWTP!#lXY?8L*C7Lil1}5ky7;1g zv^gq;%kmD(kK#YR$p3ta5gbLRP+y+S#>7Nt8=LV)0IV3fuQcmcK_b<|WI`R8J5m7p zLctJ=FGcsrQ~9iG8HlixY5B^PR?j^%@l;4pgRL}QOpKlpb9fpv;+6{$H<3HK?%~mi z?V3G3QfD(97PnfWMhKVt*nJ*a#sgx(`h#96$~acSoI06cy_QUE#v$|_dpbii-f4%K zrFiI2v*mVFul@X9CQsZxWY7p2-s-ZH2s}(l`yStsZku^1+8oa^Tmc>=`^`bN3UV}I z^ZEo6Y6XP1)#zdA)7yJx!u~jqc||vIqr|!JaG!l?QP1F@m0cS%GxGrTYN5{3Q+;+4 zb~EE=K|OYd4V&{{xPnAY{2?5~eyE;bVDf+j10Ou_u_>5d0(2z|62oLd7O}%MOghwh zlNG}GxIi}G7d2^Jj53x3uz0`1Dm!^P}oYyXg&?wj?z(_Eo4;& zZ$D9r{GIK<#~q}gqcBw91eu1nZruvJdGik(kfaJUauJOJf2cA%rV;q#GE2E3lCf+` zV?zBHJOQ$+R-C##gwz16%>Dq5*V`6xp~nCfm?S5ILzLSRoOcK|CRo_{kx23e zb@1_@%vHS(U|FS5Tj&oxt6HcO&*nSKBz@(d?a;d%jHx%0Q&J9L{K~0y7pj*RJ4vAZ zD;jai5aa}Q>J~NeG2mMb+zvJ1)+EV(S}9!-Ehbh*fvLKQ5-=ofs$cw^vsr{z>!E9- zavAEtk`%e9xu-uq`4P#EKAim1=vapOmc-wmT_qM|N3~p%7xkfVs0vF{6&Jsdxd1Z^ z~KvwZ6c5fM`Q7EZ8OUI`1r#UhNcbRq17l~ z5#((Ui2_t5sf5?D~mCIsU2~2A;r)r{#U@}gP4R675BN;EGZ1_sDZ$4!6PDb4!O6EaL6b` z5599{m}1@GyW$%v&pVJ$Dw*hS;N<1?K-u5P(asViAt$!^0UQker6@NK`ezFC74!F$*76r@3AbgyFbB;0Q*gI4~P7?JM(JKf9g8J#Bm=Xj6D*}PQ^dljHcPzNog29gu zPU0F)%66tst_ELBAhHHd_SSYz))t23E+$_bE$nRB7`Yf(-jSO-IoUh%FfrNuKfl0e z_r;89;T2K{ILJ%;kDnbO5Of3R7fhjGfdvH8vAl+44dFQ%U@RMJKuvh|X z7k@{K=3D1U%U?OQmf^L|HPcJQs+`mF*|lN!TEA*K)k>yMC+NePj#~D`;BhcxFeJX; z-%~Be$o8PdY&PqaH?zOxy3QCq=lg^<%0KGvhSJGQjuZg?RfyiG9zujM;Ds^7RE7O9 z{(I$uj35HufES*9kAs8>ePvLmKrROTrJyB||8Kvf@CF+X50Nyw;0)u{*Fxn2v}Lbz z*@MM~3Cfu!-{;ma?~C2>)l)Z(HlG&pa%IfM2k?sDjgM3!n)H`poA0v#c>U+kpP{ov zhU&|L+864F*6*f%wOnMEjQ)xo8j=~x;3tlajXgOz@r#SY4hRSsD^_KQAmPQ^pD7Pf zp;vWBzyAP^pTutQeZ=wY+qe6V+J%DJIy&Q7!f;+UYa#Vsx4%C(icw+)1O{SaV!|ZL zm`-|r_MIHRymfGOl@t?$-yTX1G#kyZ;5SoI!QtcQkByHv`JPcMk!mZDiO$5tRBbhb zhK%=4NKr9%*^$rZfq;~hlz>^^FHFaskKio*UA)wIy@OFuaInZbJS%>Q8G?x`g;rCO z2w6vm!oMX8EIN%&!jE^CFp%5ZTW;SczNe>qyNAc?l_X9ZBE0vSD&3@-WCjKXZYQfS zM@voW{{$Zf9*a=D%je*(k5?p@8l5qTh%B8dtYu#d`n-O;zn0Y1C0$%v8gKRXyt%*6 zsi?q6WYX)Iud%9hIn+cU;lVjNI?^1i^tiN?N##Vn+?!(S51|kZrX5L7P7YNrkX!2| z^X&>oC9bfTpg|$!o6SA1yV%84E7N`{kh##79WN-znv4=nCfIYj(R(_ju4m90 zjLQ9G6X{Q9r|R-Kcq3b<$t8)+3~lg9(Q_qX#!zp zGaVYcdjdgh21v)}W%2QUJQ(LkxB%3I#bi1Uh#Rat;pFeHJpG8w!Hpj_Va) zJqsUIL@*0oH>VpgyVI@4{aBFIYI%X1Rk&~6hNZeKDOHYpf#H??2slWpRB7qy(2Wcc za&f7hHd0bnW^p^whet&G)8GHn$H&KQ|5sfEsZiq=N8M&Oe=sQhlhqFMu`HOy#l_X_ z?O?FI^p6%B`UVF}P8PN5Y`YoCn_=bU<=x!evOKSkW?MY#6n%C@v__Cqwa!*Mzo9R}atZF?5K-D&z3;0@%lT?SUI@8f_C$w)fq`aO z^>Whf;na}t-?1K1P2dmAror0S+S<~jcaDytgP?(QGAD6Z;hDA8SkEb)`s%E_Z=`+y zzB`4(iX7+F=?L%fF5gjCDE975IazZ{%i7UV6u5$QkQUhI%pml25!K^uzP=!o*Xve% zL~U)$gm>6?*pfi@pi|Dz0)c4n;u2g^!T>Vrc!@fb7Z|bxZ3%(*d{tFdrTe)lJOaX6 z&5Z8GK?;>*R8U|boZ2tVysF`bp0vt-T(GKauU>(w`}FigR6d;c0b5Z~akkZ)S42dF z*?f#VC?v!POr+c8l=_DTd7smD@d#orG|6aEaUmfHA_{?@x~@Aya&q#`*&x$+nGSD@ z@E;IzejR}?a&mLw?V3*!Q#ftHL_^TBeV?B+8l8&fo-A^F9`C+^r0{TqLdXg~K0Y2M z2@WO^LEx`hV`;F`>Rs==pD=x1LH6Xj;*Af&sQOzu*f|mfa_KRNi6J%%wHEx_AilXh zuiia8K0;^btM~X%@sBbxVz#!7n$_n1(DN(iNN~HIkO!laMg5y7(CRXCj=0>2SJ&-` zp%8^Yzyi^GW0R2BjB(7Aeh!pN=UE#Sd=>)(2}UCcLqsLg-x*2YU25XO!oqTDz5eqR z`CCLpS1gs}*e@+Er^9(%aM4MEzO5r%8uez&5G}H zI!Lb(AOIb2&rAXz#^R}RnPzf-zRqrN++l?z^~b%nYF5+K9Ds+1XNDwInT=X{w{gn! zV`^5JqQd!sF-1?$6v(FLb8wNre;*0{D5~ca?0x;c$)Zk(zFY=h(OF8_6)Uxwq`K#q ze<7@mcMpH_q@gG5+&E1FNv^QD*7Mr7r@ucGrv2f3RFJ;B(g+#C=6a+pK^aS{+vIi2 zy0N|81JREn6D(71VtJ&Gmr4e^g|2K4gtjS2T|=P2CSP1QwH%vx%SuTZ5(FFg+^oGo zgiJI#TS?Hw(M7Snk^E*b&?X4x+Qf;pr`i1+%%@qVcmCxifKNT0oq;gz?=-7FZqg}3k=R1|l&7>ko+CK~MoXBj(1!#MYuXz{!tA;SbXe z_McpyJb}d1VoEfq^8DL0MkDe2Eg>YXksSGMm|md9&+ep&|-|=FJ=N z{RY|L9Rq^kWIp%b0~+ktX$h}WwT1l^-sBtxW+o=~9xOE_S}fMH!1*O}*<}oP<|@%) z%a%s{^3UTNx92-y*El#h|5fnJQ8Q4X zbHB9y{i~D@rW*yaJrK`;cwcEbMgL1sEdeR0{z8;c$NLG?JrE~gZ(DhjHTA86q^4Y1 zWmF=Y%1I=s4X`yfjf_5oIW#nssQmI^F3w`I5c7OS&-dSjIxzrGrU081IHRyz&&J&D zm6TWe%$2+l$;-==adYDavwT>$g40V#jAQ~}fz?czNpo{Efti_^DM$kn|G>okTWJ#n zzjoS7R@0i1mNo<~$mO8$@)9Ir6#}Gx9srj{eek#_)P24>S{j7tgIs1(L8B}XNap*% z0@uFFk{uq_%6510uT#6x>C?VvDu)%A6tvgeS(na^uoPEp57Sz9|M&`80SFEfZnbCO zYzRmgRmU{yiRegTF;cMx5RI72wyQ6eO7&o8G_!Z3H(Ie=m%rL#LSp~6(e)TjsMRYG z8H8>W$n&dfogo0-!FDo3AOME*dEeoTW(rDz8p*y~u&*ZR>Qq2JUK41Gjhn(+>QoViq0?aOCvjG`mf4(gn_rR4fa1ltt*7zkv z;Ne8{omMRh6pX6Se-$EEaDR;CS{~Ev%>NWe1M!Q9K#81jdQ+$-rms)#a=aW_qF%m! z-1gi9u#NrE;s;}6<5jQ|llVP3eeMsra`W;!78bO2++UNB#HOW1U{XowFE_gruo@$Q zcTms#hkKQJW@hlg>4d}a-bYM#ZQJZN>I_{)-(BNLJ2^Rh?H}69%uGvr4VLC5NR2&U zQcnh%+Gx+-P8mG1(zJE`7}W=5u+r=H3zPw&bY{68FMA}$5Qm+exd$7>q^C!MONM4= zeF8*cPV2FH6BWhGq(F+pBD-5Y&u|T5?P%GuETO_Mg{M_Puoz${9pU&)%ns{f?B-*T z!-YEa*I)zdK-$xJU8{Yv8O|^MDOWvsoNc}gMj;FU@MMp_EGtXMiaggQi(!F`-@`b; zcbnDy%=qDI!S3UyPm1s&iHtgbKpI&)K8^;x+-@gZd(Hnw{7`Cc~f82bI)_S{5oF?c?TB7!gmHVTaZ!Sn6 zeUEmV9T)fU5rCNMAiVhDo6m4}urIo>BS{%c&dG@frFC_- zOVDTmg~q%&@p2y|3S3=DLL-YRcb`M#HP^)kqQta`bY+U3D&CmS(4cH$1GrAiR-Q z$0YNoMHBum5S(8)d%I%3r445CEVL3~eSV0Ptx8Ly>R( z&DSshOdkT!FP-UW2A_KX;7*-$bDya~xu~e%Iz!NVLE$^O-O1co?+))99R;Ksp_4gG zOp$RxUF&kS_@q<2p7F`-m23)o2dEdP{|Yi;{YI#DOaO6jz1w4e2q`IHy+TGtZJY*h zF&tdg#!jZMgr+7DbTnY2FV;JVn&3?;%qEu%ApMSau(ucb@`csQ+dCE@N>C)t`J+%@ zRX-Z!qk~EJ5+H--oT(D^)5{sX4X{UrOigLjN;Uj-TRaR_+x>}fJ7v4OyAh-l84;p; zJG;a2E6qkp<7eK_z0I#Jps)vg=;vM=1rp?ph(49mCLlT*0BpA`rO!M7^Z0oUd`Hc2 z;vf3_hYl;W0@UV{Td#xV7UJ@jE24*o2OQ-y%Gkm`U#_l?mL@FC67^?_lzWYz>kZE~ z`yqZNg9#K&Oz3S7XUKqU(O(7@Hp`?vB0FvLL;~7Nz~@%cV-rWh>mu|HZ{t_p@*jYU z#($egyLouf`)t~+wAxHw&iNgK5o_u(F)%1EZvW0D3swN66SBpYvsd9_X0}6rAO2Ut zpN%`x*TG^>IjMCYj5@Y&M$) z8v>w0-8S^jhq#xaACl%X^7W5qH($L9D#irJ?GHc_kUlE2T2uKZm&4Wl{cupE)<7uX zH3{4&wiFZ;Of&gIhjf$p1fXT<)Cii(C7nK_f$t(ivF|BJ5>$YIF4Wp|KHQ#DV1=H5 zYC}Ow+h^EnVFcBL&Tnrvq6HNIx4y0=(4u<7&aSe-5o~a>U*1OKdaQ+h&fRgI;t_oXT~x60CzkEm$}sel(!d%YkM9-}rAX>`bO z>;1^4*2+Ny0;H>}i{Nq@q;I&GndrX~V8cToU=hQoXNF&*8M7u+#{7+s`?58F3mHom zEJ8OD2%Lv9zo`;@KoMYsbc_8N&d$$qg+m*!!tT0W4_U}7Lt!ieg2+?^z?=jW6ck|J zs6Qa=?(Tl8ujgh)39MW8khXe?QlanmhkJ1X3Q3BWjjyjS07r1{?(Re|!)?z`C11#N z@S&s>d|YO@(Cp3z3MA}{7caVh!AQ41)vMsVt{j&;oDI@|+hNU& zf`Wn{Q|k?^dYQKH$B*Bpwc$7`UC+0N>Df4xif}3`D<$6c^YZZg1WN|-b3flMT10Ge zJN-Fw#XN=1c>=&2YyAny;14?G)zwu$z;6sd4AYlC0*I)SgrNd8DHxwgSO0Ln1`+TGrnUzxu#rR1 zNLc9!n?ZJiWL23nXrbN%(g`FvG8J8EY3WV?xn$4ODPy6PGi;9Ss#l4`WhnW3j?s{r zJydS;yebWT1iK|H$ic>!JSjlqUC(BJTn95sT3Xszxt?JB48tC_BXa@2Z1*G}mOtL< z38-36SY@X}E1_)M&vFVg`w zW;oDevV{W?>m7H{03~=SBruq#E&js_T15k2pc{fU2du7co%9-j@?eQbqN3NlJ`Zj~ znSx}1N14z4&ZDGdjt8>Ao(|?rldD~~UgSUoAsZryc-7KkgJ%&{vvxlib1=)Gs)U1? z{t05n-qEoW(3ex7fDNT^AS2^5vJdQRZW@EJ5m-%^c7Sp`22u|cwg7HOz+wph_wQf! zyLlBsfKOQLSB0#Xn+bue>b4cHzPh*f3WEDoUuQlJOGihS#O*-2?0L-pPPdr=Z0{a$ z4fYQ=4j`y+Zrr+U-ZDZj6q-`|5}DzXWr6{cfD-nTvon$X>0g*Y1dRO{1ctcQ6G;r& zY|0-^=bfST-5$-129cyzPuw5?bckTUm4T3e`Yk+Mv|P6Z#X}EZ35621_h}y-5urPz zs#{oCSOf4dFkxQ-;)RBm`Ev6IR#sN~%|1+-bRJxQ2c|tyFGoi~{jvvyF}I)q4zfLx z9u6cbtLF03QWUW0!9bH(ELt>1PsgT(U^94Z7PV878Fqkn(%h+w8cc0!Yslzh!?FSIZ9$z<7M|2+`; z(#sj1Pagn)g2Fj)eDj&I^pWeKv=7S1VGUrN7)*bmbbufwjBnD+WX@Gc6{9o&GQ|Ky z-*hzN*V#M(DoKFpvu0;!M<~!5^YQT|frVxbL_{^5F4Gy@+}^fq$zX8~0y0exRA@ZC zx-tb4a5DHm>tG_28AxIy=X49tHyh~rKrW1EYT||R%I3Sh5+3BA4xc4I(#Nv`u%i#A zK3}Ozb|F6)uon^@C%|3+e)@aYNI{?}X+H3SPIE<1TYKo{=7!m?nP3Y*1!vuTum^|m z^}IUREhoP@xVV^tLYV{tp2ch=%>YC~A4DIh0QqMbVSCqU+ztW%fQGU0?_Ym?eLXW! z+;OjJ=zN$_I{7@WA_xV2_^`3C{&4f~SWYI4Pwl*We!6F3bJ|s)At(0($Uxt6y0rh| zcttNKhEiI*=J$op=#PLf!^)(&CRe6&08-e1nrDoO~LQqSC6GT@&EKs)KOp0EC7 zB};Y5BQmeQKf8OcZNATBa;U<88z`ZM5N1G(STw?Uf_)G{HW&gS z7;gbE7d8e)JNJhVEC8~}0Kq6JPdd?ZlBNVnX9X9KZ5g2aC$kv!FauUMar*>_0#F*j zv|2Trnh%p*3K)bd(@;|nql6)bfeVEpKn8*XjgW3|w32xe$e9pS zkpj9|Z4)_C4AW0SkVR^3m%;$@O7?CYPUYGFz#Qm|2|5VE5Fs{^prsR_??Q7yy~iaz zNQI$(eh}?8A04}|dI98{-^3`PinD-#0BC}E#m|_9g@yeoQZBIHpMKwTzh>Is*C&)C z5jh5Qrz%*LA{A(w76wQPq!Ey**Tx3-&=J5nFv!TFgM#3p3NApp8r9~C@d?gvL657L z^i|ORT3uSSlHdO8dNqB8rGPfS$Pe)73pHT=*U|_M36cED+Xf~S1749IuqP(nW+4TI znB`5MCZr&jqs34{Hd7&*ID_fZ&o{d{(I`I0fcWC3W?(`8!axV4nf;}e(e1drH&`#B zS|do1e+CDUZRV>xK!w0FMagaZhxu^Aa?0Aa;FYSi0Pv_70kI~^~RfYO=7>&htb z{NRXs4|bJ5;5o@&Bvr9e{=BY!KX6t@1z}>5>>c5PQQ-t`;r})|pFZu5)4qFG>Oq2g z6XtOV;m_OgKl3qgE?j6B>-d-#v($*tF%VC4|Ecdx(<3a1kJ}17m_q| zd_U9xXkm3#AGAC=1_!0D{o^%z8((p|91ySp!L|Dwq*vy)r@NAlm!aMJ)4BzAVbdZXdJXcIS9(?9&r372W$^9wdl2 z1J?7@f^siPpMj{Wc^^`fnkPzWU~GE#x#(lw*^5r*2#r#U5)rWSNkC~$q@$-Vwp1@A zvXr#Va@juUqm!0DJlkmYuf{nN7q+WM5FzA?OXDDNh+QcQz{B3&BfzePkl}5l+9eo{q}iR$ znX#Q5)*)kJ$N2%RBsV{w{_f3(51+^N4%!f@;$Z6R0?qs~&F8SpXBCe0RVm_O>+Imd z@!{H@Ug6-u9v!uR!)&j%5DG+OcNE768df}nqX6aj+czYyla3evQIvhaivC>uo2dM< zCFQg`1|yyDP8f9Wpd9$-_Ey!uH-(y-8cL2qdyc*%<__HoEI#PG_>;B=lL6?_>#5jStn&`{DvPo+q$u6S=>A-yR~;@cuqWb`$UgWYdwy_ zh>Yw%RpRfw?-xnzPa#T6K#BAxzwpXmq0Q$JiW<|)nKY}B0AKC~8W#k@pkCHhrqgr+ zsEFa!!5q@7S4zn+1ATo8LwFX@h5~?SVLJ#22$0Qd7NCmD{$&Q4_eXp@9W2?Eq*`)r zE_GK=4=g{#iR~XN%>+X;{tc|Z7hXFC&B@A$`uB$hvhVTe5pmHk= z=?()O2%Yq#!ZZ>B%2`jgXwz7mFBb~&G`g+r(4c;pBD`ux4T8OoTW?k}L%xZ0-`q)F1CY+#+}+onpN^j| zme(~Z^kF~)gZ&_mMwayhhT-Y;wWPIm>9i0nBO@A;WZny5$m-fAOi?{jz#oy$Wd#kS zqI&p@43Wp)(|YtEK0b(rBFlBFh~rPu58T5}LuH&kutJKM=;Gq-rJv&*_NPB-w|WtR zTLb5JJH+A+XAl7I7#igko3=tx!KMA^62Qe zz3-~KA1c*mT>!YDglBIuW1Wmz)bDqBSF+1{_(qKcX=`&+h(7+$%8Fk15s<=wegT0% z+p$ZoE7^ej#Pl2A0P+8_j35;>%=6_l%iKmx)0wnthe}nAz|yt@wK^CC(y#KWy3rIp zt0+^^6i^YA&6TQN!ZVhg-7^M1*f%wau2PD*ai8=MpQ#XBov!%0I$R&|bKmlGvOTa^ z-m!~>R>Qyfi}gcFT9GpLxowDz1c@7+na^Dz_sNfw7oBNfk=*{5L3KIP+pCM8PlPHj z<)VqMVZ2XaG3t4=y5voWIEn+`YfaPJ?o@VYh2z1YdbAa>S(B2It(Ld3>$$j^tsV}y zFA$$xnXYajOcqi+&n%>N+#gG0zApWs+$p!b%P{o@FC3b+_3tK&+7sTVuxT*aZM>ZR z1y|)jl`oeO@%=Yz3ZatdJ3OO5K`%8b4H161u)=}VUt!FPhl8UJ*efon*_3}wHp**m z47e9WSDm0+Nr7YeqKI39vohpRv$wNTpP&x}|KkGToO?ev|v)<}Wl&J69kwXYRV8!$^JJXXX z7ZkSEk|~^6imSTiz3N=VAT$@kv2jEv$JGpH_;Y$1HQWryx^q>ITy^ zQ290N*qs^qJ5+smKN<4p#I?j{y{og^!RG>=dtn+`m=yxSJl5Cs&R9rJ@KQ^vWb@M; zNK&U;0dBuSZz?Of=v!&(GaKmNZDv=*gh)nLw>=JXktnvcZtu`g1xBCPyF*lS5Oon1 z{G!p(b#>2H2bOgFe7t-78{CN>UfFJ(>Mr+SbDC#;EG!-xjpO9iicwuS1q_{!RK7rm zKAvc^i6X_Al@JhXFy(9O>xKz5-d6*Yxku6_=1R7b0Bfg?si;17)#fPBZmPt6NeLGy zEsny7?p6NG0UBtp)Ya7iq5N#}<};A_&(6*&yzgD&%Hx4(`{M`B$2_IQMrUN8at8xm z0%-?W3D^!mT?a6!b)CPpwe{rkQXI7O#3*C`ELU47U+hgG0~Dz|3sx7}OYiCui(du3 zg;y`oUJHHxOlZ5(`fFVokR$TgkM_sQ{9hwScX9xm1R$x4Do>9LgbL^)Qvs>&^XJd6 zno?7VL8m%4E-n!0?O*xdQNxd*lMSdd{Y#Z|a)M{nQ7W}B{@4o$I0ORH!B^0|dz&&K zCADgQ&FF@SiFm8|8Y|!)os516j1(HSAkr=o3xsYDD;dXiR#zs-Mx`^T%Bj)a^W5Di z-2E5VwfhJT>jG=rT5!wRF4r*T8bt)(;Ex#K+Zv5!rXa(%Lt>EpS-GZG3x^Qg+>p4D zP)Q`C`Zmh{h};6OD+!D^ANcqK$uZor>op*iNg?AoTkc~gC(Lf!uYkmIVcz*Ad9uM7 zxlmEm`2bMmwSN;rVq&|#OrFHi&!=LY0fVO-9q;s_yzlc)PSK+NrF}AH zkH3K_Kq4VoJ6g+*9aOnlN66s!jRNZpI-u11Cz$Kg2_KWQDdz^TP5xOaEf)dIv`STAAe+Il$lG~ z+1bf)=rp@w0;K^cWHY{!y$4_K;*lVxKq;WF1>!mzC=*J2iBfqofZr!0AmiD8k*!4& z22FLU*pCFEVt+pBO{>I8<-JN3@DvdVSmxo_yL1Khg& z`~~nfxOcZ!J2FhWH8!Lrdim{iYAS7jOhW3E-_Pny7c16DS|{L+ZPQS8pX-hY?-XICbV zAWtVbY!J*{?nlU2ytCj%x8k~RH0s+as;Gz|{P2Yuv`5Xq(}*6%7xgdtu!_fh;hhi5 zFW!B-<+7JqU_I_$Ci7#7W zE`sGcM!DZvxBDKchJMElCItn)9NJupOIFm9V0q-cGMX>99i6;yCEa+8uY1xjWF!EK z>x^>l#)r6;a_sQYNuTG}VVCxB^U%j~oe7dsx)+I3g3H!|p<=8w{5pTM8>tP@$P$=+ zpWmDKJSBq;yKqleuXJ*ea^BGHxYG78mx;{hT`k3w#=k*0-iXaeT$x^ z$r^)(bq{C|vv}RuLz|^Qa_k!z5HU8U1~4=yR>xE)x}M)vRW))Gpv`SA zGtu4EMb5>A58Ms>H1Zh{pyxtN8H>ci!UDBo{a=H|5IEF;;Gfg*n927o@)6thrgX9N!5c6C4qxMVO$ zzfdKl+gCYXnc?r|!9hfdR4eP7H>)qdzS5J<5DY0VFQ4`a3k?+pwAawk5Jwyb=mz0H zjfDCS!N9nkb}_DwSE7M#K|w>)vq@(NMDCBbUhI?WX0adPx%}Z$JUK$jXYo%|4&QFk z8HUQha>Jozpw%b)U=ubF_A&H#9z`}e94xa?)4UNOrf-m28aTvChJQ<%E_4ya!Yyz| zTXAZ3BH2>#$eEEtm89nbL&V-5c;N*6D-3s^Xt1*@PB34S0JD$Ze9fGN-Eig3Dn>-w z>*30o97*!41NX4r=x$nCjI1m_^rA`ZygXaCi$aXijD8FZK;lZm6<_Z1nQdT?!3fcB zQBc9TUA-fzv%|NFXj#;TX>_uH2xJNiK@>_7a0CRp3st3I1qEN`d+mkV|KkU#TC-Z{ zvm19>kjP@2uipM)D6i{LlDB8TBVT-cd^YGkLw%P-9G1oxu0bp-p3BS2@jpYmCy)7+ z*+YR~V(}Lq z(40#Gwy=`%+=FNe&5ex>XqHRLR<5gJbJ{jHd|t;4?~VZY>2zYz$IxuuX$jBBz^r*p z^giORR$E*5j|4n66Llu5^oH-cP5G?Y#{Vh{h8eL!2>_3nwBZBU44RH^ypqSOL?E4u z4LLd!b5&UB$1l-L35vSv7b1VZYUQne;2V#?;7T!<_(m){WgyX4{5`J(7MZ{)%YPdR~??@MvP}BW6z1ZM( zJ0?ft=L=$s9$g*UU~@Zpb1@#^J`}^hO7!2;rxgcyBDOECMBzSKpCEgFQOl_X$%EmP^#h;R7FGits z&IaWd@4cO7y5!sviK9>;&xI><3@Sa=KM&+DSBrCM>_F@X^&>UtaW~XJ80apcQ)x z$3G!ug_jA(TlIeC2R@4}!9^;`fMiw#^H~hS#k* z!00xgKsw=p@dLl!vyMPMlP61##B9ScSyzrXT_7EmTw&k9kOdvkJuVd~v3PmR4?L_N zrQ@(sIT;tMpr34nYKR7p61$HUE20Q~`x z78?@-?F5Q+k^*5ASk#D0|B0U>r@1-7hL8b~;6;c%{f5d{|5zTr6AVI((6Vfu@%OpJ zjlnMBvUMpQ96;Xy?Mq<+M-ID;;1h5OLyIoLcetWzY}D*a}5NZ zUZm*Fp*>T)>!-ILKgAmSrJk@8U1}R8rxsJ5h$M!sw(cjVMM6SLpkO=KLm`<*%am~v z`q=;ego?g(s!zKSUbizi28Q#o#jKD9_$7c?YBW`>YVYh^^Aeie#KpzKT%3T^tD+1X z?v|i$w)TtVRS>=3m!MtJ`i5B%Uc7kRwH3){%0nNbzefdY#yy_^-DU8}!2;KYiQ#XX zy)?#O$_uXTYjk+@y7N`7E)Xj~Ae0g z&^M#+ul*&XA);6HxJa8t{Ailnx30&Cch~AQ$x2yRgNe$mW75`Zjyfb+uYsUk3ac)u zeo?xB&A)#I5BWCOb#p!5#(lAh0UZ<=-%qjPwlsb?MEu{3t0L0~UcP6ZC+(uh&v?6} z^Ca?5$1i>K?wX`da=e|r|ge+HV6v8+22TOiT-wSCi4U;LfQylBo%rzISAsY0?PiwOddgoSL`)FFTbnIZ#1h{r4_d7f$yGtkea| z>0C&o&3=GR%ACLD?kVoAdFc{X%1~u$acKEPo;5?t4;Hbwl6KssKaJU18eBvBJm`6U zmC{DIBdhN%pkW@BM<%LRN4Y8hG?NkzjIi)!2aJTT0;Qgnicl*;YFVJBb)cQ7ZTfMiwlDhN#GE>TSFj^|l z%ZHUtfMC-=mYN2`#h+Ff38`o7_T>a#Y+fnm_$}0_N(W&Fk(x{N3DJI@=Vbp^r6q-Z zKZB+Zmf@ZD<-{K*e8WRmE9YfAxB=`!BO{}&VB52wQTNA3y-!W|EDkeb7iBZVc3ken zaKxx8*3Sl`M)IjNTR|!i{Tr`#zg*kkUO2Mi6@=DSp_wv1r{l8XPwx#q7ycOg@hSapVJwPLQL))&KvAYzuD~!{{prPIf8Q^kfGbs|Z+mhnzhYCUhZ={I}K?ZpF>%VQ2 zS^{1(TzNk|+zV_a}ZcFFefLI|C$iyht+!&oHXrh@O-m3?z+H@(! zR)Uoq4$#u#=vb1F()#c{WH8Y`mCL=}8JU1LA*5RmS9I0Xt%DyZ;6os|fOCYuC*!}( zDz5Om+QyuX+K-k;`qe{HmeS zvOsC?|9f{h#s4`4+NCT;XbhvJUjPnl{|}DakeJa66e~`Y&JwPVGfMRD7=X-tHHoDJUJh!z;pdW40J4HNKVDs>qp4qv8QFh!F$^vr5mg zR9n5oH=-YBx!9$U0tz{S9SXEJEvRLB!3%0EXggVRWryyft1uy_Vq=MSKqK4^k|WuG0Pmw!D@>}^}0&h_m^*xM6-lI z+cotM7!q0S6UKA%H9D)AvEl9h;5bJ$gBuZ-)IdL;iP79Y6F282&>zPNBlI*|b?UK* zZ-)CBww78qnMv*>T-SpVlrXvwOylh$ZJ{*MTY)S4E`CnlnwLI$G>m=9sVwxR&0Bqu zg_j>krF*ycQ%`$q1npTjsGUv=S26J(n~=hvbb{=U?NO|FP&!jlC5`oSC5SbQ1nHO* z5uKv@_liUHI+T3HO)T=xC(ds7SgxEb3?G&3lo{CxVG%@lvbN5vy)qbN!8c;rgWtzM z32C32nlhIapA&am+Hr1v8rbi{Fj;jPx3F$(e2M>?NeJKd{K#G)FZ!70)Kim9gATHuKa@rvBVslV-&ng!GKmEu;9Da>?P9{QnOBEN^rP zAB|B5cOu8TGPK;2y-du(A*;QXkHD4HX7|75eVi?M?rQh(%7 zf42F`r|pav8fMR5o+mu`AlgH%-@@ncS&movs*x>2TvOTt>rz`Hc`}@FzLMws{0Y)O zGN6~VaP9LO>+9_sr#KAj^p3>Af3tJ%NqsS41Vck1FYjqsp9w!WdoBDfb+b zUq+1=Q=E{^dNMkO z7BedyUD5X+bNHYYwA7?}h+y#kzgtzaK~GCGHH-5m|C+0wYl}3>+a4uuL0-bo({K5j zfALAdqy(e(W&_ypR4l20X#u^(<5EOhJFUBB7W?yOAsG}5EZF8}A5~9L4dnlBg5C8W z-NsLVA&dZs?VITKG>%`F!=L{ps-@IKE4nElMJP{P+p!MI{(;c#3WeJRg}cbpfn1pOzdi9s2;K{(F~qrdfJ=?iQG(_wVlj{<)@b$3 z#doqXR3UWtlbqKmbe+q1#4PUc`CgoPXK8f~^VKkxQ%W`Ob+tKKF{XiYm>6ja^EayO z-9f_N+_WT1h7^rrPZA1g%k{wMnLm1>nRnhXf0+>gWp)!WEYW|V%V*}Rms=Kb9}J21O(?k_L6WpH(H)^^Ng zXKH_4hGJl#B3amY5yvT8s<&q|@RbH^^N%l7B){z;Ipl?cZ#n&oJR%8`)btqHEafbQ zsl9)Ahlv@EehC?Vzgo}*{v43F5zt`1+hV=;uty3Zef=kG@ zo93jIuyatvZozU(dh8Dz#A(!`A0eBYeALu9iX_>VlkzH(eFIrMBH)L%EI2o@Y(gqx*uo!78nYrd0gKL8UA{!>y?@s@>7B{? zHQHowAo~2m_~e8Fj)@7#o#}U>Q)13RrAWn8#>4;yDU(nvltK>l3`d$(mTSxMu2vh<-Q<3tP_$4nRc`k+oiZ?U z_&w^pqg^$4^dQZb$>tHspDl`l-g#}n45o#?q-Qoc6S$g-s1=|rfP({8qAq`N%I zo$2ne7)|v4%=ESeH^uRKOdp1}Uf%r#K~kudv)(?CkSss~#LtJ@$NRG#(O{KWQL!38 zH-NVW%^)xpm@VS9DNLHaV8Hj;VX_y_K~OC@+Y3kp#4B?NBuQU)Ec1F+?zHjO-(3_h zTj3?(tskfQZh$X12+_3lH|Uw<9|d+vr%B49$`WEUZQQqTvuw10bMec!r*!U{Syxvw(+4)V;RG(xocKulfoGiBrTO58b+49V zaCa7L=I9J9TK{~>xvoWLFieeA$$ViuWj1OGCIG1wl&=w@+}>>BHe;Q=`tC`y5xV>G zYH2P6tb_isujgs?Zqf3!pvNiF38I8GF$|2n-$+L~F2lGcLM?3O+vocv*^8*KFr^{G z$_BYoe&El5prmXSTLWFQKMt6P25eHf;Lu6?>ek7T@cwf`l@bVY2}W3dz@pNM0(#k+ z*S5R(-^=@R@MCnh2bWlJHn27$7e?#GxCbIY5wZB^%fmVXu_{R%1d5FB6oZ2Uh za@zGg&vq(UcvI&^ix1DL=X5B{mA~4#qZIF7Z zSQ4$!TP64P*jMuchnUHxD*;zaWsd@?T(huXf-auICkWJx1N5;sE1bDRN;!zYopP3z z?GNW4_`*M#tz@3zXXAfQDF}*OKRk$}kPXovZs&00zN9Gg@xs-+ymYfsyB?~9yPt;fDxj~lt8k<4jU|CG8#`4=Zbw&$H&_3o=SnF) z&o7yt1o%b3_w02!mj_9@m2=NqXF*{P1D+^TlJ3xgxAuJJ++s^&?cTt3qXur#1uf5n zLrtjh8**^W8^EcPC#!yl2oA}q!=a9C(>M@GV>RnErQ&IF6-SX;me4=IyjJy6qs_Qw z1l4$sFxxh#$>2Dp#eS1_{$O?@KlFbGK$~}(;$%-YDv(vTm{8T)g%T<&i;0WNhw@8A zVWC@_Do`unci@eB!$@`&B&#$HoDbgy!-R!FxVYw>R5Q~#b>2X&bWzalu4?3WwH^kv zeW*)3RCMNI{lkyz$4;mLxX(EU|=2$@<9mzcBPf5}4R>;H1LWsOUAiYW8*G2XCT6b#ww2kydm)vMSR!oJToeKJl3-hd!ZhS-u0jOvd8tK;;+Ow>P=@BXnwa7oDH(qBhw_n*uP^b(isar#UJDNS zers*J=-#!-iDej>a%-VaVim6`G!%vb1|!uSbj8d6JzgV8+-Ri-x?>V9K10Q%$Qj?p z8|;+#cEP`9>eT#QiziE7pb+I+YW)`TNsXwGr^NsXgnUS%9baFnm#&`gloh1tqEinw z13biM7J^PL^j_@oIQo-{w0{$-nJaDR)(dL585mPA|FcAnAeCcAJsuzS?s2Jgc79@0 zyo)aJ&9abEe(<p^HffOW@wTkV(zAQvSNyzh)u9Xb5|gicn}%#E3Bk|Gz3(C>z}N7+V)(@Me8$cDdFj!-_2-9#4DDBhR1;qij|h3yT4xB5p&`X|K#7sUYVr!) ztfnw!3u0oHUo-`+1A4)a->x}y8R!}QZ1TsAJL{+~4mDUf=ry-+ToY?mN$6^Qs~`h^ zytmxK%g0wNpX>@w?%4yVk09#Z%O=SK36fDBqH;26!QgN4m>O2=?5Zh(QsCg{8DSvzSjU?%=%`aJYv3l`jY1xH6$&Ct@KxaAM-7!d)FHUWOg z>eg29oDZ2y0TKrX2X5D+*OZi$W5D>#=dPq1!@$al1u*f98@NNe{VHUY&LG{Ox#t_oui^@iAiQ?=y$jP=(K;dpxQ7orFAC#ig&ACn-6%L zK<3B{{(H?JU}rZ3W@3n6JcGI+xW(-T+{4P^d1Vc02ameoJ}>xxe05BAc;VfKzzzPz zg~STnHYG|K3%;w@FsPvd51In+7g1-M-Y6In2i7}ktY{j;xnvW4h1N7($~f{h1z1kK zr3l23nDD<{{=)I#Ar?+0f6}krQ zLcwd;4nRPTiHXTF$OKQ0Swav2x6J_e_8;&W1qM>_JW0vd|Fh2$&9e-Ac=Z-e?x#>; zN{tuC4t=A|Zm`5CakjV|^8b&w_W;Mb?f=IwBP4EQBn_)%Rfr-PQB)c-LRMBuBq=E) z%AS>|G^~`Fk(JR<2xSxz3P~iAnce?&Uh01C=l49{-|s(;<9{6Y;m*2zuFp8n_xtsJ z4S6a3pPYwT2W(kEn5(X;V%hxQAfuXsg2JU;i9dcCnA&}vCxr33-$_amH31a@vs#cV zozsj?1syn`ZJsQm}vHf3EDH9Wue;(7pmMlY^ zkOdV>4%Js~za-PG7%#JhVUzoDRh@koxIGMFwN6|UAF9Pq60{< zx3d=R>3eM8Cz7|qS51(-mvj;QWyyepUS|##Ut~Mu9pWp|*51=~E> zOmX$<1rV_WZ9UObv!bA=h>ikTH9IeFK!3me=boO_iEj|HfwBlTx~~#EN-%IOfCrcLyWjKUbu<0fD(+PDYvF3_76P;S=K>v^h>p)aH_ltUY$ zy{ZQ9XJ^Zh5ic0%Ua6_6du&sJ(3uZGQi~DU{@f<6dI4I^kBS%0x_z;jZ0r_|NdEYJ zheE`K^rk$aEK{L#KBFCJF)}jlmv2e>g@^OLz1MAPyEt&0?VGy`zke(VhAQJt^M?Jp z=gt+zuP7-gQD_`}`c$TK%e|DmUyZa7PZC~rfN3=oVbT*iXVhcKpJEY}?28v)z+_tN zO5)m`Tes5S1YQDjpg`_$D90Hx_FMv62yi|Oi(J;eX1WoV3;{0~@)gjQ0Q+P?FZsZ% zgbz+R8{>9<_*qr=BCjh&KNWT?hxMZ$D3$nyyLkHOE^X0D3JF|(ak~f4Gp$~m?0Z1y zmTs7Utj5gb<=cp7v(qxJ=Thtz2bWAT9O9sUfuD5W)f0R$lY$d8kQp#7T=)z;XO0ysLZOq1_n00x%(h+#l9?s9kqsVl z*~O2V!wf16iyqKRTlH^QSu0v3sGLpLSl1;nTyI#k8nx0Uea`8v3+y!`WFiv-9W*~y z_npa$t<+Y$7TxS(onf;l`XGJI(;>F7uIY$&tB>Ai*|qcx7Ni$t{zV$BNXN7nPc`WF z4A;Nqly}XX$-O|k(sOF3SF)~txWREvm)*EHW?9%i<>Qz%sjh1M`<`Dyl{-L3v>*zpInQw0%a+*3dd33Xj^@$mI zC`YXJTotz7t{rxXiUTXC;j=|xJ_@_7HLlZZy1#DD@$;|F9xWBCzB|dTW-}(9Ppbt) z#l#kZzp4%b4cLKB6F)2nalao7`hdVd8jz-U?`EMKnmX0-;Y@YL*x-{bx3(-i)xSeQ zt-M7{^Q8vf33X~Gwx>#Eb6$L)?@6Duj2PTv;aLmzNG2Q%Q5!s0GBorcJZr4{fWRJQ z&KEVKnOpY)#S&toCGt+ewQE_iy-$1!UXMCL%9@G)*)x_mZ>ybsdDb7!JW5Vcdf=E= z$(~1b)=XSXUold}JC(pYeGw{B#evJEKK=E4$uIv0%BDlxGuCIq=wsEIHL3LK_Np(g z%)?x}?`&C$+57?9bH8TYU&Rcj%O4*(+%e~&Dw04hM7A(q@ubhIM%(~xw$vNoy=B;? z!u4shM)eztH;&7hw4B;$!?0uNxXaR;ig(@bw3#ebQ*&hxtUBU*Zy)31Nk3e}H~8%X z^xaJF{Y0GmsW($z9eStirtAfK3i~}*dKOGfZ{MaIvh8n9Ik@0tGT{2U!atl%h2C=_ zt}X8{EBlfP{{-P~rlofGmkTcQKIvnx9-&;6C@c1>w>e0J2Z#HZV4zCnJhI8t@%HFK z%F8&Hz|xD};kWvMn0jnbgJdW|MB1?MDx2Ts^GhDP(##B=mkC*>Np5n$#&as&O!{=x zH%>it>Kn&RnHLka-aHISu)gB83|H4^SCp53djIeUq?PeOBFTC_Nl7iu`L*gpceV%L z?fp2r4%a6Zw{RMTdM%vg_J@H#gO^>lXZ))0XQ+ya_#Hk)L012r5_`k%o>hg{@eg{A z12Z$u(&PP;|trP5Tf5J~rTy>w3>lOhK zhJup|csKp^V~FO3W#J7=iTU=RS+Z(77xz~7&%bJVW$A)>B;PEf&nh1Bo7vjDl8b36 zQ##+n-zca1veE;xS#>GW-@cJ<)yjS=_$Gbh7))FC_2_m^M%vwZd4GdSS^mfqUqWiC zU?)?R)NwDD5|9B0e@c~q%M&5M34fkV;XN%)%-rl;;l+IyyMI=RXPilET!$CQX z)NLn#LHYR52>52{K;`pxM9^EJ)`IYq3=QTenoAf^{wzPo+)e! z;|Ix>P*m>ZK5Mlz<~FFv1<3c%#>Ue^8Uy{YBs-k3`LTqoEk`Xn^%+aI$S z=gAAna`DPBpNKWrOMQ`fB9Q3Rm?)~}HfLJ;(ydy2g!1$vS`=cP<*WAgt1!{HVHhHWQ{$Hq{7^-Jf)?)Pn#6T`v;G|siZL_26`lcG>c1A$VotkmHVsb?Is@ahf-=cssM) zg|(@;`i-~y-L$dT94sXZ2oN5K1CYP%Z?|7 zT{^9P+6Vu86rDsC4(f;g+%WB|9Ny#Rg~_+NYVMz5|IT^*3TQWJwwhq;??~L@QsyMaN~0Wysm-6p^k|fIpXoJzZYMI_lbP|$subUdLK&U3qwY9kxt5r zf$c~QrJ3K1ALL zZzJ30O^zQ!U=-!_iHjVi;aVNB>uZg@qSg|rS*hBil1%NnVjHbP)jZ68DGN0+_<}=2 zw?hg6wL0d$KOj8sLs^cFVs77&{OKKMqyV&*m=r!}#IoV0h(Ka~|;6o|@} zIaGONmy>^8_|DTl#2ll)H9!2Ad5T<4({+d6)#0bpzq0Fv6w&dkPE0e`gp5AXFoUJDU|?T5nL z_y?DA)!jnt&8)C|l#s=g`pK73-Snpi$%un-?AW^=>kMi1Sa9fxjk>?a)qbz`b}pU^ zVq(wU7H>g+);a^gvQqpfAKFpSp)bG`C`d_BaTz#jsIjEKoN8Rzax7$=Z-W8nfLwW~ z2tL6cS=eNloW`|o#8j`w$?c6pLxxfNsy%&fp~sBmyGU9gqBp8o!1V|yn0r%?Dmd1VY+DI#rr#~M?(_r@rP!YCjX z&J?H@x9{Ei7cm}_b^O@2SeYohee|8S$+P!@Gn@@(`CE{MwM5q9h<*+N+ubAC;hA)02}Hu(P_gnQEgP>3!MQVev-h zBfcy|qfZ=PQ>pg?7Lnx%v~jo#EdfoD!uqaxIjHE-{G4ZmLO=%^~1 zCUb^qEwB5re!Ow=5)|UiN{#}aR#q044(X{H9#MJuX2}?G#=lj3GPb7#1W;&ctN8udjAyR+T;^TQ6j)|iP*_NN zY016C%)UW4c%0b-w*>?QsP5Vo^sZ@>LyHeqD`7}bp-fN*FbY?^i}3Xj4GV-52(}lw zmGJ93usq`C&0un&;r_O<^$7Je+tVdP)n=F$@xWD?LJ8b<0R~sko0<%|d95~?4!}W` znEZ{5fjMi@-<-v};V=v3PuJY#tyB5Ca|JAh#L*kDXcnQWks1 zCL|;XUa@D$GGqzdMw?}5()hqo4kA<4ftRe~EnzlqWLS*>qE!wYvQ?A`*${g*Mo&kF zHmhK2tz?S0q{2#8r8VKwnU~ZI4Gn!)SDoE*$5QTw7_?6I9}2l~ztU2!Mn#o2HgezG z`5#C9h*BMw`=QM+Va*euykTA8~Og>$+kls z+z}6s1{)~GZ4u-p^3N! z!^l!+pdehZPu{MTSolTd*USc(tj3MGI&4sT_UsvUhBvL3@&Zsq`YhzkgpeIbq+YJ# zfkpGE@x_w7gl!_;J^3l^ol8^-0~nN9cW;h~8{l2}JtQq{c&E<_#a(r&OI|Z&;ozV> z6%Y`JEmeKlTlMB$IUIs5^*n^*w3*_fu6q8#M;Yy*mIT8;Q6_nvVoWV#c*WbJP_2nK zS#HYJ|7m>9RDj*ff|pzITkyIf!N<@A0MjmoOPN|+od}f(7_nRAB5Xx~eRcqe!(&v4pA$UGDf;;zkvN!@`GHd-c`}`+k63S7&D@F0$r< z15u^lVZTf~C%$|UTC+yeqUjzagu5@(9hUeT__S+aqS$M2YERDU9XQ~JWvT;4Gk>$e zF)%$h$^?_1?1g*$Ms*K4ye?Bxs69zhxlZa~qMRvk`?(Isma5Ac-gEcl>x%FV0uhaQ zgpBx4#1pR0ylT0Re7H)>_{zLCMR3z51L@rV&miag z#k;nZp<-2|QQR@kjJQB^&Inm7PyjCr3;P=M?*H{;!f7(6?)wLw(Sc(zV0r#0w3#%Q zUk+0}=)8Z4-Dxj6!?t9di5K=@;*#t!b!wZYW&*YwDrhTdM2kykxcz_;d|X4ft;_3b zlz#U>V(Tkj#qf#^RmTIu`&H#eCxYB%-yL7L=S%aR#uuL2G_Cb_ciS8V24b3Hu_&4) z*E#u5FUzhd{C4K1`C0p;>ZIIxFMV`Jb_N_X+txkIhaBiZTiBOTe`%M~A@?!lp@C4clH$$#kK$h?am9dBa4cUqAD0>89zHDt{BZ!%k+jxIx|CFB) z)HIi~a<{kLo8yj~NwAWbAI(o{R-otwbHE5RWh=)961l_(OUEpJ8hTKgJF$&gI2>*2DP5fFm{(H;u)cyE|{0 zzGeSU%;tW~1v|#Ax2s-q(CRt+$jGcz7g;nL zoF-cMg_pPbmA>{lgEeN`b)Vc5IVvNoDJswV@}+1DM@z0&kmqc_bN|t|){zQo#Gw^N z0AVOrh?}a_h)(x8rM&+E_wsATs#ES%Wu>)jsvr1}pdyzc1O_IcVrtCa=jfEcUH4zLQ6RolaeUhK2Sf#~igw@h z{>FynpygPgfll^0`}DK^xA#lGQecN(iIVP81vSMpYBmv#>rB031+X@?$Qs#%u?xhk zFv_+Lv>Y?UiIcXe;%Z1WsJ;5uXaNq3%Cib%#{sL6hS{u|M|P>@HRT8M;6|Mw>a~}IfAKovg8Bo#X z9g}n}^>dYvgzcC1SF85;ePJ@viC8-tfx8M6WjME))G_(MgpPu`+G^hsx&MwlTL+l7 zw$J>z2XJ~`8Wyb$S8{Oac9FfW5|Wi_bxJ_irQeX4r4to5>KvMv&OUIrOKM&dLai4S zStOs>9&A-wa%VhSV;i@{DFH4{PC7O=Hus+&&X6nzih!sn6AA$F?L5@l_Txg<1ptv_ z20yZnels{d#~yt>XL=@pLs-h8MYh;=h!$2JofaHDDV$VPjPTtfh8>tNeE|6OF95sm zac>oej^^YByGnhl*s3?@=3)&o+ zWfvl@)!LDg1qXa9%;$Jv|19nJ@Zdb4XTX`x*QG)I5K;1g^o$*=lWLev@0?irdiLhc zyOnkNR>Q_t-Ax~|)Pv?`2j(BY)N_+H|ffX-w`OBLd<399|b5-=>RKPSU3F1}?9xIzNl6yhiOiWoh@Z=rIX3rD8*qcr+sYn%P%Tct%e5|k`=U^NtMjvC z*Rt;CFauqsjz*|B>)KHQGv)%BjdKa@nwYA%qKtF%CPjMI<)*RRmw|y$M33-JZ=}}J z0d}M(#8^_YlabozZcDUkF6Qt;CEn{{in0O$2!|D^jZ>5tqgfdvhl~F+Z|y^eVs}Y3 z;2`cwI3!Qwc|6tE5NJF|Z2|=(1D@rVH!QjK;mLV^%v#Td3*zemeYD zdsFV=#Oj5@ou_6MZz?zjYj55D2ey--E*0E*Isd>ybZ#??hw&wTRm7J+T?iVd=hnM> zAqa@Zg&+W;7lQP(>)SkadW^nr5U9&uzI2?bgFP^kx0r%_1Z40;`)l)xM*Dm0mT<9((`m?*VU{L^5h}6!AxCPv6(<@u1 zD^r-oWmqo40x)HZV`EBWm9z0yh8k$k~(Qh>AoIC8cO>UlA%2ec)*DR1j<>jGc{+%A=W2)Aw#^H5YL5(yO zg{LK8PJ4loZDnjy5)*7>)!;8k_$II|e6Qn4?X(-!vkbl)eai9VJAISsea z8>xZgWJRK4Q*IxRy^^lvSbSrfh03P!Ob;& zyA_fY+$W^a9I`MnHsQ{DaUdsTNdtsB9DauIeZYxYv%sCHpp`qaMAXZw1tW+?{r_pNk`v^vuQ9mw{n^russ@c-2ifi((QOWgMK^%=t7ir@_ zS0F5DGWf?$l_R3{@Rs74unj$AAt;T$vE>mJh{1gY6C%A;nrwWsFR#pz1Ek-o$H%Zh ztt$WdJcV#8d)|e5@WCIUg8)~-?#GwI91DMC67t%%VPe z{4^!L>1&Pi2wvdyYtCa);V$yxZO^=_ws30Ds{yGf58{?U43Za_V#5}&d~&2`2#%qj zfGPL`F~gc?Xp5`%ocmWD0r8Z+89`ZTdG>QN6Vjk~A=GTyMjvRO zQGau1Y_e}=2YH~)%~k~ARr0vaAn`@xR#$x184*yth&)NNYa-`y8E7-`imZxR!gJvE zdLI{-$8xyX0PT`ozjt&{yj8V5g_NJ@1nDjfRuuqgMS>CwHW$ltJuMaTzN*!X?b%zT z>>8WVAr9efcflFPZ?}lLon6YONqlY3$&P>Lyx~y{CBA;_ND+gak~q?Vhb7ZTAPNHD zKnnf?K-9CQrlwWYQ`hP}Cn`b_&Tl4(E@zctr5o9EPjU|z74LZp>)+VsPO}?`Xs`gt zWBBOgYJw%L){2VV7o%Koc0>f{l|sQf1Bx8q;4HQ`b}lY@IMonx*8BJG;gKf=mm6ld zH79rw!Yfm0o|HU$w%+YnTo$p#4{`~>hUf_%*n!eekxkfRm%;}+01E;g1(n>Px?H5h zU?ky<*#Ys2KNt>VYwOOPfuGKTPeTF4Ewzm=hw+7_G#aQEmQMObmW?30(NWQhC|wgB z`;&^iEnzIeKEtoC!OkI|Oz%v1*_E#PI%mF;uXZ*%|J9PsqD}!mA)P>IQPTlS@4|^D z6X%+)C6b0-VBWG$gQd~Gj{VB6METQwTu|L7U18JUW&91ADCJujU6hIRxpeo%s)?%; z*H5ieZ4$W-dpOOSL+_`h--oh*$ zoEnkc*S)wU4m>R@OHBEYbr4RL-eBbQKU$H$t|iEFXV#~)yX{#HGUjajYT}n?70ja+ z8EJ{Hpc{MlEo3`0Nx({J2UHtZ4NXEq*h3m_(N zou$6F=+#W>0E%67yiMbURnA^2H3X0iOtC00o#OyS!`Eh4_U(Vie?EUFY#u zF|}j|2ab^ncp@hZaa%$d!N3(%d~RxLN(iX|LYH?~umSsp>kmA3!x5w6TLNhK#F;Y{ zNR!ZG*ok>YCt7eg$)rv+Ai!(Ks>N-HY_mX#ZrhwGh&VnHz>i#b z3n~`&yH7A$VGk}N7G{0U_~lDGw+T;?I2##83Kon|zvSQPg3dS9N+OCR8s3!OmMTYwQT*ZWqn9kl)c$Sug>g$Bq7Qrt##X0}rJWn){D4|2LaCk4 z`Su`l*4^SfmJfWXQ=ZvX##ZA&sseRMPETEmHG^Jmh*VJYQswU(2J0-;6HnB-2)>DffmWVC0Q&@iU32 zUDDCr>GJROQ=hhgwSZ2t9>-E+;};Hn<{VU-)<56|Et~Z*27lE!fS)oL8ApILUSnK5 zfWez(?#*nlO9O;!&8u<$9*3~k{e9K79E(f6EPw`mee;J-N1s4PydsIe|3UK&_kLKO z_Wuu#mh<$^+igdpYB_=e>l;=@yq|B?oT*c4+^Kewkt*=?o%%T#4nKRVy#@nRaOa;4 zIS_)n71VxtPORVD@bwUkz?^*~sSSs?vk$_B0e+@>)?8>iKK-42-||kxupk#Hq|f&uDi?%T_L)(_i+tnm%IK zyq!$1uOz1bO^@q)%zH~ReROHAUUp8R9KnF-6na&}yWE(0m@ z_b^CfFfAxlC(`%Vks=VjYjCdC(#_7n?U);DnQ0S|h_-G=w(K&~WKGL{=kZ@H@tVi{ zuOx~YwV1%t;dLnWcOsP5Xcc*U^^4CI@|}IbxTa3JAYo@T%bqCDUmmKHKjoFp{8lQ> zLw<6VZ>l)%l&Dp{p>ivzf9#)~v*}~l=n<$jc_8}!KDtegQ7Y%>ZZV6Cw??+s-8t!qek7Jx0jIEYQC|1Uhn*xV^7R*1i^_&6y%QRkEa(vo+6uz4%_gY)<4 zucmtcKNh9uii5>g z8@$=cQOg=ciyB2Q!%2W~03e8SyX?lCp zU`F*_tHpc??948NPpDg12vVLte@=(g$EVn|S@-Tu`A+3v)kgl|VC}2!c|EWuy}CzT zvdH~TMMC$;#(Z~AFpY@;mp|&lQ(xaKpqxN%6122d7-Eu?LFxOcc}#iGe=vBx%;Rc#sCPb6H(O!%OI zlzo4rj|K43Z^~Y=8X0#0MfxYp(T_*(YSrB!XXETxp-`n|qDj0p&&I{xRkcu&nPM_q=uw7ejz=#iN95SxnpCkQ+hfl{#i&@Bbr>Kqovqvdi8>Uz zZy@H8eG*CX4t$sHtkXU_cT$(3Xqj6JzoPuCIU9zNnA+Yz60XXC^Z(BEQq_r(swh^8~4gKnFSyXo-v51ttRGG*y=eoQpKIh#H! zP&|?oRjQVAjIr3nnU<2IpW5dxn4>;V_cRRPKc8mD77!F`Om4h?#hts*IAm?Ly-3xj zl8}gbTGNG0<9WR$Q|a+I>a9v|A^4@1@oL`t((BR~Aw$R+w~(5g?qeGJxJ<)FFKVuf zt>aDNa8JhLUEbQKpC3OS%FWF!C@af_P|P$t1L`f8B+|S`Ko;2-r?AGRe4ySi@q89b zyz3C5L%QTq1Wu=z68xGeo)03vy3XhR(qK;^PuIJm%L3&(Uj>OH0%DKG4!8mxszsXy zIii&y*14ah$(y^*;NWUL3vnTOE}`V&Akx)2;2AYG0Z;>vfaskiTwD|intgEPLL-kf!Wj}r9Z>cu#icAI4v`SV z9{ih&-px?4bz&PItzdD`ys?|9TfrY4XF!?GZ+Z#exxFiOmwsbp^}$(!voMB4?376_ z#JZG$b;-Sv0;EU-mU4NH?Z+D?kti4r*Z+=I$0v%fo*1HlOrf;KHWZ}EcG=yFJN_r74W8wjvq}r zof*fKSQCx^FN9 z%y0=}%|QiYc0ko>bcDl0<3^I#XuVl@5MBK8L_|2(mt^rK7D)0g?kU zj`;CVBdZstm&057iJ|1CCwDY%31aNo2BT9e&Lh%^^cB7g%tJ`Gzd-v9ETp9}HPIRhG>NV_Bsr>QLZA*=;k(&xu zM6s6ovNB)YJ-~L8Kmr}B{r^e0=dv&dB;JOaM1U*rkIm0b9uHMjM7?VoYmRKaydr|Z zG@{l(GCBV@!=)iVlnkixxWSSD`QiZ-U!OGoFh0aLX})|DomLWq20w@@ zM8noh71;etc)?qg*F#{)ilCD|w*7deJ^u&3g|xipj<1;aFBjx)wDhYGXj*XdZz+ABMjYDfn z4O6=D8ue4MU?$>+TY_SVohPmb6?*vB_0TTzbIkc_=j-COBWhzmwIV{9=yTYI#pg;Q zhQ#wqw=oCINAW6CRF%>^AXQ_1)U11r){`v>r6MYKj)#gJ`#1A5(wcwS^`|ul+<_VB zFN?d@UsDFx?25{x#T&Sih$(jE8_dG3j~@=AoEnzy8W*MIBsH6&LJ2 ztZLL^&SFWDLDaoh?6g#4EmTU1kPZH)V;uVAf4=SCINYx49(0>=4F9QdqQ1|xpze|P z@8SH0{(C9)f3P2nss&6zK2+YhR?FzI#0Q#LUys_CO1-*I!U6Y~D!1QfJ27PW$f0sE z!(g%c2DLOa-j3VRJX0@SRPEd0v;SqmTr($;6Y|Y!`;Xs4iO1vu6j|Lshh+UQ+00lw-lOwsF7j;JAMDd z!+X*z4ki%hz+_TeSh-o#n`jiHNUqMvT2-=nZh_WmA|S3k?b9cjaxrAdQs(LJ97XjR zTUF4?9MnuwXY3gLI^1Y?tf>k(8&q2JmSGO3eO$M!L>WyBf-K7Pr6v!b9)yhoj1bfi zXyLHe*hXhX>*ZP6b9ny%Il;cwH_Hfo@Gtp3lW}1JmEF`}cDITR;hMu<`qeFjQig!ajWHoI6RAuaR<$sN*RVay%fD zU3~lkBU$^gHxVb1rhbq2cxT6>tlMr3G=_ zLNBFHS=NsiBpO#FJ8gqpIzB#LufM9oDez=0jA68K0Y?W~mjFZ2QP?ZM-ogJmJ%WY; z1*&+Dwr6JUIyhl-Zv+holw(4HLvAql6vArFaev3dn}qr1upE30>JqhyRbB`3dks!Rc>N?|bMzZ+!`Y1k2{UoE$Fm^Rsf8q7%7`xw$z3$k12le*R998i)#H z#||bRH9=ZhT0(7EuIRG6M-H%SD8QW)@%}hd2hcb!7qqf=Juvzz)(Y;3?A+YG7)H`i zNI(M4=qg_igwyTN(o%%%hW7-n)Gs@=;LSPy^U*=fs4N!w` z)H4cn0lS7HKSoA$XPzK7u=&Y(6;KlZvxY$`Pr($e8BpoRk!+RmzBJ?fzu5E-s$^w4=m|c46*mym(1zvE}2Hkl! zX#6CIjo#~T+r-5zSu`A4e*)#CdfWCLR^GZc{~*Jo*yXkep*aL%rYmroA!MmGq}Vho zP|nsR47yyoc=6(=%>+C|W6DKyT?}`UFx)%P29QJ^JLLZ1&05S%3>BR0W>%i=->_Wa zB>nN@$C13d3CIx(E+R!0uuwe+5AyQzhrr6Rt&d+o*0&_(LW}1NAXJmt)ywMY=LpQr zLVgihk3g|DEOsS)3a-a!+UcNeE&w_O>~^RxHNz73L@x}0z_#*23bI8@&QZ$e$jaO- z>&nGsdP2C+m>F`7|M+o&W!Xj+oMH0%2ztE~73GKZljf2^2EvR=DhGD3Z);SoeACFr z?8CCH-OQ^0`JvBGY=WNpv-(}Na14&qoE+kg`|kgM`9)O)ohm?IB3^==ksm%62ip^l z>pqB1OBKo@MX*qRF4dfEvj_#UG~uSMP&}~T+vMgwbEM-D-F`?& zgX`=1dJg!kfQ><>$AGx%_E_twVq z#{SpEivo~_ifLr2erH6Y7&>B@X(V$z=Xu=DHI6j5K~3in|F1Rt2{UK4}ta| z&d=oHwSbW^bpm@~5E`U-uwSsJffI~eQARwCLBZXR*P0Y)51k*^yv@qxH9WN&x{akgcTmiR!=g>ScxDm{L7z&XoEt47#CkX zags^}A_7TB#_ihyHZ);y;Kri>ScFK$eR?3DaPK^)2R4yxjU6yF0R02u0I_v%lJ*P3 zQ|>t=VsHY-_WWaf92X|Y+UE2g61ITHB6mCj%`M0%_>aJ#`;a_}JC_7H4^>HI9C~?4 zkUTDw$ydu-H>Rmn&FURIm|}Sbc0cIJj~*4nuaRR>jxkUF*^Ns8h>uzbOAnr1Ndc5t zE|qfn3%CY?5tHx9o}Ik8Urqx~dCHTYIo*dV*94W6<1OFMZsHXfMCYQ0X^Fhn?a-p9 zf|Q?LFYazjU%zJ6s+Z>**q(J9dTG>~c73%)eV!Z>1z9?DkfkvSw7Z@F`vDGA{3Lg_ zu1>qm$zJZf8 zyi?`*aBg_gomC0K&2^wi0Exlc=8MHA9z>A|Jok8d?~Ubsgru@Q&1l1qN%tIw)&ous z2RK_b`cFeD=7)CxCaY%m7CdA4%RYDlL0tC%##h<;!N{#$QC|M(`}am!Pa;mPYkYZG zm_%`wnM)T=RX%%0gNMPj=k^(*0wjwVxUnyO&9?vQ#I)x*EOw-@y+-Egj{6Vbvad<^ z+zi+SzXh74cw|Q7NFu5X+$cF;_G1f7Zhl|uk5a0t`Op9s3bfpQejgB1xcW&*E^N7s zvznTrX5;Q*S+wZwgakWx)6>%zYkR0ywX(i`e|?yJuG<6nY(#wpu1Z%wu3onH2_|9_g_EBuU#(%d z{jDhD@$=G)i}V*KG+H>`EGsX!9G7?~?eT7uxz_k??mdm$ET*S7G%y~<*3^M@2It+b zLGF#q%JH+v3 z-KB(QILP@?QIW)4h8CxydK9jm(>l<-P@e#s5|!;6F`vBd+*2c_9E<%9*caiafG`s` zvZcxeT%FPHAC^I-sezJ2d8${KjL1M8=WEhC|74wcq`{b2_+Veb`XvK$hwlKN+E&G(2a+q6hC&0l=U`+2DhOk?en-T5Rjrd zJIJ;x>VYR}xdre%5j_w}Qy44(UoOJ2gg@=AX>A>y3qZP{+3CcAOkkGB{ZPDW3uIXk zEoh$={WYO{c6gi9%JDeI_7p(TaYUgyT)keQainrh3<;?sj}Q^wBJ}9c;KvfEBSSP) zbvSUPdK;2Cp(XP+9Qz1q~tB z+K-yjYw&p0qn0B{fxx#5T!(~+;g!nV1ljDbb}KULP94XF@Xe!o&eKw z=*vyV=y!*JZCCMt>iY5`|M*b7CeM>q7OOxzVLs&OMvO|~sDo*6P^|||&+nnws(k$X;vL%`YYa|+&64T%^Z2XVic3H< ze1@cQ4%`k1szu5uzn8n%9Py7snMP(>KSoEl;c4dXA(^N^@b+hzDWQ1jHBnyA#hm5X zu1pM;u$q^mumL+T2ueF511E|1*slmX61uxCK&WI4e&U1_D7(Q(lqnt65N1-mIQ~vJ zrbYzCdRjf}8eh8!94}@Csr}lhcAwy*-=P!&^cJC8uJDo_Ko0Hw{hA z4UUf|4=0+vy`rbDD8ur6`4-npG*7pjpELRP?Mql^)!n3|fU{7b+(5-oVE?Qh7Z#)C zr2;F1DjpaY?N+{~lrMY@?s{Xho)Q@Jq#&4@7pZ@tK1bgj54<68%mPvuQaa#IrnYdW zCZaGFH@=F|1$%T|x^#TY5O@p{7u3hcS6FO8Npj%xv1G@KYWV)kIMsk87i1nMHv|dn zeqP7NM{kiKmE#jknV;?4rp|UQMKg=8U+&P#qn)~cho1C&JMQBf5O{fg+!3RaXxg|w zhSgfXRUiM^qX(OQX2QMu?Co1lC`ie;5KU@oOX5j{kv?%();3|0$6=F^&tB~eNz_uT$kqnDaXX*^RK5prW;X|XI1 zSxTPKkZ635-r;?$*rH}_VxF-LdPSX zhifQ|i6eObdHZ|F@UtKh04z3ID=@K<&HP4z?h-;pGc%=7AtqpEgDU9i{wA#2z30?~GnPOKTvJIJzzooC@*h@KB)5AHlPM1tbt z%;-Q!g^MTC4`!D_pw_p0{9Hll0LkG67Afho!`8%(4#VWyJaBe^l&NP?wVdRg|RB z1!a$^4ve^h_}gB-+=0ni=+8Mg1mHxKV$!p}$i)F2t`LrLEmG*9R9ky*r}_TR9fvyR zl)Un-v%U)iB&M+-Oxy7Ba!TFZKs$?dJi5w;_OUdiu_8)!;vqs>Ug$VvCbj^_LFxEz zvhbhXnCxLqmQMV&>mLf|@vHsgjf(9~Hf}RbtRGIPKNQP$6yH%7K7Ap2 zsgvLZzA_u3u0uj$bb-QC@%0Op<*sjAQ=YU_BUD6W*DdL;D^6|}B9#GJ6sN5;a_o8+ zju~Dp;jryh9%R!+JY8LX>#V1;d(OVwZr^U{=BMmycS~VLN2iWTl+uCu-F3w?>quzj zH}KD5>!<0wpe})Yc^OE+D=`hT*IN$@8WiuOdBy%Ib?lvF@z0NLnc3N;SU-`gY--<} zNdt!&%F{cC;li?}dC{Pv^1vOYJvU?$KQ2)}-kQgXyV$VcgdpV*%4ZVo2I?HL3g{?1 z_U+3!!;jXJa_4cr9mqum=f+a%w#sH`6mbe3GK7ug|?|ap0YG99t9WRiAUq z(Dn7W5j}VqGMzntyJt9HpZ&V$F$Dr--d0 zDHFVppFS;zY9iHO$@4}U6rD_;aWzR@MngddPdHs^>FIF?QYY!1vGC!1>xmD2uH^Kt zK}#H`Evl`ntLxYb678qq?rMUlkj)*{gC)?3>+l+W@#Leg0Wy;#ciCKF#kur-@2@w6ztbklq_iGQ#Wr=svOs4i8=dh&{$1p}V|eRda@*dF$fb zgQ2j-Bz=@fN>i*glK`pj!!d_BNNr;a~EK5@k!;^Bpcei{{DXCJ9a{| zI8Rg!b$kL?15wh8>_ItN2HX{iC)MjKPP!1QiUOzyka<5BKB(>%Rfq88FJHdk`D5s^ zec6Smx@#j#aG4`gMPHztMrp^JaziV)rI@ zr{4E<+8x^UB2Z`R&gbx;xUfCA^kz=&gB{1hDzId@&yF>*_MPtCmb9AOQt*}9{VpHd z;Dj%ZSTIs~Rt#z$0iNK=qX)j%h<^XIV8N6Yi_qoXrfwcDS^9eZxgVq7GyRy@7>~*l z(EgRIiFv$3aGVF<6$vipiK(gK?9S)@&ueP_LII#)ULF78$@dWUpO1iPo|98+nU36* zIODkyE-FjR-8qQtoXDXP)*Wm2F0aopSGfwME5cJV6jExN5VT?me1a?(uoEOa_ZhJ9 zu1i^5h<%M#_i|KJdG)Q^x5vI;Sj57DODcsx!;4_AFwGc-*9Ld&VU$@4!2q+_vXTa?SNNY~7AW_f5}8t?G&D;*)5ymBpC{?tZDd``na? zd*kLa2VJaVPB}O(iYbskXlSUq?%J7!_*`0~NvReq@3SoHpnWY)S1YYGJl=RLzxC*m zg0;-f;K>H=FwP~Kixvg*jO{FXm8iV=ln|T*C}2Txad9zyE{AX56$l(GQF6`*AaB=O zEsjEIZfPM_A25*7Fg0DlZ}05vjIFr&eIqkNI3!zmZ96-?eftD*6<$!+241^hgGP@E8hC9**gp;yG$ z=@$cCbM~ah zb*+lrwco(tNZpzbUC%<5Oci<}b|o%02`K0SoThDH;E!4ylcxlT)$zDipqq^ig(d}$ zEOw~sYP?tUoc>i+ySBLgP^~)?qwGOk+t$a?dPPQZW1#_#7gBLhFH~y#s{j` zhdPu5C+0~mjZY(u9lb)X5y`GjVm@tI9x@)zXy843Iwi34`P_|w$*LnP;g?>xPrCu`= zR5^!mYv9&YDnjcj4R8t58CFG?eyLv0BN;Bn{QUgn3jij!gT`Wp1QtN-UFcQFkOBK$ zmQ6Jek+;Cs8JaR7+!}-j1C3!UkO|EDe0Ga;Ib;mVJ2`cYtDNXi#i}_{9e8VI{rSm7 z=m{>OIR3Qn{1j(eS{kXWf6e`TQhXkr0Tf5iP~Qte8`aSf+mo8rWsTkT#M1if10tbH zD*$3CU~WU7RextK{hgJI2JY%C!wu_wYnen|Ufu;8-Mt^7$Z2kE{ZE4zgLh zZ#{$VrTu<>e*VV{Rf>Cdio{@m^4FGT9%Uz|&sTmv=!kf*w%q-VX>?w0u0!@deSLjc z3YC7#c=DH)mR5rD*S+JLH*el5$#a@q!D=i`cdddlf5nAsT3&aV(MZ@+&|Fq znOrm%I3=h?UBCYF=X9HM?bor}Xo*mPFN*TbF+#!^rWNc+%`&hzjTz92lJt&=;m@;w ze*vgP0xC0{b63F7WY2~Ndhw6aMa@NL)`Rg(Y6vnK0lEbTs18ncE0?7$8RNg&&-ScX zzWLM+0e&bW(V+Q5EPAM|z)3)e4CGMh7uR5h5DG;fG@93*yv;;OqEn;vL&wd1nZ!Za zRXr^?#hYejWb|wHcrTmQITkcf{@I~BB6&D!G%#2=KjT4%uGQ!NtFkW-r+R(YUu=nD z@0Lo&gp%4wgeXL;GHdHAAw#CbO3IWenW8L`qR7;W&=w-fP)ShS= z>-Rfn|8dTBuG7_Z?JL__>+@Nk_kG^yx$pbApGbE%5|H1|D3vs^{C3TLlruMPy2$*Z z{GI3d-GR<)1I+^W<&c19WoIvY5O`mE5a07U*m>dO$pGzM|4*{$cys_xO}@CPWjR*D z$8tGd*(SYTxJQ@jaE*GpV(Qbk_$DTjw?(TlOCbzUNawZxAA2xU!x9!6RHr@AGN5l?5Y85PKS}_W%j4>qAf_F8+Rl!&zP=t51?5^9Hk%X00%?CS9 zsPp<3y$+t!+LNpP(a>AST0}MV*V24nenj(k<|Z7yYPErP?zWYs<^;s5J7{?Ne5@_m z5U3F0V-j8)CuaLKNqp>E`&7HlveqnBC2dB2YfkR%U^P70U0I>nIy#4oGQM+$RQn4Z zJD9swNjtkeZ3XqAOzV+!FK3N=LgHqDf8Aj}jzn#$7x&NEH!7skm%L$M^}{jmS{v8hm!1mFR%U@Mv63oMZ#o^6v=1el=Th_b^a@zIeR$Nln9_CH zVfcumX2W=H)<9>=33JKURl%2wg)&`ol$zGIHCrla=Z~5l*lv97P){i>hk00^VG5ET z=O9ZczVx;_Te&mC)NO{tD@G_Y_WjCR)DatRp}%Rvg7kfoUZcsX3W{PA3LYM-gC|pZ zdro{7oQQ7Y@@5~oMa|32)dKqqsX9k@`HRnb0l3)kQThgzh{RY2gBN0&!7<<|SS;39 zz0|daF0XLg!oO)bPJtthO4=HyC$)_Ae&3?0HZAS^qv>dyP^RZV$c-B=L-UQPLNYdU zpV@9TOyw4fZN%+F%kP)OVQ=r`6oG0{OCtVC<=Qs~@xbR=FIOac(DnAjNcys&Ns#(^ zbaZO%y-uo|(7okrlMH=sbR{(IznOU`Ayd{vwtGj5XG^isYh@+va{B$g-97Zrf*0ND z_RU&*aCaM3_1@8Wro+<)NCaA8Qlc+xxDgo~baJEKo{K38CwJ*cLs`n=>}wn`3z}%Z zvu{T%qsPN-*3rQs4CdM64i%D3X@x?WiR1Ww)OYXBUlhr-4G1hXVQ}iW)An|6Y?Q;T zRLf`4qO1zu{~l6RrH-qON1I1p-sT4ds0|;Zj0RG@X8mfga)1i7;id3)UHSd{)g&7Y zY6Ze~^sZ%L`)0J&W9=jIFYA3S6~7lAIcJc;S6kk)mOG2-7;v)$u>QDy^|B?nlYJHz zTv>l{zjd9Mo}ca;V5s!&0^po9#(iXV;D-4v&mR*`bK`NR!!7f_tk6K_Qr+IpkN<>j ztnhvBFZ6RSCI?*edidHvKRwNgK6|@J`^dJc^1)8UpKFEV^#RG(R~5cQx^G)waQik5 z^RP*y1jTg z^ae+Bc~njD6KQx-J$2QpaJb@ddtpE{b?w^Uaa)~l-q<%^*G0Z7`_ZO?zzOKjf^X+z zr0C+};{FT5{iqTBzT6*zZL&Pl$T=9C^1G{SxP6El=+`flYPVbx6P-PsRRO+XqZT3& zIPJntiv^BpRgJ=3nH$_5=mBU+(2!veI%;%Z*~(~vM=G@!FP0&ddICysgkDq2 zynqX+DiYx1Yq6{F5srH@+yW2#^xoiEdKXY%whW9>R8K|e&Opf_EiQfr2!bm(99V62 z`p@>DtKv;pR}09iO_Gvf&M&WM;eE3aF>JtBhjae1)(}it2GE3w@o_R|_io8~dMu5Z zi7&L(sjW=5%jv9S~i&Mp*bPR`CP0JZfb;$MMvJtb<^ z-*p+H3CyLQZMmxGBCVp5q%r@^OhHkR2~m;&y{13M#KtD=tp~U^RJqa{H`X0V0Z9MT z3@2c^1>H@1fm=Gdxa`5Op-N-3+q|h)!GoKjaUKx;zr3bK{#71?cJS?<+ACHb>hyc< zQXRTv6(663Kmyd_Q>Cs=wyatXx0sOpLEBy2h=MPE;EYiAOTDGq>p z2Cy~9JmSnNfGZ{v5-(o9Tu<>rG_x7P5B`YOk?@BB>~jD1@3@+klyaDNZ!x>o29LNc z_~PT5eL%@(A>rV51Qh)Zq&r`{tLNxZ0J?{OP7`K7NpIU$vX9<%a_60_qGOFH zPfV?>&I2d5`Hq~L&^6!{IlGB{rKYCst6GFzTu5LFj4;R|Mv7l)j6@J+Dg;xV`n@H* zD8VU|tA@3tbd`~jxp3){W62?yDXep*z}Dbp-OEe&e3S^cMi3{UE$bu**-5$wfmkz2 z?LGfahk%ms%h(|_Z$uin_ew;?|AIornAz6CYKnjYkVg`oLugnSu~G(e0Gpu7ULW_J zLLXpB1RygU2|wwULq5+eA5~v_P~vq1=)1E}k-%(X*B9^&b8~@A`gTzV`o!cU-bK0- zMN=$5RDsd5;zy~01RB@Vq7-g z9IDaT8ih~lhcRUJV11G&^lRUhJJx*|rBj%L{UNY+toF9U8|h5 zG-R8_&C1te;Rcb>09~D5D$+5nit=(bh;@WV%b16yZ=bj?f@lj~HViK;u&IK#&^n7{ zub)CZ^7Z$nquW#XIvQg#w;LyK<0cFfyd)_USQBcahZQB?^|F6Is_s8Bx6=fYN*^EP z-$m8-dx!yVkXKZ6laFOoDSJtI4Rm75T}eqHA(dVI^yx+aq{=sb?yLY9cxn*4W{~My zU0c>yjbbUiX#yUK2Mfg)OY^>UuU!fjGKRJRmIZAx+&X zV-oTSGe}Jqk>g!`+0ft$)(+^ZZc$MYr$;ee`u3sdM~`+1VPs&c>d8ogOu?8#4Bb~V z?-NY?MEUo$VzEd9#K5tUR6UAQ;Rc@HWcnX#ckboq=f}$01Eh}}H$FZ-m(tUlK3zFM zAJ!L9_a~v8w77eHYM1SL5VQlow(sy^iGrG1hk1Z#uU=gKbJKWy1MFtPvu*$ucJeOVQtWy z3xl>B$}&mRSa%8wGvMR04}D!3Mksq4QdHsq+`sAUd<9`{E+hd;J#|yXcy7yW_*nX1+XKhb@SO_~4B#Bpo##PYEaB$eS0@xFA#wdf!=|nO zFGVx9VEiwMmN=4NWL-V{iCn*4G+g?RjCg}KNs{g4%VlMdyOk4pB8U%<$$5X^bj&!7 zqm%Q>XVKnSrDEYLWjSI|00A&`Hd7-pVw!6~+xatR8em|D=4F7RDfXga%|7Jahu;!C z4+Lh|{0etr1xGG4 zM0uRBMcN51sBPnWGBh6X7gWH3n*eK_9l@Tc}{*Xf>$^n z_Rk(Hoq~bSpCM#B?^AMzj%$0AC~KA6b`~`klj*ShprZiNPk7Y5L%?EnJY0x?3wPzW z76aK9UtCU;=AsC^B=V=7uGb>LLL=qc;2(o)u0gs(#7W?amZ(8;_5?IPpz98q9fC2X zA$TIRrP&a=LIdN6gKVq)V-7SR+GBK|MU}r2vcc+4ALWv+X`WuYJCf&&p;QgOtVlF*!grq~MsX-F zFcx^_9M5CGd2AH)veuD_l}Yu@#V#h8ZK;*JU%7J#i7&A@T*c2X)P^*s8hjFaKtOl*B`XeonCyqOW)zDY= zz37;}41!P;D2U~bV08TkFCWM-m44gb9}4JS$lcA=_4%wa6fF>94}eo-PhDf<$A+X6 zBTKETeB=d0*~qpK6^PJgL&1S(&dkoPy`hY2xS|oHMvh@*E&YVHCLYbEzMy7_AQt($ zJ#rh(h4HvKWt0#Ys44+O9!rQMEjWjaZ2AwvB#wyWk&s}8h-0=O)`G5+(+1>N_8uN_ zP@oNW!e^P%9uoD=H@ zfr3PLkC2Y|8glcw9Xbav@F5I-UGH9H?%u1fukhSF7AHTN2zWqV<7gfjY;SLe=jCo^ zXDJf-kku^}3ucLj+^qM7QiYR~N8nMNoQ#ZN!Po33cQAYrp;}<;;qYA#(4R@VyWwK- z2)g|^;FBX8wnxsW!S4@g2*(My`NNGBGq{VYS@Hs-#>KYXFYM$kFC#o81MNVNY{uht z1x0izK3@D4+b$#(k`mW(lxxNQzbYzF**HuS{oL}s_kU;f&qx*t8BqLQ0 zenA;O&zq{s%3*kLY|DEHAD?BsysMuPQU0B>vW;1PZR#wukZBLtt+WR=pB{^l`Wf&= zheHQ%q@#mk4L8FkOI_V&cSV|2O^ydpWLE3gvJ zojb?(3{;~YXc0y$euayIM%nnRtPO1IC?)Q16vAdiP#v=IifLS16cH9Sz-P3#wraE+ zMLStq3bAD%HjUpocWxPM@d9I_KtZ0{E0@%|IM=i|b_a*;#l7p<`>^-+fQ#^-y^3sA zS4ZddC&jR4s+}SU0g(BtlDhx+#Cts=oxt-V^DZ9lzixn}3nE7jQWek`LQbZ>XttPJ z#Fn6h*!ujn`7*I5ghigci_20hYCxH^HS;4EFJF$pAyf0>#knN)#kon6DP^fTV65nX z%EKSL#08?z158dek1n3dyP=`85NU?Z=UWu9pPp$=hn-f}e$u0WQK_w7SwwMSthz zu~Vv9gzp6L@gyG!HhNH6-Naz12gcpe(QzI0G!Pg=19ZoRT460$hZ;v{@Q<+OwLhaa z2MTh+G+2}!6NT6y4yOqQ87WuT9^>ZnvkYLT;JO~QX60ksy(>69|0kYid|Fy8sATP| zzmx(VHaNk#b-UN_ik6m^b3a@1IOXh)}_bmu;h897PA4ehs zhN9z0I#k%WxUuQ!I@og()f@zoSNhVxnxHYmFjZ}JU*IG!-ntN0CCbtHklKgbyu06s zKyBo8*y#{e#X%Cu4#)4ukaBSNBQRm|`GMk5CwWU@5|~miEX>ae%XUspPS)Udf-nEoMRvd7EA6tS)HFNhL zy_in{2NVW*$+(irP*XZo;A;rcPL-rR!tj#g%hl|*`;>3nkO(nf1cSkgmo8C2Q66Ol zmrA`j!M7u6_pVCCVpS0TO5Rcz`L3V0DS8D}rQx;h)J0aE=JC-kB^1a6vLTc*$#zSB z)QBxmkbGm>G0_b}v_9aWI^-N=2y$o*7S5oH*1cfiFlaG|WDbWgCQl0>v&RhGvp6A< z&K-w9gH*<#BA=p;gkLv6->;_WM3L+}Hui2eq`yj=jd^GluX=U$c{ppf15Se( z`)*ioNLpE0-6<(qj|M(VI47x}nh5U*GiQ^f?!ygX4sjGTyCjqm>w5NGn)BaQQq})V zl-soFUH5U_66<$v2&zU`87lRGRB&{SXy} zhd@IPu$Gn@G~0*VKgJy6%^k|K;UXlCfe28A#Ft(=?;$gC3(-;pOZL;W}v>uYDX&UTJB1ZUVLdHD-up$spQK!Q%44!7UJn)j`s zQtujY*4oK;#lV2b4sM^MsJ2EUz)68o9;!I_Ih^u!m8T{xOFS;?FG0T;kyiUH{1~z- z@!(`C$$NPG24uRv7#eV74NI}&pmTjhvLB42yt6)v?d?atk1pv!kuY&7^Xr2uux1hR zApD^2rD78)AbZSmK_3TS9oLgA|u69fJxPqFz2 z{D<2?M9o3b+Q`A_t(_s7^jilT3u^}pQ@w}p4DIYqt*xFjaWb(mJT!4|u(9W1X14sl z-@s&TXUzN)3o`&Na?|Fux;+{i?px&RN}fQjDH>X7tGKYBl5^5dvXe8uGEu<%RKzPu zlk}T6uitxoNJr^|FNiOq)Fyh%GwuDIAR0R9AbeWAtk-#T53vG+6z~OU6@&tYuD-r? z=hgei2EFcHZQ2#xPp4Qb7*Pkmzw{0C?alEzt){5etKO0{msrR7V`hT>0LT84m$Fwm%|S5K|b0v{z8KA`Obvjnw|!qH$*{;a>(Zk zav5jxw{PDbZjJXcPV0Auirl#_zIWRB!0RFARj>2?fUFZ`IUD5rZAipI$rsy+bRV;^ zMZJHIMyFgLe0KaR{<(2zedN=dy6*evk}(XnPOJ#iihTnXQmM zZl;|wP^RC>YBj?}eyToJqMgWU*t4>wP8=f2`uzDm3MG_nXQ^52xIHn`;1ZcB7FMUE zY8FI5-x18*v|;OC`z6B`-WS#lJZhQ8G&F&YZYTH1$u0J^6%-=cFaQ1frya+7Dxa@( z{rdG9UJ@*UA3l6gI~Q0d?~HgNdFQ%!^Tpp_r#Y8^a>HJ@ zj#RVfzplQ%$4{R4QM_=KD>o3Ah+*ii-)k}-*6%V8eZ<0YSMUy&MLUyDLmY?Y^qqV6 ze43jDs?5gqc4um9N8ERQuza=r>HiQD)92;(L@{byx6ze7gp{4~*|X2^n7{vSm)f5m z7zW$B9&L$~>9yCmpR#J#Ii#zV=|wSW#w@l5=szPqkghH!=Xa0OX>^q@)?mMS^(u{S z6Q9T5!^MeW%{BY4RjN^2e9A*G6-sGvEE1KHL}w8{-` z!nEaxM?RHG;fvp%EPd{FZ1HaA$M^5PHyE*tzQ0Km3cz7ApZK&nnpFiuHda7b`RbKEry2W&*xKiPGhDI@ABBwP|)7ftQQb!0`dtYCl*1EsHf6xoJ zW424L{iSxwhwnCq1ldSK)|UGdIf>8(@0^|NS@Y*iZnp` zSG6A=I-pzx{vAeQ2Eq>Ec(6THk&79)+!Z?hljN*LQ3gva${o&E>d|)@9usJ)nJl>gVJ=<#@oUM0q*>5M} z_B?m?o>a|OXkWU7s*9#nqQyPA|Fha!GG_Na@4KNAZC;eK$5go?3A-8odm;bj7Qb6) z!lI&Ue@l$|6V~>mp&rS7wNMY%e-COHBM4elB05itbH(a{{|L zR9C#Fi@)ZmveM>@1ThMi4_o7fL~+#t4?N>w>DgUgc!-Y_FYrfk?%l)P*~IZe)#pZiaqgvxh2tC#h$^H**Q?S7W4c$N1de>Q)HItY>i$IXJWs2Z z)zj0{;>QNTFp34-*XkrE2a@TVu4SlahtwUq8=}e_DSc;|v|n6iW*GsxH^gfK`)9D!&0i9g4r$-EvwwXMkSQv#NR27G&?+{^ndgp4!p+1pno z%kYn@Rg*f)`<)Mrx5n}}9C(loo+F*e<#pkna4<*_IuXEdyyenxj7J8;9c{HB3eRv6{$lM3J=~M6Amfc>juw% zb?vn-wadG+^^;3{kw4d9>CSqo~YBV|1 zFypOStnq}yWauSQLM5Z=o-`d#n=c7mo-4l5IgrR@*Qhdka#iILaDWQFi2ONBWgC3y zVB_Er`ug~^#p<|N(2Ck3Sgp#?6t%nd}b<;jX%c>T#9J!%sgfT#$&Od5dy%ZA^g~y*dQFg^hF)zfdOkTKOxr z8Y~e-{!f=377F9V+pN+we5;zoY{@P}**Q51wRVOmw`T(Qt>L#ve=B{w_hg5ITqFpe zMR%L76Gn1ypNn2CGU>@x zZE|-(1B_{+%*n+Scd**a8~wE1#+k*>uzc_*yNLV>Y~s9eGdk6hr1d2_eODf|f^RRo zD=ohp^kHcnW}CP+<(S@m@Y(!P1x*lavv{YbBDr**Rvv^Qd?talp`k$vcz~^5LZkIO z;wGkz@(6>Y#~(ipH8v4>wmtm^ckX;HRK5GhI`c6t?Z?lb?*s%CrwrQ6r@JI25xk`UVXbC)V$If~LtD}|v5;E@W^5e1B^OZ?mA)V= zvCFrjaQOvY5U{dseooXmEL1?)N=o<`zTaOxhj#>BHE!_sty}sNMd~=__W_F-r+UP| z$N@cL-nzBC8mqeoki=!}Idea-4+SXAs7tq_Ekll%QGO7Ii%V7dCFJGb|+yY8z?XLYw*WKwVbFtwJ5nAm!w#&2mOQ`WFr*4_U zU4QnMT{hAKexID=0)jgSma(>nhlh9fx;IqP;R0oPcng2vZ&6YwX@b7Q&yBEQ`QZqR z*4nS%qo4>)O??0*g+aGz=6n{$R|Amj77pN;#=WBcYxhh z|Ivi1^|0{b(|z6;=mvN0-1*juE6~>!PL({-hx^}JHNxx+VBec>9)$kP?RC+>ef`Au z1}>NV8g{O1>eGMoBHn15bq+?m3EgS8edB7)pKjJ2HdvVx9j`cUj%4FAYD6Jr2_Pja zV6O_>XQUwxzorSG!(CjQSp%St-9~>0Scu1A|^ zP60W_^Ly|F;6BI!FpHqnBmfgjI(v;L6fl;xwvTuY8$*u<*>Fi%uQ%!pCUM)7yXHWd zH3WQvO~&yFdc;Vnu7K;wZa*OQD+mvRS_C|Jt*)7VYZ!p^U|;<6c-Y7{Z{Bo28dn`F zP?l7YMxMWE?%s)^v?68%5Y@PV=jZ3=m^W{-SpSVoNa%qTSmV4;=`^}Gq9=dL-$%TuNu&8RqdsD@u{^;riWepTMwSX}9jWYGNj2^i%5 zpXIRUrX!Dox0_Gb$XHof)xKJgIBt!lODA%;16qa|O#*gx?U~142hmV+@sr)zkDopn z0A>MXCot*$?eim{jp-_SSS0;U1PqNo{52hnEp8T zB>?Ip?-MPI?*KDXG-PR9RX1BIo|W%tOi?P4BLwaxsS@V-cas|Uy3zim(pMs8oh%?} zmFAP7uu6vVX0p2hwaAnqfZ%kljQ^C+3Ys{K3e;gxbBd!(``OWUXQ1eC-A{jo}tr_3uJlP-}My z2-+K5PZ^LWr?9@E}HQy|N#@u*#Z*y}~sZb?^bKX5N)$?!nj9c_A z!z*b%KEcQ~6Bid>`+Nrt8f!KHZIddEPo}0XV;xiCRqcx>y7_tX1cBGdit> z=7Q6k+i4^uW${)<2Qe-AfXVXqsA z%fe=I+02f0hOam_(|fl`*%kmYR{fsqk%7JlqmU_CrlqC5j*hNQPOni(0|cVlHMJ+2 z-W~w?R{&*z^oaT0xl%ojNxc3Ysd^7%k&A5F!V2g5upFEKZ*mDLt5%&uw*?!#bkSms zD$Lur*_%Jvmn=g?q6WO%)%Ci?r{!5-OnU9@3~#e1h1|*f`3HZ0x8mAwjy!?sH{<{6 zcCxFrj*!U8O16qMC_{4jN}TEu(0rt=#FpSUIIeygYM7~ zCUDU;*XYJ=w-Ts*@&)h?G&l(w9Nlr4(WkKU*8tG3g6fn8>dc?hQv{pHmm73zF-JAL z3dLvENn()=Ta2Y|wmDprAM+vgHAxfQCv_Fs@1CqmLGV~r~nSE#+M(s*vgTTeRN$*3-B&tz@)<{I_f-5Z>j zJ8ln~u<=Cc_w(!4(f2@4lir8dMYu`A`>se0Ru_=PprfsE zJg?JLBGd_R0-`JX3*UWD*UUlRgXeAX_(_>6%YT}M83+`CBbAJl)J((6bl(Y7v<#Y{ zCE%EkR0>t3$IPnqgoQuUSWK~^s*DFy2#{N`P*T3a#>U3?_4RFkDxH8_VW7f7+G3_g z-eNez4`Bvn4x1x-aI1E}9_mS>6~?lKroo>+0kgn|N1*30pO9jZ&-kDQs$UrhYD>^K z4vKK0=q&9ocOp7b@bYoP<#qYP;n}hK5254%e*`8d1Y6&tNv3oX1#JG>Z)lY3(~go% zQh0AlMikj@8G%THO~U#il3F$)>^3>q=gWV4USoOkzVF>%)xEltAiB)-V77BxuKMO#J&1~wPxE(I#ZX7Ueyxm?oP zlk0ri5SkO6D~bR7`Q`dRG6)QrQzoDu!~u|cW;xB4i2eD+BQd}&dGeY5ek`oTH$gPg zYSJ8A8#(ehP-c7apIFZIJ(<@DDNaaB25Nq_obUsqdie(gIfy;*P*V8^k83twAOeHy zN0Ec-LjJ-v3UC75q9ne7U_AMW9#(G$TS}hkGh(#{XBMQXK^b`&L){N#1JQCo6sXo6 zO^-7A#RTFdw?s5uJ9Ld2+hq)3IlZyW_VA|osF(ZeDAbyQa*Q*HahN;qYcI6q#Ft1K z&o#L~wGM@XH{5LNb-X*>3rmNQ&!)~{v*mDe^d>H@lNM^;>%PZ0lzvbqXf?kw#4>3w z!3s1mGP2v9;SM5VmVvPsTWM?lhoy7q5d+{Ag~7&ild2+ufRYEV81shbC!Tu_IV&9J z#tnW93ep1%3>~-R+gWW78X>L12k71k3JNt2oA&_r%{02jf>5Z*z@$8xBLa(zoTB3PP$H6usx*zM?j~vaDIx?s6KF zD2P3=%zIJ5ejDOi#{N1Hzy{ZcO~;_q@Tb`~`{k^B2usUr--Fv5^EJ)0Cr2n0ELYOg zlG3630yyu#nkgsl@xJ|eUFE)}-@u=F9A}N_nAl96wN{k}S3jrsE{wC6+8wNQ7uAwx zreMX=r~OP{7FCE5ixbUUJet&9|5ZKz)qKA&Gw$lWx)C)33~9i_pkbhyj29@Eyj3bz z*;bNm{eV!Ut{`+a5bP0@fwFQyRI^6;y>!cx)un&IMx_NWE$2}9r|Am$2in{v7uAk= z{p(3dQB3j)_9p}C!u`rO=_F!lEGH7&Y?#QHEh@Rz^}2(l;@G_Fo99;nm^^v@JQ7yU zT{5y>Kyn}<#jK!566LtnA3V_^W;=3iQ452H>U6jUu1a&%o<9{+SP;6Whl4v?T`>YZ=}?`!~}>`nnX%BW`5b{p-WPw5sqnf zHz0lpm)!~`$f10n3F69hn?2dg#=2(gqOa)|ilt<2Vl{Nwyo}k_KklEt{JYJJa)N$~ zwBRD0#snzmwyQk^b?<&{b&U1MzP*|LFm??VAWQ6m%ckw=b%32w^C`4JG%Uu|5}yz&PIjr=C9n*Qh9-#>eK;UkBjnWHsca1 zy_}ETVD=FC5Md9%46ZCdS*x^~O#sC!JT7iStD|T^@~CT+P1{@bwlYA+!bm_zGmn^< zLam!l{Xv&S`{KN>N8$PBEu!{Ph4Jad${g>e6t8QZF>pR*RQ+n=E{FpBf~d7%!@PNB z&?x6C+SzoKG`~H-aL>rYhPoxhXrq+CTNUaHLU6AOk?Z_49q0x^)g{8$`WK&(DRT zb#O4OM7#dr95uMSx3@QONN_p1yj7BPM)RW!gjBU!yC-BE7SHOVK=@5Sya<@?vz6bH zZ>d4m1StO}@vtP46{cm&`trL^FDg3l z+{Zn{RkJg=xo(}BYt~&L%o+Gpj_mcxUL9(5Gu6)Yh2k=aN>j~7KeJ=RrSZuouZy7DXGcw^eWMAb#va2=QkEbbWa4G@|P z1_x}}#M3jyTp8Q_C6NS9>)j5e9?7@+_sYZokC(%OfKMEcBOOmNPO*x)730a~=#453 z?KCp;8E>x8C-+-vNQX%riAAUYBWZaW@d z8CV-tv9O)2Ql5nM{kGLV98lSOlLrV$K+E=Fr{Dq61u||a)0{g=Wj*154vQGUT>!t3 zjRQRT8ORl5X6&U62UvgrgvG?3J8a0oJ`(|?Nz7()2W-0PpP3Th-KNU)Z-Dq>1nqTA zAAWufihedUGQ#zQ88v%mYO61d})vXFz{fQt+Zwnm1< zR5{=A4}C}`{NyX+wqKJ{q9Xuj;3}9?i0OiECgX-XSBCw6kM9*_$`+Phgk1ad6;(B{|8<+z+G~aI2VsLDrNB z02$PjajGrYW$q!Og0Ky9WL_t`2RLVm;)_fqsYMd>%=X-gPpS*$SA;GIejnHf1^}{v z&w&wmx)jU|pc@1De!NSlIGwZ@Eki=dH*@TOS5{b(n0`qK88qc)<8+9T_&+|nShm7G zICl21W#K_rDv2c1bRQb!s!^td*s5uZ?6H4U(J&X>xxa&rnU zoA*dF0Gx~n2x!xlrb1Br%F4=Ia6-5;NYZYmc`aX@dz@N(O8p71@wLUC=Sw0C*67mX z6PC|X_$a~jfHLwRUIk<##A8J=Ag}yAz@4h;XhD|+byV918k zwL~B&KgctSz~X`Y1%xfWc5#sKTF>)A0d_2&s(Q&xL;HF%`?>w36ow_S@J@;vs{={I zTr)sY;GzNWpLl)Gf6x+yMMPMDR!Fr9qHbwob|8+5sLJ>}X%0OFuX4_BHh2GdO1E%i1NsRBhp4_gMw+F|EMIEV&` zoo$Ki<{c?7+<<|V2|Z#W&rU;k;MUx;8}NQDGN1#wB+;QRo-4R=jjoOWH9DbbIsaJ< z@Gjymgee$lbaM*k(!)v#0o+WiyX^{fD-l^d)mGXSL^8nY)#@B*k@6s&z!oktNt)wM zSUK+(W&g0mHHF(v-c^3^+VVAZ>V=BYCJ#3pa;|TnPSB{c(qsRFq(~s>rGOy7MCs1h zHg6_!%0LL7YTX>jz@VNd{JXe~aqY^LEAEHGVu+Kis^cP}@ItdIW$@fTG%M+v?KrA$ zDtM%zvbi3}jyNtLm`*%MJdJB@kX{TTN))-^K2pO*r=HUbj@34M{@)q}}Jf)W5P#E-}K*XDzBA)UtD zK~_KKv^Qr6goW??cPs1}Yy7NRIfM>UMA9a@oy%X_O(4E4QwVHjOa?2EPO1EL~X zp5VZpbK_jqng%*9SrB;CD^2b~gIpaJdw{+GJDl%i#vTj>Z`iN3+EuGagT zI*MY%v+l~RM#^o+=+iS{`4tGjEdzU6%M9a(bi!?@EMTB>dHiJ)^2aXYo^d%AUthyz z7YkYa63r>{$x%gd_hoQO)T9p$$jP9OEQ4jy@Mk0#Eh{^x%wzYRXakoI57pL+DPIF^ zY6|dO{Kt>@`BM<13Ec6I;60%YfoX;8MUZ0qc-g0YO-Ed2d$;oxW#*)#?Qqb=?=w!2 zXpxuePt-EnSLpg>sLI3Vl+no+j<>pjP@njq7_d)|iI4 zF4565!Pqa-DY#nzj|_b<9r`DG+*=cBqfFY!2S0XAj7dzqdM-kaad6l z0jkRbCDpVuE|9)Z`|{>W28{x=xu;Tb-(WYpEcy{WJ{u0q2yC9#<%m@^7ZRklN_w++ z;TK{0s7Z_2W^Q44Z^whK=$ z{Nng(p2WIL3xi!wq?O_}_Z_eI#wjisi0C_9?_>=Dln&rJkNfrCijou@=xNQ~=65-G zjF4EwVblkg$q-^vd2R#I&j?y8X`LL2K{SuyKI2=&*s@`me-Tb4(O8^%YRvpFDl)4=c3XdY&J8 zp$Pa^@f?;3Q^l%QQR#H(VXYvR0G&Y`sbn6p!ve+2DF6U}Ne5>act`t)!+A4pQp@U8`uP+-5l=l?x-Mod9sXD8Z zC!biAJ)o$wdi!C`7aVUkM-JnZ7T*@QM&Sr0rCwX0=+GSs{7{`zvD{JH&EqFQ1;H7d zTP%9QA~B0HQZmB1qv9%aNazxAn_wUac?UR%z$pl!#Y3%xe~1`2j+nGB&uu{U29OU< zX5CP4PE1-~iOt=aB>XV4jHairpRZgPBgu&sah02h2>M6}gg`>lp}BDb7nb z)!A-k44GV<9gJ|8EU-#{W-bMv>#g=qc}!$z;=vTRrl*hFGYTK(%Z1$4gdUJ zgg^#Gm+SWvAk;VUoEyM#`#tsWBgN{$LcbYQRfk{{%fm47Gm#-JBu<>aus z|FKycOhr8F&9VGQMP@JE`$O_;Tv#kWovd;-X3ZM*JIIVOhaqQ!^MJn(fRG)@ZR5|p za}hq~zuVVAY!CrmqX(Hj5HQfd$6t##PDuxj3K*rOpZ1UsiEeQ5?7stPOUG;3QKQPF z-A`ZLHk;=5IEIpb|6g{*Ah(k?USj0V*t8(FbCNRa$&c4{`H@MlJi{Q%Fb}J)3@phQ zW?dP`R(Kb+mw;^bw(IkwnI;cSJ85gkogV1z{K7CcFi`und36D|@@m4X436;Av-Nde zhXs?#pYhI;$7T{NNlTJK%IMJnFX{&PI(O`;76lg(CRCGCGka=_uX&KKknaq^P|(_f z+mq&@d7nZLwd+3>Pu~ooc@g^RJxvgT@uB{(fD6x%`RM)7>-U1+GT)2N1s2+MYW9RO zuEAi^mOE~% zaOMs{+_W{gESt>ze?uLh^!Aqo0G}|}$VkT=#QJQ>?a#<4CRRT;(56|gsu;A0FH0_A z8|Bjj8n#%fzRYqq(Gj@}&yIrr?(0((NNIp;TLIVJnkc?y@Gl1lQR^+{hBp_|;`y7m zX@rz@q&#OAAU%pSeOLiu!*K-kdBDyQX$~M3z;=O?hMrM9K1<5Xm@j2yw{S z{*`wlq%lF^!=sbz^a8lOj<#4zX18tI^Ht5%fPS@?Yb|Smnd`i^_w>j5tM+WF+hUq4d55+ zwN*$I4-9O${CQSxA-g4^#m%sG+s(VaobTY(?h6s}_7qE(akDBH&fd5@>HUrT8@l z`jE7AtJm6JkLR|^fB&91Fg0(i?tr8V36BF!^Z7yWsoH?aaLGj@4Sgp8R+|9|GMB_0 z7Q{$q`?MY&odpUNgbv=0HrnAld4J?`#R+He2kNThySMR-rwlX>HTVe%j5WQbd|LZb z_Wmz9U6gC>Wbc}vR#wevX2K>xWHNw}AXf^#dUe(9cqbj=2*~yYzNkL(`$@_NR;AVU z8Hlx>%(;bubdwk&3X%f&gm>Ya%ce};uj4$4>l!lt!I!l_r&UH&!|W1hi0f^I^?1`N zEAIpv>k_1SpwhI?DCjo1b0ZxR>Yjmt^T5TC0)qJ4-aJF3*o=$}@Uk&LhJwO2|R$o*r(%dC1Es9O+TDVRlZp1exxQw5r9Jx-jJFP;982}Vg zPP{J99{4=8fm{#tFKO_PPeFY0Fw4+_ZO?jfj*`W|rLee*@fXM?5^;bS!0h7LT6Lnv zyBT(+=(vcuz0W@QC^T;NTN$7LFbFj8sXC~NQ76M~GpIKtDGZLyGzw2%Y#(LK9=yZ3 zjqCs614u{ibFSNraOFM-TZl_Zt-yhpEXZc{C9nrW%%(e9Bo=wz#ijOOL}dp0-{W2c zo6i03W-gFe`FpoD*U)DO*f|)u7zT;*l>WPai;DjCr<}2lZWZm?{m1=DN1kgX@iK$j z;}EKbIJ7Tx>=+Q2>=s+l5jsZ7VbPUn-P8>TND7K|@?cb=oPPmd62uoE&P_~7Mb$5w z3DH$3-2o7fABH4%Y>pWI>O9tHLa@0*>jq!I$V%LeFYKwOmfCcFInQrVCl5!H$xcME zQm8_CLEsMJ2QG+t z-!Xv4dps=>`(VNqw=lFw54D|$vY6#vCRx5+!+KcbqZea} z?SqhIpBNGvh_R4UbV17`2Hg%CJlg~4zxP38&Vu;DntsaI zY%G>JQ%OK14j$2i&d*{2Y98J_EVv87hTGzGDMhsHzti%sI2?3{kL8I!&nat|v3tib z_x=5qYsmEwItFwDp>8tCJS_Sh*zoG^_oqk#iR24JkZrE)g9HvsGY(S7hyYQ=g_9lK zEhg`colfqzPe1ck8H#Y`Wf?SIQ6u^F|GDFbxbeVlP`Vpj>=7>nOgtnGh6Zwf8jKrB zivcDTtJq)#?0Dl1)=xg5W{`TlWgxPCzL6P*4DRCM!b&E6yQ}cz4k3BWI=h0b0=*h# zRc8X{!p`qEf~d!I(LtbtAYlxM1GGUJ8V(~FKo$f^av_l9{{0Y*;;--AsxuF{W&$D5 z0pmxsB)gT@aI4^ln8*nLM6&^^yJpVD*G{A(QFKIM7BKd-?yW=9q&T(gIq{q*JXv~ow28r-g@%5HYDcXAAE1e5e!`2rm$ z)juErj)fp86+Maweus@a;O68&iskXsr*)5Kzh+=7*T$`^AkW?kMT~{G+}{9U!#Og^ z52-r%sLlLtTNoS>N-bvOThETNeXM}W&eg_&T8O7;^L zZk9VI9$xwDBK?2o5-Bc z3ApjasZ|Hm9%sm}LOJ>3cUB^k+v~V@eqcSQmC^4{#ljK}qGUOQ>p{_Z5c~mDUqlML zIBCAzZ@I<%o0=k%Otj+QhXfAweNlQ7mOy_7qIC>)rh#40oB=&{w5PR`7a-OXlKWpd zn;5i-FQMP?^bviDiob13~9*ho2$uv02h3x|LoY;yJbO7oW0Z}Hrr$gx5I zE*0jC-<}WhwL)%40-{;cCuL4#lGall$`aDXU;jENjZ#=7<9&$<>)^cRoV&>j;0oWA zHJnO&cZP?9TET2uV=dH5aHoqrY_m?0QwE-WhI7Wr%!;Peq0jVLKzOU@0Z19~gT;!u zIK#uk5KVabl^Z7!yAwH91}+e!xE;Kgz^<7P&kz~3hEc?67X|3 zwEJH;PFB`Wjy`-eQ#J2lS5HjMY5c+JB4E<`aBVL&43ZwdUyf>uIP)L4%#r<$w*Od- z=Omy=`z5Fl5v*jiXOKdNe^~vE`)a>{PHi-@vB08TBP_GK|0M?d{l}7FR04d9@pK6TkufnH z@F?-TPE4Pxy0{=VyS5GauBlmBDOp)Dd;lA?SHJn)B2ue=$A~L%{^fL4Jq}@9iqUN; z#N2aVn*`~kRX>o#@}^Eueow zT9Lr=zq1o+IHC(M7|s(TR0AN=0vu9_pi0J4v6)<{$=KwZxcdA;7DeM}*6hO^L#)f7 zOUs@-^>#${hQrP~FCLo(G+h?A^xwv zJ1JLx-xQGtUG1?`%;{uu~OBH(#-QH9w6eCx)``^-5vF{{ebB0snNR=ZCR(Y1|V zB$1mwG?=W+E#azY&0?bJjz4B+70NQ+6Pid4nf& z)8yKt`kY3`c6lNj-TMXQy@e8m<8Y#qAXlG>q-;ejm^{)hxCbipz*p=2nEj{IZp`sh!`Yx>{t!<&7Wu#~XGG>kFN^s~W1`z{}AZcZlG!3eX|ppq3imVatQ zL<=C_&Z!Dx5*EGd;2JGKWEgzyP$0?T$)bL*L}i>L1-^$xcdC?Eov0Yn2tGyXp2nPn z`nAkAc<*FGAHb1qh$4VCi)8yCP@L9IhpteviIY#Bv0$M<9kA2^x)e5uknU==gu4cIS`A!TF*0?F5w?^YHND-6vvOw zDo~mHRz2mdq-d3Qud+amNH-*JR0bC|Citbh&mKvwcI>7X00je-f3DR@4~O-@zwR8Eu_i z!~|Ziip(sU^n1xk_8Q7kZlOpMB~l17*weg=&s6KprEi>EX|ZZWj^iDGM}6iFp-3h-l!1;7F)^s=nol&Fm*@Hm<>mV#32jfSs)2)O&pY;&agp2g- z>oYR6irSeHj=lVy-C#t$t`)B#r%0U@D!JZcx272CAIa+EmdsI2#p*1aoXFy?=ePV^WZ z=20HMnEw#kUjRI$_&wzxHizgdQic7)F|vXQcGtsDZG>gy`r~#hqcIphV|8DnLJCvz z>ye?1s=mXkoU(x^`L_nFa!`Ry*e?|m-V zUw)*55D-UiA~<=|=cTI=&#z{)!Nsgr6LdzfR(q)Erw;xSUj26!)gXf}0>N-)s+4~- zkcniNY5v?6CEOz6e^*-|0nHK(1iC*rJ@b^+gPS1e0O)GQUDtd%$F7@MmXr;FSG(Iq z9vm;ic1{^Kc-+{Fw2gnA8ej7LFDh(a2n!6d{na zo$Am!fGnBTlcdBJui<#!~96BvTOT3doQxN5IEFl2e8iE{VZ*|NTSE zcLIuHBQYuQGBe+6is~Maiw^RfEsG`>=h54B8Nc37RX+IsN%ygyGAm^ z=Cs^G2(^x|<5}HXwkrwmeVC(&6K@C5(pjmg5hKU2MQZL^8-II$1xa5*#tI_eLuOTk zFA99*3dadkf2qg29uKIqwo5s5TzVQnDz(CCU^>aa;gEm+g!`;?ubMb?+Rc*r)-ut( zQ9l3T#%dnEECb2uBAoB0_&$}AP&e8{Z zN}s7S?2LZo*$NoT)s6J59ide|^^bvA!Xky}@avqoo9`v$?rPAD6}@#;?>UkZfSbCN z{;G23-=ADocXg%}(!dTE8HHGY#J<$1<7Vwuc_!YvK0VB5^}y@O3f+HkPwvhjM>v4q zH~rnBf5KC8y^C92Wr)u|$@8pfsWgQs^pkSE{$eaI2gAV!+w+Dk&tsjiY8J?aES0uX zQ6``Wycp*gOB$f+0R0?=-xUC_2n5NMe$M$UrF;cYVf-QbkAQLRkQ$>yB{V03k(zNpMvv`fdv;S+iQ5y2&Sv`5E$6fSC)qB5FfF^2iwlG&}XP4^>ZuOX!cc~g>PH8oi6cN%e6`C0usO zI-TJwODfnW*}0%PJY(}k0_wPb*?GkF4h!=uN0GQaIApwg5EV%lfZYi$(o~%zJ)i{m zy*I&oAdWo}Z^6gvAkvTv$~jCpW?UGN~%G6No7w9HeiH8i{OJ?G_ zwLCvkmR5aJy@(_QWd;7Rf#L@K5520PW`$9R!AC{8-}qVB(=^m6cj8sPpTLSmPQzNv z*8O+p6sX;qg=!z!f1?_55GkUiJ=pA`Ec0<#CC)&7Fy1PJRGL*Q9FS3Hy1Z~p@%(Gb zJ(Bt6hF|vfFAz?C^GDF79y8tRl~pZy#3SpR(^RmDwG*nWT%be?zf5NJb+C_5=aRUs zkCyoHBcA_G6ea|0;M+yQxeZWiv8SH}Ld+>5z1PMm!r=QZMJHt4NZ@!RY}6b$lVF!6 z{#_KZcR%siR)g>i@Iy9+^}oHBc`YU^%s40XZ|?!4#uO@b{@*GoGFCeF30GtKup)zA zGR>LtUu8*v*ZI$Oo)4tFkOWm8^Hy(T^MUuZ8;>QEUR@xkF>+0K$f&z$NNf8otpYh~ zXy+b_ODz#rKZ`h0VCptRvmy&kC>>5q$2O#)kIF8Ri(!35;&U_R@JXERX%D;bI_;p6 zL=m?fxg?J$gh69>?RT;MU-XRCBwijT<-_9LyJQ$4&OvsQfDW~OK9spmI{EruWFIpX zyIGH%zr?F2l*-{zcO<%EJjEI-vr^=oIz4|K>lHiY+*8tN9CXovX8?JQN{k1e{F^3G z{%M_2PF%O?J{$EX>YDaqt@^K5I7mVo1~}g=@Jx!|i{yI4_0pwBQBgT^>y_h}&-Cu$ zTCA$ru}W%%G0x~anPrvf;vyni(cELzSTmow`)5gzqkQ}QZTVK+wM6Uynjrpdm9>87 zZAx}HpvOG7p0`gU)}Fa>YF%BMBq~HFb<#NCSVB@-mN+{mKb{^V7mW7(m{H+YPhqi; zL(X3!sK7}ajd99213RTm|o(v|{FPR=mseF1VKY0VRjBH%nZ6RRQ>!{SJ=$BZ8kDD572N>N!!duk~e3Y*EG z_j{x3LcyP8Ddn0dUKsRVFfHwR7hOX5fYd&s`aFLNabD|?#&O|=))cbk9n0jP$D4I& zJYV&r3x9gmEJZ5e?t2bCOC}%gpM4=Pfy)zAq5?u;lH)~Jv& zYU+c3{q~@)Q;x3x7!SKPx7t?1;QIo>*iS5eB8Q!Ht6x)?zLAh#F`TlWolKdfwd=RT zrwrJ7FPFYqsdcP4mvXmSUOoS`mv(@4+7)j>*oojX zyn64hLvalz)Hl!aAB(6MrtrpJhMOBbpO+%;~&C57Pu`u z^*mA-uHcs*DVAS!pA*|I8cK|p*K*=sIuCMVoF<%B3ZCWD4(T$~Pc3u%+1SLWaOL&Bq(H+CLPp0Yf_y_)#P-P$JAR#K$Isc)q`h-dL) z3aTj&@g7B-@4=^r#^vWj$*l|BF4t3cJGw2p{XD&+F3|~HyY>txSz=uQ7T zbUIqyYKv9QDc6cDoLL`y+i=6ymK&6W#o&`-`@oJX8{HtoY zo3SEt?>e$9;e-C>e7DQvl-pgPjKjh?NoWW~BghiYk&{2wD!7^P7Gv4Je0*s&YEr!O z2|scB@uagIF%hNk)H0@Efp@u#xvi`=m)ffKL- zY&CviKJZr4*2g!4MV9x>F0biYB?d(EOPM&OYok(>^g5OUE3I_XvrP(tj$IC2PLaX6 zOcffI4NGD#oe~tU^wnRKc&wE*|KnA;R!Q4YUB9KE+x$SPGer~Qm3-PL>k}su*UXFX z-Gph~I}_($5={uYH|qy78*p?+^(^$e1b%aLL*ArszeQjvc|P`S{Ltv|i6VbqMn2Bh z_YIB7SM3hBJt#l(Jgql@K=l>_y6%I>K~#9Gph`T1MNP24XaA z{d@&J3w>t2UB@&0Z9H*?HBG&b!rR1jXv|`4Q9!Qglk%)`e{Nn@KI;KVR3%kiT5I&D zZ=uh}CI=G>t_J7RM!GKKMPZ}Qrp~f)&=Y;=_mv_{bENE|i9QAo)52$|aBeNTIt_cgz)83N^5CHFH=EyYQia@(A<Z^-639!%9l?a&uthHcOg?2RB-zMXH4m+p6Jvd)u3aX4^{hv}9FSp8ulga>9I zRD_ zVhT83h*A_+Bh($ITH9iKG^5n19<>?#`;`7tSoY%~{|t=04c|_~_P&DnHH)^kfmo{N zUNlfjqwze9_AY~4B8=+T-WKy8yy5w!PVHy#ZAAlG&?qo160Uh>a-Q)Z+|u#T7=H6Z zqm&eV9uT!%9iHCoW?a2~gC$aMr#vm8qJ3A-!Yg`EOM}aU4?Z8ZmUTF1%!$*VJNFUV zh^){DdRSOBx_sxGwE*M1f@aMZ%kuXj0HJue@v7W_&Ek`Q-Z@^ecqw}s@*7dkDGpas z!el;6bZu!6U&I?Ssh-9^dv*b=_ZmgkVmF-Dr=$Vwz;gd1xzlWz)=S#rVyCDch4G9U z*r8Qs(*k*!Di{cCg>184*3#%S)?RyGtti9wHF`WK0}ab)#h!z1g&F?@SV@uZ7vxD` zZeoXP3)d!E=sn~?JY z35lqs==W7q_Tf-ZzBt<;&S|ZHOz#cT=4rggPBah!GysCzV=N|AAc~KHM%e4Q%PTQr*HWd_GTnGlylH% zR0g}e6Wt?tABG!z>sUh79Qd*we~7(WAnB9%@^hMKZlS>=EnM$cZAi5fBhzz+ORve| zD=8;r{`nwW^nXE!Wn$K@=3oIKKVyEu!}fFoy$+1#_Cv@#F*M@skh5-g-M7f@C=zrvAuU zh1`tmz!U^|76CYMcsx%~5QzLA0^Gd|MaT_S(_Bh_>9gm#H` zStm=Ef;?oOAN=MNskwb~^Q`O)dxL?yU60G>AXBI5XIEFj0M!Bi9jV~%fr=Nz*F`aN{cw5o1e zdupD}50DnT$8FnM6E+SVN`M^AWg81_!a8(Y(dqkWfWgt~-#_hUK0DC}QN?PUjb83g zVOp3>$Yk`a!_QTHBNHe?MW`(8g+7j5%in8$ImUq*yYlrV_4alO^rLkNIL_at7T=3e z$d@IX>#RS-)UZAzR=YvdY4ti#pxE=`H#^ap+1ZizkFEi>F^*Z1z-`J(-(J3@V4gx% zJm3PI`Q=AzKAn?ND);hA^-RV)D@GrNwH{rmatPPecpacWME+~DtAxIVf={V)@{U21 zQ|Ar0Dzj9!9RIJ(d zR;P4$!fX860rd8a+mRp;M|a2bYq#0@UPG6&?^-)OsTZKg*s-u1-|)D+^4x2yw8_+) z6X6yq-MHSemNeddPoNtefP0{ygf$AY9!I?-T6f6?ehs|6wXJ7wx?YcK|3nVPfx*NK z?;GSnlAp6a^mx7oPk4526+6}|=Bom^OAIgT^RK7sGtcMO?Gd$!*9!Zl+WHhVJM3~SkIx&Tupq^$Cr%8=n8pavNnK)chQXUr%Olu{6VmUPxNFL!= z)NOT0f{P7@7*+TALfP!DY`LObt#5j}wl(%J3>|(2RyWOsi2|LweS$UkwNH*$?bJT3 zu`a&Nt`1vwe|{2!+8j-5QwTAQ=vQ^c@tkx^49_BN<3FR_LDWlOc`&GqgSiBMjF zz6FU3Ym;4dOmlFhr^5@HOiWBdBO^Z>UY<(MW5x4+=e5Sk*~nj*41xr)?K1UU%@Z_~ z5zJ;43v<++ENPA4!KB#^2}x0w>PU{Y`EF2GN0?W^qMp{0tZwtpXOTZ%K_h*oNqER{>6xcIgUkam$_XI4|Seu{z-isx6eJQ-Niz6n{7!CZrxJ8&TM%(OfEk$Kh?F1 z_IKVN_{ghZKFrxrDW85u7EFbeot1?Qqp%S0L=6?`4lUiNNd^}0Wsq{iYzIdBGMd%A z)K?d*d+oo(hn%$-SB3`1^`iV74#@`@p{B()ju$eJdwpy_6k?v#0f7=rHcH0;Rof53bY%HUM_NyhgWHHHLXU} z#Un+i1;2{l&i0BczLR6Nb9-L*qcr zI`g#OcNw3Sf_w%gF`Wll>{;i}(y+6}m96;bj#h9!em)ZzLjF6W_qXMASQcDla7X^Y?J=Y)S%tzSw?EYht$I^mx7e+= zfkp8A`_TZV#Iw3j*abl*P#D6bN17f%+Dl= zSxt#v(C56HP^LE>#=X1ihKnonl;r*@kA-BJS-Q?D=CY!!`QA;p9doGYz^qxj=M2i> zcMj7hka_`zvp^=2>;1%W7+e{jNi8jFtdM?iZXV|;KBFE*38yoi773}Zo2bevetkA$ z`61I)Zvi)NO{6RWQPS3NI5~$55P&(5PpLUNQP7d#*vPI|g>4z1>%u~>3*r<`bBYPI z5tvbA#1Na|dQv}GEtYq>IVEI7&Hu97`~+rs_jx;6w>orOk@O2no_X<95JkLmoJ9lI zhlMqwgJ<&O;WsG0VJ|`C!t^7sgNTuI3piIld7!V~?#QdmV5A+yC-M z+vM|!eOGVu*7KYw$uTOQX1`ySSyMnoN@`>z0T>iC-hA|E^89;ekv&fz)3kSOtE@Ae z@DR4%P|{R7;y+?72&!geI+qv5y)Ge-iIsRmUt?@mb-Rxy(#CJtRuq&LKw^Ngb}&M7 zkdvGK&ln4Q>AZKC&d^kO`TTw!9D7x$;LN~Ci*j`M{dwiXjhwQ(H6ONUx0N?Pd&MQ1 z2k}19YSV35*k3toD@+U41l-r4Ap-*U$1Lep0-8<_pWixdUnqW`IntoYch-?8QjCig zQq;VY8_&h`R*0bOXsVOM{j##w&;xhF-EZ$bHfE4D5?mix@Ty%ypbGf7&(Npc*ox)z zaWrbwijGdvx38fRy5Hx5SKM7#kbftDQQD2p{!LYWmD1w6^xpQTHhTtkk_(;_BMc@ul321NP?(;+8_#eBFJK*)m@G>P}Ehc(05Vr)pmJS`Q-w3C9h!8|=n?d)c+gm@!;j7Nk`p5N@+pZ|ge{+x5=<(qlLR?-S@HT=2^$84w1pucW8vFevdH+?1PqVTY zgdL*fmgV$>MXSZ)`0lEh9r*EQ*Y3COmaI4BU3^>^>Z(eP@e|Evu%)An`Zunp9ep&e z?)a5%==a)SE`kYyeFOV796QG9^WF)LDoDqMReAW#{qSnTjyn;){=*zq!5DJ|tFD=(=z8nqLp7J1nI z^fVbFpn(p>1f0%TV6RDquL6P1gPUO!(wz_8{bHoEJ`Q1w=v5^@;x*x|hVODHW@rVl z-_>DPl59L0=Yn~ho&v_yNRZ)JF1&guL(F@DJ;0o3UA*pd|b`*E%3L;Om0_k&B|sR`oX748e_qn zYWDdI*QRZShk~TjCtqLSGK?wI#jm`Z$n6?fFBeIhm{H~%F^+hQ#ri8y^7qWU9KN2X zm-J@NS!M41@(H%e$Q~VD@Ow#SBU=oE)K*qbZy)_CVU@SPy44Kw{tz5z9>p%&_r_UZ zEHBi&QH`H1+ux`o zc;2h=TdYdWE`H28khXzbjRR!Fk7pjPNP8%_PihObsYdNA@7M}I+-WfgCZJF$NV|0F zqN)3lqAcg>>T|hw3r}dT8eDmAYj?qE`>B^{Q8n&;S-b2|KO4T)`kd>g=-K%GM#Vk&y zD*n+XNUvx+!O8gNXP%+UP+SsyPo0foD+Jiu80T~Klj(m&w zrk8p)kM!uzR_5|;&VsUl^P{>AgFza_6LktVmhfK&YmEI-WOVP6w(nnD_MG3Isd9ZW zlIm0Y-vw@LY!s$?-1zK0p7yh|D&JSBC_9q#lP!BTUv7w$&{dryx%(zPHlK__lcJ;f zC(i@1L57-ulw>jQv+++jw>o0%MW4IeD5I*D-1~JY_ySza!J=c=KESwog4`2WMTue& z``{i!Zg!AqC$Poy{vRpE)=4d~X#cFYg69c=#QXBUa@<9{;H17nWJ;RSJd<{+liy$U zM4V33sOw%ypLc;qNo#*EEZ31K6kde)k#Js@#_yDI9c_^6V%n1RLT8*&%=! zbMG=TLFM!GRG=;vR zWIsAsG2*S?`HS2oI;FX6QMF{~Wt&(IcH4@tF_-X#C^%guU5ke87)ERBtz0E9q9uXS z+MlN$3^XB+dD>h5n%@RPx=uq49mQW_H}^=0H%{=aQ$5-sKAx*#&dwoK7L8uV_nV6{ zu(RLKpt{9c-_CpY3Uny{J-eNHr_o3A)|;*wF6IjnKKF_NAZPSd z+dsH{Zr=JN;dy8o;oSP`KEwyE%8(!P2$fX+fOUmV5p7F5nZ0}?bG zL(t~~_%;~~fd)`GehnAl5#JQdk1v$l95zc~bqf{jS5=IwE;!4I$GvB7%cg3(IA7Ea~Xa0hc6LfnHM5c~Xyzv+dH2 zH#e9Zd>^gn>XJO7&C5)FFy~~_%OQJVxnP;>($ku(#f)DDS&cLiC9*j7#FD>A0FN6d z&O_kFbhBV^G@Tivs&ZKA0Xu6_L9bW9F($`yVO|P=9#df+f$B3HonaPNjN`^aa_<^_ z3OPwcDuWx7e+vr6;8j-5z0p4J%A4xTRJl2W89zM2H(dV^<^-7Dnm&`}+!NE8D|^Fq z_gdY^URS4H{2TH4NnJ!yxv5pegc*W(kkR7VB#1B>gVw|g(mo2 z3c;KtmtS0+H{i3nBX-nq=-%+{k(aFd#gs=IFc1T$8tptg+uQ_?I^QRYR~bbr;!EvU z1*5N4uXX2|GVfQH{xo}7(x^C;)#v7^8^uD`__&b+$42FAL_n){6jiQBzrKB_HXKv< zm@Mw_*BVr07FpT0$^3L%D1t)*R1-#U>i#t!-*>ip7 zJ^X7Al12lnKNYAE1}7R8vDPeqit;;(lp$7JV*}DV#e)uTIr#$IDDhC(W*(E39N$dD_odYov8U zP21DNoYJ4R1`zWB93uQm3 zYUiNgIS;aB#BKCROG)9rKSO@hq;sdt9@Btpc>-%l>5`X?`+G3U`P8nc^G;%H9S>pJ zqZM3GFO=5#T>-PhdW~7*UTgJTVofs(@C0$g+5}3;4d6j+HlDip?8S?(z#Kg<=~Y2% zrSUs4g{S4m%c^&+G)*)*cAl70ad{W>Mt?lYCQs`4FUt<8B6I52M^9PXuh0`-oW*nvNA!7!}xelG;zR@)G z>DujKN|`_{Bz~=AT0(oF&-6Pz?XXJLxp z%5+#TX8!`t0W1%2G5-dOR;JRc08K@{=BG5LQR|j)SAw4;`RdoT!1+)coHCl)OCmT| z!sMWX;nr3j=aj1GIJj>2BMNf}U|`4XWlb!Qm5fwakzv6p@blz@eIgTbClfER<(rbk z5ya56*=kdLI955IQ$JK7JY*^ur)|*wRdDifO3#-Xb#N^^&A)D?O!fqx(*G5!6yK@7N+h=Nt9C_c zczo6aOdxxpDnPI~$Q7A^UI!bn0YJcVj%;=$T+0WquT3?+W3?_{XmM%$Pk>HG)!D@w z&a@HTh3v&VN(Za9u{dpx#g=_|%6nz+h`Idfek2~^<2*+LCV;1x(zK)XusJ0$t6pSq zO#y-X=@7)Q4-gIvE~;9F91)-dxk0yF2p7SeIOk`mfA^R_+gbVf;2gZlSnE{oyEI?9 zDj!U*Z#PlCnT=+lGlC@qgr1kXY|f~g>e&xhv`{OT%z8k$5Bg^&D0U)W7(}tzr`(7f z&11y#-f-z6&(rBBZnbce%{f;lY~fV-CYGxN6~Q(=S$P&IY1w*P%&A)LlB~bpGs7!^ zfNvnT`QDck{doh_QHW3qj#UnLC(s|Mvz1>K6jwwI3&@=wYd1})avJe+ZOz@c4>$6k zCm(vL?^(4DoY|_VUFneIg25pmK!FKm??e|J7M2b-J#5;6)PM9kXh*ROqoQnx>>m!0 zQz`~2Q#p`e6-7%>$p;g853X1l6y{O(hlJ2ej(um}`Bf-kcdL!jeGI^FbK(XN5ma6s zA7E3OwZh|C@TITzAS`=vc|pYXh3|&78yZ>bPDF9Jm%M1gXmc8bf^fiX|K^faSN~vY zJe%;*54Ywb2==)OZ5LM`(2Rf~M)mL9g*^<McUK==?U!JblG4;y??zrvrA?Sfo*nq4O5DlAI0>#f@|%FS&jUDZ9oT1a zPMkOoCn%^y8s<*BoC4D@#=!m|2Yvw9?H3-EUwl&dA^H-mT;i`fvsVcA^}2Tf!C|c} zdQf98>=A1p?b8;M$&8O564DQRiOGH6o+THzoDRdwUz2lE(){)I{uZ~{KCSU=Hj^)x zV+`fTW0~v*HGtuBzph70ILutGEyXh$~xj}5CHTeo%`=`|V} zVs4(Ia+I2v(0o#GZv3)MiIaToPdwLMI0S?Cg!u|!hDf3DA2Awmgw&BgZ)Ru}@JKB#&a<#)Q|d}v@x0+^ zd`2m2I)q9G>-${cx9b6wXr?q{l`^^6mufM?z1lrD={2jSWZSkfa@E36Rm^^>I;2!>%CB8By>QOCP2dlegwD10BRS z&_V^Pl+dK}P~m-(@^=BwFppB;eea^umcwUdKGb1~ND)JI=!1FFUo0xJD_6 z8PauZi_noTR=SQnrJ0OvgWQ%`Hc`4@zG%~B?^o4bUV=^I*lENc+uH(>)0_elaTYwN zjZ1b?y(g$t3-!g`4rSH^dtqr@Nr`aTPlIOk4ggiziB3gHNvLj-^W91N?K_ET>bwNu z*|$YD+>HHKd^dGsr*qAX*dMq{s@J^r{<46O^Oaqq*X86+f;>M5#;fbfa}y1NeII#$ zp98U5tJg)mmv2WLKzurUxChn=$QkH3eDtL81GGLB-~zRrD&NWO+Lu}=d+_TAlL7??tMf8#vw4#v0K9=n z2RsbWZ=krurBB`?S=ulB=?Dw^^qVB& z4VCt5^fnUE_yc@DoKYbN;x<^pP7@Ku3+NLF-@R8m5x_vA)mv$@9++i2o>gFZB%ikJ z+b-7xz|B`uD+i^;2jWR;3$$*YnpTxMg8)C*hIwgbsYhr?`YmX%-j}G_?BgahTjABe zxpi%GS;*VTe)OUH7?9wjz|7zBj2thp{&cr_WTT4xwO4+T`&Tf3T#lBv5@#U6a(iyT zX2&#IxNh9h27K{wAWW>3i=%r-&MA>+25HPdRopcykOo`|LE9F;65b@gM;x`d@U>m(`XH=ya!NWN@fu z;)B3Ouik_7G1Sl-Eo^DGQm@-*01eTzHqvWmq7fyH?jV;PSU|cbm9M9V`uDxOcqvnMxXSt*I=Cw8_2Pou(!M8Lg+ML#jM zYoOP%HsE7A$ZqLPbgCcH0p(^UMxOpH`!h&u0O>0id?4wg$VaJfX!L3>MCqXqN>bNe zp4QM61dUX3XXowx<-76YL13Mu0Zq=FxF3Ka(kcq0o@swSX$Heq75QR)+O3bV%=C4w zAzsW-hrs_5A?*b$yBVggmH31Auon#bR_co;>@TO;lT)*k)Q2?dL``*^oG$FRo@&GlLbQoofZbOfQ+G)BuQ^!#D|6kufJOC?3OYWQpdmX}P zpbiHJeR@ibWC0#<6KES?(CK>P5{NnVz)MSPYliLjTX4=o*MM`xA)jY{eu*@Cew1K@ zs&u3vAKH*89TTh<&tW>$aJYE~FkDRl6+;Lc@{DP$&e}yvN*g8}w3#Hu4q6NR9S@UeiZYl3WOM9Ij?Gw)U9n|M3|8-~ z4+(*qIn(oPR=pzJ(^Qe?PQ0x&!qp0Q?wEio2082_A_!5@F9!+`)4mFCY(ofBS{knt zfetk@v_=sK2h95@>J*%7T=LYCseu0g68RlOFT8d8HsTQV7wINKWQ9=IO6GThZ%@jc z#vS$k6k@edMI@IdB-S#zvUY?Q&6{~$=~@yDez9=n`T0m_^k4Sbasaz-7bw-N-sT2! zho2vh1l|Uu8A3J+BDcbh0MR!v-2(#cgS!wsF;el0fL{}kmte$214Kk~f{?j#jU^|p ze`V9EIl=#wO*kNJLJ=K6!$HJ^5K`u0&_uw5Y%VV+H68d&im$}u!JHVrQW20~XK%|4 zn*K%gPIaMooIOMtJp?)~;`*sxFh+NFdOqYD+7e2xPQ~2!B59lM1a*86Sf^}zaoXpN z+iC`-zIne|@-*$r>8BnnZreK)vMfv0^q~dUG2qOY!5~B}sI{UX?OC=1n%%Db!?i!q zM1(I8BebT{e#FzkRx2XFw`05(>J+TYAeuxLk3bQb-y z$A>o>vj3j@iwlQZ8c~C0V8S#9K10Oaffx4*tS?f(r*Kd{ozyi@%|6b?DU=!uD0QDH z0#m$JFfovUfAqQtttQiU-F__m*k9??!ol+xH37Ip|J7w00R)g4qkM}loksNd>Y4tN z{I8d=7z(DDoA3ENzVx9mro3>@EBlfP4<=XSqWT$Y5JvkN+jWAM6HeQLe{*~-ARY`c zpu40FxS>$C6*awC@dRMg;m}nhhmDMpAb_FDvPT9b8hWfvNP0h6jC6|R+$bFjeUc<1Vl)=aNAz+E7pyIyAu)OV+)AuqdiNoC7eALHJ z$2@u1&;UnONSW2T+2-beX#B8)f$S9?0VQE24tBxhQ)fexAX1n1PMac`#g7!mvxlCq zMNJk7>r&%8YNa$91l&4FG-oxKOs*VjMyiLxzg=JUfsBw4kg$=$@${izA~}HO4gt0N z30~PPPftv^ZDZbvA_5?=>%OBx?}{-*NHH_1Uta^)!)+l*{-HcQpiM1+7JcBPSg48CqN$ z3J8NcWHoh)63`S00TF?!y^cp<4#)fZ;A4le8CnNW@bK^79#9W`zQc$41kh005vdHu-x0V*rPD|IoXhc2 z8l2Ub0eT4f%$LzZU}Xg#av$Wtay(zW3@ax5nzp1U8RO5p=%ku|y|0 zF=+onD?z46D;Ba}5UU6hmHUF5Fs^@F9d0TYASsX2dn}_{hIsE{HlX04@~^ zWkVs@DIoUii84~4q&S4s8$vqqIOvj<0&)(ZKnf)Wm=}>Sk zYDI!8J@PC6*=(5Rba7a*!|tj+V3;LgzHKH<4X@=qw98BZ?@VtecpYd;fe_0FF;EP! ziAnkH16~^j{sP*iQ1;fCl4`m+$=!MN`_m0!%-h>Lr8{#aHg127+Dl5>@33C3XHV1E_q*Qcqv*-BBQm#Id3N8e z1KLFV9_xkx-LjC{X&2~PhyLF=kSwUvOW?tEYlJk75ZLl!A*ym6dTiK8yr~NK;w_eB zkqUAOrLF; }BD<=Crk_9aY3><}iM4ls1{0z-D-h-H7_{a9ct1_Je}XC>k!kbY)? zXAfg^lxqh05qAJ~0J>v%GEuyR)bXKn;?9Xrg_bzHed>a~>O-VT7R=<|(yiL$w5rY~ z{m0q`*x7Gr`Cx$v+8l~5IH$b;%l2seBNZ7Sl$}Gk3KZ-GH3jIdkr^DYg)d=OMnxKk zD9qeeG}jIIx08HUr|5q*M3K{QjpWBZaKY0R&eH)x5!}NmD3!2sH8_Dd-VDbOlqQ_H zJ>0_98l)r zVFMKaR5ViK%mx`G3@j|TUkT2rgAx}}-mIiC)+aBV zk~;h&oA8OxaY^ou+I-*Wv-=u`o{l+ZmfISBMf2-9R)x#1%Ni4qx&;lZ zFX$i+t186HEI`7WA>2xkp)hqF443N+#s)`b>TRz?`DhX3o4&;+{rbK{?45AQ!X7rQ zb6#aoQSn=~1%c~i*KauCI?K1u!(YBIE9v#iaC5E&`fa2ict}0<{d;HEjh);u=r9R) zas)CpV5>f12uDGbKY%*i3!$|s!+iw5=8Tv*bjw%2S`2+Hz7ZGZu+*?HHHt2y#_h3Xc3a6K$o$lWTj}p`T~HcQJeyxW{oE5Ju?A94Y(Ls6J7}0QG*CW zmISwsQp>0wjI6<0J~-=_isX54BE!TKtwkB znN?|kS#Q@o^NHYNQuidm4hr{5xM=WjnuPIlefQqh;sy8(K<~M75v9z7&m|jPEamLc z1H}0^u@|{Vf{U=qQ-f;^eEKXE z8o6x-Av<$@NqELl*5=I@x_HgH91q^+yfqA80M-X$qC>u9o+sB6P7 zT#Jf5*Aq75)waO5fxM3L^qx;ao`yw2O4=X=Q|g_fH`> ztbGQN5kl>reBuu!cm%bOwZryq0RZKmK01DEqb1}`qgJBsKyDLcaD8fXysakUHnQVp za(Iir7?yl%`kh}d{bekaxIp{60hJU~wWrF``Osk-wvTSG>sM#Cy@cfM!qJi@v`|VKJHl#@#G{rr4meTf6or z^+T9{u6RECIRjj25z=AI~9 zcyKwLsqLNqJKsiH>ZYW{xXIlM`-G!>_Fd4shrybTbQ>Z~Bn~}dyiUfjw8m7@1r;K^ zA^_TDKSxH^F?kcxV_;1IYZwVG|&4=k(2sv%QxXDKCjO7JUrc zH<;0R2p@|uSWtrrvw^@fisK;&F>A?(jzewFBS)<~i6!3JBK`a+RbR&V{A}ClO)>bfzXy z*DjdA>M{rZhb(wg%H}7jg7ct)!$Rx~kZC_lPFA>kmqe$CGV;q#ddmd$AovOOx$vA; zKaazz2T2ND={LiFPdy<9h3QEPw^v4^M^@*9sLu=ijVer3x^}gA%vpl31LSK(3Dso| z)%tEO_Zue6($)@Ae1~@K7e1W$$J)^GzzIDbq~TbO)+(6aop`V7p}Ac+6zkUZEvc`V z%(b65PbDqL7eF3m32P&9<)&dt-y`l9>0qPZ2EBZ<0Sx>Bkd9yur;&wQJAx8ZDOY#wy$EB9!Q#ZIm6>ye_q?u76QxB?hEq9^RU%WM+O1NUTSZS41ji^Y0B%E z{zlgrE8##J8fjW!;@`g~Sd-WJuZ051MXmc)xqkj-iT27l*vxV+>B?1N{I8Uoft-P& zY9O1U$x;x}^z>%Eq;KW2BcZ20|K@7CKUZR4lqK1&dz7ZGy4cC zAk&_0Tw+?XD38REWvlrxp9R57Fvd&#zTiULjZeKC*dP1ZY6|wnEZCxeso?;mLM*fZ zMA1vO!aJs7_?A+;wZ1Z)Jj{KN;ivdtlE>0a&(o*4sh$fLQoWWrz(jWXUTyNVU){3Ltti|OR{Nbd z{vvd9{!)1%BnHqvSjcV$mk*&PmzH{eG%T+Am^YI$KikSm(thXSPGs{=LB!kM!m!*Q zcmKADAdD*zgBZHNe^Kgjd=F9~)3wxl_aVr5&w6M{Zo0*_IP!fVler0bltF|SK0;8f zdFoTeJ9lQmM`b+yG4Q#fjF*g*(i{~H$9s~CRZl-V3_S~Ci!YHpPk8c74iOe0fC0;I zJz&+OyR{U`9waM$4$zNna70*wKxCL6PDAB21(0ZDQj-AiEvh%6K&rc%^xUum|5lA% zkxV0M&Om|-*~N?YQab>B7l5dSd`)%Atky^bHHPs=9dIF$#@=Ul-2G`_Aol%hn{dTZ zRJU{6T?HkvQb1+!r= z)eTpADv-)x3d(9kbceT$DU1oq-q+B711M!IJgv8dvc4E7aTt5nwBa<QN}kHk{HAH(qv9t3+V^aTBvUI1|H zCv(YaMkU$g-v&7)qsBtgkz!s6b_0a#g-k>A-gqw3p-gx<|JZFYi2#bN8UcyF=<3{! z=hQR?Uht36%5ccVIdQ)@7J)XPpUhvUtdO_F4JhR;ijWcd65yEFz0`f$*0n~H9f|vU zQ9J}dbPY7%)Z&Ud5Pp!V3#Zfh1#(U(M#DG06jv)`%|wb!pff2{9MfxSX%u2Rlj|hl zHfT1yd@pEfg62-p#16^WNQsc0mMLGbT!8Z$d z)*830I2rYa0LW8tY~D7mAK}9Ql3p=IGzMV8e`5fE1M+a9{x($Ep?{bXepM}{oasz< z*daT-=jp<#>ut}oZpIz2TPTuPB=X%H0%~IbEa{I9xvP2!0{(!{1%*2-A3#?TYZ1~9 z~X(!``E z&Yy*qK>^l!Pf%cV$j!cOrZ<69B2doU<P0u6twUNd*eIHSH0WLE_1C)oR6x%#KtB7tqkDR+D8Gc*~tuU zx*PNC@= zqOC#Tyr|#dyS-tqlKPL(W6IU5DWg%(Hsphops`Qo$}7odQzKCpo(?nEx{LPnKa$EJ zsqG~koS|JrjMN)&D%h$Y)G3uF+rwk2UY ziI~iA$b*g=WEO(Jv>O=p!K+L74g21X=s<1kGjfN;n?ZU!R-Avb)f5gh5uii`f)z|C zzQC>SLfI*biiA)*Yn4<6@n8Z2HaX-JUTaE1c}a7(D5(QYJ12LwttEvc>3qO_HgOsG>}{uK!W8UcVJLk#6taKKu1zs80( zo5|tt4Y-eAmMhhMQQE$`({je9N!pu8)n~6g(b7&iP(oBq3Q|5yA%YAZ*WSO_bc9uh zo=;nX7T)gbU!o9pdrpRtPw9W7=-@N|MbROyC|I+m;7BVFU1ZUmFcHAB=aL<7Zzsym zDCRGeGdS!+ocA?J+uKVWAgaiL1B-ETq+H8$)+E5HfP<#B&(cFpa#IMnEkZ%e+}!Pl zB#Mt<^&<;+K6_D05%z-9`1r^H0rkOvQl2YO;AcJzLkCb~5jYx^_|W_(F#Rbj37smi zy*ERJ!P8Z3qTt^qjU7no6%vHGxY72U9BWm(AZ!HRg%^e%&K*O0gHmmg;PjkvG}9iY5qv3Z*9w2tJxB~dfk;Co4;F#1 zi`uOy;vO~va1XKMWn+E;%LQRq01IN>fBrJbea`2+G5XxgcWZfHK@AGHkXu?S@r8p0 zk3aln2!5f=i3~3C#Q6OYM@Jmcf?TOiFVHOb0*&|YV>JQ+48wZIm^bvE8QCbWrIYFg z-;zAUJV9&$1WshY-i)mOP`$mVYl8C;(zU>eBdG*Yxa>wN7~z}*yA5S7*aJ`jjzU*} zUK_*3MZn7f;8!#XKugJ^^AK)Xf3&{>UyJ4fAL#VtH_lLDy`!OCUWmJw-naA{nwY-< zczIi;i=Y4~KG$J&Mt`7AQC-d!MJB_)9N2i6zmR|bvmhiHg#v@1cu|9G7|hl!hz<;| z8VYK~g7-KBHdV@@7fdz=pai+p^k&MN91^`DS+*O}>Jqr`f1G@Dj2fvSk&z(2^Fwbl z4AV>r$Qj6hy*~jm{#9G?$f9t!uiy#rmgs*Q;yEf_53FBqxo6n%GBRCuJvYY#7-?^?N=pQY>;7J1e8}JQZ z?p}AJR6jGS>DBOh4{DVw&_97^!CVT~3lX$>L$T5>D~k~28JCn4GoamlJLoCFM~Cku zSj&i5D>b<#mf?5N?5)iBQ-!-%@;X>f3e$a$E3Vv>1P&6g^DLm!Uob%p1R(ythP->_ zrTHulkwEFbBzILO&R3e3md>!B+RM{+n>hDJnW`s~4}&2M~$ zw(oc=nX2VXq}=TK6SoB&?<*rd+D9by`sFY_M7?Y}r#5+5i zO3KPe+lmrK7dH0bdAtJcNCVG#ik2_S7!18IzW<=-dM$pd>Np?3e0%7Xw*GbM%ryoHPULbOxkg!&_GB zxn;gOUVm!R-!Yo>r@Bt=RPA{U&w2HSL(?Dzgu{8aUXweN!>k(Fp`_h`OyzLxQ?V=b&o>nOYoqU_vAi!FNJ(*5RYAU zfoQ$MYmNhGa$H`t&>l2}wjy4tHgt?o;0RUbR{?fz;B8qF1fXQlJFuzzc3H@YIQEbr z?xp`AeM=(tEA7H%*d7l5{4rB{!u8I37rFb5VG<9jYdkG(-70Qq@@1-|N%1VVW9cOVd75`iW0-D+A(}aC z^O zTA_2|UoxMSR-RfQbeT$h58S8)EwMhlHEFh-Y>)&tH7YtiCq&+lZ>MxvKpf|PnHGA# zMGTFBr6A_9&H(0_4(GQ;Iq@awOMB>~#DSoT1MtGL!jRJpj@S$MC$Al@XB&^Z`HDML&33X$ncvJzx#V*rt%I3F6ZykWpwNctrKOJ7Ij=mQ_F?7AoVrpw_13z6T;)avq&HSXUh( z3KwP5#}?`1?LuNJ1n;_FFw*77!VZlT=-MI@3Io?y^E4@6%h3uBl;e{2a>!tQ$MPXa zBv2F^to~s8#4-JOI~H;XQKRJg^~W7nyFr_pf|6%Yz!^d{DkcACzW*C4c=rfOlN?ZH zpxs)p)}@7`1E#kqF)bDNj?g=LTzCtz3D?X)I;c^2uV+=zTYZl+In^IRB*~8^C;rIa z)XaH=^@zBsecky39Z6&01*KE+l&z)rTt?0YMIB9-RIsa-_qr%mlPgKuo?R}!R;C%f zFd~tIYpu@TL6)7WAgoMq>sIG$e?k(`y3?d5H`V?2e2&-KB%=sFYCa9}G+1Lz&@kO*v-WS9$_3L0)e^Jlbszmc5(t17M2gT!Y0s+b8zx1J^r#I-azX- z1GJGwnQ0 zzhM|h%&p5{Zzd-vH-vTB!QK57=`@IQnqeJSAJnx6(fKqOyRon!d;{JJVyJo~;gb&} zE*d&S@-_dss3&?JWL_nB4&gajcq1kBl zetb3M?Zg!NcC%&47bYihaT&zK{$FEP9u8%{hKIhArhKVrDygKRMff@~*)_72BZep? zhAf4~mZ?M`d>Bf|L6#Ddr7W37h>(aJS<9BFOtvi9%DLa~EPtKvI;X4a>Y6Sy-ub=1 z_j&H;x$oa|ucK0_OUWx1ld#1_Vq{L1gJTQO-l}%kk9B#Y+!>$TkR2rXcT237)yZvQ z!$oYBw6wHr-0P*mVMDELY+2B`d1|Afevi6WW|=Czk(O=QdWVVo%DOIJEq0knz3<)k z&tLdjPQcQF?a)1KD8dMpJL*;S$7THcfB&@?-0GgMjbU^ssM0GbjKgdG_@vm2|NdVY zG0(cA_q)X0Ml1VoPlb^KH@e+&G5nL4e`WtxMOhtS_g~(Vq41weV+PhMaI&)v=%v_E z`~LD5LGOfwIXkm=9UUZ+eC$KZ56rqio+)E1sZ96dNVlKstuYV(+rNG@e>=lzjkB%} z=o6ZpoFw^{m6h?;`^!}=IppoFQe0d-%whX4;aLo-f_x(*&G@CIrFDwMUH%ZfBO)%Y zR*rhV6JMcp56ype_986K%WA%KwH_G@?GrLEFqr-^;-mJ)AxI)hFPXlRy1hD|TO>CA zBrPrW(2f$Z*7|2t9cRTN86CD*&eH!Z=W}AgWW++{s%X9CfBvFT0M2oetAd*wP>p7_ z)HF0`!w=ZP!eS+b5(LP1$@j5sXge2ZMkbL8wo^E|yO_0_kfgvgURhaL)~;TRXry|J zCN8)Zho9>zUWc+o_|&C~7ndz$XJ%HQFor*yAF*GF-GoNUau*jDBC;*IA;YMv5AgTz zLB=TODY@7eVen?WGHVq$JZY?2E@o6IkJl0YPhTV3EEH#h($aRIN;u=z4%JO)ON%KC zGgrED#8Caqt`BP~IJb9XB#ZSeUyp138ZHemm=Q{gEo5^vwWT~2!%DyMYJ z!XgwI8AIDvF_}yR5Rz|kv2uPv0UCsd%r1bmf&sCnr>AG)i-C38o2Ge|3%}!9#Y*Qo zM6;aziIyF@|*!SsE;Hy`!RD&A=?rwm2GgwrmVUB^7)fV6_KcIfHla-Yf zewsKa4NdEk0L`&nW7|;bZ5-McTo59Y55hVZ`H?L~qaeeNa0!^KM(p_9>1o+#izgr1%r(d)@CEKDgZY;kNE zgY5Ww`==Fa+0N6mv*oR=-%DnprBS3(t>EcE@`cb7K{_cb>xh>>VR9SR({oz&a3$r^ z=@lzhNbT8E2_kl-xVR89z{G?*_Jsh+kWT+4q!JR*m#V?lPfUE&+uPe;*3@XYyYEw0 zQMr+j5C))Z1+zzJQ~A!%?F__60=+E;)~JB(^ce6y1E}Y+i3sCxJ|<+HhGiaRvKM&{ zfp=eoTmZ#)504j8I^Vxn(PMB8jC1gqJwg+Mq;6_z+AXR6_3Fp|{-anh7K?QwB!rAc zVFxPa&SF-Rqe^5A&1beLQ775(4NPDh(C}PzOO8?3RasSa6F|PE-<2Tq@ybY7H#oPL z!-*wqJ#n|UC@3iW4eDwWI(@?Y@*Sou5uO&*kZ<2ybtG3& z!m6$sq-qBT2NPqsX_GZCU;5G{G@P9FkPzBAwN6g2$R4 za`Ew_@AOV*4yOfm=U{a=Z`-yQ7GsRk7kPFTifsp5J35wS(0@mJ*<58UOV-W9Lu8n( z+!n8NK`1pfwLIb2kjB}wXTy2Z)6?oXt$mgYv&YnIY`Tli%Qj+9Ux&0Cc^xL_^W%vN z`Ny*x?Q?BwMbSiFsh7Gcr)1VK=Aa2=GS_GlU%o+&$45%f$aoHBMb75s$|4Sj*cMVU zGNRV*SM(RK5t5s}^z`;#%`i@bhKavy$mIdD*EGTx_uM6@HbC^9cXO)%p+1Imn~Yuh zmI6cjWndz+v$KQP>_aRTr}-P#PI!ByZjs+(qYRptmmL;dX&i8Fv$n7x2jThZ}YPqGQrBsw2g#CiJZb}8D0MBjY1sRd?@$VU>O5-d5 zXac`%X$6%j0ZfB0i+KmAtTY&myKh|Zz+e`@vrj*N8|`GaJMAr*mUtac&C{Pl@9rQe z{r>&yK|#c0h=1&ofPt=IG>`Cx#OS3QV-xK4XRTxYXyy>3ox6WGo4f&xglZ{EDAvpw=C zy3zdu14gG#5iNVLcH;P)*48Gs1{G~o(<0XS`S~k_8_~a(0qilq$w>&7O#qvpyBB^c%*@P~hZ!3gt-^yY=ndxG{^$G*-ONnqOkOM^ zr6!befKm3SC-2dB1}O7*yx^eEu=Yv9uRZGEAZ=@BXAI5?>zh@3X|=Gh209cIL^Y0- zdgQjOhS?|RtTt!R^&tJackLR#{Q9tb_|;m?px59~?k_ljJBTnLIP{(qxn|ko*w+Kj z-_>^SepuU?uwuy~mY3HXf`>MkWiAaN|6<3!y<|fvqX;0uJtsy2<5oo5MpwLYf6Wz@^?E z+tbt=Z`Ma`1g&JVBQ|k#^MMO%*-9u%Ljfz$1$3j)Z1%?ql5EeMS;nIuI~JLlxoacU z)j!DDM|M%})2InhiohWaj)~_)D!9a2Ky)0?sv^Qh_B0#XE8GZe-mtkMqQ5ki+CDHf zeCml3hr{_reL9J^TMU3)xP=OjcD|&6fin^kzoXw(RHPX9j(c%(Czb*-!Ni9hfEW%P zIC%1e<;7w(VoB|r&&X0{+N5*kGU zCq66$J&TdU6r#Gv78(7T*KoYwSszaknu1pHv4+ORe(;{;BkdL?Lm9g3;aXAA?ep(Y zsF4g!Oajn)0viL(?u&t`y(gdgv)Mx6$1|s*qeau{51hvxot+C09B$UV+gR4rWb8Hc z>61VPec6s3J2DIFzrVDRN9C8S{}6ZNR&=!IhSDcL-Z~aE8!O{#juLj}(2WP2%Bcog zBm~%*Y3DsvbGX>C@1{dHZLA&c86IY%Z*E=yEWE%SahkmM`0*;VKM6V27)GW9u^VS7 zT?VMQ-d6P4KF-U-$ur_?kw#8yMQtq^A9S+5X`f9wog7 zu%Usp2!E%i`@(y9JaR}SD%$RT+DJm*<{LUBbt(CTP5y=Z_U%*O86~lIZ%%FVQE_qc z&Z+USF^wZfj>LGL7zxZOtbf0L{raAf5ts4!SI@HLc}}HVAAwXOX@Wtpv9;|5jZzMp zHXr&Exci75pIcsMjOn}2`04;6IWZOk$ufE^xB zkKo3xE;il_ex8qX{>Q8bkwmm8a43eT6C4ex6vXq3$a@W$8ufEH>0kA;iwUg24 zD++DgxDoqYlTN4SJfVVsMV%T{-|q}DgW}FzyL!KVT^@Fb;kNMvqbcr6=M5dn+lowy z?FR8dcrV2AeaMDp=rECbATW!lu~{l8$VoiuN&zriy-ihB9I3JGu`L;OD(KfIp@riE@p%3DX?0+7^c?*W{zye9UqT^D*hOESYPXZxwW|Vi)B?dg^}?*T z)7cpK2hlObjdKDS4xK?c^a2R|p48sG+NP$WX#Ds~WHj0vnwl=T+ZZ%B=!ir&@gQ*z zVoDqEC{i#9Ul1C+<%Ie6sOmra5h5ZU4YBJNS(;Qj^M*`JXf*9`@l>?yZXVtaOO(wW z9Je%+O$En~prKUg$esIGgnUgpd8K4#V1opRkXB0vgdzZ7EuaDGY zHoT8s`ub!Q2`!JdgZPo60wu9zOl?hdbs(V|vNAt=c9+xpq8lh{Yi#7degB?D$UDH> zJ(+`%uZJs>nT+Q8d$+oCKMYhR-x^NgM;?Sq-#J`$;XCbD5f-qL?93f3j^gx zLKbkatE=l5^`eV8X;%urNlQs>MusRUDY<7TrIXqGcRbS%TLguK?t`AWz#aLz|H^.container { width:80% !important; }\"))" + ] + }, + { + "cell_type": "markdown", + "id": "cdbd39e6", + "metadata": {}, + "source": [ + "### Import 5G Toolkit Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "079c39a1", + "metadata": {}, + "outputs": [], + "source": [ + "from csiNet import CSINet\n", + "\n", + "import sys\n", + "sys.path.append(\"../../\")\n", + "\n", + "from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize\n", + "from toolkit5G.PhysicalChannels import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy\n", + "from toolkit5G.ChannelModels import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator\n", + "from toolkit5G.Configurations import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration\n", + "from toolkit5G.ChannelProcessing import AddNoise, ApplyChannel\n", + "from toolkit5G.SymbolMapping import Mapper, Demapper" + ] + }, + { + "cell_type": "markdown", + "id": "6637699c", + "metadata": {}, + "source": [ + "## Simulation Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "158a9ec4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Simulation Parameters *************\n", + "\n", + " numBatches: 200\n", + " numRB: 85\n", + " fft Size: 1024\n", + " numBSs: 1\n", + " numUEs: 200\n", + " scs: 30000\n", + " slotNumber: 0\n", + " terrain: CDL-A\n", + "Tx Ant Struture: [ 1 1 32 1 1]\n", + "Rx Ant Struture: [1 1 4 1 1]\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Carrier Frequency\n", + "carrierFrequency = 3.6*10**9 \n", + "delaySpread = 100*(10**-9)\n", + "numBatches = 200 # Number of batches considered for simulation\n", + "scs = 30*10**3 # Subcarrier Spacing for simulation\n", + "numBSs = 1 # Number of BSs considered for simulation\n", + "# Number of UEs considered for simulation\n", + "numUEs = numBatches # For now we are assuming that the numbatches are captured via numUEs\n", + "numRB = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier\n", + "slotNumber = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation\n", + "terrain = \"CDL-A\" # Terrain\n", + "txAntStruture = np.array([1,1,32,1,1]) # Tx Antenna Structure\n", + "rxAntStruture = np.array([1,1,4,1,1]) # Tx Antenna Structure\n", + "Nfft = 1024 # FFTSize\n", + "\n", + "print(\"************ Simulation Parameters *************\")\n", + "print()\n", + "print(\" numBatches: \"+str(numBatches))\n", + "print(\" numRB: \"+str(numRB))\n", + "print(\" fft Size: \"+str(Nfft))\n", + "print(\" numBSs: \"+str(numBSs))\n", + "print(\" numUEs: \"+str(numUEs))\n", + "print(\" scs: \"+str(scs))\n", + "print(\" slotNumber: \"+str(slotNumber))\n", + "print(\" terrain: \"+str(terrain))\n", + "print(\"Tx Ant Struture: \"+str(txAntStruture))\n", + "print(\"Rx Ant Struture: \"+str(rxAntStruture))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "0cf40c81", + "metadata": {}, + "source": [ + "## Wireless Channel Generation: CDL-A" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "74639fd2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Number of BSs: 1\n", + " Shape of Channel: (1, 1, 1, 200, 1024, 4, 32)\n", + "*****************************************************\n", + "\n" + ] + } + ], + "source": [ + "# Antenna Array at UE side\n", + "# assuming antenna element type to be \"OMNI\"\n", + "# with 2 panel and 2 single polarized antenna element per panel.\n", + "ueAntArray = AntennaArrays(antennaType = \"OMNI\", centerFrequency = carrierFrequency, \n", + " arrayStructure = rxAntStruture)\n", + "ueAntArray()\n", + "\n", + "# # Radiation Pattern of Rx antenna element \n", + "# ueAntArray.displayAntennaRadiationPattern()\n", + "\n", + "\n", + "# Antenna Array at BS side\n", + "# assuming antenna element type to be \"3GPP_38.901\", a parabolic antenna \n", + "# with 4 panel and 4 single polarized antenna element per panel.\n", + "bsAntArray = AntennaArrays(antennaType = \"3GPP_38.901\", centerFrequency = carrierFrequency,\n", + " arrayStructure = txAntStruture)\n", + "bsAntArray()\n", + " \n", + "# # Radiation Pattern of Tx antenna element \n", + "# bsAntArray[0].displayAntennaRadiationPattern()\n", + "\n", + "# Layout Parameters\n", + "isd = 100 # inter site distance\n", + "minDist = 10 # min distance between each UE and BS \n", + "ueHt = 1.5 # UE height\n", + "bsHt = 25 # BS height\n", + "bslayoutType = \"Hexagonal\" # BS layout type\n", + "ueDropType = \"Hexagonal\" # UE drop type\n", + "htDist = \"equal\" # UE height distribution\n", + "ueDist = \"equal\" # UE Distribution per site\n", + "nSectorsPerSite = 1 # number of sectors per site\n", + "maxNumFloors = 1 # Max number of floors in an indoor object\n", + "minNumFloors = 1 # Min number of floors in an indoor object\n", + "heightOfRoom = 3 # height of room or ceiling in meters\n", + "indoorUEfract = 0.5 # Fraction of UEs located indoor\n", + "lengthOfIndoorObject = 3 # length of indoor object typically having rectangular geometry \n", + "widthOfIndoorObject = 3 # width of indoor object\n", + "# forceLOS = True # boolen flag if true forces every link to be in LOS state\n", + "forceLOS = False # boolen flag if true forces every link to be in LOS state\n", + "\n", + "# simulation layout object \n", + "simLayoutObj = SimulationLayout(numOfBS = numBSs,\n", + " numOfUE = numUEs,\n", + " heightOfBS = bsHt,\n", + " heightOfUE = ueHt, \n", + " ISD = isd,\n", + " layoutType = bslayoutType,\n", + " ueDropMethod = ueDropType, \n", + " UEdistibution = ueDist,\n", + " UEheightDistribution = htDist,\n", + " numOfSectorsPerSite = nSectorsPerSite,\n", + " ueRoute = None)\n", + "\n", + "simLayoutObj(terrain = terrain, \n", + " carrierFreq = carrierFrequency, \n", + " ueAntennaArray = ueAntArray,\n", + " bsAntennaArray = bsAntArray,\n", + " indoorUEfraction = indoorUEfract,\n", + " lengthOfIndoorObject = lengthOfIndoorObject,\n", + " widthOfIndoorObject = widthOfIndoorObject,\n", + " forceLOS = forceLOS)\n", + "\n", + "# displaying the topology of simulation layout\n", + "fig, ax = simLayoutObj.display2DTopology()\n", + "\n", + "paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)\n", + "\n", + "# paramGen.displayClusters((0,0,0), rayIndex = 0)\n", + "channel = paramGen.getChannel()\n", + "Hf = channel.ofdm(scs, Nfft, normalizeChannel = True)\n", + "\n", + "Nt = bsAntArray.numAntennas # Number of BS Antennas\n", + "Nr = ueAntArray.numAntennas\n", + "\n", + "print(\" Number of BSs: \"+str(numBSs))\n", + "print(\" Shape of Channel: \"+str(Hf.shape))\n", + "print(\"*****************************************************\")\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "id": "1f83b156", + "metadata": {}, + "source": [ + "## Reconstrunction Performance of CSI-Net" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6c22cda8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 0s 7ms/step\n" + ] + } + ], + "source": [ + "numSubcarrier = 32\n", + "codewordSize = 512\n", + "\n", + "H = Hf[0,0,0,...,0,:].transpose(0,2,1)\n", + "csinet = CSINet()\n", + "model = csinet(Nt, numSubcarrier, codewordSize)\n", + "csinet.loadModel()\n", + "Hprep = csinet.preprocess(H)\n", + "\n", + "Hrec = csinet.predict(Hprep)\n", + "\n", + "Hest = csinet.postprocess(Hprep, Nfft)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "adf8a124", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[153 134 179 124 21]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "numChannels = 5\n", + "fig, ax = plt.subplots(2,numChannels, figsize = (12, 5))\n", + "\n", + "idx = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)\n", + "print(idx)\n", + "for n in range(numChannels):\n", + " ax[0,n].imshow(np.abs(Hprep[idx[n],0])**2 + np.abs(Hprep[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d5881756", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NMSE: 0.20250736648608653\n" + ] + } + ], + "source": [ + "print(\"NMSE: \"+str(np.sqrt(np.mean(np.abs(Hest-H)**2/(np.abs(H))**2))))" + ] + }, + { + "cell_type": "markdown", + "id": "49e267dc", + "metadata": {}, + "source": [ + "## PDSCH Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "29e65b83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ PDSCH Parameters *************\n", + "\n", + " pdschMappingType: PDSCH-mapping-type-A\n", + " startSymbol: 2\n", + " numSymbols: 12\n", + " betaDMRS: 1\n", + " rank: 1\n", + " configurationType: Configuration-type-1\n", + " maxLength: len1\n", + " dmrsTypeAPosition: pos2\n", + " dmrsAdditionalPosition: pos0\n", + " Duration, ld: 12\n", + " Start symbol, l0: 0\n", + " Start symbol-1, l1: 11\n", + " num of Layers: 1\n", + "\n", + "********************************************\n", + "********************************************\n", + " tbsize-1: 5768\n", + "\n", + " numTBs: 1\n", + " numCBs: 2\n", + " numLayers: 1 | LayerperTB: [1 0]\n", + " numRB: 85\n", + " coderate: 0.2451171875\n", + " modOrder: 2\n", + "additionalOverhead: 0\n", + "numberTargetBits: 23460\n", + "********************************************\n" + ] + } + ], + "source": [ + "########################################## PDSCH Lower Physical Layer Parameters #########################################\n", + "pdschLowerPhyConfig = PDSCHLowerPhyConfiguration(rank = 1, startSymbol=2, numSymbols=12, pdschMappingType = \"PDSCH-mapping-type-A\", \n", + " maxLength = \"len1\", dmrsAdditionalPosition = \"pos0\", l0 = 0,\n", + " configurationType = \"Configuration-type-1\")\n", + "pdschMappingType = pdschLowerPhyConfig.pdschMappingType # \"PDSCH mapping type A\" or \"PDSCH mapping type B\"\n", + "maxLength = pdschLowerPhyConfig.maxLength\n", + "startSymbol = pdschLowerPhyConfig.startSymbol\n", + "numSymbols = pdschLowerPhyConfig.numSymbols\n", + "betaDMRS = pdschLowerPhyConfig.betaDMRS\n", + "configurationType = pdschLowerPhyConfig.configurationType # \"Configuration-type-1\" or \"Configuration-type-2\"\n", + "dmrsTypeAPosition = pdschLowerPhyConfig.dmrsTypeAPosition # \"pos2\" or \"pos3\"\n", + "dmrsAdditionalPosition = pdschLowerPhyConfig.dmrsAdditionalPosition # \"pos2\" or \"pos3\"\n", + "ld = pdschLowerPhyConfig.ld\n", + "l0 = pdschLowerPhyConfig.l0\n", + "l1 = pdschLowerPhyConfig.l1\n", + "rank = pdschLowerPhyConfig.rank\n", + "scramblingID = pdschLowerPhyConfig.scramblingID\n", + "nSCID = pdschLowerPhyConfig.nSCID\n", + "\n", + "mcsIndex = 3\n", + "mcsTable = \"pdschTable1\"\n", + "\n", + "########################################## PDSCH Parameters #########################################\n", + "pdschUpperPhyConfig = PDSCHUpperPhyConfiguration(pdschMappingType = pdschMappingType, configurationType = configurationType, \n", + " dmrsTypeAPosition = dmrsTypeAPosition, maxLength = maxLength, mcsIndex = mcsIndex,\n", + " mcsTable = mcsTable, dmrsAdditionalPosition = dmrsAdditionalPosition, l0 = l0, \n", + " ld = ld, l1 = l1, startSymbol = startSymbol, numSymbols = numSymbols, rank = rank, \n", + " numRB = numRB)\n", + "\n", + "numTBs = pdschUpperPhyConfig.numTBs\n", + "numRB = pdschUpperPhyConfig.numRB\n", + "tbLen1 = pdschUpperPhyConfig.tbLen1\n", + "\n", + "codeRate = pdschUpperPhyConfig.codeRate\n", + "modOrder = pdschUpperPhyConfig.modOrder\n", + "mcsIndex = pdschUpperPhyConfig.mcsIndex\n", + "mcsTable = pdschUpperPhyConfig.mcsTable\n", + "numlayers = pdschUpperPhyConfig.numlayers\n", + "scalingField = pdschUpperPhyConfig.scalingField\n", + "additionalOverhead = pdschUpperPhyConfig.additionalOverhead\n", + "dmrsREs = pdschUpperPhyConfig.dmrsREs\n", + "additionalOverhead = pdschUpperPhyConfig.additionalOverhead\n", + "\n", + "numTargetBits1 = pdschUpperPhyConfig.numTargetBits1\n", + "if(numTBs == 2):\n", + " numTargetBits1 = pdschUpperPhyConfig.numTargetBits1\n", + " numTargetBits2 = pdschUpperPhyConfig.numTargetBits2\n", + " tbLen2 = pdschUpperPhyConfig.tbLen2\n", + "\n", + "numTargetBits = pdschUpperPhyConfig.numTargetBits" + ] + }, + { + "cell_type": "markdown", + "id": "029b60e8", + "metadata": {}, + "source": [ + "## PDSCH: Transmitter" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "abb12e69", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(
    ,\n", + " )" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGwCAYAAABIC3rIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACGnklEQVR4nO3deXxU5dk+8OvMmSUrYU+IAoIbiwsqsoitWimI4kqrVNoiuP0QFcTXl/IqKqAirrgjLmCtFm0rtvK+KohbVUQEERcEXCoqBEQgIevMnHl+f8xiljmTyZx7Zi6S5/p8aGpycvLNZHJ4OM89920opRR0dHR0dHR0dNpwXNkG6Ojo6Ojo6OhkO3pBpKOjo6Ojo9PmoxdEOjo6Ojo6Om0+ekGko6Ojo6Oj0+ajF0Q6Ojo6Ojo6bT56QaSjo6Ojo6PT5qMXRDo6Ojo6OjptPu5sA/aHhEIhbNu2DYWFhTAMI9scHR0dHR0dnSSilMK+fftQWloKlyvxPSC9IEoi27ZtQ/fu3bPN0NHR0dHR0Ukh3333HQ488MCEx+gFURIpLCwEEH5A27Vrl/J5KioqAMDROaK5/PKn8Oij4x2dQ8pzyak34O7h+Y7OUe3zAQDy6uocnQcArn2typGHycLmYbJIepgsbB4mi4SHycLmYbJIefbV1aH/vffG/h5PFL0gSiLRbbJ27do5Wjz4Ij/c6Fsn8XpzHS9kpDwetw/tcnIcnSPHHX4qegW2JD3uoCMPk4XNw2SR9DBZ2DxMFgkPk4XNw2SR9iRT7qIXRBlMMBgEILMgkoiU541vg+j76F5H5+jcOfyLs2tXraPzbLy8vaPPBwCrmX3mTIfJw2QBuDxMFoDLoy32YfIwWYDMe4xsDnd9++23ceedd2Lt2rXYvn07li5dinPOOSf2caUUbrrpJjz22GPYu3cvhg0bhkceeQSHHnpo7Jjdu3fjqquuwksvvQSXy4UxY8bgvvvuQ0FBQeyYDRs2YPLkyVizZg26dOmCq666Cv/93/+dtLOiogJFRUUYO/Z+eL25KX+/lmUBAEzTTPkc0Xz00VYcc0wPR+eQ8qx753Mc1dXZOSwj/MQ3VcjReQBgw07LkYfJwuZhskh6mCxsHiaLhIfJwuZhskh5AsE6/O3DB1BeXt7srkpW7xBVVVXh6KOPxsSJE3Heeec1+fgdd9yB+++/H0899RR69eqFmTNnYuTIkfj888+RE7kVN27cOGzfvh0rVqxAIBDAhAkTcNlll+HZZ58FEF7MjBgxAsOHD8eCBQvwySefYOLEiWjfvj0uu+yyFnkffXS8o22qmpoaAEBubuqLqmjGj38cTz11iaNzSHlKS6/BG98GHZ2jffvwXaq9e52dZ+Pl7XHFK5V4+LSC5g+2Sa3HAwDICQQcWQA4trB5mCySHiYLm4fJIuFhsrB5mCxSnopaN/72YXLHZnVBNGrUKIwaNSrux5RSmD9/Pm644QacffbZAIA///nPKC4uxosvvoixY8di48aNeOWVV7BmzRoMHDgQAPDAAw/g9NNPx1133YXS0lI888wz8Pv9ePLJJ+H1etG/f3+sX78e99xzj+2CqK6uDnX1iriixcd1dXWoqKiAz+dDXV0dfD4fAoFA7A6LZVnweDyxjzV+u2/fPrhcLiiloJSCaZoIBALwer1NjvX7/fB4PLAsC4ZhwDAMBIPB2LFerxGzxDu2OUsgEEBtbXh7KhQKwe12JzzWNE1bd36+B0VFXpSX+1FQ4EFNTRAejwtKAZYVQk6OicrKYOyY6NvCQg+qqgLw+Uy0b++DUoDH40JNTRDt2jU8tqjIi4oKP3Jz3QgEQjAMwDQN1NVZyM/3YN++AIqKvPCbJtp1zoPfNBF0u2FaFpRhQBkGXKEQgqYJTzAIv8cDbyAQextwu+G2LIRcLtR6PDCUQsjlgtvmWI9lwXK5YERusIYMA27LanJszGKacEWOVYYBMxRCwMYSdYcit4vr3G5YLhdcoVBCt6EUDKVgmaat25dXhxqvt4k74PHAU+/YmMU0YSoFFXHHvpc4lsbu5h7vnPyfLQbCt8fjuj0eeIJBBF2u2GMYMgy4QyFU5uSEP2aaCd3NPd5RS9Sd6DGs/7M3AFiRx7CxJZE74HbHf7zdbpihEPLa+VDj9Sb9nI3ntgwDAbcbrujXs3HHfbwjj6FLKeQWelHj9Sb1nLX7XWtsSeRu7netoEMO/KbZ5Nj6P/tEv2v1LaleI6K/a3aWllwjos+bkGGkfI2Iur25tajMyUn5GlHl88EdeTxSvUZE3fEsLb1GBFyu2LGpXiOqW1DHRFtD9M0336CsrAzDhw+Pva+oqAiDBw/GqlWrMHbsWKxatQrt27ePLYYAYPjw4XC5XFi9ejXOPfdcrFq1Cr/85S/hjVzsAGDkyJGYN28e9uzZgw4dOjT52nPnzsWsWbPEvye32y2yXSYVj8cDiR3TE7ubuGVkYVIXabuLRtDlApSCqXxxLxrJXuwg8C8b07JiX4Mh7sjWJkPMUAiKqBeX27LCF3CC2geTyAKEH5sQyc9KW+wTfd4wxAyFYJJYAMAdCiGUwWsx7YKorKwMAFBcXNzg/cXFxbGPlZWVoWvXrg0+7na70bFjxwbH9OrVq8k5oh+LtyCaMWMGpk2bFvvviooKdO/eHT6fL7ZllugVWo0/Fn0bveuUl5cXOza69Wf3OfESviukmljsjrV7W1FRAcMwkJ+f3+yxjVPf/eoXtXj1izJbQzIpLQ0btm2rcnSejZe3R8WuanitAnjj/GL7IoXk0Y81fgsAVk4OYBjIi9xBS3Rs4zQ+JpHFm4QFACpzcuAOheC1rOQsCc5bVx1Art/frFvKkujxrq1qoaXpdwq/2w3lcqHA5mfV4LwtsST5s2lgCYXiW+Ic29zPvrqiDrn+8HZBMs/ZeO7KnBx4Gv2s4qW5n33NPn/ssUn2OdvY3aylBeet3FMLr+VO+jnb2N2cpSWPd3OWeGl8TPR5k1/b9AUlLX28/TXBpH4X7B5vfygEuFzIjWdp4eOdrCXR412ZkwMXmm6ZteQakRfne7EL7YIom/H5fHEXAZdf/pSjoupQKFwY1ly3zGTy0UdbMX78447OIeXplGs4Lp4LGeEL7uE9nT0lr3ilEht2WrjilUoHlvCiTOIukVMLm4fJIulhsrB5mCwSHiYLm4fJIuUJBJPvYUS7ICopKQEA7NixA926dYu9f8eOHRgwYEDsmJ07dzb4vGAwiN27d8c+v6SkBDt27GhwTPS/o8ckG6dF1ZKNGSWKqqU844Ze57h4rjJyx6mgBat5uzgt5mOysHmYLJIeJgubh8ki4WGysHmYLFKe/aaoOlF69eqFkpISrFy5MrYAqqiowOrVqzFp0iQAwNChQ7F3716sXbsWxx13HADg9ddfRygUwuDBg2PHXH/99QgEAvBEKtZXrFiBww8/PO52WTrD0n8oGimPRB+i/Pzwz6aqylkNkEQfIq9AHZJkmDxMFoDLw2QBuDzaYh8mD5MFyLwnqwuiyspKfPnll7H//uabb7B+/Xp07NgRPXr0wNSpU3HLLbfg0EMPjb3svrS0NNarqG/fvjjttNNw6aWXYsGCBQgEArjyyisxduxYlJaWAgAuvPBCzJo1CxdffDGmT5+OTz/9FPfddx/uvffejH+/0RoiloWRlOeUnm6KfwlIxR9ZOCeqA8hkmDxMFoDLw2QBuDzaYh8mD5MFyLwnq40Z33zzTZxyyilN3j9+/HgsXrw41phx4cKF2Lt3L0488UQ8/PDDOOyww2LH7t69G1deeWWDxoz333+/bWPGzp0746qrrsL06dOTdko1ZpSuIXLamFHKs2LFZ44+Hwi/hB4ALMvZ0/GUnm7HDcGir0CR2kd3Xl/F42GySHqYLGweJouEh8nC5mGySHla0pgxqwui/SXRBVEyD2iiVFaGC8zqL9ZSjUQNkZSntPQaR58PAF26hBeaP/5Y4+g8Eo0ZqyMtGvLivAKqpZHYR2fyMFkkPUwWNg+TRcLDZGHzMFmkPBW1tehx++38narbWph6EAFyHokts587kmZ/O5GpBxHA5WGyAFweJgvA5dEW+zB5mCxA5j16QZTBsN2Mk/JIFFV36BBeCO3Zk/xLJONFoqhaR0dHR6ftRS+IMpjWuiCSuEMUHZsQr1FfpsPUiRng8jBZAC4PkwXg8miLfZg8TBYg8x5dQ5REdFF14khMuw9Fphq7CKYsM1nYPEwWSQ+Thc3DZJHwMFnYPEwWKY8uqhaOVFF1a23MKFFUXVISHmdSVlbt6DwSRdVVkTYE+XXOtu8AmcJCJg+TRdLDZGHzMFkkPEwWNg+TRcqji6pJw9J/KBopj8SWmT9S4O214k2jyWw8kdk6LGHyMFkALg+TBeDyaIt9mDxMFiDzHr0gymBaa2NGiaJqyeGuTtPWm5MlCpMF4PIwWQAuj7bYh8nDZAHaWGPG/SW6hihxZGqIeBqCMVnYPEwWSQ+Thc3DZJHwMFnYPEwWKU9Laoj0HaIWRA93jR893DV9FjYPk0XSw2Rh8zBZJDxMFjYPk0XK0yqGu7bGsGyVRaOHu8ZPWx9wmChMFoDLw2QBuDzaYh8mD5MFaGPDXdta/JEeOywLIymPRFF1dcSQJ/DqBqcJusO/Fiz76EweJgvA5WGyAFwebbEPk4fJAmTeo2uIkohcDVH4h+pyOR+ZIVNDJOORGO7qdof3ioNBhuGura8Xh5SHySLpYbKweZgsEh4mC5uHySLl0TVEaYrTGqLq6nCPnby8PMcWiRoiKY9EH6J27cJ3iHbvdrZ3/fBpBY73riW7ZkvsozN5mCySHiYLm4fJIuFhsrB5mCxSHl1DRBq2m3GcoztyJEg6Ojo6Ojotil4QZTCtddq9RFF1u3bhBVFFhbN/mUgUVbtCzm8XS4bJw2QBuDxMFoDLoy32YfIwWYDMe/SCKIMJRCrmc3I47oJIeSTuEEm2jHeaYGSh6CPp2srkYbIAXB4mC8Dl0Rb7MHmYLEDmPbqoOonoxoyJoxszps/C5mGySHqYLGweJouEh8nC5mGySHn0cFfh6OGuiSNRVC05ukM3J0ufh8ki6WGysHmYLBIeJgubh8ki5dHDXUnD0n8oGs7hrh4JkqO09eZkicJkAbg8TBaAy6Mt9mHyMFkA3ZixVUcPd7WPHu5qHyYPkwXg8jBZAC6PttiHycNkAfRwV8roGqLEkWjMaJrhvWLLYmjM2Pr20aU8TBZJD5OFzcNkkfAwWdg8TBYpj27MmKY4bcy4b98+AEBhYaFji0QNkZRHYrir5KvMnO5dM1nYPEwWSQ+Thc3DZJHwMFnYPEwWKY9uzEgajyf79TH1I+VpbX2I3CS3i6Nh8jBZAC4PkwXg8miLfZg8TBYg8x69IMpgLLInm5RHtlO185bxThMS2NKUDJOHyQJweZgsAJdHW+zD5GGyAJn36BqiJCJVQxRdgEh0iJaoIZLySPQhsiJD/EyCoYJMFjYPk0XSw2Rh8zBZJDxMFjYPk0XKo/sQCUeqD1FNTQ0AIDc39UVVNBI1RFIeiT5ERUXhO0Tl5c63zJzuXde5wzdOJbqjSuyjM3mYLJIeJgubh8ki4WGysHmYLFIe3YeINHrLzD7VkeK5PILRHVb0jhlJ+3omD5MF4PIwWQAuj7bYh8nDZAEy79ELogxGF1XbJz8/bKmqctaIS6SomuRiEA2Th8kCcHmYLACXR1vsw+RhsgCZ9+gFUQbTWhszSiS6ZeZ0QSSRtt6cLFGYLACXh8kCcHm0xT5MHiYLoBszUkY3ZkwcPdw1fRY2D5NF0sNkYfMwWSQ8TBY2D5NFyqOLqoWjh7smjh7uah+WAYdSHiaLpIfJwuZhskh4mCxsHiaLlEcXVZOGYWuqfvRw1/hp6wMOE4XJAnB5mCwAl0db7MPkYbIAerhrqw5TzQ7A5QlEXl7JsHfNZAG4PEwWgMvDZAG4PNpiHyYPkwXIvEdvmSURXUOUOK1vuGv48XCRNCdj8jBZJD1MFjYPk0XCw2Rh8zBZpDx6uGua4nS4a1VVuD4mPz/fsUWihkjKIzHcVXJ0h9O9ayYLm4fJIulhsrB5mCwSHiYLm4fJIuXRw11JI3FnSDJSHok+RB06hLft9uxx1phRog+RQXbTlMnDZAG4PEwWgMujLfZh8jBZgMx79IJIhyJkv4c6Ojo6Om0suoYoicgNdw133TRN5+tQmeGuMh6R4a6Ru1VmKPt710wWNg+TRdLDZGHzMFkkPEwWNg+TRcqj+xAJR6oPkeSruiRqiKQ8En2ICgrCL7evrHQ+usPp3vXPLQCcv7JBYh+dycNkkfQwWdg8TBYJD5OFzcNkkfLoPkSkYXqZOyDnkehDVBVpwJUv0BDMaQJk7euZPEwWgMvDZAG4PNpiHyYPkwXIvEcviDIYloVQNEweD1FDMCYLwOVhsgBcHiYLwOXRFvsweZgsQOY9ekGUwbTWO0QSrzKTHN3hNG19wGGiMFkALg+TBeDyaIt9mDxMFkAPd6WMbsyYOHq4a/osbB4mi6SHycLmYbJIeJgsbB4mi5RHF1ULRw93TRw93NU+LAMOpTxMFkkPk4XNw2SR8DBZ2DxMFimPLqomDctWWTR6uGv8tPUBh4nCZAG4PEwWgMujLfZh8jBZgMx7uFont/IEAgEEiJ5wTJ6gaSJoOru9KhUmC8DlYbIAXB4mC8Dl0Rb7MHmYLEDmPXrLLInI1RCFC8NcLuc/YJkaIhmPxHBXtzu8VxwM6uGuzB4mi6SHycLmYbJIeJgsbB4mi5RHD3dNU5wOd62urgYA5OXlObZI1BBJeSSGu9ZGXk2QI3DHyuneNZOFzcNkkfQwWdg8TBYJD5OFzcNkkfLo4a6kYbsZJ+WReNl9587h4rldu5wV80m87F5FXtnAEiYPkwXg8jBZAC6PttiHycNkATLv0QuiDMYk2psFuDx1dRx9LwCZOT6SYfIwWQAuD5MF4PJoi32YPEwWIPMeXUOURKRqiILB8DBVt5tjuKuUR6IPUTDSC8lNMFSQycLmYbJIepgsbB4mi4SHycLmYbJIeXQfIuHo4a6JI9GHKD8/vFdcVaWHuzJ7mCySHiYLm4fJIuFhsrB5mCxSHt2HiDStdXSHRB8iyYZgTtPW29cnCpMF4PIwWQAuj7bYh8nDZAEy79ELogyGZSEUDZOHqSEYkwXg8jBZAC4PkwXg8miLfZg8TBYg8x69IMpgWusdIj3cNb1h8jBZAC4PkwXg8miLfZg8TBZAD3eljB7umjh6uGv6LGweJoukh8nC5mGySHiYLGweJouURxdVC0eqqHrfvn0AgMLCQscmiaJqKY9EUXVxcXihuWNHjaPzSBRVV0fumOVF7qA5iURhIZOHySLpYbKweZgsEh4mC5uHySLl0UXVpJF4ub1kmDy1tRy3aAHAJLldHA2Th8kCcHmYLACXR1vsw+RhsgCZ9/D8jdgGwnYzTsoj8SqzGq8XAJDr90uQHCUksKUpGSYPkwXg8jBZAC6PttiHycNkATLv0VtmSUSqhsiKrHYlOkRL1BBJeSSGu3o84Sd+IOCsIZjEcFcr8kso0SVVYh+dycNkkfQwWdg8TBYJD5OFzcNkkfLo4a5pitPhrrWRHjs5kZ47TiJRQyTlkRjuWhfZvvNFumc7idO9ayYLm4fJIulhsrB5mCwSHiYLm4fJIuVpyXBXrvtjjWJZFmbOnIlevXohNzcXBx98MObMmdNgq0cphRtvvBHdunVDbm4uhg8fji1btjQ4z+7duzFu3Di0a9cO7du3x8UXX4zKyspMfzsIBAIIEPV5YPIETRNBktlqTBaAy8NkAbg8TBaAy6Mt9mHyMFmAzHuo7xDNmzcPjzzyCJ566in0798fH374ISZMmICioiJcffXVAIA77rgD999/P5566in06tULM2fOxMiRI/H555/H7nyMGzcO27dvx4oVKxAIBDBhwgRcdtllePbZZzP6/XgjdTIskfJI9CGSHN3hNB6Bfx1JhsnDZAG4PEwWgMujLfZh8jBZgMx7qGuIRo8ejeLiYjzxxBOx940ZMwa5ubn4y1/+AqUUSktLce211+K//uu/AADl5eUoLi7G4sWLMXbsWGzcuBH9+vXDmjVrMHDgQADAK6+8gtNPPx3ff/89SktLm3Xo4a6JIzPcNfz57pDzVxU4H3DIY2HzMFkkPUwWNg+TRcLDZGHzMFmkPK2mhuiEE07AwoULsXnzZhx22GH4+OOP8c477+Cee+4BAHzzzTcoKyvD8OHDY59TVFSEwYMHY9WqVRg7dixWrVqF9u3bxxZDADB8+HC4XC6sXr0a5557bpOvW1dXF+viDIQXRABw//1j4fP54PP5UFdXB5/Ph0AgECtKtiwLHo8n9rHGb6uqqmCaJjweD5RSME0TgUAAXq+3ybF+vx8ejweWZcEwDBiGgWAwGDv22mv/hrvv/q3tsc1ZAoEALMuCUgoejwdutzvhsaZpQikV133ccbdgU8CL8nI/Cgo8qKkJwuNxQSnAskLIyTFRWRlEUVH4mOjbwkIPqqoC8PlM+HwmlAICARdqaoJo167hsUVFXlRU+JGb60YgEIJhAKZpoK7OQn6+B/v2BVBU5MXL5+TgxtUBzB7sQdDthmlZUIYBZRhwhUIImiY8wSD8Hg+8gUDsbcDthtuyEHK5EHC54FIKLgBum2M9lgXL5YIR+fdEyDDgtqwmx8YsphlrLqYMA2YohICNJeqOvsLCMgwETRN5dXUJ3YZSMJSCZZq27htWVOC24YVN3AGPB556x8YspglTKaiIO5Glsbu5x3vmaxW49dSwxUC4gDKu2+OBJxhEMPJziblDIVR7vfAEg1AuV0J3c4/3DRFL1J3oMaz/szciPx+3ZaHK54O3niWRO+B2x3+83W6YoRCuf6sac07OT/o5G89thELwu93Ir6tL6I77eEceQ5dSuP7NKtxySkFSz1m737XGlkTu5n7XbnynBrec4GtybP2ffaLftfqWVK8R0d+1me/WxrW05BoRfd4YQMrXiKj7+uXluGVk+5SvEdU+H9zBIEwg5WtE1B3P0tJrhIp8fa9lpXyN2B0MJl1DRL0g+tOf/oSKigr06dMHpmnCsizceuutGDduHACgrKwMAFBcXNzg84qLi2MfKysrQ9euXRt83O12o2PHjrFjGmfu3LmYNWuW9LcDv98fWxAxJLroY/AUFnqhlMLu3c4bgjlNwO2GASCHpL7K73bDMk1AoFma0wTc7vCePoEFCHuUYcBD0D8l6HYDJBYgPPaA5WelLfaJPm98BNeb6O+TSWABwp6Qy6WHuwLA888/j2eeeQbPPvss+vfvj/Xr12Pq1KkoLS3F+PHj0/Z1Z8yYgWnTpsX+u6KiAt27d4fP54vdcovO/4o3B6zxx6JvO3To0ORzonVOdp8TL+G7QqqJxe5Yu7fRhVCiY+zOX989qLPCw6d5AEQXVvFqk6Ln8DR6Gz7Wb4b/xeC1fAmOTbRwi3xNy0LFrmp4rYK4v0TRVytEP9b4LfBzMzC7YxL9cjY+JpHFm4SlsScpS4Lz1lUH4vZ6SvZ7bakl0eNdW9VCS9PvFEVVVUm5gcSPdxNLkj+bpCxxjm3uZ19dUYdcf+T3syWWesf6I3eu6/+s4qW5n33NPn/ssUn2OdvY3aylBeet3FMLr+Vu0e+ntwWWljzezVnipfExjZ83du7mzu8LBuGvCaIg8urhVK4RCS0tfLyTtSR6vD2NPtaspel3iryIIZlQL4iuu+46/OlPf8LYsWMBAEceeSS+/fZbzJ07F+PHj0dJSQkAYMeOHejWrVvs83bs2IEBAwYAAEpKSrBz584G5w0Gg9i9e3fs8xsnui0mHX/kosIy3FXKI1FUXVKSBwAoK6t2dB6JoupApKaKZcAhk4fJAnB5mCwAl0db7MPkYbIAmfdQL4iqq6ubDB41TTM2lLRXr14oKSnBypUrYwugiooKrF69GpMmTQIADB06FHv37sXatWtx3HHHAQBef/11hEIhDB48uEWeyy9/imq46/jxjzs6h5SnU64hMMQv/C+Bvj2dPSWveKUSG3ZauOKV1NsqhIzwosylZJqTObGweZgskh4mC5uHySLhYbKweZgsUp5AMPmtUeoF0Zlnnolbb70VPXr0QP/+/fHRRx/hnnvuwcSJEwEAhmFg6tSpuOWWW3DooYfGXnZfWlqKc845BwDQt29fnHbaabj00kuxYMECBAIBXHnllRg7dmxSrzCrH6eNGasityPz8/NTPkc0Eo0ZpTwSjRklR3c4bQjGZGHzMFkkPUwWNg+TRcLDZGHzMFmkPC1pzEi9IHrggQcwc+ZMXHHFFdi5cydKS0tx+eWX48Ybb4wd89///d+oqqrCZZddhr179+LEE0/EK6+80qD78jPPPIMrr7wSp556KlwuF8aMGYP7778/49+PYRgZ/5qJIuWR2DLr2DG8bee0qFpiyyz66gqWMHmYLACXh8kCcHm0xT5MHiYLkHkP9YKosLAQ8+fPx/z5822PMQwDs2fPxuzZs22P6dixY8abMMZLa10QSQx3rYsWeBO8uoHrp8TlYbIAXB4mC8Dl0Rb7MHmYLEDmPdSNGVkiN9w1XCdjmhyNGaU8EsNdvd5wHZPfr4e7MnuYLJIeJgubh8ki4WGysHmYLFKeVtOYkS1Oa4iifX8kXmUmUUMk5SktvcbR5wOAxxP+xXG6IHr4tALHe9f1X5brNBL76EweJoukh8nC5mGySHiYLGweJouUp9XUELW2SC6IJCLlkdgyq4zUfBW0oGdEuuKPbN+xvPSUycNkAbg8TBaAy6Mt9mHyMFmAzHv0giiDYVkIRSPlaW3DXb0EdUz1w+RhsgBcHiYLwOXRFvsweZgsQOY9uoYoiejhromjh7umz8LmYbJIepgsbB4mi4SHycLmYbJIeXQNUZqia4jiR6IPEdPeNZOFzcNkkfQwWdg8TBYJD5OFzcNkkfLoGiLStNYaIokts27dwqM7tm8nGN1Bto/O5GGyAFweJgvA5dEW+zB5mCxA5j16QZTBsCyEopHySBRV+6Mza4LxxvNlNtGBgixh8jBZAC4PkwXg8miLfZg8TBYg8x69IMpgApECMZaFkZRH4g5Rly7h2qwff6xxdB6JO0TBSO+L7C/NwmHyMFkALg+TBeDyaIt9mDxMFiDzHl1UnUSkiqpDkcIwl8tZoRkgU1Qt5ZEoqraMSAMuoaGCjpqTEVnYPEwWSQ+Thc3DZJHwMFnYPEwWKY8uqk5TnBZV19SE737k5qa+qIpGoqhayiNRVF0b2SvOEXiZpdNiPiYLm4fJIulhsrB5mCwSHiYLm4fJIuXRRdWksUgK1aKR8rS2LbMQ2cw5Jg+TBeDyMFkALo+22IfJw2QBMu/RC6IMxhNZ7bJEyiNbVJ39+iq3wBwfyTB5mCwAl4fJAnB5tMU+TB4mC5B5j64hSiK6MWPiSAx39fnCe811dc7uWkkMd22NzcmkPEwWSQ+Thc3DZJHwMFnYPEwWKY+uIUpTdGPG+JEY7up2uyImZ7+Ierhrej1MFkkPk4XNw2SR8DBZ2DxMFimPriEiTWttzKiHu6Y3TB4mC8DlYbIAXB5tsQ+Th8kC6OGurTosC6Fo9HDX+GnrAw4ThckCcHmYLACXR1vsw+RhsgB6uCtldA1R4ujhrumzsHmYLJIeJgubh8ki4WGysHmYLFIeXUOUpugaovjRw13TZ2HzMFkkPUwWNg+TRcLDZGHzMFmkPLqGiDR6dId9mPoQBQUvChJh8jBZAC4PkwXg8miLfZg8TBYg8x69IMpgTNP5yA7JSHkkiqrrIsVzvkD2F4sm2S4yk4fJAnB5mCwAl0db7MPkYbIAmffoBVEGw1auJeWRuEPUoUN4IbRnT52j80jcIeL6KXF5mCwAl4fJAnB5tMU+TB4mC5B5jy6qTiJSRdXRURkSd2YkiqqlPBKNGb3ecB8iv99ZZ1KJxoxWZMKyKdAlVWTAIZGHySLpYbKweZgsEh4mC5uHySLl0UXVaYrTouraSI+dnEjPHSeRKKqW8ogUVcdGdwQdnQcQKCwksrB5mCySHiYLm4fJIuFhsrB5mCxSHl1UTZpoEbPEgkgiUh6JLbOSkjwAQFlZtaPzSGyZBaKFfAIXBYkweZgsAJeHyQJwebTFPkweJguQeY9eEGUwXq8324QGkfKIDHeNvZog+4+Rh+RiEA2Th8kCcHmYLACXR1vsw+RhsgCZ9+gaoiSiGzMmjm7MmD4Lm4fJIulhsrB5mCwSHiYLm4fJIuVpSQ2RXhAlkeiCKJkHNFFaa2NGieGukqM7dHOy9HmYLJIeJgubh8ki4WGysHmYLFKeitpa9Lj9dl1UzRY93NU+erirfZg8TBaAy8NkAbg82mIfJg+TBdDDXVt1WBZC0ejhrvHT1gccJgqTBeDyMFkALo+22IfJw2QBMu9xZfSrtfH4/X74/f5sM2Jh8hQUuFFQwLE+D7rdCArUeUmFycNkAbg8TBaAy6Mt9mHyMFmAzHt0DVESkSqqDkWaS7lcztehEkXVUh6JouqQETa4VPYbgjFZ2DxMFkkPk4XNw2SR8DBZ2DxMFimPLqoWjlRRdXV1uMdOXl6eY5NEUbWUR6KoumPHcA3R7t3OaogkiqprIu0IcgXunkkUFjJ5mCySHiYLm4fJIuFhsrB5mCxSHl1UrZPRSBRV//zE52haqaOjo6PTtqIXRBmMxFaZZJg8LoHZOVJhsgBcHiYLwOVhsgBcHm2xD5OHyQJk3qO3zJKIbsyYOHq4q31YBhxKeZgskh4mC5uHySLhYbKweZgsUh493DVNcTrctbU2ZhQZ7krUEIzJwuZhskh6mCxsHiaLhIfJwuZhskh59HBX0rTWxowSfYhKS/MBANu2VTk6j0QforbenCxRmCwAl4fJAnB5tMU+TB4mC6AbM7bqsCyEomHylJdz9EMCdHOyRGGyAFweJgvA5dEW+zB5mCxA5j26hiiJ6BqixNHDXdNnYfMwWSQ9TBY2D5NFwsNkYfMwWaQ8ug+RcPRw18TRw13tw7KPLuVhskh6mCxsHiaLhIfJwuZhskh5dB8i0kTHZLBsVUl5JPoQVUUM+ZFFWjYTiNwxY9lHZ/IwWQAuD5MF4PJoi32YPEwWIPMevSDKYDyRAjGWMHk8JL+AAJcF4PIwWQAuD5MF4PJoi32YPEwWIPMevSDKYCyyJ5uUR+JVZp07hztU79rlfHSH01hEDSsBLg+TBeDyMFkALo+22IfJw2QBMu9JqYboiy++QJ8+feJ+7NVXX8XIkSMdw5giVVQdXYCYprNCM0CmqFrKI1FUbUWG+JkEQwWZLGweJoukh8nC5mGySHiYLGweJouUJ+1F1Xl5ebjzzjsxefLk2Pvq6upw7bXX4vHHH0dtrbN/5bNFqqi6pqYGAJCbm/qiKhqJomopj0RRdVFReJaZ05ffSxRV10W2En0CL/mUKCxk8jBZJD1MFjYPk0XCw2Rh8zBZpDxpL6pevHgxJk2ahP/93//FokWLsH37dlx44YUIhUL497//nRK6LaS1bplJFFVXR4a75glMWXYayzCyTWgQJg+TBeDyMFkALo+22IfJw2QBMu9JaYPu/PPPx8cff4xAIID+/ftj6NChOOmkk7Bu3Tocf/zx0sZWE4/Hw1XITORxWxbcJAtGJgvA5WGyAFweJgvA5dEW+zB5mCxA5j2Oiqr9fj8sy4JlWejWrRtycnKkXJS5/PKnqBozjh//uKNzSHkkiqp9vvBec12dsyd/dLjrFa9UpnwO6eZkTixsHiaLpIfJwuZhskh4mCxsHiaLlCcQTL6VS0p/Ey5ZsgSTJk3CL37xC2zevBnr16/HhAkT8Oqrr+Lpp59G7969UzktffRw1/jRw13TZ2HzMFkkPUwWNg+TRcLDZGHzMFmkPGkf7nrxxRfjrrvuwqRJkwAAv/71r/HJJ5/g8ssvx4ABA1BRUZHKaVt99HBX++jhrvZh8jBZAC4PkwXg8miLfZg8TBZgPxnuum7dOhx++OEN3tehQwc8//zzePrpp0VgrTEsC6FomDx6uKt9mDxMFoDLw2QBuDzaYh8mD5MF2I+GuwaDQbz55pv46quvcOGFF6KwsBDbtm1Du3btUFDg7DYZW/Rw18TRw13TZ2HzMFkkPUwWNg+TRcLDZGHzMFmkPGnvQ/Ttt9/itNNOw9atW1FXV4fNmzejd+/emDJlCurq6rBgwYKU8YzRw10TR6IPUWFh+Nbovn0Ew12j83MiC0YnEdlHJ/IwWSQ9TBY2D5NFwsNkYfMwWaQ8ae9DNGXKFAwcOBAff/wxOnXqFHv/ueeei0svvTSVU7aJBCK3/1i2qqQ8ra0PUTDSLt6bZUc0TB4mC8DlYbIAXB5tsQ+Th8kCZN6T0oLo3//+N9577z14vQ2ZBx10EH744QcRWGuMxMgOyTB5XKnt3KYlTBaAy8NkAbg8TBaAy6Mt9mHyMFmAzHtSWhCFQqG4XY6///57FBYWOkbp7F+ReJVZhw7hu1R79iTfMyJeJF5lpqOjo6PT9pJSDdEFF1yAoqIiLFy4EIWFhdiwYQO6dOmCs88+Gz169MCiRYvSYc1a5Ia7hvdBTZOjqFrKIzLcNXJr1Axlf6ggk4XNw2SR9DBZ2DxMFgkPk4XNw2SR8qS9qPr777/HyJEjoZTCli1bMHDgQGzZsgWdO3fG22+/ja5du6aMZ4wuqk4cXVRtH5bCQikPk0XSw2Rh8zBZJDxMFjYPk0XKk/ai6gMPPBAff/wxlixZgg0bNqCyshIXX3wxxo0bJzLJvbWmtTZmlEhBgcyCSCIBwYuCRJg8TBaAy8NkAbg82mIfJg+TBci8J+W9Erfbjd///veSllYfhoVH/Uh5JF5l9nOL9uy/vsFD1pyMycNkAbg8TBaAy6Mt9mHyMFmAzHuS3jL717/+lfRJzzrrrJRBjNGNGRNnxYrPHH0+ID/cVTcnS4+HySLpYbKweZgsEh4mC5uHySLlSUsNkStS3BT7RMNA4081DAMA4r4CLdX88MMPmD59Ol5++WVUV1fjkEMOwaJFizBw4EAAgFIKN910Ex577DHs3bsXw4YNwyOPPIJDDz00do7du3fjqquuwksvvQSXy4UxY8bgvvvuS7qjtq4hShw93DV9FjYPk0XSw2Rh8zBZJDxMFjYPk0XK05IaIlfCj9ZLKBSK/Vm+fDkGDBiAl19+GXv37sXevXvx8ssv49hjj8Urr7ySMrxx9uzZg2HDhsHj8eDll1/G559/jrvvvhsdOnSIHXPHHXfg/vvvx4IFC7B69Wrk5+dj5MiRqK2tjR0zbtw4fPbZZ1ixYgWWLVuGt99+G5dddpmYM9nU1dXFFiEMYfL4PZ7YIL9sh8kCcHmYLACXh8kCcHm0xT5MHiYLkHlPSnslU6dOxYIFC3DiiSfG3jdy5Ejk5eXhsssuw8aNG0Vw8+bNQ/fu3Ru8jL9Xr16x/6+Uwvz583HDDTfg7LPPBgD8+c9/RnFxMV588UWMHTsWGzduxCuvvII1a9bE7io98MADOP3003HXXXehtLS0yddtvFCoqKiIvb+iogI+nw91dXXw+XwIBAKxBoeWZcHj8cQ+1vhtMBiEaZqorq6GUgqmaSIQCMDr9TY51u/3w+PxwLIsGIYBwzAQDAZjx3q9RswS79jmLIFAAEopKKVQVVUFt9ud8FjTNGPHN3Z/sMvAqS8FUF7uR0GBBzU1QXg8LigFWFYIOTkmKiuDKCryorzcH3tbWOhBVVUAPp8Jny8ApYBAIISamiDatWt4bFGRFxUVfuTmuhEIhGAYgGkaqKuzkJ/vwb59ARQVefHyOTlo1zkPftNE0O2GaVlQhgFlGHCFQgiaJjzBIPweD7yBQOxtwO2G27IQcrkQQrghWLXPB7fNsR7LguVywYjcJQ0ZBtyW1eTYmMU0Y03GlGHADIUQsLFE3aHoXVmlEDRN+E0zodtQCoZSsEzT1u3Lq0ON19vEHfB44Kl3bMximjCVgoq4E1kau5t7vHPyf7YYCL/ENq7b44EnGETQ5Yo9hiHDgDsUQtDlgicYRGVOTkJ3c4931BJ1J3oM6//sDQBW9DF0ueCtZ0nkDrjd8R9vtxtmKIS8dj7UeL1JP2fjuY1QCH63G37TTOiO+3hHHkOXUsgt9KLG603qOWv3u9bYksjd3O9aQYecuM+/+j/7RL9r9S2pXiOiv2t2lpZcI6LPm2qvN+VrRNTtza1t8rvQkmtEMPI76OQaEXXHs7T0GgGlEDIM1Ho8KV8jqnNy4qwu4iell93n5uZizZo1OOKIIxq8f8OGDRg8eDBqampaesq46devH0aOHInvv/8eb731Fg444ABcccUVsfEgX3/9NQ4++GB89NFHGDBgQOzzTjrpJAwYMAD33XcfnnzySVx77bXYs2dP7OPBYBA5OTn429/+hnPPPbfJ17355psxa9asJu8///z5cLt9cLlcCIVCcLlcUCoU2ypUSsEwfv5Y47fBYACAEVtAGYZhe+zP51eRY4FQSMU+9tln29C/f6ntsc1ZlArBssK9HUzTTGiJfo/RZ0rjYz9dswV9unjgUiGEDAMuBSgjcmzk/xtKIWS4Ise4mhwbMiK/ICpkc2z4bfgv5cgPxAifP2SEFzDRYzbtUTi8Q/gCZ6jI4TbHpmap9z02sDQ9tr6lOXf979Go9xiGDBeUgfBFrRmLgcSP9xc/BtG3i7tZdxNL5NhQ5C+OeJbG7uYe700/BtEnYknsDl/kmj7eQNCMXuSR0N3c4/1F1NKC52xjd9B0w1ChRpb47vB57B/vjT9Z6NPZTPo5G8+tDEAZLritYAufJw1/175IwtLc421raeHjDQCbdlvo09GV8jWiviXVa0T0MfzC1pL8NSL6vHEpldCdzO9a+HnsadZt93gHTROGUnEsyV8jEllaeo1QhgGF8CIr1WtEneXH0g/mp+9l98cffzymTZuGp59+GsXFxQCAHTt24LrrrsOgQYNSOWXcfP3113jkkUcwbdo0/M///A/WrFmDq6++Gl6vF+PHj0dZWRkAxAzRFBcXxz5WVlbWpC+S2+1Gx44dY8c0zowZMzBt2rTYf1dUVKB79+547LEJjmqIogtFidYEEjVEUp7S0mvwY6WzrbeiovC/zsvLnc0yi/UhGpmf8jnqIrdofQKvcHBqSYtnRF6rsEh6mCxsHiZLzKN/v+09I1K/njNZpDwVtS4s/SC5Y1NaED355JM499xz0aNHD3Tv3h0A8N133+HQQw/Fiy++mMop4yYUCmHgwIG47bbbAADHHHMMPv30UyxYsADjx48X+zqN4/P50vIS+RRuxqU1TB7TNLJNiIXnUQmHycNkAbg8TBaAy6Mt9mHyMFmAzHtSWhAdcsgh2LBhA1asWIEvvvgCANC3b18MHz48tn0kkW7duqFfv34N3te3b1/84x//AACUlJQACN+d6tatW+yYHTt2xLbQSkpKsHPnzgbnCAaD2L17d+zzMxWmBQgg55HoQxSt38glmHavBJ/DEmHyMFkALg+TBeDyaIt9mDxMFiDznpQb0BiGgREjRmDEiBGSngYZNmwYNm3a1OB9mzdvRs+ePQGEC6xLSkqwcuXK2AKooqICq1evxqRJkwAAQ4cOxd69e7F27Vocd9xxAIDXX38doVAIgwcPTps9XpimywNyHonhru3ahRdEFRXOt8ycxiUwx0cyTB4mC8DlYbIAXB5tsQ+Th8kCZN6TUlE1AKxcuRIrV67Ezp07EWqEfvLJJ0Vwa9aswQknnIBZs2bh/PPPxwcffIBLL70UCxcuxLhx4wCEX4l2++2346mnnkKvXr0wc+ZMbNiwAZ9//jlyItXlo0aNwo4dO7BgwQIEAgFMmDABAwcOxLPPPpuUQzdmTByJ4a7ByKsO3ARDBZksbB4mi6SHycLmYbJIeJgsbB4mi5Qn7cNdZ82ahdmzZ2PgwIHo1q1bk22ypUuXtvSUtlm2bBlmzJiBLVu2oFevXpg2bVrsVWbAz40ZFy5ciL179+LEE0/Eww8/jMMOOyx2zO7du3HllVc2aMx4//3368aMujEjvYXNw2SR9DBZ2DxMFgkPk4XNw2SR8qR9uOuCBQuwePFi/OEPf0gJ2JKMHj0ao0ePtv24YRiYPXs2Zs+ebXtMx44dk74blM4wDVMF5DwSW2alpeFXamzbVuXoPBJbZtFGYBIXBYkweZgsAJeHyQJwebTFPkweJguQeU9KCyK/348TTjhB2tLqw7IQioZzuGv2u6R6yQYcMnmYLACXh8kCcHm0xT5MHiYLkHlPSltm06dPR0FBAWbOnJkOE110DVHi6OGu9mEZcCjlYbJIepgsbB4mi4SHycLmYbJIeVpSQ5TS34S1tbVYuHAhXnvtNRx11FHwNJo1cs8996RyWvo8+uh4XUMUJ6Wl1zj6fABwu10Rk7NfxIdPK9D76Gn0MFkkPUwWNg+TRcLDZGHzMFmkPBW1bvztw+SOTWlBtGHDhtjL3D/99NMGH5PsQ9Ta4o/02GHZOpPySGyZVUUM+QTDZgORO2Ys++hMHiYLwOVhsgBcHm2xD5OHyQJk3pPSguiNN96QdrSJNL6Tlu1IeVpbHyI3ycUgGiYPkwXg8jBZAC6PttiHycNkATLvSbkPUVuKVA2RFfnhSjRElKghkvJI9CGyIv0mTIL+F0wWNg+TRdLDZGHzMFkkPEwWNg+TRcqTthqi8847L6njXnjhhZacdr+J0xqi6upqAEBenrNBiYBMDZGUR6IPkeToDqd710wWNg+TRdLDZGHzMFkkPEwWNg+TRcqTthqioqKiVDw6kbDVV0l5JLbMJKfdO01bb1+fKEwWgMvDZAG4PNpiHyYPkwXIvKdFC6JFixaly9EmEn2ZO0ukPBJF1dWRouo8gqJqK7qFSPLzYvIwWQAuD5MF4PJoi32YPEwWIPMexw1x/vrXv+Kss85Cfn6+hKdVxxu5/ccSKY/EHaL8/HCBd1WVs0ZcIkXVJBeDaJg8TBaAy8NkAbg82mIfJg+TBci8x3FRdbt27bB+/Xr07t1bykQX3ZgxcWSGu/I0BGOysHmYLJIeJgubh8ki4WGysHmYLFKetDdmrJ+29CI13ZgxfvRw1/RZ2DxMFkkPk4XNw2SR8DBZ2DxMFilP2hsz6qQWPdzVPnq4q32YPEwWgMvDZAG4PNpiHyYPkwXYD4a7BgIB5ObmYv369TjiiCPw8ssv44ADDkiHrdWFZSEUjR7uGj9tfcBhojBZAC4PkwXg8miLfZg8TBZgPxnu2rt3byxduhRHH310Okx00TVEidP6hruGm4G5SZqTMXmYLJIeJgubh8ki4WGysHmYLFKeltQQpbQgeuKJJ/DCCy/g6aefRseOHVOG7i+JLoiSeUATpba2FgCQk5Pj2CRRQyTlkRjuWlgYvjO0b5/zV5k53kePzs8ReIWDyD46kYfJIulhsrB5mCwSHiYLm4fJIuWpqK1Fj9tvT19R9YMPPogvv/wSpaWl6NmzZ5OX3K9bty6V07b6WCT7stFIeSS2zCQ7pDpNtF08S5g8TBaAy8NkAbg82mIfJg+TBci8J6UF0TnnnCPMaBvRnart06FDuJ5pzx5njRkliqoNsldOMnmYLACXh8kCcHm0xT5MHiYLkHmPHu6aRKRqiEKRXgouF8dwVymPRB+ikBH+l4BLZX/vmsnC5mGySHqYLGweJouEh8nC5mGySHky0odo7969+Pvf/46vvvoK1113HTp27Ih169ahuLi41b7qzGkfosrKSgBAQYGz7SVApoZIyiPRh6g6smWWRzBUkMnC5mGySHqYLGweJouEh8nC5mGySHnS3odow4YNGD58OIqKivCf//wHl156KTp27IgXXngBW7duxZ///OdUTtvq4/Fk/yXl9SPlaXWjO8hqvZg8TBaAy8NkAbg82mIfJg+TBci8J6UF0bRp03DRRRfhjjvuQGFhYez9p59+Oi688EIxXGtLa23MKFFUXRl5pVtB5JVv2Uxbb06WKEwWgMvDZAG4PNpiHyYPkwXYDxozAsCaNWvw6KOPNnn/AQccgLKyMseo1hqWhVA0Up7WdoeorTcnSxQmC8DlYbIAXB5tsQ+Th8kCZN6T0oLI5/OhoqKiyfs3b96MLl26OEax5vLLn6JqzDh+/OOOziHpcZpg0HkRHxDet96w08IVr1SmbhEecOjEwuZhskh6mCxsHiaLhIfJwuZhskh5AsHkX7mc0t+EZ511FmbPno3nn38eQPjl21u3bsX06dMxZsyYVE65X0QPd40fPdw1fRY2D5NF0sNkYfMwWSQ8TBY2D5NFypP2ouq7774bv/nNb9C1a1fU1NTgpJNOQllZGYYOHYpbb701lVO2ibTWGiKJLbNu3fIAANu3Vzs6j8SWWYBsH53Jw2QBuDxMFoDLoy32YfIwWYDMe1JaEBUVFWHFihV45513sGHDBlRWVuLYY4/F8OHDpX2tKiwLoWg4h7t6JUiO4iHbR2fyMFkALg+TBeDyaIt9mDxMFiDzHt2YMYlINWa0rHDNjmlyDHeV8kg0Zoy2aDcJhgoyWdg8TBZJD5OFzcNkkfAwWdg8TBYpT1qGu95///247LLLkJOTg/vvvz/hsVdffXXy2v0gUsNda2pqAAC5uakvqqKRqCGS8kgMd23fPny3au9e56M7nO5d10Zu0+YI/OtEYh+dycNkkfQwWdg8TBYJD5OFzcNkkfKkZbjrvffei3HjxiEnJwf33nuv7XGGYbS6BZFO4khsmUn+Iuro6Ojo6LQ0SS+Ivvnmm7j/Xyf5hARuQ0pGyiNRVN25c7gx465dzhozShRVK7IhvEweJgvA5WGyAFwebbEPk4fJAmTe0+IaokAggD59+mDZsmXo27dvulxUkRvuGl6AuCL7ok4iM9xVxrNixWeOPh8ATDP8xLcsZyVtp/R06wGHafQwWSQ9TBY2D5NFwsNkYfMwWaQ8aR3u6vF4UEswXiEbcdqHKNrM0sk5opGoIZLySPQhqoq84i2/zlkNEeB875rJwuZhskh6mCxsHiaLhIfJwuZhskh50t6HaPLkyZg3bx4ef/xxii7H+0ta68vuW9voDk+kgzdLmDxMFoDLw2QBuDzaYh8mD5MFyLwn5VlmK1euxPLly3HkkUciPz+/wcdfeOEFEVxrS2ttzKiHu6Y3TB4mC8DlYbIAXB5tsQ+Th8kC7CfDXdu3b9+qR3SkKywLoWiYPExDBZksAJeHyQJweZgsAJdHW+zD5GGyAJn3tLioOhgM4tlnn8WIESNQUlKSLhdVpIqqpYe7Oi2qlvJIFFX7fOHiu7o6Z/8SkCiqlh5w6LSwkMnDZJH0MFnYPEwWCQ+Thc3DZJHypKUxY/3k5eVh48aN6NmzZ8rI/SlSjRn1cFf7MA0VZLKweZgskh4mC5uHySLhYbKweZgsUp60NGasn0GDBuGjjz5qMwsiqQQit/9YtqqkPBJF1V27hu+87dxZ4+g8EkXVwcgdM5Z9dCYPkwXg8jBZAC6PttiHycNkATLvSWlBdMUVV+Daa6/F999/j+OOO65JUfVRRx0lgmttMU1ntw+lw+RxulUmGZPkYhANk4fJAnB5mCwAl0db7MPkYbIAmfektGUWr5GfYRhQSsEwDFhkD6rTyA13DT8uEgsRmeGuMh6R4a6RBlwmQUMwJgubh8ki6WGysHmYLBIeJgubh8ki5UlrY0ag7Y7ucNqYsaqqCgCa3FFLJRI1RFKe0tJr8Ma3zvpFdOoUftn9Tz/5HZ1HYrhrjdcLAMj1O7MAMvvoTB4mi6SHycLmYbJIeJgsbB4mi5Qn7Y0Zde1QamHaogLkPBJ9iOoie8W+YI4EyVFcZDPnmDxMFoDLw2QBuDzaYh8mD5MFyLzH0eutP//8c2zduhX+Rqu3s846yxGqtSZaxJyTk/2/9AEuTzCyOPMRdEplsgBcHiYLwOVhsgBcHm2xD5OHyQJk3pNSDdHXX3+Nc889F5988kmsdggI1xEB0DVENtHDXe3DNdw1bHG1/FejSWQGHPJ4mCySHiYLm4fJIuFhsrB5mCxSnrTXEE2ZMgW9evXCypUr0atXL3zwwQf46aefcO211+Kuu+5KCb0/RA93jR+JPkSSozuc7l0zWdg8TBZJD5OFzcNkkfAwWdg8TBYpT9priFatWoXXX38dnTt3hsvlgsvlwoknnoi5c+fi6quvxkcffZTKaVt9WPoPRaOHu8ZPW29fnyhMFoDLw2QBuDzaYh8mD5MFyLwnpQWRZVkoLCwEAHTu3Bnbtm3D4Ycfjp49e2LTpk2iwNYUPdzVPnq4q32YPEwWgMvDZAG4PNpiHyYPkwXYT4a7HnHEEfj444/Rq1cvDB48GHfccQe8Xi8WLlyI3r17SxtbTVgWQtEweZj+ZcJkAbg8TBaAy8NkAbg82mIfJg+TBdgPhrsCwKuvvoqqqiqcd955+PLLLzF69Ghs3rwZnTp1wnPPPYdf/epX6bBmLXq4a+JIFFV7veHiO7+fYbhruMjcLfCST5kBhzweJoukh8nC5mGySHiYLGweJouUJ+3DXeNl9+7d6NChQ+yVZq0pUsNdayPbQRIvc5coqpbySBRV/9yHyPnLK50W8zFZ2DxMFkkPk4XNw2SR8DBZ2DxMFilP2oe7lpeXw7IsdOzYMfa+jh07Yvfu3XC73SKvomqNYWtHIOWRKKr+uVO1sxoiiaLqkEBbBMkweZgsAJeHyQJwebTFPkweJguQeU9KX23s2LFYsmRJk/c///zzGDt2rGNUa41hGFR30Jg8SoX/6Ojo6OjoZCMpbZl17NgR7777Lvr27dvg/V988QWGDRuGn376SQzIELnGjOE7Mi4Xx3BXKY/EcNdQZIifi2CoIJOFzcNkkfQwWdg8TBYJD5OFzcNkkfKkvTFjXV1drCC3wRcOBFBTU5PKKfeLOG3MuG/fPgCItSxwEokaIimPxHDX4uLwQnPHjuwPd62OvPouL9KWwEkk9tGZPEwWSQ+Thc3DZJHwMFnYPEwWKU/aGzMOGjQICxcuxAMPPNDg/QsWLMBxxx2XyinbRLyRyb0skfJI9CHyR2bWeK3stwJwk8zxiYbJw2QBuDxMFoDLoy32YfIwWYDMe1JaEN1yyy0YPnw4Pv74Y5x66qkAgJUrV2LNmjVYvny5KLA1pbU2ZpQIU0MwJgvA5WGyAFweJgvA5dEW+zB5mCzAftKYcdiwYVi1ahXuuOMOPP/888jNzcVRRx2FJ554Aoceeqi0sdWEYeFRP3p0R/y09eZkicJkAbg8TBaAy6Mt9mHyMFmA/aQxY1uLbsyYOBJF1cFIYbc75PxfAs6bk/FY2DxMFkkPk4XNw2SR8DBZ2DxMFilPRhozWpaFpUuXYuPGjQCAfv364eyzzxb5y54tUo0ZJbeoJIqqpTylpdc4+nxA9g6R02K+n+uZnF8UJAoLmTxMFkkPk4XNw2SR8DBZ2DxMFilP2hszfvbZZzjrrLNQVlaGww8/HAAwb948dOnSBS+99BKOOOKIVE7b6sNUswNweQoLZRZEEglEFvUs++hMHiYLwOVhsgBcHm2xD5OHyQJk3pPSguiSSy5B//798eGHH6JDhw4AgD179uCiiy7CZZddhvfee08UGc3tt9+OGTNmYMqUKZg/fz6A8PiJa6+9FkuWLEFdXR1GjhyJhx9+GMXFxbHP27p1KyZNmoQ33ngDBQUFGD9+PObOnZvxu1n6VWb28Uef+MHsP0YekotBNEweJgvA5WGyAFwebbEPk4fJAmTek9KWWW5uLj788EP079+/wfs//fRTHH/88WnpRbRmzRqcf/75aNeuHU455ZTYgmjSpEn43//9XyxevBhFRUW48sor4XK58O677wIIb+0NGDAAJSUluPPOO7F9+3b88Y9/xKWXXorbbrstqa8tVUMUHZVhmhyNGaU8MsNdww24/H5nDcEkhrtakXbxJsmAQyYPk0XSw2Rh8zBZJDxMFjYPk0XKk/bGjIcddhh27NjRZEG0c+dOHHLIIamcMmEqKysxbtw4PPbYY7jlllti7y8vL8cTTzyBZ599Fr/61a8AAIsWLULfvn3x/vvvY8iQIVi+fDk+//xzvPbaayguLsaAAQMwZ84cTJ8+HTfffHOL7pI4bcxYXV0NAMjLy0v5HNFI1BBJeSSGu9ZGXl6ZI/CqAqd710wWNg+TRdLDZGHzMFkkPEwWNg+TRcqTlsaMFRUVsf8/d+5cXH311bj55psxZMgQAMD777+P2bNnY968eS3TJpHJkyfjjDPOwPDhwxssiNauXYtAIIDhw4fH3tenTx/06NEDq1atwpAhQ7Bq1SoceeSRDbbQRo4ciUmTJuGzzz7DMccc0+Tr1dXVxeprgJ+/97q6OlRUVMDn86Gurg4+nw+BQCB2h8WyLHg8ntjHGr+trq6OHauUgmmaCAQC8Hq9TY71+/3weDywLCs2cywYDMaO9XqNmCXesc1ZAoEAApEnmVIKbrc74bGmaUIpFdftzXWjMicH3kAAAbcbbsuKDeVzhUKwTBPuYBB+jwfeQCD2NuB2w2NZsFyu8JaZUggZBtyW1eTY6NugacIVuampDANmKISAacJT7/ztOufBb5oIut0wLQvKMKAMA65QCMFGx9a3RN1+txuGUgi5XM26jYjFzh2zJOGOfY8Rd/QxDJgmLJcLrlAoodtQCoZSCR9vX14darzeJu6AxwOPzeNtKgUVcQdcLlimGdfS2N3c452T/7PFQPhfg3HdHg88wSCCLlfsMQwZBtyhEKp9vvDHTDOhu7nHO2ppyXM25o48ho0tidwBtzv+4+12wwyFkNfOhxqvN+nnbDy3QrgGwxX9ejbuuI93vd+13EIvarzepJ6zdr9rjS2pXCOiz9mCDjnwm2bK14j6llSvEdHfNTtLS64R0edNyDBSvkZE3d7c2ti1OJVrRNSiDCPla0TUHc/S0muE5XIhFJm3mfI1Iienyd/xdkl6QdS+ffsGg0CVUjj//PNj74vuvJ155pmiU92XLFmCdevWYc2aNU0+VlZWBq/Xi/bt2zd4f3FxMcrKymLH1F8MRT8e/Vi8zJ07F7NmzRLQN0xI4DakZKR+Tu98Z+Hsv+1DebkfBQUe1NQE4fG4oBRgWSHk5JiorAyiqMiL8nJ/7G1hoQdVVQH4fCbat/dBKaCiwo+amiDatWt4bFGRFxUVfuTmuhEIhGAYgGkaqKuzkJ/vwb59ARQVefHyOck/+e0SMgxwjLwNJ2QYsYtCtqOILMDPj41J0D2EyQJwPW+0xT6x5022IQAUwPXYILOepBdEb7zxRjodcfPdd99hypQpWLFiBXJasMpzmhkzZmDatGmx/66oqED37t1x9dVLHA53DS+IXJHVsZN89NFWXHXV847OIeXJCQVxuEcBnQHAD+QA4ady7CtF3lcXOabu52N9ABBEKBgZNJungLx4x9YBnQCg0a3T/PrnqcPU/63Dhp0Wpu5yMuAw/AvoEviLzaklHZ5r/5X67WcmS9hTLuKRsVSIWGKeCmfzpKR+Vht2Wrh2n7MZg+K/U3tqW4Ul7JF93vz3i7tahSXscf6zCgST/z1KekF00kknpYRxkrVr12Lnzp049thjY++zLAtvv/02HnzwQbz66qvw+/3Yu3dvg7tEO3bsQElJCQCgpKQEH3zwQYPz7tixI/axePH5fHFfiu60hii69ebkHNFI1BBJeSSGu5aW5gMAtm2rcnQeiT5ElZHFd0GtswsdILOPzuRhskh6mCxsHiaLhIfJwuZhskh50j7c9e2330748V/+8pepnLZJTj31VHzyyScN3jdhwgT06dMH06dPR/fu3eHxeLBy5UqMGTMGALBp0yZs3boVQ4cOBQAMHToUt956K3bu3ImuXbsCAFasWIF27dqhX79+Is5kw9Dvp36YPOXlzv4FKpm23r4+UZgsAJeHyQJwebTFPkweJguQeU9KC6KTTz65yfvq1xdJ1aYUFhY2afKYn5+PTp06xd5/8cUXY9q0aejYsSPatWuHq666CkOHDo0Ve48YMQL9+vXDH/7wB9xxxx0oKyvDDTfcgMmTJ2d8QcDUCBGQ80j0IZL8l4nTtPUBh4nCZAG4PEwWgMujLfZh8jBZgP1kuOuePXsa/HcgEMBHH32EmTNn4tZbbxWBJZt7770XLpcLY8aMadCYMRrTNLFs2TJMmjQJQ4cORX5+PsaPH4/Zs2dn1AnwLISi0cNd46et/yspUZgsAJeHyQJwebTFPkweJguwnw93feuttzBt2jSsXbtW6pQU0cNdE0cPd02fhc3DZJH0MFnYPEwWCQ+Thc3DZJHypL0xo12Ki4uxadMmyVNSxWlRdWsd7irRmJFpqCCThc3DZJH0MFnYPEwWCQ+Thc3DZJHypL2oesOGDQ3+WymF7du34/bbb8eAAQNSOWWbSLQRIsvWmZRHYsusS5fwnbcff3Q29kViyywoeFGQCJOHyQJweZgsAJdHW+zD5GGyAJn3pLQgGjBgAAzDQOPdtiFDhuDJJ58UgbXGSMwwk4yUR6Ko+ucW7dlfLEr04JAMk4fJAnB5mCwAl0db7MPkYbIAmfekVEP07bffNvhvl8uFLl26ZLR5Yiajh7smjsRwV48nMqYiQDDc1YgMFFQkAw6JPEwWSQ+Thc3DZJHwMFnYPEwWKU/aaohWrVqFn376CaNHj469789//jNuuukmVFVV4ZxzzsEDDzxAsyUkHac1RFVV4aaD+fn5ji0SNURSntLSaxx9PgAUFYXnSO3a5exl9w+fVuB47zo60yrX77w3ksQ+OpOHySLpYbKweZgsEh4mC5uHySLlSVsN0ezZs3HyySfHFkSffPIJLr74Ylx00UXo27cv7rzzTpSWluLmm29uqblNROLVZZKR8khsmfkjFm8w+3cZTbKZc0weJgvA5WGyAFwebbEPk4fJAmTe06K/EdevX485c+bE/nvJkiUYPHgwHnvsMQBA9+7dcdNNN+kFkU1aa2NGiaLqkpI8AEBZWbWj80gUVQeihXxBZ+NIpMLkYbIAXB4mC8Dl0Rb7MHmYLEDmPS2qIcrJycGWLVvQvXt3AMCJJ56IUaNG4frrrwcA/Oc//8GRRx6Jffv2pUebpUjVEEkPd3VaQyTlkehDJD1w0YmHycLmYbJIepgsbB4mi4SHycLmYbJIedJWQ1RcXIxvvvkG3bt3h9/vx7p16zBr1qzYx/ft2wdP5NVCrTF6uGv8SPQhYhoqyGRh8zBZJD1MFjYPk0XCw2Rh8zBZpDxpqyE6/fTT8ac//Qnz5s3Diy++iLy8PPziF7+IfXzDhg04+OCDW4RtS2HZKotGj+6In7bevj5RmCwAl4fJAnB5tMU+TB4mC0A+3HXOnDk477zzcNJJJ6GgoABPPfUUvJEqcAB48sknMWLECHFka0lrrSHSw13TGyYPkwXg8jBZAC6PttiHycNkAciHu3bu3Blvv/02ysvLUVBQ0KR/zd/+9jcUFDj7i7E1h2UhFI2+QxQ/bf1fSYnCZAG4PEwWgMujLfZh8jBZgP18uGtrjVxjxnClvGlyDHeV8kgUVVuRwm6Jl1k6bk5GZGHzMFkkPUwWNg+TRcLDZGHzMFmkPFkb7tra47SouqYmPKcrNzf1RVU0EkXVUh6Jouq6SB8in8DLK50W8zFZ2DxMFkkPk4XNw2SR8DBZ2DxMFilP2oe76qQWtptxUh6JLbOOHcPbd7t31zk6j8SWmYq81JMlTB4mC8DlYbIAXB5tsQ+Th8kCZN6jF0QZTGtdEEkUVUu2jHeatn5RSBQmC8DlYbIAXB5tsQ+Th8kCZN6ja4iSiG7MmDgSw13d7vATPxh09nSUGO4aigwUdJEMOGTyMFkkPUwWNg+TRcLDZGHzMFmkPLqGKE1xWkMU7eBdWFjo2CJRQyTlkRju2qlTeKG5Y4ez0R0Sw12rIq++y69ztn0HyOyjM3mYLJIeJgubh8ki4WGysHmYLFIeXUNEmvo9mxgi5REZ7hqdWWNl/zHykMzxiYbJw2QBuDxMFoDLoy32YfIwWYDMe/SCKINprY0ZJYqqS0vzAQDbtlU5Oo9EUXVbb06WKEwWgMvDZAG4PNpiHyYPkwXIvEfXECURXUOUOHq4a/osbB4mi6SHycLmYbJIeJgsbB4mi5RH1xClKXq4a/zo4a7ps7B5mCySHiYLm4fJIuFhsrB5mCxSHl1DRBqWrbJo9OiO+Gnr7esThckCcHmYLACXR1vsw+RhsgDkw111nMUf6bHDsjCS8kgUVUu+usFpApHuqCz76EweJgvA5WGyAFwebbEPk4fJAmTeoxdEGYwnUiDGEimPxB2idu3Cry6rqHDWmFHiDpGb5GIQDZOHyQJweZgsAJdHW+zD5GGyAJn36KLqJCI33DX8wzVNZ4VmgNRwVxmPRGNGjydc2B0IOGsIJtGYsTUOOJTyMFkkPUwWNg+TRcLDZGHzMFmkPLqoOk1xWlRdXR1uOpiXl+fYIlFULeWRKKqujdytyhHYM3ZazMdkYfMwWSQ9TBY2D5NFwsNkYfMwWaQ8uqiaNAbZnBgpj8SWWVFReMusvDz7W2YG2U1TJg+TBeDyMFkALo+22IfJw2QBMu/RC6IMxiLbn5XySBRVV0eKqvMIiqqt6BYiSddWJg+TBeDyMFkALo+22IfJw2QBMu/RNURJRDdmTBzdmDF9FjYPk0XSw2Rh8zBZJDxMFjYPk0XK05IaIr0gSiLRBVEyD2hz5wFaX2NGieGukqM7dHOy9HmYLJIeJgubh8ki4WGysHmYLFKeitpa9Lj9dl1UzRaW/kPRSHlkh7tmvzVBW29OlihMFoDLw2QBuDzaYh8mD5MF0I0ZW3X0cFf76OGu9mHyMFkALg+TBeDyaIt9mDxMFkAPd6WMriFKHIk+RKYZ3iu2LGdPR4k+RK1xH13Kw2SR9DBZ2DxMFgkPk4XNw2SR8ug+RGmKHu4aPxJ9iCRHdzjdu2aysHmYLJIeJgubh8ki4WGysHmYLFIe3YeINCxbZdEwDXctLAzfGt23L/vDXT0kt4ujYfIwWQAuD5MF4PJoi32YPEwWIPMevSDKYIKRXgosCyMpj0RRdY033Jgx1++sMaNELIEtTckweZgsAJeHyQJwebTFPkweJguQeY9eEGUwrbVTtUSYOqQyWQAuD5MF4PIwWQAuj7bYh8nDZAEy79FF1UlErqg6fPvP5eIY7irlkSiqdrvD/xIIBgmGuxqRgYKKZMAhkYfJIulhsrB5mCwSHiYLm4fJIuXRRdVpitOi6srKSgBAQYGz7SVApqhayiNRVF0d2TLLE9gyc1rMx2Rh8zBZJD1MFjYPk0XCw2Rh8zBZpDy6qJo0Hk/2mw7Wj5RHoqi6oCBsqazMflG1m6ywkMnDZAG4PEwWgMujLfZh8jBZgMx79IIog2mtjRkl0q5d+F8CThdEEmnrzckShckCcHmYLACXR1vsw+RhsgC6MSNldGPGxNHDXdNnYfMwWSQ9TBY2D5NFwsNkYfMwWaQ8erircPRw18TRw13twzLgUMrDZJH0MFnYPEwWCQ+Thc3DZJHy6OGupGHYmqofPdw1ftr6gMNEYbIAXB4mC8Dl0Rb7MHmYLIAe7tqqw1SzA3B5mPaumSwAl4fJAnB5mCwAl0db7MPkYbIAuoaIMrqGKHH0cFf7sOyjS3mYLJIeJgubh8ki4WGysHmYLFIe3YcoTdF9iOJH9yFKn4XNw2SR9DBZ2DxMFgkPk4XNw2SR8ug+RKQxTecdqiUj5ZHoQ9S+fXjbbu9eZ1OWJfoQSfzrSDJMHiYLwOVhsgBcHm2xD5OHyQJk3qMXRBkM2+6klEeiqLo2slecQ1bUp6Ojo6PTNqIXRBlMa10QSUQRDZplsgBcHiYLwOVhsgBcHm2xD5OHyQJk3qOLqpOILqpOnNZXVB1+PFwkAw6ZPEwWSQ+Thc3DZJHwMFnYPEwWKY8uqk5TnBZVt9bGjBJF1VWRl/7n1zmrIQKcF/MxWdg8TBZJD5OFzcNkkfAwWdg8TBYpjy6qJg1Dv5/6kfJIFFXn54driKqqsj/c1RMMOj6HZJg8TBaAy8NkAbg82mIfJg+TBci8Ry+IMhimRogAl6eoKPzySqcLIom09eZkicJkAbg8TBaAy6Mt9mHyMFkA3ZiRMrqGKHH0cNf0Wdg8TBZJD5OFzcNkkfAwWdg8TBYpjx7uKhw93DVx9HBX+7AMOJTyMFkkPUwWNg+TRcLDZGHzMFmkPHq4K2kYtqbqRw93jZ+2PuAwUZgsAJeHyQJwebTFPkweJguQeY/zvRudpOP3++EXaIkuFSZP0O1G0M2xPmeyAFweJgvA5WGyAFwebbEPk4fJAmTeo7fMkohcDVG4MMzlcj4yQ6aGSMYj0YfI7Q7vFQeDug8Rs4fJIulhsrB5mCwSHiYLm4fJIuXRfYjSFKd9iKqrqwEAeXl5ji0SNURSHok+RDWRIX65BEMFmSxsHiaLpIfJwuZhskh4mCxsHiaLlKfV9CGaO3cuXnjhBXzxxRfIzc3FCSecgHnz5uHwww+PHVNbW4trr70WS5YsQV1dHUaOHImHH34YxcXFsWO2bt2KSZMm4Y033kBBQQHGjx+PuXPnwp3hW4NsN+OkPBJ9iDp1ChfP/fSTs2I+iT5EOjo6OjptL9Q1RG+99RYmT56M999/HytWrEAgEMCIESNQVfXzK5GuueYavPTSS/jb3/6Gt956C9u2bcN5550X+7hlWTjjjDPg9/vx3nvv4amnnsLixYtx4403Zvz7MU2TauI9kycQCCEQcH6bViKuUAiuEIcF4PIwWQAuD5MF4PJoi32YPEwWIPMe6jtEr7zySoP/Xrx4Mbp27Yq1a9fil7/8JcrLy/HEE0/g2Wefxa9+9SsAwKJFi9C3b1+8//77GDJkCJYvX47PP/8cr732GoqLizFgwADMmTMH06dPx8033wxv5JZcJhKIVMznRF5KmO1IeSReZSbZMt5pgpFFoo+kayuTh8kCcHmYLACXR1vsw+RhsgCZ9+xXRdVffvklDj30UHzyySc44ogj8Prrr+PUU0/Fnj170L59+9hxPXv2xNSpU3HNNdfgxhtvxL/+9S+sX78+9vFvvvkGvXv3xrp163DMMcc0+Tp1dXWxLs5AuKi6e/fuOP/8+XC7fXC5XAiFQnC5XFAqBCPSPEopBcP4+WON31pWEIZhwIgUihmGYXvsz+dXkWOBUEjFPvbZZ9vQv3+p7bHNWZQK1TveldAS/R6jz5TGx7799ma43S4EgyGYZvh99R8Tl8uAZanYMY3fmqYBlyt8fqVUs8eGQuHv0TDQ5Ngh3VzYtEfh8A4GlGHAUIACAAMwFBAywk2+QoYLLhWq99aASwHKABQMRP/XaOZYRH97jPjH1rc0PNbeEnNHBj0rhKc+m6FQsxYD4f9v5/7ixyD6dnE3625iiRybyNLY3dzjvenHIPpELIndLriUivN4A5bLgKEUACOhu7nH+4uoJeJO9BjaPd6WyxXHEt8dPo/9Y7jxJwt9OptJP2fjuQFV72fVkufJzxYo4IskLM093raWFj7eALBpt4U+HV3Nuu1+1+pbUr1GRB/DL2wtyV8jos8bA42PTf4aET02/Dz2pHyNsLckf41IZGnpNSIKiJpSuUbUWX4s/WB+6yqqDoVCmDp1KoYNG4YjjjgCAFBWVgav19tgMQQAxcXFKCsrix1Tv54o+vHox+Jl7ty5mDVrVpP3P/jghfD5fPD5fKirq4PP50MgEIhtO1mWBY/HE/tY47d79uyBaZrIz8+HUgqmaSIQCMDr9TY51u/3w+PxwLKsyCLKQDAYjB177bV/w913/9b22OYsgUAgVlSdn58Pt9ud8FjTNKGUiuuecs5c3DKyPbyBAAJuN9yWhVCk+7UrFIJlmnAHg/B7PPAGArG3AbcbHsuC5XKh2uuFASDH74fbspocG30bNM1Y19LoRS1gmvDUO/+NqwOYPdiDoNsN07KgjPCCxBUKIdjo2PqWqDtmCQSadRsRS8gw4rpjliTcse8x4o4+hjUeDyzTRFFVVUK3oVT4L+YEj/cNKypw2/DCJu6AxwOPzeNtKhVbCNV6wt9LPEtjd3OP98zXKnDrqYWxi53lcsV3ezzwBIMIulyxxzBkGHCHQijPy4PbsuCxrITu5h7vGyKWljxnY+7IY1ien9/AksgdcLvjP95uN8xQCNe/VY05J+cn/ZyN5w6YZuxnlcgd9/Gu97t2/ZtVuOWUgqSes3a/a40tqVwjos/ZG9+pwS0n+FK+RtS3pHqNiP6uzXy3Nq6lJdeI6PPGFwikfI2Iuq9fXh67FqdyjYhacgKBlK8RUXc8S0uvEX63GyGXC/m1tSlfI3YHg1j6Qdy/6ptkv1kQTZ48GZ9++ineeeedtH+tGTNmYNq0abH/jt4h8vl8sRVmtKlhvOaGjT8WfduhQ4cmnxPdrrL7nHgJL4JUE4vdsXZvPZE5MYmOsTt/fbe/JhjrJBp35kzkdmf0Y43fAoBp87FEnxONt9H5K3ZVw2sVxD3WJ2iJl8bHJLI0dtudv74nKUuC89ZVB+K+YiPZ77WllkSPd21VCy1Nv1MUReoJU3meJLQk+bNJyhLn2OZ+9tUVdcj1R34/W2Kpd+zPzU6thO7mfvY1+/yxxybZ52xjd7OWFpy3ck8tvJY75WtEc5aWPN7NWeKl8TGNnzd27ubO7wsG416LW/J4J7S08PFO1pLo8fY0+lizlqbfKfJa0OV6v1gQXXnllVi2bBnefvttHHjggbH3l5SUwO/3Y+/evQ3uEu3YsQMlJSWxYz74oOHycMeOHbGPxUv0LpB0mIapAnIeiVeZSY7ucJq2PuAwUZgsAJeHyQJwebTFPkweJgugh7s2iFIKV111FZYuXYo333wThx56aIOPl5eXo0uXLvjrX/+KMWPGAAA2bdqEPn36YNWqVRgyZAhefvlljB49Gtu3b0fXrl0BAAsXLsR1112HnTt3JrUY0MNdE0cPd02fhc3DZJH0MFnYPEwWCQ+Thc3DZJHytJrhrldccQWeffZZ/POf/2zQe6ioqAi5ueGFyaRJk/B///d/WLx4Mdq1a4errroKAPDee+8BCNf1DBgwAKWlpbjjjjtQVlaGP/zhD7jkkktw2223JeWQGu66b98+AEBhYWHK54hGojGjlEdiuGtJSbg5ZFlZtaPzSAx3lXzFm0RzMiYPk0XSw2Rh8zBZJDxMFjYPk0XK02qGuz7yyCMAgJNPPrnB+xctWoSLLroIAHDvvffC5XJhzJgxDRozRmOaJpYtW4ZJkyZh6NChyM/Px/jx4zF79uxMfRuxRGt2WMLkqa7meJknALhJbhdHw+RhsgBcHiYLwOXRFvsweZgsQOY91AuiZG5e5eTk4KGHHsJDDz1ke0zPnj3xf//3f5K0lGKRPdmkPBJ9iCRbxjtNSGBLUzJMHiYLwOVhsgBcHm2xD5OHyQJk3kO9ZcYSqRqi6AJEoju0RA2RlEdiuKvHE37iO+1WLTHc1Yr0iTJJBhwyeZgskh4mC5uHySLhYbKweZgsUh493DVNcTrctaamBgBi9U9OIlFDJOWRGO5aF5krJ9GR1OneNZOFzcNkkfQwWdg8TBYJD5OFzcNkkfK0muGurS2tdctMIlb0LhVBy3gmC8DlYbIAXB4mC8Dl0Rb7MHmYLEDmPXpBlMEwFTEDch6JPkT5+WFLVVXA0Xkk+hC5SS4G0TB5mCwAl4fJAnB5tMU+TB4mC5B5j14QZTCttTGjRFF1ZaTzdUELuoqmK229OVmiMFkALg+TBeDyaIt9mDxMFkA3ZqSMbsyYOBJF1aYZbsBlWc6ejhJF1a2xOZmUh8ki6WGysHmYLBIeJgubh8ki5dFF1WmK06LqiooKAHB0jmgkiqqlPBKNGYuLw40ZnY7uePi0AsfFfJJ3qyQKC5k8TBZJD5OFzcNkkfAwWdg8TBYpjy6qJg3LVlk0Uh6JLbOfBy5mv87KG3BWxyQdJg+TBeDyMFkALo+22IfJw2QBMu/RC6IMprXWEEkUVUuO7nCaQOSlniz76EweJgvA5WGyAFwebbEPk4fJAmTeo2uIkoiuIUocmeGuYYOLoCEYk4XNw2SR9DBZ2DxMFgkPk4XNw2SR8ugaojTFaQ1RVVW4PiY/P9+xRaKGSMoj0ZhRcnSH071rJgubh8ki6WGysHmYLBIeJgubh8ki5dE1RKSRuDMkGSmPxJZZhw7hbbs9e5xNWZbYMjPIbpoyeZgsAJeHyQJwebTFPkweJguQeY9eEOk4jkRRdW2k30QOWVGfjo6Ojk7biF4QZTBMozIAOY/EHaIuXcK1WT/+WOPoPBJ3iKK9L1jC5GGyAFweJgvA5dEW+zB5mCxA5j26qDqJ6KLqxJEpquZpCMZkYfMwWSQ9TBY2D5NFwsNkYfMwWaQ8uqg6TdGNGeNHoqi6KtKAK5+gIRiThc3DZJH0MFnYPEwWCQ+Thc3DZJHy6KJq0rD0H4pGytPahrt6yOqYmDxMFoDLw2QBuDzaYh8mD5MFyLxHL4gymNbamFEPd01vmDxMFoDLw2QBuDzaYh8mD5MF0MNdKaNriBJHD3e1D8s+upSHySLpYbKweZgsEh4mC5uHySLl0TVEaYquIYofPdzVPiwDDqU8TBZJD5OFzcNkkfAwWdg8TBYpj64hIg3LVlk0erhr/LT1AYeJwmQBuDxMFoDLoy32YfIwWQA93LVVJxD54bIsjKQ8ra0PUTC2OOPYR2fyMFkALg+TBeDyaIt9mDxMFiDzHl1DlETkaojCP1SXy9m+KiBVQyTj0cNd02dh8zBZJD1MFjYPk0XCw2Rh8zBZpDy6hihNcVpDVF1dDQDIy8tzbJGoIZLySPQhkhzd4XTvmsnC5mGySHqYLGweJouEh8nC5mGySHl0DRFp2G7GSXkktsw6dw4Xz+3a5ayYT2LLTJG1r2fyMFkALg+TBeDyaIt9mDxMFiDzHr0gymBM0/lWmWSkPCJF1e7wU9EbzJEgOYoZcn67WDJMHiYLwOVhsgBcHm2xD5OHyQJk3qMXRBlMtIg5Jyf7f+kDch6JO0QlJeFtu7KyakfnkbhDFIgW8gWDjs8lESYPkwXg8jBZAC6PttiHycNkATLv0UXVSUQ3Zkwc3ZjRPizNyaQ8TBZJD5OFzcNkkfAwWdg8TBYpjy6qTlN0Y8b4kSiqZmoIxmRh8zBZJD1MFjYPk0XCw2Rh8zBZpDy6qJo0LP2HotHDXeOnrTcnSxQmC8DlYbIAXB5tsQ+Th8kC6MaMrTp6uKt99HBX+zB5mCwAl4fJAnB5tMU+TB4mC6CHu1JG1xAljkxjRp69ayYLm4fJIulhsrB5mCwSHiYLm4fJIuVpSQ2RXhAlkeiCKJkHNFH27dsHACgsLHRskqghkvLIDHcNLzR37HA+usPp3nV15I5ZXuQOmpNI7KMzeZgskh4mC5uHySLhYbKweZgsUp6K2lr0uP12XVTNFreb6+GW8khsmdVFLL5g9rcTTZLbxdEweZgsAJeHyQJwebTFPkweJguQeQ/X39CtPGw345g6VXfsGK4h2r07+52qQwJbmpJh8jBZAC4PkwXg8miLfZg8TBYg8x69ZZZEpGqIrMhqV6JDtEQNkZRHog+RxxN+4gcCzjqTSvQhsiK/hBJdUiX20Zk8TBZJD5OFzcNkkfAwWdg8TBYpj+5DlKY47UNUG3kFlUSnaokaIimPRB+in7fMnHckdbp3zWRh8zBZJD1MFjYPk0XCw2Rh8zBZpDy6DxFp9OgO+xQXh0d37NiR/dEdwcgdM4mLgkSYPEwWgMvDZAG4PNpiHyYPkwXIvEcviDIYr9ebbUKDSHlEhrtGZ9ZY2X+MPCQXg2iYPEwWgMvDZAG4PNpiHyYPkwXIvEcviDKY1tqYUSJMDcGYLACXh8kCcHmYLACXR1vsw+RhsgC6MSNldGPGxNHDXe3D0pxMysNkkfQwWdg8TBYJD5OFzcNkkfLoouo0RQ93jR893DV9FjYPk0XSw2Rh8zBZJDxMFjYPk0XKo4uqScOwNVU/erhr/LT1AYeJwmQBuDxMFoDLoy32YfIwWQA93LVVx+/3A+BZGDF5CgtlFkQSCURe6smyj87kYbIAXB4mC8Dl0Rb7MHmYLEDmPbqGKInoGqLEkRnuGja4VPYbgjFZ2DxMFkkPk4XNw2SR8DBZ2DxMFimPHu4qHKnhrlVVVQCA/Px8xyaJGiIpj8Rw186dw3vFu3Y5H93hdO+6JtKOIDdyB81JJPbRmTxMFkkPk4XNw2SR8DBZ2DxMFimPHu5KGiNSMc8SKY9EH6LayMsrcwLZb1ppkP0bgcnDZAG4PEwWgMujLfZh8jBZgMx79IIog2mtCyKJ8Ei4LACXh8kCcHmYLACXR1vsw+RhsgCZ9+gtsyQiN9w13HXTNJ2vQ2WGu8p4JPoQeb3hvWK/Xw93ZfYwWSQ9TBY2D5NFwsNkYfMwWaQ8ug9RmuK0D5FkZ2iJGiIpj0Qfop9Hdzh/NYHTvWsmC5uHySLpYbKweZgsEh4mC5uHySLl0X2ISMM0KgOQ80j0ISotDRd2b9tW5eg8En2I2nr7+kRhsgBcHiYLwOXRFvsweZgsQOY9ekGUwbAshKKR8sgOd/VIkBylrTcnSxQmC8DlYbIAXB5tsQ+Th8kC6MaMrTqt9Q6RRJj+ZcJkAbg8TBaAy8NkAbg82mIfJg+TBdDDXSmjGzMmjh7uah+WAYdSHiaLpIfJwuZhskh4mCxsHiaLlEcXVacperhr/EgUVVdFhvjlEwwVZLKweZgskh4mC5uHySLhYbKweZgsUh5dVE0ahq2p+mEa7hqdZbZvX/aHu3qCQcfnkAyTh8kCcHmYLACXR1vsw+RhsgCZ9zjfu9FJOoFAAAGiojUmT06OGzk5HOvzoMuFoMC2plSYPEwWgMvDZAG4PNpiHyYPkwXIvEfXECURuRqicGGYy+VsXxWQqiGS8UgMd7UiQ/xMgqGCTBY2D5NF0sNkYfMwWSQ8TBY2D5NFyqOHuwpHarhrTU0NACA3N/VFVTQSNURSHonhrh06hLfv9uypc3QeieGuP89Vc373TGIfncnDZJH0MFnYPEwWCQ+Thc3DZJHy6OGupLFIXsoYjZRHog9RdWSqcZ7AlGWnCRHNeAO4PEwWgMvDZAG4PNpiHyYPkwXIvEcviDIYjyf7TQfrh8njFpidIxUmC8DlYbIAXB4mC8Dl0Rb7MHmYLEDmPXrLLIlI1RAFIxXzbjfHcFcpj0QfIp8vvNdcV+fsrpVEH6JgpKbKHXJ+B01iH53Jw2SR9DBZ2DxMFgkPk4XNw2SR8ug+RDZ56KGHcOedd6KsrAxHH300HnjgAQwaNCjpz9fDXeNHD3dNn4XNw2SR9DBZ2DxMFgkPk4XNw2SR8ug+RHHy3HPPYdq0aViwYAEGDx6M+fPnY+TIkdi0aRO6du2aEQPTqAxAD3e1S1tvX58oTBaAy8NkAbg82mIfJg+TBci8h6fhQJpzzz334NJLL8WECRPQr18/LFiwAHl5eXjyySczZvD5fDSLIYDLU17uR3l59guqgfBAQaYhh0weJgvA5WGyAFwebbEPk4fJAmTe0ybuEPn9fqxduxYzZsyIvc/lcmH48OFYtWpVk+Pr6upid08AoLy8HACwa9cuVFRUwOfzoa6uDj6fD4FAAGbktp5lWfB4PLGPNX67d+9emKaJvLw8KKVgmiYCgQC8Xm+TY/1+PzweDyzLgmEYMAwDwWAwdixQi++//9722OYsgUAg9rL7vLw8uN3uhMeapgmlVFz3KYcYmHlqEbyBAAJuN9yWhVCkmZYrFIJlmnAHg/B7PPAGArG3AbcbHsuC5XKh2uuFASDH74fbspocG30bNM3YXBtlGDBDIQRME57I+X8KBJBTZOKnQABBtxumZUEZBpRhwBUKIVjv2MaWqLva7Q5blGrWbUQsIcOI645ZmnE3+B4j7uhjWGOasEwTRbW1Cd2GUjCUSvh4G94QdoZCTdwBjwcem8fbVAoq4q41TQRtLI3dzT3eLt/PFgOA5XLFd3s88ASDCLpcsccwZBhwh0Io93rhtix4gITu5h7vqKUlz9mYO/IYNrYkcgfc7viPt9sNMxSCOw/YGQol/ZyN5w4AsZ9VInfcx7vec9bMVdgZCiX1nLX7XWtsSeUaEX3OegsM/BTnsUv2GlHfkuo1Ivq7ZmdpyTUi+rzxhUIpXyOibngsbG/0u9CSa0TUkuPgGhF1x7O09BrhBxByuZDv96d8jdgT+Xs8qXJp1Qbyww8/KADqvffea/D+6667Tg0aNKjJ8TfddJMCoP/oP/qP/qP/6D/6Tyv489133zW7VmgTd4hamhkzZmDatGmx/w6FQti9ezc6deoEw0FfhIqKCnTv3h3fffedyIBXp2HyaMv+4WGysHmYLGwebdk/PEwWKY9SCvv27UNpaWmzx7aJBVHnzp1hmiZ27NjR4P07duxASUlJk+Pj1da0b99ezNOuXTuKJ1s0TB5tsQ+Th8kCcHmYLACXR1vsw+RhsgDOPUVFRUkd1yaKqr1eL4477jisXLky9r5QKISVK1di6NChWZTp6Ojo6OjoMKRN3CECgGnTpmH8+PEYOHAgBg0ahPnz56OqqgoTJkzINk1HR0dHR0cny2kzC6ILLrgAP/74I2688UaUlZVhwIABeOWVV1BcXJwxg8/nw0033UTzUncmj7bYh8nDZAG4PEwWgMujLfZh8jBZgMx79OgOHR0dHR0dnTafNlFDpKOjo6Ojo6OTKHpBpKOjo6Ojo9PmoxdEOjo6Ojo6Om0+ekGko6Ojo6Oj0+ajF0QZzEMPPYSDDjoIOTk5GDx4MD744IOsON5++22ceeaZKC0thWEYePHFF7PiAIC5c+fi+OOPR2FhIbp27YpzzjkHmzZtyorlkUcewVFHHRVrAjZ06FC8/PLLWbE0zu233w7DMDB16tSsfP2bb745Nicv+qdPnz5ZsQDADz/8gN///vfo1KkTcnNzceSRR+LDDz/MiuWggw5q8tgYhoHJkydn3GJZFmbOnIlevXohNzcXBx98MObMmZPcHKc0ZN++fZg6dSp69uyJ3NxcnHDCCVizZk1GvnZz1zmlFG688UZ069YNubm5GD58OLZs2ZI1zwsvvIARI0bEJiKsX78+K5ZAIIDp06fjyCOPRH5+PkpLS/HHP/4R27Zty7gFCF97+vTpg/z8fHTo0AHDhw/H6tWr02LRC6IM5bnnnsO0adNw0003Yd26dTj66KMxcuRI7Ny5M+OWqqoqHH300XjooYcy/rUb56233sLkyZPx/vvvY8WKFQgEAhgxYgSqqqoybjnwwANx++23Y+3atfjwww/xq1/9CmeffTY+++yzjFvqZ82aNXj00Udx1FFHZdXRv39/bN++PfbnnXfeyYpjz549GDZsGDweD15++WV8/vnnuPvuu9GhQ4eseNasWdPgcVmxYgUA4Le//W3GLfPmzcMjjzyCBx98EBs3bsS8efNwxx134IEHHsi4BQAuueQSrFixAk8//TQ++eQTjBgxAsOHD8cPP/yQ9q/d3HXujjvuwP33348FCxZg9erVyM/Px8iRI1FbW5sVT1VVFU488UTMmzcvLV8/WUt1dTXWrVuHmTNnYt26dXjhhRewadMmnHXWWRm3AMBhhx2GBx98EJ988gneeecdHHTQQRgxYgR+/PFHeYzE8FSd5jNo0CA1efLk2H9blqVKS0vV3Llzs6hSCoBaunRpVg31s3PnTgVAvfXWW9mmKKWU6tChg3r88cez9vX37dunDj30ULVixQp10kknqSlTpmTFcdNNN6mjjz46K1+7caZPn65OPPHEbDNsM2XKFHXwwQerUCiU8a99xhlnqIkTJzZ433nnnafGjRuXcUt1dbUyTVMtW7aswfuPPfZYdf3112fU0vg6FwqFVElJibrzzjtj79u7d6/y+Xzqr3/9a8Y99fPNN98oAOqjjz5Ku6M5SzQffPCBAqC+/fbbrFvKy8sVAPXaa6+Jf319hygD8fv9WLt2LYYPHx57n8vlwvDhw7Fq1aosyvhSXl4OAOjYsWNWHZZlYcmSJaiqqsrqeJfJkyfjjDPOaPDcyVa2bNmC0tJS9O7dG+PGjcPWrVuz4vjXv/6FgQMH4re//S26du2KY445Bo899lhWLI3j9/vxl7/8BRMnTnQ0CDrVnHDCCVi5ciU2b94MAPj444/xzjvvYNSoURm3BINBWJaFnJycBu/Pzc3N2t3FaL755huUlZU1+L0qKirC4MGD9TU5TsrLy2EYhuhMz1Ti9/uxcOFCFBUV4eijjxY/f5vpVJ3N7Nq1C5ZlNemKXVxcjC+++CJLKr6EQiFMnToVw4YNwxFHHJEVwyeffIKhQ4eitrYWBQUFWLp0Kfr165cVy5IlS7Bu3bqM1VwkyuDBg7F48WIcfvjh2L59O2bNmoVf/OIX+PTTT1FYWJhRy9dff41HHnkE06ZNw//8z/9gzZo1uPrqq+H1ejF+/PiMWhrnxRdfxN69e3HRRRdl5ev/6U9/QkVFBfr06QPTNGFZFm699VaMGzcu45bCwkIMHToUc+bMQd++fVFcXIy//vWvWLVqFQ455JCMe+qnrKwMAOJek6Mf0wmntrYW06dPx+9+97usDXxdtmwZxo4di+rqanTr1g0rVqxA586dxb+OXhDp0GTy5Mn49NNPs/qvx8MPPxzr169HeXk5/v73v2P8+PF46623Mr4o+u677zBlyhSsWLGiyb+ws5H6dxiOOuooDB48GD179sTzzz+Piy++OKOWUCiEgQMH4rbbbgMAHHPMMfj000+xYMGCrC+InnjiCYwaNQqlpaVZ+frPP/88nnnmGTz77LPo378/1q9fj6lTp6K0tDQrj83TTz+NiRMn4oADDoBpmjj22GPxu9/9DmvXrs24RaflCQQCOP/886GUwiOPPJI1xymnnIL169dj165deOyxx3D++edj9erV6Nq1q+jX0VtmGUjnzp1hmiZ27NjR4P07duxASUlJllRcufLKK7Fs2TK88cYbOPDAA7Pm8Hq9OOSQQ3Dcccdh7ty5OProo3Hfffdl3LF27Vrs3LkTxx57LNxuN9xuN9566y3cf//9cLvdsCwr46b6ad++PQ477DB8+eWXGf/a3bp1a7JA7du3b9a28KL59ttv8dprr+GSSy7JmuG6667Dn/70J4wdOxZHHnkk/vCHP+Caa67B3Llzs+I5+OCD8dZbb6GyshLfffcdPvjgAwQCAfTu3Tsrnmii1119TbZPdDH07bffYsWKFVm7OwQA+fn5OOSQQzBkyBA88cQTcLvdeOKJJ8S/jl4QZSBerxfHHXccVq5cGXtfKBTCypUrs1qfwhClFK688kosXboUr7/+Onr16pVtUoOEQiHU1dVl/Oueeuqp+OSTT7B+/frYn4EDB2LcuHFYv349TNPMuKl+Kisr8dVXX6Fbt24Z/9rDhg1r0pph8+bN6NmzZ8Yt9bNo0SJ07doVZ5xxRtYM1dXVcLkaXtZN00QoFMqSKJz8/Hx069YNe/bswauvvoqzzz47q55evXqhpKSkwTW5oqICq1evbvPXZODnxdCWLVvw2muvoVOnTtkmNUi6rst6yyxDmTZtGsaPH4+BAwdi0KBBmD9/PqqqqjBhwoSMWyorKxv8y/6bb77B+vXr0bFjR/To0SOjlsmTJ+PZZ5/FP//5TxQWFsb274uKipCbm5tRy4wZMzBq1Cj06NED+/btw7PPPos333wTr776akYdQLj+onEdVX5+Pjp16pSV+qr/+q//wplnnomePXti27ZtuOmmm2CaJn73u99l3HLNNdfghBNOwG233Ybzzz8fH3zwARYuXIiFCxdm3BJNKBTCokWLMH78eLjd2busnnnmmbj11lvRo0cP9O/fHx999BHuueceTJw4MSueV199FUopHH744fjyyy9x3XXXoU+fPhm57jV3nZs6dSpuueUWHHrooejVqxdmzpyJ0tJSnHPOOVnx7N69G1u3bo31+4ku+ktKSsTvWiWydOvWDb/5zW+wbt06LFu2DJZlxa7LHTt2hNfrzZilU6dOuPXWW3HWWWehW7du2LVrFx566CH88MMP6WlrIf66NR3bPPDAA6pHjx7K6/WqQYMGqffffz8rjjfeeEMBaPJn/PjxGbfEcwBQixYtyrhl4sSJqmfPnsrr9aouXbqoU089VS1fvjzjDrtk82X3F1xwgerWrZvyer3qgAMOUBdccIH68ssvs2JRSqmXXnpJHXHEEcrn86k+ffqohQsXZs2ilFKvvvqqAqA2bdqUVUdFRYWaMmWK6tGjh8rJyVG9e/dW119/vaqrq8uK57nnnlO9e/dWXq9XlZSUqMmTJ6u9e/dm5Gs3d50LhUJq5syZqri4WPl8PnXqqaem9efXnGfRokVxP37TTTdl1BJ92X+8P2+88UZGLTU1Nercc89VpaWlyuv1qm7duqmzzjpLffDBB+IOpZQylMpSC1MdHR0dHR0dHZLoGiIdHR0dHR2dNh+9INLR0dHR0dFp89ELIh0dHR0dHZ02H70g0tHR0dHR0Wnz0QsiHR0dHR0dnTYfvSDS0dHR0dHRafPRCyIdHR0dHR2dNh+9INLR0dHR0dFp89ELIh0dHZ0EefPNN2EYBvbu3evoPAcddBDmz58vYkqUxYsXo3379mn/Ojo6rS16QaSj0wbz3XffYeLEiSgtLYXX60XPnj0xZcoU/PTTTw2OO/nkk2EYRpM/wWCwycd9Ph8OOOAAnHnmmXjhhReafM3oce+//36D99fV1aFTp04wDANvvvmmrfnHH3/EpEmT0KNHD/h8PpSUlGDkyJF49913nT8gJDEMAy+++GK2GTo6bTJ6QaSj08by9ddfY+DAgdiyZQv++te/4ssvv8SCBQuwcuVKDB06FLt3725w/KWXXort27c3+FN/gGn041999RX+8Y9/oF+/fhg7diwuu+yyJl+7e/fuWLRoUYP3LV26FAUFBc26x4wZg48++ghPPfUUNm/ejH/96184+eSTmyzidHR0dFKJXhDp6LSxTJ48GV6vF8uXL8dJJ52EHj16YNSoUXjttdfwww8/4Prrr29wfF5eXmzidrzJ29GPH3jggRgyZAjmzZuHRx99FI899hhee+21BseOHz8eS5YsQU1NTex9Tz75JMaPH5/QvHfvXvz73//GvHnzcMopp6Bnz54YNGgQZsyYgbPOOgsAMHHiRIwePbrB5wUCAXTt2hVPPPEEgPAdrauuugpTp05Fhw4dUFxcjMceewxVVVWYMGECCgsLccghh+Dll19uYnj33Xdx1FFHIScnB0OGDMGnn37a4OP/+Mc/0L9/f/h8Phx00EG4++67E35PzeU///kPDMPACy+8gFNOOQV5eXk4+uijsWrVqgbHLV68GD169EBeXh7OPffcuAvEf/7znzj22GORk5OD3r17Y9asWbG7fLNnz0ZpaWmDzzvjjDNwyimnIBQKOfoedHT2q6RlZKyOjg5lfvrpJ2UYhrrtttvifvzSSy9VHTp0UKFQSCml1EknnaSmTJliez67j1uWpTp06KAmTZoUex8AtXTpUnXUUUepp59+Wiml1Lfffqt8Pp/avHlzwmnagUBAFRQUqKlTp6ra2tq4x7z77rvKNE21bdu22PteeOEFlZ+fr/bt2xfzFhYWqjlz5qjNmzerOXPmKNM01ahRo9TChQvV5s2b1aRJk1SnTp1UVVWVUurnadx9+/ZVy5cvVxs2bFCjR49WBx10kPL7/UoppT788EPlcrnU7Nmz1aZNm9SiRYtUbm6uWrRoUczSs2dPde+999o+lvUfI6VUbOp4nz591LJly9SmTZvUb37zG9WzZ08VCASUUkq9//77yuVyqXnz5qlNmzap++67T7Vv314VFRXFzvn222+rdu3aqcWLF6uvvvpKLV++XB100EHq5ptvVkopFQwG1dChQ9U555yjlFLqwQcfVO3bt1fffvttQquOTmuLXhDp6LShvP/++w3+0m2ce+65RwFQO3bsUEqFFxAej0fl5+fH/kybNi12fKIF0+DBg9WoUaNi/x39uvPnz1ennHKKUkqpWbNmqXPPPVft2bMn4YJIKaX+/ve/qw4dOqicnBx1wgknqBkzZqiPP/64wTH9+vVT8+bNi/33mWeeqS666KIG3hNPPDH238FgUOXn56s//OEPsfdt375dAVCrVq1SSv28IFqyZEnsmJ9++knl5uaq5557Timl1IUXXqh+/etfN7Bcd911ql+/frH/TnVB9Pjjj8c+/tlnnykAauPGjUoppX73u9+p008/vcE5LrjgggYLolNPPbXJAvjpp59W3bp1i/33V199pQoLC9X06dNVbm6ueuaZZxI6dXRaY/SWmY5OG4xSKuljx40bh/Xr18f+zJgxI+mvYRhGk/f//ve/x6pVq/D1119j8eLFmDhxYlLnGzNmDLZt24Z//etfOO200/Dmm2/i2GOPxeLFi2PHXHLJJbEapR07duDll19ucv6jjjoq9v9N00SnTp1w5JFHxt5XXFwMANi5c2eDzxs6dGjs/3fs2BGHH344Nm7cCADYuHEjhg0b1uD4YcOGYcuWLbAsq8n38v/+3/9DQUFB7E+i1Pd269atgW3jxo0YPHiwrRMAPv74Y8yePbvB14vWfVVXVwMAevfujbvuugvz5s3DWWedhQsvvDChSUenNUYviHR02lAOOeQQGIYR+4u8cTZu3IgOHTqgS5cusfcVFRXhkEMOif3p3Llzs1/Hsixs2bIFvXr1avKxTp06YfTo0bj44otRW1uLUaNGJe3PycnBr3/9a8ycORPvvfceLrroItx0002xj//xj3/E119/jVWrVuEvf/kLevXqhV/84hcNzuHxeBr8t2EYDd4XXcSls35m9uzZDRaZieLUVllZiVmzZjX4ep988gm2bNmCnJyc2HFvv/02TNPEf/7zn1h9kY5OW4peEOnotKF06tQJv/71r/Hwww83KGwGgLKyMjzzzDO44IIL4t7ZaUmeeuop7NmzB2PGjIn78YkTJ+LNN9/EH//4R5immfLX6devH6qqqmL/3alTJ5xzzjlYtGgRFi9ejAkTJqR87sap3y5gz5492Lx5M/r27QsA6Nu3b5OX/7/77rs47LDD4n5/Xbt2bbDITDV9+/bF6tWrbZ0AcOyxx2LTpk0Nvl70j8sV/ivgueeewwsvvIA333wTW7duxZw5c1I26ejsr3E3f4iOjk5ryoMPPogTTjgBI0eOxC233IJevXrhs88+w3XXXYcDDjgAt956a4vOV11djbKyMgSDQXz//fdYunQp7r33XkyaNAmnnHJK3M857bTT8OOPP6Jdu3ZJfY2ffvoJv/3tbzFx4kQcddRRKCwsxIcffog77rgDZ599doNjL7nkEowePRqWZTX76rWWZPbs2ejUqROKi4tx/fXXo3PnzjjnnHMAANdeey2OP/54zJkzBxdccAFWrVqFBx98EA8//LDY14+Xq6++GsOGDcNdd92Fs88+G6+++ipeeeWVBsfceOONGD16NHr06IHf/OY3cLlc+Pjjj/Hpp5/illtuwffff49JkyZh3rx5OPHEE7Fo0SKMHj0ao0aNwpAhQ9Lq19Fhir5DpKPTxnLooYfiww8/RO/evXH++efj4IMPxmWXXYZTTjkFq1atQseOHVt0vsceewzdunXDwQcfjPPOOw+ff/45nnvuuYSLAcMw0LlzZ3i93qS+RkFBAQYPHox7770Xv/zlL3HEEUdg5syZuPTSS/Hggw82OHb48OHo1q0bRo4cidLS0hZ9L4ly++23Y8qUKTjuuONQVlaGl156KeY/9thj8fzzz2PJkiU44ogjcOONN2L27Nm46KKLxL5+vAwZMgSPPfYY7rvvPhx99NFYvnw5brjhhgbHjBw5EsuWLcPy5ctx/PHHY8iQIbj33nvRs2dPKKVw0UUXYdCgQbjyyitjx0+aNAm///3vUVlZmVa/jg5TDNWS6kodHR0d8lRWVuKAAw7AokWLcN5552Wbo6Ojs59Eb5np6Oi0ioRCIezatQt333032rdvH2vYqKOjo5NM9IJIR0enVWTr1q3o1asXDjzwQCxevLjBeBEdHR2d5qK3zHR0dHR0dHTafHRRtY6Ojo6Ojk6bj14Q6ejo6Ojo6LT56AWRjo6Ojo6OTpuPXhDp6Ojo6OjotPnoBZGOjo6Ojo5Om49eEOno6Ojo6Oi0+egFkY6Ojo6Ojk6bj14Q6ejo6Ojo6LT5/H+7EFfJZawc/AAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "pdschUpperPhy = PDSCHUpperPhy(symbolsPerSlot = numSymbols, numRB = numRB, mcsIndex = mcsIndex, \n", + " numlayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " numTBs=numTBs, pdschTable = mcsTable, verbose = False)\n", + "\n", + "codeword = pdschUpperPhy(tblock = [None, None], rvid = [0, 0], enableLBRM = [False, False], \n", + " numBatch = numBatches, numBSs = numBSs)\n", + "\n", + "rnti = np.random.randint(65536, size=numBSs*numBatches)\n", + "nID = np.random.randint(1024, size=numBSs*numBatches)\n", + "bits2 = codeword[1] if numTBs == 2 else None\n", + "\n", + "pdschLowerPhyChain = PDSCHLowerPhy(pdschMappingType, configurationType, dmrsTypeAPosition, \n", + " maxLength, dmrsAdditionalPosition, l0, ld, l1)\n", + "resourceGrid = pdschLowerPhyChain(codeword[0], numRB, rank, slotNumber, scramblingID, \n", + " nSCID, rnti, nID, modOrder, startSymbol, bits2 = bits2)\n", + "\n", + "## Load the resource Grid into the transmision Grid\n", + "txGrid = np.zeros(resourceGrid.shape[0:-1]+(Nfft,), dtype= np.complex64)\n", + "bwpOffset = np.random.randint(Nfft-numRB*12)\n", + "txGrid[...,bwpOffset:bwpOffset+numRB*12] = resourceGrid\n", + "\n", + "fig, ax = pdschLowerPhyChain.displayDMRSGrid()\n", + "pdschLowerPhyChain.displayResourceGrid()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5730f5b9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1,2)\n", + "\n", + "ax[0].plot(np.abs(Hf[0,0,0,0,:,0,5]))\n", + "ax[0].grid()\n", + "ax[1].plot(np.abs(Hf[0,0,0,0,:,0,3]))\n", + "ax[1].grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f06ed8b1", + "metadata": {}, + "source": [ + "## SVD Based Beamforming: Perfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c7d0f32f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Beamforming Parameters *************\n", + "\n", + " Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)\n", + " Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)\n", + "Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Digital Beamforming\n", + "[U, S, Vh] = np.linalg.svd(Hf)\n", + "precoder = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])\n", + "combiner = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))\n", + "xBeam = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]\n", + "\n", + "print(\"************ Beamforming Parameters *************\")\n", + "print()\n", + "print(\" Precoder Shape: \"+str(precoder.shape))\n", + "print(\" Combiner Shape: \"+str(combiner.shape))\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Eigen Matrix Shape: \"+str(S.shape))\n", + "print(\"Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "25a2e828", + "metadata": {}, + "source": [ + "## Pass through Channel" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2a97e864", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Channel Parameters *************\n", + "\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Received Grid shape: (200, 1, 14, 1, 1024, 4)\n", + " Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas\n", + "# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numSamples/numFFTpoints, numTxAntennas\n", + "# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), -- numUEs, numSamples/numFFTpoints, numRxAntennas\n", + "\n", + "ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)\n", + "y = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))\n", + "\n", + "print(\"************ Channel Parameters *************\")\n", + "print()\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Received Grid shape: \"+str(y.shape))\n", + "print(\" Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "b11aa3cf", + "metadata": {}, + "source": [ + "## Link Level Simulation: SVD based Beamforming using Perfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "84467cf4", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "********************************************************\n", + "Simulation: [0] for SNRdB = -10.5\n", + "Simulation: [0] for codedBER = 0.003271497919556172\n", + "Simulation: [0] for uncodedBER = 0.004089940323955669\n", + "Simulation: [0] for BLER = 1.0\n", + "Simulation: [0] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [1] for SNRdB = -9.88888888888889\n", + "Simulation: [1] for codedBER = 0.0019166088765603328\n", + "Simulation: [1] for uncodedBER = 0.002438832054560955\n", + "Simulation: [1] for BLER = 1.0\n", + "Simulation: [1] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [2] for SNRdB = -9.277777777777779\n", + "Simulation: [2] for codedBER = 0.0011243065187239944\n", + "Simulation: [2] for uncodedBER = 0.001499147485080989\n", + "Simulation: [2] for BLER = 0.955\n", + "Simulation: [2] for Throughput = 519120.00000000047\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [3] for SNRdB = -8.666666666666666\n", + "Simulation: [3] for codedBER = 0.0005989944521497919\n", + "Simulation: [3] for uncodedBER = 0.0008077578857630008\n", + "Simulation: [3] for BLER = 0.8425\n", + "Simulation: [3] for Throughput = 1816919.9999999995\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [4] for SNRdB = -8.055555555555555\n", + "Simulation: [4] for codedBER = 0.0002869278779472954\n", + "Simulation: [4] for uncodedBER = 0.00043350383631713557\n", + "Simulation: [4] for BLER = 0.5549999999999999\n", + "Simulation: [4] for Throughput = 5133520.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [5] for SNRdB = -7.444444444444445\n", + "Simulation: [5] for codedBER = 0.00013262829403606102\n", + "Simulation: [5] for uncodedBER = 0.00022953964194373402\n", + "Simulation: [5] for BLER = 0.3125\n", + "Simulation: [5] for Throughput = 7931000.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [6] for SNRdB = -6.833333333333333\n", + "Simulation: [6] for codedBER = 7.628294036061026e-05\n", + "Simulation: [6] for uncodedBER = 0.00012510656436487638\n", + "Simulation: [6] for BLER = 0.19499999999999995\n", + "Simulation: [6] for Throughput = 9286480.000000002\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [7] for SNRdB = -6.222222222222221\n", + "Simulation: [7] for codedBER = 2.340499306518724e-05\n", + "Simulation: [7] for uncodedBER = 6.457800511508951e-05\n", + "Simulation: [7] for BLER = 0.06499999999999995\n", + "Simulation: [7] for Throughput = 10786160.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [8] for SNRdB = -5.611111111111111\n", + "Simulation: [8] for codedBER = 0.0\n", + "Simulation: [8] for uncodedBER = 3.836317135549872e-05\n", + "Simulation: [8] for BLER = 0.0\n", + "Simulation: [8] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [9] for SNRdB = -5.0\n", + "Simulation: [9] for codedBER = 0.0\n", + "Simulation: [9] for uncodedBER = 2.3231031543052003e-05\n", + "Simulation: [9] for BLER = 0.0\n", + "Simulation: [9] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n" + ] + } + ], + "source": [ + "numPoints = 10\n", + "SNRdB = np.linspace(-10.5, -5, numPoints, endpoint=True)\n", + "# SNRdB = np.linspace(-13.5, -7.5, numPoints, endpoint=True)\n", + "SNR = 10**(SNRdB/10)\n", + "\n", + "codedBER = np.zeros(numPoints)\n", + "uncodedBER = np.zeros(numPoints)\n", + "bler = np.zeros(numPoints)\n", + "throughput = np.zeros(numPoints)\n", + "\n", + "for i in range(numPoints):\n", + " print(\"********************************************************\")\n", + " print(\"Simulation: [\"+str(i)+\"] for SNRdB = \"+str(SNRdB[i]))\n", + " \n", + " ## Add noise to the received grid\n", + " yGrid = AddNoise(False)(y, 1/SNR[i], 0)\n", + "\n", + " ## Receiver Combining\n", + " rGrid = ((combiner@yGrid[...,np.newaxis])[:,0,...,0]).transpose(0,2,4,1,3)\n", + "\n", + " ## Extracting the Received Grid\n", + " rxGrid = rGrid[...,bwpOffset:bwpOffset+12*numRB]\n", + "\n", + " ## Receiver: Lower Physical layer\n", + " isChannelPerfect = False\n", + " pdschDecLowerPhy = PDSCHDecoderLowerPhy(modOrder, isChannelPerfect, isEqualized = True)\n", + " descrBits = pdschDecLowerPhy(rxGrid, pdschLowerPhyChain.pdschIndices, rnti, \n", + " nID, SNR[i], None, numTBs, hard_out = False)\n", + "\n", + " ## Receiver: Upper Physical layer\n", + " pdschUpPhyDec = PDSCHDecoderUpperPhy(numTBs = numTBs, mcsIndex = mcsIndex, symbolsPerSlot= numSymbols, \n", + " numRB = numRB, numLayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " enableLBRM = [False, False], pdschTable = mcsTable, rvid = [0, 0], verbose=False)\n", + "\n", + " bits = pdschUpPhyDec(descrBits)\n", + "\n", + " ## KPI computation\n", + " codedBER[i] = np.mean(np.abs(bits-pdschUpperPhy.tblock1))\n", + " uncodedBER[i] = np.mean(np.abs(codeword[0] - np.where(descrBits[0]>0,1,0)))\n", + " bler[i] = 1-np.mean(pdschUpPhyDec.crcCheckforCBs)\n", + " throughput[i] = (1-bler[i])*tbLen1*2000\n", + " \n", + " print(\"Simulation: [\"+str(i)+\"] for codedBER = \"+str(codedBER[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for uncodedBER = \"+str(uncodedBER[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for BLER = \"+str(bler[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for Throughput = \"+str(throughput[i]))\n", + " \n", + " print(\"********************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "5c5d5f1c", + "metadata": {}, + "source": [ + "## SVD Based Beamforming: CSI Reconstructed using CSINet" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "01adb788", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 0s 6ms/step\n", + "7/7 [==============================] - 0s 6ms/step\n", + "7/7 [==============================] - 0s 7ms/step\n", + "7/7 [==============================] - 0s 6ms/step\n", + "************ Beamforming Parameters *************\n", + "\n", + " Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)\n", + " Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)\n", + "Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Digital Beamforming\n", + "\n", + "shape = Hf[0,0,0].shape\n", + "Hest = np.zeros((shape[0], shape[2], shape[3], shape[1]), dtype = np.complex64)\n", + "\n", + "for nr in range(Nr):\n", + " H = Hf[0,0,0,...,nr,:].transpose(0,2,1)\n", + " Hprep = csinet.preprocess(H)\n", + " Hrec = csinet.predict(Hprep)\n", + " Hest[:,nr] = csinet.postprocess(Hprep, Nfft)\n", + "\n", + "[U, S, Vh] = np.linalg.svd(Hest.transpose(0,3,1,2)[np.newaxis, np.newaxis,np.newaxis])\n", + "precoder = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])\n", + "combiner = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))\n", + "xBeam = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]\n", + "\n", + "print(\"************ Beamforming Parameters *************\")\n", + "print()\n", + "print(\" Precoder Shape: \"+str(precoder.shape))\n", + "print(\" Combiner Shape: \"+str(combiner.shape))\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Eigen Matrix Shape: \"+str(S.shape))\n", + "print(\"Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "aba9a9a7", + "metadata": {}, + "source": [ + "## Pass through Wireless Channel" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "99b43407", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Channel Parameters *************\n", + "\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Received Grid shape: (200, 1, 14, 1, 1024, 4)\n", + " Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas\n", + "# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numSamples/numFFTpoints, numTxAntennas\n", + "# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), -- numUEs, numSamples/numFFTpoints, numRxAntennas\n", + "\n", + "ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)\n", + "y = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))\n", + "\n", + "print(\"************ Channel Parameters *************\")\n", + "print()\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Received Grid shape: \"+str(y.shape))\n", + "print(\" Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "80898329", + "metadata": {}, + "source": [ + "## Link Level Simulation: SVD based Beamforming using Imperfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b20c4922", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "********************************************************\n", + "Simulation: [0] for SNRdB = -10.0\n", + "Simulation: [0] for codedBER = 0.002643030513176144\n", + "Simulation: [0] for uncodedBER = 0.0033248081841432226\n", + "Simulation: [0] for BLER = 1.0\n", + "Simulation: [0] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [1] for SNRdB = -9.483333333333333\n", + "Simulation: [1] for codedBER = 0.0017995839112343967\n", + "Simulation: [1] for uncodedBER = 0.002294543904518329\n", + "Simulation: [1] for BLER = 0.99\n", + "Simulation: [1] for Throughput = 115360.0000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [2] for SNRdB = -8.966666666666667\n", + "Simulation: [2] for codedBER = 0.0012274618585298197\n", + "Simulation: [2] for uncodedBER = 0.001603154305200341\n", + "Simulation: [2] for BLER = 0.975\n", + "Simulation: [2] for Throughput = 288400.00000000023\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [3] for SNRdB = -8.45\n", + "Simulation: [3] for codedBER = 0.0008538488210818308\n", + "Simulation: [3] for uncodedBER = 0.0011327791986359761\n", + "Simulation: [3] for BLER = 0.9125\n", + "Simulation: [3] for Throughput = 1009400.0000000002\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [4] for SNRdB = -7.933333333333334\n", + "Simulation: [4] for codedBER = 0.0005799237170596394\n", + "Simulation: [4] for uncodedBER = 0.0008459079283887468\n", + "Simulation: [4] for BLER = 0.8325\n", + "Simulation: [4] for Throughput = 1932279.9999999998\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [5] for SNRdB = -7.416666666666666\n", + "Simulation: [5] for codedBER = 0.0004342926490984743\n", + "Simulation: [5] for uncodedBER = 0.0006432225063938619\n", + "Simulation: [5] for BLER = 0.7224999999999999\n", + "Simulation: [5] for Throughput = 3201240.000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [6] for SNRdB = -6.8999999999999995\n", + "Simulation: [6] for codedBER = 0.00031206657420249653\n", + "Simulation: [6] for uncodedBER = 0.0005051150895140665\n", + "Simulation: [6] for BLER = 0.6074999999999999\n", + "Simulation: [6] for Throughput = 4527880.000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [7] for SNRdB = -6.383333333333333\n", + "Simulation: [7] for codedBER = 0.00022798196948682387\n", + "Simulation: [7] for uncodedBER = 0.0004360613810741688\n", + "Simulation: [7] for BLER = 0.48750000000000004\n", + "Simulation: [7] for Throughput = 5912200.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [8] for SNRdB = -5.866666666666666\n", + "Simulation: [8] for codedBER = 6.934812760055479e-06\n", + "Simulation: [8] for uncodedBER = 0.0003923699914748508\n", + "Simulation: [8] for BLER = 0.020000000000000018\n", + "Simulation: [8] for Throughput = 11305280.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [9] for SNRdB = -5.35\n", + "Simulation: [9] for codedBER = 0.0\n", + "Simulation: [9] for uncodedBER = 0.0003610400682011935\n", + "Simulation: [9] for BLER = 0.0\n", + "Simulation: [9] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n" + ] + } + ], + "source": [ + "numPoints = 10\n", + "SNRdB2 = np.linspace(-10, -5.35, numPoints, endpoint=True)\n", + "# SNRdB = np.linspace(-13.5, -7.5, numPoints, endpoint=True)\n", + "SNR2 = 10**(SNRdB2/10)\n", + "\n", + "codedBER2 = np.zeros(numPoints)\n", + "uncodedBER2 = np.zeros(numPoints)\n", + "bler2 = np.zeros(numPoints)\n", + "throughput2 = np.zeros(numPoints)\n", + "\n", + "for i in range(numPoints):\n", + " print(\"********************************************************\")\n", + " print(\"Simulation: [\"+str(i)+\"] for SNRdB = \"+str(SNRdB2[i]))\n", + " \n", + " ## Add noise to the received grid\n", + " yGrid = AddNoise(False)(y, 1/SNR2[i], 0)\n", + "\n", + " ## Receiver Combining\n", + " rGrid = ((combiner@yGrid[...,np.newaxis])[:,0,...,0]).transpose(0,2,4,1,3)\n", + "\n", + " ## Extracting the Received Grid\n", + " rxGrid = rGrid[...,bwpOffset:bwpOffset+12*numRB]\n", + "\n", + " ## Receiver: Lower Physical layer\n", + " isChannelPerfect = False\n", + " pdschDecLowerPhy = PDSCHDecoderLowerPhy(modOrder, isChannelPerfect, isEqualized = True)\n", + " descrBits = pdschDecLowerPhy(rxGrid, pdschLowerPhyChain.pdschIndices, rnti, \n", + " nID, SNR2[i], None, numTBs, hard_out = False)\n", + "\n", + " ## Receiver: Upper Physical layer\n", + " pdschUpPhyDec = PDSCHDecoderUpperPhy(numTBs = numTBs, mcsIndex = mcsIndex, symbolsPerSlot= numSymbols, \n", + " numRB = numRB, numLayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " enableLBRM = [False, False], pdschTable = mcsTable, rvid = [0, 0], verbose=False)\n", + "\n", + " bits = pdschUpPhyDec(descrBits)\n", + "\n", + " ## KPI computation\n", + " codedBER2[i] = np.mean(np.abs(bits-pdschUpperPhy.tblock1))\n", + " uncodedBER2[i] = np.mean(np.abs(codeword[0] - np.where(descrBits[0]>0,1,0)))\n", + " bler2[i] = 1 - np.mean(pdschUpPhyDec.crcCheckforCBs)\n", + " throughput2[i] = (1-bler2[i])*tbLen1*2000\n", + " \n", + " print(\"Simulation: [\"+str(i)+\"] for codedBER = \"+str(codedBER2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for uncodedBER = \"+str(uncodedBER2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for BLER = \"+str(bler2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for Throughput = \"+str(throughput2[i]))\n", + " \n", + " print(\"********************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2703a39b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(pdschUpPhyDec.crcCheckforCBs)" + ] + }, + { + "cell_type": "markdown", + "id": "afa435f2", + "metadata": {}, + "source": [ + "# Performance Evaluations\n", + "\n", + "## Throughput Evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4a32c773", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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1185f/48Tz/9dIH2axsfUlrx9/cnKioKf39/q2zBggV06dKFqKgo1q5dy+HDh0lISCA1NZUZM2YAsGTJEiZMmMATTzzBgQMH2LFjB88++yxp2j3hhICAAD788MNcsXGeQK/XExUVZY2bLY1IZ0gikUgKw+XL1o/u33/tvnP5MhiNlp6fhx4Cm2BSO7KzLcuPHwctZunKldz7unzZLdWioqKsn7CwMBRFISoqigoVKuR6+f322280b96coKAg2rRpw9GjR63LtJ6KxYsX28VN/f333/Tq1YuQkBDKlClD//79SUpKsm43dOhQevfubafThAkT6Nixo/X79evXGTx4MMHBwURHRzNr1iw6duxoHRLTMBgMDB8+nNDQUKpUqcLChQuty06fPo2iKKxYsYI2bdoQEBBA/fr12bJli3Wdjz76iPDwcLt9fvnll9ahmY8++ojXXnuNgwcPWnvRPvroI5fP9YULF6xOzpIlS+jYsSPVqlWjffv2LF68mFdeeQWAr7/+mv79+zNixAhq1KjB7bffzqBBg3j99dfz3H/t2rXp1KkTL774Yp7r/fHHH9xzzz2EhIQQGRnJww8/bE1oGDZsGLt27WLOnDlWG93pVfovI50hiUQiKQwVK0LFiuiioqjWsiW6qCirjGbNwM8PZs927ghpZGdb1tOoW/fmfmw/RcSLL77IjBkz2Lt3Lz4+PgwfPtxu+YkTJ1i7di1ffPEFBw4cQFVVevXqRXJyMlu2bGHDhg0kJiYyYMAAt447ceJEduzYwddff82GDRvYtm0b+/bty7XejBkzaN68Ofv37+exxx7j0UcftXPYAJ555hkmTZrE/v37ad26NT179uTff/91SY8BAwYwadIkbr/9dmtvmju2/PDDD2RlZfHss886XK45YlFRUfz6668FyoR66623WLt2LXv37nW4/OrVq3Tu3JkmTZqwd+9e1q9fT1JSEv379wdg9uzZNGnShJEjR1ptjImJcVuP/yLSGZJIJJKi4q67QK+Hzz5zbf3lywsdSF1QXn/9dTp06EC9evWYPHkyO3futEuvzsrK4uOPP6ZJkyY0bNiQn376iUOHDvHZZ5/RrFkzWrVqxccff8yWLVvYs2ePS8e8fv06y5YtY/r06dx1113Ur1+fpUuX5soYBOjRowePPfYYNWrU4LnnniMiIoJNmzbZrTNu3Dj69u1L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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "ax.semilogy(SNRdB, throughput, \"b\", marker = \"*\", lw = 3, mec = \"k\", mfc = \"r\", ms = 12, label=\"Throughput [Perfect-CSI]\")\n", + "ax.semilogy(SNRdB2, throughput2, \"--r\", marker = \"o\", lw = 3, mec = \"w\", mfc = \"r\", ms = 9, label=\"Throughput [CSINet]\")\n", + "\n", + "ax.set_xlabel(\"Signal to Noise Ratio (dB)\")\n", + "ax.set_ylabel(\"Throughput (bits per second)\")\n", + "ax.set_title(\"Data-rate Evaluation: SNR (dB) vs Throughput\", fontsize = 16)\n", + "ax.legend(loc=\"best\")\n", + "\n", + "ax.set_xticks(SNRdB2, minor=False)\n", + "ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))\n", + "ytck = 10**(np.arange(2, 9)).repeat(10)*np.tile(np.arange(1, 11), [7])\n", + "ax.set_yticks(ytck, minor=True)\n", + "ax.set_yticks(10**(np.arange(2, 8)), minor=False)\n", + "ax.set_ylim([10**2, 10**8])\n", + "# ax.set_xlim([0.999*SNRdB[0], 1.05*SNRdB[-1]])\n", + "ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')\n", + "ax.grid(which = 'major', alpha = 0.65, color = \"k\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d76d9dca", + "metadata": {}, + "source": [ + "## BLER Evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "61ffbf26", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "ax.semilogy(SNRdB, bler, \"g\", marker = \"X\", lw = 3, mec = \"k\", mfc = \"w\", ms = 9, label=\"BLER [Perfect-CSI]\")\n", + "ax.semilogy(SNRdB2, bler2, \"--b\", marker = \"o\", lw = 3, mec = \"w\", mfc = \"r\", ms = 9, label=\"BLER [CSI-Net]\")\n", + "\n", + "ax.legend(loc=\"best\")\n", + "ax.set_xlabel(\"Signal to Noise Ratio (dB)\")\n", + "ax.set_ylabel(\"Block (Bit) Error Rate\")\n", + "ax.set_title(\"Reliability Evaluation: SNR (dB) vs B(L)ER\", fontsize = 16)\n", + "\n", + "# ax.set_xticks(SNRdB1)\n", + "ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))\n", + "ytck = (0.1**(np.arange(1, 10))).repeat(9)*np.tile(np.arange(10, 1,-1), [9])\n", + "ytck = np.concatenate([[1],ytck])\n", + "ax.set_yticks(ytck, minor=True)\n", + "ax.set_yticks(0.1**(np.arange(0, 9)), minor=False)\n", + "ax.set_ylim([0.5*10**-5,1.2])\n", + "\n", + "ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')\n", + "ax.grid(which = 'major', alpha = 0.65, color = \"k\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ace29977", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "1. [Deep Learning for Massive MIMO CSI Feedback](https://arxiv.org/pdf/1712.08919)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "654ffcda", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/api/Projects/Project3/Generate_Channel_Datasets.ipynb.txt b/_sources/api/Projects/Project3/Generate_Channel_Datasets.ipynb.txt new file mode 100644 index 00000000..4b1a8228 --- /dev/null +++ b/_sources/api/Projects/Project3/Generate_Channel_Datasets.ipynb.txt @@ -0,0 +1,390 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "080069f0", + "metadata": {}, + "source": [ + "# Wireless Channel Dataset Generation for Training the AI based Models\n", + "\n", + "Wireless channel dataset generation and preprocessing involve the creation and preparation of datasets containing information about the wireless communication channel. Here's an overview of the process:\n", + "\n", + "1. **Dataset Generation**:\n", + "\n", + " - **Simulation** (``We are using this``): One common approach is to use channel modeling and simulation software to generate synthetic datasets. This involves modeling various channel characteristics such as path loss, shadowing, multipath propagation, and fading effects.\n", + " \n", + " - **Measurement**: Real-world measurements can be collected using specialized hardware and equipment deployed in different environments. These measurements capture the characteristics of the wireless channel under various conditions and scenarios.\n", + "\n", + "2. **Data Collection**:\n", + "\n", + " - In simulation-based approaches, data is generated by simulating the propagation of electromagnetic waves through the environment and computing channel parameters such as signal strength, delay spread, and Doppler shift.\n", + " - In measurement-based approaches, data is collected by measuring the received signal strength and other relevant parameters at multiple locations in the environment over time.\n", + "\n", + "3. **Data Preprocessing**:\n", + "\n", + " - **Cleaning**: The collected data may contain errors, outliers, or missing values that need to be identified and corrected. Cleaning involves removing or correcting these inconsistencies to ensure the quality of the dataset.\n", + " - **Normalization**: Data normalization involves scaling the values of features to a standard range to ensure uniformity and comparability across different features.\n", + " - **Feature Extraction**: Relevant features such as signal strength, delay spread, angle of arrival, and Doppler shift are extracted from the raw data. Feature extraction may involve signal processing techniques such as Fourier transforms, wavelet analysis, or machine learning algorithms.\n", + " - **Dimensionality Reduction**: In some cases, datasets may contain a large number of features, leading to computational complexity and overfitting. Dimensionality reduction techniques such as Principal Component Analysis (PCA) or feature selection methods are applied to reduce the number of features while preserving the most relevant information.\n", + "\n", + "\n", + "Wireless channel dataset generation and preprocessing are crucial steps in the development of machine learning models, algorithms, and systems for wireless communication. A well-prepared dataset ensures the accuracy, reliability, and generalizability of the models and systems built upon it.\n", + "\n", + "\n", + "## Import Python Libraries\n", + "\n", + "### Import Basic Python LIbraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7eb02cb4", + "metadata": {}, + "outputs": [], + "source": [ + "# %matplotlib widgets\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "import os\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"-1\"\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' \n", + "\n", + "import numpy as np\n", + "\n", + "# from IPython.display import display, HTML\n", + "# display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "37306fc7", + "metadata": {}, + "source": [ + "### Import 5G Toolkit Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9934198e", + "metadata": {}, + "outputs": [], + "source": [ + "from csiNet import CSINet\n", + "\n", + "import sys\n", + "sys.path.append(\"../../\")\n", + "\n", + "from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize\n", + "from toolkit5G.PhysicalChannels import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy\n", + "from toolkit5G.ChannelModels import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator\n", + "from toolkit5G.Configurations import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration\n", + "from toolkit5G.ChannelProcessing import AddNoise, ApplyChannel\n", + "from toolkit5G.SymbolMapping import Mapper, Demapper" + ] + }, + { + "cell_type": "markdown", + "id": "6a234109", + "metadata": {}, + "source": [ + "## Simulation Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c42e12d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Simulation Parameters *************\n", + "\n", + " numBatches: 10000\n", + " numRB: 85\n", + " fft Size: 1024\n", + " numBSs: 1\n", + " numUEs: 10000\n", + " scs: 30000\n", + " slotNumber: 9\n", + " terrain: CDL-A\n", + "Tx Ant Struture: [ 1 1 32 1 1]\n", + "Rx Ant Struture: [1 1 1 1 1]\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Carrier Frequency\n", + "carrierFrequency = 3.6*10**9 \n", + "delaySpread = 100*(10**-9)\n", + "numBatches = 10000 # Number of batches considered for simulation\n", + "scs = 30*10**3 # Subcarrier Spacing for simulation\n", + "numBSs = 1 # Number of BSs considered for simulation\n", + "# Number of UEs considered for simulation\n", + "numUEs = numBatches # For now we are assuming that the numbatches are captured via numUEs\n", + "numRB = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier\n", + "slotNumber = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation\n", + "terrain = \"CDL-A\" # Terrain\n", + "txAntStruture = np.array([1,1,32,1,1]) # Tx Antenna Structure\n", + "rxAntStruture = np.array([1,1,1,1,1]) # Tx Antenna Structure\n", + "Nfft = 1024 # FFTSize\n", + "\n", + "print(\"************ Simulation Parameters *************\")\n", + "print()\n", + "print(\" numBatches: \"+str(numBatches))\n", + "print(\" numRB: \"+str(numRB))\n", + "print(\" fft Size: \"+str(Nfft))\n", + "print(\" numBSs: \"+str(numBSs))\n", + "print(\" numUEs: \"+str(numUEs))\n", + "print(\" scs: \"+str(scs))\n", + "print(\" slotNumber: \"+str(slotNumber))\n", + "print(\" terrain: \"+str(terrain))\n", + "print(\"Tx Ant Struture: \"+str(txAntStruture))\n", + "print(\"Rx Ant Struture: \"+str(rxAntStruture))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "4116f8ad", + "metadata": {}, + "source": [ + "## Set Channel Parameters and Generate Common Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8e7ba9fc", + "metadata": {}, + "outputs": [], + "source": [ + "# Antenna Array at UE side\n", + "# assuming antenna element type to be \"OMNI\"\n", + "# with 2 panel and 2 single polarized antenna element per panel.\n", + "ueAntArray = AntennaArrays(antennaType = \"OMNI\", centerFrequency = carrierFrequency, \n", + " arrayStructure = rxAntStruture)\n", + "ueAntArray()\n", + "\n", + "# # Radiation Pattern of Rx antenna element \n", + "# ueAntArray.displayAntennaRadiationPattern()\n", + "\n", + "\n", + "# Antenna Array at BS side\n", + "# assuming antenna element type to be \"3GPP_38.901\", a parabolic antenna \n", + "# with 4 panel and 4 single polarized antenna element per panel.\n", + "bsAntArray = AntennaArrays(antennaType = \"3GPP_38.901\", centerFrequency = carrierFrequency,\n", + " arrayStructure = txAntStruture)\n", + "bsAntArray()\n", + " \n", + "# # Radiation Pattern of Tx antenna element \n", + "# bsAntArray[0].displayAntennaRadiationPattern()\n", + "\n", + "# Layout Parameters\n", + "isd = 200 # inter site distance\n", + "minDist = 10 # min distance between each UE and BS \n", + "ueHt = 1.5 # UE height\n", + "bsHt = 25 # BS height\n", + "bslayoutType = \"Hexagonal\" # BS layout type\n", + "ueDropType = \"Hexagonal\" # UE drop type\n", + "htDist = \"equal\" # UE height distribution\n", + "ueDist = \"equal\" # UE Distribution per site\n", + "nSectorsPerSite = 1 # number of sectors per site\n", + "maxNumFloors = 1 # Max number of floors in an indoor object\n", + "minNumFloors = 1 # Min number of floors in an indoor object\n", + "heightOfRoom = 3 # height of room or ceiling in meters\n", + "indoorUEfract = 0.5 # Fraction of UEs located indoor\n", + "lengthOfIndoorObject = 3 # length of indoor object typically having rectangular geometry \n", + "widthOfIndoorObject = 3 # width of indoor object\n", + "# forceLOS = True # boolen flag if true forces every link to be in LOS state\n", + "forceLOS = False # boolen flag if true forces every link to be in LOS state\n", + "\n", + "Nt = bsAntArray.numAntennas # Number of BS Antennas\n", + "Nr = ueAntArray.numAntennas\n" + ] + }, + { + "cell_type": "markdown", + "id": "45c69959", + "metadata": {}, + "source": [ + "## Generate the Wireless Channels Databases and Preprocess it before storage.\n", + "\n", + "1. Generate OFDM Wireless Channels.\n", + "2. Preprocess the OFDM Channel\n", + "3. Store the preprocessed wireless channels\n", + "\n", + "``Important``: Make sure you have **Databases** directory/folder where datasets will be stored." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f421b76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n" + ] + } + ], + "source": [ + "MonteCarloIterations = 10\n", + "\n", + "numTaps = 32\n", + "codewordSize = 512\n", + "\n", + "for mci in range(4,MonteCarloIterations):\n", + " # simulation layout object \n", + " simLayoutObj = SimulationLayout(numOfBS = numBSs,\n", + " numOfUE = numUEs,\n", + " heightOfBS = bsHt,\n", + " heightOfUE = ueHt, \n", + " ISD = isd,\n", + " layoutType = bslayoutType,\n", + " ueDropMethod = ueDropType, \n", + " UEdistibution = ueDist,\n", + " UEheightDistribution = htDist,\n", + " numOfSectorsPerSite = nSectorsPerSite,\n", + " ueRoute = None)\n", + "\n", + " simLayoutObj(terrain = terrain, \n", + " carrierFreq = carrierFrequency, \n", + " ueAntennaArray = ueAntArray,\n", + " bsAntennaArray = bsAntArray,\n", + " indoorUEfraction = indoorUEfract,\n", + " lengthOfIndoorObject = lengthOfIndoorObject,\n", + " widthOfIndoorObject = widthOfIndoorObject,\n", + " forceLOS = forceLOS)\n", + "\n", + " # displaying the topology of simulation layout\n", + "# fig, ax = simLayoutObj.display2DTopology()\n", + "\n", + " paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)\n", + "\n", + " # paramGen.displayClusters((0,0,0), rayIndex = 0)\n", + " channel = paramGen.getChannel()\n", + " \n", + " # Generate OFDM Channel\n", + " Hf = channel.ofdm(scs, Nfft, normalizeChannel = True)[0,0,0,...,0,:].transpose(0,2,1)\n", + "\n", + " # Preprocess the Frequency Domain channel\n", + " csinet = CSINet()\n", + " model = csinet(Nt, numTaps, codewordSize)\n", + " Hprep = csinet.preprocess(Hf)\n", + " \n", + " np.savez(\"Databases/PreprocessedChannel-dB-\"+str(mci)+\".npz\",\n", + " Hprep = Hprep, Nfft = Nfft, Nt = Nt, codewordSize = codewordSize, numTaps = numTaps,\n", + " carrierFrequency = carrierFrequency, terrain = terrain, delaySpread = delaySpread, \n", + " isd = isd, txAntStruture = txAntStruture, rxAntStruture = rxAntStruture)\n", + "\n", + " print(\" Number of BSs: \"+str(numBSs))\n", + " print(\" Shape of Channel: \"+str(Hf.shape))\n", + " print(\"*****************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "8f4dcdbc", + "metadata": {}, + "source": [ + "## Aggregate all the Datasets into a single Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97ab88bc", + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"Databases/PreprocessedChannel-dB-\"+str(0)+\".npz\"\n", + "db = np.load(filename)\n", + "Hp = db[\"Hprep\"]\n", + "for mci in range(1,10):\n", + " filename = \"Databases/PreprocessedChannel-dB-\"+str(mci)+\".npz\"\n", + " db = np.load(filename)\n", + " Hp = np.concatenate([Hp, db[\"Hprep\"]], axis=0)\n", + " \n", + "np.savez(\"Databases/PreprocessedChannel-dB.npz\", Hp = Hp, Nfft = 1024, Nt = 32)" + ] + }, + { + "cell_type": "markdown", + "id": "24ee3125", + "metadata": {}, + "source": [ + "## Display Sparsity of Wireless Channels" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd99db8a", + "metadata": {}, + "outputs": [], + "source": [ + "numChannels = 10\n", + "numBatches = Hp.shape[0]\n", + "idx = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)\n", + "\n", + "fig, ax = plt.subplots(2,10, figsize = (17.5, 5))\n", + "\n", + "print(idx)\n", + "for n in range(numChannels):\n", + " ax[0,n].imshow(np.abs(Hp[idx[n],0])**2 + np.abs(Hp[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + "# ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " \n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/_sources/api/Projects/Project3/project3.rst.txt b/_sources/api/Projects/Project3/project3.rst.txt index ecb80225..0e6f63a8 100644 --- a/_sources/api/Projects/Project3/project3.rst.txt +++ b/_sources/api/Projects/Project3/project3.rst.txt @@ -1,4 +1,11 @@ -Channel Interpolation based on SRCNN and DnCNN -============================================== -Project-3 +Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +=============================================================================================================== + +.. toctree:: + :maxdepth: 4 + + + CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb + Generate_Channel_Datasets.ipynb + trainCSINet.ipynb diff --git a/_sources/api/Projects/Project3/trainCSINet.ipynb.txt b/_sources/api/Projects/Project3/trainCSINet.ipynb.txt new file mode 100644 index 00000000..39cd1e84 --- /dev/null +++ b/_sources/api/Projects/Project3/trainCSINet.ipynb.txt @@ -0,0 +1,1047 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "073df96d", + "metadata": {}, + "source": [ + "# Training the CSINet\n", + "\n", + "## Import Libraries\n", + "\n", + "### Import Python Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "acc4abd6", + "metadata": {}, + "outputs": [], + "source": [ + "# %matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "import os\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"-1\"\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' \n", + "\n", + "import numpy as np\n", + "\n", + "# from IPython.display import display, HTML\n", + "# display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "57eb8d37", + "metadata": {}, + "source": [ + "## Important AI-ML Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4392fe8e", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "import numpy as np\n", + "\n", + "from keras.layers import Input, Dense, BatchNormalization, Reshape, Conv2D, add, LeakyReLU\n", + "from keras.models import Model, load_model\n", + "from keras.callbacks import TensorBoard, Callback\n", + "\n", + "from csiNet import CSINet" + ] + }, + { + "cell_type": "markdown", + "id": "25a16e12", + "metadata": {}, + "source": [ + "## Load Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b91c9b54", + "metadata": {}, + "outputs": [], + "source": [ + "db = np.load(\"Databases/PreprocessedChannel-dB.npz\")" + ] + }, + { + "cell_type": "markdown", + "id": "8a5df3dd", + "metadata": {}, + "source": [ + "## Set Training Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5aacef92", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "**************************\n", + "Number of subcarriers: 32\n", + "Number of encoded bits: 512\n", + "Number of antennas: 32\n", + "Number of batches: 110000\n", + "**************************\n" + ] + } + ], + "source": [ + "numTaps = 32\n", + "codewordSize = 512\n", + "Hp = db[\"Hp\"]\n", + "Nt = db[\"Nt\"]\n", + "numBatches = Hp.shape[0]\n", + "\n", + "\n", + "print(\"**************************\")\n", + "print(\"Number of subcarriers: \"+str(numTaps))\n", + "print(\"Number of encoded bits: \"+str(codewordSize))\n", + "print(\"Number of antennas: \"+str(Nt))\n", + "print(\"Number of batches: \"+str(numBatches))\n", + "print(\"**************************\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e491b89e", + "metadata": {}, + "outputs": [], + "source": [ + "csinet = CSINet()\n", + "model = csinet(Nt, numSubcarrier, codewordSize)\n", + "\n", + "i = int(0.9*numBatches)\n", + "k = int(numBatches)\n", + "\n", + "Htrain = Hp[0:i]\n", + "Hval = Hp[i:k]\n", + "# Htest = Hprep[k:numBatches]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "14cf3332", + "metadata": {}, + "outputs": [], + "source": [ + "# model = load_model('models/CSINet.keras')\n", + "# csinet.model = model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eea28f44", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.7742e-04 - val_loss: 0.0043\n", + "Epoch 2/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.7259e-04 - val_loss: 0.0037\n", + "Epoch 3/1000\n", + "20/20 [==============================] - 70s 4s/step - loss: 1.6864e-04 - val_loss: 0.0029\n", + "Epoch 4/1000\n", + "20/20 [==============================] - 70s 4s/step - loss: 1.6530e-04 - val_loss: 0.0022\n", + "Epoch 5/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.6243e-04 - val_loss: 0.0017\n", + "Epoch 6/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.6001e-04 - val_loss: 0.0015\n", + "Epoch 7/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5802e-04 - val_loss: 0.0013\n", + "Epoch 8/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5634e-04 - val_loss: 0.0011\n", + "Epoch 9/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5492e-04 - val_loss: 8.7465e-04\n", + "Epoch 10/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5370e-04 - val_loss: 6.8815e-04\n", + "Epoch 11/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5262e-04 - val_loss: 5.2990e-04\n", + "Epoch 12/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5167e-04 - val_loss: 4.0591e-04\n", + "Epoch 13/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5085e-04 - val_loss: 3.1419e-04\n", + "Epoch 14/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5011e-04 - val_loss: 2.5195e-04\n", + "Epoch 15/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4947e-04 - val_loss: 2.1186e-04\n", + "Epoch 16/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4891e-04 - val_loss: 1.8665e-04\n", + "Epoch 17/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4841e-04 - val_loss: 1.7138e-04\n", + "Epoch 18/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4796e-04 - val_loss: 1.6209e-04\n", + "Epoch 19/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4754e-04 - val_loss: 1.5635e-04\n", + "Epoch 20/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4717e-04 - val_loss: 1.5279e-04\n", + "Epoch 21/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4683e-04 - val_loss: 1.5035e-04\n", + "Epoch 22/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4653e-04 - val_loss: 1.4878e-04\n", + "Epoch 23/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4625e-04 - val_loss: 1.4770e-04\n", + "Epoch 24/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4599e-04 - val_loss: 1.4683e-04\n", + "Epoch 25/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4575e-04 - val_loss: 1.4617e-04\n", + "Epoch 26/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4553e-04 - val_loss: 1.4551e-04\n", + "Epoch 27/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4533e-04 - val_loss: 1.4505e-04\n", + "Epoch 28/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4512e-04 - val_loss: 1.4463e-04\n", + "Epoch 29/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4493e-04 - val_loss: 1.4427e-04\n", + "Epoch 30/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4475e-04 - val_loss: 1.4402e-04\n", + "Epoch 31/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4457e-04 - val_loss: 1.4354e-04\n", + "Epoch 32/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4440e-04 - val_loss: 1.4335e-04\n", + "Epoch 33/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4423e-04 - val_loss: 1.4307e-04\n", + "Epoch 34/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4407e-04 - val_loss: 1.4283e-04\n", + "Epoch 35/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4391e-04 - val_loss: 1.4230e-04\n", + "Epoch 36/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4376e-04 - val_loss: 1.4228e-04\n", + "Epoch 37/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4361e-04 - val_loss: 1.4194e-04\n", + "Epoch 38/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4346e-04 - val_loss: 1.4173e-04\n", + "Epoch 39/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4332e-04 - val_loss: 1.4149e-04\n", + "Epoch 40/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4318e-04 - val_loss: 1.4133e-04\n", + "Epoch 41/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4304e-04 - val_loss: 1.4106e-04\n", + "Epoch 42/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4289e-04 - val_loss: 1.4086e-04\n", + "Epoch 43/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4274e-04 - val_loss: 1.4061e-04\n", + "Epoch 44/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4261e-04 - val_loss: 1.4033e-04\n", + "Epoch 45/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4249e-04 - val_loss: 1.4021e-04\n", + "Epoch 46/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4235e-04 - val_loss: 1.4001e-04\n", + "Epoch 47/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4221e-04 - val_loss: 1.3973e-04\n", + "Epoch 48/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4211e-04 - val_loss: 1.3967e-04\n", + "Epoch 49/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4198e-04 - val_loss: 1.3946e-04\n", + "Epoch 50/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4185e-04 - val_loss: 1.3920e-04\n", + "Epoch 51/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4172e-04 - val_loss: 1.3910e-04\n", + "Epoch 52/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4156e-04 - val_loss: 1.3889e-04\n", + "Epoch 53/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4144e-04 - val_loss: 1.3886e-04\n", + "Epoch 54/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4130e-04 - val_loss: 1.3855e-04\n", + "Epoch 55/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4118e-04 - val_loss: 1.3846e-04\n", + "Epoch 56/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4106e-04 - val_loss: 1.3834e-04\n", + "Epoch 57/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4092e-04 - val_loss: 1.3812e-04\n", + "Epoch 58/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4080e-04 - val_loss: 1.3790e-04\n", + "Epoch 59/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4067e-04 - val_loss: 1.3776e-04\n", + "Epoch 60/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4056e-04 - val_loss: 1.3763e-04\n", + "Epoch 61/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4044e-04 - val_loss: 1.3736e-04\n", + "Epoch 62/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4029e-04 - val_loss: 1.3737e-04\n", + "Epoch 63/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4013e-04 - val_loss: 1.3721e-04\n", + "Epoch 64/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4004e-04 - val_loss: 1.3699e-04\n", + "Epoch 65/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3984e-04 - val_loss: 1.3682e-04\n", + "Epoch 66/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3969e-04 - val_loss: 1.3674e-04\n", + "Epoch 67/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 1.3660e-04\n", + "Epoch 68/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3942e-04 - val_loss: 1.3652e-04\n", + "Epoch 69/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3928e-04 - val_loss: 1.3637e-04\n", + "Epoch 70/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3915e-04 - val_loss: 1.3635e-04\n", + "Epoch 71/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3897e-04 - val_loss: 1.3625e-04\n", + "Epoch 72/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3884e-04 - val_loss: 1.3625e-04\n", + "Epoch 73/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3883e-04 - val_loss: 1.3603e-04\n", + "Epoch 74/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3857e-04 - val_loss: 1.3597e-04\n", + "Epoch 75/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3841e-04 - val_loss: 1.3604e-04\n", + "Epoch 76/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3821e-04 - val_loss: 1.3579e-04\n", + "Epoch 77/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3795e-04 - val_loss: 1.3555e-04\n", + "Epoch 78/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3775e-04 - val_loss: 1.3563e-04\n", + "Epoch 79/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3756e-04 - val_loss: 1.3545e-04\n", + "Epoch 80/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3738e-04 - val_loss: 1.3547e-04\n", + "Epoch 81/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3722e-04 - val_loss: 1.3548e-04\n", + "Epoch 82/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3710e-04 - val_loss: 1.3555e-04\n", + "Epoch 83/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3696e-04 - val_loss: 1.3547e-04\n", + "Epoch 84/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3697e-04 - val_loss: 1.3563e-04\n", + "Epoch 85/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3651e-04 - val_loss: 1.3530e-04\n", + "Epoch 86/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3612e-04 - val_loss: 1.3516e-04\n", + "Epoch 87/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3613e-04 - val_loss: 1.3505e-04\n", + "Epoch 88/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3574e-04 - val_loss: 1.3499e-04\n", + "Epoch 89/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3578e-04 - val_loss: 1.3540e-04\n", + "Epoch 90/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3549e-04 - val_loss: 1.3534e-04\n", + "Epoch 91/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3534e-04 - val_loss: 1.3487e-04\n", + "Epoch 92/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3491e-04 - val_loss: 1.3490e-04\n", + "Epoch 93/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3475e-04 - val_loss: 1.3490e-04\n", + "Epoch 94/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3442e-04 - val_loss: 1.3471e-04\n", + "Epoch 95/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3440e-04 - val_loss: 1.3496e-04\n", + "Epoch 96/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3414e-04 - val_loss: 1.3508e-04\n", + "Epoch 97/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3431e-04 - val_loss: 1.3493e-04\n", + "Epoch 98/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3403e-04 - val_loss: 1.3515e-04\n", + "Epoch 99/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3323e-04 - val_loss: 1.3469e-04\n", + "Epoch 100/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3297e-04 - val_loss: 1.3585e-04\n", + "Epoch 101/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3307e-04 - val_loss: 1.3581e-04\n", + "Epoch 102/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3270e-04 - val_loss: 1.3471e-04\n", + "Epoch 103/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3247e-04 - val_loss: 1.3364e-04\n", + "Epoch 104/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 2.7186e-04 - val_loss: 5.9999e-04\n", + "Epoch 105/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 2.4725e-04 - val_loss: 8.0587e-04\n", + "Epoch 106/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4827e-04 - val_loss: 6.0315e-04\n", + "Epoch 107/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 3.6259e-04\n", + "Epoch 108/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3717e-04 - val_loss: 2.5379e-04\n", + "Epoch 109/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3604e-04 - val_loss: 2.0073e-04\n", + "Epoch 110/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3526e-04 - val_loss: 1.7553e-04\n", + "Epoch 111/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3462e-04 - val_loss: 1.6115e-04\n", + "Epoch 112/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3404e-04 - val_loss: 1.5349e-04\n", + "Epoch 113/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3351e-04 - val_loss: 1.4661e-04\n", + "Epoch 114/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3302e-04 - val_loss: 1.4291e-04\n", + "Epoch 115/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3255e-04 - val_loss: 1.4210e-04\n", + "Epoch 116/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3211e-04 - val_loss: 1.4070e-04\n", + "Epoch 117/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3170e-04 - val_loss: 1.3908e-04\n", + "Epoch 118/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3821e-04\n", + "Epoch 119/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3093e-04 - val_loss: 1.3706e-04\n", + "Epoch 120/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3058e-04 - val_loss: 1.3630e-04\n", + "Epoch 121/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3024e-04 - val_loss: 1.3509e-04\n", + "Epoch 122/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2990e-04 - val_loss: 1.3495e-04\n", + "Epoch 123/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2958e-04 - val_loss: 1.3444e-04\n", + "Epoch 124/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2927e-04 - val_loss: 1.3385e-04\n", + "Epoch 125/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2897e-04 - val_loss: 1.3401e-04\n", + "Epoch 126/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2869e-04 - val_loss: 1.3360e-04\n", + "Epoch 127/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2841e-04 - val_loss: 1.3312e-04\n", + "Epoch 128/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2815e-04 - val_loss: 1.3210e-04\n", + "Epoch 129/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2788e-04 - val_loss: 1.3211e-04\n", + "Epoch 130/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2762e-04 - val_loss: 1.3188e-04\n", + "Epoch 131/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2736e-04 - val_loss: 1.3199e-04\n", + "Epoch 132/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2712e-04 - val_loss: 1.3122e-04\n", + "Epoch 133/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.3178e-04\n", + "Epoch 134/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2663e-04 - val_loss: 1.3107e-04\n", + "Epoch 135/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2638e-04 - val_loss: 1.3061e-04\n", + "Epoch 136/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2614e-04 - val_loss: 1.3039e-04\n", + "Epoch 137/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2590e-04 - val_loss: 1.3072e-04\n", + "Epoch 138/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2567e-04 - val_loss: 1.2932e-04\n", + "Epoch 139/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.3050e-04\n", + "Epoch 140/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2519e-04 - val_loss: 1.2852e-04\n", + "Epoch 141/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2502e-04 - val_loss: 1.2818e-04\n", + "Epoch 142/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2473e-04 - val_loss: 1.2908e-04\n", + "Epoch 143/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2453e-04 - val_loss: 1.3138e-04\n", + "Epoch 144/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2444e-04 - val_loss: 1.2780e-04\n", + "Epoch 145/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2419e-04 - val_loss: 1.2681e-04\n", + "Epoch 146/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2402e-04 - val_loss: 1.2615e-04\n", + "Epoch 147/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2369e-04 - val_loss: 1.2638e-04\n", + "Epoch 148/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2352e-04 - val_loss: 1.2830e-04\n", + "Epoch 149/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2314e-04 - val_loss: 1.2605e-04\n", + "Epoch 150/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2286e-04 - val_loss: 1.2743e-04\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 151/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2271e-04 - val_loss: 1.2598e-04\n", + "Epoch 152/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 0.0011 - val_loss: 0.0030\n", + "Epoch 153/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 8.0737e-04 - val_loss: 7.5406e-04\n", + "Epoch 154/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 2.2217e-04 - val_loss: 4.4022e-04\n", + "Epoch 155/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.6454e-04 - val_loss: 2.8927e-04\n", + "Epoch 156/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.5252e-04 - val_loss: 2.2517e-04\n", + "Epoch 157/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4766e-04 - val_loss: 1.9435e-04\n", + "Epoch 158/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4478e-04 - val_loss: 1.7687e-04\n", + "Epoch 159/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4276e-04 - val_loss: 1.6398e-04\n", + "Epoch 160/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4121e-04 - val_loss: 1.5581e-04\n", + "Epoch 161/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.4001e-04 - val_loss: 1.5050e-04\n", + "Epoch 162/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3907e-04 - val_loss: 1.4714e-04\n", + "Epoch 163/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3830e-04 - val_loss: 1.4454e-04\n", + "Epoch 164/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3767e-04 - val_loss: 1.4247e-04\n", + "Epoch 165/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3711e-04 - val_loss: 1.4100e-04\n", + "Epoch 166/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3661e-04 - val_loss: 1.3959e-04\n", + "Epoch 167/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3615e-04 - val_loss: 1.3854e-04\n", + "Epoch 168/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3572e-04 - val_loss: 1.3760e-04\n", + "Epoch 169/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3533e-04 - val_loss: 1.3684e-04\n", + "Epoch 170/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3495e-04 - val_loss: 1.3616e-04\n", + "Epoch 171/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3460e-04 - val_loss: 1.3561e-04\n", + "Epoch 172/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3425e-04 - val_loss: 1.3502e-04\n", + "Epoch 173/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3392e-04 - val_loss: 1.3455e-04\n", + "Epoch 174/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3358e-04 - val_loss: 1.3413e-04\n", + "Epoch 175/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3325e-04 - val_loss: 1.3369e-04\n", + "Epoch 176/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3293e-04 - val_loss: 1.3329e-04\n", + "Epoch 177/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3260e-04 - val_loss: 1.3295e-04\n", + "Epoch 178/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3227e-04 - val_loss: 1.3262e-04\n", + "Epoch 179/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3195e-04 - val_loss: 1.3225e-04\n", + "Epoch 180/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3163e-04 - val_loss: 1.3183e-04\n", + "Epoch 181/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3149e-04\n", + "Epoch 182/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3098e-04 - val_loss: 1.3120e-04\n", + "Epoch 183/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3064e-04 - val_loss: 1.3091e-04\n", + "Epoch 184/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3031e-04 - val_loss: 1.3061e-04\n", + "Epoch 185/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2998e-04 - val_loss: 1.3030e-04\n", + "Epoch 186/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2967e-04 - val_loss: 1.2996e-04\n", + "Epoch 187/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2935e-04 - val_loss: 1.2962e-04\n", + "Epoch 188/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2905e-04 - val_loss: 1.2936e-04\n", + "Epoch 189/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2875e-04 - val_loss: 1.2912e-04\n", + "Epoch 190/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2843e-04 - val_loss: 1.2879e-04\n", + "Epoch 191/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2811e-04 - val_loss: 1.2853e-04\n", + "Epoch 192/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2833e-04\n", + "Epoch 193/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2751e-04 - val_loss: 1.2804e-04\n", + "Epoch 194/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2720e-04 - val_loss: 1.2780e-04\n", + "Epoch 195/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2748e-04\n", + "Epoch 196/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2660e-04 - val_loss: 1.2726e-04\n", + "Epoch 197/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2631e-04 - val_loss: 1.2693e-04\n", + "Epoch 198/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2602e-04 - val_loss: 1.2667e-04\n", + "Epoch 199/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2573e-04 - val_loss: 1.2636e-04\n", + "Epoch 200/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2544e-04 - val_loss: 1.2612e-04\n", + "Epoch 201/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2515e-04 - val_loss: 1.2579e-04\n", + "Epoch 202/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2487e-04 - val_loss: 1.2556e-04\n", + "Epoch 203/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2458e-04 - val_loss: 1.2523e-04\n", + "Epoch 204/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2428e-04 - val_loss: 1.2499e-04\n", + "Epoch 205/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2400e-04 - val_loss: 1.2467e-04\n", + "Epoch 206/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2372e-04 - val_loss: 1.2451e-04\n", + "Epoch 207/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2344e-04 - val_loss: 1.2414e-04\n", + "Epoch 208/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2316e-04 - val_loss: 1.2387e-04\n", + "Epoch 209/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2288e-04 - val_loss: 1.2359e-04\n", + "Epoch 210/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2261e-04 - val_loss: 1.2337e-04\n", + "Epoch 211/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2236e-04 - val_loss: 1.2307e-04\n", + "Epoch 212/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2208e-04 - val_loss: 1.2280e-04\n", + "Epoch 213/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2182e-04 - val_loss: 1.2255e-04\n", + "Epoch 214/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.2157e-04 - val_loss: 1.2229e-04\n", + "Epoch 215/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2131e-04 - val_loss: 1.2206e-04\n", + "Epoch 216/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2107e-04 - val_loss: 1.2184e-04\n", + "Epoch 217/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2080e-04 - val_loss: 1.2160e-04\n", + "Epoch 218/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2056e-04 - val_loss: 1.2135e-04\n", + "Epoch 219/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2031e-04 - val_loss: 1.2108e-04\n", + "Epoch 220/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2006e-04 - val_loss: 1.2086e-04\n", + "Epoch 221/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1980e-04 - val_loss: 1.2061e-04\n", + "Epoch 222/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1956e-04 - val_loss: 1.2034e-04\n", + "Epoch 223/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1932e-04 - val_loss: 1.2015e-04\n", + "Epoch 224/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1907e-04 - val_loss: 1.1992e-04\n", + "Epoch 225/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1883e-04 - val_loss: 1.1964e-04\n", + "Epoch 226/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1859e-04 - val_loss: 1.1946e-04\n", + "Epoch 227/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1836e-04 - val_loss: 1.1924e-04\n", + "Epoch 228/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1812e-04 - val_loss: 1.1901e-04\n", + "Epoch 229/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1788e-04 - val_loss: 1.1873e-04\n", + "Epoch 230/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1762e-04 - val_loss: 1.1849e-04\n", + "Epoch 231/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1739e-04 - val_loss: 1.1824e-04\n", + "Epoch 232/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1716e-04 - val_loss: 1.1801e-04\n", + "Epoch 233/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1693e-04 - val_loss: 1.1782e-04\n", + "Epoch 234/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1772e-04\n", + "Epoch 235/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1644e-04 - val_loss: 1.1742e-04\n", + "Epoch 236/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1620e-04 - val_loss: 1.1717e-04\n", + "Epoch 237/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.1600e-04 - val_loss: 1.1697e-04\n", + "Epoch 238/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1574e-04 - val_loss: 1.1671e-04\n", + "Epoch 239/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1550e-04 - val_loss: 1.1646e-04\n", + "Epoch 240/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1526e-04 - val_loss: 1.1627e-04\n", + "Epoch 241/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1501e-04 - val_loss: 1.1614e-04\n", + "Epoch 242/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1479e-04 - val_loss: 1.1579e-04\n", + "Epoch 243/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1453e-04 - val_loss: 1.1561e-04\n", + "Epoch 244/1000\n", + "20/20 [==============================] - 76s 4s/step - loss: 1.1430e-04 - val_loss: 1.1536e-04\n", + "Epoch 245/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1407e-04 - val_loss: 1.1516e-04\n", + "Epoch 246/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1384e-04 - val_loss: 1.1494e-04\n", + "Epoch 247/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1361e-04 - val_loss: 1.1468e-04\n", + "Epoch 248/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1452e-04\n", + "Epoch 249/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1312e-04 - val_loss: 1.1422e-04\n", + "Epoch 250/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1291e-04 - val_loss: 1.1400e-04\n", + "Epoch 251/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1267e-04 - val_loss: 1.1378e-04\n", + "Epoch 252/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1242e-04 - val_loss: 1.1359e-04\n", + "Epoch 253/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1221e-04 - val_loss: 1.1342e-04\n", + "Epoch 254/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1198e-04 - val_loss: 1.1317e-04\n", + "Epoch 255/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1179e-04 - val_loss: 1.1296e-04\n", + "Epoch 256/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1158e-04 - val_loss: 1.1277e-04\n", + "Epoch 257/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1134e-04 - val_loss: 1.1292e-04\n", + "Epoch 258/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1103e-04 - val_loss: 1.1229e-04\n", + "Epoch 259/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1094e-04 - val_loss: 1.1236e-04\n", + "Epoch 260/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1069e-04 - val_loss: 1.1202e-04\n", + "Epoch 261/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1052e-04 - val_loss: 1.1211e-04\n", + "Epoch 262/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1020e-04 - val_loss: 1.1182e-04\n", + "Epoch 263/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0999e-04 - val_loss: 1.1120e-04\n", + "Epoch 264/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0988e-04 - val_loss: 1.1105e-04\n", + "Epoch 265/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0971e-04 - val_loss: 1.1073e-04\n", + "Epoch 266/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0925e-04 - val_loss: 1.1168e-04\n", + "Epoch 267/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0918e-04 - val_loss: 1.1021e-04\n", + "Epoch 268/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0899e-04 - val_loss: 1.1207e-04\n", + "Epoch 269/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0908e-04 - val_loss: 1.1036e-04\n", + "Epoch 270/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0850e-04 - val_loss: 1.1063e-04\n", + "Epoch 271/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0808e-04 - val_loss: 1.0979e-04\n", + "Epoch 272/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0885e-04 - val_loss: 1.1182e-04\n", + "Epoch 273/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0896e-04 - val_loss: 1.0897e-04\n", + "Epoch 274/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0755e-04 - val_loss: 1.0890e-04\n", + "Epoch 275/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0726e-04 - val_loss: 1.0942e-04\n", + "Epoch 276/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0698e-04 - val_loss: 1.0837e-04\n", + "Epoch 277/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0682e-04 - val_loss: 1.1710e-04\n", + "Epoch 278/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1099e-04 - val_loss: 1.0862e-04\n", + "Epoch 279/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0679e-04 - val_loss: 1.0775e-04\n", + "Epoch 280/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0615e-04 - val_loss: 1.0787e-04\n", + "Epoch 281/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0580e-04 - val_loss: 1.0705e-04\n", + "Epoch 282/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0551e-04 - val_loss: 1.0705e-04\n", + "Epoch 283/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0542e-04 - val_loss: 1.0673e-04\n", + "Epoch 284/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0500e-04 - val_loss: 1.0644e-04\n", + "Epoch 285/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0506e-04 - val_loss: 1.0654e-04\n", + "Epoch 286/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0493e-04 - val_loss: 1.0618e-04\n", + "Epoch 287/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0476e-04 - val_loss: 1.0601e-04\n", + "Epoch 288/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0445e-04 - val_loss: 1.0588e-04\n", + "Epoch 289/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0439e-04 - val_loss: 1.1388e-04\n", + "Epoch 290/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 0.0033 - val_loss: 0.0015\n", + "Epoch 291/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 6.8803e-04 - val_loss: 4.5921e-04\n", + "Epoch 292/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 2.5436e-04 - val_loss: 3.2132e-04\n", + "Epoch 293/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.8278e-04 - val_loss: 2.6234e-04\n", + "Epoch 294/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.6361e-04 - val_loss: 2.2145e-04\n", + "Epoch 295/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.5566e-04 - val_loss: 1.9489e-04\n", + "Epoch 296/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.5087e-04 - val_loss: 1.7818e-04\n", + "Epoch 297/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.4780e-04 - val_loss: 1.6677e-04\n", + "Epoch 298/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4506e-04 - val_loss: 1.5912e-04\n", + "Epoch 299/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20/20 [==============================] - 75s 4s/step - loss: 1.4321e-04 - val_loss: 1.5355e-04\n", + "Epoch 300/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4175e-04 - val_loss: 1.4977e-04\n", + "Epoch 301/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4046e-04 - val_loss: 1.4725e-04\n", + "Epoch 302/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3919e-04 - val_loss: 1.4475e-04\n", + "Epoch 303/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3819e-04 - val_loss: 1.4305e-04\n", + "Epoch 304/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3741e-04 - val_loss: 1.4133e-04\n", + "Epoch 305/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3681e-04 - val_loss: 1.4008e-04\n", + "Epoch 306/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3607e-04 - val_loss: 1.3953e-04\n", + "Epoch 307/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3530e-04 - val_loss: 1.3845e-04\n", + "Epoch 308/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3476e-04 - val_loss: 1.3803e-04\n", + "Epoch 309/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3423e-04 - val_loss: 1.3714e-04\n", + "Epoch 310/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3372e-04 - val_loss: 1.3652e-04\n", + "Epoch 311/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3321e-04 - val_loss: 1.3604e-04\n", + "Epoch 312/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3306e-04 - val_loss: 1.3567e-04\n", + "Epoch 313/1000\n", + "20/20 [==============================] - 76s 4s/step - loss: 1.3240e-04 - val_loss: 1.3451e-04\n", + "Epoch 314/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3208e-04 - val_loss: 1.3424e-04\n", + "Epoch 315/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3160e-04 - val_loss: 1.3382e-04\n", + "Epoch 316/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3120e-04 - val_loss: 1.3358e-04\n", + "Epoch 317/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3088e-04 - val_loss: 1.3309e-04\n", + "Epoch 318/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3050e-04 - val_loss: 1.3270e-04\n", + "Epoch 319/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3017e-04 - val_loss: 1.3238e-04\n", + "Epoch 320/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2989e-04 - val_loss: 1.3204e-04\n", + "Epoch 321/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2962e-04 - val_loss: 1.3130e-04\n", + "Epoch 322/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2926e-04 - val_loss: 1.3111e-04\n", + "Epoch 323/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2894e-04 - val_loss: 1.3055e-04\n", + "Epoch 324/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2852e-04 - val_loss: 1.3025e-04\n", + "Epoch 325/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2838e-04 - val_loss: 1.2969e-04\n", + "Epoch 326/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2949e-04\n", + "Epoch 327/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2745e-04 - val_loss: 1.2937e-04\n", + "Epoch 328/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2715e-04 - val_loss: 1.2914e-04\n", + "Epoch 329/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2808e-04\n", + "Epoch 330/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2680e-04 - val_loss: 1.2834e-04\n", + "Epoch 331/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2634e-04 - val_loss: 1.2769e-04\n", + "Epoch 332/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2582e-04 - val_loss: 1.2695e-04\n", + "Epoch 333/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.2670e-04\n", + "Epoch 334/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2497e-04 - val_loss: 1.2688e-04\n", + "Epoch 335/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2454e-04 - val_loss: 1.2615e-04\n", + "Epoch 336/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2421e-04 - val_loss: 1.2562e-04\n", + "Epoch 337/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2386e-04 - val_loss: 1.2582e-04\n", + "Epoch 338/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2343e-04 - val_loss: 1.2498e-04\n", + "Epoch 339/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2306e-04 - val_loss: 1.2484e-04\n", + "Epoch 340/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2273e-04 - val_loss: 1.2452e-04\n", + "Epoch 341/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2228e-04 - val_loss: 1.2410e-04\n", + "Epoch 342/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2190e-04 - val_loss: 1.2347e-04\n", + "Epoch 343/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2163e-04 - val_loss: 1.2318e-04\n", + "Epoch 344/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2135e-04 - val_loss: 1.2322e-04\n", + "Epoch 345/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2114e-04 - val_loss: 1.2283e-04\n", + "Epoch 346/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2067e-04 - val_loss: 1.2238e-04\n", + "Epoch 347/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2042e-04 - val_loss: 1.2186e-04\n", + "Epoch 348/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2004e-04 - val_loss: 1.2154e-04\n", + "Epoch 349/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1972e-04 - val_loss: 1.2112e-04\n", + "Epoch 350/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1937e-04 - val_loss: 1.2095e-04\n", + "Epoch 351/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1906e-04 - val_loss: 1.2064e-04\n", + "Epoch 352/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1887e-04 - val_loss: 1.2023e-04\n", + "Epoch 353/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1848e-04 - val_loss: 1.1981e-04\n", + "Epoch 354/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1839e-04 - val_loss: 1.1967e-04\n", + "Epoch 355/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1819e-04 - val_loss: 1.1985e-04\n", + "Epoch 356/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1771e-04 - val_loss: 1.1919e-04\n", + "Epoch 357/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1737e-04 - val_loss: 1.1905e-04\n", + "Epoch 358/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1710e-04 - val_loss: 1.1872e-04\n", + "Epoch 359/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1681e-04 - val_loss: 1.1836e-04\n", + "Epoch 360/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1834e-04\n", + "Epoch 361/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1627e-04 - val_loss: 1.1765e-04\n", + "Epoch 362/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1601e-04 - val_loss: 1.1751e-04\n", + "Epoch 363/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1577e-04 - val_loss: 1.1766e-04\n", + "Epoch 364/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1562e-04 - val_loss: 1.1697e-04\n", + "Epoch 365/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1522e-04 - val_loss: 1.1711e-04\n", + "Epoch 366/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1494e-04 - val_loss: 1.1649e-04\n", + "Epoch 367/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1469e-04 - val_loss: 1.1652e-04\n", + "Epoch 368/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1453e-04 - val_loss: 1.1623e-04\n", + "Epoch 369/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1437e-04 - val_loss: 1.1564e-04\n", + "Epoch 370/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1409e-04 - val_loss: 1.1576e-04\n", + "Epoch 371/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1377e-04 - val_loss: 1.1534e-04\n", + "Epoch 372/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1357e-04 - val_loss: 1.1498e-04\n", + "Epoch 373/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1499e-04\n", + "Epoch 374/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1300e-04 - val_loss: 1.1487e-04\n", + "Epoch 375/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1315e-04 - val_loss: 1.1486e-04\n", + "Epoch 376/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1264e-04 - val_loss: 1.1431e-04\n", + "Epoch 377/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1249e-04 - val_loss: 1.1441e-04\n", + "Epoch 378/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1215e-04 - val_loss: 1.1364e-04\n", + "Epoch 379/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1187e-04 - val_loss: 1.1359e-04\n", + "Epoch 380/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1176e-04 - val_loss: 1.1313e-04\n", + "Epoch 381/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1202e-04 - val_loss: 1.1292e-04\n", + "Epoch 382/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1164e-04 - val_loss: 1.1271e-04\n", + "Epoch 383/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1137e-04 - val_loss: 1.1249e-04\n", + "Epoch 384/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1119e-04 - val_loss: 1.1263e-04\n", + "Epoch 385/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1053e-04 - val_loss: 1.1232e-04\n", + "Epoch 386/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1043e-04 - val_loss: 1.1188e-04\n", + "Epoch 387/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1014e-04 - val_loss: 1.1179e-04\n", + "Epoch 388/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0998e-04 - val_loss: 1.1144e-04\n", + "Epoch 389/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0969e-04 - val_loss: 1.1139e-04\n", + "Epoch 390/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0942e-04 - val_loss: 1.1118e-04\n", + "Epoch 391/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0932e-04 - val_loss: 1.1173e-04\n", + "Epoch 392/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0985e-04 - val_loss: 1.1075e-04\n", + "Epoch 393/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0881e-04 - val_loss: 1.1055e-04\n", + "Epoch 394/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0861e-04 - val_loss: 1.1052e-04\n", + "Epoch 395/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0847e-04 - val_loss: 1.1021e-04\n", + "Epoch 396/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0827e-04 - val_loss: 1.0983e-04\n", + "Epoch 397/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0802e-04 - val_loss: 1.0977e-04\n", + "Epoch 398/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0783e-04 - val_loss: 1.0934e-04\n", + "Epoch 399/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0756e-04 - val_loss: 1.0930e-04\n", + "Epoch 400/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0741e-04 - val_loss: 1.0930e-04\n", + "Epoch 401/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0883e-04\n", + "Epoch 402/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0708e-04 - val_loss: 1.0862e-04\n", + "Epoch 403/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0690e-04 - val_loss: 1.0862e-04\n", + "Epoch 404/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0834e-04\n", + "Epoch 405/1000\n", + " 9/20 [============>.................] - ETA: 41s - loss: 1.0775e-04" + ] + } + ], + "source": [ + "csinet.fit(Htrain, epochs=1000, batch_size=5000, hval = Hval)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9e07494", + "metadata": {}, + "outputs": [], + "source": [ + "csinet.model.save('models/CSINet.keras') # The file needs to end with the .keras extension" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1ab0d957", + "metadata": {}, + "outputs": [], + "source": [ + "# model = load_model('models/CSINet.keras')\n", + "# model.fit(Htrain, Htrain, epochs=1000, batch_size=5000, shuffle= True, validation_data=(Hval, Hval))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c4e4215", + "metadata": {}, + "outputs": [], + "source": [ + "# self.model.fit(Htrain, Htrain, \n", + "# epochs=1000, batch_size=5000, shuffle= True, \n", + "# validation_data=(Hval, Hval))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/api/5G_Toolkit/5Gtoolkit.html b/api/5G_Toolkit/5Gtoolkit.html index c28e7e9d..8c1b5ad7 100644 --- a/api/5G_Toolkit/5Gtoolkit.html +++ b/api/5G_Toolkit/5Gtoolkit.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/CRC/crc.crcDecoder.html b/api/5G_Toolkit/CRC/crc.crcDecoder.html index ddedad23..1e89771b 100644 --- a/api/5G_Toolkit/CRC/crc.crcDecoder.html +++ b/api/5G_Toolkit/CRC/crc.crcDecoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/CRC/crc.crcEncoder.html b/api/5G_Toolkit/CRC/crc.crcEncoder.html index ba8d3843..036110e2 100644 --- a/api/5G_Toolkit/CRC/crc.crcEncoder.html +++ b/api/5G_Toolkit/CRC/crc.crcEncoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/CRC/crc.html b/api/5G_Toolkit/CRC/crc.html index b207108c..5f03a7c2 100644 --- a/api/5G_Toolkit/CRC/crc.html +++ b/api/5G_Toolkit/CRC/crc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.html b/api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.html index a3678529..ef098740 100644 --- a/api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.html +++ b/api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.html b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.html index 591e973c..b8856e17 100644 --- a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.html +++ b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.html b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.html index 4e6c31e4..a17073d2 100644 --- a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.html +++ b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.html b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.html index a0976013..83bfb358 100644 --- a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.html +++ b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.html b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.html index ce476c39..98361d5e 100644 --- a/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.html +++ b/api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.html b/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.html index d7d01cd0..ea8cd5f8 100644 --- a/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.html +++ b/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.html b/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.html index 9ac1eed8..beed8c2d 100644 --- a/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.html +++ b/api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.html b/api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.html index 7f8c0a7a..801db073 100644 --- a/api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.html +++ b/api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelCoder/channelCoder.html b/api/5G_Toolkit/ChannelCoder/channelCoder.html index 2ea50373..8ecc13cd 100644 --- a/api/5G_Toolkit/ChannelCoder/channelCoder.html +++ b/api/5G_Toolkit/ChannelCoder/channelCoder.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/antennaArray.html b/api/5G_Toolkit/ChannelModels/antennaArray.html index 7271cdea..642c9792 100644 --- a/api/5G_Toolkit/ChannelModels/antennaArray.html +++ b/api/5G_Toolkit/ChannelModels/antennaArray.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/channelGenerator.html b/api/5G_Toolkit/ChannelModels/channelGenerator.html index a3540e35..508d58e9 100644 --- a/api/5G_Toolkit/ChannelModels/channelGenerator.html +++ b/api/5G_Toolkit/ChannelModels/channelGenerator.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/channelModels.html b/api/5G_Toolkit/ChannelModels/channelModels.html index ea39b6d9..b619d56a 100644 --- a/api/5G_Toolkit/ChannelModels/channelModels.html +++ b/api/5G_Toolkit/ChannelModels/channelModels.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/nodeMobility.html b/api/5G_Toolkit/ChannelModels/nodeMobility.html index a016d64b..1ee6393d 100644 --- a/api/5G_Toolkit/ChannelModels/nodeMobility.html +++ b/api/5G_Toolkit/ChannelModels/nodeMobility.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/parameterGenerator.html b/api/5G_Toolkit/ChannelModels/parameterGenerator.html index ef82440e..bf36d8db 100644 --- a/api/5G_Toolkit/ChannelModels/parameterGenerator.html +++ b/api/5G_Toolkit/ChannelModels/parameterGenerator.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelModels/simulationLayout.html b/api/5G_Toolkit/ChannelModels/simulationLayout.html index 2f6e83eb..a7c62196 100644 --- a/api/5G_Toolkit/ChannelModels/simulationLayout.html +++ b/api/5G_Toolkit/ChannelModels/simulationLayout.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.html b/api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.html index e3d71d78..f0dc327a 100644 --- a/api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.html +++ b/api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.html b/api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.html index 64dad168..2f40a1f1 100644 --- a/api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.html +++ b/api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ChannelProcessing/channelProcessing.html b/api/5G_Toolkit/ChannelProcessing/channelProcessing.html index d9885e5a..dee8877c 100644 --- a/api/5G_Toolkit/ChannelProcessing/channelProcessing.html +++ b/api/5G_Toolkit/ChannelProcessing/channelProcessing.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.html b/api/5G_Toolkit/Interleaver/interleavers.html index 14629c9d..cbc8aa29 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.html +++ b/api/5G_Toolkit/Interleaver/interleavers.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.html b/api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.html index d3719196..e81b1652 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.html +++ b/api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.html b/api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.html index cad39bd5..5c3021a9 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.html +++ b/api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.html b/api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.html index df9a0472..1d9800fe 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.html +++ b/api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.html b/api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.html index c8fe6ee9..44c9f6fd 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.html +++ b/api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.html b/api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.html index 528b1e0b..518533c7 100644 --- a/api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.html +++ b/api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/MIMOProcessing/codeBooks.html b/api/5G_Toolkit/MIMOProcessing/codeBooks.html index c8e5ac67..054efa78 100644 --- a/api/5G_Toolkit/MIMOProcessing/codeBooks.html +++ b/api/5G_Toolkit/MIMOProcessing/codeBooks.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/MIMOProcessing/mimoProcessing.html b/api/5G_Toolkit/MIMOProcessing/mimoProcessing.html index f0171d2e..dd9a9e41 100644 --- a/api/5G_Toolkit/MIMOProcessing/mimoProcessing.html +++ b/api/5G_Toolkit/MIMOProcessing/mimoProcessing.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.demodulator.html b/api/5G_Toolkit/OFDM/ofdm.demodulator.html index 1bb1b097..50025a1a 100644 --- a/api/5G_Toolkit/OFDM/ofdm.demodulator.html +++ b/api/5G_Toolkit/OFDM/ofdm.demodulator.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.html b/api/5G_Toolkit/OFDM/ofdm.html index 12a33424..f19cd66e 100644 --- a/api/5G_Toolkit/OFDM/ofdm.html +++ b/api/5G_Toolkit/OFDM/ofdm.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.modulator.html b/api/5G_Toolkit/OFDM/ofdm.modulator.html index 7456655a..ddd8838b 100644 --- a/api/5G_Toolkit/OFDM/ofdm.modulator.html +++ b/api/5G_Toolkit/OFDM/ofdm.modulator.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.transformDecoding.html b/api/5G_Toolkit/OFDM/ofdm.transformDecoding.html index 2b29c473..928b801f 100644 --- a/api/5G_Toolkit/OFDM/ofdm.transformDecoding.html +++ b/api/5G_Toolkit/OFDM/ofdm.transformDecoding.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.html b/api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.html index f3cc2a8c..638b8764 100644 --- a/api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.html +++ b/api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.transformprecoding.html b/api/5G_Toolkit/OFDM/ofdm.transformprecoding.html index 5709eeaa..ee60ac23 100644 --- a/api/5G_Toolkit/OFDM/ofdm.transformprecoding.html +++ b/api/5G_Toolkit/OFDM/ofdm.transformprecoding.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.html b/api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.html index eb158f77..826d12b4 100644 --- a/api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.html +++ b/api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.html b/api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.html index e5c65480..199e78a5 100644 --- a/api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.html +++ b/api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.html b/api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.html index e5b2d0f4..caa5870f 100644 --- a/api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.html +++ b/api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PayloadGeneration/payloadGeneration.html b/api/5G_Toolkit/PayloadGeneration/payloadGeneration.html index 8225a5f9..d7f7e7bd 100644 --- a/api/5G_Toolkit/PayloadGeneration/payloadGeneration.html +++ b/api/5G_Toolkit/PayloadGeneration/payloadGeneration.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.html index 797d66db..71781eec 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.html index de35971d..39a6f18c 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.html index e9d4ec24..b4c3c90d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.html index 9b8c6550..5f168d77 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.html index c88430e6..8d8442f1 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.html index c94dec3b..bf18e268 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.html index f61d8c5f..0aa6557d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.html index 2fe6bcdd..515cd8cd 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.html index f4d7333f..4e9ef02a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.html index cdc836cb..207ae6b4 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.html index 86ca9517..a0e05381 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.html index b4b06b6c..a4ba9d00 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.html index 86ca9517..a0e05381 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.html index db44caad..0d821124 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.html index f1671597..3bdcadcf 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.html index 4a78fcb5..a7938a16 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.html index 17aaf6c1..3eea7842 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.html index 5772eb85..e35ae003 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.html index 662bc248..d05ef0aa 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.html index cc86f343..f6ce77ba 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.html index db8ced8c..cbacaa7a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.html index 11a85e62..c49ddb4c 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.html index 9aba6ab6..6986034a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.html index 8a8993fd..643f1786 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.html index cc7858ed..4cbe4301 100644 --- a/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html index 4fddf97e..023aa81f 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.html index 4361f66a..0a1149eb 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html index 47513016..9cbfdec8 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html index b8ed4b77..3df060d8 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.html index bd82751b..34e0e3c0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html index f99419b8..26a25b09 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html index 0492c353..ac78ab9a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.html index 10a34cb3..52c72c0a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html index a02076d1..d7cd4de2 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html index 8bf7654d..04e26d8d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html index de4ca802..1a55dc8a 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html index 3ecd794a..7103dffa 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html index 66fc1adb..947f4814 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html index b5b25d9f..7867c48f 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.html index 292e31a7..4e396371 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html index 026e099e..b46e0f70 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html index c06fa0c4..fbd5a9ab 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html index 1c367ee8..8308d1fc 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html index c8adfbce..c402ba2d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.html index 530c3eec..c4c6aea9 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.html index e1df531f..c8cc55e5 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.html index 6f17856a..173d1de3 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.html index b9bd74a1..99e1e998 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.html index f6e198ed..849b9145 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.html index c1a427ba..24b67eb9 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.html index 06d4f4c1..c8b2c552 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.html index 0d75b35c..208e7951 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.html index f7770553..8bb09eab 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.html index f06339a4..bf03dc89 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.html index 5fd05008..ab030008 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.html index 96f709a3..2ad1974f 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.html index dad8e281..80ae0b3c 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.html index 6267288d..e7201242 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.html index 6c5e7223..5e1b468b 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.html index 5d45d443..a92b8def 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.html index 236dbed5..edef1b60 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.html index 733b5d99..5cf8e77d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.html index 53eb3897..315b1e68 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.html index 0951cb7c..7e48f491 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.html index 1842e1e8..cc8f9fe8 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.html index 0b36aace..31f88fac 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.html index b556534e..0b6e93d8 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.html b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.html index b4c4329d..140d44f6 100644 --- a/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.html +++ b/api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html index aa873d44..93a08f91 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.html index 72ccb3b2..ebb6132e 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html index e80306c2..480b73d7 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html index 99a308fb..d1dbfa00 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.html index d581c8b1..98056840 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html index b2592fea..2816fd10 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html index 6dfd5354..ced4da16 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.html index 42decd57..740d6171 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html index 56e4e20f..a4045f18 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html index 184ee156..25ea8a95 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html index b180749f..07198f3d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html index 89194006..de7a02ee 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html index 2b508c1f..528afbfa 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html index 4c2ac69b..21173e44 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.html index 3affe4fc..c765c450 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html index f36346ab..0faf8b3d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html index c85c4de1..0b9fb7ed 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html index 30b70947..bd3609c0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html index 316b0d00..d448a11c 100644 --- a/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.html index b8f3ab67..5ddf4ed8 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.html index 687f3801..324c1c20 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.html index efcec2b7..8f8b24fd 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.html index 5d691ee0..d40154cb 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.html index 0dcf575f..20fb9a9b 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.html index 85cbacd7..69c61ff1 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.html index a5228241..d1c8c170 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.html index 8a2d67a6..e9ecdd40 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.html index 42e584b7..2646d1c3 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.html index 3fa48c43..348b3a61 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.html index c0bee357..0cf99ae0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.html index 367050e1..a6ba4d5b 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.html index 298b85e7..ebb24b78 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.html index 4a3e0af9..6d105aa4 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.html index 9499f547..71dd814e 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.html index c196f604..090acbb0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.html index f580f785..2085d6a5 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.html index 97fb1f20..d6068d0e 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.html index 9c0e2937..937fd3ec 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.html index 235b42b2..cf0f48e0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.html index deba3f5e..32994582 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.html index e3e184d8..cfc432f9 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.html index a3acd9dd..f5bd3cdf 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.html index 4ce001de..56dab6ca 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html index a09956ad..ffe47937 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html index 4722931c..8a07062d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html index 04a0498a..affb4caf 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.html index ab2c5574..0987c6c3 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.html index 86c77999..3ccc8f2d 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.html index f36a2845..9b5f022f 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.html index 60c7742e..d7967eb6 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.html index a36765e2..963f1e80 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.html index 654e57f2..8e85d886 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.html index 5097bbc8..03e2251c 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.html index 8ea0dbb2..3252a533 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.html index 3ffa8631..50e4e1cf 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.html index a72e9443..8d775cf0 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.html index 2fd71e6e..cbc7db88 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.html index 8c6dfa85..2a1a7c47 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.html index 6840f59d..67d16b54 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.html index c6cb73ca..3921ca49 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.html index 6e2bbaa8..fd69fe91 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.html index 75c71ba1..9318c39e 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.html index 0f87f4f0..0a31e070 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.html index f8875a60..99323fab 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.html index 60b8ee09..4c16e207 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.html index 316ca8d2..4851d72f 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.html index 75bf48fa..3ce307d5 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.html index 79f4e6da..fa1e6edd 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.html index d4bdd44f..c1127554 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.html index e498858f..7317f5dd 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.html b/api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.html index c28c4c1a..5c2fad30 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.html +++ b/api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.html b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.html index ef3a079c..5fd5d495 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.html +++ b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.html b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.html index 8eebaac9..a62e4240 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.html +++ b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.html b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.html index 1684c349..99613132 100644 --- a/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.html +++ b/api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.html index b249b440..43d5ee68 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.html index c2ff7ef6..4091b682 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.html index df33dc3b..c8680d6d 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.html index 0c0faaf2..1b1cbdcc 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.html index 339040f9..c828354f 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.html index 5380d00b..8636c8a3 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.html index 0cf4047a..ee0a45b6 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.html index 8e30924a..b8d45742 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.html b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.html index 6ec5aea2..d5bce9cc 100644 --- a/api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.html +++ b/api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.html b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.html index 284d4fc3..9c438313 100644 --- a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.html +++ b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.html b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.html index ed883bc8..2607b4d4 100644 --- a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.html +++ b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.html b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.html index 36c38890..7747bc1e 100644 --- a/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.html +++ b/api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.html b/api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.html index e23bc2d2..89a04464 100644 --- a/api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.html +++ b/api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.html b/api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.html index add778c4..cf173731 100644 --- a/api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.html +++ b/api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.html b/api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.html index dd16b59b..44262cd0 100644 --- a/api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.html +++ b/api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.html b/api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.html index 46395571..8a93dc5c 100644 --- a/api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.html +++ b/api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.html b/api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.html index 3cfdc190..62bd238a 100644 --- a/api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.html +++ b/api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.html b/api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.html index 63f9c4a5..2c46747b 100644 --- a/api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.html +++ b/api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.html b/api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.html index a43cfaa4..4b5f01df 100644 --- a/api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.html +++ b/api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.html b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.html index 105e7ef4..a1875c70 100644 --- a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.html +++ b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.html b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.html index ff826b03..a0cdec2a 100644 --- a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.html +++ b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.html b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.html index f82f9b76..8a21a840 100644 --- a/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.html +++ b/api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.html b/api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.html index 3d4f4b58..a807a639 100644 --- a/api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.html +++ b/api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Positioning/positioning.html b/api/5G_Toolkit/Positioning/positioning.html index b8d1c968..bb79dee9 100644 --- a/api/5G_Toolkit/Positioning/positioning.html +++ b/api/5G_Toolkit/Positioning/positioning.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.html b/api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.html index a3e3b560..8e35e076 100644 --- a/api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.html +++ b/api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.html b/api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.html index 1b66de87..92973f24 100644 --- a/api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.html +++ b/api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.html b/api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.html index dcc8c2cc..4ac6b5b0 100644 --- a/api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.html +++ b/api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html b/api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html index 5cea35a2..89ee1a6c 100644 --- a/api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html +++ b/api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html b/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html index d17d638d..f552f641 100644 --- a/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html +++ b/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html b/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html index f11fcea0..f1a17dd5 100644 --- a/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html +++ b/api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.html b/api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.html index b6034571..bfbeb691 100644 --- a/api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.html +++ b/api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Ratematcher/ratematcher.html b/api/5G_Toolkit/Ratematcher/ratematcher.html index 4e6774a0..e30d5f23 100644 --- a/api/5G_Toolkit/Ratematcher/ratematcher.html +++ b/api/5G_Toolkit/Ratematcher/ratematcher.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.html index 66463e9f..afbd792d 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.html index 3469f2c1..51d4c709 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.html index 69771467..0e29c89e 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.html index 5d5df103..75767e4f 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.html index 13e89e4d..caa40dba 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.html b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.html index db9b5459..b3abf9e6 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.html b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.html index 680eb3af..efab924e 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.html b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.html index 26c1df50..5899d95e 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.html b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.html index 64476cb3..781a2eba 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.html b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.html index 603a8ce1..dcde0f88 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.html b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.html index 1251e1f9..764aead6 100644 --- a/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.html +++ b/api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.html index fe0a0f10..b4be5ae4 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.html index 5f868613..9da51b8d 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.html index eee67bc0..e2c42bf1 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.html index b2f761d4..a7c4480e 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.html index 6e1ef9a1..80832494 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.prs.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.prs.html index 7fcfecf2..9033f78b 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.prs.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.prs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.html index dafaf315..813c4a7c 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.html index 5fd7c90e..699eae95 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.html index 693abba6..d38bc193 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.html index 8b16c6b1..58098cc5 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.html index c6db99a6..8ebc39fe 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.html index 87f438b0..45e733ee 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.html b/api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.html index 1608f558..debbf3fd 100644 --- a/api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.html +++ b/api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Scrambler/scrambler.deScrambler.html b/api/5G_Toolkit/Scrambler/scrambler.deScrambler.html index 004d8a02..6d0a9491 100644 --- a/api/5G_Toolkit/Scrambler/scrambler.deScrambler.html +++ b/api/5G_Toolkit/Scrambler/scrambler.deScrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Scrambler/scrambler.html b/api/5G_Toolkit/Scrambler/scrambler.html index b894a78b..9e92d29f 100644 --- a/api/5G_Toolkit/Scrambler/scrambler.html +++ b/api/5G_Toolkit/Scrambler/scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Scrambler/scrambler.rntiMasking.html b/api/5G_Toolkit/Scrambler/scrambler.rntiMasking.html index dd76fbea..d69187e5 100644 --- a/api/5G_Toolkit/Scrambler/scrambler.rntiMasking.html +++ b/api/5G_Toolkit/Scrambler/scrambler.rntiMasking.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/Scrambler/scrambler.scrambler.html b/api/5G_Toolkit/Scrambler/scrambler.scrambler.html index 76ded06a..9e7919be 100644 --- a/api/5G_Toolkit/Scrambler/scrambler.scrambler.html +++ b/api/5G_Toolkit/Scrambler/scrambler.scrambler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.html index b7cb63b8..318dc54e 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.html index 9c1734e0..41e2df75 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.html index d5c703a8..fc55401b 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.html index 2d73b4f6..bdae490c 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.html index 004f71fa..47ccd5b0 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.html index 940ce7c5..34aa5b04 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.html index bee7d347..570b3d58 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.html index baa00b90..b82058b0 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.html index 57188684..d859318d 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.html index 237fcfac..d17889b8 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.html index 6a7f497e..8a7a8ac7 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.html index 665328a1..17a420ea 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.html index 17c032a6..a88c0487 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.html b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.html index 19675711..eea72ed5 100644 --- a/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.html +++ b/api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.html b/api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.html index 4229bcef..96753118 100644 --- a/api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.html +++ b/api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SymbolMapping/symbolMapping.html b/api/5G_Toolkit/SymbolMapping/symbolMapping.html index 59acf651..5efa0ab9 100644 --- a/api/5G_Toolkit/SymbolMapping/symbolMapping.html +++ b/api/5G_Toolkit/SymbolMapping/symbolMapping.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.html b/api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.html index 37a0751e..48d87a64 100644 --- a/api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.html +++ b/api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.html b/api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.html index 30af3fe8..ad5ad69b 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.html b/api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.html index d205a46b..7e65dd0e 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.html b/api/5G_Toolkit/[N]Configurations/configurations.html index 39dec5cc..d9ad9e25 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.html b/api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.html index 33d529f1..6c64f1b5 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.html b/api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.html index 426257ba..08f563c8 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.html b/api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.html index efbb0d8d..232617bb 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.html b/api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.html index 911929ff..6dcfff43 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.html b/api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.html index 88a1aee4..e25e8220 100644 --- a/api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.html +++ b/api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.html index 23c7bad9..2c76e814 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.html index 317ecf83..67bca23b 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.html index 13425fa9..50bf28c9 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.html index 01647101..8ccc5558 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.html index 9e755f57..c698655a 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.html index 45c9ada7..61af37a6 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.html index a9c08ead..a681a214 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.html index 8fe34308..73757aa5 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.html index 25c642fe..48500503 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.html b/api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.html index 4d4a42fb..9a1f1b05 100644 --- a/api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.html +++ b/api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.html b/api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.html index 45f7ee5e..e5dfd2ae 100644 --- a/api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.html +++ b/api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.html b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.html index 2a1c0997..e53797be 100644 --- a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.html +++ b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.html b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.html index 9b8df915..449596f7 100644 --- a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.html +++ b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.html b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.html index 982e4d51..2ca43634 100644 --- a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.html +++ b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.html b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.html index ea5f07c8..336a36d2 100644 --- a/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.html +++ b/api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/5G_Toolkit/[N]Scheduler/scheduler.html b/api/5G_Toolkit/[N]Scheduler/scheduler.html index bca1f784..d7683f4b 100644 --- a/api/5G_Toolkit/[N]Scheduler/scheduler.html +++ b/api/5G_Toolkit/[N]Scheduler/scheduler.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Built_using_5G_Toolkit/builtUsing5GToolkit.html b/api/Built_using_5G_Toolkit/builtUsing5GToolkit.html index fb1674dd..854bbdf7 100644 --- a/api/Built_using_5G_Toolkit/builtUsing5GToolkit.html +++ b/api/Built_using_5G_Toolkit/builtUsing5GToolkit.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.html b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.html index 1c3a5df5..6bb1cc82 100644 --- a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.html +++ b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.html b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.html index 3bbf5e8e..353e7a63 100644 --- a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.html +++ b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html index 23f57d94..5f83411a 100644 --- a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html +++ b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html index 91abb51d..d7a7ecd4 100644 --- a/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html +++ b/api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html b/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html index eb2980f6..bc96aae2 100644 --- a/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html +++ b/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html @@ -1750,7 +1750,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.html b/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.html index 49b07b23..1bf233c0 100644 --- a/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.html +++ b/api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html b/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html index 855da1de..99fe8b3b 100644 --- a/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html +++ b/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.html b/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.html index 7ed4e8c8..f5112bf5 100644 --- a/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.html +++ b/api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.html b/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.html index 5dc3dc5b..3db630d6 100644 --- a/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.html +++ b/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.html b/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.html index 17e2c478..b6c9f769 100644 --- a/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.html +++ b/api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Integration_with_SDR/Integration_with_SDRs.html b/api/Integration_with_SDR/Integration_with_SDRs.html index 02b15944..98756a66 100644 --- a/api/Integration_with_SDR/Integration_with_SDRs.html +++ b/api/Integration_with_SDR/Integration_with_SDRs.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/LearningResources/GW-IC5GS.html b/api/LearningResources/GW-IC5GS.html index 343bcfb4..fbea40c0 100644 --- a/api/LearningResources/GW-IC5GS.html +++ b/api/LearningResources/GW-IC5GS.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/LearningResources/LearningResources.html b/api/LearningResources/LearningResources.html index 9cc4807c..476cb7ca 100644 --- a/api/LearningResources/LearningResources.html +++ b/api/LearningResources/LearningResources.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/License/license.html b/api/License/license.html index 9f56661a..c8d64a2c 100644 --- a/api/License/license.html +++ b/api/License/license.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Preview_of_Next_Release/FeatureList.html b/api/Preview_of_Next_Release/FeatureList.html index 42c48e6b..47a242fa 100644 --- a/api/Preview_of_Next_Release/FeatureList.html +++ b/api/Preview_of_Next_Release/FeatureList.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Previous_Versions/PreviousVersions.html b/api/Previous_Versions/PreviousVersions.html index 1fa5a1c9..96e35a93 100644 --- a/api/Previous_Versions/PreviousVersions.html +++ b/api/Previous_Versions/PreviousVersions.html @@ -1748,7 +1748,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project1/learning2Demap.html b/api/Projects/Project1/learning2Demap.html index 776f2625..56b4097d 100644 --- a/api/Projects/Project1/learning2Demap.html +++ b/api/Projects/Project1/learning2Demap.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.html b/api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.html index 94aaee5e..8a0125cd 100644 --- a/api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.html +++ b/api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project10/project10.html b/api/Projects/Project10/project10.html index fdc4b876..54cb060c 100644 --- a/api/Projects/Project10/project10.html +++ b/api/Projects/Project10/project10.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Blocking Probability for Different AL distributions.html b/api/Projects/Project2/Blocking Probability for Different AL distributions.html index da8a1cf1..31b03d88 100644 --- a/api/Projects/Project2/Blocking Probability for Different AL distributions.html +++ b/api/Projects/Project2/Blocking Probability for Different AL distributions.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Blocking Probability for Different ALs.html b/api/Projects/Project2/Blocking Probability for Different ALs.html index ad422045..aec19899 100644 --- a/api/Projects/Project2/Blocking Probability for Different ALs.html +++ b/api/Projects/Project2/Blocking Probability for Different ALs.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.html b/api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.html index 0963cd10..384d2ea7 100644 --- a/api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.html +++ b/api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.html b/api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.html index c171445b..fd71ee99 100644 --- a/api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.html +++ b/api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Impact of UEs Capability on Blocking Probability.html b/api/Projects/Project2/Impact of UEs Capability on Blocking Probability.html index ec3a10a7..3bec77ea 100644 --- a/api/Projects/Project2/Impact of UEs Capability on Blocking Probability.html +++ b/api/Projects/Project2/Impact of UEs Capability on Blocking Probability.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.html b/api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.html index 7a5dc354..dffa02d0 100644 --- a/api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.html +++ b/api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.html @@ -29,7 +29,7 @@ - + @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • @@ -2369,7 +2419,7 @@

    References - +
    diff --git a/api/Projects/Project2/project2.html b/api/Projects/Project2/project2.html index 009d65bd..557fb6f1 100644 --- a/api/Projects/Project2/project2.html +++ b/api/Projects/Project2/project2.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.html b/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.html new file mode 100644 index 00000000..e5514293 --- /dev/null +++ b/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.html @@ -0,0 +1,3141 @@ + + + + + + + CSI Compression and Reconstruction using CSINet for TDD Massive MIMO 5G Networks — 5G Toolkit R24a documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + + +
    +

    CSI Compression and Reconstruction using CSINet for TDD Massive MIMO 5G Networks

    +
    +

    Import Libraries

    +
    +

    Import Python Libraries

    +
    +
    [1]:
    +
    +
    +
    # %matplotlib widget
    +import matplotlib.pyplot as plt
    +import matplotlib as mpl
    +
    +import os
    +os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
    +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    +
    +import numpy as np
    +
    +# from IPython.display import display, HTML
    +# display(HTML("<style>.container { width:80% !important; }</style>"))
    +
    +
    +
    +
    +
    +

    Import 5G Toolkit Libraries

    +
    +
    [2]:
    +
    +
    +
    from csiNet import CSINet
    +
    +import sys
    +sys.path.append("../../")
    +
    +from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize
    +from toolkit5G.PhysicalChannels       import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy
    +from toolkit5G.ChannelModels          import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator
    +from toolkit5G.Configurations         import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration
    +from toolkit5G.ChannelProcessing      import AddNoise, ApplyChannel
    +from toolkit5G.SymbolMapping          import Mapper, Demapper
    +
    +
    +
    +
    +
    +
    +

    Simulation Parameters

    +
    +
    [3]:
    +
    +
    +
    # Carrier Frequency
    +carrierFrequency = 3.6*10**9
    +delaySpread      = 100*(10**-9)
    +numBatches       = 200       # Number of batches considered for simulation
    +scs              = 30*10**3  # Subcarrier Spacing for simulation
    +numBSs           = 1 # Number of BSs considered for simulation
    +# Number of UEs considered for simulation
    +numUEs           = numBatches # For now we are assuming that the numbatches are captured via numUEs
    +numRB            = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier
    +slotNumber       = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation
    +terrain          = "CDL-A" # Terrain
    +txAntStruture    = np.array([1,1,32,1,1]) # Tx Antenna Structure
    +rxAntStruture    = np.array([1,1,4,1,1]) # Tx Antenna Structure
    +Nfft             = 1024 # FFTSize
    +
    +print("************ Simulation Parameters *************")
    +print()
    +print("     numBatches: "+str(numBatches))
    +print("          numRB: "+str(numRB))
    +print("       fft Size: "+str(Nfft))
    +print("         numBSs: "+str(numBSs))
    +print("         numUEs: "+str(numUEs))
    +print("            scs: "+str(scs))
    +print("     slotNumber: "+str(slotNumber))
    +print("        terrain: "+str(terrain))
    +print("Tx Ant Struture: "+str(txAntStruture))
    +print("Rx Ant Struture: "+str(rxAntStruture))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +************ Simulation Parameters *************
    +
    +     numBatches: 200
    +          numRB: 85
    +       fft Size: 1024
    +         numBSs: 1
    +         numUEs: 200
    +            scs: 30000
    +     slotNumber: 0
    +        terrain: CDL-A
    +Tx Ant Struture: [ 1  1 32  1  1]
    +Rx Ant Struture: [1 1 4 1 1]
    +
    +********************************************
    +
    +
    +
    +
    +

    Wireless Channel Generation: CDL-A

    +
    +
    [4]:
    +
    +
    +
    # Antenna Array at UE side
    +# assuming antenna element type to be "OMNI"
    +# with 2 panel and 2 single polarized antenna element per panel.
    +ueAntArray = AntennaArrays(antennaType = "OMNI",  centerFrequency = carrierFrequency,
    +                           arrayStructure  = rxAntStruture)
    +ueAntArray()
    +
    +# # Radiation Pattern of Rx antenna element
    +# ueAntArray.displayAntennaRadiationPattern()
    +
    +
    +# Antenna Array at BS side
    +# assuming antenna element type to be "3GPP_38.901", a parabolic antenna
    +# with 4 panel and 4 single polarized antenna element per panel.
    +bsAntArray = AntennaArrays(antennaType = "3GPP_38.901", centerFrequency = carrierFrequency,
    +                           arrayStructure  = txAntStruture)
    +bsAntArray()
    +
    +# # Radiation Pattern of Tx antenna element
    +# bsAntArray[0].displayAntennaRadiationPattern()
    +
    +# Layout Parameters
    +isd                  = 100         # inter site distance
    +minDist              = 10          # min distance between each UE and BS
    +ueHt                 = 1.5         # UE height
    +bsHt                 = 25          # BS height
    +bslayoutType         = "Hexagonal" # BS layout type
    +ueDropType           = "Hexagonal" # UE drop type
    +htDist               = "equal"     # UE height distribution
    +ueDist               = "equal"     # UE Distribution per site
    +nSectorsPerSite      = 1           # number of sectors per site
    +maxNumFloors         = 1           # Max number of floors in an indoor object
    +minNumFloors         = 1           # Min number of floors in an indoor object
    +heightOfRoom         = 3           # height of room or ceiling in meters
    +indoorUEfract        = 0.5         # Fraction of UEs located indoor
    +lengthOfIndoorObject = 3           # length of indoor object typically having rectangular geometry
    +widthOfIndoorObject  = 3           # width of indoor object
    +# forceLOS             = True       # boolen flag if true forces every link to be in LOS state
    +forceLOS             = False       # boolen flag if true forces every link to be in LOS state
    +
    +# simulation layout object
    +simLayoutObj = SimulationLayout(numOfBS = numBSs,
    +                                numOfUE = numUEs,
    +                                heightOfBS = bsHt,
    +                                heightOfUE = ueHt,
    +                                ISD = isd,
    +                                layoutType = bslayoutType,
    +                                ueDropMethod = ueDropType,
    +                                UEdistibution = ueDist,
    +                                UEheightDistribution = htDist,
    +                                numOfSectorsPerSite = nSectorsPerSite,
    +                                ueRoute = None)
    +
    +simLayoutObj(terrain = terrain,
    +             carrierFreq = carrierFrequency,
    +             ueAntennaArray = ueAntArray,
    +             bsAntennaArray = bsAntArray,
    +             indoorUEfraction = indoorUEfract,
    +             lengthOfIndoorObject = lengthOfIndoorObject,
    +             widthOfIndoorObject = widthOfIndoorObject,
    +             forceLOS = forceLOS)
    +
    +# displaying the topology of simulation layout
    +fig, ax = simLayoutObj.display2DTopology()
    +
    +paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)
    +
    +# paramGen.displayClusters((0,0,0), rayIndex = 0)
    +channel = paramGen.getChannel()
    +Hf      = channel.ofdm(scs, Nfft, normalizeChannel = True)
    +
    +Nt        = bsAntArray.numAntennas # Number of BS Antennas
    +Nr        = ueAntArray.numAntennas
    +
    +print("             Number of BSs: "+str(numBSs))
    +print("          Shape of Channel: "+str(Hf.shape))
    +print("*****************************************************")
    +print()
    +
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_7_0.png +
    +
    +
    +
    +
    +
    +
    +             Number of BSs: 1
    +          Shape of Channel: (1, 1, 1, 200, 1024, 4, 32)
    +*****************************************************
    +
    +
    +
    +
    +
    +

    Reconstrunction Performance of CSI-Net

    +
    +
    [5]:
    +
    +
    +
    numSubcarrier = 32
    +codewordSize  = 512
    +
    +H      = Hf[0,0,0,...,0,:].transpose(0,2,1)
    +csinet = CSINet()
    +model  = csinet(Nt, numSubcarrier, codewordSize)
    +csinet.loadModel()
    +Hprep  = csinet.preprocess(H)
    +
    +Hrec   = csinet.predict(Hprep)
    +
    +Hest   = csinet.postprocess(Hprep, Nfft)
    +
    +
    +
    +
    +
    +
    +
    +
    +7/7 [==============================] - 0s 7ms/step
    +
    +
    +
    +
    [6]:
    +
    +
    +
    numChannels = 5
    +fig, ax = plt.subplots(2,numChannels, figsize = (12, 5))
    +
    +idx = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)
    +print(idx)
    +for n in range(numChannels):
    +    ax[0,n].imshow(np.abs(Hprep[idx[n],0])**2 + np.abs(Hprep[idx[n],1])**2, cmap = "Greys", aspect = "auto")
    +    ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = "Greys", aspect = "auto")
    +
    +plt.show()
    +
    +
    +
    +
    +
    +
    +
    +
    +[153 134 179 124  21]
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_10_1.png +
    +
    +
    +
    [7]:
    +
    +
    +
    print("NMSE: "+str(np.sqrt(np.mean(np.abs(Hest-H)**2/(np.abs(H))**2))))
    +
    +
    +
    +
    +
    +
    +
    +
    +NMSE: 0.20250736648608653
    +
    +
    +
    +
    +

    PDSCH Parameters

    +
    +
    [8]:
    +
    +
    +
    ########################################## PDSCH Lower Physical Layer Parameters #########################################
    +pdschLowerPhyConfig    = PDSCHLowerPhyConfiguration(rank = 1, startSymbol=2, numSymbols=12, pdschMappingType = "PDSCH-mapping-type-A",
    +                                                    maxLength = "len1", dmrsAdditionalPosition = "pos0", l0 = 0,
    +                                                    configurationType = "Configuration-type-1")
    +pdschMappingType       = pdschLowerPhyConfig.pdschMappingType   # "PDSCH mapping type A" or "PDSCH mapping type B"
    +maxLength              = pdschLowerPhyConfig.maxLength
    +startSymbol            = pdschLowerPhyConfig.startSymbol
    +numSymbols             = pdschLowerPhyConfig.numSymbols
    +betaDMRS               = pdschLowerPhyConfig.betaDMRS
    +configurationType      = pdschLowerPhyConfig.configurationType   # "Configuration-type-1" or "Configuration-type-2"
    +dmrsTypeAPosition      = pdschLowerPhyConfig.dmrsTypeAPosition                                   # "pos2" or "pos3"
    +dmrsAdditionalPosition = pdschLowerPhyConfig.dmrsAdditionalPosition  # "pos2" or "pos3"
    +ld                     = pdschLowerPhyConfig.ld
    +l0                     = pdschLowerPhyConfig.l0
    +l1                     = pdschLowerPhyConfig.l1
    +rank                   = pdschLowerPhyConfig.rank
    +scramblingID           = pdschLowerPhyConfig.scramblingID
    +nSCID                  = pdschLowerPhyConfig.nSCID
    +
    +mcsIndex               = 3
    +mcsTable               = "pdschTable1"
    +
    +########################################## PDSCH Parameters #########################################
    +pdschUpperPhyConfig    = PDSCHUpperPhyConfiguration(pdschMappingType = pdschMappingType, configurationType = configurationType,
    +                                                    dmrsTypeAPosition = dmrsTypeAPosition, maxLength = maxLength, mcsIndex = mcsIndex,
    +                                                    mcsTable = mcsTable, dmrsAdditionalPosition = dmrsAdditionalPosition, l0 = l0,
    +                                                    ld = ld, l1 = l1, startSymbol = startSymbol, numSymbols = numSymbols, rank = rank,
    +                                                    numRB = numRB)
    +
    +numTBs                 = pdschUpperPhyConfig.numTBs
    +numRB                  = pdschUpperPhyConfig.numRB
    +tbLen1                 = pdschUpperPhyConfig.tbLen1
    +
    +codeRate               = pdschUpperPhyConfig.codeRate
    +modOrder               = pdschUpperPhyConfig.modOrder
    +mcsIndex               = pdschUpperPhyConfig.mcsIndex
    +mcsTable               = pdschUpperPhyConfig.mcsTable
    +numlayers              = pdschUpperPhyConfig.numlayers
    +scalingField           = pdschUpperPhyConfig.scalingField
    +additionalOverhead     = pdschUpperPhyConfig.additionalOverhead
    +dmrsREs                = pdschUpperPhyConfig.dmrsREs
    +additionalOverhead     = pdschUpperPhyConfig.additionalOverhead
    +
    +numTargetBits1         = pdschUpperPhyConfig.numTargetBits1
    +if(numTBs == 2):
    +    numTargetBits1     = pdschUpperPhyConfig.numTargetBits1
    +    numTargetBits2     = pdschUpperPhyConfig.numTargetBits2
    +    tbLen2             = pdschUpperPhyConfig.tbLen2
    +
    +numTargetBits          = pdschUpperPhyConfig.numTargetBits
    +
    +
    +
    +
    +
    +
    +
    +
    +************ PDSCH Parameters *************
    +
    +       pdschMappingType: PDSCH-mapping-type-A
    +            startSymbol: 2
    +             numSymbols: 12
    +               betaDMRS: 1
    +                   rank: 1
    +      configurationType: Configuration-type-1
    +              maxLength: len1
    +      dmrsTypeAPosition: pos2
    + dmrsAdditionalPosition: pos0
    +           Duration, ld: 12
    +       Start symbol, l0: 0
    +     Start symbol-1, l1: 11
    +          num of Layers: 1
    +
    +********************************************
    +********************************************
    +          tbsize-1: 5768
    +
    +            numTBs: 1
    +            numCBs: 2
    +         numLayers: 1 | LayerperTB: [1 0]
    +             numRB: 85
    +          coderate: 0.2451171875
    +          modOrder: 2
    +additionalOverhead: 0
    +numberTargetBits: 23460
    +********************************************
    +
    +
    +
    +
    +

    PDSCH: Transmitter

    +
    +
    [9]:
    +
    +
    +

    pdschUpperPhy = PDSCHUpperPhy(symbolsPerSlot = numSymbols, numRB = numRB, mcsIndex = mcsIndex, + numlayers = numlayers, scalingField = scalingField, + additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, + numTBs=numTBs, pdschTable = mcsTable, verbose = False) + +codeword = pdschUpperPhy(tblock = [None, None], rvid = [0, 0], enableLBRM = [False, False], + numBatch = numBatches, numBSs = numBSs) + +rnti = np.random.randint(65536, size=numBSs*numBatches) +nID = np.random.randint(1024, size=numBSs*numBatches) +bits2 = codeword[1] if numTBs == 2 else None + +pdschLowerPhyChain = PDSCHLowerPhy(pdschMappingType, configurationType, dmrsTypeAPosition, + maxLength, dmrsAdditionalPosition, l0, ld, l1) +resourceGrid = pdschLowerPhyChain(codeword[0], numRB, rank, slotNumber, scramblingID, + nSCID, rnti, nID, modOrder, startSymbol, bits2 = bits2) + +## Load the resource Grid into the transmision Grid +txGrid = np.zeros(resourceGrid.shape[0:-1]+(Nfft,), dtype= np.complex64) +bwpOffset = np.random.randint(Nfft-numRB*12) +txGrid[...,bwpOffset:bwpOffset+numRB*12] = resourceGrid + +fig, ax = pdschLowerPhyChain.displayDMRSGrid() +pdschLowerPhyChain.displayResourceGrid() +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_1.png +
    +
    +
    +
    [9]:
    +
    +
    +
    +
    +(<Figure size 640x480 with 1 Axes>,
    + <Axes: xlabel='OFDM Symbol-Index', ylabel='Subcarrier-Index'>)
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_15_3.png +
    +
    +
    +
    [10]:
    +
    +
    +
    fig, ax = plt.subplots(1,2)
    +
    +ax[0].plot(np.abs(Hf[0,0,0,0,:,0,5]))
    +ax[0].grid()
    +ax[1].plot(np.abs(Hf[0,0,0,0,:,0,3]))
    +ax[1].grid()
    +plt.show()
    +
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_16_0.png +
    +
    +
    +
    +

    SVD Based Beamforming: Perfect CSI

    +
    +
    [11]:
    +
    +
    +
    # Digital Beamforming
    +[U, S, Vh] = np.linalg.svd(Hf)
    +precoder   = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])
    +combiner   = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))
    +xBeam      = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]
    +
    +print("************ Beamforming Parameters *************")
    +print()
    +print("    Precoder Shape: "+str(precoder.shape))
    +print("    Combiner Shape: "+str(combiner.shape))
    +print("     Channel Shape: "+str(Hf.shape))
    +print("Eigen Matrix Shape: "+str(S.shape))
    +print("Beamformed Grid sh: "+str(xBeam.shape))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +************ Beamforming Parameters *************
    +
    +    Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)
    +    Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)
    +     Channel Shape: (1, 1, 1, 200, 1024, 4, 32)
    +Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)
    +Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)
    +
    +********************************************
    +
    +
    +
    +
    +

    Pass through Channel

    +
    +
    [12]:
    +
    +
    +
    # Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas
    +# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs,         numSamples/numFFTpoints,                numTxAntennas
    +# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots),   --    numUEs, numSamples/numFFTpoints, numRxAntennas
    +
    +ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)
    +y   = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))
    +
    +print("************ Channel Parameters *************")
    +print()
    +print("      Channel Shape: "+str(Hf.shape))
    +print("Received Grid shape: "+str(y.shape))
    +print(" Beamformed Grid sh: "+str(xBeam.shape))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +************ Channel Parameters *************
    +
    +      Channel Shape: (1, 1, 1, 200, 1024, 4, 32)
    +Received Grid shape: (200, 1, 14, 1, 1024, 4)
    + Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)
    +
    +********************************************
    +
    +
    +
    + +
    +

    SVD Based Beamforming: CSI Reconstructed using CSINet

    +
    +
    [14]:
    +
    +
    +
    # Digital Beamforming
    +
    +shape      = Hf[0,0,0].shape
    +Hest = np.zeros((shape[0], shape[2], shape[3], shape[1]), dtype = np.complex64)
    +
    +for nr in range(Nr):
    +    H          = Hf[0,0,0,...,nr,:].transpose(0,2,1)
    +    Hprep      = csinet.preprocess(H)
    +    Hrec       = csinet.predict(Hprep)
    +    Hest[:,nr] = csinet.postprocess(Hprep, Nfft)
    +
    +[U, S, Vh] = np.linalg.svd(Hest.transpose(0,3,1,2)[np.newaxis, np.newaxis,np.newaxis])
    +precoder   = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])
    +combiner   = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))
    +xBeam      = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]
    +
    +print("************ Beamforming Parameters *************")
    +print()
    +print("    Precoder Shape: "+str(precoder.shape))
    +print("    Combiner Shape: "+str(combiner.shape))
    +print("     Channel Shape: "+str(Hf.shape))
    +print("Eigen Matrix Shape: "+str(S.shape))
    +print("Beamformed Grid sh: "+str(xBeam.shape))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +7/7 [==============================] - 0s 6ms/step
    +7/7 [==============================] - 0s 6ms/step
    +7/7 [==============================] - 0s 7ms/step
    +7/7 [==============================] - 0s 6ms/step
    +************ Beamforming Parameters *************
    +
    +    Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)
    +    Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)
    +     Channel Shape: (1, 1, 1, 200, 1024, 4, 32)
    +Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)
    +Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)
    +
    +********************************************
    +
    +
    +
    +
    +

    Pass through Wireless Channel

    +
    +
    [15]:
    +
    +
    +
    # Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas
    +# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs,         numSamples/numFFTpoints,                numTxAntennas
    +# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots),   --    numUEs, numSamples/numFFTpoints, numRxAntennas
    +
    +ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)
    +y   = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))
    +
    +print("************ Channel Parameters *************")
    +print()
    +print("      Channel Shape: "+str(Hf.shape))
    +print("Received Grid shape: "+str(y.shape))
    +print(" Beamformed Grid sh: "+str(xBeam.shape))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +************ Channel Parameters *************
    +
    +      Channel Shape: (1, 1, 1, 200, 1024, 4, 32)
    +Received Grid shape: (200, 1, 14, 1, 1024, 4)
    + Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)
    +
    +********************************************
    +
    +
    +
    + +
    +
    +

    Performance Evaluations

    +
    +

    Throughput Evaluations

    +
    +
    [18]:
    +
    +
    +
    fig, ax = plt.subplots()
    +
    +ax.semilogy(SNRdB,  throughput,  "b",   marker = "*", lw = 3, mec = "k", mfc = "r", ms = 12, label="Throughput [Perfect-CSI]")
    +ax.semilogy(SNRdB2, throughput2, "--r", marker = "o", lw = 3, mec = "w", mfc = "r", ms = 9, label="Throughput [CSINet]")
    +
    +ax.set_xlabel("Signal to Noise Ratio (dB)")
    +ax.set_ylabel("Throughput (bits per second)")
    +ax.set_title("Data-rate Evaluation: SNR (dB) vs Throughput", fontsize = 16)
    +ax.legend(loc="best")
    +
    +ax.set_xticks(SNRdB2, minor=False)
    +ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))
    +ytck = 10**(np.arange(2, 9)).repeat(10)*np.tile(np.arange(1, 11), [7])
    +ax.set_yticks(ytck, minor=True)
    +ax.set_yticks(10**(np.arange(2, 8)), minor=False)
    +ax.set_ylim([10**2, 10**8])
    +# ax.set_xlim([0.999*SNRdB[0], 1.05*SNRdB[-1]])
    +ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')
    +ax.grid(which = 'major', alpha = 0.65, color = "k")
    +
    +plt.show()
    +
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_31_0.png +
    +
    +
    +
    +

    BLER Evaluations

    +
    +
    [19]:
    +
    +
    +
    fig, ax = plt.subplots()
    +
    +ax.semilogy(SNRdB,  bler,    "g", marker = "X", lw = 3, mec = "k", mfc = "w", ms = 9, label="BLER [Perfect-CSI]")
    +ax.semilogy(SNRdB2, bler2, "--b", marker = "o", lw = 3, mec = "w", mfc = "r", ms = 9, label="BLER [CSI-Net]")
    +
    +ax.legend(loc="best")
    +ax.set_xlabel("Signal to Noise Ratio (dB)")
    +ax.set_ylabel("Block (Bit) Error Rate")
    +ax.set_title("Reliability Evaluation: SNR (dB) vs B(L)ER", fontsize = 16)
    +
    +# ax.set_xticks(SNRdB1)
    +ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))
    +ytck = (0.1**(np.arange(1, 10))).repeat(9)*np.tile(np.arange(10, 1,-1), [9])
    +ytck = np.concatenate([[1],ytck])
    +ax.set_yticks(ytck, minor=True)
    +ax.set_yticks(0.1**(np.arange(0, 9)), minor=False)
    +ax.set_ylim([0.5*10**-5,1.2])
    +
    +ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')
    +ax.grid(which = 'major', alpha = 0.65, color = "k")
    +
    +plt.show()
    +
    +
    +
    +
    +
    +
    +
    +../../../_images/api_Projects_Project3_CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks_33_0.png +
    +
    +
    +
    +

    References

    +
      +
    1. Deep Learning for Massive MIMO CSI Feedback

    2. +
    +
    +
    [ ]:
    +
    +
    +
    
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb b/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb new file mode 100644 index 00000000..b5f400ac --- /dev/null +++ b/api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb @@ -0,0 +1,1225 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d2036407", + "metadata": {}, + "source": [ + "# CSI Compression and Reconstruction using CSINet for TDD Massive MIMO 5G Networks\n", + "\n", + "## Import Libraries\n", + "### Import Python Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b3d7831b", + "metadata": {}, + "outputs": [], + "source": [ + "# %matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "import os\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"-1\"\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'\n", + "\n", + "import numpy as np\n", + "\n", + "# from IPython.display import display, HTML\n", + "# display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "cdbd39e6", + "metadata": {}, + "source": [ + "### Import 5G Toolkit Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "079c39a1", + "metadata": {}, + "outputs": [], + "source": [ + "from csiNet import CSINet\n", + "\n", + "import sys\n", + "sys.path.append(\"../../\")\n", + "\n", + "from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize\n", + "from toolkit5G.PhysicalChannels import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy\n", + "from toolkit5G.ChannelModels import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator\n", + "from toolkit5G.Configurations import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration\n", + "from toolkit5G.ChannelProcessing import AddNoise, ApplyChannel\n", + "from toolkit5G.SymbolMapping import Mapper, Demapper" + ] + }, + { + "cell_type": "markdown", + "id": "6637699c", + "metadata": {}, + "source": [ + "## Simulation Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "158a9ec4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Simulation Parameters *************\n", + "\n", + " numBatches: 200\n", + " numRB: 85\n", + " fft Size: 1024\n", + " numBSs: 1\n", + " numUEs: 200\n", + " scs: 30000\n", + " slotNumber: 0\n", + " terrain: CDL-A\n", + "Tx Ant Struture: [ 1 1 32 1 1]\n", + "Rx Ant Struture: [1 1 4 1 1]\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Carrier Frequency\n", + "carrierFrequency = 3.6*10**9 \n", + "delaySpread = 100*(10**-9)\n", + "numBatches = 200 # Number of batches considered for simulation\n", + "scs = 30*10**3 # Subcarrier Spacing for simulation\n", + "numBSs = 1 # Number of BSs considered for simulation\n", + "# Number of UEs considered for simulation\n", + "numUEs = numBatches # For now we are assuming that the numbatches are captured via numUEs\n", + "numRB = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier\n", + "slotNumber = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation\n", + "terrain = \"CDL-A\" # Terrain\n", + "txAntStruture = np.array([1,1,32,1,1]) # Tx Antenna Structure\n", + "rxAntStruture = np.array([1,1,4,1,1]) # Tx Antenna Structure\n", + "Nfft = 1024 # FFTSize\n", + "\n", + "print(\"************ Simulation Parameters *************\")\n", + "print()\n", + "print(\" numBatches: \"+str(numBatches))\n", + "print(\" numRB: \"+str(numRB))\n", + "print(\" fft Size: \"+str(Nfft))\n", + "print(\" numBSs: \"+str(numBSs))\n", + "print(\" numUEs: \"+str(numUEs))\n", + "print(\" scs: \"+str(scs))\n", + "print(\" slotNumber: \"+str(slotNumber))\n", + "print(\" terrain: \"+str(terrain))\n", + "print(\"Tx Ant Struture: \"+str(txAntStruture))\n", + "print(\"Rx Ant Struture: \"+str(rxAntStruture))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "0cf40c81", + "metadata": {}, + "source": [ + "## Wireless Channel Generation: CDL-A" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "74639fd2", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Number of BSs: 1\n", + " Shape of Channel: (1, 1, 1, 200, 1024, 4, 32)\n", + "*****************************************************\n", + "\n" + ] + } + ], + "source": [ + "# Antenna Array at UE side\n", + "# assuming antenna element type to be \"OMNI\"\n", + "# with 2 panel and 2 single polarized antenna element per panel.\n", + "ueAntArray = AntennaArrays(antennaType = \"OMNI\", centerFrequency = carrierFrequency, \n", + " arrayStructure = rxAntStruture)\n", + "ueAntArray()\n", + "\n", + "# # Radiation Pattern of Rx antenna element \n", + "# ueAntArray.displayAntennaRadiationPattern()\n", + "\n", + "\n", + "# Antenna Array at BS side\n", + "# assuming antenna element type to be \"3GPP_38.901\", a parabolic antenna \n", + "# with 4 panel and 4 single polarized antenna element per panel.\n", + "bsAntArray = AntennaArrays(antennaType = \"3GPP_38.901\", centerFrequency = carrierFrequency,\n", + " arrayStructure = txAntStruture)\n", + "bsAntArray()\n", + " \n", + "# # Radiation Pattern of Tx antenna element \n", + "# bsAntArray[0].displayAntennaRadiationPattern()\n", + "\n", + "# Layout Parameters\n", + "isd = 100 # inter site distance\n", + "minDist = 10 # min distance between each UE and BS \n", + "ueHt = 1.5 # UE height\n", + "bsHt = 25 # BS height\n", + "bslayoutType = \"Hexagonal\" # BS layout type\n", + "ueDropType = \"Hexagonal\" # UE drop type\n", + "htDist = \"equal\" # UE height distribution\n", + "ueDist = \"equal\" # UE Distribution per site\n", + "nSectorsPerSite = 1 # number of sectors per site\n", + "maxNumFloors = 1 # Max number of floors in an indoor object\n", + "minNumFloors = 1 # Min number of floors in an indoor object\n", + "heightOfRoom = 3 # height of room or ceiling in meters\n", + "indoorUEfract = 0.5 # Fraction of UEs located indoor\n", + "lengthOfIndoorObject = 3 # length of indoor object typically having rectangular geometry \n", + "widthOfIndoorObject = 3 # width of indoor object\n", + "# forceLOS = True # boolen flag if true forces every link to be in LOS state\n", + "forceLOS = False # boolen flag if true forces every link to be in LOS state\n", + "\n", + "# simulation layout object \n", + "simLayoutObj = SimulationLayout(numOfBS = numBSs,\n", + " numOfUE = numUEs,\n", + " heightOfBS = bsHt,\n", + " heightOfUE = ueHt, \n", + " ISD = isd,\n", + " layoutType = bslayoutType,\n", + " ueDropMethod = ueDropType, \n", + " UEdistibution = ueDist,\n", + " UEheightDistribution = htDist,\n", + " numOfSectorsPerSite = nSectorsPerSite,\n", + " ueRoute = None)\n", + "\n", + "simLayoutObj(terrain = terrain, \n", + " carrierFreq = carrierFrequency, \n", + " ueAntennaArray = ueAntArray,\n", + " bsAntennaArray = bsAntArray,\n", + " indoorUEfraction = indoorUEfract,\n", + " lengthOfIndoorObject = lengthOfIndoorObject,\n", + " widthOfIndoorObject = widthOfIndoorObject,\n", + " forceLOS = forceLOS)\n", + "\n", + "# displaying the topology of simulation layout\n", + "fig, ax = simLayoutObj.display2DTopology()\n", + "\n", + "paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)\n", + "\n", + "# paramGen.displayClusters((0,0,0), rayIndex = 0)\n", + "channel = paramGen.getChannel()\n", + "Hf = channel.ofdm(scs, Nfft, normalizeChannel = True)\n", + "\n", + "Nt = bsAntArray.numAntennas # Number of BS Antennas\n", + "Nr = ueAntArray.numAntennas\n", + "\n", + "print(\" Number of BSs: \"+str(numBSs))\n", + "print(\" Shape of Channel: \"+str(Hf.shape))\n", + "print(\"*****************************************************\")\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "id": "1f83b156", + "metadata": {}, + "source": [ + "## Reconstrunction Performance of CSI-Net" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6c22cda8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 0s 7ms/step\n" + ] + } + ], + "source": [ + "numSubcarrier = 32\n", + "codewordSize = 512\n", + "\n", + "H = Hf[0,0,0,...,0,:].transpose(0,2,1)\n", + "csinet = CSINet()\n", + "model = csinet(Nt, numSubcarrier, codewordSize)\n", + "csinet.loadModel()\n", + "Hprep = csinet.preprocess(H)\n", + "\n", + "Hrec = csinet.predict(Hprep)\n", + "\n", + "Hest = csinet.postprocess(Hprep, Nfft)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "adf8a124", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[153 134 179 124 21]\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "numChannels = 5\n", + "fig, ax = plt.subplots(2,numChannels, figsize = (12, 5))\n", + "\n", + "idx = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)\n", + "print(idx)\n", + "for n in range(numChannels):\n", + " ax[0,n].imshow(np.abs(Hprep[idx[n],0])**2 + np.abs(Hprep[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " \n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d5881756", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NMSE: 0.20250736648608653\n" + ] + } + ], + "source": [ + "print(\"NMSE: \"+str(np.sqrt(np.mean(np.abs(Hest-H)**2/(np.abs(H))**2))))" + ] + }, + { + "cell_type": "markdown", + "id": "49e267dc", + "metadata": {}, + "source": [ + "## PDSCH Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "29e65b83", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ PDSCH Parameters *************\n", + "\n", + " pdschMappingType: PDSCH-mapping-type-A\n", + " startSymbol: 2\n", + " numSymbols: 12\n", + " betaDMRS: 1\n", + " rank: 1\n", + " configurationType: Configuration-type-1\n", + " maxLength: len1\n", + " dmrsTypeAPosition: pos2\n", + " dmrsAdditionalPosition: pos0\n", + " Duration, ld: 12\n", + " Start symbol, l0: 0\n", + " Start symbol-1, l1: 11\n", + " num of Layers: 1\n", + "\n", + "********************************************\n", + "********************************************\n", + " tbsize-1: 5768\n", + "\n", + " numTBs: 1\n", + " numCBs: 2\n", + " numLayers: 1 | LayerperTB: [1 0]\n", + " numRB: 85\n", + " coderate: 0.2451171875\n", + " modOrder: 2\n", + "additionalOverhead: 0\n", + "numberTargetBits: 23460\n", + "********************************************\n" + ] + } + ], + "source": [ + "########################################## PDSCH Lower Physical Layer Parameters #########################################\n", + "pdschLowerPhyConfig = PDSCHLowerPhyConfiguration(rank = 1, startSymbol=2, numSymbols=12, pdschMappingType = \"PDSCH-mapping-type-A\", \n", + " maxLength = \"len1\", dmrsAdditionalPosition = \"pos0\", l0 = 0,\n", + " configurationType = \"Configuration-type-1\")\n", + "pdschMappingType = pdschLowerPhyConfig.pdschMappingType # \"PDSCH mapping type A\" or \"PDSCH mapping type B\"\n", + "maxLength = pdschLowerPhyConfig.maxLength\n", + "startSymbol = pdschLowerPhyConfig.startSymbol\n", + "numSymbols = pdschLowerPhyConfig.numSymbols\n", + "betaDMRS = pdschLowerPhyConfig.betaDMRS\n", + "configurationType = pdschLowerPhyConfig.configurationType # \"Configuration-type-1\" or \"Configuration-type-2\"\n", + "dmrsTypeAPosition = pdschLowerPhyConfig.dmrsTypeAPosition # \"pos2\" or \"pos3\"\n", + "dmrsAdditionalPosition = pdschLowerPhyConfig.dmrsAdditionalPosition # \"pos2\" or \"pos3\"\n", + "ld = pdschLowerPhyConfig.ld\n", + "l0 = pdschLowerPhyConfig.l0\n", + "l1 = pdschLowerPhyConfig.l1\n", + "rank = pdschLowerPhyConfig.rank\n", + "scramblingID = pdschLowerPhyConfig.scramblingID\n", + "nSCID = pdschLowerPhyConfig.nSCID\n", + "\n", + "mcsIndex = 3\n", + "mcsTable = \"pdschTable1\"\n", + "\n", + "########################################## PDSCH Parameters #########################################\n", + "pdschUpperPhyConfig = PDSCHUpperPhyConfiguration(pdschMappingType = pdschMappingType, configurationType = configurationType, \n", + " dmrsTypeAPosition = dmrsTypeAPosition, maxLength = maxLength, mcsIndex = mcsIndex,\n", + " mcsTable = mcsTable, dmrsAdditionalPosition = dmrsAdditionalPosition, l0 = l0, \n", + " ld = ld, l1 = l1, startSymbol = startSymbol, numSymbols = numSymbols, rank = rank, \n", + " numRB = numRB)\n", + "\n", + "numTBs = pdschUpperPhyConfig.numTBs\n", + "numRB = pdschUpperPhyConfig.numRB\n", + "tbLen1 = pdschUpperPhyConfig.tbLen1\n", + "\n", + "codeRate = pdschUpperPhyConfig.codeRate\n", + "modOrder = pdschUpperPhyConfig.modOrder\n", + "mcsIndex = pdschUpperPhyConfig.mcsIndex\n", + "mcsTable = pdschUpperPhyConfig.mcsTable\n", + "numlayers = pdschUpperPhyConfig.numlayers\n", + "scalingField = pdschUpperPhyConfig.scalingField\n", + "additionalOverhead = pdschUpperPhyConfig.additionalOverhead\n", + "dmrsREs = pdschUpperPhyConfig.dmrsREs\n", + "additionalOverhead = pdschUpperPhyConfig.additionalOverhead\n", + "\n", + "numTargetBits1 = pdschUpperPhyConfig.numTargetBits1\n", + "if(numTBs == 2):\n", + " numTargetBits1 = pdschUpperPhyConfig.numTargetBits1\n", + " numTargetBits2 = pdschUpperPhyConfig.numTargetBits2\n", + " tbLen2 = pdschUpperPhyConfig.tbLen2\n", + "\n", + "numTargetBits = pdschUpperPhyConfig.numTargetBits" + ] + }, + { + "cell_type": "markdown", + "id": "029b60e8", + "metadata": {}, + "source": [ + "## PDSCH: Transmitter" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "abb12e69", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(
    ,\n", + " )" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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+Mc/0L9/f/h8Phx00EG4++67E35PzeU///kPDMPACy+8gFNOOQV5eXk4+uijsWrVqgbHLV68GD169EBeXh7OPffcuAvEf/7znzj22GORk5OD3r17Y9asWbG7fLNnz0ZpaWmDzzvjjDNwyimnIBQKOfoedHT2q6RlZKyOjg5lfvrpJ2UYhrrtttvifvzSSy9VHTp0UKFQSCml1EknnaSmTJliez67j1uWpTp06KAmTZoUex8AtXTpUnXUUUepp59+Wiml1Lfffqt8Pp/avHlzwmnagUBAFRQUqKlTp6ra2tq4x7z77rvKNE21bdu22PteeOEFlZ+fr/bt2xfzFhYWqjlz5qjNmzerOXPmKNM01ahRo9TChQvV5s2b1aRJk1SnTp1UVVWVUurnadx9+/ZVy5cvVxs2bFCjR49WBx10kPL7/UoppT788EPlcrnU7Nmz1aZNm9SiRYtUbm6uWrRoUczSs2dPde+999o+lvUfI6VUbOp4nz591LJly9SmTZvUb37zG9WzZ08VCASUUkq9//77yuVyqXnz5qlNmzap++67T7Vv314VFRXFzvn222+rdu3aqcWLF6uvvvpKLV++XB100EHq5ptvVkopFQwG1dChQ9U555yjlFLqwQcfVO3bt1fffvttQquOTmuLXhDp6LShvP/++w3+0m2ce+65RwFQO3bsUEqFFxAej0fl5+fH/kybNi12fKIF0+DBg9WoUaNi/x39uvPnz1ennHKKUkqpWbNmqXPPPVft2bMn4YJIKaX+/ve/qw4dOqicnBx1wgknqBkzZqiPP/64wTH9+vVT8+bNi/33mWeeqS666KIG3hNPPDH238FgUOXn56s//OEPsfdt375dAVCrVq1SSv28IFqyZEnsmJ9++knl5uaq5557Timl1IUXXqh+/etfN7Bcd911ql+/frH/TnVB9Pjjj8c+/tlnnykAauPGjUoppX73u9+p008/vcE5LrjgggYLolNPPbXJAvjpp59W3bp1i/33V199pQoLC9X06dNVbm6ueuaZZxI6dXRaY/SWmY5OG4xSKuljx40bh/Xr18f+zJgxI+mvYRhGk/f//ve/x6pVq/D1119j8eLFmDhxYlLnGzNmDLZt24Z//etfOO200/Dmm2/i2GOPxeLFi2PHXHLJJbEapR07duDll19ucv6jjjoq9v9N00SnTp1w5JFHxt5XXFwMANi5c2eDzxs6dGjs/3fs2BGHH344Nm7cCADYuHEjhg0b1uD4YcOGYcuWLbAsq8n38v/+3/9DQUFB7E+i1Pd269atgW3jxo0YPHiwrRMAPv74Y8yePbvB14vWfVVXVwMAevfujbvuugvz5s3DWWedhQsvvDChSUenNUYviHR02lAOOeQQGIYR+4u8cTZu3IgOHTqgS5cusfcVFRXhkEMOif3p3Llzs1/Hsixs2bIFvXr1avKxTp06YfTo0bj44otRW1uLUaNGJe3PycnBr3/9a8ycORPvvfceLrroItx0002xj//xj3/E119/jVWrVuEvf/kLevXqhV/84hcNzuHxeBr8t2EYDd4XXcSls35m9uzZDRaZieLUVllZiVmzZjX4ep988gm2bNmCnJyc2HFvv/02TNPEf/7zn1h9kY5OW4peEOnotKF06tQJv/71r/Hwww83KGwGgLKyMjzzzDO44IIL4t7ZaUmeeuop7NmzB2PGjIn78YkTJ+LNN9/EH//4R5immfLX6devH6qqqmL/3alTJ5xzzjlYtGgRFi9ejAkTJqR87sap3y5gz5492Lx5M/r27QsA6Nu3b5OX/7/77rs47LDD4n5/Xbt2bbDITDV9+/bF6tWrbZ0AcOyxx2LTpk0Nvl70j8sV/ivgueeewwsvvIA333wTW7duxZw5c1I26ejsr3E3f4iOjk5ryoMPPogTTjgBI0eOxC233IJevXrhs88+w3XXXYcDDjgAt956a4vOV11djbKyMgSDQXz//fdYunQp7r33XkyaNAmnnHJK3M857bTT8OOPP6Jdu3ZJfY2ffvoJv/3tbzFx4kQcddRRKCwsxIcffog77rgDZ599doNjL7nkEowePRqWZTX76rWWZPbs2ejUqROKi4tx/fXXo3PnzjjnnHMAANdeey2OP/54zJkzBxdccAFWrVqFBx98EA8//LDY14+Xq6++GsOGDcNdd92Fs88+G6+++ipeeeWVBsfceOONGD16NHr06IHf/OY3cLlc+Pjjj/Hpp5/illtuwffff49JkyZh3rx5OPHEE7Fo0SKMHj0ao0aNwpAhQ9Lq19Fhir5DpKPTxnLooYfiww8/RO/evXH++efj4IMPxmWXXYZTTjkFq1atQseOHVt0vsceewzdunXDwQcfjPPOOw+ff/45nnvuuYSLAcMw0LlzZ3i93qS+RkFBAQYPHox7770Xv/zlL3HEEUdg5syZuPTSS/Hggw82OHb48OHo1q0bRo4cidLS0hZ9L4ly++23Y8qUKTjuuONQVlaGl156KeY/9thj8fzzz2PJkiU44ogjcOONN2L27Nm46KKLxL5+vAwZMgSPPfYY7rvvPhx99NFYvnw5brjhhgbHjBw5EsuWLcPy5ctx/PHHY8iQIbj33nvRs2dPKKVw0UUXYdCgQbjyyitjx0+aNAm///3vUVlZmVa/jg5TDNWS6kodHR0d8lRWVuKAAw7AokWLcN5552Wbo6Ojs59Eb5np6Oi0ioRCIezatQt333032rdvH2vYqKOjo5NM9IJIR0enVWTr1q3o1asXDjzwQCxevLjBeBEdHR2d5qK3zHR0dHR0dHTafHRRtY6Ojo6Ojk6bj14Q6ejo6Ojo6LT56AWRjo6Ojo6OTpuPXhDp6Ojo6OjotPnoBZGOjo6Ojo5Om49eEOno6Ojo6Oi0+egFkY6Ojo6Ojk6bj14Q6ejo6Ojo6LT5/H+7EFfJZawc/AAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "pdschUpperPhy = PDSCHUpperPhy(symbolsPerSlot = numSymbols, numRB = numRB, mcsIndex = mcsIndex, \n", + " numlayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " numTBs=numTBs, pdschTable = mcsTable, verbose = False)\n", + "\n", + "codeword = pdschUpperPhy(tblock = [None, None], rvid = [0, 0], enableLBRM = [False, False], \n", + " numBatch = numBatches, numBSs = numBSs)\n", + "\n", + "rnti = np.random.randint(65536, size=numBSs*numBatches)\n", + "nID = np.random.randint(1024, size=numBSs*numBatches)\n", + "bits2 = codeword[1] if numTBs == 2 else None\n", + "\n", + "pdschLowerPhyChain = PDSCHLowerPhy(pdschMappingType, configurationType, dmrsTypeAPosition, \n", + " maxLength, dmrsAdditionalPosition, l0, ld, l1)\n", + "resourceGrid = pdschLowerPhyChain(codeword[0], numRB, rank, slotNumber, scramblingID, \n", + " nSCID, rnti, nID, modOrder, startSymbol, bits2 = bits2)\n", + "\n", + "## Load the resource Grid into the transmision Grid\n", + "txGrid = np.zeros(resourceGrid.shape[0:-1]+(Nfft,), dtype= np.complex64)\n", + "bwpOffset = np.random.randint(Nfft-numRB*12)\n", + "txGrid[...,bwpOffset:bwpOffset+numRB*12] = resourceGrid\n", + "\n", + "fig, ax = pdschLowerPhyChain.displayDMRSGrid()\n", + "pdschLowerPhyChain.displayResourceGrid()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5730f5b9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(1,2)\n", + "\n", + "ax[0].plot(np.abs(Hf[0,0,0,0,:,0,5]))\n", + "ax[0].grid()\n", + "ax[1].plot(np.abs(Hf[0,0,0,0,:,0,3]))\n", + "ax[1].grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f06ed8b1", + "metadata": {}, + "source": [ + "## SVD Based Beamforming: Perfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c7d0f32f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Beamforming Parameters *************\n", + "\n", + " Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)\n", + " Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)\n", + "Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Digital Beamforming\n", + "[U, S, Vh] = np.linalg.svd(Hf)\n", + "precoder = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])\n", + "combiner = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))\n", + "xBeam = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]\n", + "\n", + "print(\"************ Beamforming Parameters *************\")\n", + "print()\n", + "print(\" Precoder Shape: \"+str(precoder.shape))\n", + "print(\" Combiner Shape: \"+str(combiner.shape))\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Eigen Matrix Shape: \"+str(S.shape))\n", + "print(\"Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "25a2e828", + "metadata": {}, + "source": [ + "## Pass through Channel" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2a97e864", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Channel Parameters *************\n", + "\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Received Grid shape: (200, 1, 14, 1, 1024, 4)\n", + " Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas\n", + "# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numSamples/numFFTpoints, numTxAntennas\n", + "# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), -- numUEs, numSamples/numFFTpoints, numRxAntennas\n", + "\n", + "ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)\n", + "y = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))\n", + "\n", + "print(\"************ Channel Parameters *************\")\n", + "print()\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Received Grid shape: \"+str(y.shape))\n", + "print(\" Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "b11aa3cf", + "metadata": {}, + "source": [ + "## Link Level Simulation: SVD based Beamforming using Perfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "84467cf4", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "********************************************************\n", + "Simulation: [0] for SNRdB = -10.5\n", + "Simulation: [0] for codedBER = 0.003271497919556172\n", + "Simulation: [0] for uncodedBER = 0.004089940323955669\n", + "Simulation: [0] for BLER = 1.0\n", + "Simulation: [0] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [1] for SNRdB = -9.88888888888889\n", + "Simulation: [1] for codedBER = 0.0019166088765603328\n", + "Simulation: [1] for uncodedBER = 0.002438832054560955\n", + "Simulation: [1] for BLER = 1.0\n", + "Simulation: [1] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [2] for SNRdB = -9.277777777777779\n", + "Simulation: [2] for codedBER = 0.0011243065187239944\n", + "Simulation: [2] for uncodedBER = 0.001499147485080989\n", + "Simulation: [2] for BLER = 0.955\n", + "Simulation: [2] for Throughput = 519120.00000000047\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [3] for SNRdB = -8.666666666666666\n", + "Simulation: [3] for codedBER = 0.0005989944521497919\n", + "Simulation: [3] for uncodedBER = 0.0008077578857630008\n", + "Simulation: [3] for BLER = 0.8425\n", + "Simulation: [3] for Throughput = 1816919.9999999995\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [4] for SNRdB = -8.055555555555555\n", + "Simulation: [4] for codedBER = 0.0002869278779472954\n", + "Simulation: [4] for uncodedBER = 0.00043350383631713557\n", + "Simulation: [4] for BLER = 0.5549999999999999\n", + "Simulation: [4] for Throughput = 5133520.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [5] for SNRdB = -7.444444444444445\n", + "Simulation: [5] for codedBER = 0.00013262829403606102\n", + "Simulation: [5] for uncodedBER = 0.00022953964194373402\n", + "Simulation: [5] for BLER = 0.3125\n", + "Simulation: [5] for Throughput = 7931000.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [6] for SNRdB = -6.833333333333333\n", + "Simulation: [6] for codedBER = 7.628294036061026e-05\n", + "Simulation: [6] for uncodedBER = 0.00012510656436487638\n", + "Simulation: [6] for BLER = 0.19499999999999995\n", + "Simulation: [6] for Throughput = 9286480.000000002\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [7] for SNRdB = -6.222222222222221\n", + "Simulation: [7] for codedBER = 2.340499306518724e-05\n", + "Simulation: [7] for uncodedBER = 6.457800511508951e-05\n", + "Simulation: [7] for BLER = 0.06499999999999995\n", + "Simulation: [7] for Throughput = 10786160.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [8] for SNRdB = -5.611111111111111\n", + "Simulation: [8] for codedBER = 0.0\n", + "Simulation: [8] for uncodedBER = 3.836317135549872e-05\n", + "Simulation: [8] for BLER = 0.0\n", + "Simulation: [8] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [9] for SNRdB = -5.0\n", + "Simulation: [9] for codedBER = 0.0\n", + "Simulation: [9] for uncodedBER = 2.3231031543052003e-05\n", + "Simulation: [9] for BLER = 0.0\n", + "Simulation: [9] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n" + ] + } + ], + "source": [ + "numPoints = 10\n", + "SNRdB = np.linspace(-10.5, -5, numPoints, endpoint=True)\n", + "# SNRdB = np.linspace(-13.5, -7.5, numPoints, endpoint=True)\n", + "SNR = 10**(SNRdB/10)\n", + "\n", + "codedBER = np.zeros(numPoints)\n", + "uncodedBER = np.zeros(numPoints)\n", + "bler = np.zeros(numPoints)\n", + "throughput = np.zeros(numPoints)\n", + "\n", + "for i in range(numPoints):\n", + " print(\"********************************************************\")\n", + " print(\"Simulation: [\"+str(i)+\"] for SNRdB = \"+str(SNRdB[i]))\n", + " \n", + " ## Add noise to the received grid\n", + " yGrid = AddNoise(False)(y, 1/SNR[i], 0)\n", + "\n", + " ## Receiver Combining\n", + " rGrid = ((combiner@yGrid[...,np.newaxis])[:,0,...,0]).transpose(0,2,4,1,3)\n", + "\n", + " ## Extracting the Received Grid\n", + " rxGrid = rGrid[...,bwpOffset:bwpOffset+12*numRB]\n", + "\n", + " ## Receiver: Lower Physical layer\n", + " isChannelPerfect = False\n", + " pdschDecLowerPhy = PDSCHDecoderLowerPhy(modOrder, isChannelPerfect, isEqualized = True)\n", + " descrBits = pdschDecLowerPhy(rxGrid, pdschLowerPhyChain.pdschIndices, rnti, \n", + " nID, SNR[i], None, numTBs, hard_out = False)\n", + "\n", + " ## Receiver: Upper Physical layer\n", + " pdschUpPhyDec = PDSCHDecoderUpperPhy(numTBs = numTBs, mcsIndex = mcsIndex, symbolsPerSlot= numSymbols, \n", + " numRB = numRB, numLayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " enableLBRM = [False, False], pdschTable = mcsTable, rvid = [0, 0], verbose=False)\n", + "\n", + " bits = pdschUpPhyDec(descrBits)\n", + "\n", + " ## KPI computation\n", + " codedBER[i] = np.mean(np.abs(bits-pdschUpperPhy.tblock1))\n", + " uncodedBER[i] = np.mean(np.abs(codeword[0] - np.where(descrBits[0]>0,1,0)))\n", + " bler[i] = 1-np.mean(pdschUpPhyDec.crcCheckforCBs)\n", + " throughput[i] = (1-bler[i])*tbLen1*2000\n", + " \n", + " print(\"Simulation: [\"+str(i)+\"] for codedBER = \"+str(codedBER[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for uncodedBER = \"+str(uncodedBER[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for BLER = \"+str(bler[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for Throughput = \"+str(throughput[i]))\n", + " \n", + " print(\"********************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "5c5d5f1c", + "metadata": {}, + "source": [ + "## SVD Based Beamforming: CSI Reconstructed using CSINet" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "01adb788", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 0s 6ms/step\n", + "7/7 [==============================] - 0s 6ms/step\n", + "7/7 [==============================] - 0s 7ms/step\n", + "7/7 [==============================] - 0s 6ms/step\n", + "************ Beamforming Parameters *************\n", + "\n", + " Precoder Shape: (200, 1, 1, 1, 1024, 32, 1)\n", + " Combiner Shape: (200, 1, 1, 1, 1024, 1, 4)\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Eigen Matrix Shape: (1, 1, 1, 200, 1024, 4)\n", + "Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Digital Beamforming\n", + "\n", + "shape = Hf[0,0,0].shape\n", + "Hest = np.zeros((shape[0], shape[2], shape[3], shape[1]), dtype = np.complex64)\n", + "\n", + "for nr in range(Nr):\n", + " H = Hf[0,0,0,...,nr,:].transpose(0,2,1)\n", + " Hprep = csinet.preprocess(H)\n", + " Hrec = csinet.predict(Hprep)\n", + " Hest[:,nr] = csinet.postprocess(Hprep, Nfft)\n", + "\n", + "[U, S, Vh] = np.linalg.svd(Hest.transpose(0,3,1,2)[np.newaxis, np.newaxis,np.newaxis])\n", + "precoder = np.conj(Vh.transpose(3,0,1,2,4,6,5)[...,0:rank])\n", + "combiner = np.conj((U*(1/S[...,np.newaxis,:].repeat(S.shape[-1], axis = -2)))[...,0:rank].transpose(3,0,1,2,4,6,5))\n", + "xBeam = (precoder@txGrid.transpose(0,1,3,4,2)[:,np.newaxis,...,np.newaxis])[...,0]\n", + "\n", + "print(\"************ Beamforming Parameters *************\")\n", + "print()\n", + "print(\" Precoder Shape: \"+str(precoder.shape))\n", + "print(\" Combiner Shape: \"+str(combiner.shape))\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Eigen Matrix Shape: \"+str(S.shape))\n", + "print(\"Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "aba9a9a7", + "metadata": {}, + "source": [ + "## Pass through Wireless Channel" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "99b43407", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Channel Parameters *************\n", + "\n", + " Channel Shape: (1, 1, 1, 200, 1024, 4, 32)\n", + "Received Grid shape: (200, 1, 14, 1, 1024, 4)\n", + " Beamformed Grid sh: (200, 1, 1, 14, 1024, 32)\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Channel Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numUEs, numSamples/numFFTpoints, numRxAntennas, numTxAntennas\n", + "# Tx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), numBSs, numSamples/numFFTpoints, numTxAntennas\n", + "# Rx-Grid Dimensions: numBatches, numFrequencies, numSymbols(numSnapshots), -- numUEs, numSamples/numFFTpoints, numRxAntennas\n", + "\n", + "ptc = ApplyChannel(isFrequencyDomain = True, enableInterTxInterference = True, memoryConsumptionLevel = 0)\n", + "y = ptc(Hf[np.newaxis].transpose(4,0,1,2,3,5,6,7), xBeam.transpose(0,1,3,2,4,5))\n", + "\n", + "print(\"************ Channel Parameters *************\")\n", + "print()\n", + "print(\" Channel Shape: \"+str(Hf.shape))\n", + "print(\"Received Grid shape: \"+str(y.shape))\n", + "print(\" Beamformed Grid sh: \"+str(xBeam.shape))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "80898329", + "metadata": {}, + "source": [ + "## Link Level Simulation: SVD based Beamforming using Imperfect CSI" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b20c4922", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "********************************************************\n", + "Simulation: [0] for SNRdB = -10.0\n", + "Simulation: [0] for codedBER = 0.002643030513176144\n", + "Simulation: [0] for uncodedBER = 0.0033248081841432226\n", + "Simulation: [0] for BLER = 1.0\n", + "Simulation: [0] for Throughput = 0.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [1] for SNRdB = -9.483333333333333\n", + "Simulation: [1] for codedBER = 0.0017995839112343967\n", + "Simulation: [1] for uncodedBER = 0.002294543904518329\n", + "Simulation: [1] for BLER = 0.99\n", + "Simulation: [1] for Throughput = 115360.0000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [2] for SNRdB = -8.966666666666667\n", + "Simulation: [2] for codedBER = 0.0012274618585298197\n", + "Simulation: [2] for uncodedBER = 0.001603154305200341\n", + "Simulation: [2] for BLER = 0.975\n", + "Simulation: [2] for Throughput = 288400.00000000023\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [3] for SNRdB = -8.45\n", + "Simulation: [3] for codedBER = 0.0008538488210818308\n", + "Simulation: [3] for uncodedBER = 0.0011327791986359761\n", + "Simulation: [3] for BLER = 0.9125\n", + "Simulation: [3] for Throughput = 1009400.0000000002\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [4] for SNRdB = -7.933333333333334\n", + "Simulation: [4] for codedBER = 0.0005799237170596394\n", + "Simulation: [4] for uncodedBER = 0.0008459079283887468\n", + "Simulation: [4] for BLER = 0.8325\n", + "Simulation: [4] for Throughput = 1932279.9999999998\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [5] for SNRdB = -7.416666666666666\n", + "Simulation: [5] for codedBER = 0.0004342926490984743\n", + "Simulation: [5] for uncodedBER = 0.0006432225063938619\n", + "Simulation: [5] for BLER = 0.7224999999999999\n", + "Simulation: [5] for Throughput = 3201240.000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [6] for SNRdB = -6.8999999999999995\n", + "Simulation: [6] for codedBER = 0.00031206657420249653\n", + "Simulation: [6] for uncodedBER = 0.0005051150895140665\n", + "Simulation: [6] for BLER = 0.6074999999999999\n", + "Simulation: [6] for Throughput = 4527880.000000001\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [7] for SNRdB = -6.383333333333333\n", + "Simulation: [7] for codedBER = 0.00022798196948682387\n", + "Simulation: [7] for uncodedBER = 0.0004360613810741688\n", + "Simulation: [7] for BLER = 0.48750000000000004\n", + "Simulation: [7] for Throughput = 5912200.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [8] for SNRdB = -5.866666666666666\n", + "Simulation: [8] for codedBER = 6.934812760055479e-06\n", + "Simulation: [8] for uncodedBER = 0.0003923699914748508\n", + "Simulation: [8] for BLER = 0.020000000000000018\n", + "Simulation: [8] for Throughput = 11305280.0\n", + "********************************************************\n", + "\n", + "********************************************************\n", + "Simulation: [9] for SNRdB = -5.35\n", + "Simulation: [9] for codedBER = 0.0\n", + "Simulation: [9] for uncodedBER = 0.0003610400682011935\n", + "Simulation: [9] for BLER = 0.0\n", + "Simulation: [9] for Throughput = 11536000.0\n", + "********************************************************\n", + "\n" + ] + } + ], + "source": [ + "numPoints = 10\n", + "SNRdB2 = np.linspace(-10, -5.35, numPoints, endpoint=True)\n", + "# SNRdB = np.linspace(-13.5, -7.5, numPoints, endpoint=True)\n", + "SNR2 = 10**(SNRdB2/10)\n", + "\n", + "codedBER2 = np.zeros(numPoints)\n", + "uncodedBER2 = np.zeros(numPoints)\n", + "bler2 = np.zeros(numPoints)\n", + "throughput2 = np.zeros(numPoints)\n", + "\n", + "for i in range(numPoints):\n", + " print(\"********************************************************\")\n", + " print(\"Simulation: [\"+str(i)+\"] for SNRdB = \"+str(SNRdB2[i]))\n", + " \n", + " ## Add noise to the received grid\n", + " yGrid = AddNoise(False)(y, 1/SNR2[i], 0)\n", + "\n", + " ## Receiver Combining\n", + " rGrid = ((combiner@yGrid[...,np.newaxis])[:,0,...,0]).transpose(0,2,4,1,3)\n", + "\n", + " ## Extracting the Received Grid\n", + " rxGrid = rGrid[...,bwpOffset:bwpOffset+12*numRB]\n", + "\n", + " ## Receiver: Lower Physical layer\n", + " isChannelPerfect = False\n", + " pdschDecLowerPhy = PDSCHDecoderLowerPhy(modOrder, isChannelPerfect, isEqualized = True)\n", + " descrBits = pdschDecLowerPhy(rxGrid, pdschLowerPhyChain.pdschIndices, rnti, \n", + " nID, SNR2[i], None, numTBs, hard_out = False)\n", + "\n", + " ## Receiver: Upper Physical layer\n", + " pdschUpPhyDec = PDSCHDecoderUpperPhy(numTBs = numTBs, mcsIndex = mcsIndex, symbolsPerSlot= numSymbols, \n", + " numRB = numRB, numLayers = numlayers, scalingField = scalingField, \n", + " additionalOverhead = additionalOverhead, dmrsREs = dmrsREs, \n", + " enableLBRM = [False, False], pdschTable = mcsTable, rvid = [0, 0], verbose=False)\n", + "\n", + " bits = pdschUpPhyDec(descrBits)\n", + "\n", + " ## KPI computation\n", + " codedBER2[i] = np.mean(np.abs(bits-pdschUpperPhy.tblock1))\n", + " uncodedBER2[i] = np.mean(np.abs(codeword[0] - np.where(descrBits[0]>0,1,0)))\n", + " bler2[i] = 1 - np.mean(pdschUpPhyDec.crcCheckforCBs)\n", + " throughput2[i] = (1-bler2[i])*tbLen1*2000\n", + " \n", + " print(\"Simulation: [\"+str(i)+\"] for codedBER = \"+str(codedBER2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for uncodedBER = \"+str(uncodedBER2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for BLER = \"+str(bler2[i]))\n", + " print(\"Simulation: [\"+str(i)+\"] for Throughput = \"+str(throughput2[i]))\n", + " \n", + " print(\"********************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "2703a39b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.mean(pdschUpPhyDec.crcCheckforCBs)" + ] + }, + { + "cell_type": "markdown", + "id": "afa435f2", + "metadata": {}, + "source": [ + "# Performance Evaluations\n", + "\n", + "## Throughput Evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "4a32c773", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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1185f/48Tz/9dIH2axsfUlrx9/cnKioKf39/q2zBggV06dKFqKgo1q5dy+HDh0lISCA1NZUZM2YAsGTJEiZMmMATTzzBgQMH2LFjB88++yxp2j3hhICAAD788MNcsXGeQK/XExUVZY2bLY1IZ0gikUgKw+XL1o/u33/tvnP5MhiNlp6fhx4Cm2BSO7KzLcuPHwctZunKldz7unzZLdWioqKsn7CwMBRFISoqigoVKuR6+f322280b96coKAg2rRpw9GjR63LtJ6KxYsX28VN/f333/Tq1YuQkBDKlClD//79SUpKsm43dOhQevfubafThAkT6Nixo/X79evXGTx4MMHBwURHRzNr1iw6duxoHRLTMBgMDB8+nNDQUKpUqcLChQuty06fPo2iKKxYsYI2bdoQEBBA/fr12bJli3Wdjz76iPDwcLt9fvnll9ahmY8++ojXXnuNgwcPWnvRPvroI5fP9YULF6xOzpIlS+jYsSPVqlWjffv2LF68mFdeeQWAr7/+mv79+zNixAhq1KjB7bffzqBBg3j99dfz3H/t2rXp1KkTL774Yp7r/fHHH9xzzz2EhIQQGRnJww8/bE1oGDZsGLt27WLOnDlWG93pVfovI50hiUQiKQwVK0LFiuiioqjWsiW6qCirjGbNwM8PZs927ghpZGdb1tOoW/fmfmw/RcSLL77IjBkz2Lt3Lz4+PgwfPtxu+YkTJ1i7di1ffPEFBw4cQFVVevXqRXJyMlu2bGHDhg0kJiYyYMAAt447ceJEduzYwddff82GDRvYtm0b+/bty7XejBkzaN68Ofv37+exxx7j0UcftXPYAJ555hkmTZrE/v37ad26NT179uTff/91SY8BAwYwadIkbr/9dmtvmju2/PDDD2RlZfHss886XK45YlFRUfz6668FyoR66623WLt2LXv37nW4/OrVq3Tu3JkmTZqwd+9e1q9fT1JSEv379wdg9uzZNGnShJEjR1ptjImJcVuP/yLSGZJIJJKi4q67QK+Hzz5zbf3lywsdSF1QXn/9dTp06EC9evWYPHkyO3futEuvzsrK4uOPP6ZJkyY0bNiQn376iUOHDvHZZ5/RrFkzWrVqxccff8yWLVvYs2ePS8e8fv06y5YtY/r06dx1113Ur1+fpUuX5soYBOjRowePPfYYNWrU4LnnniMiIoJNmzbZrTNu3Dj69u1L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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "ax.semilogy(SNRdB, throughput, \"b\", marker = \"*\", lw = 3, mec = \"k\", mfc = \"r\", ms = 12, label=\"Throughput [Perfect-CSI]\")\n", + "ax.semilogy(SNRdB2, throughput2, \"--r\", marker = \"o\", lw = 3, mec = \"w\", mfc = \"r\", ms = 9, label=\"Throughput [CSINet]\")\n", + "\n", + "ax.set_xlabel(\"Signal to Noise Ratio (dB)\")\n", + "ax.set_ylabel(\"Throughput (bits per second)\")\n", + "ax.set_title(\"Data-rate Evaluation: SNR (dB) vs Throughput\", fontsize = 16)\n", + "ax.legend(loc=\"best\")\n", + "\n", + "ax.set_xticks(SNRdB2, minor=False)\n", + "ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))\n", + "ytck = 10**(np.arange(2, 9)).repeat(10)*np.tile(np.arange(1, 11), [7])\n", + "ax.set_yticks(ytck, minor=True)\n", + "ax.set_yticks(10**(np.arange(2, 8)), minor=False)\n", + "ax.set_ylim([10**2, 10**8])\n", + "# ax.set_xlim([0.999*SNRdB[0], 1.05*SNRdB[-1]])\n", + "ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')\n", + "ax.grid(which = 'major', alpha = 0.65, color = \"k\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "d76d9dca", + "metadata": {}, + "source": [ + "## BLER Evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "61ffbf26", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "ax.semilogy(SNRdB, bler, \"g\", marker = \"X\", lw = 3, mec = \"k\", mfc = \"w\", ms = 9, label=\"BLER [Perfect-CSI]\")\n", + "ax.semilogy(SNRdB2, bler2, \"--b\", marker = \"o\", lw = 3, mec = \"w\", mfc = \"r\", ms = 9, label=\"BLER [CSI-Net]\")\n", + "\n", + "ax.legend(loc=\"best\")\n", + "ax.set_xlabel(\"Signal to Noise Ratio (dB)\")\n", + "ax.set_ylabel(\"Block (Bit) Error Rate\")\n", + "ax.set_title(\"Reliability Evaluation: SNR (dB) vs B(L)ER\", fontsize = 16)\n", + "\n", + "# ax.set_xticks(SNRdB1)\n", + "ax.xaxis.set_major_formatter(mpl.ticker.FormatStrFormatter('%.2f'))\n", + "ytck = (0.1**(np.arange(1, 10))).repeat(9)*np.tile(np.arange(10, 1,-1), [9])\n", + "ytck = np.concatenate([[1],ytck])\n", + "ax.set_yticks(ytck, minor=True)\n", + "ax.set_yticks(0.1**(np.arange(0, 9)), minor=False)\n", + "ax.set_ylim([0.5*10**-5,1.2])\n", + "\n", + "ax.grid(which = 'minor', alpha = 0.5, linestyle = '--')\n", + "ax.grid(which = 'major', alpha = 0.65, color = \"k\")\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ace29977", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "1. [Deep Learning for Massive MIMO CSI Feedback](https://arxiv.org/pdf/1712.08919)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "654ffcda", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/api/Projects/Project3/Generate_Channel_Datasets.html b/api/Projects/Project3/Generate_Channel_Datasets.html new file mode 100644 index 00000000..022eda07 --- /dev/null +++ b/api/Projects/Project3/Generate_Channel_Datasets.html @@ -0,0 +1,2406 @@ + + + + + + + Wireless Channel Dataset Generation for Training the AI based Models — 5G Toolkit R24a documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    +
    + +
    +
    +
    +
    + + +
    +

    Wireless Channel Dataset Generation for Training the AI based Models

    +

    Wireless channel dataset generation and preprocessing involve the creation and preparation of datasets containing information about the wireless communication channel. Here’s an overview of the process:

    +
      +
    1. Dataset Generation:

      +
        +
      • Simulation (We are using this): One common approach is to use channel modeling and simulation software to generate synthetic datasets. This involves modeling various channel characteristics such as path loss, shadowing, multipath propagation, and fading effects.

      • +
      • Measurement: Real-world measurements can be collected using specialized hardware and equipment deployed in different environments. These measurements capture the characteristics of the wireless channel under various conditions and scenarios.

      • +
      +
    2. +
    3. Data Collection:

      +
        +
      • In simulation-based approaches, data is generated by simulating the propagation of electromagnetic waves through the environment and computing channel parameters such as signal strength, delay spread, and Doppler shift.

      • +
      • In measurement-based approaches, data is collected by measuring the received signal strength and other relevant parameters at multiple locations in the environment over time.

      • +
      +
    4. +
    5. Data Preprocessing:

      +
        +
      • Cleaning: The collected data may contain errors, outliers, or missing values that need to be identified and corrected. Cleaning involves removing or correcting these inconsistencies to ensure the quality of the dataset.

      • +
      • Normalization: Data normalization involves scaling the values of features to a standard range to ensure uniformity and comparability across different features.

      • +
      • Feature Extraction: Relevant features such as signal strength, delay spread, angle of arrival, and Doppler shift are extracted from the raw data. Feature extraction may involve signal processing techniques such as Fourier transforms, wavelet analysis, or machine learning algorithms.

      • +
      • Dimensionality Reduction: In some cases, datasets may contain a large number of features, leading to computational complexity and overfitting. Dimensionality reduction techniques such as Principal Component Analysis (PCA) or feature selection methods are applied to reduce the number of features while preserving the most relevant information.

      • +
      +
    6. +
    +

    Wireless channel dataset generation and preprocessing are crucial steps in the development of machine learning models, algorithms, and systems for wireless communication. A well-prepared dataset ensures the accuracy, reliability, and generalizability of the models and systems built upon it.

    +
    +

    Import Python Libraries

    +
    +

    Import Basic Python LIbraries

    +
    +
    [1]:
    +
    +
    +
    # %matplotlib widgets
    +import matplotlib.pyplot as plt
    +import matplotlib as mpl
    +
    +import os
    +os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
    +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    +
    +import numpy as np
    +
    +# from IPython.display import display, HTML
    +# display(HTML("<style>.container { width:80% !important; }</style>"))
    +
    +
    +
    +
    +
    +

    Import 5G Toolkit Libraries

    +
    +
    [2]:
    +
    +
    +
    from csiNet import CSINet
    +
    +import sys
    +sys.path.append("../../")
    +
    +from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize
    +from toolkit5G.PhysicalChannels       import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy
    +from toolkit5G.ChannelModels          import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator
    +from toolkit5G.Configurations         import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration
    +from toolkit5G.ChannelProcessing      import AddNoise, ApplyChannel
    +from toolkit5G.SymbolMapping          import Mapper, Demapper
    +
    +
    +
    +
    +
    +
    +

    Simulation Parameters

    +
    +
    [3]:
    +
    +
    +
    # Carrier Frequency
    +carrierFrequency = 3.6*10**9
    +delaySpread   = 100*(10**-9)
    +numBatches    = 10000       # Number of batches considered for simulation
    +scs           = 30*10**3  # Subcarrier Spacing for simulation
    +numBSs        = 1 # Number of BSs considered for simulation
    +# Number of UEs considered for simulation
    +numUEs        = numBatches # For now we are assuming that the numbatches are captured via numUEs
    +numRB         = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier
    +slotNumber    = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation
    +terrain       = "CDL-A" # Terrain
    +txAntStruture = np.array([1,1,32,1,1]) # Tx Antenna Structure
    +rxAntStruture = np.array([1,1,1,1,1]) # Tx Antenna Structure
    +Nfft          = 1024 # FFTSize
    +
    +print("************ Simulation Parameters *************")
    +print()
    +print("     numBatches: "+str(numBatches))
    +print("          numRB: "+str(numRB))
    +print("       fft Size: "+str(Nfft))
    +print("         numBSs: "+str(numBSs))
    +print("         numUEs: "+str(numUEs))
    +print("            scs: "+str(scs))
    +print("     slotNumber: "+str(slotNumber))
    +print("        terrain: "+str(terrain))
    +print("Tx Ant Struture: "+str(txAntStruture))
    +print("Rx Ant Struture: "+str(rxAntStruture))
    +print()
    +print("********************************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +************ Simulation Parameters *************
    +
    +     numBatches: 10000
    +          numRB: 85
    +       fft Size: 1024
    +         numBSs: 1
    +         numUEs: 10000
    +            scs: 30000
    +     slotNumber: 9
    +        terrain: CDL-A
    +Tx Ant Struture: [ 1  1 32  1  1]
    +Rx Ant Struture: [1 1 1 1 1]
    +
    +********************************************
    +
    +
    +
    +
    +

    Set Channel Parameters and Generate Common Parameters

    +
    +
    [4]:
    +
    +
    +
    # Antenna Array at UE side
    +# assuming antenna element type to be "OMNI"
    +# with 2 panel and 2 single polarized antenna element per panel.
    +ueAntArray = AntennaArrays(antennaType = "OMNI",  centerFrequency = carrierFrequency,
    +                           arrayStructure  = rxAntStruture)
    +ueAntArray()
    +
    +# # Radiation Pattern of Rx antenna element
    +# ueAntArray.displayAntennaRadiationPattern()
    +
    +
    +# Antenna Array at BS side
    +# assuming antenna element type to be "3GPP_38.901", a parabolic antenna
    +# with 4 panel and 4 single polarized antenna element per panel.
    +bsAntArray = AntennaArrays(antennaType = "3GPP_38.901", centerFrequency = carrierFrequency,
    +                           arrayStructure  = txAntStruture)
    +bsAntArray()
    +
    +# # Radiation Pattern of Tx antenna element
    +# bsAntArray[0].displayAntennaRadiationPattern()
    +
    +# Layout Parameters
    +isd                  = 200         # inter site distance
    +minDist              = 10          # min distance between each UE and BS
    +ueHt                 = 1.5         # UE height
    +bsHt                 = 25          # BS height
    +bslayoutType         = "Hexagonal" # BS layout type
    +ueDropType           = "Hexagonal" # UE drop type
    +htDist               = "equal"     # UE height distribution
    +ueDist               = "equal"     # UE Distribution per site
    +nSectorsPerSite      = 1           # number of sectors per site
    +maxNumFloors         = 1           # Max number of floors in an indoor object
    +minNumFloors         = 1           # Min number of floors in an indoor object
    +heightOfRoom         = 3           # height of room or ceiling in meters
    +indoorUEfract        = 0.5         # Fraction of UEs located indoor
    +lengthOfIndoorObject = 3           # length of indoor object typically having rectangular geometry
    +widthOfIndoorObject  = 3           # width of indoor object
    +# forceLOS             = True       # boolen flag if true forces every link to be in LOS state
    +forceLOS             = False       # boolen flag if true forces every link to be in LOS state
    +
    +Nt        = bsAntArray.numAntennas # Number of BS Antennas
    +Nr        = ueAntArray.numAntennas
    +
    +
    +
    +
    +
    +

    Generate the Wireless Channels Databases and Preprocess it before storage.

    +
      +
    1. Generate OFDM Wireless Channels.

    2. +
    3. Preprocess the OFDM Channel

    4. +
    5. Store the preprocessed wireless channels

    6. +
    +

    Important: Make sure you have Databases directory/folder where datasets will be stored.

    +
    +
    [ ]:
    +
    +
    +
    MonteCarloIterations = 10
    +
    +numTaps       = 32
    +codewordSize  = 512
    +
    +for mci in range(4,MonteCarloIterations):
    +    # simulation layout object
    +    simLayoutObj = SimulationLayout(numOfBS = numBSs,
    +                                    numOfUE = numUEs,
    +                                    heightOfBS = bsHt,
    +                                    heightOfUE = ueHt,
    +                                    ISD = isd,
    +                                    layoutType = bslayoutType,
    +                                    ueDropMethod = ueDropType,
    +                                    UEdistibution = ueDist,
    +                                    UEheightDistribution = htDist,
    +                                    numOfSectorsPerSite = nSectorsPerSite,
    +                                    ueRoute = None)
    +
    +    simLayoutObj(terrain = terrain,
    +                 carrierFreq = carrierFrequency,
    +                 ueAntennaArray = ueAntArray,
    +                 bsAntennaArray = bsAntArray,
    +                 indoorUEfraction = indoorUEfract,
    +                 lengthOfIndoorObject = lengthOfIndoorObject,
    +                 widthOfIndoorObject = widthOfIndoorObject,
    +                 forceLOS = forceLOS)
    +
    +    # displaying the topology of simulation layout
    +#     fig, ax = simLayoutObj.display2DTopology()
    +
    +    paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)
    +
    +    # paramGen.displayClusters((0,0,0), rayIndex = 0)
    +    channel  = paramGen.getChannel()
    +
    +    # Generate OFDM Channel
    +    Hf       = channel.ofdm(scs, Nfft, normalizeChannel = True)[0,0,0,...,0,:].transpose(0,2,1)
    +
    +    # Preprocess the Frequency Domain channel
    +    csinet   = CSINet()
    +    model    = csinet(Nt, numTaps, codewordSize)
    +    Hprep    = csinet.preprocess(Hf)
    +
    +    np.savez("Databases/PreprocessedChannel-dB-"+str(mci)+".npz",
    +             Hprep = Hprep, Nfft  = Nfft, Nt = Nt, codewordSize  = codewordSize, numTaps = numTaps,
    +             carrierFrequency = carrierFrequency, terrain = terrain, delaySpread = delaySpread,
    +             isd = isd, txAntStruture = txAntStruture, rxAntStruture = rxAntStruture)
    +
    +    print("             Number of BSs: "+str(numBSs))
    +    print("          Shape of Channel: "+str(Hf.shape))
    +    print("*****************************************************")
    +    print()
    +
    +
    +
    +
    +
    +
    +
    +
    +             Number of BSs: 1
    +          Shape of Channel: (10000, 32, 1024)
    +*****************************************************
    +
    +             Number of BSs: 1
    +          Shape of Channel: (10000, 32, 1024)
    +*****************************************************
    +
    +             Number of BSs: 1
    +          Shape of Channel: (10000, 32, 1024)
    +*****************************************************
    +
    +             Number of BSs: 1
    +          Shape of Channel: (10000, 32, 1024)
    +*****************************************************
    +
    +
    +
    +
    +
    +

    Aggregate all the Datasets into a single Dataset

    +
    +
    [ ]:
    +
    +
    +
    filename = "Databases/PreprocessedChannel-dB-"+str(0)+".npz"
    +db = np.load(filename)
    +Hp = db["Hprep"]
    +for mci in range(1,10):
    +    filename = "Databases/PreprocessedChannel-dB-"+str(mci)+".npz"
    +    db = np.load(filename)
    +    Hp = np.concatenate([Hp, db["Hprep"]], axis=0)
    +
    +np.savez("Databases/PreprocessedChannel-dB.npz", Hp = Hp, Nfft  = 1024, Nt = 32)
    +
    +
    +
    +
    +
    +

    Display Sparsity of Wireless Channels

    +
    +
    [ ]:
    +
    +
    +
    numChannels = 10
    +numBatches  = Hp.shape[0]
    +idx         = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)
    +
    +fig, ax = plt.subplots(2,10, figsize = (17.5, 5))
    +
    +print(idx)
    +for n in range(numChannels):
    +    ax[0,n].imshow(np.abs(Hp[idx[n],0])**2 + np.abs(Hp[idx[n],1])**2, cmap = "Greys", aspect = "auto")
    +#     ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = "Greys", aspect = "auto")
    +
    +plt.show()
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/api/Projects/Project3/Generate_Channel_Datasets.ipynb b/api/Projects/Project3/Generate_Channel_Datasets.ipynb new file mode 100644 index 00000000..4b1a8228 --- /dev/null +++ b/api/Projects/Project3/Generate_Channel_Datasets.ipynb @@ -0,0 +1,390 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "080069f0", + "metadata": {}, + "source": [ + "# Wireless Channel Dataset Generation for Training the AI based Models\n", + "\n", + "Wireless channel dataset generation and preprocessing involve the creation and preparation of datasets containing information about the wireless communication channel. Here's an overview of the process:\n", + "\n", + "1. **Dataset Generation**:\n", + "\n", + " - **Simulation** (``We are using this``): One common approach is to use channel modeling and simulation software to generate synthetic datasets. This involves modeling various channel characteristics such as path loss, shadowing, multipath propagation, and fading effects.\n", + " \n", + " - **Measurement**: Real-world measurements can be collected using specialized hardware and equipment deployed in different environments. These measurements capture the characteristics of the wireless channel under various conditions and scenarios.\n", + "\n", + "2. **Data Collection**:\n", + "\n", + " - In simulation-based approaches, data is generated by simulating the propagation of electromagnetic waves through the environment and computing channel parameters such as signal strength, delay spread, and Doppler shift.\n", + " - In measurement-based approaches, data is collected by measuring the received signal strength and other relevant parameters at multiple locations in the environment over time.\n", + "\n", + "3. **Data Preprocessing**:\n", + "\n", + " - **Cleaning**: The collected data may contain errors, outliers, or missing values that need to be identified and corrected. Cleaning involves removing or correcting these inconsistencies to ensure the quality of the dataset.\n", + " - **Normalization**: Data normalization involves scaling the values of features to a standard range to ensure uniformity and comparability across different features.\n", + " - **Feature Extraction**: Relevant features such as signal strength, delay spread, angle of arrival, and Doppler shift are extracted from the raw data. Feature extraction may involve signal processing techniques such as Fourier transforms, wavelet analysis, or machine learning algorithms.\n", + " - **Dimensionality Reduction**: In some cases, datasets may contain a large number of features, leading to computational complexity and overfitting. Dimensionality reduction techniques such as Principal Component Analysis (PCA) or feature selection methods are applied to reduce the number of features while preserving the most relevant information.\n", + "\n", + "\n", + "Wireless channel dataset generation and preprocessing are crucial steps in the development of machine learning models, algorithms, and systems for wireless communication. A well-prepared dataset ensures the accuracy, reliability, and generalizability of the models and systems built upon it.\n", + "\n", + "\n", + "## Import Python Libraries\n", + "\n", + "### Import Basic Python LIbraries" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7eb02cb4", + "metadata": {}, + "outputs": [], + "source": [ + "# %matplotlib widgets\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "import os\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"-1\"\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' \n", + "\n", + "import numpy as np\n", + "\n", + "# from IPython.display import display, HTML\n", + "# display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "37306fc7", + "metadata": {}, + "source": [ + "### Import 5G Toolkit Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9934198e", + "metadata": {}, + "outputs": [], + "source": [ + "from csiNet import CSINet\n", + "\n", + "import sys\n", + "sys.path.append(\"../../\")\n", + "\n", + "from toolkit5G.PhysicalChannels.PDSCH import ComputeTransportBlockSize\n", + "from toolkit5G.PhysicalChannels import PDSCHLowerPhy, PDSCHUpperPhy, PDSCHDecoderLowerPhy, PDSCHDecoderUpperPhy\n", + "from toolkit5G.ChannelModels import AntennaArrays, SimulationLayout, ParameterGenerator, ChannelGenerator\n", + "from toolkit5G.Configurations import PDSCHLowerPhyConfiguration, PDSCHUpperPhyConfiguration\n", + "from toolkit5G.ChannelProcessing import AddNoise, ApplyChannel\n", + "from toolkit5G.SymbolMapping import Mapper, Demapper" + ] + }, + { + "cell_type": "markdown", + "id": "6a234109", + "metadata": {}, + "source": [ + "## Simulation Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c42e12d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "************ Simulation Parameters *************\n", + "\n", + " numBatches: 10000\n", + " numRB: 85\n", + " fft Size: 1024\n", + " numBSs: 1\n", + " numUEs: 10000\n", + " scs: 30000\n", + " slotNumber: 9\n", + " terrain: CDL-A\n", + "Tx Ant Struture: [ 1 1 32 1 1]\n", + "Rx Ant Struture: [1 1 1 1 1]\n", + "\n", + "********************************************\n" + ] + } + ], + "source": [ + "# Carrier Frequency\n", + "carrierFrequency = 3.6*10**9 \n", + "delaySpread = 100*(10**-9)\n", + "numBatches = 10000 # Number of batches considered for simulation\n", + "scs = 30*10**3 # Subcarrier Spacing for simulation\n", + "numBSs = 1 # Number of BSs considered for simulation\n", + "# Number of UEs considered for simulation\n", + "numUEs = numBatches # For now we are assuming that the numbatches are captured via numUEs\n", + "numRB = 85 # Number of Resource mapping considered for simulation | # 1 RB = 12 subcarrier\n", + "slotNumber = int(np.random.randint(0,2**(scs/15000)*10)) # Index of the slot considered for simulation\n", + "terrain = \"CDL-A\" # Terrain\n", + "txAntStruture = np.array([1,1,32,1,1]) # Tx Antenna Structure\n", + "rxAntStruture = np.array([1,1,1,1,1]) # Tx Antenna Structure\n", + "Nfft = 1024 # FFTSize\n", + "\n", + "print(\"************ Simulation Parameters *************\")\n", + "print()\n", + "print(\" numBatches: \"+str(numBatches))\n", + "print(\" numRB: \"+str(numRB))\n", + "print(\" fft Size: \"+str(Nfft))\n", + "print(\" numBSs: \"+str(numBSs))\n", + "print(\" numUEs: \"+str(numUEs))\n", + "print(\" scs: \"+str(scs))\n", + "print(\" slotNumber: \"+str(slotNumber))\n", + "print(\" terrain: \"+str(terrain))\n", + "print(\"Tx Ant Struture: \"+str(txAntStruture))\n", + "print(\"Rx Ant Struture: \"+str(rxAntStruture))\n", + "print()\n", + "print(\"********************************************\")" + ] + }, + { + "cell_type": "markdown", + "id": "4116f8ad", + "metadata": {}, + "source": [ + "## Set Channel Parameters and Generate Common Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8e7ba9fc", + "metadata": {}, + "outputs": [], + "source": [ + "# Antenna Array at UE side\n", + "# assuming antenna element type to be \"OMNI\"\n", + "# with 2 panel and 2 single polarized antenna element per panel.\n", + "ueAntArray = AntennaArrays(antennaType = \"OMNI\", centerFrequency = carrierFrequency, \n", + " arrayStructure = rxAntStruture)\n", + "ueAntArray()\n", + "\n", + "# # Radiation Pattern of Rx antenna element \n", + "# ueAntArray.displayAntennaRadiationPattern()\n", + "\n", + "\n", + "# Antenna Array at BS side\n", + "# assuming antenna element type to be \"3GPP_38.901\", a parabolic antenna \n", + "# with 4 panel and 4 single polarized antenna element per panel.\n", + "bsAntArray = AntennaArrays(antennaType = \"3GPP_38.901\", centerFrequency = carrierFrequency,\n", + " arrayStructure = txAntStruture)\n", + "bsAntArray()\n", + " \n", + "# # Radiation Pattern of Tx antenna element \n", + "# bsAntArray[0].displayAntennaRadiationPattern()\n", + "\n", + "# Layout Parameters\n", + "isd = 200 # inter site distance\n", + "minDist = 10 # min distance between each UE and BS \n", + "ueHt = 1.5 # UE height\n", + "bsHt = 25 # BS height\n", + "bslayoutType = \"Hexagonal\" # BS layout type\n", + "ueDropType = \"Hexagonal\" # UE drop type\n", + "htDist = \"equal\" # UE height distribution\n", + "ueDist = \"equal\" # UE Distribution per site\n", + "nSectorsPerSite = 1 # number of sectors per site\n", + "maxNumFloors = 1 # Max number of floors in an indoor object\n", + "minNumFloors = 1 # Min number of floors in an indoor object\n", + "heightOfRoom = 3 # height of room or ceiling in meters\n", + "indoorUEfract = 0.5 # Fraction of UEs located indoor\n", + "lengthOfIndoorObject = 3 # length of indoor object typically having rectangular geometry \n", + "widthOfIndoorObject = 3 # width of indoor object\n", + "# forceLOS = True # boolen flag if true forces every link to be in LOS state\n", + "forceLOS = False # boolen flag if true forces every link to be in LOS state\n", + "\n", + "Nt = bsAntArray.numAntennas # Number of BS Antennas\n", + "Nr = ueAntArray.numAntennas\n" + ] + }, + { + "cell_type": "markdown", + "id": "45c69959", + "metadata": {}, + "source": [ + "## Generate the Wireless Channels Databases and Preprocess it before storage.\n", + "\n", + "1. Generate OFDM Wireless Channels.\n", + "2. Preprocess the OFDM Channel\n", + "3. Store the preprocessed wireless channels\n", + "\n", + "``Important``: Make sure you have **Databases** directory/folder where datasets will be stored." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6f421b76", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n", + " Number of BSs: 1\n", + " Shape of Channel: (10000, 32, 1024)\n", + "*****************************************************\n", + "\n" + ] + } + ], + "source": [ + "MonteCarloIterations = 10\n", + "\n", + "numTaps = 32\n", + "codewordSize = 512\n", + "\n", + "for mci in range(4,MonteCarloIterations):\n", + " # simulation layout object \n", + " simLayoutObj = SimulationLayout(numOfBS = numBSs,\n", + " numOfUE = numUEs,\n", + " heightOfBS = bsHt,\n", + " heightOfUE = ueHt, \n", + " ISD = isd,\n", + " layoutType = bslayoutType,\n", + " ueDropMethod = ueDropType, \n", + " UEdistibution = ueDist,\n", + " UEheightDistribution = htDist,\n", + " numOfSectorsPerSite = nSectorsPerSite,\n", + " ueRoute = None)\n", + "\n", + " simLayoutObj(terrain = terrain, \n", + " carrierFreq = carrierFrequency, \n", + " ueAntennaArray = ueAntArray,\n", + " bsAntennaArray = bsAntArray,\n", + " indoorUEfraction = indoorUEfract,\n", + " lengthOfIndoorObject = lengthOfIndoorObject,\n", + " widthOfIndoorObject = widthOfIndoorObject,\n", + " forceLOS = forceLOS)\n", + "\n", + " # displaying the topology of simulation layout\n", + "# fig, ax = simLayoutObj.display2DTopology()\n", + "\n", + " paramGen = simLayoutObj.getParameterGenerator(delaySpread = delaySpread)\n", + "\n", + " # paramGen.displayClusters((0,0,0), rayIndex = 0)\n", + " channel = paramGen.getChannel()\n", + " \n", + " # Generate OFDM Channel\n", + " Hf = channel.ofdm(scs, Nfft, normalizeChannel = True)[0,0,0,...,0,:].transpose(0,2,1)\n", + "\n", + " # Preprocess the Frequency Domain channel\n", + " csinet = CSINet()\n", + " model = csinet(Nt, numTaps, codewordSize)\n", + " Hprep = csinet.preprocess(Hf)\n", + " \n", + " np.savez(\"Databases/PreprocessedChannel-dB-\"+str(mci)+\".npz\",\n", + " Hprep = Hprep, Nfft = Nfft, Nt = Nt, codewordSize = codewordSize, numTaps = numTaps,\n", + " carrierFrequency = carrierFrequency, terrain = terrain, delaySpread = delaySpread, \n", + " isd = isd, txAntStruture = txAntStruture, rxAntStruture = rxAntStruture)\n", + "\n", + " print(\" Number of BSs: \"+str(numBSs))\n", + " print(\" Shape of Channel: \"+str(Hf.shape))\n", + " print(\"*****************************************************\")\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "id": "8f4dcdbc", + "metadata": {}, + "source": [ + "## Aggregate all the Datasets into a single Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "97ab88bc", + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"Databases/PreprocessedChannel-dB-\"+str(0)+\".npz\"\n", + "db = np.load(filename)\n", + "Hp = db[\"Hprep\"]\n", + "for mci in range(1,10):\n", + " filename = \"Databases/PreprocessedChannel-dB-\"+str(mci)+\".npz\"\n", + " db = np.load(filename)\n", + " Hp = np.concatenate([Hp, db[\"Hprep\"]], axis=0)\n", + " \n", + "np.savez(\"Databases/PreprocessedChannel-dB.npz\", Hp = Hp, Nfft = 1024, Nt = 32)" + ] + }, + { + "cell_type": "markdown", + "id": "24ee3125", + "metadata": {}, + "source": [ + "## Display Sparsity of Wireless Channels" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd99db8a", + "metadata": {}, + "outputs": [], + "source": [ + "numChannels = 10\n", + "numBatches = Hp.shape[0]\n", + "idx = np.random.choice(np.arange(numBatches), size=numChannels, replace = False)\n", + "\n", + "fig, ax = plt.subplots(2,10, figsize = (17.5, 5))\n", + "\n", + "print(idx)\n", + "for n in range(numChannels):\n", + " ax[0,n].imshow(np.abs(Hp[idx[n],0])**2 + np.abs(Hp[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + "# ax[1,n].imshow(np.abs( Hrec[idx[n],0])**2 + np.abs( Hrec[idx[n],1])**2, cmap = \"Greys\", aspect = \"auto\")\n", + " \n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/api/Projects/Project3/project3.html b/api/Projects/Project3/project3.html index 5985d987..8f02b14b 100644 --- a/api/Projects/Project3/project3.html +++ b/api/Projects/Project3/project3.html @@ -4,7 +4,7 @@ - Channel Interpolation based on SRCNN and DnCNN — 5G Toolkit R24a documentation + Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks — 5G Toolkit R24a documentation @@ -26,7 +26,7 @@ - + @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • @@ -1951,7 +2001,7 @@
    • - +
    @@ -1960,9 +2010,60 @@
    -
    -

    Channel Interpolation based on SRCNN and DnCNN

    -

    Project-3

    +
    +

    Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks

    +
    @@ -1970,7 +2071,7 @@

    Channel Interpolation based on SRCNN and DnCNN - +


    diff --git a/api/Projects/Project3/trainCSINet.html b/api/Projects/Project3/trainCSINet.html new file mode 100644 index 00000000..0568d62f --- /dev/null +++ b/api/Projects/Project3/trainCSINet.html @@ -0,0 +1,3058 @@ + + + + + + + Training the CSINet — 5G Toolkit R24a documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    + +
    +
    + + +
    +

    Training the CSINet

    +
    +

    Import Libraries

    +
    +

    Import Python Libraries

    +
    +
    [ ]:
    +
    +
    +
    # %matplotlib widget
    +import matplotlib.pyplot as plt
    +import matplotlib as mpl
    +
    +import os
    +os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
    +os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
    +
    +import numpy as np
    +
    +# from IPython.display import display, HTML
    +# display(HTML("<style>.container { width:80% !important; }</style>"))
    +
    +
    +
    +
    +
    +
    +

    Important AI-ML Libraries

    +
    +
    [3]:
    +
    +
    +
    import tensorflow as tf
    +import numpy      as np
    +
    +from keras.layers    import Input, Dense, BatchNormalization, Reshape, Conv2D, add, LeakyReLU
    +from keras.models    import Model, load_model
    +from keras.callbacks import TensorBoard, Callback
    +
    +from csiNet          import CSINet
    +
    +
    +
    +
    +
    +

    Load Datasets

    +
    +
    [4]:
    +
    +
    +
    db = np.load("Databases/PreprocessedChannel-dB.npz")
    +
    +
    +
    +
    +
    +

    Set Training Parameters

    +
    +
    [5]:
    +
    +
    +
    numTaps       = 32
    +codewordSize  = 512
    +Hp            = db["Hp"]
    +Nt            = db["Nt"]
    +numBatches    = Hp.shape[0]
    +
    +
    +print("**************************")
    +print("Number of  subcarriers: "+str(numTaps))
    +print("Number of encoded bits: "+str(codewordSize))
    +print("Number of     antennas: "+str(Nt))
    +print("Number of      batches: "+str(numBatches))
    +print("**************************")
    +
    +
    +
    +
    +
    +
    +
    +
    +**************************
    +Number of  subcarriers: 32
    +Number of encoded bits: 512
    +Number of     antennas: 32
    +Number of      batches: 110000
    +**************************
    +
    +
    +
    +
    [5]:
    +
    +
    +
    csinet = CSINet()
    +model  = csinet(Nt, numSubcarrier, codewordSize)
    +
    +i      = int(0.9*numBatches)
    +k      = int(numBatches)
    +
    +Htrain = Hp[0:i]
    +Hval   = Hp[i:k]
    +# Htest  = Hprep[k:numBatches]
    +
    +
    +
    +
    +
    [6]:
    +
    +
    +
    # model = load_model('models/CSINet.keras')
    +# csinet.model = model
    +
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    csinet.fit(Htrain, epochs=1000, batch_size=5000, hval = Hval)
    +
    +
    +
    +
    +
    +
    +
    +
    +Epoch 1/1000
    +20/20 [==============================] - 71s 4s/step - loss: 1.7742e-04 - val_loss: 0.0043
    +Epoch 2/1000
    +20/20 [==============================] - 71s 4s/step - loss: 1.7259e-04 - val_loss: 0.0037
    +Epoch 3/1000
    +20/20 [==============================] - 70s 4s/step - loss: 1.6864e-04 - val_loss: 0.0029
    +Epoch 4/1000
    +20/20 [==============================] - 70s 4s/step - loss: 1.6530e-04 - val_loss: 0.0022
    +Epoch 5/1000
    +20/20 [==============================] - 71s 4s/step - loss: 1.6243e-04 - val_loss: 0.0017
    +Epoch 6/1000
    +20/20 [==============================] - 71s 4s/step - loss: 1.6001e-04 - val_loss: 0.0015
    +Epoch 7/1000
    +20/20 [==============================] - 72s 4s/step - loss: 1.5802e-04 - val_loss: 0.0013
    +Epoch 8/1000
    +20/20 [==============================] - 72s 4s/step - loss: 1.5634e-04 - val_loss: 0.0011
    +Epoch 9/1000
    +20/20 [==============================] - 72s 4s/step - loss: 1.5492e-04 - val_loss: 8.7465e-04
    +Epoch 10/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.5370e-04 - val_loss: 6.8815e-04
    +Epoch 11/1000
    +20/20 [==============================] - 72s 4s/step - loss: 1.5262e-04 - val_loss: 5.2990e-04
    +Epoch 12/1000
    +20/20 [==============================] - 72s 4s/step - loss: 1.5167e-04 - val_loss: 4.0591e-04
    +Epoch 13/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.5085e-04 - val_loss: 3.1419e-04
    +Epoch 14/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.5011e-04 - val_loss: 2.5195e-04
    +Epoch 15/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4947e-04 - val_loss: 2.1186e-04
    +Epoch 16/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4891e-04 - val_loss: 1.8665e-04
    +Epoch 17/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4841e-04 - val_loss: 1.7138e-04
    +Epoch 18/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4796e-04 - val_loss: 1.6209e-04
    +Epoch 19/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4754e-04 - val_loss: 1.5635e-04
    +Epoch 20/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4717e-04 - val_loss: 1.5279e-04
    +Epoch 21/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4683e-04 - val_loss: 1.5035e-04
    +Epoch 22/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4653e-04 - val_loss: 1.4878e-04
    +Epoch 23/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4625e-04 - val_loss: 1.4770e-04
    +Epoch 24/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4599e-04 - val_loss: 1.4683e-04
    +Epoch 25/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4575e-04 - val_loss: 1.4617e-04
    +Epoch 26/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4553e-04 - val_loss: 1.4551e-04
    +Epoch 27/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4533e-04 - val_loss: 1.4505e-04
    +Epoch 28/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4512e-04 - val_loss: 1.4463e-04
    +Epoch 29/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4493e-04 - val_loss: 1.4427e-04
    +Epoch 30/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4475e-04 - val_loss: 1.4402e-04
    +Epoch 31/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4457e-04 - val_loss: 1.4354e-04
    +Epoch 32/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4440e-04 - val_loss: 1.4335e-04
    +Epoch 33/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4423e-04 - val_loss: 1.4307e-04
    +Epoch 34/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4407e-04 - val_loss: 1.4283e-04
    +Epoch 35/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4391e-04 - val_loss: 1.4230e-04
    +Epoch 36/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4376e-04 - val_loss: 1.4228e-04
    +Epoch 37/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4361e-04 - val_loss: 1.4194e-04
    +Epoch 38/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4346e-04 - val_loss: 1.4173e-04
    +Epoch 39/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4332e-04 - val_loss: 1.4149e-04
    +Epoch 40/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4318e-04 - val_loss: 1.4133e-04
    +Epoch 41/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.4304e-04 - val_loss: 1.4106e-04
    +Epoch 42/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4289e-04 - val_loss: 1.4086e-04
    +Epoch 43/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4274e-04 - val_loss: 1.4061e-04
    +Epoch 44/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4261e-04 - val_loss: 1.4033e-04
    +Epoch 45/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4249e-04 - val_loss: 1.4021e-04
    +Epoch 46/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4235e-04 - val_loss: 1.4001e-04
    +Epoch 47/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4221e-04 - val_loss: 1.3973e-04
    +Epoch 48/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4211e-04 - val_loss: 1.3967e-04
    +Epoch 49/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4198e-04 - val_loss: 1.3946e-04
    +Epoch 50/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4185e-04 - val_loss: 1.3920e-04
    +Epoch 51/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4172e-04 - val_loss: 1.3910e-04
    +Epoch 52/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4156e-04 - val_loss: 1.3889e-04
    +Epoch 53/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4144e-04 - val_loss: 1.3886e-04
    +Epoch 54/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4130e-04 - val_loss: 1.3855e-04
    +Epoch 55/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4118e-04 - val_loss: 1.3846e-04
    +Epoch 56/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4106e-04 - val_loss: 1.3834e-04
    +Epoch 57/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4092e-04 - val_loss: 1.3812e-04
    +Epoch 58/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4080e-04 - val_loss: 1.3790e-04
    +Epoch 59/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4067e-04 - val_loss: 1.3776e-04
    +Epoch 60/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4056e-04 - val_loss: 1.3763e-04
    +Epoch 61/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4044e-04 - val_loss: 1.3736e-04
    +Epoch 62/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4029e-04 - val_loss: 1.3737e-04
    +Epoch 63/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4013e-04 - val_loss: 1.3721e-04
    +Epoch 64/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4004e-04 - val_loss: 1.3699e-04
    +Epoch 65/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3984e-04 - val_loss: 1.3682e-04
    +Epoch 66/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3969e-04 - val_loss: 1.3674e-04
    +Epoch 67/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 1.3660e-04
    +Epoch 68/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3942e-04 - val_loss: 1.3652e-04
    +Epoch 69/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.3928e-04 - val_loss: 1.3637e-04
    +Epoch 70/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3915e-04 - val_loss: 1.3635e-04
    +Epoch 71/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3897e-04 - val_loss: 1.3625e-04
    +Epoch 72/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3884e-04 - val_loss: 1.3625e-04
    +Epoch 73/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3883e-04 - val_loss: 1.3603e-04
    +Epoch 74/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3857e-04 - val_loss: 1.3597e-04
    +Epoch 75/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3841e-04 - val_loss: 1.3604e-04
    +Epoch 76/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3821e-04 - val_loss: 1.3579e-04
    +Epoch 77/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3795e-04 - val_loss: 1.3555e-04
    +Epoch 78/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3775e-04 - val_loss: 1.3563e-04
    +Epoch 79/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3756e-04 - val_loss: 1.3545e-04
    +Epoch 80/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3738e-04 - val_loss: 1.3547e-04
    +Epoch 81/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3722e-04 - val_loss: 1.3548e-04
    +Epoch 82/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3710e-04 - val_loss: 1.3555e-04
    +Epoch 83/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3696e-04 - val_loss: 1.3547e-04
    +Epoch 84/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3697e-04 - val_loss: 1.3563e-04
    +Epoch 85/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3651e-04 - val_loss: 1.3530e-04
    +Epoch 86/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3612e-04 - val_loss: 1.3516e-04
    +Epoch 87/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3613e-04 - val_loss: 1.3505e-04
    +Epoch 88/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.3574e-04 - val_loss: 1.3499e-04
    +Epoch 89/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3578e-04 - val_loss: 1.3540e-04
    +Epoch 90/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3549e-04 - val_loss: 1.3534e-04
    +Epoch 91/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3534e-04 - val_loss: 1.3487e-04
    +Epoch 92/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3491e-04 - val_loss: 1.3490e-04
    +Epoch 93/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3475e-04 - val_loss: 1.3490e-04
    +Epoch 94/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3442e-04 - val_loss: 1.3471e-04
    +Epoch 95/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3440e-04 - val_loss: 1.3496e-04
    +Epoch 96/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3414e-04 - val_loss: 1.3508e-04
    +Epoch 97/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3431e-04 - val_loss: 1.3493e-04
    +Epoch 98/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3403e-04 - val_loss: 1.3515e-04
    +Epoch 99/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3323e-04 - val_loss: 1.3469e-04
    +Epoch 100/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3297e-04 - val_loss: 1.3585e-04
    +Epoch 101/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3307e-04 - val_loss: 1.3581e-04
    +Epoch 102/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3270e-04 - val_loss: 1.3471e-04
    +Epoch 103/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3247e-04 - val_loss: 1.3364e-04
    +Epoch 104/1000
    +20/20 [==============================] - 75s 4s/step - loss: 2.7186e-04 - val_loss: 5.9999e-04
    +Epoch 105/1000
    +20/20 [==============================] - 75s 4s/step - loss: 2.4725e-04 - val_loss: 8.0587e-04
    +Epoch 106/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4827e-04 - val_loss: 6.0315e-04
    +Epoch 107/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 3.6259e-04
    +Epoch 108/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3717e-04 - val_loss: 2.5379e-04
    +Epoch 109/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3604e-04 - val_loss: 2.0073e-04
    +Epoch 110/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3526e-04 - val_loss: 1.7553e-04
    +Epoch 111/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3462e-04 - val_loss: 1.6115e-04
    +Epoch 112/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3404e-04 - val_loss: 1.5349e-04
    +Epoch 113/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3351e-04 - val_loss: 1.4661e-04
    +Epoch 114/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3302e-04 - val_loss: 1.4291e-04
    +Epoch 115/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3255e-04 - val_loss: 1.4210e-04
    +Epoch 116/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3211e-04 - val_loss: 1.4070e-04
    +Epoch 117/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3170e-04 - val_loss: 1.3908e-04
    +Epoch 118/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3821e-04
    +Epoch 119/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3093e-04 - val_loss: 1.3706e-04
    +Epoch 120/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3058e-04 - val_loss: 1.3630e-04
    +Epoch 121/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3024e-04 - val_loss: 1.3509e-04
    +Epoch 122/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2990e-04 - val_loss: 1.3495e-04
    +Epoch 123/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2958e-04 - val_loss: 1.3444e-04
    +Epoch 124/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2927e-04 - val_loss: 1.3385e-04
    +Epoch 125/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2897e-04 - val_loss: 1.3401e-04
    +Epoch 126/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2869e-04 - val_loss: 1.3360e-04
    +Epoch 127/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2841e-04 - val_loss: 1.3312e-04
    +Epoch 128/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2815e-04 - val_loss: 1.3210e-04
    +Epoch 129/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2788e-04 - val_loss: 1.3211e-04
    +Epoch 130/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2762e-04 - val_loss: 1.3188e-04
    +Epoch 131/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2736e-04 - val_loss: 1.3199e-04
    +Epoch 132/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2712e-04 - val_loss: 1.3122e-04
    +Epoch 133/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.3178e-04
    +Epoch 134/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2663e-04 - val_loss: 1.3107e-04
    +Epoch 135/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2638e-04 - val_loss: 1.3061e-04
    +Epoch 136/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2614e-04 - val_loss: 1.3039e-04
    +Epoch 137/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2590e-04 - val_loss: 1.3072e-04
    +Epoch 138/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2567e-04 - val_loss: 1.2932e-04
    +Epoch 139/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.3050e-04
    +Epoch 140/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2519e-04 - val_loss: 1.2852e-04
    +Epoch 141/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2502e-04 - val_loss: 1.2818e-04
    +Epoch 142/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2473e-04 - val_loss: 1.2908e-04
    +Epoch 143/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2453e-04 - val_loss: 1.3138e-04
    +Epoch 144/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2444e-04 - val_loss: 1.2780e-04
    +Epoch 145/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2419e-04 - val_loss: 1.2681e-04
    +Epoch 146/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2402e-04 - val_loss: 1.2615e-04
    +Epoch 147/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2369e-04 - val_loss: 1.2638e-04
    +Epoch 148/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2352e-04 - val_loss: 1.2830e-04
    +Epoch 149/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2314e-04 - val_loss: 1.2605e-04
    +Epoch 150/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2286e-04 - val_loss: 1.2743e-04
    +Epoch 151/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2271e-04 - val_loss: 1.2598e-04
    +Epoch 152/1000
    +20/20 [==============================] - 74s 4s/step - loss: 0.0011 - val_loss: 0.0030
    +Epoch 153/1000
    +20/20 [==============================] - 74s 4s/step - loss: 8.0737e-04 - val_loss: 7.5406e-04
    +Epoch 154/1000
    +20/20 [==============================] - 74s 4s/step - loss: 2.2217e-04 - val_loss: 4.4022e-04
    +Epoch 155/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.6454e-04 - val_loss: 2.8927e-04
    +Epoch 156/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.5252e-04 - val_loss: 2.2517e-04
    +Epoch 157/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4766e-04 - val_loss: 1.9435e-04
    +Epoch 158/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4478e-04 - val_loss: 1.7687e-04
    +Epoch 159/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4276e-04 - val_loss: 1.6398e-04
    +Epoch 160/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4121e-04 - val_loss: 1.5581e-04
    +Epoch 161/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.4001e-04 - val_loss: 1.5050e-04
    +Epoch 162/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3907e-04 - val_loss: 1.4714e-04
    +Epoch 163/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3830e-04 - val_loss: 1.4454e-04
    +Epoch 164/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3767e-04 - val_loss: 1.4247e-04
    +Epoch 165/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3711e-04 - val_loss: 1.4100e-04
    +Epoch 166/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3661e-04 - val_loss: 1.3959e-04
    +Epoch 167/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3615e-04 - val_loss: 1.3854e-04
    +Epoch 168/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.3572e-04 - val_loss: 1.3760e-04
    +Epoch 169/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3533e-04 - val_loss: 1.3684e-04
    +Epoch 170/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3495e-04 - val_loss: 1.3616e-04
    +Epoch 171/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3460e-04 - val_loss: 1.3561e-04
    +Epoch 172/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3425e-04 - val_loss: 1.3502e-04
    +Epoch 173/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3392e-04 - val_loss: 1.3455e-04
    +Epoch 174/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3358e-04 - val_loss: 1.3413e-04
    +Epoch 175/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3325e-04 - val_loss: 1.3369e-04
    +Epoch 176/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3293e-04 - val_loss: 1.3329e-04
    +Epoch 177/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3260e-04 - val_loss: 1.3295e-04
    +Epoch 178/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3227e-04 - val_loss: 1.3262e-04
    +Epoch 179/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3195e-04 - val_loss: 1.3225e-04
    +Epoch 180/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3163e-04 - val_loss: 1.3183e-04
    +Epoch 181/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3149e-04
    +Epoch 182/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3098e-04 - val_loss: 1.3120e-04
    +Epoch 183/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3064e-04 - val_loss: 1.3091e-04
    +Epoch 184/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3031e-04 - val_loss: 1.3061e-04
    +Epoch 185/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2998e-04 - val_loss: 1.3030e-04
    +Epoch 186/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2967e-04 - val_loss: 1.2996e-04
    +Epoch 187/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2935e-04 - val_loss: 1.2962e-04
    +Epoch 188/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2905e-04 - val_loss: 1.2936e-04
    +Epoch 189/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2875e-04 - val_loss: 1.2912e-04
    +Epoch 190/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2843e-04 - val_loss: 1.2879e-04
    +Epoch 191/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2811e-04 - val_loss: 1.2853e-04
    +Epoch 192/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2833e-04
    +Epoch 193/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2751e-04 - val_loss: 1.2804e-04
    +Epoch 194/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2720e-04 - val_loss: 1.2780e-04
    +Epoch 195/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2748e-04
    +Epoch 196/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2660e-04 - val_loss: 1.2726e-04
    +Epoch 197/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2631e-04 - val_loss: 1.2693e-04
    +Epoch 198/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2602e-04 - val_loss: 1.2667e-04
    +Epoch 199/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2573e-04 - val_loss: 1.2636e-04
    +Epoch 200/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2544e-04 - val_loss: 1.2612e-04
    +Epoch 201/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2515e-04 - val_loss: 1.2579e-04
    +Epoch 202/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2487e-04 - val_loss: 1.2556e-04
    +Epoch 203/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2458e-04 - val_loss: 1.2523e-04
    +Epoch 204/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2428e-04 - val_loss: 1.2499e-04
    +Epoch 205/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2400e-04 - val_loss: 1.2467e-04
    +Epoch 206/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2372e-04 - val_loss: 1.2451e-04
    +Epoch 207/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2344e-04 - val_loss: 1.2414e-04
    +Epoch 208/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2316e-04 - val_loss: 1.2387e-04
    +Epoch 209/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2288e-04 - val_loss: 1.2359e-04
    +Epoch 210/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2261e-04 - val_loss: 1.2337e-04
    +Epoch 211/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2236e-04 - val_loss: 1.2307e-04
    +Epoch 212/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2208e-04 - val_loss: 1.2280e-04
    +Epoch 213/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2182e-04 - val_loss: 1.2255e-04
    +Epoch 214/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.2157e-04 - val_loss: 1.2229e-04
    +Epoch 215/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2131e-04 - val_loss: 1.2206e-04
    +Epoch 216/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2107e-04 - val_loss: 1.2184e-04
    +Epoch 217/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2080e-04 - val_loss: 1.2160e-04
    +Epoch 218/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2056e-04 - val_loss: 1.2135e-04
    +Epoch 219/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2031e-04 - val_loss: 1.2108e-04
    +Epoch 220/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2006e-04 - val_loss: 1.2086e-04
    +Epoch 221/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1980e-04 - val_loss: 1.2061e-04
    +Epoch 222/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1956e-04 - val_loss: 1.2034e-04
    +Epoch 223/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1932e-04 - val_loss: 1.2015e-04
    +Epoch 224/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1907e-04 - val_loss: 1.1992e-04
    +Epoch 225/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1883e-04 - val_loss: 1.1964e-04
    +Epoch 226/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1859e-04 - val_loss: 1.1946e-04
    +Epoch 227/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1836e-04 - val_loss: 1.1924e-04
    +Epoch 228/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1812e-04 - val_loss: 1.1901e-04
    +Epoch 229/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1788e-04 - val_loss: 1.1873e-04
    +Epoch 230/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1762e-04 - val_loss: 1.1849e-04
    +Epoch 231/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1739e-04 - val_loss: 1.1824e-04
    +Epoch 232/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1716e-04 - val_loss: 1.1801e-04
    +Epoch 233/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1693e-04 - val_loss: 1.1782e-04
    +Epoch 234/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1772e-04
    +Epoch 235/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1644e-04 - val_loss: 1.1742e-04
    +Epoch 236/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1620e-04 - val_loss: 1.1717e-04
    +Epoch 237/1000
    +20/20 [==============================] - 73s 4s/step - loss: 1.1600e-04 - val_loss: 1.1697e-04
    +Epoch 238/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1574e-04 - val_loss: 1.1671e-04
    +Epoch 239/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1550e-04 - val_loss: 1.1646e-04
    +Epoch 240/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1526e-04 - val_loss: 1.1627e-04
    +Epoch 241/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1501e-04 - val_loss: 1.1614e-04
    +Epoch 242/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1479e-04 - val_loss: 1.1579e-04
    +Epoch 243/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1453e-04 - val_loss: 1.1561e-04
    +Epoch 244/1000
    +20/20 [==============================] - 76s 4s/step - loss: 1.1430e-04 - val_loss: 1.1536e-04
    +Epoch 245/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1407e-04 - val_loss: 1.1516e-04
    +Epoch 246/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1384e-04 - val_loss: 1.1494e-04
    +Epoch 247/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1361e-04 - val_loss: 1.1468e-04
    +Epoch 248/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1452e-04
    +Epoch 249/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1312e-04 - val_loss: 1.1422e-04
    +Epoch 250/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1291e-04 - val_loss: 1.1400e-04
    +Epoch 251/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1267e-04 - val_loss: 1.1378e-04
    +Epoch 252/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1242e-04 - val_loss: 1.1359e-04
    +Epoch 253/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1221e-04 - val_loss: 1.1342e-04
    +Epoch 254/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1198e-04 - val_loss: 1.1317e-04
    +Epoch 255/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1179e-04 - val_loss: 1.1296e-04
    +Epoch 256/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1158e-04 - val_loss: 1.1277e-04
    +Epoch 257/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1134e-04 - val_loss: 1.1292e-04
    +Epoch 258/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1103e-04 - val_loss: 1.1229e-04
    +Epoch 259/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1094e-04 - val_loss: 1.1236e-04
    +Epoch 260/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1069e-04 - val_loss: 1.1202e-04
    +Epoch 261/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1052e-04 - val_loss: 1.1211e-04
    +Epoch 262/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1020e-04 - val_loss: 1.1182e-04
    +Epoch 263/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0999e-04 - val_loss: 1.1120e-04
    +Epoch 264/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0988e-04 - val_loss: 1.1105e-04
    +Epoch 265/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0971e-04 - val_loss: 1.1073e-04
    +Epoch 266/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0925e-04 - val_loss: 1.1168e-04
    +Epoch 267/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0918e-04 - val_loss: 1.1021e-04
    +Epoch 268/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0899e-04 - val_loss: 1.1207e-04
    +Epoch 269/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0908e-04 - val_loss: 1.1036e-04
    +Epoch 270/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0850e-04 - val_loss: 1.1063e-04
    +Epoch 271/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0808e-04 - val_loss: 1.0979e-04
    +Epoch 272/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0885e-04 - val_loss: 1.1182e-04
    +Epoch 273/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0896e-04 - val_loss: 1.0897e-04
    +Epoch 274/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0755e-04 - val_loss: 1.0890e-04
    +Epoch 275/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0726e-04 - val_loss: 1.0942e-04
    +Epoch 276/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0698e-04 - val_loss: 1.0837e-04
    +Epoch 277/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0682e-04 - val_loss: 1.1710e-04
    +Epoch 278/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1099e-04 - val_loss: 1.0862e-04
    +Epoch 279/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0679e-04 - val_loss: 1.0775e-04
    +Epoch 280/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0615e-04 - val_loss: 1.0787e-04
    +Epoch 281/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0580e-04 - val_loss: 1.0705e-04
    +Epoch 282/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0551e-04 - val_loss: 1.0705e-04
    +Epoch 283/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0542e-04 - val_loss: 1.0673e-04
    +Epoch 284/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0500e-04 - val_loss: 1.0644e-04
    +Epoch 285/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0506e-04 - val_loss: 1.0654e-04
    +Epoch 286/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0493e-04 - val_loss: 1.0618e-04
    +Epoch 287/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0476e-04 - val_loss: 1.0601e-04
    +Epoch 288/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0445e-04 - val_loss: 1.0588e-04
    +Epoch 289/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0439e-04 - val_loss: 1.1388e-04
    +Epoch 290/1000
    +20/20 [==============================] - 74s 4s/step - loss: 0.0033 - val_loss: 0.0015
    +Epoch 291/1000
    +20/20 [==============================] - 74s 4s/step - loss: 6.8803e-04 - val_loss: 4.5921e-04
    +Epoch 292/1000
    +20/20 [==============================] - 74s 4s/step - loss: 2.5436e-04 - val_loss: 3.2132e-04
    +Epoch 293/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.8278e-04 - val_loss: 2.6234e-04
    +Epoch 294/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.6361e-04 - val_loss: 2.2145e-04
    +Epoch 295/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.5566e-04 - val_loss: 1.9489e-04
    +Epoch 296/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.5087e-04 - val_loss: 1.7818e-04
    +Epoch 297/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.4780e-04 - val_loss: 1.6677e-04
    +Epoch 298/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4506e-04 - val_loss: 1.5912e-04
    +Epoch 299/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.4321e-04 - val_loss: 1.5355e-04
    +Epoch 300/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4175e-04 - val_loss: 1.4977e-04
    +Epoch 301/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.4046e-04 - val_loss: 1.4725e-04
    +Epoch 302/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3919e-04 - val_loss: 1.4475e-04
    +Epoch 303/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3819e-04 - val_loss: 1.4305e-04
    +Epoch 304/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3741e-04 - val_loss: 1.4133e-04
    +Epoch 305/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3681e-04 - val_loss: 1.4008e-04
    +Epoch 306/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3607e-04 - val_loss: 1.3953e-04
    +Epoch 307/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3530e-04 - val_loss: 1.3845e-04
    +Epoch 308/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3476e-04 - val_loss: 1.3803e-04
    +Epoch 309/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3423e-04 - val_loss: 1.3714e-04
    +Epoch 310/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3372e-04 - val_loss: 1.3652e-04
    +Epoch 311/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.3321e-04 - val_loss: 1.3604e-04
    +Epoch 312/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3306e-04 - val_loss: 1.3567e-04
    +Epoch 313/1000
    +20/20 [==============================] - 76s 4s/step - loss: 1.3240e-04 - val_loss: 1.3451e-04
    +Epoch 314/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3208e-04 - val_loss: 1.3424e-04
    +Epoch 315/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3160e-04 - val_loss: 1.3382e-04
    +Epoch 316/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3120e-04 - val_loss: 1.3358e-04
    +Epoch 317/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3088e-04 - val_loss: 1.3309e-04
    +Epoch 318/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3050e-04 - val_loss: 1.3270e-04
    +Epoch 319/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.3017e-04 - val_loss: 1.3238e-04
    +Epoch 320/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2989e-04 - val_loss: 1.3204e-04
    +Epoch 321/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2962e-04 - val_loss: 1.3130e-04
    +Epoch 322/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2926e-04 - val_loss: 1.3111e-04
    +Epoch 323/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2894e-04 - val_loss: 1.3055e-04
    +Epoch 324/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2852e-04 - val_loss: 1.3025e-04
    +Epoch 325/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2838e-04 - val_loss: 1.2969e-04
    +Epoch 326/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2949e-04
    +Epoch 327/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2745e-04 - val_loss: 1.2937e-04
    +Epoch 328/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2715e-04 - val_loss: 1.2914e-04
    +Epoch 329/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2808e-04
    +Epoch 330/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2680e-04 - val_loss: 1.2834e-04
    +Epoch 331/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2634e-04 - val_loss: 1.2769e-04
    +Epoch 332/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2582e-04 - val_loss: 1.2695e-04
    +Epoch 333/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.2670e-04
    +Epoch 334/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2497e-04 - val_loss: 1.2688e-04
    +Epoch 335/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2454e-04 - val_loss: 1.2615e-04
    +Epoch 336/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2421e-04 - val_loss: 1.2562e-04
    +Epoch 337/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2386e-04 - val_loss: 1.2582e-04
    +Epoch 338/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2343e-04 - val_loss: 1.2498e-04
    +Epoch 339/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2306e-04 - val_loss: 1.2484e-04
    +Epoch 340/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2273e-04 - val_loss: 1.2452e-04
    +Epoch 341/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2228e-04 - val_loss: 1.2410e-04
    +Epoch 342/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2190e-04 - val_loss: 1.2347e-04
    +Epoch 343/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.2163e-04 - val_loss: 1.2318e-04
    +Epoch 344/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2135e-04 - val_loss: 1.2322e-04
    +Epoch 345/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2114e-04 - val_loss: 1.2283e-04
    +Epoch 346/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2067e-04 - val_loss: 1.2238e-04
    +Epoch 347/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2042e-04 - val_loss: 1.2186e-04
    +Epoch 348/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.2004e-04 - val_loss: 1.2154e-04
    +Epoch 349/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1972e-04 - val_loss: 1.2112e-04
    +Epoch 350/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1937e-04 - val_loss: 1.2095e-04
    +Epoch 351/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1906e-04 - val_loss: 1.2064e-04
    +Epoch 352/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1887e-04 - val_loss: 1.2023e-04
    +Epoch 353/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1848e-04 - val_loss: 1.1981e-04
    +Epoch 354/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1839e-04 - val_loss: 1.1967e-04
    +Epoch 355/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1819e-04 - val_loss: 1.1985e-04
    +Epoch 356/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1771e-04 - val_loss: 1.1919e-04
    +Epoch 357/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1737e-04 - val_loss: 1.1905e-04
    +Epoch 358/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1710e-04 - val_loss: 1.1872e-04
    +Epoch 359/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1681e-04 - val_loss: 1.1836e-04
    +Epoch 360/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1834e-04
    +Epoch 361/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1627e-04 - val_loss: 1.1765e-04
    +Epoch 362/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1601e-04 - val_loss: 1.1751e-04
    +Epoch 363/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1577e-04 - val_loss: 1.1766e-04
    +Epoch 364/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1562e-04 - val_loss: 1.1697e-04
    +Epoch 365/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1522e-04 - val_loss: 1.1711e-04
    +Epoch 366/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.1494e-04 - val_loss: 1.1649e-04
    +Epoch 367/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1469e-04 - val_loss: 1.1652e-04
    +Epoch 368/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1453e-04 - val_loss: 1.1623e-04
    +Epoch 369/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1437e-04 - val_loss: 1.1564e-04
    +Epoch 370/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1409e-04 - val_loss: 1.1576e-04
    +Epoch 371/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1377e-04 - val_loss: 1.1534e-04
    +Epoch 372/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1357e-04 - val_loss: 1.1498e-04
    +Epoch 373/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1499e-04
    +Epoch 374/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1300e-04 - val_loss: 1.1487e-04
    +Epoch 375/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1315e-04 - val_loss: 1.1486e-04
    +Epoch 376/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1264e-04 - val_loss: 1.1431e-04
    +Epoch 377/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1249e-04 - val_loss: 1.1441e-04
    +Epoch 378/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1215e-04 - val_loss: 1.1364e-04
    +Epoch 379/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1187e-04 - val_loss: 1.1359e-04
    +Epoch 380/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1176e-04 - val_loss: 1.1313e-04
    +Epoch 381/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1202e-04 - val_loss: 1.1292e-04
    +Epoch 382/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1164e-04 - val_loss: 1.1271e-04
    +Epoch 383/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1137e-04 - val_loss: 1.1249e-04
    +Epoch 384/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1119e-04 - val_loss: 1.1263e-04
    +Epoch 385/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1053e-04 - val_loss: 1.1232e-04
    +Epoch 386/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1043e-04 - val_loss: 1.1188e-04
    +Epoch 387/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.1014e-04 - val_loss: 1.1179e-04
    +Epoch 388/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0998e-04 - val_loss: 1.1144e-04
    +Epoch 389/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0969e-04 - val_loss: 1.1139e-04
    +Epoch 390/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0942e-04 - val_loss: 1.1118e-04
    +Epoch 391/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0932e-04 - val_loss: 1.1173e-04
    +Epoch 392/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0985e-04 - val_loss: 1.1075e-04
    +Epoch 393/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0881e-04 - val_loss: 1.1055e-04
    +Epoch 394/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0861e-04 - val_loss: 1.1052e-04
    +Epoch 395/1000
    +20/20 [==============================] - 74s 4s/step - loss: 1.0847e-04 - val_loss: 1.1021e-04
    +Epoch 396/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0827e-04 - val_loss: 1.0983e-04
    +Epoch 397/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0802e-04 - val_loss: 1.0977e-04
    +Epoch 398/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0783e-04 - val_loss: 1.0934e-04
    +Epoch 399/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0756e-04 - val_loss: 1.0930e-04
    +Epoch 400/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0741e-04 - val_loss: 1.0930e-04
    +Epoch 401/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0883e-04
    +Epoch 402/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0708e-04 - val_loss: 1.0862e-04
    +Epoch 403/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0690e-04 - val_loss: 1.0862e-04
    +Epoch 404/1000
    +20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0834e-04
    +Epoch 405/1000
    + 9/20 [============>.................] - ETA: 41s - loss: 1.0775e-04
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    csinet.model.save('models/CSINet.keras')  # The file needs to end with the .keras extension
    +
    +
    +
    +
    +
    [15]:
    +
    +
    +
    # model = load_model('models/CSINet.keras')
    +# model.fit(Htrain, Htrain, epochs=1000, batch_size=5000, shuffle= True, validation_data=(Hval, Hval))
    +
    +
    +
    +
    +
    [ ]:
    +
    +
    +
    # self.model.fit(Htrain, Htrain,
    +#                epochs=1000, batch_size=5000, shuffle= True,
    +#                validation_data=(Hval, Hval))
    +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/api/Projects/Project3/trainCSINet.ipynb b/api/Projects/Project3/trainCSINet.ipynb new file mode 100644 index 00000000..39cd1e84 --- /dev/null +++ b/api/Projects/Project3/trainCSINet.ipynb @@ -0,0 +1,1047 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "073df96d", + "metadata": {}, + "source": [ + "# Training the CSINet\n", + "\n", + "## Import Libraries\n", + "\n", + "### Import Python Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "acc4abd6", + "metadata": {}, + "outputs": [], + "source": [ + "# %matplotlib widget\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib as mpl\n", + "\n", + "import os\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"-1\"\n", + "os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' \n", + "\n", + "import numpy as np\n", + "\n", + "# from IPython.display import display, HTML\n", + "# display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "id": "57eb8d37", + "metadata": {}, + "source": [ + "## Important AI-ML Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "4392fe8e", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf\n", + "import numpy as np\n", + "\n", + "from keras.layers import Input, Dense, BatchNormalization, Reshape, Conv2D, add, LeakyReLU\n", + "from keras.models import Model, load_model\n", + "from keras.callbacks import TensorBoard, Callback\n", + "\n", + "from csiNet import CSINet" + ] + }, + { + "cell_type": "markdown", + "id": "25a16e12", + "metadata": {}, + "source": [ + "## Load Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b91c9b54", + "metadata": {}, + "outputs": [], + "source": [ + "db = np.load(\"Databases/PreprocessedChannel-dB.npz\")" + ] + }, + { + "cell_type": "markdown", + "id": "8a5df3dd", + "metadata": {}, + "source": [ + "## Set Training Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5aacef92", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "**************************\n", + "Number of subcarriers: 32\n", + "Number of encoded bits: 512\n", + "Number of antennas: 32\n", + "Number of batches: 110000\n", + "**************************\n" + ] + } + ], + "source": [ + "numTaps = 32\n", + "codewordSize = 512\n", + "Hp = db[\"Hp\"]\n", + "Nt = db[\"Nt\"]\n", + "numBatches = Hp.shape[0]\n", + "\n", + "\n", + "print(\"**************************\")\n", + "print(\"Number of subcarriers: \"+str(numTaps))\n", + "print(\"Number of encoded bits: \"+str(codewordSize))\n", + "print(\"Number of antennas: \"+str(Nt))\n", + "print(\"Number of batches: \"+str(numBatches))\n", + "print(\"**************************\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e491b89e", + "metadata": {}, + "outputs": [], + "source": [ + "csinet = CSINet()\n", + "model = csinet(Nt, numSubcarrier, codewordSize)\n", + "\n", + "i = int(0.9*numBatches)\n", + "k = int(numBatches)\n", + "\n", + "Htrain = Hp[0:i]\n", + "Hval = Hp[i:k]\n", + "# Htest = Hprep[k:numBatches]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "14cf3332", + "metadata": {}, + "outputs": [], + "source": [ + "# model = load_model('models/CSINet.keras')\n", + "# csinet.model = model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eea28f44", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.7742e-04 - val_loss: 0.0043\n", + "Epoch 2/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.7259e-04 - val_loss: 0.0037\n", + "Epoch 3/1000\n", + "20/20 [==============================] - 70s 4s/step - loss: 1.6864e-04 - val_loss: 0.0029\n", + "Epoch 4/1000\n", + "20/20 [==============================] - 70s 4s/step - loss: 1.6530e-04 - val_loss: 0.0022\n", + "Epoch 5/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.6243e-04 - val_loss: 0.0017\n", + "Epoch 6/1000\n", + "20/20 [==============================] - 71s 4s/step - loss: 1.6001e-04 - val_loss: 0.0015\n", + "Epoch 7/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5802e-04 - val_loss: 0.0013\n", + "Epoch 8/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5634e-04 - val_loss: 0.0011\n", + "Epoch 9/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5492e-04 - val_loss: 8.7465e-04\n", + "Epoch 10/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5370e-04 - val_loss: 6.8815e-04\n", + "Epoch 11/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5262e-04 - val_loss: 5.2990e-04\n", + "Epoch 12/1000\n", + "20/20 [==============================] - 72s 4s/step - loss: 1.5167e-04 - val_loss: 4.0591e-04\n", + "Epoch 13/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5085e-04 - val_loss: 3.1419e-04\n", + "Epoch 14/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.5011e-04 - val_loss: 2.5195e-04\n", + "Epoch 15/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4947e-04 - val_loss: 2.1186e-04\n", + "Epoch 16/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4891e-04 - val_loss: 1.8665e-04\n", + "Epoch 17/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4841e-04 - val_loss: 1.7138e-04\n", + "Epoch 18/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4796e-04 - val_loss: 1.6209e-04\n", + "Epoch 19/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4754e-04 - val_loss: 1.5635e-04\n", + "Epoch 20/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4717e-04 - val_loss: 1.5279e-04\n", + "Epoch 21/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4683e-04 - val_loss: 1.5035e-04\n", + "Epoch 22/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4653e-04 - val_loss: 1.4878e-04\n", + "Epoch 23/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4625e-04 - val_loss: 1.4770e-04\n", + "Epoch 24/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4599e-04 - val_loss: 1.4683e-04\n", + "Epoch 25/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4575e-04 - val_loss: 1.4617e-04\n", + "Epoch 26/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4553e-04 - val_loss: 1.4551e-04\n", + "Epoch 27/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4533e-04 - val_loss: 1.4505e-04\n", + "Epoch 28/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4512e-04 - val_loss: 1.4463e-04\n", + "Epoch 29/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4493e-04 - val_loss: 1.4427e-04\n", + "Epoch 30/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4475e-04 - val_loss: 1.4402e-04\n", + "Epoch 31/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4457e-04 - val_loss: 1.4354e-04\n", + "Epoch 32/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4440e-04 - val_loss: 1.4335e-04\n", + "Epoch 33/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4423e-04 - val_loss: 1.4307e-04\n", + "Epoch 34/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4407e-04 - val_loss: 1.4283e-04\n", + "Epoch 35/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4391e-04 - val_loss: 1.4230e-04\n", + "Epoch 36/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4376e-04 - val_loss: 1.4228e-04\n", + "Epoch 37/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4361e-04 - val_loss: 1.4194e-04\n", + "Epoch 38/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4346e-04 - val_loss: 1.4173e-04\n", + "Epoch 39/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4332e-04 - val_loss: 1.4149e-04\n", + "Epoch 40/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4318e-04 - val_loss: 1.4133e-04\n", + "Epoch 41/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.4304e-04 - val_loss: 1.4106e-04\n", + "Epoch 42/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4289e-04 - val_loss: 1.4086e-04\n", + "Epoch 43/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4274e-04 - val_loss: 1.4061e-04\n", + "Epoch 44/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4261e-04 - val_loss: 1.4033e-04\n", + "Epoch 45/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4249e-04 - val_loss: 1.4021e-04\n", + "Epoch 46/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4235e-04 - val_loss: 1.4001e-04\n", + "Epoch 47/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4221e-04 - val_loss: 1.3973e-04\n", + "Epoch 48/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4211e-04 - val_loss: 1.3967e-04\n", + "Epoch 49/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4198e-04 - val_loss: 1.3946e-04\n", + "Epoch 50/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4185e-04 - val_loss: 1.3920e-04\n", + "Epoch 51/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4172e-04 - val_loss: 1.3910e-04\n", + "Epoch 52/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4156e-04 - val_loss: 1.3889e-04\n", + "Epoch 53/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4144e-04 - val_loss: 1.3886e-04\n", + "Epoch 54/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4130e-04 - val_loss: 1.3855e-04\n", + "Epoch 55/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4118e-04 - val_loss: 1.3846e-04\n", + "Epoch 56/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4106e-04 - val_loss: 1.3834e-04\n", + "Epoch 57/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4092e-04 - val_loss: 1.3812e-04\n", + "Epoch 58/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4080e-04 - val_loss: 1.3790e-04\n", + "Epoch 59/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4067e-04 - val_loss: 1.3776e-04\n", + "Epoch 60/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4056e-04 - val_loss: 1.3763e-04\n", + "Epoch 61/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4044e-04 - val_loss: 1.3736e-04\n", + "Epoch 62/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4029e-04 - val_loss: 1.3737e-04\n", + "Epoch 63/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4013e-04 - val_loss: 1.3721e-04\n", + "Epoch 64/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4004e-04 - val_loss: 1.3699e-04\n", + "Epoch 65/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3984e-04 - val_loss: 1.3682e-04\n", + "Epoch 66/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3969e-04 - val_loss: 1.3674e-04\n", + "Epoch 67/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 1.3660e-04\n", + "Epoch 68/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3942e-04 - val_loss: 1.3652e-04\n", + "Epoch 69/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3928e-04 - val_loss: 1.3637e-04\n", + "Epoch 70/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3915e-04 - val_loss: 1.3635e-04\n", + "Epoch 71/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3897e-04 - val_loss: 1.3625e-04\n", + "Epoch 72/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3884e-04 - val_loss: 1.3625e-04\n", + "Epoch 73/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3883e-04 - val_loss: 1.3603e-04\n", + "Epoch 74/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3857e-04 - val_loss: 1.3597e-04\n", + "Epoch 75/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3841e-04 - val_loss: 1.3604e-04\n", + "Epoch 76/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3821e-04 - val_loss: 1.3579e-04\n", + "Epoch 77/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3795e-04 - val_loss: 1.3555e-04\n", + "Epoch 78/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3775e-04 - val_loss: 1.3563e-04\n", + "Epoch 79/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3756e-04 - val_loss: 1.3545e-04\n", + "Epoch 80/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3738e-04 - val_loss: 1.3547e-04\n", + "Epoch 81/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3722e-04 - val_loss: 1.3548e-04\n", + "Epoch 82/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3710e-04 - val_loss: 1.3555e-04\n", + "Epoch 83/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3696e-04 - val_loss: 1.3547e-04\n", + "Epoch 84/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3697e-04 - val_loss: 1.3563e-04\n", + "Epoch 85/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3651e-04 - val_loss: 1.3530e-04\n", + "Epoch 86/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3612e-04 - val_loss: 1.3516e-04\n", + "Epoch 87/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3613e-04 - val_loss: 1.3505e-04\n", + "Epoch 88/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3574e-04 - val_loss: 1.3499e-04\n", + "Epoch 89/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3578e-04 - val_loss: 1.3540e-04\n", + "Epoch 90/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3549e-04 - val_loss: 1.3534e-04\n", + "Epoch 91/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3534e-04 - val_loss: 1.3487e-04\n", + "Epoch 92/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3491e-04 - val_loss: 1.3490e-04\n", + "Epoch 93/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3475e-04 - val_loss: 1.3490e-04\n", + "Epoch 94/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3442e-04 - val_loss: 1.3471e-04\n", + "Epoch 95/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3440e-04 - val_loss: 1.3496e-04\n", + "Epoch 96/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3414e-04 - val_loss: 1.3508e-04\n", + "Epoch 97/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3431e-04 - val_loss: 1.3493e-04\n", + "Epoch 98/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3403e-04 - val_loss: 1.3515e-04\n", + "Epoch 99/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3323e-04 - val_loss: 1.3469e-04\n", + "Epoch 100/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3297e-04 - val_loss: 1.3585e-04\n", + "Epoch 101/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3307e-04 - val_loss: 1.3581e-04\n", + "Epoch 102/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3270e-04 - val_loss: 1.3471e-04\n", + "Epoch 103/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3247e-04 - val_loss: 1.3364e-04\n", + "Epoch 104/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 2.7186e-04 - val_loss: 5.9999e-04\n", + "Epoch 105/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 2.4725e-04 - val_loss: 8.0587e-04\n", + "Epoch 106/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4827e-04 - val_loss: 6.0315e-04\n", + "Epoch 107/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3956e-04 - val_loss: 3.6259e-04\n", + "Epoch 108/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3717e-04 - val_loss: 2.5379e-04\n", + "Epoch 109/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3604e-04 - val_loss: 2.0073e-04\n", + "Epoch 110/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3526e-04 - val_loss: 1.7553e-04\n", + "Epoch 111/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3462e-04 - val_loss: 1.6115e-04\n", + "Epoch 112/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3404e-04 - val_loss: 1.5349e-04\n", + "Epoch 113/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3351e-04 - val_loss: 1.4661e-04\n", + "Epoch 114/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3302e-04 - val_loss: 1.4291e-04\n", + "Epoch 115/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3255e-04 - val_loss: 1.4210e-04\n", + "Epoch 116/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3211e-04 - val_loss: 1.4070e-04\n", + "Epoch 117/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3170e-04 - val_loss: 1.3908e-04\n", + "Epoch 118/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3821e-04\n", + "Epoch 119/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3093e-04 - val_loss: 1.3706e-04\n", + "Epoch 120/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3058e-04 - val_loss: 1.3630e-04\n", + "Epoch 121/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3024e-04 - val_loss: 1.3509e-04\n", + "Epoch 122/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2990e-04 - val_loss: 1.3495e-04\n", + "Epoch 123/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2958e-04 - val_loss: 1.3444e-04\n", + "Epoch 124/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2927e-04 - val_loss: 1.3385e-04\n", + "Epoch 125/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2897e-04 - val_loss: 1.3401e-04\n", + "Epoch 126/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2869e-04 - val_loss: 1.3360e-04\n", + "Epoch 127/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2841e-04 - val_loss: 1.3312e-04\n", + "Epoch 128/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2815e-04 - val_loss: 1.3210e-04\n", + "Epoch 129/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2788e-04 - val_loss: 1.3211e-04\n", + "Epoch 130/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2762e-04 - val_loss: 1.3188e-04\n", + "Epoch 131/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2736e-04 - val_loss: 1.3199e-04\n", + "Epoch 132/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2712e-04 - val_loss: 1.3122e-04\n", + "Epoch 133/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.3178e-04\n", + "Epoch 134/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2663e-04 - val_loss: 1.3107e-04\n", + "Epoch 135/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2638e-04 - val_loss: 1.3061e-04\n", + "Epoch 136/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2614e-04 - val_loss: 1.3039e-04\n", + "Epoch 137/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2590e-04 - val_loss: 1.3072e-04\n", + "Epoch 138/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2567e-04 - val_loss: 1.2932e-04\n", + "Epoch 139/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.3050e-04\n", + "Epoch 140/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2519e-04 - val_loss: 1.2852e-04\n", + "Epoch 141/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2502e-04 - val_loss: 1.2818e-04\n", + "Epoch 142/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2473e-04 - val_loss: 1.2908e-04\n", + "Epoch 143/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2453e-04 - val_loss: 1.3138e-04\n", + "Epoch 144/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2444e-04 - val_loss: 1.2780e-04\n", + "Epoch 145/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2419e-04 - val_loss: 1.2681e-04\n", + "Epoch 146/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2402e-04 - val_loss: 1.2615e-04\n", + "Epoch 147/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2369e-04 - val_loss: 1.2638e-04\n", + "Epoch 148/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2352e-04 - val_loss: 1.2830e-04\n", + "Epoch 149/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2314e-04 - val_loss: 1.2605e-04\n", + "Epoch 150/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2286e-04 - val_loss: 1.2743e-04\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 151/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2271e-04 - val_loss: 1.2598e-04\n", + "Epoch 152/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 0.0011 - val_loss: 0.0030\n", + "Epoch 153/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 8.0737e-04 - val_loss: 7.5406e-04\n", + "Epoch 154/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 2.2217e-04 - val_loss: 4.4022e-04\n", + "Epoch 155/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.6454e-04 - val_loss: 2.8927e-04\n", + "Epoch 156/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.5252e-04 - val_loss: 2.2517e-04\n", + "Epoch 157/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4766e-04 - val_loss: 1.9435e-04\n", + "Epoch 158/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4478e-04 - val_loss: 1.7687e-04\n", + "Epoch 159/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4276e-04 - val_loss: 1.6398e-04\n", + "Epoch 160/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4121e-04 - val_loss: 1.5581e-04\n", + "Epoch 161/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.4001e-04 - val_loss: 1.5050e-04\n", + "Epoch 162/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3907e-04 - val_loss: 1.4714e-04\n", + "Epoch 163/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3830e-04 - val_loss: 1.4454e-04\n", + "Epoch 164/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3767e-04 - val_loss: 1.4247e-04\n", + "Epoch 165/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3711e-04 - val_loss: 1.4100e-04\n", + "Epoch 166/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3661e-04 - val_loss: 1.3959e-04\n", + "Epoch 167/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3615e-04 - val_loss: 1.3854e-04\n", + "Epoch 168/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.3572e-04 - val_loss: 1.3760e-04\n", + "Epoch 169/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3533e-04 - val_loss: 1.3684e-04\n", + "Epoch 170/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3495e-04 - val_loss: 1.3616e-04\n", + "Epoch 171/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3460e-04 - val_loss: 1.3561e-04\n", + "Epoch 172/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3425e-04 - val_loss: 1.3502e-04\n", + "Epoch 173/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3392e-04 - val_loss: 1.3455e-04\n", + "Epoch 174/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3358e-04 - val_loss: 1.3413e-04\n", + "Epoch 175/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3325e-04 - val_loss: 1.3369e-04\n", + "Epoch 176/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3293e-04 - val_loss: 1.3329e-04\n", + "Epoch 177/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3260e-04 - val_loss: 1.3295e-04\n", + "Epoch 178/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3227e-04 - val_loss: 1.3262e-04\n", + "Epoch 179/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3195e-04 - val_loss: 1.3225e-04\n", + "Epoch 180/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3163e-04 - val_loss: 1.3183e-04\n", + "Epoch 181/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3131e-04 - val_loss: 1.3149e-04\n", + "Epoch 182/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3098e-04 - val_loss: 1.3120e-04\n", + "Epoch 183/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3064e-04 - val_loss: 1.3091e-04\n", + "Epoch 184/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3031e-04 - val_loss: 1.3061e-04\n", + "Epoch 185/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2998e-04 - val_loss: 1.3030e-04\n", + "Epoch 186/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2967e-04 - val_loss: 1.2996e-04\n", + "Epoch 187/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2935e-04 - val_loss: 1.2962e-04\n", + "Epoch 188/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2905e-04 - val_loss: 1.2936e-04\n", + "Epoch 189/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2875e-04 - val_loss: 1.2912e-04\n", + "Epoch 190/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2843e-04 - val_loss: 1.2879e-04\n", + "Epoch 191/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2811e-04 - val_loss: 1.2853e-04\n", + "Epoch 192/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2833e-04\n", + "Epoch 193/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2751e-04 - val_loss: 1.2804e-04\n", + "Epoch 194/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2720e-04 - val_loss: 1.2780e-04\n", + "Epoch 195/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2748e-04\n", + "Epoch 196/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2660e-04 - val_loss: 1.2726e-04\n", + "Epoch 197/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2631e-04 - val_loss: 1.2693e-04\n", + "Epoch 198/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2602e-04 - val_loss: 1.2667e-04\n", + "Epoch 199/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2573e-04 - val_loss: 1.2636e-04\n", + "Epoch 200/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2544e-04 - val_loss: 1.2612e-04\n", + "Epoch 201/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2515e-04 - val_loss: 1.2579e-04\n", + "Epoch 202/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2487e-04 - val_loss: 1.2556e-04\n", + "Epoch 203/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2458e-04 - val_loss: 1.2523e-04\n", + "Epoch 204/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2428e-04 - val_loss: 1.2499e-04\n", + "Epoch 205/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2400e-04 - val_loss: 1.2467e-04\n", + "Epoch 206/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2372e-04 - val_loss: 1.2451e-04\n", + "Epoch 207/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2344e-04 - val_loss: 1.2414e-04\n", + "Epoch 208/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2316e-04 - val_loss: 1.2387e-04\n", + "Epoch 209/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2288e-04 - val_loss: 1.2359e-04\n", + "Epoch 210/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2261e-04 - val_loss: 1.2337e-04\n", + "Epoch 211/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2236e-04 - val_loss: 1.2307e-04\n", + "Epoch 212/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2208e-04 - val_loss: 1.2280e-04\n", + "Epoch 213/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2182e-04 - val_loss: 1.2255e-04\n", + "Epoch 214/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.2157e-04 - val_loss: 1.2229e-04\n", + "Epoch 215/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2131e-04 - val_loss: 1.2206e-04\n", + "Epoch 216/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2107e-04 - val_loss: 1.2184e-04\n", + "Epoch 217/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2080e-04 - val_loss: 1.2160e-04\n", + "Epoch 218/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2056e-04 - val_loss: 1.2135e-04\n", + "Epoch 219/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2031e-04 - val_loss: 1.2108e-04\n", + "Epoch 220/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2006e-04 - val_loss: 1.2086e-04\n", + "Epoch 221/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1980e-04 - val_loss: 1.2061e-04\n", + "Epoch 222/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1956e-04 - val_loss: 1.2034e-04\n", + "Epoch 223/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1932e-04 - val_loss: 1.2015e-04\n", + "Epoch 224/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1907e-04 - val_loss: 1.1992e-04\n", + "Epoch 225/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1883e-04 - val_loss: 1.1964e-04\n", + "Epoch 226/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1859e-04 - val_loss: 1.1946e-04\n", + "Epoch 227/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1836e-04 - val_loss: 1.1924e-04\n", + "Epoch 228/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1812e-04 - val_loss: 1.1901e-04\n", + "Epoch 229/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1788e-04 - val_loss: 1.1873e-04\n", + "Epoch 230/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1762e-04 - val_loss: 1.1849e-04\n", + "Epoch 231/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1739e-04 - val_loss: 1.1824e-04\n", + "Epoch 232/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1716e-04 - val_loss: 1.1801e-04\n", + "Epoch 233/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1693e-04 - val_loss: 1.1782e-04\n", + "Epoch 234/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1772e-04\n", + "Epoch 235/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1644e-04 - val_loss: 1.1742e-04\n", + "Epoch 236/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1620e-04 - val_loss: 1.1717e-04\n", + "Epoch 237/1000\n", + "20/20 [==============================] - 73s 4s/step - loss: 1.1600e-04 - val_loss: 1.1697e-04\n", + "Epoch 238/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1574e-04 - val_loss: 1.1671e-04\n", + "Epoch 239/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1550e-04 - val_loss: 1.1646e-04\n", + "Epoch 240/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1526e-04 - val_loss: 1.1627e-04\n", + "Epoch 241/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1501e-04 - val_loss: 1.1614e-04\n", + "Epoch 242/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1479e-04 - val_loss: 1.1579e-04\n", + "Epoch 243/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1453e-04 - val_loss: 1.1561e-04\n", + "Epoch 244/1000\n", + "20/20 [==============================] - 76s 4s/step - loss: 1.1430e-04 - val_loss: 1.1536e-04\n", + "Epoch 245/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1407e-04 - val_loss: 1.1516e-04\n", + "Epoch 246/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1384e-04 - val_loss: 1.1494e-04\n", + "Epoch 247/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1361e-04 - val_loss: 1.1468e-04\n", + "Epoch 248/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1452e-04\n", + "Epoch 249/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1312e-04 - val_loss: 1.1422e-04\n", + "Epoch 250/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1291e-04 - val_loss: 1.1400e-04\n", + "Epoch 251/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1267e-04 - val_loss: 1.1378e-04\n", + "Epoch 252/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1242e-04 - val_loss: 1.1359e-04\n", + "Epoch 253/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1221e-04 - val_loss: 1.1342e-04\n", + "Epoch 254/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1198e-04 - val_loss: 1.1317e-04\n", + "Epoch 255/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1179e-04 - val_loss: 1.1296e-04\n", + "Epoch 256/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1158e-04 - val_loss: 1.1277e-04\n", + "Epoch 257/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1134e-04 - val_loss: 1.1292e-04\n", + "Epoch 258/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1103e-04 - val_loss: 1.1229e-04\n", + "Epoch 259/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1094e-04 - val_loss: 1.1236e-04\n", + "Epoch 260/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1069e-04 - val_loss: 1.1202e-04\n", + "Epoch 261/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1052e-04 - val_loss: 1.1211e-04\n", + "Epoch 262/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1020e-04 - val_loss: 1.1182e-04\n", + "Epoch 263/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0999e-04 - val_loss: 1.1120e-04\n", + "Epoch 264/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0988e-04 - val_loss: 1.1105e-04\n", + "Epoch 265/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0971e-04 - val_loss: 1.1073e-04\n", + "Epoch 266/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0925e-04 - val_loss: 1.1168e-04\n", + "Epoch 267/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0918e-04 - val_loss: 1.1021e-04\n", + "Epoch 268/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0899e-04 - val_loss: 1.1207e-04\n", + "Epoch 269/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0908e-04 - val_loss: 1.1036e-04\n", + "Epoch 270/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0850e-04 - val_loss: 1.1063e-04\n", + "Epoch 271/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0808e-04 - val_loss: 1.0979e-04\n", + "Epoch 272/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0885e-04 - val_loss: 1.1182e-04\n", + "Epoch 273/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0896e-04 - val_loss: 1.0897e-04\n", + "Epoch 274/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0755e-04 - val_loss: 1.0890e-04\n", + "Epoch 275/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0726e-04 - val_loss: 1.0942e-04\n", + "Epoch 276/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0698e-04 - val_loss: 1.0837e-04\n", + "Epoch 277/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0682e-04 - val_loss: 1.1710e-04\n", + "Epoch 278/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1099e-04 - val_loss: 1.0862e-04\n", + "Epoch 279/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0679e-04 - val_loss: 1.0775e-04\n", + "Epoch 280/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0615e-04 - val_loss: 1.0787e-04\n", + "Epoch 281/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0580e-04 - val_loss: 1.0705e-04\n", + "Epoch 282/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0551e-04 - val_loss: 1.0705e-04\n", + "Epoch 283/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0542e-04 - val_loss: 1.0673e-04\n", + "Epoch 284/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0500e-04 - val_loss: 1.0644e-04\n", + "Epoch 285/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0506e-04 - val_loss: 1.0654e-04\n", + "Epoch 286/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0493e-04 - val_loss: 1.0618e-04\n", + "Epoch 287/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0476e-04 - val_loss: 1.0601e-04\n", + "Epoch 288/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0445e-04 - val_loss: 1.0588e-04\n", + "Epoch 289/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0439e-04 - val_loss: 1.1388e-04\n", + "Epoch 290/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 0.0033 - val_loss: 0.0015\n", + "Epoch 291/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 6.8803e-04 - val_loss: 4.5921e-04\n", + "Epoch 292/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 2.5436e-04 - val_loss: 3.2132e-04\n", + "Epoch 293/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.8278e-04 - val_loss: 2.6234e-04\n", + "Epoch 294/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.6361e-04 - val_loss: 2.2145e-04\n", + "Epoch 295/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.5566e-04 - val_loss: 1.9489e-04\n", + "Epoch 296/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.5087e-04 - val_loss: 1.7818e-04\n", + "Epoch 297/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.4780e-04 - val_loss: 1.6677e-04\n", + "Epoch 298/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4506e-04 - val_loss: 1.5912e-04\n", + "Epoch 299/1000\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20/20 [==============================] - 75s 4s/step - loss: 1.4321e-04 - val_loss: 1.5355e-04\n", + "Epoch 300/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4175e-04 - val_loss: 1.4977e-04\n", + "Epoch 301/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.4046e-04 - val_loss: 1.4725e-04\n", + "Epoch 302/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3919e-04 - val_loss: 1.4475e-04\n", + "Epoch 303/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3819e-04 - val_loss: 1.4305e-04\n", + "Epoch 304/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3741e-04 - val_loss: 1.4133e-04\n", + "Epoch 305/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3681e-04 - val_loss: 1.4008e-04\n", + "Epoch 306/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3607e-04 - val_loss: 1.3953e-04\n", + "Epoch 307/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3530e-04 - val_loss: 1.3845e-04\n", + "Epoch 308/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3476e-04 - val_loss: 1.3803e-04\n", + "Epoch 309/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3423e-04 - val_loss: 1.3714e-04\n", + "Epoch 310/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3372e-04 - val_loss: 1.3652e-04\n", + "Epoch 311/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.3321e-04 - val_loss: 1.3604e-04\n", + "Epoch 312/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3306e-04 - val_loss: 1.3567e-04\n", + "Epoch 313/1000\n", + "20/20 [==============================] - 76s 4s/step - loss: 1.3240e-04 - val_loss: 1.3451e-04\n", + "Epoch 314/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3208e-04 - val_loss: 1.3424e-04\n", + "Epoch 315/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3160e-04 - val_loss: 1.3382e-04\n", + "Epoch 316/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3120e-04 - val_loss: 1.3358e-04\n", + "Epoch 317/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3088e-04 - val_loss: 1.3309e-04\n", + "Epoch 318/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3050e-04 - val_loss: 1.3270e-04\n", + "Epoch 319/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.3017e-04 - val_loss: 1.3238e-04\n", + "Epoch 320/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2989e-04 - val_loss: 1.3204e-04\n", + "Epoch 321/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2962e-04 - val_loss: 1.3130e-04\n", + "Epoch 322/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2926e-04 - val_loss: 1.3111e-04\n", + "Epoch 323/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2894e-04 - val_loss: 1.3055e-04\n", + "Epoch 324/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2852e-04 - val_loss: 1.3025e-04\n", + "Epoch 325/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2838e-04 - val_loss: 1.2969e-04\n", + "Epoch 326/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2781e-04 - val_loss: 1.2949e-04\n", + "Epoch 327/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2745e-04 - val_loss: 1.2937e-04\n", + "Epoch 328/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2715e-04 - val_loss: 1.2914e-04\n", + "Epoch 329/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2690e-04 - val_loss: 1.2808e-04\n", + "Epoch 330/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2680e-04 - val_loss: 1.2834e-04\n", + "Epoch 331/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2634e-04 - val_loss: 1.2769e-04\n", + "Epoch 332/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2582e-04 - val_loss: 1.2695e-04\n", + "Epoch 333/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2542e-04 - val_loss: 1.2670e-04\n", + "Epoch 334/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2497e-04 - val_loss: 1.2688e-04\n", + "Epoch 335/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2454e-04 - val_loss: 1.2615e-04\n", + "Epoch 336/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2421e-04 - val_loss: 1.2562e-04\n", + "Epoch 337/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2386e-04 - val_loss: 1.2582e-04\n", + "Epoch 338/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2343e-04 - val_loss: 1.2498e-04\n", + "Epoch 339/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2306e-04 - val_loss: 1.2484e-04\n", + "Epoch 340/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2273e-04 - val_loss: 1.2452e-04\n", + "Epoch 341/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2228e-04 - val_loss: 1.2410e-04\n", + "Epoch 342/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2190e-04 - val_loss: 1.2347e-04\n", + "Epoch 343/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.2163e-04 - val_loss: 1.2318e-04\n", + "Epoch 344/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2135e-04 - val_loss: 1.2322e-04\n", + "Epoch 345/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2114e-04 - val_loss: 1.2283e-04\n", + "Epoch 346/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2067e-04 - val_loss: 1.2238e-04\n", + "Epoch 347/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2042e-04 - val_loss: 1.2186e-04\n", + "Epoch 348/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.2004e-04 - val_loss: 1.2154e-04\n", + "Epoch 349/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1972e-04 - val_loss: 1.2112e-04\n", + "Epoch 350/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1937e-04 - val_loss: 1.2095e-04\n", + "Epoch 351/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1906e-04 - val_loss: 1.2064e-04\n", + "Epoch 352/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1887e-04 - val_loss: 1.2023e-04\n", + "Epoch 353/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1848e-04 - val_loss: 1.1981e-04\n", + "Epoch 354/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1839e-04 - val_loss: 1.1967e-04\n", + "Epoch 355/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1819e-04 - val_loss: 1.1985e-04\n", + "Epoch 356/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1771e-04 - val_loss: 1.1919e-04\n", + "Epoch 357/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1737e-04 - val_loss: 1.1905e-04\n", + "Epoch 358/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1710e-04 - val_loss: 1.1872e-04\n", + "Epoch 359/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1681e-04 - val_loss: 1.1836e-04\n", + "Epoch 360/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1669e-04 - val_loss: 1.1834e-04\n", + "Epoch 361/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1627e-04 - val_loss: 1.1765e-04\n", + "Epoch 362/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1601e-04 - val_loss: 1.1751e-04\n", + "Epoch 363/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1577e-04 - val_loss: 1.1766e-04\n", + "Epoch 364/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1562e-04 - val_loss: 1.1697e-04\n", + "Epoch 365/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1522e-04 - val_loss: 1.1711e-04\n", + "Epoch 366/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.1494e-04 - val_loss: 1.1649e-04\n", + "Epoch 367/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1469e-04 - val_loss: 1.1652e-04\n", + "Epoch 368/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1453e-04 - val_loss: 1.1623e-04\n", + "Epoch 369/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1437e-04 - val_loss: 1.1564e-04\n", + "Epoch 370/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1409e-04 - val_loss: 1.1576e-04\n", + "Epoch 371/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1377e-04 - val_loss: 1.1534e-04\n", + "Epoch 372/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1357e-04 - val_loss: 1.1498e-04\n", + "Epoch 373/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1338e-04 - val_loss: 1.1499e-04\n", + "Epoch 374/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1300e-04 - val_loss: 1.1487e-04\n", + "Epoch 375/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1315e-04 - val_loss: 1.1486e-04\n", + "Epoch 376/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1264e-04 - val_loss: 1.1431e-04\n", + "Epoch 377/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1249e-04 - val_loss: 1.1441e-04\n", + "Epoch 378/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1215e-04 - val_loss: 1.1364e-04\n", + "Epoch 379/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1187e-04 - val_loss: 1.1359e-04\n", + "Epoch 380/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1176e-04 - val_loss: 1.1313e-04\n", + "Epoch 381/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1202e-04 - val_loss: 1.1292e-04\n", + "Epoch 382/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1164e-04 - val_loss: 1.1271e-04\n", + "Epoch 383/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1137e-04 - val_loss: 1.1249e-04\n", + "Epoch 384/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1119e-04 - val_loss: 1.1263e-04\n", + "Epoch 385/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1053e-04 - val_loss: 1.1232e-04\n", + "Epoch 386/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1043e-04 - val_loss: 1.1188e-04\n", + "Epoch 387/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.1014e-04 - val_loss: 1.1179e-04\n", + "Epoch 388/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0998e-04 - val_loss: 1.1144e-04\n", + "Epoch 389/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0969e-04 - val_loss: 1.1139e-04\n", + "Epoch 390/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0942e-04 - val_loss: 1.1118e-04\n", + "Epoch 391/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0932e-04 - val_loss: 1.1173e-04\n", + "Epoch 392/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0985e-04 - val_loss: 1.1075e-04\n", + "Epoch 393/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0881e-04 - val_loss: 1.1055e-04\n", + "Epoch 394/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0861e-04 - val_loss: 1.1052e-04\n", + "Epoch 395/1000\n", + "20/20 [==============================] - 74s 4s/step - loss: 1.0847e-04 - val_loss: 1.1021e-04\n", + "Epoch 396/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0827e-04 - val_loss: 1.0983e-04\n", + "Epoch 397/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0802e-04 - val_loss: 1.0977e-04\n", + "Epoch 398/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0783e-04 - val_loss: 1.0934e-04\n", + "Epoch 399/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0756e-04 - val_loss: 1.0930e-04\n", + "Epoch 400/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0741e-04 - val_loss: 1.0930e-04\n", + "Epoch 401/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0883e-04\n", + "Epoch 402/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0708e-04 - val_loss: 1.0862e-04\n", + "Epoch 403/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0690e-04 - val_loss: 1.0862e-04\n", + "Epoch 404/1000\n", + "20/20 [==============================] - 75s 4s/step - loss: 1.0714e-04 - val_loss: 1.0834e-04\n", + "Epoch 405/1000\n", + " 9/20 [============>.................] - ETA: 41s - loss: 1.0775e-04" + ] + } + ], + "source": [ + "csinet.fit(Htrain, epochs=1000, batch_size=5000, hval = Hval)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9e07494", + "metadata": {}, + "outputs": [], + "source": [ + "csinet.model.save('models/CSINet.keras') # The file needs to end with the .keras extension" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1ab0d957", + "metadata": {}, + "outputs": [], + "source": [ + "# model = load_model('models/CSINet.keras')\n", + "# model.fit(Htrain, Htrain, epochs=1000, batch_size=5000, shuffle= True, validation_data=(Hval, Hval))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c4e4215", + "metadata": {}, + "outputs": [], + "source": [ + "# self.model.fit(Htrain, Htrain, \n", + "# epochs=1000, batch_size=5000, shuffle= True, \n", + "# validation_data=(Hval, Hval))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/api/Projects/Project4/project4.html b/api/Projects/Project4/project4.html index b073d6df..bc0961da 100644 --- a/api/Projects/Project4/project4.html +++ b/api/Projects/Project4/project4.html @@ -27,7 +27,7 @@ - + @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • @@ -1969,7 +2019,7 @@

    Comparative Study of Reed Muller codes, Polar Codes and LDPC codes - +

    diff --git a/api/Projects/Project5/project5.html b/api/Projects/Project5/project5.html index 17c9d595..5d2127d8 100644 --- a/api/Projects/Project5/project5.html +++ b/api/Projects/Project5/project5.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project6/project6.html b/api/Projects/Project6/project6.html index b90c6a4d..8ecfd2bb 100644 --- a/api/Projects/Project6/project6.html +++ b/api/Projects/Project6/project6.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project7/E2E_Learning_for_Physical_Layer.html b/api/Projects/Project7/E2E_Learning_for_Physical_Layer.html index 39efc8e1..c3adb346 100644 --- a/api/Projects/Project7/E2E_Learning_for_Physical_Layer.html +++ b/api/Projects/Project7/E2E_Learning_for_Physical_Layer.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project8/project8.html b/api/Projects/Project8/project8.html index bb53eb07..82abee21 100644 --- a/api/Projects/Project8/project8.html +++ b/api/Projects/Project8/project8.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Project9/project9.html b/api/Projects/Project9/project9.html index 18783c66..77ebb3da 100644 --- a/api/Projects/Project9/project9.html +++ b/api/Projects/Project9/project9.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Projects/Projects.html b/api/Projects/Projects.html index ec83a904..057e656a 100644 --- a/api/Projects/Projects.html +++ b/api/Projects/Projects.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • @@ -2097,7 +2147,57 @@

    ProjectsChannel Interpolation based on SRCNN and DnCNN +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.html b/api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.html index aaef6bde..c268d362 100644 --- a/api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.html +++ b/api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.html b/api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.html index 8c19279a..4cb7aa3f 100644 --- a/api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.html +++ b/api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial10/tutorial9.html b/api/Tutorials/Tutorial10/tutorial9.html index a87cf07b..470354fe 100644 --- a/api/Tutorials/Tutorial10/tutorial9.html +++ b/api/Tutorials/Tutorial10/tutorial9.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html b/api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html index 58d62218..50191387 100644 --- a/api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html +++ b/api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html b/api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html index e6e3be2b..91ffdf85 100644 --- a/api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html +++ b/api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].html b/api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].html index c22cc1fe..92a5bc0b 100644 --- a/api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].html +++ b/api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.html b/api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.html index 730f5a76..fbe3590e 100644 --- a/api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.html +++ b/api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.html b/api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.html index 511108dd..ade053ca 100644 --- a/api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.html +++ b/api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.html b/api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.html index c98f0a6e..4e80a382 100644 --- a/api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.html +++ b/api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.html b/api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.html index 9341c604..cf276d65 100644 --- a/api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.html +++ b/api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.html b/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.html index d0daa959..0fc4dfb6 100644 --- a/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.html +++ b/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.html b/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.html index 36820b68..ef395386 100644 --- a/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.html +++ b/api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.html b/api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.html index 27ee8748..bf1dfdc1 100644 --- a/api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.html +++ b/api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.html b/api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.html index 14b07139..b0486637 100644 --- a/api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.html +++ b/api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.html b/api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.html index 641496f2..82118a00 100644 --- a/api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.html +++ b/api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.html b/api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.html index 4c0da314..6250ef5b 100644 --- a/api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.html +++ b/api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial3/Tutorial3_PolarCodes.html b/api/Tutorials/Tutorial3/Tutorial3_PolarCodes.html index edd2c60a..f9d4efc8 100644 --- a/api/Tutorials/Tutorial3/Tutorial3_PolarCodes.html +++ b/api/Tutorials/Tutorial3/Tutorial3_PolarCodes.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.html b/api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.html index 23422e95..954b78ee 100644 --- a/api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.html +++ b/api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial4/aggregateResults.html b/api/Tutorials/Tutorial4/aggregateResults.html index 6d24c433..4cf7184e 100644 --- a/api/Tutorials/Tutorial4/aggregateResults.html +++ b/api/Tutorials/Tutorial4/aggregateResults.html @@ -1750,7 +1750,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.html b/api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.html index 0895a3fb..df094d61 100644 --- a/api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.html +++ b/api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.html b/api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.html index 300fa710..fb52faa7 100644 --- a/api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.html +++ b/api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.html b/api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.html index 56b6a86b..ebe045cd 100644 --- a/api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.html +++ b/api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.html b/api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.html index bfb56a32..04760e03 100644 --- a/api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.html +++ b/api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.html b/api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.html index 695734fa..59d807a7 100644 --- a/api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.html +++ b/api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.html b/api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.html index 7ff776b6..7823fb57 100644 --- a/api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.html +++ b/api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.html b/api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.html index e5851c16..19b06dde 100644 --- a/api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.html +++ b/api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.html b/api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.html index 8a473309..d5821013 100644 --- a/api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.html +++ b/api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.html b/api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.html index f2770b13..462dbdef 100644 --- a/api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.html +++ b/api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial5/tutorial5.html b/api/Tutorials/Tutorial5/tutorial5.html index bdb23830..ac74e1f7 100644 --- a/api/Tutorials/Tutorial5/tutorial5.html +++ b/api/Tutorials/Tutorial5/tutorial5.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.html b/api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.html index 5b1d6984..22a88096 100644 --- a/api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.html +++ b/api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.html b/api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.html index 4c43d47d..d8df1435 100644 --- a/api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.html +++ b/api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial8/pucchFormat0_Tutorial.html b/api/Tutorials/Tutorial8/pucchFormat0_Tutorial.html index e62e8978..4511588b 100644 --- a/api/Tutorials/Tutorial8/pucchFormat0_Tutorial.html +++ b/api/Tutorials/Tutorial8/pucchFormat0_Tutorial.html @@ -1751,7 +1751,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.html b/api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.html index da85a931..e20f3420 100644 --- a/api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.html +++ b/api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.html @@ -1752,7 +1752,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/Tutorials/Tutorials.html b/api/Tutorials/Tutorials.html index 9c587903..1e2f1408 100644 --- a/api/Tutorials/Tutorials.html +++ b/api/Tutorials/Tutorials.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/WeekChallenge/challenge.html b/api/WeekChallenge/challenge.html index 18c64a86..98632b8c 100644 --- a/api/WeekChallenge/challenge.html +++ b/api/WeekChallenge/challenge.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/WeekChallenge/challengeArxiv.html b/api/WeekChallenge/challengeArxiv.html index b5c3f2ca..89e39114 100644 --- a/api/WeekChallenge/challengeArxiv.html +++ b/api/WeekChallenge/challengeArxiv.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/api/WeekChallenge/challengeOftheWeek.html b/api/WeekChallenge/challengeOftheWeek.html index 09a6c180..87b65ce6 100644 --- a/api/WeekChallenge/challengeOftheWeek.html +++ b/api/WeekChallenge/challengeOftheWeek.html @@ -1749,7 +1749,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/detailedInstall.html b/detailedInstall.html index 5ff23b79..9e714de9 100644 --- a/detailedInstall.html +++ b/detailedInstall.html @@ -1748,7 +1748,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/detailedInstall2.html b/detailedInstall2.html index 14a5c1eb..5412bb3e 100644 --- a/detailedInstall2.html +++ b/detailedInstall2.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/genindex.html b/genindex.html index 637ed167..3e05eeff 100644 --- a/genindex.html +++ b/genindex.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/index.html b/index.html index f95d3aeb..5e9d67b3 100644 --- a/index.html +++ b/index.html @@ -1748,7 +1748,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • @@ -2514,7 +2564,13 @@

    More InformationSelection of minimum CORESET Size for a Given Target Block Probability -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/install.html b/install.html index aefd997d..aa04c4a2 100644 --- a/install.html +++ b/install.html @@ -1750,7 +1750,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/install2.html b/install2.html index 2f03cf5b..6b5e72b9 100644 --- a/install2.html +++ b/install2.html @@ -1747,7 +1747,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/objects.inv b/objects.inv index d2136037ef04753bc60ebb3682be61347c5b12ad..719aaeccb31e7614a3d0ea0d361a7305c0b7d679 100644 GIT binary patch delta 58666 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�SU~;D~E&_cRwnTY!_4))8rKxNq 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

    |90Dh&V9pcK0p>ywFn51JzFs-Af`Bc~ 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 Z@F4n=mgd2 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 -

  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/search.html b/search.html index 8cb93ae9..b3549820 100644 --- a/search.html +++ b/search.html @@ -1750,7 +1750,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond
  • diff --git a/searchindex.js b/searchindex.js index 27da233d..c64634c3 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["GettingStarted", "api/5G_Toolkit/5Gtoolkit", "api/5G_Toolkit/CRC/crc", "api/5G_Toolkit/CRC/crc.crcDecoder", "api/5G_Toolkit/CRC/crc.crcEncoder", "api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components", "api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller", "api/5G_Toolkit/ChannelCoder/channelCoder", "api/5G_Toolkit/ChannelModels/antennaArray", "api/5G_Toolkit/ChannelModels/channelGenerator", "api/5G_Toolkit/ChannelModels/channelModels", "api/5G_Toolkit/ChannelModels/nodeMobility", "api/5G_Toolkit/ChannelModels/parameterGenerator", "api/5G_Toolkit/ChannelModels/simulationLayout", "api/5G_Toolkit/ChannelProcessing/channelProcessing", "api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise", "api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel", "api/5G_Toolkit/Interleaver/interleavers", "api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver", "api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers", "api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver", "api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver", "api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver", "api/5G_Toolkit/MIMOProcessing/codeBooks", "api/5G_Toolkit/MIMOProcessing/mimoProcessing", "api/5G_Toolkit/OFDM/ofdm", "api/5G_Toolkit/OFDM/ofdm.demodulator", "api/5G_Toolkit/OFDM/ofdm.modulator", "api/5G_Toolkit/OFDM/ofdm.transformDecoding", "api/5G_Toolkit/OFDM/ofdm.transformDecoding5G", "api/5G_Toolkit/OFDM/ofdm.transformprecoding", "api/5G_Toolkit/OFDM/ofdm.transformprecoding5G", "api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci", "api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib", "api/5G_Toolkit/PayloadGeneration/payloadGeneration", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format3", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format4", "api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy", "api/5G_Toolkit/PhysicalChannels/physicalChannels", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.prach", "api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation", "api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid", "api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms", "api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA", "api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation", "api/5G_Toolkit/Positioning/positioning", "api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection", "api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver", "api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc", "api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver", "api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder", "api/5G_Toolkit/Ratematcher/ratematcher", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4", "api/5G_Toolkit/ResourceMapping/resourceMapping", "api/5G_Toolkit/ResourceMapping/resourceMapping.coreset", "api/5G_Toolkit/ResourceMapping/resourceMapping.csirs", "api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH", "api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch", "api/5G_Toolkit/ResourceMapping/resourceMapping.prs", "api/5G_Toolkit/ResourceMapping/resourceMapping.pscch", "api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH", "api/5G_Toolkit/ResourceMapping/resourceMapping.pucch", "api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb", "api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssb", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration", "api/5G_Toolkit/Scrambler/scrambler", "api/5G_Toolkit/Scrambler/scrambler.deScrambler", "api/5G_Toolkit/Scrambler/scrambler.rntiMasking", "api/5G_Toolkit/Scrambler/scrambler.scrambler", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss", "api/5G_Toolkit/SymbolMapping/symbolMapping", "api/5G_Toolkit/SymbolMapping/symbolMapping.demapper", "api/5G_Toolkit/SymbolMapping/symbolMapping.mapper", "api/5G_Toolkit/[N]Configurations/configurations", "api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters", "api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters", "api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS", "api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS", "api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms", "api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation", "api/5G_Toolkit/[N]Scheduler/scheduler", "api/Built_using_5G_Toolkit/builtUsing5GToolkit", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH", "api/Integration_with_SDR/Integration_with_SDRs", "api/LearningResources/GW-IC5GS", "api/LearningResources/LearningResources", "api/License/license", "api/Preview_of_Next_Release/FeatureList", "api/Previous_Versions/PreviousVersions", "api/Projects/Project1/learning2Demap", "api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA", "api/Projects/Project10/project10", "api/Projects/Project2/Blocking Probability for Different AL distributions", "api/Projects/Project2/Blocking Probability for Different ALs", "api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level", "api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability", "api/Projects/Project2/Impact of UEs Capability on Blocking Probability", "api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability", "api/Projects/Project2/project2", "api/Projects/Project3/project3", "api/Projects/Project4/project4", "api/Projects/Project5/project5", "api/Projects/Project6/project6", "api/Projects/Project7/E2E_Learning_for_Physical_Layer", "api/Projects/Project8/project8", "api/Projects/Project9/project9", "api/Projects/Projects", "api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes", "api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels", "api/Tutorials/Tutorial10/tutorial9", "api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks", "api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks", "api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure]", "api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding", "api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes", "api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory", "api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA", "api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks", "api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA", "api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM", "api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS", "api/Tutorials/Tutorial3/Tutorial3_PolarCodes", "api/Tutorials/Tutorial4/Tutorial4_LDPCCodes", "api/Tutorials/Tutorial4/aggregateResults", "api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains", "api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations", "api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain", "api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot", "api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site", "api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond", "api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies", "api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains", "api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models", "api/Tutorials/Tutorial5/tutorial5", "api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB", "api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels", "api/Tutorials/Tutorial8/pucchFormat0_Tutorial", "api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G", "api/Tutorials/Tutorials", "api/WeekChallenge/challenge", "api/WeekChallenge/challengeArxiv", "api/WeekChallenge/challengeOftheWeek", "detailedInstall", "detailedInstall2", "index", "install", "install2", "releaseNotes", "test_GettingStarted"], "filenames": ["GettingStarted.rst", "api/5G_Toolkit/5Gtoolkit.rst", "api/5G_Toolkit/CRC/crc.rst", "api/5G_Toolkit/CRC/crc.crcDecoder.rst", "api/5G_Toolkit/CRC/crc.crcEncoder.rst", "api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.rst", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.rst", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.rst", "api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.rst", "api/5G_Toolkit/ChannelCoder/channelCoder.rst", "api/5G_Toolkit/ChannelModels/antennaArray.rst", "api/5G_Toolkit/ChannelModels/channelGenerator.rst", "api/5G_Toolkit/ChannelModels/channelModels.rst", "api/5G_Toolkit/ChannelModels/nodeMobility.rst", "api/5G_Toolkit/ChannelModels/parameterGenerator.rst", "api/5G_Toolkit/ChannelModels/simulationLayout.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.rst", "api/5G_Toolkit/Interleaver/interleavers.rst", "api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.rst", "api/5G_Toolkit/MIMOProcessing/codeBooks.rst", "api/5G_Toolkit/MIMOProcessing/mimoProcessing.rst", "api/5G_Toolkit/OFDM/ofdm.rst", "api/5G_Toolkit/OFDM/ofdm.demodulator.rst", "api/5G_Toolkit/OFDM/ofdm.modulator.rst", "api/5G_Toolkit/OFDM/ofdm.transformDecoding.rst", "api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.rst", "api/5G_Toolkit/OFDM/ofdm.transformprecoding.rst", "api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.rst", "api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.rst", "api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.rst", "api/5G_Toolkit/PayloadGeneration/payloadGeneration.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.rst", "api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.rst", "api/5G_Toolkit/Positioning/positioning.rst", "api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.rst", "api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.rst", "api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.rst", "api/5G_Toolkit/Ratematcher/ratematcher.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.prs.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.rst", "api/5G_Toolkit/Scrambler/scrambler.rst", "api/5G_Toolkit/Scrambler/scrambler.deScrambler.rst", "api/5G_Toolkit/Scrambler/scrambler.rntiMasking.rst", "api/5G_Toolkit/Scrambler/scrambler.scrambler.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.rst", "api/5G_Toolkit/[N]Configurations/configurations.rst", "api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.rst", "api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.rst", "api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.rst", "api/5G_Toolkit/[N]Scheduler/scheduler.rst", "api/Built_using_5G_Toolkit/builtUsing5GToolkit.rst", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.rst", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.rst", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.rst", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.rst", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.ipynb", "api/Integration_with_SDR/Integration_with_SDRs.rst", "api/LearningResources/GW-IC5GS.rst", "api/LearningResources/LearningResources.rst", "api/License/license.md", "api/Preview_of_Next_Release/FeatureList.rst", "api/Previous_Versions/PreviousVersions.rst", "api/Projects/Project1/learning2Demap.ipynb", "api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.ipynb", "api/Projects/Project10/project10.rst", "api/Projects/Project2/Blocking Probability for Different AL distributions.ipynb", "api/Projects/Project2/Blocking Probability for Different ALs.ipynb", "api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.ipynb", "api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.ipynb", "api/Projects/Project2/Impact of UEs Capability on Blocking Probability.ipynb", "api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.ipynb", "api/Projects/Project2/project2.rst", "api/Projects/Project3/project3.rst", "api/Projects/Project4/project4.rst", "api/Projects/Project5/project5.rst", "api/Projects/Project6/project6.rst", "api/Projects/Project7/E2E_Learning_for_Physical_Layer.ipynb", "api/Projects/Project8/project8.rst", "api/Projects/Project9/project9.rst", "api/Projects/Projects.rst", "api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.ipynb", "api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.ipynb", "api/Tutorials/Tutorial10/tutorial9.rst", "api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.ipynb", "api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.ipynb", "api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].ipynb", "api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.ipynb", "api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.ipynb", "api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.ipynb", "api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.ipynb", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.ipynb", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.ipynb", "api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.ipynb", "api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.ipynb", "api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.ipynb", "api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.ipynb", "api/Tutorials/Tutorial3/Tutorial3_PolarCodes.ipynb", "api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.ipynb", "api/Tutorials/Tutorial4/aggregateResults.ipynb", "api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.ipynb", "api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.ipynb", "api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.ipynb", "api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.ipynb", "api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.ipynb", "api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.ipynb", "api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.ipynb", "api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.ipynb", "api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.ipynb", "api/Tutorials/Tutorial5/tutorial5.rst", "api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.ipynb", "api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.ipynb", "api/Tutorials/Tutorial8/pucchFormat0_Tutorial.rst", "api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.ipynb", "api/Tutorials/Tutorials.rst", "api/WeekChallenge/challenge.rst", "api/WeekChallenge/challengeArxiv.rst", "api/WeekChallenge/challengeOftheWeek.rst", "detailedInstall.rst", "detailedInstall2.rst", "index.rst", "install.rst", "install2.rst", "releaseNotes.md", "test_GettingStarted.ipynb"], "titles": ["Getting Started", "API Documentation", "Cyclic Redundancy Check", "CRC Decoder", "CRC Encoder", "Hamming Coder", "Low Density Parity Check Codes", "Codeblock Processing: Receiver", "Codeblock Processing: Transmitter", "LDPC Parameters Computation", "Polar Codes", "Code-block Processing: Transmitter", "Reed Muller Codes", "Forward Error Correction", "Antenna Array", "Channel Generator", "Channel Models", "Node Mobility", "Channel Parameter Generator", "Simulation Layout", "Channel Processing and Hardware Impairment", "Add Noise and CFO at Receiver", "Apply Channel to Transmitted Signal", "Interleavers", "Bit Interleavers", "PBCH Interleaver", "Channel Interleaver", "Input Bit Interleaver", "Sub Block Interleaver", "Code-Books", "MIMO Processing", "Orthogonal Frequency Division Multiplexing", "OFDM: Demodulator", "OFDM: Modulator", "Transform Decoding", "Transform Decoding for 5G", "Transform Precoding", "Transform Precoding for 5G", "Downlink Control Information (DCI)", "Master Information Block (MIB)", "Payload Generation", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "PBCH Payload", "Master Information Block (MIB)", "Modulation", "Demapper", "Symbol Mapping", "Cyclic Redundency Check", "Cyclic Redundancy Check", "PBCH Scrambler", "Cyclic Redundancy Check", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "Modulation", "Demapper", "Symbol Mapping", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "PDSCH: Lower Physical layer Chain", "PDSCH: Lower Physical layer Chain Decoder", "PDSCH: Upper Physical layer Chain", "PDSCH: Upper Physical layer Chain Decoder", "PDSCH Chain", "Receiver Processing", "Transmitter Processing", "Code Block Concatenation", "Code Block Segmentation", "Transport Block Size Computation", "Layer Mapper", "Low Density Parity Check Codes", "Modulation", "Demapper", "Symbol Mapping", "Rate Matching", "Bit Interleaver for LDPC", "Rate matching for LDPC", "Physical Downlink Shared Channel-DMRS", "Physical Downlink Shared Channel-DMRS", "Scrambling: PDSCH", "Descrambler", "Scrambling", "Transport Block Processing", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "Modulation", "Demapper", "Symbol Mapping", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "PUCCH Format 0", "Format0", "Resource De-Mapping", "Resource Mapping", "Sequence Generation", "PUCCH Format 1", "De-Spreading", "Format1", "Resource De-Mapping", "Resource Mapping", "Sequence Generation", "Spreading", "PUCCH Format 2", "Format 2,3,4", "Polar Codes", "Code-block Processing: Transmitter", "Channel Coding of Small Block Length", "Channel Coder", "Polar Codes", "Channel Coding of Small Block Length", "Code Block Concatenation", "Code Block Segmentation", "PUCCH Components", "Rate matching for Small Block Length 5G", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate matching", "Rate Matching", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate Matching for Polar Coder", "Rate matching for Small Block Length 5G", "Scrambling", "Descrambler", "RNTI Masking", "Scrambler", "Scrambling: PUCCH", "Descrambler", "Scrambling", "Symbol Mapping", "Demapper", "Mapper", "Modulation", "Demapper", "Symbol Mapping", "PUCCH Receiver", "PUCCH Transmitter", "PUCCH Format 3", "PUCCH Format 4", "PUCCH", "PUSCH Chain", "Receiver Chain", "Transmitter Chain", "Physical Channels", "Physical Broadcast Channel (PBCH)", "Physical Downlink Control Channel (PDCCH)", "Physical Downlink Shared Channel (PDSCH)", "Physical Random Access Channel (PRACH)", "Physical Sidelink Broadcast Channel (PSBCH)", "Physical Sidelink Control Channel (PSCCH)", "Physical Uplink Control Channel (PUCCH)", "Physical Uplink Shared Channel (PUSCH)", "DFT based AoA Method", "ESPRIT based DoA Estimation", "MUSIC based DoA Estimation", "Direction of Arrival Estimation", "Least Squares based Position Estimator for DoA", "Least Square based Position Estimator for Hybrid ToA/mRTT and DoA", "Least Squares based Position Estimator for TDoA", "Least Squares based Position Estimator for ToA/mRTT", "Optimization Algorithms", "<no title>", "DFT based Method", "ESPRIT based ToA Estimation", "MUSIC based ToA Estimation", "Time of Arrival (ToA)/Delay Estimation", "Position Estimation", "Bit Selection for LDPC", "Bit Interleaver for LDPC", "Rate matching for LDPC", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate matching", "PUCCH Format 0 Resource De-Mapping", "PUCCH Format 0 Resource Mapping", "PUCCH Format-1 De-Spreading", "PUCCH Format-1 Resource De-Mapping", "PUCCH Format-1 Resource Mapping", "PUCCH Format-1 Spreading", "PUCCH Format-0", "PUCCH Format-1", "PUCCH Format-2", "PUCCH Format-3", "PUCCH Format-4", "Resource Mapping", "Control Resource Set", "Channel state Information reference signal (CSI-RS)", "Physical Downlink Shared Channel-DMRS", "Physical Downlink Control Channel (PDCCH)", "Positioning Reference Signal (PRS)", "Physical Sidelink Control Channel (PSCCH)", "Physical Downlink Shared Channel-PTRS", "Physical Uplink Control Channel (PUCCH)", "Sidelink Synchronization Signal Block (SSB) Grid Generation", "Search Space Set", "Synchronization Signal Block (SSB) Grid Generation", "Synchronization Signal Block (SSB) Resource Mapping", "Scrambling", "Descrambler", "RNTI Masking", "Scrambler", "Sequence Generation", "Low PAPR Sequence Type 1", "Low PAPR Sequence Type 2", "PUCCH Format 0 Sequence", "PUCCH Format 1 Sequence", "Channel State Information Reference Sequence (CSI-RS)", "Demodulation Reference Sequence (DMRS)", "Pseudo Random (PN) Sequence", "Positioning Reference Sequence (PRS)", "Primary Synchronization Signal", "Primary Synchronization Signal for Sidelink (S-PSS)", "Sounding Reference Sequence (SRS)", "Secondary Synchronization Signal", "Secondary Synchronization Signal for Sidelink (S-SSS)", "Symbol Mapping", "Demapper", "Mapper", "5G Configurations", "Channel state information reference signal (CSI-RS) Configurations", "SSB/PBCH Configurations", "PDSCH Lower Physical Layer Configurations", "PDSCH Upper Physical Layer Configurations", "Sounding Reference Signal (SRS) Configurations", "SSB/PBCH Configurations", "Time-Frequency 5G-Configurations", "Carrier Frequency Offset (CFO) Estimation", "Channel Estimation and Symbol Equalization for PBCH", "Channel Estimation and Symbol Equalization for PDCCH", "Channel Estimation and Symbol Equalization for PDSCH", "SSB Parameters Estimation", "Time Synchronization and PSS/Cell ID-2 Detection", "SSS/Cell ID-1 Detection", "Downlink Channel Estimation using CSI-RS", "Uplink Channel Estimation using SRS for Positioning", "Receiver Algorithms", "PDCCH Scheduler", "Round Robin Scheduler", "Link Adaptation", "Rank Adaptation", "Resource Allocation", "Scheduler", "Research work carried out using 5G Toolkit", "Downlink Time/Frame Synchronization using PSS in 5G Networks", "Time/OFDM Symbol Synchronization using PSS in 5G", "[BS Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks", "[UE Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks", "Downlink Synchronization in 5G Networks: SSB", "Carrier Frequency Offset (CFO) Estimation and Correction in 5G Networks", "Downlink Synchronization in 5G Networks: SSB", "Downlink Synchronization using SSB in 5G Networks", "Downlink Data Communication using PDSCH in 5G Networks", "Downlink Data Communication in 5G Networks", "Integration with SDRs", "Introductory Course on 5G Standards", "Learning Resources", "License", "Tentetive list of Feature", "Previous Versions", "Learning to Demap: Database Generation, Preprocessing, Postprocessing, Training, Validation and Inferences from the LLRNet", "Performance comparison between different Positioning Methods for millimeter wave 5G Networks", "Physical downlink control Channel in 5G", "Analysis of Blocking Probability for different Coverage Conditions", "Variation in Blocking Probability with Different Aggregation Levels (ALs)", "Analyzing the effect of Number of Candidates on Blocking Probability", "Analyzing the Impact of Scheduling Strategy on Blocking Probability", "Analyze the Impact of UE Capability on Blocking Probability", "Selection of minimum CORESET Size for a Given Target Block Probability", "Blockage Probability Analysis for RedCap Devices in 5G Networks", "Channel Interpolation based on SRCNN and DnCNN", "Comparative Study of Reed Muller codes, Polar Codes and LDPC codes", "Channel Quality Estimation in 5G and Beyond Networks", "Hybrid Automatic repeat Request in 5G and Beyond", "Constellation Learning in an AWGN Channel", "Downlink Synchronization using SSB in 5G systems", "Uplink Synchronization using PRACH in 5G systems", "Projects", "Hamming Codes", "Link Level Simulation for Physical Downlink Control Channels", "SVD based Downlink Precoding and Combining for Massive MIMO in 5G Networks", "SVD based Downlink Precoding and Combining for Massive MIMO 5G Networks", "Type-1 codebook based Downlink Precoding and Combining for Massive MIMO 5G Networks", "P1 Procedure: Beam management in 5G networks using SSB", "Search space, CORESET and blind decoding of PDCCH channels in 5G Networks", "Reed Muller Codes in 5G", "Downlink TDoA Based Positioning for Industrial IoT Devices in Millimeter Wave 5G Networks", "Downlink Time of Arrival based Positioning in 5G and Beyond Networks", "Positioning the Outdoor UEs using 5G Urban Micro cell sites based Uplink Time Difference of Arrival (UL-TDoA) method", "Positioning the Indoor Open Office UEs using Uplink ToA method", "Downlink Angle of Departure based Positioning for Rural Macro Terrain in 5G and Beyond Network", "Uplink AoA (UL-AoA) based Localization of the Indoor Factory UEs using millimeter 5G Networks", "Performance comparison of OFDM and DFT-s-OFDM in 5G Networks", "Downlink Channel Estimation using CSI-RS", "Polar Codes in 5G", "Low Density Parity Check (LDPC) Codes in 5G", "<no title>", "Wireless Channel Generation for Outdoor Terrains deployed in Hexagonal Geometry", "Generate Spatially Consistent Statistical Channels for Realistic Simulations", "Wireless Channel Generation for a Dense High Indoor Factory Terrain Deployed at millimeter band.", "Genarating the Wireless Channel for Indoor Open Office Terrain", "Wireless Channel Generation for Outdoor Mobile User Connected to Rural Macro Site", "Channel Generation for Dual Mobility Scenarios in 5G and Beyond", "Wireless Channel Generation for Multiple Carrier Frequencies", "Propagation Characteristics of Outdoor Terrains", "Beam Domain and Delay Domain Sparsity in Wireless Channel Models", "Detailed Tutorials on 3GPP Channel Models", "Initial Access in 5G", "Coverage Evaluation of Physical Broadcast Channels (PBCH) in 5G Networks", "BER Performance of PUCCH Format 0", "Link Level Simulation for Physical Downlink Shared Channel in 5G", "Tutorials", "Challenge Of this Week", "Arxiv-ed Challenges", "Solution of this Months Problems", "Install 5G Toolkit", "Install 5G Toolkit", "5G Toolkit", "Install 5G Toolkit", "Install 5G Toolkit", "Release Notes", "Getting Started with 5G Toolkit"], "terms": {"\u00bd": [0, 358], "\u00bc": [0, 358], "\u215b": [0, 358], "\u00be": [0, 358], "\u215c": [0, 358], "\u215d": [0, 358], "\u215e": [0, 358], "_": [0, 7, 8, 10, 11, 24, 26, 27, 32, 33, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 85, 86, 92, 93, 95, 101, 102, 103, 104, 106, 107, 112, 117, 120, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 158, 163, 165, 167, 168, 181, 182, 184, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 211, 218, 219, 220, 229, 230, 231, 232, 233, 235, 237, 238, 240, 242, 247, 249, 254, 262, 263, 265, 266, 270, 271, 272, 273, 274, 327, 328, 331, 348, 358], "\u00b5": [0, 358], "\u03c9": [0, 358], "\u00aa": [0, 358], "\u00ba": [0, 358], "\u00b9": [0, 358], "\u00b2": [0, 358], "\u00b3": [0, 358], "In": [0, 7, 8, 9, 10, 14, 19, 26, 27, 31, 34, 35, 36, 37, 39, 46, 55, 74, 85, 87, 89, 92, 93, 103, 104, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 149, 180, 184, 192, 194, 196, 198, 203, 204, 206, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 235, 236, 237, 244, 245, 246, 247, 256, 262, 266, 268, 269, 270, 275, 276, 277, 279, 280, 281, 283, 285, 289, 294, 295, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 325, 326, 331, 333, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 353, 358], "section": [0, 2, 4, 6, 7, 8, 9, 10, 11, 12, 19, 24, 25, 26, 27, 28, 29, 31, 34, 36, 42, 44, 48, 49, 51, 53, 55, 58, 59, 60, 62, 65, 67, 69, 71, 72, 74, 77, 78, 79, 81, 84, 85, 86, 87, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 107, 110, 112, 114, 115, 117, 120, 121, 122, 124, 127, 142, 143, 144, 145, 146, 147, 148, 149, 153, 154, 158, 162, 164, 165, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 199, 205, 206, 207, 208, 209, 211, 212, 213, 214, 227, 228, 229, 230, 231, 233, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 265, 266, 270, 278, 295, 318, 351, 358, 360], "we": [0, 6, 14, 96, 236, 294, 295, 297, 299, 301, 304, 305, 306, 307, 308, 309, 315, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 350, 351, 353, 356, 357, 358, 359, 360], "first": [0, 7, 10, 18, 19, 32, 39, 46, 55, 57, 64, 65, 74, 76, 83, 84, 85, 92, 94, 102, 103, 104, 106, 107, 117, 119, 126, 127, 130, 131, 136, 137, 138, 142, 146, 163, 165, 167, 168, 184, 189, 198, 204, 206, 207, 210, 215, 216, 217, 218, 219, 220, 227, 229, 231, 233, 236, 238, 240, 242, 247, 249, 250, 252, 262, 264, 266, 267, 270, 271, 272, 278, 279, 307, 322, 323, 330, 334, 342, 344, 348, 350, 356, 357, 359, 362], "give": [0, 17, 279], "you": [0, 244, 245, 295, 339, 353, 356, 357, 358, 359, 360, 362], "quick": [0, 234, 362], "overview": [0, 269, 270, 329, 358], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 152, 153, 154, 155, 156, 158, 159, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278, 279, 280, 281, 282, 289, 291, 295, 297, 298, 301, 302, 304, 305, 306, 307, 308, 309, 315, 318, 319, 320, 322, 323, 325, 326, 327, 328, 331, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 352, 356, 358, 359, 360, 361, 362], "which": [0, 2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 24, 26, 27, 28, 29, 30, 31, 32, 39, 42, 44, 46, 51, 53, 55, 57, 58, 62, 64, 65, 67, 69, 74, 76, 77, 81, 83, 84, 86, 87, 88, 93, 94, 95, 96, 101, 102, 106, 107, 110, 112, 117, 119, 120, 124, 126, 127, 130, 131, 138, 142, 143, 144, 145, 146, 147, 149, 152, 153, 158, 159, 162, 163, 164, 165, 167, 168, 181, 182, 184, 189, 196, 197, 198, 200, 202, 203, 204, 205, 207, 208, 210, 211, 214, 215, 216, 227, 230, 234, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 247, 249, 250, 252, 253, 254, 255, 256, 260, 261, 262, 264, 265, 266, 267, 268, 270, 271, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 285, 295, 297, 302, 305, 306, 307, 309, 315, 319, 320, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 349, 350, 351, 356, 357, 358, 359, 360, 361, 362], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 158, 159, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 299, 301, 302, 304, 305, 306, 308, 309, 310, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 352, 353, 356, 357, 359, 360, 361, 362], "follow": [0, 2, 3, 4, 5, 6, 8, 10, 11, 12, 14, 17, 18, 19, 24, 25, 26, 27, 28, 29, 38, 39, 42, 44, 46, 48, 51, 53, 55, 59, 60, 62, 64, 65, 67, 69, 71, 74, 78, 79, 81, 83, 84, 85, 87, 88, 93, 94, 96, 98, 102, 106, 107, 110, 112, 114, 117, 121, 122, 124, 126, 127, 142, 143, 146, 149, 163, 164, 165, 167, 168, 170, 173, 175, 176, 181, 182, 186, 188, 189, 195, 198, 199, 202, 203, 204, 205, 206, 209, 212, 213, 214, 227, 236, 240, 241, 242, 243, 249, 252, 253, 258, 260, 262, 264, 266, 267, 269, 270, 273, 278, 280, 281, 284, 285, 289, 291, 295, 296, 297, 299, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 326, 332, 333, 334, 335, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 352, 356, 357, 358, 359, 360, 362], "simpl": [0, 279, 358, 362], "tutori": [0, 6, 10, 12, 55, 64, 74, 83, 96, 106, 117, 126, 142, 146, 163, 167, 189, 235, 237, 240, 249, 289, 290, 291, 292, 293, 295, 301, 315, 320, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 358, 362], "long": [0, 65, 84, 107, 127, 162, 168, 234, 239, 302, 327, 328, 329, 330, 331, 332, 333], "excit": [0, 358], "journei": 0, "learn": [0, 318, 329, 333, 342, 358, 361], "explor": [0, 6, 96, 302], "The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 180, 181, 182, 184, 185, 186, 188, 189, 190, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 356, 357, 358, 359, 360, 362], "provid": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 29, 30, 31, 33, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 90, 92, 93, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 186, 189, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 235, 236, 237, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 266, 267, 269, 270, 273, 274, 275, 276, 279, 280, 281, 282, 285, 295, 301, 305, 315, 320, 326, 327, 328, 332, 333, 335, 336, 338, 340, 341, 344, 348, 356, 358, 359, 360, 361], "requir": [0, 5, 6, 10, 11, 12, 18, 29, 34, 36, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 87, 88, 94, 96, 102, 106, 107, 112, 117, 120, 126, 127, 142, 143, 146, 163, 165, 167, 168, 181, 182, 184, 188, 196, 197, 198, 203, 204, 206, 207, 209, 211, 214, 234, 236, 240, 242, 249, 252, 253, 255, 256, 262, 264, 266, 267, 268, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 291, 294, 301, 302, 304, 310, 318, 320, 327, 328, 329, 330, 331, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 358, 362], "emul": [0, 286, 290, 292, 295, 297, 358], "purpos": [0, 1, 5, 10, 11, 44, 55, 62, 63, 64, 65, 69, 74, 81, 82, 83, 84, 105, 106, 107, 112, 117, 124, 125, 126, 127, 142, 143, 146, 149, 150, 162, 163, 164, 165, 166, 167, 168, 184, 185, 186, 188, 189, 214, 239, 240, 241, 242, 243, 249, 254, 265, 271, 275, 276, 280, 285, 302, 325, 329, 330, 332, 335], "each": [0, 3, 5, 7, 8, 10, 12, 14, 15, 17, 18, 19, 24, 29, 32, 33, 35, 37, 55, 57, 59, 65, 74, 76, 78, 84, 87, 88, 89, 92, 93, 101, 102, 107, 117, 119, 121, 127, 132, 138, 142, 145, 146, 148, 152, 159, 162, 168, 176, 180, 181, 182, 185, 186, 189, 193, 195, 197, 203, 204, 205, 207, 208, 210, 212, 227, 230, 235, 236, 237, 238, 239, 246, 247, 250, 252, 253, 254, 255, 256, 264, 265, 267, 269, 270, 271, 276, 278, 279, 281, 282, 283, 285, 295, 301, 302, 304, 305, 306, 307, 308, 309, 315, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 340, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 358, 362], "expect": [0, 6, 48, 49, 57, 60, 71, 72, 76, 79, 87, 88, 94, 95, 96, 98, 99, 114, 115, 119, 122, 134, 152, 159, 170, 171, 173, 174, 188, 189, 193, 195, 210, 217, 227, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 264, 268, 270, 280, 301, 339, 346], "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 22, 24, 25, 29, 33, 34, 35, 36, 37, 39, 44, 46, 48, 55, 60, 62, 64, 65, 69, 71, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 101, 102, 103, 104, 106, 107, 108, 112, 114, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 162, 163, 164, 165, 167, 168, 170, 173, 175, 176, 179, 181, 182, 183, 184, 185, 188, 189, 190, 193, 195, 196, 197, 198, 199, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 277, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 306, 307, 308, 309, 310, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 358, 361, 362], "set": [0, 1, 5, 6, 11, 12, 14, 18, 19, 22, 24, 26, 27, 29, 33, 35, 37, 39, 44, 46, 58, 65, 69, 77, 84, 85, 86, 87, 88, 94, 96, 101, 102, 103, 104, 107, 112, 120, 127, 130, 131, 132, 134, 136, 137, 138, 139, 143, 145, 153, 158, 165, 168, 181, 182, 184, 198, 205, 206, 207, 208, 209, 211, 215, 216, 217, 218, 219, 220, 226, 228, 229, 230, 231, 232, 238, 242, 244, 245, 246, 247, 254, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 275, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 306, 307, 308, 315, 324, 326, 327, 328, 329, 330, 331, 332, 335, 336, 342, 348, 352, 358, 362], "argument": [0, 3, 4, 17, 19, 64, 65, 83, 84, 87, 88, 106, 107, 126, 127, 134, 163, 165, 167, 168, 205, 217, 240, 242, 249, 264, 267, 289], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 29, 32, 34, 36, 37, 39, 40, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 141, 142, 143, 146, 148, 149, 152, 159, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 227, 228, 229, 230, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 283, 285, 294, 295, 297, 298, 299, 301, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 325, 326, 327, 328, 329, 331, 332, 333, 334, 335, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 356, 357, 358, 359, 360, 361, 362], "time": [0, 1, 7, 10, 11, 15, 16, 17, 18, 19, 22, 24, 29, 31, 32, 33, 39, 44, 46, 55, 57, 69, 74, 76, 86, 92, 93, 94, 95, 101, 102, 112, 117, 119, 142, 143, 144, 146, 147, 148, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 206, 207, 208, 210, 227, 228, 230, 231, 233, 234, 235, 236, 237, 238, 243, 244, 245, 252, 253, 254, 255, 256, 260, 262, 265, 266, 268, 269, 270, 271, 275, 276, 277, 279, 280, 281, 283, 290, 292, 293, 295, 299, 301, 302, 307, 309, 330, 331, 332, 333, 334, 336, 346, 347, 348, 350, 352, 358, 361], "creation": [0, 338, 339, 340, 341, 342, 343, 344, 346], "instanti": [0, 14, 18, 19, 315, 339, 342, 343, 346], "call": [0, 3, 4, 6, 8, 14, 18, 19, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 93, 96, 98, 99, 106, 107, 114, 115, 122, 126, 127, 149, 162, 163, 165, 167, 168, 170, 171, 173, 174, 206, 236, 239, 240, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259, 285, 287, 288, 289, 291, 294, 301, 315, 338, 339, 340, 341, 342, 343, 344, 346], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277, 278, 279, 280, 281, 283, 286, 289, 292, 293, 295, 299, 310, 318, 335, 347, 352, 358, 361, 362], "second": [0, 6, 7, 18, 64, 83, 92, 94, 96, 106, 126, 130, 131, 136, 137, 138, 163, 167, 198, 202, 203, 204, 205, 206, 215, 216, 217, 218, 219, 220, 227, 238, 240, 247, 249, 250, 253, 270, 278, 294, 315, 339, 342, 343, 350], "while": [0, 15, 19, 21, 22, 94, 103, 104, 193, 195, 197, 203, 204, 206, 227, 229, 264, 270, 279, 280, 281, 289, 295, 301, 302, 306, 309, 327, 328, 329, 330, 331, 332, 339, 342, 343, 346], "These": [0, 2, 6, 7, 9, 10, 18, 19, 34, 36, 37, 40, 42, 49, 51, 53, 55, 67, 72, 74, 96, 99, 110, 115, 117, 142, 146, 169, 174, 184, 186, 189, 195, 206, 234, 243, 255, 257, 260, 268, 269, 270, 271, 278, 326, 327, 328, 329, 331, 333, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 350, 358], "input": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 315, 318, 319, 320, 322, 323, 327, 328, 334, 346, 348, 358], "If": [0, 3, 6, 7, 10, 11, 14, 17, 18, 19, 21, 22, 25, 28, 29, 44, 55, 59, 64, 65, 69, 74, 78, 83, 84, 87, 88, 92, 94, 96, 106, 107, 112, 117, 121, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 145, 146, 149, 154, 158, 163, 165, 167, 168, 182, 196, 197, 198, 199, 206, 212, 215, 216, 218, 219, 220, 227, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 264, 267, 269, 270, 271, 278, 279, 280, 281, 356, 357, 359, 360], "configur": [0, 1, 4, 9, 12, 18, 19, 29, 48, 60, 71, 79, 85, 87, 98, 102, 103, 104, 114, 122, 130, 131, 132, 134, 136, 137, 138, 139, 170, 173, 204, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 246, 247, 254, 258, 270, 271, 275, 276, 278, 281, 286, 290, 292, 293, 295, 301, 305, 306, 308, 315, 318, 319, 322, 323, 324, 326, 331, 348, 350, 352, 356, 358, 359, 360, 361], "correctli": [0, 102, 189, 207, 264, 269, 270, 285, 291, 294, 348], "produc": [0, 278], "one": [0, 14, 18, 29, 35, 37, 39, 46, 57, 76, 86, 87, 102, 119, 184, 188, 198, 205, 206, 207, 210, 227, 231, 235, 236, 237, 238, 250, 252, 253, 254, 262, 266, 267, 270, 281, 295, 301, 302, 305, 306, 315, 320, 327, 328, 330, 331, 333, 339, 356, 359, 360], "multipl": [0, 5, 7, 8, 10, 12, 14, 16, 19, 21, 24, 28, 34, 35, 36, 37, 39, 46, 48, 49, 55, 59, 60, 71, 72, 74, 78, 79, 85, 86, 92, 93, 95, 98, 99, 101, 114, 115, 117, 121, 122, 139, 142, 146, 148, 149, 154, 158, 169, 170, 171, 173, 174, 186, 204, 206, 208, 212, 220, 227, 235, 237, 238, 244, 245, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 265, 271, 275, 276, 279, 281, 283, 299, 301, 302, 320, 322, 323, 327, 329, 331, 332, 333, 334, 338, 340, 341, 346, 347, 352, 358], "output": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 315, 318, 319, 320, 322, 323, 325, 334, 346, 348, 357, 358], "type": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 24, 30, 39, 44, 46, 48, 49, 55, 60, 69, 71, 72, 74, 79, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 108, 112, 114, 115, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 170, 171, 173, 174, 184, 185, 204, 206, 207, 208, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 246, 247, 254, 258, 259, 262, 263, 264, 265, 266, 267, 269, 270, 271, 275, 276, 278, 279, 294, 296, 299, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 324, 325, 327, 328, 329, 330, 331, 332, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 352, 358, 361], "size": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17, 18, 19, 25, 29, 31, 32, 33, 39, 44, 46, 48, 49, 55, 57, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 78, 79, 81, 83, 84, 86, 87, 88, 91, 92, 93, 95, 96, 98, 99, 102, 106, 107, 108, 112, 114, 115, 117, 119, 121, 122, 124, 126, 127, 130, 131, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 152, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 209, 210, 212, 215, 216, 218, 219, 220, 227, 228, 230, 231, 234, 236, 238, 240, 241, 242, 247, 248, 249, 250, 251, 252, 254, 255, 256, 258, 259, 262, 265, 266, 267, 268, 269, 270, 271, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 310, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 340, 341, 342, 343, 344, 345, 348, 349, 350, 351, 352, 358, 362], "shape": [0, 3, 4, 5, 6, 7, 14, 15, 17, 18, 19, 21, 22, 24, 29, 34, 35, 36, 37, 87, 88, 92, 96, 101, 182, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 208, 235, 237, 244, 245, 252, 253, 254, 255, 256, 269, 270, 272, 274, 275, 276, 278, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351], "detail": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 21, 24, 25, 26, 27, 28, 31, 33, 34, 36, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 92, 93, 95, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 143, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 182, 186, 189, 195, 196, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 231, 235, 237, 239, 240, 241, 242, 243, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 269, 271, 272, 273, 274, 275, 280, 281, 327, 328, 330, 331, 332, 335, 348, 352, 358], "its": [0, 28, 29, 59, 78, 121, 154, 158, 175, 181, 189, 204, 212, 227, 236, 244, 245, 268, 283, 285, 298, 301, 315, 325, 329, 331, 333, 342, 343, 352, 358], "user": [0, 5, 6, 14, 15, 16, 17, 18, 19, 27, 29, 87, 91, 96, 108, 132, 138, 144, 147, 148, 149, 175, 176, 181, 182, 195, 198, 199, 206, 215, 216, 246, 247, 250, 252, 253, 255, 256, 260, 267, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 295, 296, 299, 301, 302, 320, 324, 327, 328, 329, 330, 331, 332, 336, 338, 339, 340, 341, 343, 344, 346, 347, 349, 352, 356, 357, 358, 359, 360], "access": [0, 1, 14, 15, 17, 19, 39, 46, 85, 86, 88, 102, 103, 104, 183, 184, 206, 207, 229, 233, 238, 243, 249, 254, 262, 266, 267, 273, 279, 296, 299, 338, 339, 340, 341, 342, 343, 344, 346, 352, 358, 361], "attribut": [0, 9, 11, 14, 17, 18, 19, 26, 27, 28, 44, 58, 59, 69, 77, 78, 85, 86, 87, 88, 102, 112, 120, 121, 143, 153, 154, 158, 181, 182, 184, 188, 199, 204, 206, 207, 211, 212, 236, 244, 245, 254, 262, 266, 267, 271, 272, 279, 309], "some": [0, 1, 14, 176, 244, 249, 254, 268, 272, 275, 276, 277, 286, 295, 309, 327, 328, 329, 330, 331, 342, 343, 345, 358, 359], "addit": [0, 21, 39, 46, 87, 88, 90, 91, 94, 103, 104, 181, 182, 189, 197, 203, 204, 227, 229, 233, 262, 264, 266, 270, 315, 352, 358], "method": [0, 3, 4, 14, 15, 17, 18, 19, 29, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 85, 86, 98, 99, 103, 104, 106, 107, 114, 115, 122, 126, 127, 134, 139, 163, 165, 167, 168, 170, 171, 173, 174, 181, 193, 194, 196, 197, 198, 199, 203, 204, 205, 206, 227, 228, 229, 235, 237, 240, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259, 268, 269, 270, 271, 272, 273, 274, 279, 281, 291, 294, 299, 301, 315, 318, 319, 323, 334, 348, 350, 352, 358], "displai": [0, 14, 17, 18, 19, 39, 46, 85, 87, 88, 103, 104, 181, 182, 202, 204, 205, 206, 227, 228, 229, 231, 233, 235, 236, 237, 278, 279, 285, 287, 288, 294, 298, 301, 302, 310, 318, 322, 323, 324, 326, 329, 330, 331, 332, 335, 336, 337, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 351, 352, 358], "function": [0, 6, 8, 14, 15, 16, 17, 18, 19, 29, 30, 32, 93, 96, 102, 205, 207, 227, 230, 236, 267, 270, 278, 279, 280, 282, 285, 301, 304, 305, 306, 318, 324, 333, 345, 347, 348, 349, 352, 358], "insight": [0, 320], "implement": [0, 1, 2, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 44, 48, 49, 51, 53, 55, 58, 59, 60, 62, 65, 67, 69, 71, 72, 74, 77, 78, 79, 81, 84, 85, 86, 87, 88, 92, 93, 95, 96, 98, 99, 101, 102, 107, 110, 112, 114, 115, 117, 120, 121, 122, 124, 127, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 153, 154, 158, 161, 164, 165, 168, 170, 171, 173, 174, 175, 176, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 198, 199, 202, 203, 204, 207, 208, 211, 212, 227, 235, 236, 237, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 268, 269, 270, 271, 276, 278, 280, 281, 282, 286, 290, 292, 293, 295, 315, 326, 335, 336, 342, 348, 352, 358, 361, 362], "from": [0, 1, 3, 4, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 29, 32, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 60, 64, 69, 71, 72, 74, 76, 79, 83, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 108, 112, 114, 115, 117, 119, 122, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 152, 159, 163, 167, 169, 170, 171, 173, 174, 181, 182, 184, 189, 193, 195, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 235, 236, 237, 238, 240, 244, 246, 247, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 275, 276, 278, 279, 280, 281, 283, 285, 287, 288, 289, 291, 294, 295, 302, 304, 305, 306, 307, 308, 309, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 350, 351, 352, 356, 357, 358, 359, 360, 362], "standpoint": 0, "__init__": [0, 193, 289], "address": 0, "__call__": [0, 193], "let": [0, 271, 302, 307, 343, 356, 357, 359], "u": [0, 28, 29, 59, 78, 121, 154, 158, 212, 244, 245, 295, 307, 322, 323, 334, 351, 353, 356, 357, 358, 359], "your": [0, 295, 353, 356, 357, 358, 359, 360], "Its": [0, 10, 11, 17, 26, 38, 39, 44, 46, 55, 64, 65, 69, 74, 83, 84, 102, 106, 107, 112, 117, 126, 127, 142, 143, 146, 163, 165, 167, 168, 184, 196, 198, 203, 206, 207, 209, 213, 238, 240, 242, 244, 254, 266, 267, 279, 301, 304, 305, 306, 307, 308, 309, 324, 348, 349], "veri": [0, 10, 11, 12, 28, 32, 44, 55, 69, 74, 112, 117, 142, 143, 146, 202, 204, 244, 245, 260, 280, 319, 327, 328, 343], "project": [0, 204, 294, 295, 301, 302, 303, 311, 312, 313, 314, 316, 317, 324, 349, 358], "textcolor": 0, "blue": [0, 206, 301, 315, 324, 326, 333, 335, 336, 337, 362], "text": [0, 3, 4, 7, 8, 10, 11, 24, 26, 27, 32, 33, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 85, 86, 92, 93, 95, 101, 102, 103, 104, 106, 107, 112, 117, 120, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 158, 163, 165, 167, 168, 181, 182, 184, 185, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 211, 218, 219, 220, 228, 229, 230, 231, 233, 235, 237, 240, 242, 244, 245, 247, 253, 254, 255, 256, 262, 263, 265, 266, 270, 271, 272, 273, 274, 279, 281, 301, 309, 326, 327, 328, 331, 335, 336, 338, 340, 341, 342, 344, 348, 350, 362], "cyclic": [0, 1, 3, 4, 31, 32, 33, 52, 132, 138, 183, 184, 185, 188, 189, 215, 216, 217, 218, 219, 220, 221, 227, 244, 246, 247, 252, 253, 254, 265, 267, 268, 273, 285, 287, 289, 291, 294, 296, 320, 325, 348, 350, 358], "redund": [0, 1, 3, 4, 5, 7, 52, 87, 88, 90, 91, 93, 102, 181, 182, 183, 184, 185, 188, 189, 207, 209, 228, 231, 296, 301, 358, 361], "check": [0, 1, 3, 5, 8, 13, 19, 27, 52, 88, 93, 102, 108, 175, 181, 183, 184, 185, 186, 188, 189, 206, 207, 264, 267, 291, 294, 296, 301, 319, 320, 325, 348, 349, 352, 356, 357, 358, 359, 360, 362], "add": [0, 1, 2, 5, 20, 42, 51, 53, 67, 110, 302, 309, 322, 323, 326, 329, 330, 332, 335, 342, 348, 349, 351, 352, 358], "nois": [0, 1, 6, 10, 12, 20, 32, 55, 74, 86, 96, 117, 142, 146, 181, 184, 185, 188, 203, 204, 269, 280, 281, 301, 302, 315, 320, 322, 323, 325, 326, 329, 330, 332, 335, 336, 337, 349, 350, 351, 352, 358, 362], "shown": [0, 5, 6, 7, 8, 9, 10, 12, 33, 55, 74, 85, 87, 92, 93, 95, 96, 117, 142, 146, 148, 149, 186, 195, 196, 198, 235, 236, 237, 278, 327, 328, 330, 331, 348, 356, 359], "below": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 17, 18, 19, 21, 33, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 79, 81, 83, 84, 85, 86, 87, 92, 93, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 122, 124, 126, 127, 130, 131, 132, 142, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 195, 196, 197, 198, 199, 200, 205, 206, 207, 208, 210, 211, 214, 215, 216, 226, 227, 235, 236, 237, 240, 241, 242, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 263, 264, 265, 269, 272, 273, 274, 278, 281, 304, 305, 306, 307, 308, 309, 322, 323, 327, 328, 330, 331, 332, 336, 338, 340, 341, 348, 356, 357, 358, 359, 360], "crc": [0, 1, 2, 6, 7, 8, 10, 11, 25, 27, 44, 55, 62, 69, 74, 81, 88, 93, 95, 96, 108, 112, 117, 124, 142, 143, 146, 148, 149, 164, 175, 176, 181, 182, 184, 185, 189, 241, 320, 325, 335, 348, 358], "help": [0, 27, 28, 87, 88, 181, 182, 196, 197, 198, 204, 206, 271, 280, 281, 294, 297, 322, 323, 334, 338, 339, 340, 341, 344, 356, 357, 359], "receiv": [0, 1, 2, 3, 5, 6, 8, 9, 10, 15, 16, 18, 20, 22, 27, 28, 31, 32, 34, 35, 36, 37, 40, 42, 43, 49, 51, 53, 57, 59, 64, 65, 67, 68, 72, 76, 78, 83, 84, 86, 88, 89, 99, 102, 106, 107, 110, 111, 115, 119, 121, 126, 127, 141, 142, 150, 152, 154, 158, 159, 162, 163, 167, 168, 169, 174, 179, 180, 183, 193, 195, 196, 198, 200, 203, 204, 205, 207, 210, 212, 230, 232, 239, 240, 257, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 286, 287, 290, 292, 293, 295, 299, 301, 302, 315, 322, 323, 326, 327, 328, 329, 330, 331, 332, 335, 338, 339, 340, 341, 344, 346, 347, 350, 351, 352, 358, 362], "fail": [0, 3, 291, 294, 348], "can": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 22, 24, 25, 27, 28, 34, 35, 36, 37, 44, 48, 49, 55, 60, 62, 64, 65, 69, 71, 72, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 96, 98, 99, 101, 102, 106, 107, 112, 114, 115, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 169, 170, 173, 174, 180, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 252, 253, 254, 255, 256, 257, 258, 260, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 281, 285, 294, 295, 297, 302, 304, 306, 308, 309, 315, 319, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 350, 353, 356, 357, 358, 359, 360, 361], "request": [0, 3, 102, 207, 318, 320, 350, 356, 358, 359, 360], "retransmiss": [0, 3], "data": [0, 3, 5, 6, 7, 26, 28, 29, 48, 49, 57, 60, 62, 71, 72, 76, 79, 81, 87, 88, 89, 90, 93, 94, 96, 98, 99, 102, 108, 114, 115, 119, 122, 124, 132, 134, 138, 152, 159, 164, 170, 171, 173, 174, 175, 176, 180, 181, 182, 186, 207, 210, 217, 234, 241, 243, 246, 247, 249, 258, 259, 264, 269, 270, 271, 276, 279, 280, 281, 283, 284, 285, 291, 295, 301, 318, 320, 323, 333, 334, 336, 342, 345, 348, 349, 358, 361], "convert": [0, 1, 10, 40, 48, 55, 60, 71, 74, 79, 98, 114, 117, 122, 142, 146, 170, 173, 181, 258, 315, 329, 350], "transmiss": [0, 5, 22, 35, 37, 39, 46, 49, 57, 65, 72, 76, 84, 85, 87, 90, 91, 94, 99, 102, 103, 104, 107, 115, 119, 127, 130, 131, 132, 134, 136, 137, 138, 139, 162, 168, 169, 174, 182, 189, 207, 210, 215, 216, 217, 218, 219, 220, 228, 229, 233, 238, 239, 243, 246, 247, 257, 267, 268, 269, 270, 275, 276, 279, 280, 281, 283, 286, 290, 292, 293, 295, 301, 302, 319, 320, 322, 323, 325, 329, 330, 332, 333, 334, 350, 352, 358], "introduc": [0, 21, 271, 296, 301, 315, 348], "transmit": [0, 1, 5, 20, 29, 32, 38, 39, 46, 57, 76, 85, 86, 103, 104, 119, 131, 132, 137, 138, 149, 152, 159, 175, 182, 205, 210, 216, 219, 221, 227, 228, 229, 233, 234, 235, 236, 237, 238, 244, 245, 246, 247, 249, 254, 263, 264, 266, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 287, 288, 289, 292, 293, 295, 301, 315, 320, 324, 329, 330, 332, 333, 347, 350, 352, 358, 362], "signal": [0, 1, 5, 6, 10, 12, 20, 21, 32, 33, 38, 55, 57, 74, 76, 86, 87, 88, 94, 96, 103, 104, 117, 119, 132, 138, 142, 146, 152, 159, 181, 184, 185, 188, 189, 193, 203, 204, 205, 206, 210, 226, 229, 230, 232, 233, 234, 244, 245, 246, 247, 248, 249, 250, 251, 254, 260, 268, 269, 270, 271, 272, 273, 275, 276, 277, 280, 281, 283, 285, 289, 291, 294, 296, 315, 320, 322, 323, 324, 326, 329, 330, 332, 334, 335, 336, 337, 339, 346, 350, 352, 358, 361, 362], "model": [0, 1, 6, 10, 15, 18, 19, 21, 55, 74, 96, 117, 142, 146, 203, 204, 295, 296, 299, 301, 318, 320, 327, 328, 329, 330, 331, 338, 339, 340, 341, 342, 343, 344, 345, 352, 358, 361], "numpi": [0, 3, 4, 6, 7, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 44, 48, 49, 55, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 93, 94, 96, 98, 99, 102, 106, 107, 112, 114, 115, 117, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 153, 154, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 188, 189, 193, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 230, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 264, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 358, 359, 360, 362], "matplotlib": [0, 18, 19, 29, 204, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 359, 360, 362], "linear": [0, 5, 16, 184, 188, 203, 204, 269, 270, 271, 275, 276, 291, 294, 301, 302, 315, 323, 326, 329, 330, 332, 334, 349], "algebra": 0, "plot": [0, 10, 14, 18, 19, 55, 74, 117, 142, 146, 202, 204, 206, 273, 285, 287, 288, 289, 291, 294, 301, 302, 310, 318, 319, 324, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 339, 343, 345, 347, 348, 352, 358], "respect": [0, 3, 4, 6, 8, 10, 14, 15, 16, 17, 18, 19, 29, 39, 40, 46, 55, 74, 87, 90, 93, 95, 96, 117, 138, 139, 142, 146, 149, 181, 196, 197, 198, 199, 205, 220, 230, 236, 243, 247, 249, 254, 265, 267, 278, 279, 281, 298, 302, 305, 306, 315, 325, 342, 344, 346], "o": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "environ": [0, 29, 227, 236, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 359, 360, 362], "cuda_visible_devic": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "1": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 14, 15, 17, 18, 19, 22, 24, 25, 26, 27, 28, 30, 32, 34, 35, 36, 37, 38, 42, 44, 48, 49, 51, 53, 58, 59, 60, 62, 64, 67, 69, 71, 72, 77, 78, 79, 81, 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 110, 112, 114, 115, 120, 121, 122, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 143, 145, 148, 149, 153, 154, 158, 163, 164, 165, 167, 170, 171, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 188, 189, 190, 193, 195, 197, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 221, 226, 227, 228, 229, 230, 231, 232, 233, 236, 238, 240, 241, 242, 245, 246, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 306, 307, 308, 309, 310, 315, 318, 319, 320, 322, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 356, 358, 359, 360, 362], "tf_cpp_min_log_level": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 362], "3": [0, 1, 2, 6, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 26, 27, 29, 34, 35, 36, 37, 39, 42, 44, 46, 51, 53, 55, 58, 62, 64, 65, 67, 69, 74, 77, 81, 83, 84, 85, 86, 87, 88, 90, 91, 93, 94, 95, 96, 102, 103, 104, 106, 107, 110, 112, 117, 120, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 153, 158, 163, 164, 165, 167, 168, 175, 176, 179, 181, 182, 183, 184, 185, 188, 189, 190, 196, 197, 198, 199, 206, 207, 209, 211, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 263, 264, 265, 267, 270, 271, 273, 274, 278, 280, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 311, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 359, 360, 362], "np": [0, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 95, 96, 98, 99, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 269, 270, 271, 272, 273, 274, 275, 276, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "widget": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "pyplot": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "plt": [0, 18, 19, 29, 206, 227, 236, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "line": [0, 18, 19, 206, 273, 285, 288, 289, 291, 294, 302, 318, 324, 326, 327, 328, 329, 330, 331, 335, 336, 337, 342, 347, 348, 352, 356, 357, 358, 359], "code": [0, 1, 5, 8, 9, 13, 14, 19, 24, 26, 27, 28, 30, 39, 43, 46, 54, 57, 58, 64, 68, 73, 76, 77, 83, 87, 88, 90, 91, 94, 95, 101, 102, 106, 108, 111, 116, 119, 120, 126, 134, 139, 141, 145, 150, 152, 159, 163, 167, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 214, 217, 218, 219, 220, 240, 262, 264, 266, 275, 276, 278, 280, 281, 282, 283, 285, 291, 294, 296, 299, 301, 318, 320, 325, 327, 328, 329, 330, 331, 332, 337, 338, 340, 341, 342, 343, 344, 348, 350, 352, 353, 356, 357, 358, 359, 361], "disabl": [0, 18, 19, 87, 88, 90, 91, 102, 130, 131, 132, 134, 136, 137, 138, 139, 144, 147, 181, 182, 206, 207, 209, 215, 216, 217, 218, 219, 220, 246, 247, 275, 276, 302, 327, 328, 331, 334, 338, 340, 341, 350], "gpu": [0, 358], "properli": [0, 278, 309], "up": [0, 19, 202, 238, 254, 342], "system": [0, 6, 22, 29, 37, 39, 46, 48, 60, 71, 79, 96, 98, 114, 122, 131, 132, 137, 138, 170, 173, 184, 186, 189, 196, 197, 199, 203, 204, 216, 219, 236, 243, 246, 247, 248, 250, 251, 252, 253, 255, 256, 258, 262, 265, 266, 267, 268, 269, 271, 273, 278, 279, 280, 281, 283, 284, 285, 287, 288, 289, 291, 294, 304, 315, 318, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 333, 334, 339, 346, 349, 352, 358], "work": [0, 14, 204, 268, 276, 279, 285, 327, 333, 358, 359], "well": [0, 19, 28, 186, 238, 268, 269, 315, 319, 327, 342, 358, 361], "remov": [0, 6, 32, 62, 65, 81, 84, 96, 107, 108, 124, 127, 162, 164, 168, 189, 239, 241, 348, 360, 362], "As": [0, 3, 4, 64, 83, 106, 126, 163, 167, 181, 240, 253, 256, 301, 327, 328], "understood": [0, 25, 301, 326, 335, 336], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 44, 46, 55, 58, 59, 64, 65, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 96, 101, 102, 103, 104, 106, 107, 108, 112, 117, 120, 121, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 149, 151, 153, 154, 158, 161, 163, 165, 167, 168, 175, 176, 180, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 250, 252, 253, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 299, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "5": [0, 2, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 24, 25, 26, 27, 28, 29, 39, 42, 44, 46, 49, 51, 53, 55, 58, 59, 67, 69, 72, 74, 77, 78, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 108, 110, 112, 115, 117, 120, 121, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 153, 154, 158, 171, 174, 175, 176, 181, 182, 184, 185, 186, 190, 193, 195, 196, 204, 205, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 244, 245, 246, 247, 248, 249, 250, 251, 254, 259, 262, 263, 264, 265, 266, 267, 269, 271, 273, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 310, 313, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 358, 362], "whole": [0, 294], "correspond": [0, 6, 14, 15, 16, 17, 18, 19, 29, 40, 88, 96, 102, 138, 139, 181, 182, 189, 203, 204, 209, 220, 227, 230, 236, 238, 247, 265, 267, 268, 270, 271, 278, 304, 305, 306, 307, 308, 309, 323, 325, 329, 334, 339, 342, 343, 344, 346], "list": [0, 7, 8, 10, 11, 14, 17, 18, 19, 24, 44, 48, 55, 60, 64, 65, 69, 71, 74, 79, 83, 84, 86, 87, 88, 92, 98, 101, 102, 106, 107, 112, 114, 117, 122, 126, 127, 142, 143, 146, 149, 163, 165, 167, 168, 170, 173, 181, 182, 207, 208, 214, 240, 242, 244, 245, 249, 258, 261, 263, 264, 265, 272, 279, 280, 295, 322, 323, 326, 338, 340, 341, 342, 358, 361], "toolkit5g": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 359, 360, 362], "crcencod": [0, 1, 2, 3, 4, 42, 51, 53, 67, 110, 184, 188, 362], "mapper": [0, 1, 3, 47, 64, 70, 83, 97, 101, 106, 113, 126, 141, 150, 151, 152, 153, 154, 158, 159, 161, 163, 167, 169, 172, 179, 183, 184, 185, 186, 188, 189, 208, 235, 237, 240, 257, 275, 294, 301, 315, 319, 322, 323, 333, 335, 336, 351, 352, 358, 361], "symbolmap": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294, 301, 315, 319, 322, 323, 326, 333, 335, 336, 351, 362], "channelprocess": [0, 21, 22, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351, 362], "addnois": [0, 1, 21, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351, 362], "demapp": [0, 1, 4, 47, 49, 70, 72, 86, 97, 99, 113, 115, 141, 150, 169, 172, 174, 179, 184, 185, 186, 188, 189, 257, 294, 301, 315, 319, 322, 323, 333, 335, 336, 351, 352, 358, 362], "decod": [0, 1, 2, 7, 8, 9, 11, 27, 31, 39, 44, 46, 48, 54, 59, 60, 64, 69, 71, 73, 78, 79, 83, 85, 93, 98, 102, 106, 108, 112, 114, 116, 121, 122, 126, 143, 144, 147, 149, 163, 167, 170, 173, 175, 181, 183, 184, 185, 186, 188, 189, 207, 212, 234, 236, 240, 243, 258, 262, 266, 269, 270, 272, 274, 280, 281, 284, 285, 289, 292, 293, 295, 301, 310, 315, 318, 319, 320, 326, 335, 336, 349, 352, 358], "crcdecod": [0, 1, 2, 3, 42, 51, 53, 67, 110, 188, 362], "directli": [0, 1, 85, 86, 184, 185, 193, 195, 203, 243, 244, 245, 283, 302, 332, 359], "It": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 19, 22, 24, 27, 28, 29, 32, 33, 38, 39, 44, 46, 48, 49, 55, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 154, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 309, 315, 326, 327, 328, 333, 335, 336, 350, 358, 360], "recommend": 0, "alon": [0, 206], "alias": 0, "mandatori": [0, 280], "design": [0, 3, 4, 6, 10, 12, 31, 55, 58, 74, 77, 96, 117, 120, 142, 146, 186, 211, 227, 234, 254, 269, 270, 275, 276, 309, 315, 320, 333, 336, 338, 339, 340, 341, 343, 346, 358, 361], "oper": [0, 57, 76, 95, 102, 119, 139, 186, 207, 210, 220, 268, 269, 270, 283, 285, 320, 348, 356, 359, 360, 362], "per": [0, 3, 4, 6, 14, 18, 19, 24, 48, 49, 60, 71, 72, 79, 85, 86, 87, 88, 90, 91, 94, 95, 96, 98, 99, 101, 102, 103, 104, 114, 115, 122, 130, 131, 132, 136, 137, 138, 139, 170, 171, 173, 174, 181, 182, 184, 185, 207, 208, 215, 216, 218, 219, 220, 228, 229, 230, 231, 232, 235, 236, 237, 238, 246, 247, 248, 251, 253, 256, 258, 259, 267, 271, 276, 278, 281, 285, 287, 288, 289, 291, 294, 299, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "num_bits_per_symbol": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 315, 319, 326, 335, 336, 362], "4": [0, 1, 2, 6, 8, 9, 12, 14, 17, 18, 19, 22, 24, 26, 28, 35, 37, 39, 42, 46, 48, 49, 51, 53, 58, 59, 60, 64, 65, 67, 71, 72, 77, 78, 79, 83, 84, 85, 87, 88, 89, 90, 91, 92, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 114, 115, 120, 121, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 144, 147, 153, 154, 158, 163, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 190, 197, 198, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 269, 271, 272, 273, 274, 275, 278, 285, 287, 288, 289, 291, 294, 302, 304, 306, 307, 308, 309, 310, 312, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "demapping_method": [0, 48, 60, 71, 79, 86, 98, 114, 122, 170, 173, 258, 315, 319, 326, 335, 336, 362], "app": [0, 6, 48, 60, 71, 79, 86, 96, 98, 114, 122, 170, 173, 181, 188, 258, 294, 301, 315, 319, 320, 323, 325, 326, 335, 336, 362], "crctype": [0, 2, 3, 4, 7, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 93, 108, 110, 112, 117, 142, 143, 146, 186, 362], "crc24c": [0, 2, 3, 4, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 110, 112, 117, 142, 143, 146, 362], "qammapp": [0, 362], "qam": [0, 26, 48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 169, 170, 171, 173, 174, 235, 237, 257, 258, 259, 294, 318, 323, 333, 335, 336, 361, 362], "qamdemapp": [0, 362], "constellation_typ": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 315, 319, 326, 335, 336, 362], "hard_out": [0, 6, 48, 60, 71, 79, 86, 96, 98, 114, 122, 144, 147, 170, 173, 258, 294, 301, 315, 319, 322, 323, 326, 335, 336, 351, 362], "true": [0, 3, 5, 6, 10, 11, 12, 17, 18, 19, 21, 22, 44, 48, 55, 60, 69, 71, 74, 79, 86, 88, 96, 98, 103, 104, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 170, 173, 181, 184, 204, 206, 215, 216, 217, 218, 219, 220, 227, 228, 229, 235, 237, 238, 246, 247, 258, 263, 264, 269, 271, 273, 279, 281, 285, 287, 289, 291, 294, 301, 302, 305, 315, 319, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 335, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 362], "24": [0, 2, 3, 4, 8, 10, 29, 39, 42, 46, 51, 53, 55, 67, 74, 93, 110, 117, 142, 146, 184, 189, 228, 231, 234, 244, 245, 254, 262, 266, 278, 301, 304, 305, 315, 320, 323, 325, 327, 328, 329, 330, 331, 332, 337, 338, 348, 362], "16": [0, 2, 3, 4, 8, 24, 29, 42, 49, 51, 53, 62, 67, 72, 81, 87, 92, 93, 99, 101, 102, 110, 115, 124, 130, 131, 132, 134, 136, 137, 138, 139, 164, 171, 174, 181, 182, 186, 202, 203, 205, 207, 208, 215, 216, 217, 218, 219, 220, 227, 228, 231, 234, 236, 241, 244, 245, 246, 247, 249, 259, 265, 278, 291, 294, 304, 306, 307, 308, 309, 310, 315, 318, 320, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 337, 338, 339, 340, 341, 342, 345, 346, 348, 349, 350, 356, 359, 360, 362], "log": [0, 5, 12, 18, 19, 48, 49, 57, 60, 64, 71, 72, 76, 79, 83, 86, 98, 99, 106, 114, 115, 119, 122, 126, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 189, 210, 240, 257, 258, 281, 301, 319, 326, 335, 336, 356, 359, 360], "return": [0, 5, 6, 7, 8, 9, 10, 11, 15, 18, 19, 35, 40, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 102, 112, 114, 115, 117, 122, 134, 139, 142, 143, 144, 146, 147, 148, 149, 170, 171, 173, 174, 175, 176, 181, 182, 186, 189, 193, 195, 196, 198, 202, 204, 206, 207, 209, 235, 236, 237, 244, 245, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 264, 267, 268, 269, 270, 271, 272, 274, 275, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 302, 315, 319, 332, 342, 348], "hard": [0, 5, 6, 10, 11, 12, 24, 44, 48, 49, 55, 60, 64, 69, 71, 72, 74, 79, 83, 86, 96, 98, 99, 101, 102, 106, 112, 114, 115, 117, 122, 126, 142, 143, 144, 146, 147, 149, 163, 167, 169, 170, 173, 174, 207, 208, 240, 257, 258, 315, 319], "0": [0, 1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 24, 27, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 49, 55, 62, 64, 65, 69, 72, 74, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 148, 162, 163, 164, 165, 167, 168, 171, 174, 175, 181, 182, 183, 184, 185, 186, 188, 189, 190, 193, 195, 196, 197, 198, 202, 203, 204, 205, 206, 207, 208, 209, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 278, 280, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 352, 356, 357, 359, 360, 362], "power": [0, 6, 14, 15, 16, 18, 21, 96, 103, 104, 131, 137, 200, 202, 203, 204, 205, 206, 216, 219, 228, 229, 231, 235, 237, 244, 245, 275, 276, 279, 280, 283, 285, 287, 288, 289, 291, 294, 299, 301, 306, 315, 327, 328, 331, 336, 338, 339, 340, 341, 344, 346, 347, 348, 349, 352, 358], "ad": [0, 1, 6, 7, 21, 86, 93, 96, 301, 302, 320, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 345, 348, 350, 358, 362], "frac": [0, 19, 32, 33, 48, 49, 60, 71, 72, 79, 85, 95, 98, 99, 103, 104, 114, 115, 122, 170, 171, 173, 174, 182, 185, 189, 228, 229, 230, 231, 236, 238, 244, 245, 248, 249, 251, 254, 258, 259, 265, 270, 271, 278, 279, 280, 281, 319, 361, 362], "snr": [0, 1, 10, 12, 48, 55, 60, 71, 74, 79, 86, 90, 98, 114, 117, 122, 142, 146, 170, 173, 175, 181, 184, 185, 188, 258, 269, 278, 280, 281, 294, 304, 315, 318, 325, 326, 327, 328, 330, 331, 332, 334, 335, 337, 350, 351, 352, 358], "sequenc": [0, 1, 3, 4, 8, 14, 24, 32, 39, 46, 48, 49, 60, 62, 64, 65, 71, 72, 79, 81, 83, 84, 85, 93, 98, 99, 101, 103, 104, 106, 107, 114, 115, 122, 124, 126, 127, 129, 130, 131, 134, 135, 136, 137, 139, 145, 148, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 208, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 233, 235, 237, 238, 239, 240, 241, 242, 252, 253, 255, 256, 258, 259, 263, 269, 271, 273, 276, 285, 287, 289, 291, 294, 296, 324, 327, 328, 331, 349, 350, 352, 358, 361], "randomli": [0, 19, 64, 65, 83, 84, 87, 106, 107, 126, 127, 163, 165, 167, 168, 206, 235, 240, 242, 260, 261, 262, 263, 264, 265, 266, 267], "randint": [0, 3, 4, 6, 10, 12, 25, 29, 49, 55, 62, 65, 72, 74, 81, 84, 91, 96, 99, 107, 108, 115, 117, 124, 127, 142, 144, 146, 147, 148, 149, 164, 165, 168, 171, 174, 176, 182, 235, 236, 237, 241, 242, 249, 259, 272, 274, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 348, 349, 350, 351, 362], "random": [0, 1, 3, 4, 6, 10, 12, 16, 18, 19, 25, 29, 49, 55, 62, 64, 65, 72, 74, 81, 83, 84, 91, 96, 99, 106, 107, 108, 115, 117, 124, 126, 127, 142, 144, 146, 147, 148, 149, 162, 163, 164, 165, 167, 168, 171, 174, 176, 182, 183, 198, 235, 236, 237, 239, 240, 241, 242, 243, 249, 259, 267, 269, 272, 273, 274, 278, 280, 285, 287, 289, 291, 294, 296, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 345, 348, 349, 350, 351, 358, 361, 362], "numblock": [0, 362], "10000": [0, 196, 198, 206, 318, 333, 345, 352, 358, 362], "nbitsperblock": [0, 362], "384": [0, 244, 333, 362], "crcbit": [0, 3, 4, 362], "e": [0, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 29, 32, 33, 39, 44, 46, 54, 55, 57, 58, 69, 73, 74, 76, 77, 86, 87, 92, 95, 101, 102, 112, 116, 117, 119, 120, 142, 143, 145, 146, 148, 149, 152, 153, 158, 159, 175, 181, 182, 184, 185, 188, 189, 207, 208, 210, 211, 227, 230, 236, 238, 262, 266, 270, 271, 278, 280, 304, 307, 309, 315, 320, 325, 335, 336], "group": [0, 7, 24, 29, 35, 37, 92, 101, 102, 132, 138, 139, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 230, 244, 245, 246, 247, 249, 270, 348, 350], "an": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 24, 25, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 58, 60, 62, 64, 65, 69, 71, 72, 74, 77, 79, 81, 83, 84, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 189, 193, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, 211, 215, 216, 218, 219, 220, 227, 228, 229, 231, 232, 233, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 265, 266, 269, 270, 271, 272, 275, 276, 278, 279, 280, 298, 302, 306, 307, 309, 318, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 339, 342, 343, 346, 348, 349, 350, 351, 356, 358, 359, 360], "70": [0, 267, 301, 304, 308, 309, 329, 330, 331, 335, 337, 342, 348], "ratio": [0, 5, 10, 12, 18, 19, 48, 49, 55, 57, 60, 64, 71, 72, 74, 76, 79, 83, 86, 88, 98, 99, 106, 114, 115, 117, 119, 122, 126, 142, 146, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 188, 189, 210, 240, 257, 258, 269, 280, 281, 319, 325, 326, 332, 335, 336, 337, 349, 350, 352, 358, 362], "rxsymbol": [0, 301, 362], "back": [0, 32, 34, 35, 36, 37, 315], "either": [0, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 22, 24, 29, 39, 44, 46, 48, 60, 64, 69, 71, 79, 83, 87, 88, 89, 92, 93, 94, 95, 96, 98, 101, 102, 106, 112, 114, 122, 126, 130, 131, 132, 136, 137, 138, 139, 143, 148, 163, 167, 170, 173, 176, 181, 182, 188, 189, 206, 207, 208, 215, 216, 218, 219, 220, 227, 235, 236, 238, 240, 244, 245, 246, 247, 249, 254, 258, 264, 265, 267, 278, 279, 280, 281, 325, 327, 328, 330, 331, 350], "llr": [0, 1, 5, 6, 10, 11, 12, 44, 48, 55, 57, 60, 64, 69, 71, 74, 76, 79, 83, 86, 88, 96, 98, 102, 106, 112, 114, 117, 119, 122, 126, 142, 143, 146, 149, 152, 159, 163, 167, 170, 173, 181, 184, 185, 207, 210, 240, 258, 291, 294, 301, 320, 336, 348], "base": [0, 1, 4, 6, 7, 8, 10, 15, 16, 17, 18, 19, 24, 29, 31, 48, 49, 55, 57, 58, 60, 64, 65, 71, 72, 74, 76, 77, 79, 83, 84, 85, 86, 87, 88, 92, 93, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 114, 115, 117, 119, 120, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 144, 145, 146, 147, 149, 163, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 188, 195, 200, 205, 206, 207, 208, 209, 210, 211, 215, 216, 217, 218, 219, 220, 221, 227, 228, 229, 231, 234, 235, 236, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 263, 264, 265, 267, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 282, 283, 284, 286, 287, 290, 292, 293, 295, 296, 299, 301, 305, 306, 307, 309, 318, 319, 320, 325, 334, 336, 338, 339, 340, 341, 342, 344, 346, 348, 349, 352, 358, 361], "bitsest": [0, 362], "complex64": [0, 15, 29, 39, 46, 48, 49, 60, 71, 72, 79, 85, 86, 95, 98, 99, 103, 104, 114, 115, 122, 170, 171, 173, 174, 182, 184, 185, 228, 229, 230, 231, 235, 237, 238, 258, 259, 271, 275, 276, 285, 287, 289, 291, 294, 301, 302, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 348, 349, 351, 362], "variabl": [0, 6, 8, 17, 18, 19, 22, 24, 29, 39, 46, 64, 65, 83, 84, 87, 92, 94, 96, 101, 106, 107, 126, 127, 163, 165, 167, 168, 189, 208, 233, 235, 236, 237, 240, 242, 243, 249, 265, 269, 276, 278, 301, 304, 305, 306, 307, 308, 309, 339, 362], "rbit": [0, 3, 294, 362], "otherwis": [0, 3, 6, 12, 15, 17, 19, 39, 46, 88, 95, 96, 182, 184, 231, 244, 245, 254, 262, 266, 272, 281, 319, 356, 357, 359, 360], "least": [0, 6, 22, 96, 200, 206, 268, 269, 270, 271, 295, 327, 328, 329, 330, 331, 332], "compar": [0, 271, 301, 306, 307, 308, 309, 315, 318, 326, 327, 328, 331, 352, 358, 362], "On": [0, 49, 72, 99, 115, 171, 174, 186, 189, 204, 206, 259, 301, 319, 353], "other": [0, 10, 11, 14, 18, 19, 28, 44, 49, 55, 69, 72, 74, 87, 99, 112, 115, 117, 142, 143, 146, 171, 174, 186, 189, 196, 197, 198, 199, 204, 206, 227, 244, 245, 259, 267, 269, 270, 275, 276, 278, 279, 280, 283, 294, 295, 298, 301, 305, 306, 315, 319, 320, 322, 323, 327, 328, 330, 331, 332, 333, 334, 339, 342, 343, 346, 356, 358, 359, 360, 361, 362], "hand": [0, 49, 72, 99, 115, 171, 174, 186, 189, 204, 206, 259, 301, 319], "flag": [0, 11, 15, 18, 19, 21, 26, 27, 39, 44, 46, 48, 58, 60, 69, 71, 77, 79, 98, 112, 114, 120, 122, 143, 153, 158, 170, 173, 184, 188, 189, 206, 211, 235, 237, 258, 265, 269, 271, 279, 281, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351, 360, 362], "ber": [0, 12, 87, 289, 291, 294, 315, 318, 326, 334, 335, 337, 351, 352, 358], "mean": [0, 18, 19, 29, 269, 270, 271, 285, 291, 294, 301, 315, 319, 320, 322, 323, 324, 326, 332, 333, 334, 335, 336, 339, 342, 343, 345, 346, 348, 349, 350, 351, 362], "ab": [0, 285, 287, 289, 291, 294, 301, 302, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 362], "total": [0, 8, 19, 29, 93, 102, 207, 230, 235, 237, 266, 278, 279, 304, 305, 307, 315, 348, 362], "number": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 34, 35, 36, 37, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 278, 279, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 308, 310, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 358, 362], "bler": [0, 280, 294, 318, 334, 351, 352, 358], "print": [0, 10, 11, 18, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 227, 236, 244, 245, 254, 269, 272, 274, 278, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 343, 348, 349, 350, 351, 362], "str": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 29, 35, 37, 39, 44, 46, 48, 49, 55, 60, 64, 65, 69, 71, 72, 74, 79, 83, 84, 85, 86, 87, 88, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 122, 126, 127, 130, 131, 132, 138, 142, 143, 146, 149, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 195, 205, 206, 207, 209, 215, 216, 227, 228, 229, 230, 231, 233, 236, 238, 240, 242, 244, 245, 246, 247, 249, 254, 258, 259, 262, 263, 264, 266, 267, 269, 270, 271, 272, 273, 274, 275, 276, 278, 289, 291, 294, 301, 302, 304, 305, 306, 307, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 348, 349, 350, 351, 362], "6": [0, 2, 3, 4, 17, 18, 19, 22, 24, 29, 34, 36, 39, 42, 46, 49, 51, 53, 64, 65, 67, 72, 83, 84, 85, 87, 88, 94, 95, 99, 101, 102, 103, 104, 106, 107, 110, 115, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 145, 163, 165, 167, 168, 171, 174, 175, 176, 181, 182, 184, 204, 205, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 229, 230, 231, 233, 234, 236, 238, 240, 242, 244, 245, 246, 247, 248, 249, 251, 254, 259, 262, 263, 264, 265, 266, 267, 270, 271, 273, 276, 278, 285, 287, 288, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 314, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 358, 359, 360, 362], "71875e": 0, "05": [0, 202, 204, 205, 278, 301, 302, 304, 305, 306, 307, 308, 309, 315, 327, 334, 351, 362], "026599999999999957": 0, "practic": [0, 198, 202, 203, 204, 338, 339, 340, 341, 344, 346], "possibl": [0, 132, 138, 196, 204, 205, 214, 236, 246, 247, 249, 254, 260, 261, 262, 263, 264, 265, 266, 267, 278, 279, 301, 305, 324, 325, 327, 328, 358], "known": [0, 203, 204, 268, 269, 270, 271, 272, 273, 275, 276, 285, 322, 323, 324, 327, 328, 329, 331, 334], "howev": [0, 10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 193, 195, 196, 197, 198, 199, 202, 267, 279, 295, 302, 307, 332], "without": [0, 27, 268, 298], "know": [0, 39, 46, 236, 262, 266], "inform": [0, 1, 2, 3, 6, 8, 9, 10, 11, 12, 14, 24, 27, 40, 42, 44, 45, 48, 49, 51, 53, 55, 57, 60, 64, 65, 67, 69, 71, 72, 74, 76, 79, 83, 84, 85, 86, 87, 88, 90, 93, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 119, 122, 126, 127, 131, 132, 137, 138, 142, 143, 146, 148, 149, 152, 159, 162, 163, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 189, 197, 202, 203, 204, 205, 207, 208, 210, 215, 216, 217, 218, 219, 220, 226, 227, 230, 232, 235, 236, 237, 239, 240, 243, 246, 247, 258, 259, 260, 262, 265, 266, 269, 270, 272, 273, 275, 276, 277, 278, 280, 281, 285, 287, 289, 291, 294, 298, 315, 319, 320, 323, 326, 327, 328, 329, 330, 331, 332, 335, 336, 349, 352], "fig": [0, 186, 195, 202, 204, 206, 231, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "ax": [0, 202, 204, 206, 231, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "subplot": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "set_aspect": [0, 302, 324, 327, 328, 330, 332, 339, 342, 343, 349, 362], "scatter": [0, 289, 291, 294, 301, 302, 315, 324, 327, 328, 329, 330, 331, 332, 339, 342, 343, 348, 362], "real": [0, 34, 36, 280, 285, 289, 291, 294, 301, 315, 348, 362], "imag": [0, 285, 289, 291, 294, 348, 362], "color": [0, 19, 206, 273, 285, 287, 288, 289, 291, 294, 301, 302, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 343, 346, 348, 349, 362], "red": [0, 206, 301, 324, 326, 327, 328, 333, 335, 336, 337, 362], "marker": [0, 206, 301, 302, 304, 305, 306, 307, 308, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 337, 349, 351, 362], "": [0, 1, 6, 14, 16, 17, 19, 29, 33, 34, 35, 36, 37, 64, 65, 83, 84, 85, 87, 88, 96, 101, 103, 104, 106, 107, 126, 127, 132, 138, 162, 163, 165, 167, 168, 181, 189, 196, 198, 206, 208, 228, 229, 230, 231, 235, 236, 239, 240, 242, 243, 246, 247, 248, 249, 251, 254, 265, 268, 269, 270, 271, 275, 276, 278, 279, 285, 289, 291, 294, 298, 301, 302, 305, 308, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 339, 340, 341, 342, 344, 346, 348, 351, 352, 358, 361, 362], "set_xlabel": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "part": [0, 24, 39, 46, 89, 101, 102, 130, 131, 132, 134, 136, 137, 138, 144, 147, 180, 184, 186, 189, 207, 208, 215, 216, 217, 218, 219, 227, 230, 236, 246, 247, 262, 266, 270, 285, 294, 301, 315, 322, 323, 334, 358, 362], "mathfrak": [0, 362], "r": [0, 1, 39, 46, 48, 49, 60, 71, 72, 79, 85, 87, 98, 99, 103, 104, 114, 115, 122, 145, 170, 171, 173, 174, 181, 184, 193, 195, 198, 206, 226, 227, 229, 230, 231, 233, 243, 254, 258, 259, 260, 262, 263, 265, 266, 269, 270, 271, 276, 277, 285, 289, 291, 294, 296, 299, 302, 307, 308, 315, 319, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 351, 352, 358, 361, 362], "x": [0, 12, 22, 29, 86, 87, 95, 102, 189, 193, 195, 196, 197, 198, 199, 206, 207, 255, 273, 275, 278, 279, 280, 285, 287, 288, 289, 291, 294, 301, 302, 306, 309, 315, 319, 320, 322, 323, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 362], "set_ylabel": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "imaginari": [0, 285, 301, 362], "set_titl": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "contel": [0, 326, 335, 336, 362], "grid": [0, 1, 19, 22, 29, 32, 33, 34, 35, 36, 37, 39, 46, 85, 86, 103, 104, 130, 136, 184, 185, 186, 189, 204, 215, 218, 226, 228, 229, 230, 231, 232, 233, 238, 243, 254, 255, 256, 262, 265, 266, 267, 269, 270, 271, 272, 273, 274, 275, 276, 279, 286, 288, 290, 292, 293, 295, 296, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 329, 330, 332, 333, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 350, 351, 352, 358, 362], "both": [0, 6, 7, 12, 14, 16, 18, 19, 22, 62, 81, 90, 92, 95, 96, 124, 164, 186, 189, 195, 196, 197, 198, 199, 206, 214, 227, 234, 235, 236, 237, 241, 249, 255, 256, 270, 273, 294, 305, 315, 319, 325, 327, 328, 331, 334, 336, 338, 339, 340, 341, 342, 343, 344, 346, 351, 361, 362], "show": [0, 18, 19, 29, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 356, 357, 359, 360, 362], "abov": [0, 19, 33, 39, 46, 95, 195, 196, 197, 198, 199, 206, 238, 278, 280, 289, 295, 301, 306, 348], "procedur": [0, 1, 6, 7, 12, 29, 94, 96, 102, 130, 131, 132, 134, 136, 137, 138, 139, 141, 175, 176, 186, 188, 206, 207, 215, 216, 217, 218, 219, 220, 236, 244, 245, 246, 247, 260, 278, 285, 289, 291, 299, 327, 329, 330, 332, 338, 339, 340, 341, 342, 343, 344, 346, 348, 352, 356, 358, 359, 361], "repeat": [0, 3, 29, 102, 207, 236, 279, 285, 287, 289, 291, 294, 302, 318, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 334, 342, 349, 351, 358], "differ": [0, 2, 6, 14, 15, 17, 19, 23, 31, 42, 51, 53, 57, 62, 64, 65, 67, 76, 81, 83, 84, 87, 96, 102, 106, 107, 110, 119, 124, 126, 127, 162, 163, 164, 165, 167, 168, 190, 195, 197, 198, 200, 203, 206, 207, 209, 210, 226, 235, 236, 237, 239, 240, 241, 242, 249, 268, 275, 276, 278, 283, 284, 301, 306, 307, 310, 315, 318, 320, 325, 326, 327, 328, 330, 331, 332, 335, 337, 338, 339, 340, 341, 342, 344, 346, 349, 350, 352, 358, 362], "order": [0, 2, 24, 26, 39, 42, 46, 48, 49, 51, 53, 58, 60, 67, 71, 72, 77, 79, 85, 86, 87, 88, 94, 98, 99, 101, 102, 110, 114, 115, 120, 122, 131, 137, 144, 147, 170, 171, 173, 174, 175, 176, 182, 204, 207, 208, 209, 211, 214, 216, 219, 227, 258, 259, 262, 264, 266, 269, 271, 275, 276, 281, 294, 301, 324, 334, 338, 340, 341, 344, 362], "analys": 0, "v": [0, 12, 29, 244, 284, 285, 288, 289, 291, 294, 302, 305, 306, 308, 310, 315, 318, 326, 327, 328, 329, 330, 332, 334, 335, 337, 349, 350, 351, 352, 356, 357, 358, 359], "snrdb": [0, 280, 281, 301, 319, 320, 322, 323, 325, 326, 335, 336, 337, 349, 350, 351, 362], "linspac": [0, 301, 302, 305, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 348, 349, 350, 351, 362], "25": [0, 10, 15, 18, 19, 55, 74, 117, 142, 145, 146, 189, 202, 250, 255, 256, 267, 301, 302, 304, 307, 309, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 336, 337, 338, 339, 342, 344, 346, 348, 349, 351, 362], "10": [0, 2, 6, 14, 15, 18, 19, 24, 25, 29, 39, 42, 46, 49, 51, 53, 67, 72, 85, 87, 88, 90, 91, 94, 96, 99, 101, 102, 103, 104, 110, 115, 130, 131, 132, 136, 137, 138, 144, 145, 147, 171, 174, 181, 182, 184, 189, 196, 198, 199, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 245, 246, 247, 248, 249, 251, 254, 259, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 278, 279, 280, 281, 284, 285, 287, 288, 289, 291, 294, 301, 302, 303, 304, 305, 306, 307, 308, 310, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 359, 362], "modord": [0, 11, 23, 24, 44, 48, 49, 60, 69, 71, 72, 79, 85, 86, 88, 98, 99, 100, 101, 102, 112, 114, 115, 122, 143, 144, 147, 149, 170, 171, 173, 174, 175, 176, 182, 186, 207, 208, 209, 258, 259, 271, 294, 301, 322, 323, 333, 336, 351, 362], "arrai": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 49, 55, 57, 58, 59, 62, 64, 65, 69, 72, 74, 76, 77, 78, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 99, 102, 106, 107, 112, 115, 117, 119, 120, 121, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 264, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 287, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 336, 347, 348, 349, 350, 351, 352, 358, 362], "dtype": [0, 3, 4, 6, 10, 12, 14, 18, 19, 29, 48, 49, 55, 60, 71, 72, 74, 79, 91, 96, 98, 99, 108, 114, 115, 117, 122, 142, 146, 170, 171, 173, 174, 182, 227, 236, 249, 258, 259, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 336, 339, 342, 343, 344, 348, 349, 351, 362], "int32": [0, 12, 289, 294, 302, 329, 330, 332, 333, 335, 349, 362], "zero": [0, 6, 7, 8, 9, 11, 12, 14, 18, 19, 29, 44, 57, 69, 76, 93, 96, 102, 112, 119, 138, 143, 148, 152, 159, 193, 195, 203, 205, 207, 210, 217, 218, 219, 220, 238, 247, 269, 270, 271, 278, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 348, 349, 350, 351, 362], "j": [0, 33, 199, 284, 301, 315, 333, 362], "m": [0, 5, 6, 14, 17, 18, 96, 196, 198, 206, 244, 245, 252, 253, 254, 265, 302, 304, 305, 306, 307, 308, 315, 318, 319, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 338, 339, 340, 341, 342, 343, 344, 345, 349, 358, 361, 362], "int": [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 193, 195, 196, 198, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 304, 305, 306, 307, 308, 309, 315, 320, 323, 324, 325, 327, 328, 331, 333, 334, 336, 342, 348, 349, 350, 362], "float32": [0, 6, 7, 8, 10, 11, 12, 14, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 88, 92, 93, 96, 98, 99, 102, 108, 112, 114, 115, 117, 122, 142, 143, 146, 148, 149, 170, 171, 173, 174, 181, 182, 207, 258, 259, 285, 301, 315, 319, 323, 324, 326, 331, 335, 336, 339, 342, 343, 344, 349, 362], "For": [0, 6, 14, 15, 18, 19, 29, 32, 35, 37, 39, 46, 49, 64, 65, 72, 83, 84, 87, 94, 95, 96, 99, 103, 104, 106, 107, 115, 126, 127, 145, 162, 163, 165, 167, 168, 171, 174, 184, 196, 197, 198, 199, 202, 203, 204, 205, 206, 227, 228, 229, 231, 236, 238, 239, 240, 242, 249, 254, 259, 262, 265, 266, 267, 268, 269, 270, 273, 275, 276, 278, 280, 294, 295, 301, 304, 305, 307, 308, 309, 315, 319, 322, 323, 325, 326, 335, 336, 339, 342, 343, 344, 346, 351, 352, 356, 357, 358, 359, 360, 362], "arang": [0, 14, 29, 273, 278, 285, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 332, 333, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351, 362], "semilogi": [0, 301, 315, 319, 320, 322, 323, 326, 335, 336, 337, 349, 350, 351, 362], "db": [0, 14, 18, 19, 281, 285, 287, 288, 289, 291, 294, 302, 315, 318, 319, 320, 322, 323, 324, 326, 335, 336, 337, 339, 342, 343, 345, 346, 349, 350, 351, 362], "set_xtick": [0, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 343, 349, 351, 362], "minor": [0, 285, 287, 289, 291, 294, 302, 305, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 346, 348, 349, 351, 362], "fals": [0, 3, 5, 6, 10, 11, 12, 15, 17, 18, 19, 21, 22, 27, 44, 48, 55, 60, 69, 71, 74, 79, 86, 87, 88, 90, 96, 98, 102, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 170, 173, 181, 182, 184, 207, 209, 215, 216, 217, 218, 219, 220, 227, 237, 238, 246, 247, 258, 269, 271, 278, 279, 281, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 339, 342, 343, 345, 346, 348, 349, 350, 351, 362], "legend": [0, 206, 273, 285, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 350, 351, 362], "qpsk": [0, 58, 77, 85, 86, 120, 184, 185, 211, 289, 291, 294, 320, 325, 335, 336, 348, 362], "16qam": [0, 362], "64qam": [0, 362], "download": [0, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 315, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 352, 356, 357, 359, 360, 362], "find": [0, 22, 39, 46, 184, 196, 204, 236, 252, 253, 262, 266, 304, 333, 345, 348, 356, 357, 359, 362], "advanc": [0, 198, 268, 275, 276, 329, 331, 346], "thank": [0, 327, 328, 331], "read": [0, 26, 202, 204, 205, 227, 238, 269, 270, 273, 275, 276, 327, 328, 331], "feel": [0, 358], "free": [0, 3, 29, 358], "contact": [0, 295, 358], "assist": [0, 280, 295, 352, 361], "post": [0, 6, 21, 96, 280, 353, 354, 358], "question": [0, 358], "discuss": [0, 1, 8, 10, 55, 74, 93, 117, 142, 146, 149, 195, 200, 205, 214, 262, 266, 301, 333, 358], "forum": [0, 358], "answer": [0, 358], "soon": [0, 269, 358], "wide": [1, 333], "rang": [1, 6, 14, 18, 19, 29, 39, 46, 96, 132, 134, 138, 139, 184, 217, 220, 236, 238, 246, 247, 248, 249, 251, 262, 266, 267, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 344, 348, 349, 351], "usecas": 1, "featur": [1, 14, 19, 186, 243, 280, 338, 339, 340, 341, 346], "them": [1, 6, 40, 87, 96, 204, 206, 275, 276, 360, 362], "captur": [1, 18, 19, 276, 278, 281, 294, 322, 323, 332, 351], "via": [1, 12, 102, 193, 203, 207, 294, 322, 323, 351, 361], "gener": [1, 2, 3, 4, 9, 10, 12, 14, 16, 19, 29, 32, 34, 35, 36, 37, 42, 45, 48, 49, 51, 53, 55, 60, 62, 64, 65, 67, 71, 72, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 91, 98, 99, 102, 103, 104, 106, 107, 108, 110, 114, 115, 117, 122, 124, 126, 127, 129, 130, 131, 134, 135, 136, 137, 139, 142, 146, 148, 149, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 180, 182, 184, 185, 189, 190, 196, 198, 209, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 236, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 272, 275, 276, 286, 290, 292, 293, 295, 299, 315, 318, 319, 325, 326, 333, 335, 336, 346, 347, 350, 352, 358, 361], "all": [1, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 23, 27, 31, 39, 44, 46, 55, 65, 69, 74, 84, 85, 92, 93, 96, 103, 104, 107, 112, 117, 127, 142, 143, 146, 148, 149, 162, 168, 185, 195, 196, 197, 198, 199, 202, 214, 228, 229, 235, 236, 237, 238, 239, 243, 244, 249, 250, 253, 256, 267, 269, 273, 278, 279, 280, 281, 283, 285, 295, 298, 299, 301, 302, 308, 315, 318, 327, 328, 335, 338, 339, 340, 341, 342, 343, 344, 348, 352, 356, 357, 358, 359, 360, 361, 362], "varieti": [1, 358], "channel": [1, 4, 6, 8, 11, 12, 13, 17, 19, 23, 28, 29, 31, 32, 38, 39, 44, 46, 48, 49, 57, 60, 62, 64, 65, 69, 71, 72, 76, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 106, 107, 112, 114, 115, 119, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 143, 148, 149, 150, 151, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 179, 180, 181, 182, 193, 195, 202, 203, 204, 205, 207, 208, 210, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 231, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 263, 264, 265, 266, 268, 272, 277, 278, 279, 280, 281, 283, 284, 289, 292, 294, 295, 296, 299, 301, 304, 305, 306, 307, 308, 309, 318, 319, 326, 336, 345, 350, 352, 353, 358, 361], "state": [1, 6, 18, 19, 48, 49, 60, 71, 72, 79, 96, 98, 99, 114, 115, 122, 170, 171, 173, 174, 195, 202, 203, 204, 205, 226, 243, 258, 259, 260, 265, 275, 276, 280, 281, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351, 358], "acquisit": [1, 243, 254], "posit": [1, 6, 12, 14, 15, 17, 18, 19, 29, 34, 35, 36, 37, 39, 46, 57, 76, 88, 94, 96, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 152, 159, 181, 182, 184, 192, 193, 194, 195, 200, 202, 203, 204, 205, 207, 209, 210, 215, 216, 217, 218, 219, 220, 226, 227, 228, 230, 236, 238, 243, 244, 245, 246, 247, 248, 249, 250, 254, 262, 264, 265, 266, 269, 270, 275, 277, 278, 279, 284, 296, 299, 315, 318, 342, 343, 348, 352, 358, 361], "etc": [1, 6, 16, 87, 96, 193, 195, 202, 203, 204, 205, 243, 264, 267, 282, 283, 309], "resourc": [1, 24, 29, 32, 33, 34, 35, 36, 37, 39, 46, 57, 76, 85, 86, 87, 88, 89, 90, 91, 94, 101, 102, 103, 104, 119, 129, 132, 134, 135, 138, 139, 179, 180, 181, 182, 184, 186, 189, 207, 208, 210, 217, 220, 221, 222, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 247, 251, 254, 260, 262, 264, 265, 266, 267, 270, 271, 273, 275, 276, 278, 279, 281, 283, 285, 287, 288, 289, 291, 293, 295, 296, 299, 301, 302, 320, 322, 323, 329, 330, 331, 332, 346, 349, 350, 351, 352, 358, 361], "map": [1, 24, 29, 34, 36, 37, 47, 48, 60, 70, 71, 79, 85, 86, 95, 97, 98, 101, 103, 104, 113, 114, 122, 129, 134, 135, 141, 150, 170, 171, 172, 173, 175, 176, 179, 181, 182, 184, 185, 186, 188, 189, 208, 217, 221, 222, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 243, 244, 245, 258, 259, 263, 264, 266, 270, 271, 285, 287, 289, 291, 294, 296, 315, 318, 319, 320, 322, 323, 325, 326, 327, 328, 333, 350, 351, 352, 358, 361, 362], "variou": [1, 10, 12, 55, 74, 117, 142, 146, 243, 254, 260, 268, 270, 275, 276, 277, 283, 295, 320, 326, 331, 332, 333], "physic": [1, 2, 4, 6, 7, 8, 10, 11, 12, 29, 33, 38, 39, 42, 44, 46, 49, 51, 53, 55, 62, 64, 65, 67, 69, 72, 74, 81, 83, 84, 89, 91, 92, 93, 94, 95, 96, 99, 106, 107, 110, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 145, 146, 148, 149, 162, 163, 164, 165, 167, 168, 169, 171, 174, 179, 180, 181, 182, 215, 216, 217, 218, 219, 220, 226, 227, 228, 231, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 269, 270, 271, 272, 273, 274, 278, 280, 283, 289, 291, 294, 296, 301, 304, 305, 306, 307, 308, 309, 315, 322, 323, 335, 339, 348, 350, 352, 358, 361], "payload": [1, 2, 3, 6, 10, 11, 12, 25, 38, 42, 44, 51, 53, 55, 57, 62, 64, 65, 67, 69, 74, 76, 81, 83, 84, 86, 95, 96, 102, 106, 107, 110, 112, 117, 119, 124, 126, 127, 142, 143, 144, 145, 146, 147, 148, 163, 164, 165, 167, 168, 175, 176, 184, 185, 188, 189, 207, 210, 226, 227, 230, 232, 234, 235, 237, 240, 241, 242, 262, 266, 272, 289, 291, 315, 319, 320, 323, 325, 326, 335, 336, 352, 358], "frequenc": [1, 14, 15, 16, 18, 19, 21, 22, 24, 29, 32, 33, 38, 39, 46, 57, 76, 86, 94, 101, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 184, 196, 202, 203, 204, 205, 207, 208, 210, 215, 216, 217, 218, 219, 220, 227, 228, 230, 233, 238, 243, 246, 247, 249, 252, 253, 255, 256, 260, 262, 265, 266, 269, 270, 271, 272, 273, 275, 276, 277, 279, 281, 283, 286, 289, 291, 294, 295, 299, 302, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 334, 342, 343, 345, 346, 347, 348, 350, 351, 352, 358, 361], "ofdm": [1, 15, 18, 22, 24, 31, 34, 35, 36, 37, 86, 101, 102, 130, 131, 132, 136, 137, 138, 139, 186, 189, 193, 195, 202, 203, 204, 205, 207, 208, 215, 216, 218, 219, 220, 226, 227, 228, 230, 231, 234, 235, 236, 237, 243, 246, 247, 248, 249, 251, 254, 260, 267, 268, 269, 270, 271, 273, 275, 278, 279, 281, 285, 287, 288, 290, 292, 294, 295, 296, 301, 302, 320, 322, 323, 325, 329, 330, 332, 334, 347, 350, 351, 352, 358, 361], "uplink": [1, 6, 10, 11, 23, 26, 44, 55, 65, 69, 74, 84, 95, 96, 107, 112, 117, 127, 132, 142, 143, 145, 146, 162, 168, 180, 181, 182, 183, 206, 226, 239, 244, 246, 249, 254, 265, 277, 318, 348, 352, 358, 361], "downlink": [1, 6, 10, 11, 12, 15, 23, 27, 29, 40, 44, 55, 58, 65, 69, 74, 77, 84, 85, 86, 87, 88, 89, 95, 96, 102, 107, 112, 117, 120, 127, 142, 143, 146, 162, 168, 180, 183, 191, 206, 207, 211, 226, 231, 234, 236, 239, 248, 249, 251, 260, 261, 263, 264, 265, 270, 271, 272, 274, 277, 278, 286, 290, 295, 301, 304, 305, 306, 307, 308, 309, 318, 335, 348, 349, 352, 358, 361], "control": [1, 2, 10, 11, 12, 39, 40, 42, 44, 46, 51, 53, 55, 57, 58, 67, 69, 74, 76, 77, 102, 103, 104, 110, 112, 117, 119, 120, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 152, 159, 183, 184, 186, 191, 207, 210, 211, 214, 215, 216, 217, 218, 219, 220, 226, 229, 233, 236, 243, 244, 245, 246, 247, 249, 260, 262, 266, 270, 275, 278, 280, 281, 283, 285, 296, 304, 305, 306, 307, 308, 309, 325, 326, 335, 348, 349, 350, 352, 358, 361, 362], "share": [1, 2, 6, 42, 51, 53, 67, 85, 86, 87, 88, 89, 95, 96, 110, 180, 181, 182, 183, 226, 234, 238, 243, 249, 260, 262, 263, 264, 266, 271, 279, 296, 301, 336, 349, 352, 356, 358, 359, 360, 361], "broadcast": [1, 10, 39, 46, 55, 58, 62, 74, 77, 81, 117, 120, 124, 142, 146, 164, 183, 211, 241, 243, 249, 262, 266, 269, 272, 296, 335, 348, 352, 358, 361], "mib": [1, 25, 40, 45, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242, 262, 266, 285, 287, 289, 291, 294, 335, 348, 352, 358], "dci": [1, 40, 62, 81, 102, 124, 164, 185, 207, 227, 236, 241, 278, 283, 325, 335, 349, 358], "forward": [1, 6, 7, 12, 20, 22, 93, 96, 149, 153, 154, 155, 156, 158, 159, 214, 335, 336, 358, 361], "error": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 20, 21, 22, 24, 25, 26, 27, 28, 34, 35, 36, 37, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 143, 146, 148, 149, 152, 153, 154, 155, 156, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 214, 228, 229, 230, 231, 232, 233, 235, 237, 238, 240, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 283, 294, 318, 319, 320, 322, 323, 326, 335, 336, 337, 348, 350, 351, 352, 356, 357, 358, 359, 361], "correct": [1, 5, 6, 7, 10, 11, 12, 20, 22, 44, 55, 69, 74, 93, 96, 101, 112, 117, 142, 143, 146, 149, 153, 154, 155, 156, 158, 159, 208, 214, 294, 319, 320, 335, 336, 358, 361, 362], "polar": [1, 6, 11, 13, 14, 18, 23, 26, 27, 28, 29, 44, 56, 64, 69, 75, 83, 96, 106, 112, 118, 126, 141, 143, 145, 148, 149, 150, 156, 157, 163, 167, 176, 179, 183, 184, 185, 188, 189, 214, 240, 302, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 352, 358, 361], "codec": [1, 8, 9, 12, 23, 26, 28, 54, 58, 59, 73, 77, 78, 88, 93, 102, 116, 120, 121, 149, 153, 154, 158, 184, 185, 186, 188, 189, 207, 211, 212, 214, 336], "ldpc": [1, 7, 8, 11, 23, 24, 44, 69, 87, 88, 92, 93, 94, 100, 112, 143, 148, 181, 182, 186, 214, 264, 301, 318, 337, 352, 358, 361], "reed": [1, 5, 13, 318, 335, 336, 352, 358, 361], "muller": [1, 5, 13, 318, 335, 336, 352, 358, 361], "rate": [1, 6, 7, 8, 9, 10, 11, 12, 24, 26, 27, 28, 44, 55, 57, 58, 59, 69, 74, 76, 77, 78, 87, 88, 90, 91, 92, 93, 94, 95, 96, 101, 112, 117, 119, 120, 121, 141, 142, 143, 145, 146, 148, 149, 150, 152, 153, 154, 158, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 196, 198, 206, 207, 208, 210, 211, 212, 260, 264, 267, 271, 280, 281, 282, 283, 285, 287, 288, 289, 291, 294, 296, 318, 319, 320, 322, 323, 326, 335, 337, 350, 351, 352, 358, 361, 362], "match": [1, 6, 7, 8, 10, 11, 19, 24, 39, 44, 46, 55, 57, 69, 74, 76, 85, 87, 88, 90, 91, 92, 93, 95, 96, 101, 112, 117, 119, 141, 142, 143, 145, 146, 148, 149, 150, 152, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 199, 206, 207, 208, 210, 238, 263, 264, 271, 280, 281, 296, 301, 315, 319, 335, 336, 358, 361], "interleav": [1, 8, 10, 92, 95, 100, 102, 141, 142, 150, 155, 157, 160, 181, 182, 183, 184, 185, 186, 188, 189, 207, 209, 213, 214, 227, 230, 270, 296, 320, 325, 336, 358, 361], "present": [1, 236, 348], "deinterleav": [1, 10, 23, 43, 68, 111, 142, 181, 184, 185, 188, 189, 336], "avail": [1, 10, 17, 55, 74, 87, 88, 94, 117, 131, 132, 137, 138, 142, 146, 181, 182, 202, 203, 205, 216, 219, 227, 236, 244, 245, 246, 247, 264, 267, 270, 278, 279, 281, 283, 285, 295, 301, 304, 305, 306, 307, 308, 309, 327, 328, 331, 333, 358, 362], "chain": [1, 2, 8, 10, 23, 25, 27, 40, 42, 51, 53, 55, 62, 65, 67, 74, 81, 84, 92, 107, 110, 117, 124, 127, 141, 142, 146, 148, 162, 164, 168, 179, 183, 184, 185, 186, 189, 196, 214, 239, 241, 260, 264, 291, 294, 301, 322, 323, 325, 348, 349, 358, 361], "orthogon": [1, 134, 139, 203, 204, 217, 218, 219, 220, 228, 254, 299, 333, 358], "divis": [1, 228, 333, 358], "multiplex": [1, 139, 220, 228, 234, 281, 333, 358], "demodul": [1, 7, 31, 34, 35, 36, 37, 48, 60, 71, 79, 87, 88, 92, 94, 98, 103, 104, 114, 122, 170, 173, 175, 181, 189, 229, 230, 232, 233, 234, 235, 237, 243, 258, 268, 271, 289, 292, 294, 295, 296, 301, 352, 358], "process": [1, 5, 6, 9, 10, 12, 21, 22, 40, 43, 49, 57, 62, 64, 65, 68, 72, 76, 81, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 99, 106, 107, 111, 115, 119, 124, 126, 127, 141, 142, 149, 152, 159, 162, 163, 164, 167, 168, 169, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 188, 189, 210, 239, 240, 241, 257, 264, 268, 269, 270, 271, 275, 276, 277, 279, 280, 285, 294, 295, 320, 322, 323, 329, 331, 332, 334, 336, 346, 352, 356, 357, 358, 359, 360], "pass": [1, 3, 4, 6, 7, 8, 10, 11, 14, 15, 17, 18, 19, 21, 22, 26, 27, 28, 29, 40, 44, 48, 49, 55, 58, 59, 60, 64, 65, 69, 71, 72, 74, 77, 78, 79, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 121, 122, 126, 127, 134, 142, 143, 146, 149, 153, 154, 158, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 198, 206, 209, 211, 212, 217, 228, 229, 231, 236, 238, 240, 242, 244, 245, 248, 250, 251, 252, 253, 256, 258, 259, 260, 264, 267, 269, 270, 280, 294, 302, 322, 323, 326, 329, 330, 332, 335, 336, 339, 342, 343, 346, 350, 352, 358, 362], "though": [1, 22, 322, 323], "domain": [1, 15, 16, 22, 32, 33, 39, 46, 184, 202, 203, 204, 205, 227, 230, 231, 238, 262, 265, 266, 268, 269, 270, 273, 275, 276, 286, 288, 289, 291, 294, 295, 299, 320, 325, 347, 348, 350, 352, 358], "symbol": [1, 4, 7, 24, 31, 32, 33, 34, 35, 36, 37, 38, 47, 48, 60, 64, 70, 71, 79, 83, 85, 86, 87, 88, 90, 91, 92, 94, 95, 97, 98, 101, 103, 104, 106, 113, 114, 122, 126, 130, 131, 132, 134, 136, 137, 138, 139, 141, 150, 163, 167, 170, 171, 172, 173, 175, 176, 179, 181, 182, 184, 185, 186, 188, 189, 208, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 240, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 258, 259, 264, 265, 267, 268, 273, 275, 277, 278, 279, 280, 285, 287, 289, 292, 294, 295, 296, 298, 315, 318, 319, 320, 323, 324, 325, 326, 327, 328, 329, 331, 333, 334, 339, 346, 349, 350, 351, 352, 358, 361], "demap": [1, 6, 48, 60, 71, 79, 86, 95, 96, 98, 114, 122, 170, 173, 181, 184, 185, 188, 258, 294, 315, 318, 319, 323, 326, 329, 335, 336, 358, 361], "bit": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 20, 22, 23, 25, 26, 28, 38, 39, 40, 42, 46, 48, 49, 51, 53, 55, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 88, 91, 92, 93, 95, 96, 98, 99, 100, 106, 107, 108, 110, 114, 115, 117, 120, 121, 122, 124, 126, 127, 141, 142, 145, 146, 148, 149, 150, 153, 154, 155, 156, 157, 158, 160, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 186, 188, 189, 209, 211, 212, 213, 214, 221, 227, 230, 235, 236, 237, 238, 239, 240, 241, 242, 249, 257, 258, 259, 262, 266, 270, 271, 272, 294, 315, 318, 319, 320, 322, 323, 325, 326, 333, 335, 336, 337, 348, 349, 350, 351, 356, 357, 358, 359], "recov": [1, 10, 11, 32, 34, 35, 36, 37, 44, 49, 55, 65, 69, 72, 74, 84, 99, 102, 107, 112, 115, 117, 127, 142, 143, 146, 162, 168, 169, 174, 184, 207, 239, 257, 269, 270, 320], "scrambl": [1, 62, 64, 81, 83, 85, 86, 106, 124, 126, 141, 150, 163, 164, 165, 167, 175, 176, 179, 183, 184, 185, 186, 188, 189, 240, 241, 242, 248, 249, 320, 358], "complaint": [1, 6, 10, 11, 12, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149, 267, 358, 361], "scrambler": [1, 62, 63, 64, 81, 82, 83, 105, 106, 124, 125, 126, 141, 150, 162, 163, 164, 166, 167, 179, 184, 185, 186, 188, 189, 239, 240, 241, 294, 296, 323, 358, 361], "descrambl": [1, 48, 60, 63, 65, 71, 79, 82, 84, 86, 98, 105, 107, 114, 122, 125, 127, 141, 150, 162, 166, 168, 170, 173, 175, 179, 184, 185, 186, 188, 189, 239, 258, 294, 323, 358], "undo": [1, 11, 26, 27, 28, 35, 44, 58, 59, 64, 65, 69, 77, 78, 83, 84, 106, 107, 112, 120, 121, 126, 127, 143, 153, 154, 158, 162, 163, 167, 168, 211, 212, 239, 240], "encod": [1, 2, 3, 5, 7, 8, 9, 11, 25, 27, 28, 39, 44, 46, 54, 57, 59, 69, 73, 76, 78, 85, 87, 88, 93, 102, 112, 116, 119, 121, 143, 145, 148, 149, 152, 159, 181, 182, 184, 185, 186, 188, 189, 207, 209, 210, 212, 213, 262, 264, 266, 289, 315, 319, 326, 335, 336, 358], "polynomi": [1, 2, 3, 4, 42, 51, 53, 67, 110, 269, 275, 276], "algorithm": [1, 5, 29, 144, 145, 147, 175, 176, 181, 182, 196, 197, 198, 204, 205, 206, 227, 268, 275, 276, 279, 299, 315, 329, 331, 346, 358], "delai": [1, 16, 18, 19, 27, 192, 193, 194, 198, 202, 203, 204, 206, 231, 243, 283, 302, 320, 327, 328, 329, 330, 331, 338, 340, 341, 342, 343, 344, 347, 352, 358], "estim": [1, 5, 6, 10, 11, 12, 29, 32, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 86, 88, 96, 98, 99, 112, 114, 115, 117, 122, 142, 143, 146, 149, 169, 170, 173, 174, 175, 181, 189, 192, 200, 202, 243, 248, 249, 251, 257, 258, 273, 274, 277, 280, 281, 284, 285, 289, 292, 294, 295, 299, 301, 315, 318, 346, 347, 349, 352, 358, 361], "primari": [1, 235, 237, 243, 273, 275, 276, 279, 285, 289, 291, 352, 358], "synchron": [1, 38, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 203, 204, 226, 240, 242, 243, 249, 262, 266, 268, 269, 272, 274, 277, 290, 293, 295, 296, 318, 324, 329, 352, 358, 361], "pss": [1, 235, 237, 243, 250, 252, 255, 256, 268, 277, 290, 292, 293, 295, 302, 324, 331, 332, 349, 352, 358, 361], "secondari": [1, 235, 237, 243, 249, 289, 291, 324, 352, 358], "sss": [1, 38, 235, 237, 243, 248, 249, 250, 251, 254, 255, 273, 277, 285, 287, 288, 289, 291, 294, 324, 349, 352, 358, 361], "refer": [1, 4, 6, 8, 10, 11, 12, 15, 18, 19, 23, 29, 38, 39, 44, 46, 48, 55, 60, 62, 65, 69, 71, 74, 79, 81, 84, 87, 88, 93, 94, 96, 98, 102, 103, 104, 107, 112, 114, 117, 122, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 164, 165, 168, 170, 173, 175, 181, 182, 184, 185, 186, 188, 189, 196, 197, 198, 199, 206, 207, 209, 215, 216, 217, 218, 219, 220, 226, 227, 229, 230, 232, 233, 234, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 250, 252, 253, 255, 256, 258, 260, 264, 268, 269, 270, 271, 275, 276, 278, 280, 281, 289, 291, 296, 310, 318, 322, 323, 329, 330, 332, 334, 339, 346, 352, 358, 361], "dmr": [1, 39, 46, 64, 65, 83, 84, 85, 87, 88, 90, 94, 102, 106, 107, 126, 127, 163, 165, 167, 168, 181, 182, 183, 184, 185, 186, 189, 207, 226, 230, 232, 233, 234, 235, 237, 240, 242, 243, 260, 262, 263, 264, 266, 269, 271, 272, 285, 287, 288, 289, 291, 294, 299, 301, 320, 324, 325, 349, 352, 358, 361], "pr": [1, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 206, 226, 243, 248, 258, 259, 327, 328, 330, 331, 348, 358, 361], "csi": [1, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 193, 195, 202, 205, 226, 231, 243, 254, 258, 259, 260, 276, 277, 280, 281, 296, 299, 302, 332, 352, 358, 361], "csir": [1, 248, 334], "sound": [1, 243, 260, 296, 329, 330, 332, 358, 361], "sr": [1, 132, 243, 244, 245, 246, 260, 277, 296, 299, 318, 350, 352, 358, 361], "pseudo": [1, 243, 358], "pn": [1, 243, 248, 249, 251, 338, 340, 341, 344, 358], "pnsequenc": [1, 250], "pucch": [1, 2, 10, 11, 26, 37, 42, 44, 51, 53, 55, 67, 69, 74, 110, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 146, 149, 163, 165, 167, 168, 183, 226, 236, 243, 296, 352, 358, 361], "format": [1, 8, 11, 37, 44, 48, 60, 62, 69, 71, 79, 81, 93, 98, 112, 114, 122, 124, 130, 131, 132, 134, 136, 137, 138, 139, 143, 149, 164, 170, 173, 175, 176, 179, 183, 190, 226, 236, 241, 243, 258, 278, 289, 327, 333, 352, 358, 362], "pucchformat0sequ": [1, 129, 132, 179, 215, 216, 246], "pucchformat1sequ": [1, 135, 138, 179, 217, 218, 219, 220, 247], "low": [1, 8, 10, 11, 13, 18, 19, 44, 55, 58, 69, 74, 77, 93, 102, 103, 104, 112, 117, 120, 130, 131, 132, 138, 142, 143, 146, 149, 183, 186, 196, 198, 204, 207, 211, 215, 216, 228, 229, 230, 231, 232, 233, 235, 237, 238, 243, 246, 247, 278, 279, 280, 294, 296, 301, 304, 307, 335, 338, 340, 341, 344, 346, 352, 358, 361], "papr": [1, 37, 103, 104, 130, 131, 132, 138, 215, 216, 228, 229, 230, 231, 232, 233, 235, 237, 238, 243, 246, 247, 296, 352, 358], "lowpaprsequencetype1": [1, 244, 245], "lowpaprsequencetype2": [1, 245], "sidelink": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 226, 240, 242, 249, 358, 361], "s_pss": [1, 253], "s_sss": [1, 255, 256], "block": [1, 5, 6, 8, 9, 10, 15, 23, 24, 27, 29, 35, 37, 38, 40, 43, 45, 55, 64, 65, 68, 74, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 96, 101, 102, 103, 104, 106, 107, 111, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 145, 146, 150, 155, 156, 157, 160, 163, 165, 167, 168, 175, 176, 179, 180, 181, 182, 183, 184, 185, 186, 188, 189, 199, 207, 208, 209, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 236, 240, 242, 244, 245, 246, 247, 249, 252, 253, 255, 256, 262, 264, 265, 266, 267, 272, 278, 279, 280, 283, 285, 287, 288, 289, 291, 294, 310, 318, 319, 320, 322, 323, 324, 326, 327, 328, 331, 334, 335, 337, 348, 350, 351, 352, 353, 358, 360], "ssb": [1, 38, 39, 46, 65, 84, 85, 86, 107, 127, 162, 168, 184, 185, 188, 226, 239, 243, 249, 252, 253, 255, 256, 260, 267, 269, 273, 274, 277, 286, 288, 290, 293, 295, 318, 352, 358, 361], "ssb_grid": [1, 226, 235, 237, 269, 285, 287, 288, 289, 291, 294, 324, 348, 349], "resourcemapperssb": [1, 226, 238, 285, 287, 288, 289, 291, 294, 324, 348, 349], "resourcemapperdmrspdsch": [1, 103, 104, 186, 226, 229, 233], "ptr": [1, 35, 37, 87, 226, 299, 358], "resourcemapperptrspdsch": [1, 226, 233], "pdcch": [1, 2, 10, 11, 27, 39, 42, 44, 46, 51, 53, 55, 62, 64, 65, 67, 69, 74, 81, 83, 84, 102, 106, 107, 110, 112, 117, 124, 126, 127, 142, 143, 146, 149, 162, 163, 164, 165, 167, 168, 183, 184, 188, 189, 207, 226, 227, 232, 236, 239, 240, 241, 242, 243, 249, 262, 266, 277, 283, 296, 310, 318, 320, 335, 348, 349, 352, 358, 361], "resourcemappingpdcch": [1, 226, 230, 270, 320, 325], "coreset": [1, 39, 46, 184, 226, 227, 230, 236, 262, 266, 270, 278, 304, 305, 306, 307, 310, 318, 348, 352, 358], "search": [1, 5, 29, 39, 46, 184, 188, 226, 262, 266, 278, 280, 304, 305, 306, 307, 308, 309, 348, 352, 358], "space": [1, 14, 15, 29, 39, 46, 184, 193, 195, 202, 203, 204, 205, 226, 230, 231, 238, 262, 266, 267, 278, 280, 294, 299, 301, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 348, 349, 351, 352, 358], "searchspaceset": [1, 226, 236, 325], "resourcemappercsir": [1, 226, 228, 231, 334], "resourcemapperpr": [1, 226, 231, 327, 328, 331], "sssb_grid": [1, 226, 235], "pscch": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 226, 240, 242, 243, 249, 358, 361], "resourcemappingpscch": [1, 226, 232], "pdsch": [1, 2, 6, 9, 29, 42, 51, 53, 64, 65, 67, 83, 84, 91, 94, 95, 96, 103, 104, 106, 107, 108, 110, 126, 127, 163, 165, 167, 168, 183, 189, 226, 229, 233, 240, 242, 243, 249, 260, 277, 280, 281, 295, 296, 299, 318, 322, 323, 334, 349, 352, 358, 361], "transmitt": [1, 2, 6, 7, 9, 10, 15, 16, 18, 22, 31, 33, 42, 43, 51, 53, 67, 68, 87, 89, 110, 111, 141, 142, 150, 175, 179, 180, 183, 196, 197, 198, 199, 205, 268, 271, 281, 286, 290, 292, 293, 295, 299, 301, 302, 318, 322, 323, 329, 330, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 352, 358], "compon": [1, 54, 73, 116, 141, 179, 183, 204, 268, 283, 348], "pbch": [1, 2, 10, 11, 23, 27, 38, 42, 44, 51, 53, 55, 64, 65, 67, 69, 74, 83, 84, 85, 86, 106, 107, 110, 112, 117, 126, 127, 142, 143, 146, 149, 162, 163, 165, 167, 168, 183, 185, 188, 235, 237, 238, 239, 240, 242, 243, 249, 260, 272, 277, 284, 285, 287, 288, 289, 292, 293, 295, 296, 324, 352, 358, 361], "pusch": [1, 2, 6, 9, 26, 35, 37, 42, 51, 53, 67, 87, 88, 94, 96, 110, 181, 182, 183, 236, 243, 264, 296, 299, 358, 361], "prach": [1, 65, 84, 107, 127, 162, 168, 183, 236, 239, 243, 296, 318, 358, 361], "psbch": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 235, 240, 242, 243, 249, 358, 361], "master": [1, 40, 45, 335, 348, 358], "extract": [1, 7, 8, 9, 40, 45, 88, 93, 181, 182, 184, 203, 277, 289, 292, 293, 295, 302, 322, 323, 329, 330, 331, 332, 348, 351, 352, 358], "dcigener": [1, 38, 40], "dciextract": [1, 38, 40], "ham": [1, 13, 318, 352, 358, 361], "coder": [1, 6, 7, 8, 9, 10, 11, 12, 13, 20, 22, 44, 48, 55, 56, 60, 64, 69, 71, 74, 75, 79, 83, 88, 93, 95, 96, 98, 106, 112, 114, 117, 118, 122, 126, 141, 142, 143, 146, 148, 150, 156, 157, 163, 167, 170, 173, 175, 176, 179, 183, 184, 185, 186, 188, 189, 214, 240, 258, 294, 301, 322, 323, 337, 351, 352, 358], "sphere": [1, 319, 329], "syndrom": [1, 319], "densiti": [1, 8, 13, 19, 21, 93, 102, 103, 104, 183, 186, 204, 207, 228, 229, 231, 233, 261, 275, 276, 301, 315, 334, 338, 340, 341, 352, 358], "pariti": [1, 2, 3, 4, 5, 8, 13, 27, 42, 51, 53, 67, 93, 102, 108, 110, 183, 186, 207, 301, 319, 352, 358], "subcompon": [1, 186], "select": [1, 6, 7, 8, 24, 26, 29, 31, 39, 46, 59, 78, 87, 88, 92, 93, 94, 96, 100, 101, 103, 104, 121, 130, 131, 132, 134, 136, 137, 138, 139, 141, 150, 155, 157, 160, 181, 182, 184, 185, 186, 188, 189, 196, 198, 206, 208, 209, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 238, 246, 247, 260, 261, 262, 263, 264, 265, 266, 267, 271, 279, 280, 281, 283, 291, 294, 299, 302, 310, 318, 320, 322, 323, 326, 329, 330, 332, 334, 336, 338, 339, 340, 341, 342, 344, 348, 349, 352, 358], "ratematchparamet": [1, 100, 102, 186, 209], "sub": [1, 8, 9, 15, 16, 18, 23, 29, 48, 60, 71, 79, 85, 87, 93, 98, 114, 122, 141, 149, 150, 155, 157, 160, 170, 173, 184, 185, 186, 188, 189, 199, 202, 205, 213, 214, 230, 236, 253, 258, 278, 301, 304, 305, 306, 307, 308, 309, 320, 323, 325, 329, 334, 358, 361], "de": [1, 6, 11, 23, 24, 25, 27, 28, 44, 56, 65, 69, 75, 84, 96, 100, 107, 112, 118, 127, 129, 135, 141, 143, 150, 153, 154, 157, 158, 160, 162, 168, 175, 179, 181, 184, 185, 186, 188, 189, 221, 222, 226, 234, 239, 326, 335, 336], "ofdmdemodul": [1, 31, 32, 285, 287, 288, 289, 291, 294, 324, 333, 348, 349], "ofdmmodul": [1, 31, 33, 285, 287, 288, 289, 291, 294, 324, 333, 348, 349], "transform": [1, 31, 32, 192, 202, 348, 358], "transformprecod": [1, 31, 34, 36], "transformdecoding5g": [1, 31, 35, 333], "precod": [1, 29, 31, 34, 35, 186, 189, 243, 283, 299, 301, 352, 358, 361], "transformprecoding5g": [1, 31, 35, 37, 333], "hardwar": [1, 6, 96, 297, 336, 358], "impair": [1, 198, 269, 270, 358], "appli": [1, 10, 11, 18, 20, 21, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 227, 238, 269, 270, 271, 322, 323, 334, 358], "applychannel": [1, 22, 322, 323, 324, 328, 348, 349, 351], "cfo": [1, 20, 277, 294, 302, 324, 327, 328, 329, 330, 331, 332, 334, 348, 358], "rnti": [1, 63, 64, 65, 82, 83, 84, 85, 86, 105, 106, 107, 125, 126, 127, 150, 162, 163, 165, 166, 167, 168, 175, 176, 183, 184, 185, 186, 188, 189, 236, 239, 240, 242, 271, 278, 294, 304, 305, 306, 307, 308, 309, 320, 322, 323, 325, 351, 358], "mask": [1, 65, 84, 107, 127, 162, 168, 183, 184, 185, 188, 239, 358], "rntimask": [1, 61, 62, 80, 81, 123, 124, 162, 164, 184, 185, 188, 239, 241], "antenna": [1, 15, 16, 18, 19, 29, 32, 193, 195, 196, 198, 254, 281, 283, 294, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 347, 348, 349, 351, 352, 358, 361], "antennaarrai": [1, 14, 16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "element": [1, 15, 16, 17, 18, 19, 29, 87, 88, 90, 94, 131, 136, 137, 139, 181, 182, 189, 195, 216, 217, 218, 219, 220, 227, 228, 231, 233, 236, 264, 270, 274, 275, 278, 289, 291, 296, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "node": [1, 6, 15, 16, 18, 19, 96, 196, 197, 198, 199, 200, 206, 301, 324, 338, 340, 341, 346, 347, 349, 352, 358], "mobil": [1, 16, 19, 199, 269, 271, 275, 276, 280, 284, 285, 320, 324, 327, 328, 331, 338, 340, 341, 346, 347, 349, 352, 358, 361], "nodemobl": [1, 16, 17, 19, 324, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349], "simul": [1, 6, 10, 15, 16, 17, 18, 29, 39, 46, 55, 74, 96, 117, 142, 146, 184, 186, 189, 227, 236, 238, 243, 260, 262, 266, 267, 278, 293, 295, 310, 315, 318, 347, 348, 352, 358, 361], "layout": [1, 16, 18, 302, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 347, 348, 349, 351, 352, 358], "simulationlayout": [1, 16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "b": [1, 8, 15, 16, 18, 29, 32, 85, 93, 103, 104, 108, 186, 199, 206, 227, 229, 233, 234, 238, 250, 254, 261, 262, 263, 264, 265, 266, 271, 273, 278, 282, 284, 285, 286, 294, 295, 296, 301, 302, 304, 305, 306, 307, 309, 310, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 342, 344, 345, 346, 347, 348, 349, 350, 351, 352, 358, 361], "ue": [1, 15, 16, 17, 18, 29, 39, 46, 62, 81, 94, 124, 134, 164, 184, 188, 196, 197, 198, 199, 217, 227, 234, 236, 241, 250, 251, 252, 253, 254, 255, 256, 262, 266, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 282, 285, 286, 294, 295, 296, 304, 306, 310, 318, 320, 322, 323, 324, 334, 338, 339, 340, 341, 344, 345, 346, 347, 348, 349, 351, 352, 358], "drop": [1, 16, 18, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "parametergener": [1, 16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "channelgener": [1, 15, 16, 18, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "mimo": [1, 22, 29, 37, 87, 88, 89, 94, 102, 180, 181, 182, 199, 207, 271, 275, 281, 283, 284, 296, 320, 325, 334, 338, 340, 341, 346, 352, 358, 361], "book": [1, 30, 130, 131, 132, 134, 136, 137, 138, 139, 358], "schedul": [1, 39, 46, 102, 207, 236, 254, 260, 262, 266, 270, 280, 281, 282, 299, 302, 310, 318, 320, 329, 330, 332, 350, 358], "pdcchschedul": [1, 278, 283, 304, 305, 306, 307, 308, 309], "link": [1, 15, 16, 18, 19, 186, 189, 197, 227, 236, 243, 281, 282, 283, 299, 301, 302, 304, 315, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 352, 356, 357, 358, 359, 360, 361], "adapt": [1, 227, 243, 275, 276, 283, 299, 301, 358, 361], "linkadapt": [1, 280, 283], "rank": [1, 6, 29, 39, 46, 85, 96, 102, 103, 104, 184, 207, 229, 233, 243, 262, 263, 264, 266, 271, 276, 280, 283, 294, 299, 348, 351, 352, 358, 361], "rankadapt": [1, 280, 281, 283], "round": [1, 283, 327, 328, 358, 362], "robin": [1, 283, 358], "roundrobinschedul": [1, 279, 283], "carrier": [1, 14, 15, 18, 19, 21, 29, 39, 46, 87, 184, 186, 189, 202, 205, 230, 236, 238, 243, 249, 253, 255, 256, 262, 266, 267, 272, 277, 278, 291, 294, 299, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 345, 346, 347, 348, 349, 351, 352, 358], "offset": [1, 21, 32, 33, 39, 46, 129, 130, 131, 132, 135, 136, 137, 138, 179, 184, 215, 216, 217, 218, 219, 220, 222, 230, 231, 233, 236, 238, 246, 247, 255, 256, 262, 265, 266, 267, 273, 277, 285, 287, 288, 291, 302, 309, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 350, 358], "carrierfrequencyoffsetestim": [1, 268, 277], "equal": [1, 2, 14, 19, 22, 34, 35, 36, 37, 42, 51, 53, 57, 64, 65, 67, 76, 83, 84, 86, 87, 88, 90, 94, 102, 106, 107, 110, 119, 126, 127, 130, 131, 132, 136, 137, 138, 139, 144, 147, 152, 159, 163, 165, 167, 168, 175, 181, 182, 185, 189, 193, 196, 197, 198, 206, 207, 210, 215, 216, 218, 219, 220, 227, 230, 231, 232, 235, 237, 238, 240, 242, 243, 246, 247, 255, 256, 266, 268, 277, 279, 289, 292, 294, 295, 301, 320, 322, 323, 324, 325, 328, 329, 330, 331, 332, 334, 342, 344, 346, 349, 351, 352, 358], "channelestimationandequalizationpbch": [1, 269, 277, 291, 294, 324, 348, 349], "channelestimationandequalizationpdcch": [1, 270, 277, 320, 325], "channelestimationandequalizationpdsch": [1, 271, 277, 294, 323], "dmrsparameterdetect": [1, 272, 277, 285, 287, 288, 289, 291, 294, 324, 348, 349], "cell": [1, 39, 46, 64, 65, 83, 84, 103, 104, 106, 107, 126, 127, 162, 163, 165, 167, 168, 184, 188, 196, 198, 199, 206, 229, 233, 235, 237, 239, 240, 242, 249, 250, 252, 253, 255, 256, 262, 266, 269, 272, 277, 278, 282, 283, 284, 285, 289, 291, 294, 302, 315, 320, 352, 358, 361], "id": [1, 39, 46, 63, 64, 65, 82, 83, 84, 85, 86, 87, 88, 90, 91, 102, 103, 104, 105, 106, 107, 125, 126, 127, 132, 138, 150, 162, 163, 165, 166, 167, 168, 181, 182, 184, 185, 186, 188, 189, 196, 207, 209, 215, 216, 217, 218, 219, 220, 229, 231, 233, 235, 236, 237, 239, 240, 242, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 269, 271, 272, 277, 278, 284, 285, 288, 289, 291, 294, 301, 304, 305, 306, 307, 308, 309, 320, 327, 328, 331, 350, 352, 358, 359], "detect": [1, 2, 3, 5, 6, 7, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 93, 96, 110, 112, 117, 142, 143, 146, 234, 249, 255, 256, 269, 270, 271, 277, 285, 288, 289, 291, 294, 302, 315, 319, 331, 332, 352, 358], "pssdetect": [1, 272, 273, 277, 285, 287, 288, 289, 291, 294, 324, 348, 349], "sssdetect": [1, 272, 274, 277, 285, 287, 288, 289, 291, 294, 324, 348, 349], "channelestimationcsir": [1, 275, 277, 334], "channelestimationsr": [1, 276, 277, 302, 329, 330, 332], "positionestim": [1, 196, 197, 198, 199, 206, 302, 327, 328, 329, 330], "submodul": [1, 6, 96, 358], "arriv": [1, 16, 18, 19, 193, 197, 198, 199, 202, 203, 204, 206, 302, 330, 331, 345, 346, 352, 358], "toa": [1, 18, 19, 196, 198, 200, 202, 206, 318, 352, 358, 361], "direct": [1, 14, 16, 17, 18, 19, 29, 88, 89, 180, 181, 182, 193, 196, 197, 206, 285, 327, 328, 331, 338, 339, 340, 341, 342, 343, 344, 346, 348, 352, 358, 361], "optim": [1, 10, 11, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 149, 170, 173, 196, 197, 198, 199, 206, 258, 271, 275, 276, 279, 280, 281, 283, 285, 301, 302, 315, 320, 327, 328, 329, 330, 331, 332, 339, 358, 362], "csiconfigur": [1, 261, 334], "generatevalidssbparamet": [1, 262, 266, 285, 287, 288, 289, 291, 294, 324, 348, 349], "lower": [1, 17, 48, 49, 60, 71, 72, 79, 88, 89, 98, 99, 114, 115, 122, 169, 170, 173, 174, 180, 183, 186, 189, 196, 197, 198, 199, 206, 227, 257, 258, 260, 278, 280, 281, 282, 294, 301, 304, 306, 307, 315, 322, 323, 324, 325, 326, 327, 328, 335, 336, 337, 338, 340, 341, 344, 348, 351, 358], "layer": [1, 6, 7, 8, 10, 11, 29, 32, 37, 39, 44, 46, 49, 55, 64, 65, 69, 72, 74, 83, 84, 89, 90, 91, 92, 93, 94, 96, 99, 102, 103, 104, 106, 107, 112, 115, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 146, 148, 149, 163, 165, 167, 168, 169, 174, 179, 180, 181, 182, 183, 184, 186, 189, 207, 209, 215, 216, 217, 218, 219, 220, 227, 229, 230, 231, 233, 236, 240, 242, 244, 245, 246, 247, 249, 254, 256, 257, 260, 262, 266, 270, 271, 272, 274, 278, 281, 283, 294, 296, 301, 318, 322, 323, 351, 358, 361], "pdschlowerphyconfigur": [1, 263, 294, 322, 323, 351], "upper": [1, 8, 17, 89, 91, 92, 93, 141, 148, 149, 179, 180, 181, 182, 183, 186, 189, 260, 263, 270, 294, 301, 309, 322, 323, 326, 350, 351, 358], "pdschupperphyconfigur": [1, 264, 294, 322, 323, 351], "srsconfigur": [1, 265], "ssbconfigur": [1, 266], "timefrequency5gparamet": [1, 267, 285, 287, 288, 289, 291, 294, 301, 324, 348, 349], "At": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 169, 174, 257, 315, 319, 326, 335, 336], "side": [2, 14, 16, 18, 19, 29, 33, 42, 51, 53, 58, 67, 77, 86, 87, 88, 110, 120, 186, 189, 193, 195, 211, 267, 282, 286, 294, 295, 299, 302, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 352, 358], "end": [2, 3, 4, 16, 42, 51, 53, 67, 87, 110, 188, 195, 295, 299, 315, 358, 361], "comput": [2, 6, 7, 8, 10, 11, 15, 17, 18, 19, 24, 29, 32, 33, 42, 44, 48, 51, 53, 55, 60, 65, 67, 69, 71, 74, 79, 84, 87, 92, 93, 96, 98, 101, 102, 107, 110, 112, 114, 117, 122, 127, 142, 143, 146, 149, 162, 168, 170, 173, 182, 183, 186, 189, 195, 198, 202, 203, 204, 205, 206, 207, 208, 233, 239, 244, 245, 248, 249, 250, 251, 254, 255, 258, 267, 275, 278, 280, 281, 289, 291, 294, 301, 302, 304, 310, 315, 318, 322, 323, 326, 327, 328, 329, 330, 332, 335, 336, 346, 347, 350, 351, 352, 358], "whose": [2, 10, 11, 39, 42, 44, 46, 51, 53, 55, 58, 67, 69, 74, 77, 85, 103, 104, 110, 112, 117, 120, 142, 143, 146, 205, 206, 211, 227, 228, 229, 230, 235, 237, 266, 270], "3gpp": [2, 4, 6, 8, 10, 11, 12, 14, 15, 16, 18, 19, 24, 25, 29, 34, 36, 38, 39, 42, 44, 46, 49, 51, 53, 55, 62, 65, 67, 69, 72, 74, 81, 84, 87, 92, 93, 94, 96, 99, 101, 102, 103, 104, 107, 110, 112, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 164, 165, 168, 171, 174, 175, 176, 181, 182, 184, 185, 186, 188, 196, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 267, 270, 278, 299, 301, 352, 358, 361], "ha": [2, 3, 4, 6, 7, 10, 11, 14, 19, 22, 28, 32, 42, 44, 48, 51, 53, 55, 60, 67, 69, 71, 74, 79, 85, 92, 95, 96, 98, 102, 103, 104, 110, 112, 114, 117, 122, 132, 138, 142, 143, 146, 149, 170, 173, 182, 186, 196, 198, 203, 205, 206, 207, 227, 228, 229, 234, 235, 236, 237, 238, 246, 247, 249, 250, 258, 270, 272, 273, 278, 279, 281, 284, 285, 287, 288, 289, 291, 294, 306, 309, 319, 323, 325, 327, 328, 330, 331, 332, 334, 338, 340, 341, 344, 346, 362], "standard": [2, 4, 6, 10, 11, 12, 18, 28, 42, 44, 51, 53, 55, 67, 69, 74, 87, 96, 110, 112, 117, 142, 143, 144, 146, 147, 149, 196, 206, 235, 238, 243, 250, 260, 267, 297, 299, 301, 315, 327, 328, 330, 331, 333, 358, 361], "certain": [2, 5, 6, 8, 42, 51, 53, 57, 67, 76, 93, 96, 102, 110, 119, 149, 176, 207, 210, 249, 267, 275, 276, 278, 280, 302, 307, 315, 329, 330, 332, 346, 362], "length": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 17, 19, 24, 28, 32, 33, 34, 35, 36, 37, 42, 44, 48, 49, 51, 53, 55, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 78, 79, 81, 83, 84, 86, 87, 88, 92, 93, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 145, 146, 148, 150, 154, 156, 157, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 182, 189, 207, 208, 212, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 234, 235, 237, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 267, 268, 269, 270, 273, 280, 285, 287, 288, 289, 291, 294, 301, 302, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 338, 340, 341, 348, 349, 351, 352, 358], "about": [2, 3, 4, 5, 6, 9, 10, 12, 21, 24, 25, 26, 27, 28, 31, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 87, 88, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 146, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 186, 189, 195, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 235, 236, 237, 239, 240, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 269, 272, 273, 274, 275, 276, 280, 281, 283, 315, 339, 358], "given": [2, 6, 9, 15, 18, 32, 42, 49, 51, 53, 67, 72, 85, 88, 91, 96, 99, 103, 104, 110, 115, 144, 147, 171, 174, 176, 181, 182, 199, 204, 227, 229, 230, 231, 233, 236, 244, 245, 249, 256, 259, 263, 266, 270, 271, 278, 279, 280, 281, 301, 310, 315, 318, 326, 335, 336, 339, 344, 350, 357, 358, 360], "usag": [2, 6, 7, 9, 24, 25, 26, 27, 28, 42, 51, 53, 62, 67, 81, 93, 96, 110, 124, 149, 164, 196, 197, 198, 241, 244, 245, 249, 356, 358, 359, 360], "crc24a": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "g_": [2, 42, 51, 53, 67, 110], "d": [2, 6, 10, 11, 12, 19, 42, 44, 51, 53, 55, 67, 69, 74, 96, 110, 112, 117, 142, 143, 146, 149, 182, 193, 195, 238, 262, 266, 302, 320, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 340, 341, 344], "23": [2, 10, 39, 42, 46, 51, 53, 55, 67, 74, 110, 117, 142, 146, 184, 189, 198, 236, 251, 262, 266, 278, 301, 302, 309, 315, 324, 327, 328, 329, 330, 331, 332, 334, 337, 341, 348], "18": [2, 10, 42, 51, 53, 55, 67, 74, 87, 88, 94, 110, 117, 142, 145, 146, 181, 182, 227, 228, 231, 244, 245, 254, 264, 272, 278, 291, 294, 299, 301, 309, 315, 320, 323, 325, 327, 328, 329, 330, 331, 332, 334, 337, 339, 345, 346, 348, 349, 350], "17": [2, 4, 6, 10, 12, 15, 18, 19, 29, 35, 37, 38, 39, 42, 46, 49, 51, 53, 55, 62, 65, 67, 72, 74, 81, 84, 94, 96, 99, 103, 104, 107, 110, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278, 285, 287, 289, 291, 294, 301, 309, 315, 323, 327, 328, 329, 330, 331, 332, 334, 337, 338, 339, 340, 341, 342, 344, 345, 348, 349, 350], "14": [2, 35, 37, 42, 51, 53, 67, 85, 87, 88, 91, 94, 103, 104, 110, 130, 131, 132, 136, 137, 138, 139, 181, 182, 189, 215, 216, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 245, 246, 247, 254, 267, 270, 271, 273, 275, 276, 278, 285, 287, 288, 289, 291, 294, 301, 302, 305, 309, 315, 324, 325, 327, 328, 329, 330, 331, 332, 334, 337, 339, 342, 343, 344, 345, 348, 349, 350, 351, 356, 359, 360], "11": [2, 3, 4, 12, 39, 42, 46, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 136, 137, 138, 144, 145, 147, 184, 188, 215, 216, 218, 219, 227, 229, 233, 235, 238, 244, 246, 247, 250, 262, 263, 264, 266, 271, 273, 278, 285, 289, 291, 294, 301, 302, 305, 309, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 359, 362], "7": [2, 6, 14, 15, 17, 18, 19, 25, 29, 39, 42, 46, 48, 49, 51, 53, 60, 62, 65, 67, 71, 72, 79, 81, 84, 85, 86, 87, 90, 95, 96, 98, 99, 103, 104, 107, 110, 114, 115, 122, 124, 127, 132, 134, 138, 139, 164, 165, 168, 170, 171, 173, 174, 184, 185, 196, 215, 216, 217, 220, 227, 228, 229, 230, 231, 233, 236, 237, 238, 241, 242, 246, 247, 248, 249, 250, 251, 252, 254, 255, 258, 259, 262, 263, 264, 266, 267, 270, 271, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "tb": [2, 8, 9, 42, 51, 53, 67, 85, 86, 87, 88, 93, 94, 95, 102, 110, 181, 182, 207, 301, 323, 352, 358], "crc24b": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "cb": [2, 7, 8, 11, 24, 42, 44, 51, 53, 67, 69, 92, 93, 101, 102, 110, 112, 143, 148, 181, 182, 207, 208], "21": [2, 3, 4, 42, 51, 53, 67, 110, 255, 256, 278, 301, 302, 309, 315, 324, 327, 328, 329, 330, 331, 332, 334, 337, 338, 344, 346, 348, 362], "20": [2, 6, 10, 11, 12, 42, 44, 51, 53, 55, 67, 69, 74, 91, 96, 103, 104, 110, 112, 117, 142, 143, 146, 149, 182, 189, 229, 233, 236, 238, 265, 267, 272, 273, 285, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 335, 337, 338, 339, 340, 341, 342, 344, 349, 350], "15": [2, 15, 19, 29, 39, 42, 46, 51, 53, 67, 85, 87, 88, 103, 104, 110, 134, 136, 137, 138, 139, 189, 196, 217, 218, 219, 220, 227, 228, 229, 230, 231, 234, 236, 238, 247, 248, 249, 251, 254, 264, 267, 270, 271, 273, 278, 285, 288, 291, 294, 301, 302, 305, 307, 310, 315, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 337, 339, 342, 344, 345, 346, 348, 349, 350, 362], "13": [2, 42, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 134, 136, 137, 138, 139, 188, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 246, 247, 248, 249, 251, 263, 264, 271, 273, 278, 289, 291, 301, 305, 309, 315, 320, 322, 324, 325, 327, 328, 329, 330, 331, 332, 334, 337, 339, 342, 344, 345, 348, 349, 350, 351, 356, 359, 360, 362], "12": [2, 10, 11, 12, 19, 29, 35, 37, 39, 42, 44, 46, 51, 53, 55, 67, 69, 74, 85, 87, 88, 90, 91, 94, 103, 104, 110, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 181, 182, 184, 189, 202, 203, 204, 205, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 244, 245, 246, 247, 254, 262, 263, 264, 265, 266, 271, 273, 275, 276, 278, 279, 285, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 359, 360, 362], "8": [2, 3, 4, 10, 11, 14, 17, 22, 24, 25, 35, 37, 39, 42, 44, 46, 49, 51, 53, 55, 64, 65, 67, 69, 72, 74, 83, 84, 85, 87, 88, 89, 91, 94, 95, 99, 101, 102, 103, 104, 106, 107, 110, 112, 115, 117, 126, 127, 130, 131, 132, 142, 143, 146, 149, 163, 165, 167, 168, 171, 174, 182, 188, 189, 204, 205, 207, 208, 209, 215, 216, 227, 228, 229, 231, 233, 234, 235, 236, 237, 240, 242, 244, 246, 249, 253, 254, 256, 259, 263, 264, 265, 271, 272, 273, 278, 285, 287, 289, 291, 294, 302, 304, 306, 307, 308, 309, 310, 315, 316, 318, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "crc16": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "crc11": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "9": [2, 14, 19, 29, 42, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 227, 229, 231, 233, 234, 236, 238, 244, 245, 246, 247, 263, 264, 267, 271, 273, 278, 280, 285, 291, 294, 301, 302, 304, 305, 308, 309, 315, 317, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "crc6": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "applic": [2, 6, 24, 25, 26, 27, 28, 42, 49, 51, 53, 67, 72, 96, 99, 110, 115, 144, 147, 171, 174, 203, 204, 259, 295, 329, 331, 332, 356, 359, 360], "interfac": [2, 3, 4, 5, 6, 7, 9, 10, 12, 21, 24, 25, 26, 27, 28, 31, 33, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 92, 94, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 146, 148, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 195, 196, 197, 198, 199, 203, 204, 206, 207, 208, 210, 211, 212, 235, 237, 240, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 263, 264, 265, 267, 269, 272, 273, 274, 283, 295, 296, 333, 336, 358, 361], "content": [2, 23, 40, 42, 49, 51, 53, 65, 67, 72, 84, 99, 107, 110, 115, 127, 132, 138, 162, 168, 169, 174, 215, 216, 217, 218, 219, 220, 226, 234, 239, 243, 246, 247, 257, 260, 296, 302, 315, 318, 319, 325, 327, 329, 333, 336, 338, 340, 341, 342, 344, 348, 352], "assum": [3, 14, 19, 31, 32, 196, 197, 203, 204, 270, 278, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 348, 349, 351], "attach": [3, 4, 8, 93, 95, 108, 149, 176, 182, 189, 267, 273], "sionna": [3, 4, 6, 10, 11, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 96, 98, 99, 112, 114, 115, 117, 122, 142, 143, 146, 149, 170, 171, 173, 174, 258, 259, 327, 328, 330, 331, 356, 358, 359, 360], "intern": [3, 4, 6, 9, 10, 55, 64, 65, 74, 83, 84, 88, 96, 106, 107, 108, 117, 126, 127, 142, 146, 163, 165, 167, 168, 182, 199, 240, 242, 267, 270, 284, 285, 301, 358], "been": [3, 4, 28, 29, 132, 138, 186, 246, 247, 278, 279, 284, 323, 334, 338, 340, 341, 361], "exactli": [3, 4, 144, 147, 250], "same": [3, 4, 6, 7, 14, 18, 19, 31, 32, 62, 64, 65, 81, 83, 84, 92, 95, 96, 106, 107, 124, 126, 127, 132, 138, 163, 164, 165, 167, 168, 182, 185, 186, 196, 197, 198, 199, 206, 235, 237, 238, 240, 241, 242, 246, 247, 255, 276, 278, 285, 287, 288, 289, 291, 294, 295, 301, 307, 315, 336, 342], "compat": [3, 4, 295, 360], "hybrid": [3, 10, 55, 74, 102, 117, 142, 146, 200, 206, 207, 299, 302, 318, 320, 358, 361], "automat": [3, 19, 102, 207, 230, 318, 320, 356, 357, 358, 359], "harq": [3, 87, 102, 132, 207, 234, 246, 264, 320, 350, 358, 361], "1d": [3, 4, 17, 235, 269, 273, 281], "32": [3, 4, 6, 10, 12, 25, 28, 29, 38, 39, 46, 55, 59, 64, 65, 74, 78, 83, 84, 96, 106, 107, 117, 121, 126, 127, 142, 144, 146, 147, 154, 158, 163, 165, 167, 168, 184, 212, 228, 231, 240, 242, 244, 262, 265, 266, 278, 301, 304, 305, 315, 322, 323, 324, 329, 330, 331, 333, 334, 336, 337, 348, 349, 351, 356, 357, 359], "creat": [3, 4, 5, 6, 10, 11, 24, 26, 44, 55, 57, 69, 74, 76, 96, 101, 102, 112, 117, 119, 142, 143, 146, 152, 159, 193, 195, 199, 207, 208, 210, 285, 294, 302, 332, 342, 344, 352, 356, 358, 359, 360], "object": [3, 4, 6, 7, 8, 9, 10, 11, 18, 19, 29, 44, 48, 49, 55, 60, 62, 64, 65, 69, 71, 72, 74, 79, 81, 83, 84, 85, 86, 88, 91, 93, 94, 95, 96, 98, 99, 106, 107, 108, 112, 114, 115, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 188, 189, 193, 195, 197, 198, 199, 202, 204, 206, 215, 216, 217, 218, 219, 220, 231, 235, 237, 240, 241, 242, 246, 247, 250, 252, 253, 255, 256, 258, 259, 267, 275, 276, 278, 285, 287, 289, 291, 294, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "56": [3, 4, 10, 11, 44, 55, 62, 69, 74, 81, 112, 117, 124, 142, 143, 146, 164, 184, 241, 289, 305, 323, 324, 329, 330, 331, 335, 337, 349], "2d": [3, 4, 12, 14, 18, 19, 25, 144, 147, 193, 195, 196, 197, 198, 202, 203, 204, 205, 235, 237, 269, 279, 281, 302, 327, 328, 329, 330, 331, 332, 343, 344, 345, 348], "64": [3, 4, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 235, 237, 240, 242, 249, 265, 272, 294, 318, 329, 330, 331, 333, 337, 339, 346, 356, 357, 359, 362], "80": [3, 4, 6, 96, 217, 218, 219, 220, 236, 265, 267, 308, 309, 322, 323, 329, 330, 331, 335, 336, 337, 351, 362], "dimens": [3, 4, 6, 7, 8, 10, 11, 12, 14, 18, 19, 22, 24, 29, 32, 44, 55, 69, 74, 88, 92, 95, 96, 101, 102, 112, 117, 130, 131, 132, 134, 136, 137, 139, 142, 143, 146, 181, 182, 189, 193, 196, 197, 202, 203, 204, 205, 207, 208, 215, 216, 217, 218, 219, 220, 235, 237, 244, 245, 246, 255, 269, 270, 275, 276, 278, 281, 315, 336, 339, 348, 351], "contain": [3, 5, 6, 7, 8, 9, 10, 11, 12, 24, 32, 44, 55, 57, 69, 74, 76, 85, 87, 88, 92, 93, 96, 101, 102, 112, 117, 119, 132, 138, 142, 143, 146, 149, 152, 159, 181, 182, 188, 189, 196, 197, 204, 206, 207, 208, 210, 238, 246, 247, 268, 280, 285, 287, 288, 294, 295, 301, 302, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 342, 345, 346, 349, 351, 362], "higher": [3, 4, 26, 29, 39, 46, 58, 77, 120, 132, 138, 184, 195, 196, 197, 202, 204, 211, 214, 227, 230, 231, 246, 247, 254, 262, 266, 267, 278, 280, 281, 283, 301, 304, 305, 306, 307, 315, 331, 332, 336, 338, 340, 341, 344], "119": [3, 4, 315, 329], "125": [3, 4, 206, 267, 302, 309, 327, 328, 329, 330, 331, 332], "modul": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 263, 264, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 281, 282, 283, 285, 287, 290, 292, 294, 295, 315, 318, 320, 329, 333, 339, 342, 343, 344, 345, 346, 352, 358, 360, 361, 362], "class": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 285, 287, 288, 289, 291, 294, 324, 339, 342, 343, 344, 346, 348, 349], "none": [3, 4, 6, 7, 9, 11, 12, 14, 15, 17, 18, 19, 21, 25, 26, 27, 28, 35, 37, 39, 44, 46, 58, 59, 69, 77, 78, 85, 87, 88, 91, 92, 94, 95, 96, 102, 103, 104, 108, 112, 120, 121, 130, 131, 132, 134, 136, 137, 138, 139, 143, 148, 153, 154, 158, 176, 182, 184, 196, 197, 198, 199, 202, 203, 205, 206, 207, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 235, 238, 246, 247, 253, 256, 261, 262, 263, 264, 265, 266, 267, 269, 270, 273, 275, 276, 279, 280, 281, 285, 288, 289, 291, 294, 301, 302, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 339, 342, 348, 349, 350, 351, 356, 357, 359, 360], "arg": [3, 4, 17, 48, 60, 64, 65, 71, 79, 83, 84, 85, 98, 106, 107, 114, 122, 126, 127, 163, 165, 167, 168, 170, 173, 240, 242, 249, 258, 289], "sourc": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 358], "insert": [3, 4, 26, 85, 86, 88, 102, 184, 185, 207, 268, 271, 289, 291, 348], "constructor": [3, 4, 48, 49, 60, 62, 64, 65, 71, 72, 79, 81, 83, 84, 98, 99, 106, 107, 114, 115, 122, 124, 126, 127, 163, 164, 165, 167, 168, 170, 171, 173, 174, 240, 241, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259], "init": [3, 4, 18, 19, 245, 248, 249, 250, 251], "fec": [3, 4], "defin": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 24, 25, 26, 27, 28, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 132, 138, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 185, 188, 189, 193, 195, 196, 198, 199, 202, 205, 206, 207, 208, 210, 211, 212, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 295, 301, 318, 319, 326, 329, 333, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 361], "int8": [3, 4, 6, 12, 48, 49, 60, 62, 65, 71, 72, 79, 81, 84, 96, 98, 99, 107, 114, 115, 122, 124, 127, 164, 165, 168, 170, 171, 173, 174, 241, 242, 248, 249, 250, 251, 252, 253, 255, 258, 259, 315, 319, 327, 328, 329, 330, 331, 336], "crclength": [3, 4], "bool": [3, 5, 6, 10, 11, 12, 15, 17, 18, 19, 21, 22, 44, 48, 55, 60, 69, 71, 74, 79, 86, 87, 88, 96, 98, 102, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 170, 173, 181, 182, 184, 188, 204, 206, 207, 209, 215, 216, 217, 218, 219, 220, 235, 237, 238, 246, 247, 258, 262, 266, 269, 271, 279, 315], "should": [3, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 26, 27, 28, 32, 39, 44, 46, 48, 49, 57, 58, 59, 60, 62, 64, 69, 71, 72, 76, 77, 78, 79, 81, 83, 87, 92, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 112, 114, 115, 119, 120, 121, 122, 124, 126, 132, 138, 143, 148, 152, 153, 154, 158, 159, 163, 164, 167, 170, 171, 173, 174, 193, 195, 196, 197, 198, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 227, 228, 229, 231, 235, 236, 237, 238, 240, 241, 244, 245, 246, 247, 253, 254, 255, 256, 258, 259, 262, 266, 270, 271, 275, 276, 279, 295, 298, 301, 309, 345], "rais": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 19, 21, 22, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 289, 334], "valueerror": [3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 19, 21, 22, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 49, 55, 58, 59, 62, 64, 65, 69, 72, 74, 77, 78, 81, 83, 84, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 120, 121, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 153, 154, 158, 163, 164, 165, 167, 168, 171, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 262, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 334], "inbit": [3, 4, 8, 12, 24, 65, 84, 92, 101, 107, 127, 165, 168, 208, 242], "must": [3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 78, 79, 81, 83, 84, 85, 86, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 121, 122, 124, 126, 127, 142, 143, 146, 148, 149, 152, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 212, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 309, 315, 323, 334], "support": [4, 6, 13, 14, 17, 19, 20, 22, 39, 46, 48, 49, 60, 71, 72, 79, 85, 87, 96, 98, 99, 102, 114, 115, 122, 153, 154, 155, 156, 158, 159, 170, 171, 173, 174, 186, 190, 195, 206, 207, 227, 230, 233, 234, 236, 238, 243, 254, 258, 259, 264, 265, 267, 269, 270, 271, 274, 276, 278, 280, 281, 295, 299, 302, 305, 307, 315, 335, 336, 338, 340, 341, 343, 356, 357, 358, 359, 360, 361], "5g": [4, 6, 7, 8, 9, 10, 11, 13, 15, 18, 20, 22, 26, 27, 28, 31, 34, 36, 44, 48, 49, 55, 58, 60, 69, 71, 72, 74, 77, 79, 87, 93, 96, 98, 99, 103, 104, 112, 114, 115, 117, 120, 122, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 170, 171, 173, 174, 175, 179, 181, 182, 184, 185, 186, 188, 189, 195, 199, 200, 205, 211, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 265, 268, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 283, 295, 297, 298, 306, 318, 347, 352, 361], "3gppts38211_crc": 4, "doesn": [4, 10, 24, 55, 65, 74, 84, 87, 101, 107, 117, 127, 132, 138, 142, 146, 165, 168, 208, 242, 246, 247, 280, 327, 328], "t": [4, 6, 8, 10, 12, 15, 18, 19, 24, 25, 29, 33, 34, 36, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 85, 87, 92, 93, 94, 96, 99, 101, 102, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 181, 182, 184, 185, 186, 188, 189, 198, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 267, 270, 278, 280, 291, 294, 295, 302, 315, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 356, 359], "n": [4, 5, 6, 7, 8, 9, 10, 11, 14, 18, 24, 28, 29, 32, 33, 39, 44, 46, 54, 55, 57, 59, 64, 65, 69, 73, 74, 76, 78, 83, 84, 85, 86, 88, 92, 93, 95, 96, 101, 102, 106, 107, 112, 116, 117, 119, 121, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 149, 152, 154, 158, 159, 163, 165, 167, 168, 175, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 210, 212, 218, 219, 220, 228, 230, 231, 235, 236, 237, 238, 240, 242, 247, 249, 252, 253, 254, 255, 256, 262, 265, 266, 267, 270, 271, 272, 273, 274, 275, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 318, 319, 324, 325, 327, 328, 329, 330, 331, 332, 334, 336, 338, 339, 340, 341, 342, 346, 348, 349, 350, 356, 357, 358, 359], "reshap": [4, 29, 291, 294, 302, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 345, 349], "perform": [4, 5, 6, 7, 8, 9, 11, 12, 24, 26, 28, 44, 48, 57, 60, 62, 64, 65, 69, 71, 76, 79, 81, 83, 84, 87, 88, 92, 93, 95, 96, 98, 101, 102, 106, 107, 108, 112, 114, 119, 122, 124, 126, 127, 143, 148, 149, 162, 163, 164, 165, 167, 168, 170, 173, 175, 176, 181, 182, 186, 195, 196, 198, 202, 203, 204, 206, 207, 208, 210, 214, 236, 239, 240, 241, 242, 258, 260, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 289, 292, 293, 295, 304, 305, 306, 307, 308, 309, 318, 322, 323, 325, 334, 342, 344, 351, 352, 358], "38": [4, 6, 8, 10, 11, 12, 14, 15, 16, 18, 19, 23, 24, 25, 29, 34, 36, 38, 39, 44, 46, 49, 55, 62, 65, 69, 72, 74, 81, 84, 87, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 107, 108, 112, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 164, 165, 168, 171, 174, 175, 181, 182, 184, 185, 186, 188, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 270, 278, 280, 289, 294, 301, 315, 329, 330, 331, 337, 348, 362], "211": [4, 6, 10, 12, 23, 25, 34, 36, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 102, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 189, 207, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 270, 301, 326], "releas": [4, 6, 10, 12, 15, 18, 19, 29, 35, 37, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 196, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278, 358], "v17": [4, 6, 10, 12, 19, 29, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278], "2022": [4, 6, 10, 12, 19, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259], "03": [4, 6, 10, 12, 19, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 301, 328, 332], "mai": [5, 39, 46, 88, 184, 193, 195, 203, 204, 236, 262, 266, 268, 275, 276, 279, 280, 281, 283, 298, 301, 307, 309, 331, 348, 356, 359, 360, 362], "occur": [5, 236, 268, 278, 289], "dure": [5, 57, 76, 119, 152, 159, 188, 210, 227, 269, 270, 271, 273, 279, 280, 289], "digit": [5, 29, 189, 299, 315, 322, 323, 351], "messag": [5, 6, 39, 46, 96, 184, 262, 266, 315, 348], "codeword": [5, 6, 7, 8, 9, 10, 11, 12, 24, 28, 44, 55, 64, 65, 69, 74, 83, 84, 87, 88, 92, 95, 96, 101, 102, 106, 107, 112, 117, 126, 127, 142, 143, 146, 148, 162, 163, 165, 167, 168, 182, 207, 208, 239, 240, 242, 271, 294, 301, 315, 319, 322, 323, 326, 336, 351], "specif": [5, 10, 11, 12, 14, 18, 44, 55, 69, 74, 102, 112, 117, 138, 142, 143, 146, 149, 186, 189, 207, 217, 218, 219, 220, 227, 236, 247, 253, 256, 268, 271, 275, 276, 278, 280, 281, 285, 301, 304, 305, 306, 307, 308, 309, 324, 325, 327, 328, 361], "structur": [5, 8, 14, 29, 93, 149, 193, 195, 260, 267, 275, 276, 296, 322, 323, 324, 339, 342, 343, 346, 349, 351], "batch": [5, 6, 10, 12, 22, 25, 29, 49, 55, 65, 72, 74, 84, 87, 88, 96, 99, 107, 115, 117, 127, 132, 134, 142, 146, 165, 168, 171, 174, 189, 217, 242, 246, 259, 271, 276, 281, 294, 318, 324, 325, 326, 335, 336, 348, 350, 352, 358], "simultan": [5, 12, 204, 281], "three": [5, 12, 13, 15, 17, 18, 19, 20, 22, 37, 57, 76, 102, 119, 144, 147, 153, 154, 155, 156, 158, 159, 195, 207, 210, 213, 295, 322, 323, 334, 339], "exampl": [5, 6, 7, 8, 10, 11, 12, 14, 18, 19, 25, 29, 44, 55, 62, 64, 69, 74, 81, 83, 90, 91, 92, 93, 94, 95, 96, 106, 108, 112, 117, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 163, 164, 167, 175, 176, 181, 182, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 215, 216, 217, 218, 219, 220, 227, 235, 236, 237, 240, 241, 246, 247, 249, 267, 269, 272, 274, 278, 358], "channelcod": [5, 6, 7, 8, 9, 10, 11, 12, 27, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 146, 148, 149, 291, 294, 315, 319, 320, 326, 335, 336, 348, 349], "hammingcod": 5, "hammingencod": [5, 315, 319], "k": [5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 24, 27, 32, 33, 39, 44, 46, 54, 55, 57, 62, 69, 73, 74, 76, 81, 92, 93, 96, 101, 102, 112, 116, 117, 119, 124, 142, 143, 145, 146, 148, 149, 152, 159, 164, 175, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 206, 207, 208, 210, 231, 236, 238, 241, 254, 262, 265, 266, 269, 280, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 318, 319, 320, 322, 323, 324, 325, 326, 329, 330, 332, 333, 334, 335, 336, 339, 342, 343, 347, 348, 349, 352, 358], "take": [5, 6, 7, 8, 14, 15, 18, 19, 22, 24, 29, 35, 37, 39, 46, 64, 65, 83, 84, 85, 87, 88, 93, 94, 96, 101, 102, 103, 104, 106, 107, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 163, 165, 167, 168, 181, 182, 184, 188, 189, 198, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 236, 237, 238, 240, 242, 246, 247, 249, 254, 262, 263, 264, 265, 266, 269, 270, 271, 275, 276, 278, 280, 281, 301, 315, 319, 356, 357, 359, 360], "systemat": 5, "inputbit": [5, 7, 8, 11, 44, 57, 62, 69, 76, 81, 92, 93, 102, 112, 119, 124, 143, 144, 147, 148, 149, 152, 159, 164, 188, 207, 210, 241], "ndarrai": [5, 14, 15, 17, 18, 19, 29, 57, 76, 86, 87, 88, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 152, 159, 181, 182, 188, 189, 193, 195, 207, 210, 215, 216, 217, 218, 219, 220, 227, 230, 236, 246, 247, 248, 249, 251, 268, 270, 278, 280], "satisfi": [5, 7, 92, 103, 104, 229, 280], "condit": [5, 8, 24, 87, 92, 101, 102, 176, 182, 207, 208, 227, 268, 275, 276, 278, 279, 280, 281, 283, 309, 310, 318, 320, 326, 329, 331, 350, 352, 358], "integ": [5, 6, 7, 11, 12, 14, 18, 19, 22, 24, 27, 29, 32, 33, 34, 35, 36, 37, 39, 44, 46, 49, 57, 62, 64, 65, 69, 72, 76, 81, 83, 84, 87, 88, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 119, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 143, 152, 159, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 189, 193, 195, 196, 198, 202, 203, 204, 205, 207, 208, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 315], "vectortobinaryarrai": [5, 350], "scalar": [5, 6, 14, 39, 46, 87, 88, 94, 96, 102, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 196, 198, 207, 209, 215, 216, 217, 218, 219, 220, 238, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 264, 265, 281], "note": [5, 6, 11, 12, 14, 19, 22, 44, 69, 85, 87, 96, 112, 143, 227, 236, 238, 264, 278, 280, 285, 301, 306, 307, 308, 315, 319, 320, 325, 327, 328, 330, 331, 332, 336, 342, 358], "hardoutput": 5, "likelihood": [5, 12, 48, 49, 57, 60, 64, 71, 72, 76, 79, 83, 86, 88, 98, 99, 106, 114, 115, 119, 122, 126, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 189, 197, 210, 240, 257, 258, 268, 271, 319, 326, 331, 335, 336], "valu": [5, 6, 7, 8, 10, 11, 12, 15, 17, 18, 19, 21, 22, 24, 29, 32, 33, 35, 37, 39, 44, 46, 49, 55, 62, 64, 65, 69, 72, 74, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 188, 189, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 301, 302, 315, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 352, 358], "hammingdecod": [5, 315, 319], "bot": 5, "decodertyp": [5, 185, 320, 325, 335], "undergo": [5, 181], "determin": [5, 203, 204, 227, 228, 236, 238, 278, 281, 283, 304, 309, 329, 331, 332, 348], "whether": [5, 15, 17, 18, 19, 29, 39, 46, 48, 60, 62, 71, 79, 81, 86, 98, 103, 104, 114, 122, 124, 130, 131, 132, 134, 136, 137, 138, 139, 164, 170, 173, 184, 185, 188, 189, 204, 215, 216, 217, 218, 219, 220, 229, 233, 236, 238, 241, 246, 247, 258, 262, 266, 269, 271, 279, 348], "case": [5, 6, 7, 8, 10, 11, 14, 19, 37, 39, 44, 46, 55, 57, 64, 69, 74, 76, 83, 85, 87, 92, 93, 96, 102, 103, 104, 106, 112, 117, 119, 126, 130, 131, 132, 136, 137, 138, 139, 142, 143, 146, 149, 163, 167, 184, 198, 204, 207, 210, 215, 216, 218, 219, 220, 227, 228, 229, 235, 237, 238, 240, 244, 245, 246, 247, 254, 256, 262, 266, 270, 279, 305, 307, 309, 310, 315, 318, 327, 328, 335, 343, 353, 358], "hammingspheredecod": 5, "closest": 5, "within": [5, 39, 46, 85, 102, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 184, 189, 195, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 235, 236, 238, 246, 247, 248, 249, 251, 262, 266, 269, 270, 271, 272, 278, 280, 283, 285, 339], "radiu": [5, 17, 18, 19, 206, 324, 327, 328, 339, 342, 343], "minimum": [5, 8, 17, 19, 93, 202, 204, 205, 269, 270, 271, 280, 281, 302, 310, 318, 325, 338, 339, 340, 341, 342, 343, 344, 346, 348, 358], "distanc": [5, 18, 19, 196, 197, 198, 206, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "between": [5, 7, 8, 10, 11, 12, 14, 18, 19, 22, 39, 44, 46, 55, 62, 64, 69, 74, 81, 83, 87, 88, 92, 93, 94, 102, 106, 112, 117, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 163, 164, 167, 181, 182, 184, 189, 193, 195, 196, 198, 203, 204, 205, 207, 215, 216, 217, 218, 219, 220, 227, 235, 238, 240, 241, 246, 247, 249, 254, 262, 266, 268, 269, 270, 271, 275, 276, 280, 281, 285, 301, 306, 309, 318, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 358, 359], "soft": [5, 6, 12, 24, 48, 60, 64, 71, 79, 83, 96, 98, 101, 102, 106, 114, 122, 126, 163, 167, 170, 173, 207, 208, 240, 258, 315, 319], "hammingsyndromedecod": 5, "techniqu": [5, 102, 188, 193, 197, 202, 203, 204, 207, 214, 268, 269, 270, 271, 273, 275, 276, 280, 283, 301, 319, 320, 322, 323, 329, 331, 332, 333, 334, 346], "calcul": [5, 10, 55, 58, 64, 65, 74, 77, 83, 84, 94, 102, 106, 107, 108, 117, 120, 126, 127, 142, 146, 163, 165, 167, 168, 203, 206, 207, 211, 230, 240, 242, 264, 269, 270, 280, 301, 329, 331, 332, 333, 345], "vector": [5, 12, 14, 18, 19, 22, 25, 28, 87, 88, 181, 182, 185, 193, 227, 238, 244, 245, 254, 255, 256, 265, 315, 361], "repres": [5, 15, 22, 88, 181, 182, 202, 204, 205, 236, 264, 270, 301, 320], "equat": [5, 15, 33, 203, 204, 236, 250, 278], "identifi": [5, 29, 62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 202, 204, 205, 236, 240, 241, 242, 270, 271, 278, 285], "pattern": [5, 11, 14, 25, 26, 27, 28, 32, 44, 57, 58, 59, 65, 69, 76, 77, 78, 84, 102, 107, 112, 119, 120, 121, 127, 143, 153, 154, 158, 165, 168, 207, 210, 211, 212, 227, 236, 242, 270, 271, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351, 361], "network": [6, 35, 62, 64, 65, 81, 83, 84, 85, 86, 96, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 190, 236, 240, 241, 242, 244, 260, 261, 268, 269, 270, 271, 275, 276, 277, 278, 279, 280, 283, 286, 295, 299, 301, 309, 315, 318, 320, 329, 334, 336, 343, 348, 352, 358, 361], "commun": [6, 10, 28, 31, 55, 57, 74, 76, 96, 117, 119, 142, 146, 152, 159, 189, 196, 197, 199, 203, 204, 210, 261, 265, 268, 271, 273, 275, 276, 280, 281, 282, 283, 284, 285, 295, 299, 315, 320, 322, 323, 324, 333, 334, 336, 339, 346, 349, 353, 358], "over": [6, 10, 49, 55, 72, 74, 94, 96, 99, 115, 117, 142, 146, 169, 174, 193, 195, 203, 204, 205, 228, 238, 243, 257, 275, 276, 279, 281, 283, 295, 301, 315, 318, 333, 339, 342, 343, 346, 350, 352, 356, 358, 359, 360], "air": [6, 31, 94, 96, 296, 333, 336, 361], "achiev": [6, 96, 197, 268, 271, 279, 280, 281, 329, 331, 336], "capac": [6, 57, 76, 96, 119, 139, 152, 159, 210, 220, 283, 285, 336], "larg": [6, 8, 11, 16, 18, 44, 69, 87, 88, 93, 96, 102, 112, 143, 149, 181, 182, 196, 198, 206, 207, 234, 260, 268, 291, 294, 301, 320, 322, 323, 334, 336, 338, 340, 341, 344, 348, 349], "extrem": [6, 96, 278, 310, 318, 336], "robust": [6, 28, 96, 197, 198, 203, 204, 214, 268, 280, 283, 285, 301, 315, 329, 331, 333, 336], "against": [6, 10, 28, 55, 74, 96, 101, 117, 142, 146, 204, 208, 214, 280, 327, 328, 331, 336], "scalabl": [6, 96, 336], "effici": [6, 8, 18, 19, 93, 96, 203, 268, 271, 275, 276, 277, 279, 280, 281, 283, 285, 294, 301, 309, 315, 320, 322, 323, 324, 333, 334, 336, 346], "consumpt": [6, 18, 19, 22, 96, 202, 204, 280, 301, 306, 336], "silicon": [6, 96, 301, 336], "footprint": [6, 96, 336], "enhanc": [6, 96, 186, 197, 202, 268, 271, 281, 285, 299, 320, 322, 323, 331, 334, 336], "divers": [6, 58, 77, 96, 120, 202, 203, 204, 205, 211, 234, 268, 281, 327, 328, 336, 358], "easi": [6, 31, 96, 336, 358], "complex": [6, 10, 21, 22, 27, 29, 32, 33, 34, 35, 36, 37, 48, 55, 58, 60, 71, 74, 77, 79, 96, 98, 114, 117, 120, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 170, 173, 195, 196, 198, 202, 203, 204, 205, 206, 211, 215, 216, 217, 218, 219, 220, 246, 247, 254, 258, 269, 270, 272, 273, 274, 275, 276, 279, 281, 306, 318, 319, 327, 328, 336, 339, 358], "capabl": [6, 8, 11, 44, 69, 93, 96, 101, 112, 143, 149, 208, 310, 318, 329, 331, 336, 358], "consid": [6, 16, 18, 22, 29, 34, 36, 39, 46, 94, 96, 130, 131, 132, 134, 136, 137, 138, 184, 197, 206, 215, 216, 217, 218, 219, 238, 246, 247, 262, 266, 267, 278, 280, 281, 283, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 335, 336, 339, 342, 346, 348, 349, 351], "reliabl": [6, 10, 55, 74, 96, 117, 142, 146, 197, 234, 268, 269, 270, 271, 275, 276, 280, 281, 283, 285, 294, 329, 339, 349, 352, 358], "high": [6, 10, 19, 55, 74, 96, 117, 142, 146, 186, 189, 199, 203, 204, 206, 244, 245, 278, 280, 284, 304, 307, 315, 319, 320, 327, 328, 329, 333, 336, 338, 341, 344, 347, 352, 358, 361], "make": [6, 8, 11, 19, 28, 44, 65, 69, 84, 93, 96, 107, 112, 127, 143, 149, 162, 168, 198, 239, 280, 283, 326, 329, 342], "suitabl": [6, 96, 234, 281, 301, 304, 326, 329], "carri": [6, 18, 19, 38, 39, 46, 57, 62, 64, 65, 76, 81, 83, 84, 96, 102, 106, 107, 119, 124, 126, 127, 131, 132, 137, 162, 163, 164, 167, 168, 184, 207, 210, 216, 219, 234, 235, 236, 237, 239, 240, 241, 246, 249, 262, 266, 271, 276, 301, 304, 305, 306, 307, 308, 309, 315, 320, 327, 328, 331, 333, 335, 349, 350, 358], "result": [6, 7, 10, 19, 55, 74, 88, 92, 94, 96, 101, 117, 142, 146, 181, 182, 196, 197, 198, 199, 204, 206, 208, 264, 268, 278, 281, 289, 298, 301, 305, 306, 307, 310, 318, 327, 328, 329, 330, 331, 332, 338, 339, 340, 341, 343, 344, 345, 346, 352, 358, 359, 362], "more": [6, 11, 14, 15, 18, 19, 27, 28, 29, 44, 62, 69, 81, 87, 96, 102, 112, 124, 143, 164, 195, 196, 197, 198, 202, 204, 205, 207, 228, 231, 235, 236, 237, 241, 249, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 285, 305, 306, 307, 308, 309, 326, 331, 332, 339, 356, 357, 359], "comprehens": [6, 96], "analysi": [6, 96, 305, 306, 307, 308, 309, 318, 320, 352, 358], "pleas": [6, 87, 96, 102, 207, 209, 238, 244, 245, 254, 268, 269, 275, 276, 278, 280, 295, 301, 318, 320, 324, 325, 330, 331, 332, 335, 342, 349, 352, 356, 357, 358, 359, 360], "3gppts38212_ldpc": [6, 7, 8, 9, 11, 44, 69, 92, 93, 96, 112, 143, 148], "There": [6, 10, 55, 74, 96, 117, 132, 138, 142, 146, 236, 246, 247, 295], "few": [6, 7, 10, 11, 44, 55, 69, 74, 93, 96, 112, 117, 142, 143, 146, 148, 214, 272, 301, 327, 328, 346, 361], "illustr": [6, 10, 19, 49, 55, 72, 74, 96, 99, 115, 117, 142, 146, 171, 174, 195, 198, 206, 226, 234, 259, 336, 358], "how": [6, 10, 19, 55, 74, 96, 117, 142, 144, 146, 147, 227, 270, 275, 276, 279, 283, 295, 297, 304, 315, 320, 326, 339, 342, 343, 346], "slightli": [6, 39, 46, 96, 262, 266, 329, 362], "comparison": [6, 11, 44, 69, 96, 112, 143, 195, 196, 197, 198, 289, 291, 301, 304, 318, 327, 328, 352, 358], "becaus": [6, 96, 236, 295, 301, 306, 343], "allow": [6, 8, 11, 15, 16, 18, 19, 29, 39, 44, 46, 62, 69, 81, 93, 96, 112, 124, 139, 143, 149, 164, 184, 186, 196, 204, 206, 220, 226, 241, 250, 262, 266, 271, 280, 285, 294, 331, 332, 339, 346, 349], "onli": [6, 10, 14, 18, 19, 21, 22, 24, 26, 27, 35, 37, 39, 46, 49, 55, 57, 64, 65, 72, 74, 76, 83, 84, 85, 86, 87, 95, 96, 99, 101, 102, 106, 107, 115, 117, 119, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 146, 163, 165, 167, 168, 171, 174, 184, 189, 195, 196, 197, 204, 205, 206, 207, 208, 210, 215, 216, 218, 219, 220, 227, 233, 235, 236, 237, 238, 240, 242, 244, 246, 247, 249, 254, 259, 265, 267, 268, 269, 272, 273, 274, 275, 276, 278, 281, 285, 294, 295, 298, 305, 315, 327, 329, 338, 339, 343, 346, 356, 357, 359, 360], "fix": [6, 12, 96, 198, 250, 352, 358], "lift": [6, 8, 9, 87, 88, 93, 96, 102, 207, 209, 336], "factor": [6, 9, 14, 18, 19, 87, 88, 96, 102, 103, 104, 131, 134, 136, 137, 139, 202, 205, 207, 209, 216, 217, 218, 219, 220, 228, 229, 231, 244, 245, 254, 265, 268, 279, 283, 307, 308, 327, 328, 331, 332, 333, 336, 347, 352], "transport": [6, 7, 8, 9, 11, 12, 39, 44, 46, 69, 85, 86, 87, 88, 89, 90, 91, 93, 95, 96, 102, 112, 143, 148, 149, 180, 181, 182, 183, 184, 186, 207, 209, 262, 264, 266, 294, 322, 323, 336], "wa": [6, 57, 76, 96, 119, 152, 159, 210, 273, 348], "done": [6, 96], "have": [6, 7, 8, 11, 14, 17, 18, 19, 24, 25, 29, 44, 64, 65, 69, 83, 84, 92, 93, 96, 101, 102, 106, 107, 112, 126, 127, 143, 148, 163, 165, 167, 168, 182, 185, 189, 193, 195, 196, 197, 198, 199, 204, 206, 207, 208, 235, 236, 237, 240, 242, 244, 245, 255, 256, 270, 271, 275, 276, 278, 279, 295, 301, 302, 306, 307, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 346, 348, 349, 351, 353, 356, 357, 359, 360, 361], "flexibl": [6, 16, 96, 306, 308], "realtim": [6, 96], "fast": [6, 19, 96, 280], "tbsize": [6, 7, 9, 11, 44, 69, 87, 93, 96, 100, 102, 112, 143, 148, 186, 207, 209, 294, 336, 351], "lpdcconfig": [6, 96, 336], "ldpcparamet": [6, 9, 96, 336], "k_ldpc": [6, 9, 88, 96, 186, 336], "bg": [6, 87, 96, 336], "basegraph": [6, 7, 8, 9, 93, 96, 100, 102, 186, 207, 209, 336], "graph": [6, 7, 8, 87, 93, 96, 102, 207, 209, 280, 331, 332, 336], "bg1": [6, 9, 96, 102, 207, 209], "bg2": [6, 9, 96, 102, 207, 209], "zc": [6, 8, 87, 93, 96, 186, 336], "liftingfactor": [6, 9, 88, 96, 100, 102, 186, 207, 209, 336], "numcb": [6, 88, 96, 100, 102, 148, 149, 186, 207, 294, 301, 336, 351], "numcodeblock": [6, 9, 96, 100, 102, 186, 207, 209, 336], "numbatch": [6, 10, 11, 12, 22, 25, 29, 44, 49, 55, 65, 69, 72, 74, 84, 86, 87, 88, 91, 95, 96, 99, 107, 108, 112, 115, 117, 127, 129, 132, 138, 142, 143, 144, 146, 147, 148, 149, 165, 168, 171, 174, 176, 179, 182, 189, 215, 216, 217, 218, 219, 220, 228, 232, 233, 242, 246, 247, 259, 271, 275, 276, 281, 294, 301, 319, 322, 323, 325, 326, 333, 335, 336, 348, 350, 351], "ldpcencoder5g": [6, 96, 186, 336], "encbit": [6, 96, 184, 185, 315, 319, 335, 336], "tf": [6, 10, 11, 32, 33, 44, 49, 55, 69, 72, 74, 96, 99, 112, 115, 117, 142, 143, 146, 149, 171, 174, 182, 259, 301, 315, 362], "kwarg": [6, 10, 32, 33, 48, 49, 55, 60, 71, 72, 74, 79, 96, 98, 99, 114, 115, 117, 122, 142, 146, 170, 171, 173, 174, 258, 259, 289], "nr": [6, 10, 15, 18, 29, 55, 74, 96, 103, 104, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 175, 181, 182, 184, 185, 186, 188, 189, 196, 198, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 248, 251, 278, 284, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 346, 348, 349, 351, 361], "util": [6, 96, 202, 254, 275, 276, 280, 281, 285, 333, 350, 362], "mani": [6, 23, 28, 96, 214, 236, 272, 274, 295, 358], "broken": [6, 8, 10, 11, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 146, 148, 149], "complianc": [6, 96], "further": [6, 8, 85, 92, 96, 148, 202, 236, 275, 308, 326, 347, 352, 356, 357, 358, 359], "usabl": [6, 96], "tabl": [6, 11, 14, 18, 19, 25, 27, 28, 40, 44, 59, 69, 78, 87, 88, 94, 95, 96, 102, 103, 104, 112, 121, 143, 154, 158, 169, 195, 205, 206, 207, 209, 212, 226, 228, 229, 231, 233, 236, 257, 260, 264, 265, 280, 302, 315, 318, 319, 325, 327, 329, 333, 336, 338, 340, 341, 342, 344, 352, 358], "valid": [6, 14, 18, 19, 29, 64, 65, 83, 84, 87, 88, 94, 96, 102, 106, 107, 126, 127, 132, 138, 163, 165, 167, 168, 181, 182, 207, 233, 236, 240, 242, 246, 247, 260, 261, 262, 263, 264, 265, 266, 267, 278, 285, 287, 288, 289, 291, 294, 315, 318, 323, 324, 334, 348, 349, 358], "default": [6, 7, 10, 11, 12, 14, 15, 17, 18, 19, 21, 44, 55, 69, 74, 85, 86, 87, 88, 92, 95, 96, 102, 103, 104, 108, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 181, 182, 196, 198, 202, 203, 204, 205, 206, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 235, 236, 238, 246, 247, 263, 264, 267, 268, 269, 270, 271, 273, 274, 275, 276, 278, 279, 280, 281], "datatyp": [6, 10, 12, 55, 74, 96, 102, 108, 117, 142, 146, 209], "precis": [6, 10, 55, 74, 96, 117, 142, 146, 199, 203, 204, 284, 285, 302, 329, 331, 333], "remain": [6, 10, 55, 74, 87, 96, 117, 142, 146, 198, 206, 230, 231, 260, 266, 272, 325, 327, 328, 330, 331, 332, 339, 346, 348], "uint8": [6, 96], "tensor": [6, 10, 11, 12, 15, 25, 32, 44, 55, 69, 74, 87, 96, 112, 117, 142, 143, 146, 149, 182, 315, 336], "besid": [6, 96, 182], "last": [6, 8, 32, 62, 81, 92, 96, 124, 148, 164, 182, 234, 238, 241, 278, 289, 301, 315], "chang": [6, 65, 84, 96, 107, 127, 165, 168, 182, 235, 237, 242, 269, 271, 275, 276, 280, 281, 283, 298, 306, 315, 320, 324, 325, 342, 349], "string": [6, 10, 11, 29, 39, 44, 46, 55, 69, 74, 87, 88, 94, 96, 102, 103, 104, 112, 117, 130, 131, 132, 138, 142, 143, 146, 181, 182, 188, 207, 215, 216, 227, 229, 233, 236, 238, 246, 247, 262, 264, 265, 266, 269, 270, 271, 275, 276, 278, 280, 281, 339, 342, 343, 346], "unsupport": [6, 96], "i_l": [6, 96, 186], "too": [6, 96], "cannot": [6, 10, 11, 33, 35, 37, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149, 278, 325, 335, 339, 342, 343, 345, 346], "neg": [6, 32, 94, 96, 130, 131, 132, 136, 137, 202, 203, 204, 205, 215, 216, 218, 219, 237, 246, 248, 249, 251], "properti": [6, 7, 8, 10, 12, 19, 22, 24, 39, 46, 55, 62, 64, 65, 74, 81, 83, 84, 93, 96, 101, 102, 106, 107, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 163, 164, 165, 167, 168, 184, 185, 195, 203, 207, 208, 209, 215, 216, 217, 218, 219, 220, 237, 240, 241, 242, 244, 245, 246, 247, 254, 265, 268, 273, 279, 298, 302, 322, 323, 334, 339, 346], "bm": [6, 96, 186], "matrix": [6, 22, 29, 96, 193, 195, 203, 204, 205, 269, 279, 283, 302, 322, 323, 332, 334, 351], "construct": [6, 96, 286, 289, 291, 295, 352], "computeil": [6, 96, 186], "sec": [6, 18, 19, 96, 285, 339, 342], "index": [6, 18, 19, 32, 39, 46, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 85, 87, 88, 90, 91, 94, 96, 98, 99, 102, 103, 104, 106, 107, 114, 115, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 162, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 204, 207, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 236, 237, 238, 239, 240, 242, 246, 247, 248, 249, 251, 254, 258, 259, 262, 264, 265, 266, 270, 272, 273, 278, 279, 280, 282, 285, 287, 288, 289, 291, 294, 302, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 332, 334, 339, 348, 350, 351, 352, 358], "specifi": [6, 8, 12, 14, 15, 17, 18, 19, 24, 29, 87, 92, 94, 96, 101, 102, 175, 176, 181, 182, 195, 207, 208, 227, 230, 236, 238, 268, 270, 278, 280, 302, 309, 315, 327, 328, 329, 330, 331, 332, 334], "exact": [6, 65, 84, 96, 107, 127, 162, 168, 239, 301], "befor": [6, 7, 9, 25, 27, 34, 36, 37, 59, 64, 78, 83, 88, 93, 96, 106, 121, 126, 163, 167, 195, 212, 240, 358, 359], "ratematch": [6, 7, 10, 24, 26, 28, 55, 57, 58, 59, 74, 76, 77, 78, 92, 96, 101, 102, 117, 119, 120, 121, 142, 146, 152, 153, 154, 158, 159, 184, 207, 208, 209, 210, 211, 212, 320, 336], "n_ldpc": [6, 9, 88, 96, 186], "prune": [6, 96], "pcm": [6, 58, 77, 96, 120, 186, 211], "z": [6, 96, 138, 139, 186, 196, 220, 247], "belief": [6, 96], "propag": [6, 15, 18, 19, 96, 193, 195, 198, 203, 204, 231, 268, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 352, 358], "compliant": [6, 8, 16, 19, 92, 96, 144, 145, 147, 148, 238, 243, 299, 301, 327, 328, 330, 331, 361], "inherit": [6, 10, 55, 74, 96, 117, 142, 146], "librari": [6, 29, 96, 227, 236, 278, 286, 290, 292, 293, 295, 310, 318, 347, 352, 357, 358], "rxcodeword": [6, 96, 336], "denot": [6, 8, 29, 93, 96, 132, 138, 184, 185, 188, 196, 198, 203, 204, 205, 206, 235, 244, 245, 246, 247, 254, 256, 265, 275, 276, 278, 281, 304, 305, 306, 307, 308, 309, 327, 328], "logit": [6, 10, 11, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149], "ldpcdecoder5g": [6, 96, 186, 336], "decbit": [6, 7, 9, 62, 81, 93, 96, 124, 164, 241, 315, 319, 336], "trainabl": [6, 96, 315], "cn_type": [6, 96], "boxplu": [6, 96], "phi": [6, 14, 96, 193, 195, 196, 324, 331, 348, 349], "track_exit": [6, 96], "return_infobit": [6, 96], "prune_pcm": [6, 96, 186], "num_it": [6, 10, 11, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146], "output_dtyp": [6, 10, 54, 55, 73, 74, 96, 116, 117, 142, 146, 184, 185, 188, 189], "iter": [6, 10, 11, 29, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 196, 198, 206, 268, 279, 305], "tractabl": [6, 96], "differentiabilil": [6, 96], "kera": [6, 10, 55, 74, 96, 117, 142, 146, 301, 315], "everi": [6, 19, 96, 198, 206, 236, 249, 270, 275, 281, 298, 302, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 344, 348, 349, 350, 351, 353, 358], "outgo": [6, 96], "scale": [6, 8, 16, 18, 87, 88, 90, 91, 93, 94, 96, 103, 104, 131, 137, 181, 182, 184, 188, 216, 219, 228, 229, 231, 244, 245, 264, 265, 285, 315, 319, 327, 328, 331, 333, 334, 338, 340, 341, 342, 344, 358], "A": [6, 8, 10, 14, 15, 17, 18, 19, 24, 29, 33, 55, 64, 65, 74, 83, 84, 85, 89, 93, 96, 101, 102, 103, 104, 106, 107, 108, 117, 126, 127, 142, 146, 162, 163, 165, 167, 168, 189, 197, 199, 207, 208, 227, 229, 233, 236, 238, 239, 240, 242, 262, 263, 264, 266, 271, 278, 279, 284, 294, 310, 318, 331, 348, 351, 352, 358], "One": [6, 87, 96, 196, 197, 198, 199, 274, 278, 304, 315, 347, 352], "minsum": [6, 96], "where": [6, 7, 8, 10, 11, 14, 15, 18, 19, 24, 26, 28, 29, 32, 39, 44, 46, 55, 58, 59, 69, 74, 77, 78, 85, 86, 88, 91, 92, 93, 95, 96, 101, 102, 103, 104, 108, 112, 117, 120, 121, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 154, 158, 181, 182, 184, 189, 196, 198, 202, 203, 204, 205, 206, 207, 208, 211, 212, 218, 219, 220, 227, 228, 229, 230, 231, 234, 235, 236, 237, 244, 245, 247, 248, 249, 251, 252, 253, 254, 255, 256, 262, 264, 266, 267, 269, 270, 271, 275, 278, 279, 280, 281, 294, 295, 302, 304, 307, 309, 315, 319, 322, 323, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 351, 356, 357, 359, 362], "singl": [6, 14, 19, 32, 37, 85, 89, 96, 103, 104, 181, 229, 233, 254, 273, 276, 279, 281, 285, 288, 289, 291, 294, 295, 302, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 361], "rule": [6, 96], "numer": [6, 11, 27, 44, 69, 96, 112, 143, 280, 358, 362], "stabl": [6, 96, 280], "version": [6, 8, 15, 18, 24, 33, 58, 77, 87, 88, 90, 91, 92, 94, 96, 101, 102, 103, 104, 120, 130, 131, 132, 134, 136, 137, 138, 139, 145, 175, 181, 182, 184, 185, 186, 188, 203, 204, 207, 208, 209, 211, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 253, 256, 260, 284, 301, 356, 357, 358, 359, 360, 361], "ryan": [6, 96], "min": [6, 29, 32, 96, 281, 285, 289, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "approxim": [6, 29, 96, 269, 276], "cn": [6, 96], "updat": [6, 96, 128, 133, 140, 177, 178, 192, 194, 195, 199, 223, 224, 225, 301, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 356, 358, 359], "decid": [6, 11, 12, 44, 69, 96, 112, 143, 149, 206, 283], "instead": [6, 94, 96, 268, 325, 335], "track": [6, 19, 96, 233, 296, 324, 329, 331, 332, 342, 343], "exit": [6, 96], "characterist": [6, 96, 269, 270, 271, 275, 276, 281, 304, 320, 322, 323, 327, 328, 331, 334, 339, 346, 347, 352, 358], "cw": [6, 96], "info": [6, 96, 350], "punctur": [6, 57, 76, 96, 102, 119, 207, 210], "degre": [6, 14, 19, 96, 342, 345], "vn": [6, 96], "connect": [6, 14, 19, 96, 280, 285, 289, 347, 352, 358], "see": [6, 19, 96, 278, 305, 306, 307, 308, 309, 331, 332, 342, 362], "cammer": [6, 96], "yield": [6, 96], "improv": [6, 26, 27, 28, 58, 77, 96, 101, 120, 195, 196, 198, 202, 203, 204, 206, 208, 211, 214, 268, 269, 271, 275, 276, 279, 281, 283, 285, 302, 304, 320, 327, 328, 329, 331, 332], "throughput": [6, 96, 268, 279, 280, 281, 283, 285, 294, 318, 320, 334, 351, 352, 358], "reduc": [6, 19, 27, 37, 57, 65, 76, 84, 87, 88, 94, 96, 102, 107, 119, 127, 162, 168, 181, 182, 196, 198, 204, 206, 207, 210, 239, 264, 280, 301, 306, 310, 315, 318, 358], "memori": [6, 10, 11, 18, 19, 22, 44, 55, 69, 74, 87, 88, 96, 112, 117, 142, 143, 146, 149, 181, 182, 195, 202, 204, 301, 327, 328, 358], "earli": [6, 27, 96], "stop": [6, 96, 196, 198, 202, 206, 285, 288, 289, 291, 294], "moment": [6, 96, 301], "msg_vn": [6, 96], "need": [6, 32, 96, 196, 198, 278, 309, 329], "when": [6, 11, 12, 14, 15, 17, 18, 19, 21, 22, 35, 37, 39, 44, 46, 48, 60, 64, 69, 71, 79, 83, 86, 87, 95, 96, 98, 106, 112, 114, 122, 126, 143, 163, 167, 170, 173, 182, 184, 188, 196, 198, 206, 227, 233, 235, 236, 237, 240, 244, 245, 249, 255, 256, 258, 262, 265, 266, 267, 269, 275, 276, 278, 280, 285, 305, 307, 308, 309, 315, 319, 329, 332, 339, 342, 343, 348], "llrs_ch": [6, 96], "tupl": [6, 9, 18, 85, 86, 96, 189, 203, 204, 205, 206, 237, 269, 278], "raggedtensor": [6, 96], "rag": [6, 96], "wise": [6, 26, 37, 65, 84, 96, 107, 127, 162, 168, 239], "assert": [6, 96, 268], "two": [6, 14, 18, 29, 32, 48, 57, 60, 64, 65, 71, 76, 79, 83, 84, 86, 87, 89, 95, 96, 98, 102, 106, 107, 114, 119, 122, 126, 127, 138, 145, 162, 163, 167, 168, 170, 173, 180, 181, 182, 195, 196, 197, 198, 199, 203, 205, 209, 210, 234, 236, 239, 240, 247, 250, 255, 256, 258, 278, 281, 294, 302, 307, 309, 315, 327, 328, 329, 330, 331, 332, 334, 343, 344, 345, 350], "float16": [6, 96], "float64": [6, 96, 181, 189, 331], "lot": [6, 96, 301], "welcom": [6, 96], "everyon": [6, 96], "go": [6, 96, 315, 356, 359, 360], "i_": [6, 96], "l": [6, 8, 29, 33, 39, 46, 93, 95, 96, 108, 184, 186, 193, 195, 196, 203, 204, 205, 227, 230, 231, 235, 236, 237, 248, 249, 251, 254, 262, 266, 270, 272, 278, 289, 291, 294, 301, 302, 320, 325, 327, 328, 329, 330, 331, 332, 333, 342, 348, 349, 358, 362], "dot": [6, 7, 8, 11, 12, 24, 39, 44, 46, 69, 85, 93, 96, 101, 102, 103, 104, 112, 143, 148, 182, 184, 188, 189, 206, 207, 208, 228, 229, 230, 231, 232, 233, 235, 236, 254, 256, 262, 263, 264, 266, 269, 270, 271, 272, 274, 278, 301, 302, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337], "llr_max": [6, 10, 54, 55, 73, 74, 96, 116, 117, 142, 146, 184, 185, 186, 188, 189], "maximum": [6, 7, 8, 10, 11, 14, 17, 19, 27, 29, 39, 44, 46, 55, 64, 65, 69, 74, 83, 84, 87, 89, 93, 96, 106, 107, 112, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 163, 165, 167, 168, 180, 184, 197, 202, 204, 205, 215, 216, 217, 218, 219, 220, 227, 235, 236, 237, 238, 240, 242, 246, 247, 249, 254, 262, 266, 268, 271, 272, 278, 281, 305, 331, 348, 350], "avoid": [6, 96, 206, 306], "satur": [6, 10, 55, 74, 96, 117, 142, 146], "after": [6, 7, 8, 9, 10, 11, 12, 19, 26, 27, 37, 44, 55, 57, 69, 74, 76, 88, 92, 93, 95, 96, 102, 108, 112, 117, 119, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 152, 159, 175, 182, 189, 199, 204, 207, 210, 215, 216, 217, 218, 219, 220, 238, 246, 247, 269, 270, 285, 298, 320, 325, 338, 339, 340, 341, 342, 343, 344, 346, 350], "truncat": [6, 9, 57, 76, 88, 96, 102, 119, 207, 210], "nb_pruned_nod": [6, 96, 186], "preprocess": [6, 96, 203, 204, 281, 318, 358], "codeblock": [6, 9, 11, 24, 44, 64, 65, 69, 83, 84, 95, 96, 101, 102, 106, 107, 108, 112, 126, 127, 143, 148, 149, 163, 165, 167, 168, 186, 207, 208, 240, 242, 326, 330, 336], "segment": [6, 7, 9, 10, 24, 43, 55, 68, 74, 87, 92, 95, 96, 101, 102, 111, 117, 141, 142, 145, 146, 148, 150, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 207, 208], "concaten": [6, 7, 10, 43, 55, 68, 74, 87, 95, 96, 111, 117, 141, 142, 146, 150, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 294, 320, 322, 323, 327, 328, 329, 330, 331, 332, 349, 351], "codeblocksegment": [6, 7, 8, 10, 11, 43, 44, 68, 69, 93, 95, 111, 112, 141, 142, 143, 148, 149, 150, 184, 185, 186, 188, 189], "codeblockconcaten": [6, 8, 10, 11, 43, 44, 68, 69, 92, 95, 111, 112, 141, 142, 143, 148, 150, 184, 185, 186, 188, 189], "segreg": [6, 10, 43, 68, 111, 141, 142, 150, 175, 179, 181, 184, 185, 186, 188, 189, 362], "codeblocksegreg": [6, 7, 8, 10, 11, 43, 44, 68, 69, 92, 93, 111, 112, 141, 142, 143, 148, 150, 184, 185, 186, 188, 189], "aggreg": [6, 9, 10, 43, 68, 108, 111, 141, 142, 150, 175, 179, 181, 184, 185, 186, 188, 189, 227, 230, 236, 278, 304, 306, 307, 308, 309, 310, 318, 325, 327, 328, 349, 352, 358], "codeblockaggreg": [6, 7, 10, 11, 43, 44, 68, 69, 93, 111, 112, 141, 142, 143, 148, 149, 150, 184, 185, 186, 188, 189], "introduct": [6, 96, 315], "handbook": [6, 96, 198], "record": [6, 96], "2004": [6, 96], "ebada": [6, 96], "elkelesh": [6, 96], "ten": [6, 96], "brink": [6, 96], "spars": [6, 19, 32, 96, 327, 346], "ieee": [6, 10, 55, 74, 96, 117, 142, 146, 198, 199, 284, 301, 315], "symposium": [6, 96, 199, 284], "theori": [6, 96, 198], "isit": [6, 96], "2018": [6, 96], "complement": 7, "opposit": [7, 28, 59, 78, 92, 93, 95, 121, 148, 149, 154, 158, 175, 181, 212], "break": [7, 8, 11, 44, 69, 92, 93, 112, 143, 148, 149, 320, 324, 325, 349], "numcbgrp1": [7, 92], "numrmop1": [7, 92], "cbsegreg": [7, 92], "cbsegregatellr": [7, 92], "numcbgrp2": [7, 92], "numrmop2": [7, 92], "numcbs1": [7, 92], "numbits1": [7, 23, 24, 85, 92, 100, 101, 186, 208], "numcbs2": [7, 92], "numbits2": [7, 23, 24, 85, 92, 100, 101, 186, 208], "divid": [7, 29, 59, 78, 92, 95, 102, 121, 176, 182, 186, 189, 207, 212, 227, 269, 270, 331, 333], "Then": [7, 92, 182, 249], "target": [7, 8, 10, 11, 44, 55, 57, 58, 69, 74, 76, 77, 88, 92, 93, 102, 112, 117, 119, 120, 142, 143, 146, 148, 149, 152, 159, 176, 181, 182, 185, 188, 189, 196, 199, 207, 209, 210, 211, 213, 214, 280, 299, 310, 318, 320, 325, 356, 357, 358, 359, 360], "consist": [7, 10, 18, 19, 39, 46, 55, 74, 85, 86, 87, 92, 95, 102, 117, 130, 131, 132, 136, 137, 138, 142, 146, 184, 186, 189, 196, 197, 198, 209, 213, 215, 216, 218, 219, 227, 246, 247, 262, 264, 266, 270, 274, 285, 289, 291, 294, 299, 315, 347, 348, 352, 358, 361], "g": [7, 8, 24, 92, 101, 102, 181, 182, 207, 208, 238, 285, 302, 305, 307, 308, 320, 322, 323, 327, 328, 329, 330, 331, 332, 338, 339, 340, 341, 344, 346, 349, 350, 351], "bitselect": [7, 56, 57, 75, 76, 92, 100, 102, 118, 119, 150, 152, 157, 159, 160, 184, 185, 186, 188, 189, 207, 210, 336], "sum_": [7, 8, 24, 32, 33, 92, 101, 102, 182, 207, 208, 270, 281], "els": [7, 92, 130, 131, 132, 136, 137, 138, 139, 145, 182, 196, 197, 198, 199, 215, 216, 217, 218, 219, 220, 246, 247, 289, 291, 294, 301, 302, 322, 323, 327, 328, 329, 330, 331, 332, 334, 336, 348, 350, 351], "crash": [7, 92, 359], "numcbsi": [7, 92], "numbitsi": [7, 92], "ot": [7, 8, 19, 39, 46, 92, 93], "float": [7, 8, 11, 12, 14, 15, 17, 18, 19, 21, 39, 44, 46, 64, 69, 83, 86, 88, 92, 93, 94, 103, 104, 106, 112, 126, 143, 148, 163, 167, 185, 188, 193, 196, 198, 199, 202, 203, 204, 205, 206, 228, 229, 238, 240, 244, 245, 254, 268, 273, 275, 280, 281, 358, 362], "mismatch": [7, 92, 193, 235], "larger": [7, 8, 92, 93, 102, 202, 204, 205, 207, 237, 301, 307, 309, 326, 331], "than": [7, 8, 11, 12, 14, 17, 19, 27, 33, 35, 37, 39, 44, 46, 48, 60, 62, 64, 65, 69, 71, 79, 81, 83, 84, 92, 93, 98, 102, 106, 107, 112, 114, 122, 124, 126, 127, 143, 144, 145, 147, 163, 164, 165, 167, 168, 170, 173, 189, 193, 195, 196, 197, 198, 202, 203, 204, 205, 207, 227, 228, 231, 233, 235, 237, 238, 240, 241, 242, 244, 245, 258, 267, 270, 278, 279, 280, 298, 301, 306, 307, 309, 339, 342, 343, 345, 346, 356, 357, 359], "numbit": [7, 49, 72, 92, 99, 102, 115, 171, 174, 207, 259, 323, 333], "reconstruct": [7, 93, 149, 315, 352, 361], "mac": [7, 87, 93, 94, 149, 260, 282], "understand": [7, 64, 65, 83, 84, 93, 106, 107, 126, 127, 144, 147, 149, 163, 165, 167, 168, 238, 240, 242, 249, 278, 280, 297, 339, 358], "650390625": [7, 8, 9, 93, 95], "tblen": [7, 93, 108], "cbaggreg": [7, 93], "rtbwithcrc": [7, 93, 108], "api": [7, 8, 10, 11, 22, 44, 49, 55, 69, 72, 74, 92, 93, 99, 112, 115, 117, 142, 143, 146, 148, 149, 171, 174, 186, 189, 192, 193, 194, 195, 202, 203, 204, 205, 206, 244, 245, 254, 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, 274, 295, 358, 361], "ani": [7, 8, 14, 19, 32, 93, 94, 132, 134, 139, 181, 182, 217, 220, 227, 236, 238, 244, 245, 246, 270, 278, 279, 295, 298, 315, 325, 356, 357, 359, 360], "mciindex": [7, 8, 93], "computetransportblocks": [7, 8, 9, 93, 94, 186, 294, 301, 322, 323, 351], "includ": [7, 11, 14, 15, 16, 18, 19, 26, 44, 57, 69, 76, 87, 93, 112, 119, 143, 144, 145, 147, 148, 152, 159, 203, 204, 210, 227, 268, 269, 270, 271, 273, 275, 276, 277, 280, 281, 283, 295, 298, 315, 320, 325, 331, 332, 338, 340, 341, 344], "relat": [7, 11, 38, 39, 44, 46, 69, 93, 112, 143, 148, 238, 260, 264, 267, 293, 295, 298, 346, 353, 358], "non": [7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 29, 44, 55, 57, 69, 74, 76, 93, 112, 117, 119, 130, 131, 132, 136, 137, 142, 143, 146, 148, 149, 152, 159, 193, 195, 202, 203, 204, 205, 210, 215, 216, 218, 219, 227, 230, 238, 246, 248, 249, 251, 260, 261, 270, 278, 299, 308, 315, 329, 333, 361], "ve": [7, 8, 9, 11, 44, 57, 62, 64, 65, 69, 76, 81, 83, 84, 93, 106, 107, 112, 119, 124, 126, 127, 143, 148, 152, 159, 163, 164, 165, 167, 168, 189, 210, 231, 240, 241, 242], "c": [7, 8, 10, 14, 19, 33, 55, 64, 65, 74, 83, 84, 93, 106, 107, 117, 126, 127, 142, 146, 163, 165, 167, 168, 186, 194, 198, 204, 227, 236, 240, 242, 249, 254, 265, 270, 285, 287, 289, 291, 294, 304, 305, 306, 307, 308, 315, 327, 328, 334, 339, 342, 346, 348], "kbar": [7, 8, 93, 186], "kcb": [7, 93, 186], "measur": [7, 93, 196, 197, 198, 199, 200, 203, 205, 206, 275, 276, 302, 309, 329, 330, 332, 352, 358, 361], "packet": [7, 85, 87, 93, 94, 283], "best": [8, 10, 11, 44, 55, 69, 74, 93, 112, 117, 142, 143, 146, 149, 195, 280, 291, 294, 302, 320, 322, 323, 324, 329, 330, 332, 334, 348, 349, 351, 352, 358, 362], "To": [8, 28, 93, 128, 133, 140, 149, 177, 178, 189, 223, 224, 225, 233, 264, 301, 329, 342, 356, 357, 358, 359, 360, 362], "shall": [8, 12, 93, 94, 103, 104, 149, 228, 229, 231, 279], "bound": [8, 17, 88, 93, 149, 325, 327, 328, 334], "limit": [8, 87, 88, 90, 91, 93, 94, 102, 149, 181, 182, 196, 197, 198, 206, 207, 209, 244, 245, 254, 298, 308, 318, 327, 328], "exce": [8, 14, 17, 19, 93, 149, 236, 278, 309], "smaller": [8, 93, 149, 309], "individu": [8, 11, 44, 69, 92, 93, 112, 143, 148, 149, 197], "ratemat": [8, 93, 149], "dematch": [8, 93, 149, 189], "upcom": [8, 9, 31, 65, 84, 93, 107, 127, 149, 162, 168, 239, 243, 358, 361], "small": [8, 10, 11, 12, 16, 18, 44, 55, 69, 74, 93, 112, 117, 141, 142, 143, 145, 146, 149, 150, 156, 157, 176, 179, 186, 196, 198, 206, 227, 234, 244, 245, 307, 326, 335, 338, 340, 341, 344, 346], "demonstr": [8, 11, 12, 44, 62, 69, 81, 92, 93, 94, 95, 112, 124, 143, 148, 149, 164, 205, 241, 289, 291, 294, 295, 304, 326, 327, 328, 330, 331, 332, 347, 349, 352, 358], "wai": [8, 11, 12, 18, 19, 44, 64, 69, 83, 93, 106, 112, 126, 143, 149, 163, 167, 195, 198, 205, 240, 265, 280, 358], "crctblock": [8, 93, 95, 108], "cbsegment": [8, 93, 95], "212": [8, 10, 11, 12, 24, 44, 55, 69, 74, 87, 92, 93, 95, 101, 102, 108, 112, 117, 142, 143, 145, 146, 149, 175, 181, 182, 207, 208, 301], "inputs": [8, 9, 93], "lpdc": [8, 93, 182], "kb": [8, 93, 186, 315], "rmbit": [8, 92, 95, 184], "3gppts38212pdsch": [8, 24, 92, 101, 102, 186, 207, 208], "python": [8, 24, 29, 92, 101, 208, 227, 236, 278, 286, 290, 292, 293, 295, 310, 318, 347, 352, 356, 357, 358, 359, 360, 361], "tblength": [9, 94], "ldpcparam": 9, "liftfactor": 9, "ncb": [9, 100, 102, 186, 207], "relev": [9, 10, 11, 18, 19, 21, 44, 55, 65, 69, 74, 84, 107, 112, 117, 127, 142, 143, 146, 162, 168, 205, 206, 239, 244, 260, 267, 269, 275, 276, 281, 299, 346, 360], "physicalchannel": [9, 25, 85, 86, 87, 88, 94, 95, 108, 181, 182, 184, 185, 188, 189, 285, 287, 288, 289, 291, 294, 301, 320, 322, 323, 324, 325, 348, 349, 350, 351], "form": [9, 196, 227, 244, 245, 269, 270, 278, 283, 295, 298, 299], "mcsindex": [9, 87, 88, 90, 91, 94, 181, 182, 264, 280, 294, 301, 322, 323, 351], "packag": [10, 55, 74, 117, 142, 146, 195, 205, 206, 226, 243, 289, 302, 320, 332, 348, 349, 356, 357, 359, 360], "build": [10, 18, 19, 55, 74, 117, 142, 146], "top": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "level": [10, 11, 15, 16, 18, 19, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 186, 189, 206, 227, 230, 236, 243, 275, 278, 279, 280, 281, 304, 306, 307, 308, 309, 310, 318, 325, 327, 328, 329, 330, 331, 332, 338, 340, 341, 344, 352, 358, 361], "easili": [10, 55, 74, 117, 142, 146, 295, 327, 328, 356, 357, 359, 360, 361], "integr": [10, 55, 74, 117, 142, 146, 299, 325, 335, 358, 361], "convei": [10, 39, 46, 55, 64, 74, 83, 106, 117, 126, 142, 146, 163, 167, 184, 240, 262, 266, 285], "wireless": [10, 22, 28, 49, 55, 72, 74, 99, 115, 117, 142, 146, 169, 174, 190, 193, 195, 196, 197, 198, 203, 204, 228, 243, 257, 268, 271, 273, 275, 276, 280, 281, 283, 285, 295, 298, 318, 333, 334, 339, 343, 347, 352, 353, 358], "mother": [10, 55, 74, 117, 142, 146], "seg": [10, 55, 74, 117, 142, 146], "il": [10, 11, 27, 44, 55, 69, 74, 112, 117, 142, 143, 145, 146, 302, 327, 328, 329, 330, 331, 332], "bil": [10, 26, 55, 58, 74, 77, 117, 120, 142, 146, 153, 158, 211], "512": [10, 55, 65, 74, 84, 107, 117, 127, 142, 146, 165, 168, 175, 184, 242, 285, 287, 288, 291, 301, 324, 333, 336, 338, 340, 341, 344, 348, 349], "864": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 184, 235, 237, 248, 251, 335], "140": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 238, 267, 285, 287, 288, 289, 291, 301, 302, 324, 327, 329, 330, 332, 335, 348, 349], "8192": [10, 55, 74, 117, 142, 146, 175, 336], "format3": [10, 55, 74, 117, 142, 146], "1706": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146], "1024": [10, 29, 55, 74, 117, 142, 146, 175, 203, 205, 273, 285, 287, 288, 294, 315, 322, 323, 327, 328, 331, 332, 333, 334, 338, 340, 341, 342, 343, 350, 351], "format4": [10, 55, 74, 117, 142, 146], "31": [10, 55, 74, 117, 142, 146, 250, 278, 315, 329, 330, 331, 337, 348], "16384": [10, 55, 74, 117, 142, 146], "figur": [10, 12, 14, 19, 55, 74, 117, 142, 146, 186, 204, 206, 227, 234, 236, 278, 285, 294, 305, 306, 307, 308, 309, 324, 326, 327, 328, 342, 343, 344, 345, 348, 350], "3gppts38212polar": [10, 11, 26, 27, 28, 44, 55, 58, 59, 69, 74, 77, 78, 112, 117, 120, 121, 142, 143, 146, 149, 153, 154, 158, 211, 212], "nbatch": [10, 55, 74, 117, 142, 146, 291, 294, 320, 324, 325, 348, 349], "verbos": [10, 11, 44, 55, 69, 74, 87, 88, 90, 112, 117, 142, 143, 146, 149, 181, 182, 188, 189, 263, 264, 273, 294, 301, 322, 323, 335, 350, 351], "polarencoder5g": [10, 54, 55, 73, 74, 116, 117, 142, 146, 184, 185, 188, 189, 335], "polarencod": [10, 55, 74, 117, 142, 146], "built": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 315, 358], "modif": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 276, 298], "moreov": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 235, 237, 243], "complainc": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "being": [10, 11, 15, 17, 18, 19, 44, 55, 57, 64, 65, 69, 74, 76, 83, 84, 87, 88, 106, 107, 112, 117, 119, 126, 127, 130, 131, 142, 143, 146, 149, 152, 159, 163, 165, 167, 168, 181, 182, 210, 215, 216, 227, 240, 242, 265, 270, 278, 315, 339, 342, 343, 344, 346], "out": [10, 11, 18, 19, 44, 55, 57, 64, 65, 69, 74, 76, 83, 84, 102, 106, 107, 112, 117, 119, 126, 127, 142, 143, 146, 149, 162, 163, 167, 168, 207, 210, 239, 240, 244, 245, 289, 301, 315, 326, 358], "except": [10, 11, 12, 39, 44, 46, 48, 55, 57, 60, 69, 71, 74, 76, 79, 98, 103, 104, 112, 114, 117, 119, 122, 142, 143, 146, 149, 152, 159, 170, 173, 203, 210, 229, 237, 238, 244, 258, 262, 266, 267, 269, 272, 273, 274, 275, 276, 289], "invalid": [10, 11, 44, 55, 64, 65, 69, 74, 83, 84, 94, 102, 103, 104, 106, 107, 112, 117, 126, 127, 130, 131, 134, 136, 137, 142, 143, 146, 149, 163, 165, 167, 168, 207, 209, 215, 216, 217, 218, 219, 228, 229, 231, 236, 238, 240, 242, 244, 249, 254, 262, 263, 266, 267, 269, 270, 302, 331, 332], "uci": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 144, 145, 146, 147, 149, 175, 176, 221, 234, 326, 335], "although": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "consortium": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "agre": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "curv": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "aid": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 271, 352, 358], "sc": [10, 11, 29, 33, 34, 36, 44, 55, 69, 74, 103, 104, 112, 117, 142, 143, 146, 149, 185, 188, 202, 203, 204, 205, 229, 230, 233, 236, 245, 254, 267, 278, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 335, 339, 340, 348, 349, 351], "bp": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 188, 322, 323, 351], "materi": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 325, 335], "lead": [10, 11, 32, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 280, 305], "effect": [10, 11, 26, 27, 28, 35, 37, 44, 55, 58, 59, 64, 69, 74, 77, 78, 83, 106, 112, 117, 120, 121, 126, 142, 143, 146, 149, 153, 154, 158, 163, 167, 211, 212, 240, 268, 269, 270, 271, 281, 283, 310, 318, 320, 327, 328, 331, 338, 340, 341, 342, 344, 346, 358], "loss": [10, 11, 16, 18, 19, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 149, 170, 173, 258, 301, 315, 320, 338, 340, 341, 344, 347, 352], "trade": [10, 22, 55, 74, 117, 142, 146, 309], "off": [10, 22, 55, 74, 117, 142, 146, 309, 362], "accuraci": [10, 55, 74, 117, 142, 146, 195, 197, 198, 202, 203, 204, 271, 275, 276, 301, 302, 327, 328, 329, 330, 331, 352, 358], "poor": [10, 55, 74, 117, 142, 146, 227, 278, 280, 281, 304], "scl": [10, 55, 74, 117, 142, 146, 188, 291, 294, 320, 325, 335, 348, 349], "list_siz": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146], "good": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 196, 198, 206, 278, 310, 318, 356, 359, 360], "hybscl": [10, 55, 74, 117, 142, 146, 188], "highest": [10, 39, 46, 55, 74, 117, 142, 146, 184, 195, 204, 262, 266, 280, 281, 301, 348], "lowest": [10, 55, 74, 117, 142, 146, 195, 204, 227, 230, 238, 270, 283, 301], "poorest": [10, 55, 74, 117, 142, 146], "100": [10, 11, 15, 17, 18, 19, 29, 44, 49, 55, 69, 72, 74, 99, 112, 115, 117, 142, 143, 146, 171, 174, 196, 198, 206, 259, 267, 285, 301, 302, 309, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 342, 345, 349, 351, 352, 358, 362], "dec_typ": [10, 11, 44, 54, 55, 69, 73, 74, 112, 116, 117, 142, 143, 146, 184, 185, 188, 189, 335], "success": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 268, 291, 294, 325, 348, 356, 357, 359, 360], "cancel": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 198, 203], "polardecoder5g": [10, 11, 44, 54, 55, 69, 73, 74, 112, 116, 117, 142, 143, 146, 184, 185, 188, 189, 335], "bitest": [10, 11, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 170, 173, 258, 291, 294, 320, 348], "iff": [10, 55, 74, 117, 142, 146], "accept": [10, 12, 17, 40, 48, 55, 60, 64, 65, 71, 74, 79, 83, 84, 87, 88, 94, 98, 102, 106, 107, 114, 117, 122, 126, 127, 134, 142, 146, 163, 165, 167, 168, 170, 173, 181, 182, 189, 207, 217, 240, 242, 249, 258, 264, 281], "binari": [10, 12, 55, 74, 117, 142, 146, 189, 227, 230, 298, 362], "unknown": [10, 55, 74, 117, 142, 146, 273], "afloat": [10, 55, 74, 117, 142, 146], "complet": [10, 27, 28, 39, 46, 55, 74, 117, 142, 146, 186, 189, 299, 301, 331, 339, 342, 356, 357, 358, 359, 360], "subsect": [10, 55, 74, 117, 142, 146, 326, 335, 336, 338, 340, 341, 344, 350], "inputbitinterleav": [10, 11, 23, 27, 43, 44, 68, 69, 111, 112, 142, 143, 184, 185, 188, 189], "inputbitdeinterleav": [10, 11, 23, 27, 43, 44, 68, 69, 111, 112, 142, 143, 184, 185, 188, 189], "condo": [10, 55, 74, 117, 142, 146], "land": [10, 55, 74, 117, 142, 146], "new": [10, 55, 74, 117, 142, 146, 206, 279, 304, 305, 306, 307, 308, 309, 333, 356, 357, 358, 359, 360], "radio": [10, 55, 62, 64, 65, 74, 81, 83, 84, 85, 86, 106, 107, 117, 124, 126, 127, 132, 138, 142, 146, 163, 164, 165, 167, 168, 175, 176, 185, 196, 199, 236, 240, 241, 242, 246, 247, 254, 260, 269, 270, 271, 278, 283, 284, 285, 295, 304, 305, 306, 307, 308, 309, 320, 333, 339, 361], "survei": [10, 55, 74, 117, 142, 146], "vol": [10, 55, 74, 117, 142, 146, 315], "pp": [10, 55, 74, 117, 142, 146, 196, 199, 284, 301, 315], "29": [10, 55, 74, 117, 142, 146, 278, 301, 315, 329, 330, 331, 337, 340, 348, 362], "40": [10, 55, 74, 117, 142, 146, 175, 176, 236, 265, 267, 278, 285, 287, 288, 289, 291, 294, 302, 304, 305, 307, 308, 309, 315, 323, 324, 329, 330, 331, 337, 348, 349], "quarter": [10, 55, 74, 117, 142, 146, 358], "2021": [10, 55, 74, 117, 142, 146, 189, 199, 284], "often": [11, 44, 69, 112, 143, 268, 271, 279], "vari": [11, 22, 31, 44, 69, 112, 143, 268, 275, 276, 280, 281, 302, 315, 327, 328, 342], "import": [11, 14, 16, 19, 29, 32, 39, 44, 46, 48, 60, 69, 71, 79, 98, 112, 114, 122, 143, 170, 173, 206, 227, 236, 258, 262, 266, 278, 286, 290, 292, 293, 295, 296, 305, 306, 307, 308, 309, 310, 318, 330, 332, 337, 345, 347, 352, 356, 357, 358, 359, 360], "henc": [11, 39, 44, 46, 58, 64, 69, 77, 83, 106, 112, 120, 126, 143, 163, 167, 184, 196, 198, 211, 234, 240, 260, 262, 266, 276, 278, 305, 308, 357, 360], "becom": [11, 44, 69, 112, 143], "split": [11, 44, 69, 112, 143], "qualiti": [11, 44, 69, 94, 112, 143, 195, 269, 270, 271, 275, 276, 279, 280, 281, 283, 285, 302, 318, 331, 332, 339, 352, 358], "servic": [11, 44, 69, 112, 143, 279, 280, 281, 283, 298, 329, 331, 332], "polarcod": [11, 26, 27, 28, 44, 57, 58, 59, 69, 76, 77, 78, 112, 119, 120, 121, 143, 148, 149, 152, 153, 154, 158, 159, 210, 211, 212, 291, 294, 320, 348, 349], "numtargetbit": [11, 44, 69, 88, 102, 112, 143, 148, 149, 189, 209, 271, 294, 322, 323, 351], "formatpucch": [11, 44, 69, 112, 129, 130, 131, 143, 149, 175, 176, 179, 215, 216], "th": [11, 44, 69, 112, 143, 149, 196, 198, 204, 343], "bioglio": [11, 44, 69, 112, 143, 149], "describ": [11, 25, 44, 69, 89, 102, 112, 143, 148, 175, 176, 180, 181, 182, 207, 227, 280, 298, 320, 336, 338, 339, 340, 341, 342, 343, 344, 346, 357, 358], "enabl": [11, 18, 19, 21, 26, 27, 32, 44, 58, 69, 77, 87, 88, 91, 102, 112, 120, 130, 131, 132, 134, 136, 137, 138, 139, 143, 153, 158, 181, 182, 196, 206, 207, 209, 211, 215, 216, 217, 218, 219, 220, 238, 246, 247, 265, 268, 269, 270, 275, 276, 281, 285, 287, 289, 291, 294, 301, 327, 329, 331, 332, 350, 358, 362], "input_bit": [11, 25, 26, 27, 28, 44, 58, 59, 69, 77, 78, 112, 120, 121, 143, 153, 154, 158, 211, 212], "less": [11, 12, 18, 19, 27, 39, 44, 46, 57, 62, 69, 76, 81, 95, 112, 119, 124, 143, 144, 145, 147, 152, 159, 164, 189, 202, 203, 204, 205, 210, 231, 235, 238, 241, 244, 245, 267, 279, 283, 301, 315, 324, 338, 339, 340, 341, 342, 343, 344, 345, 346], "165": [11, 27, 44, 69, 112, 143], "k_il_max": [11, 27, 44, 69, 112, 143], "interleavepattern": [11, 26, 27, 28, 44, 58, 59, 69, 77, 78, 112, 120, 121, 143, 153, 154, 158, 211, 212], "164": [11, 27, 44, 69, 112, 143], "amd": [11, 27, 44, 69, 112, 143], "protect": [12, 280, 298], "awgn": [12, 48, 60, 71, 79, 86, 98, 114, 122, 130, 170, 173, 215, 258, 301, 318, 319, 326, 336, 352, 358], "reedmullerencoder5g": [12, 326], "numcodeword": [12, 95], "umber": 12, "3gppts38211_rm": 12, "reedmullerdecod": 12, "hardin": 12, "hard_in": 12, "reedmullerdecoder5g": [12, 326], "rxbit": [12, 294, 326, 335], "llrest": [12, 315, 319, 326, 335], "typeerror": [12, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 244, 245, 246, 247, 254], "primarili": [13, 20, 22, 153, 154, 155, 156, 158, 159, 343], "togeth": [14, 227, 270], "current": [14, 17, 19, 29, 31, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 195, 206, 238, 240, 242, 249, 260, 269, 270, 273, 274, 278, 280, 281, 295, 304, 305, 306, 307, 308, 309, 325, 342, 343, 348], "901": [14, 15, 16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "uniform": [14, 19, 279, 338, 340, 341], "ula": 14, "planar": 14, "upa": 14, "multi": [14, 193, 195, 199, 202, 203, 204, 205, 281, 284, 323, 334, 344, 358, 361], "panel": [14, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "mpa": 14, "tr": [14, 15, 18, 19], "channelmodel": [14, 15, 17, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "antennatyp": [14, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "omni": [14, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "centerfrequ": [14, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "arraystructur": [14, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "uint16": 14, "antennaspac": [14, 18, 19], "antparamet": 14, "phasediff": 14, "thetagrid": 14, "pi": [14, 19, 32, 33, 48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 170, 171, 173, 174, 244, 258, 259, 273, 302, 315, 324, 327, 328, 329, 330, 331, 332, 334, 342, 349, 361], "180": [14, 302, 324, 331, 332, 342, 349], "phigrid": 14, "3gpp_38": [14, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "dual": [14, 29, 280, 339, 342, 346, 347, 352, 358, 361], "ref": [14, 15, 18, 19, 196, 197, 198, 199, 206], "radiat": [14, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351, 361], "3d": [14, 18, 144, 147, 269, 296, 302, 327, 328, 330, 331, 332, 339, 361], "displayantennaradiationpattern": [14, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351], "surfac": [14, 18, 19], "displayantennaarrayfactor": 14, "rotat": [14, 193, 203], "rotateantennaradiationpattern": 14, "angl": [14, 16, 17, 18, 19, 193, 195, 197, 200, 206, 243, 302, 327, 328, 329, 330, 332, 334, 338, 339, 340, 341, 342, 345, 348, 352, 358, 361], "alpha": [14, 19, 244, 302, 315, 320, 322, 323, 327, 328, 329, 330, 331, 332, 342, 349, 351], "beta": [14, 228, 334], "gama": 14, "also": [14, 17, 18, 19, 29, 32, 91, 130, 131, 132, 136, 137, 138, 139, 175, 182, 202, 203, 204, 205, 215, 216, 218, 219, 220, 236, 246, 247, 249, 255, 256, 271, 278, 280, 283, 307, 308, 315, 324, 333, 339, 342, 345, 360], "euler": 14, "http": [14, 356, 357, 358, 359, 360], "en": [14, 357], "wikipedia": 14, "org": 14, "wiki": 14, "euler_angl": 14, "hertzian_dipol": 14, "linear_dipol": 14, "ntn_antenna": 14, "vsat": 14, "hz": [14, 15, 19, 202, 203, 204, 205, 267, 285, 287, 288, 289, 291, 294, 320, 325, 338, 339, 340, 341, 342, 343, 344, 345, 346], "ghz": [14, 15, 18, 19, 29, 39, 46, 184, 249, 262, 266, 267, 302, 324, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 342, 344, 348, 349], "alwai": [14, 19, 49, 58, 72, 77, 99, 115, 120, 130, 131, 132, 136, 137, 138, 171, 174, 211, 215, 216, 218, 219, 227, 235, 238, 244, 245, 246, 247, 254, 259, 278, 279, 285, 315, 342], "geometri": [14, 16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 340, 341, 342, 347, 348, 349, 351, 352, 358], "mg": 14, "ng": [14, 29], "p": [14, 29, 33, 206, 236, 250, 251, 252, 253, 254, 265, 278, 284, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 337, 338, 340, 341, 351, 357, 362], "vertic": [14, 29, 195, 302, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 345, 346, 348], "greater": [14, 17, 19, 35, 37, 102, 145, 193, 195, 204, 205, 207, 233, 280, 342], "horizont": [14, 29, 195, 302, 327, 328, 329, 330, 331, 332, 334, 345, 348], "column": [14, 19, 26, 193, 195, 227, 270, 338, 339, 340, 341, 342, 343, 346, 348], "dgv": 14, "dgh": 14, "dv": 14, "dh": [14, 19, 340], "theta_3db": 14, "half": [14, 19, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 235, 237, 238, 240, 242, 249, 262, 266, 272, 348], "beamwidth": 14, "along": [14, 19, 32, 139, 193, 195, 204, 217, 218, 219, 220, 227, 269, 270, 329, 338, 340, 341, 358], "elev": [14, 18, 193, 195, 196, 197, 206, 302, 332, 339, 347, 352], "65": [14, 285, 289, 291, 294, 309, 323, 329, 330, 331, 337, 348, 349, 352], "slav": 14, "lobe": 14, "attenu": 14, "30": [14, 90, 145, 204, 230, 236, 244, 245, 267, 278, 285, 288, 291, 294, 301, 302, 307, 308, 309, 315, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 337, 338, 339, 340, 341, 342, 343, 346, 348, 349, 350, 351], "phi_3db": 14, "azimuth": [14, 16, 17, 18, 19, 193, 195, 196, 197, 206, 302, 324, 331, 332, 338, 339, 340, 341, 344, 347, 349, 352], "amax": 14, "max": [14, 29, 32, 39, 46, 48, 60, 64, 65, 71, 79, 83, 84, 98, 106, 107, 114, 122, 126, 127, 145, 162, 163, 165, 167, 168, 170, 173, 184, 235, 237, 239, 240, 242, 249, 255, 258, 262, 266, 272, 273, 278, 285, 288, 289, 291, 294, 301, 302, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 342, 345, 348, 349, 351], "wave": [14, 199, 318, 333, 346, 352, 358], "phase": [14, 15, 18, 19, 32, 203, 221, 233, 243, 268, 273, 275, 276, 296, 299, 322, 323, 327, 328, 331, 332, 334, 338, 340, 341, 347, 352], "rad": [14, 17], "theta": [14, 193, 195, 196, 302, 315, 324, 327, 328, 329, 330, 331, 332, 334, 348, 349], "zenith": [14, 16, 18, 338, 340, 341, 344, 345], "radian": [14, 17, 19, 197, 206, 342], "orientationperpanel": 14, "orient": [14, 17, 18, 19, 228, 339, 342], "correpond": 14, "bear": 14, "down": [14, 18, 19, 236, 320, 324, 325, 349, 358], "tilt": 14, "slant": 14, "numofpanel": 14, "polarizationslantangl": 14, "directionalgainmax": 14, "gain": [14, 58, 77, 120, 211, 285, 287, 288, 289, 291, 294, 346], "dbi": 14, "neither": [14, 19, 132, 138, 203, 205, 236, 246, 247, 254, 265, 302, 329, 330, 332, 350], "nor": [14, 19, 132, 138, 236, 246, 247], "instanc": [14, 17, 19, 236, 278, 305, 307, 309, 342, 343], "snippet": [14, 19, 29, 198, 278, 285, 315, 338, 340, 341, 342, 343, 344], "orienat": 14, "num": [14, 18, 19, 85, 87, 202, 205, 206, 263, 264, 294, 325, 339, 342, 343, 346, 351], "here": [14, 57, 76, 119, 152, 159, 210, 236, 269, 270, 275, 276, 279, 285, 295, 298, 315, 318, 329, 352, 360], "psa": 14, "antarrayobj": 14, "hertzina": [14, 16], "90": [14, 267, 278, 285, 287, 288, 289, 291, 294, 301, 302, 309, 324, 327, 328, 329, 330, 331, 332, 348, 349], "look": [14, 19, 301, 309], "fc": [14, 15, 18, 326, 333, 338, 340, 341, 344], "antenna_3gpp_38901": [14, 16], "3gpp_38901": 14, "antenaa": 14, "antenna_hertziandipol": [14, 16], "antenna_lineardipol": [14, 16], "usual": 14, "ge_max": 14, "carrierfrequ": [14, 15, 16, 19, 29, 238, 267, 285, 287, 289, 291, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "initi": [14, 17, 19, 33, 39, 46, 85, 103, 104, 132, 138, 184, 198, 206, 215, 216, 217, 218, 219, 220, 229, 233, 243, 245, 246, 247, 249, 250, 262, 263, 266, 271, 272, 273, 339, 342, 343, 350, 352, 357, 358, 359, 360], "lamda": [14, 275, 285, 287, 289, 291, 294, 302, 324, 327, 328, 329, 330, 331, 332, 334, 348, 349], "fieldtheta": 14, "fieldphi": 14, "field": [14, 39, 46, 85, 87, 88, 90, 91, 94, 103, 104, 181, 182, 184, 229, 233, 262, 263, 264, 266, 271, 348], "cluster": [15, 16, 18, 19, 338, 340, 341, 344], "coeffici": [15, 16, 18, 269, 270, 328, 329, 330, 347, 352], "timedomain": 15, "3gppts38901_channelgener": 15, "terrain": [15, 16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 332, 334, 339, 342, 343, 344, 346, 347, 348, 349, 351, 352, 358], "txlocat": 15, "rxlocat": 15, "txvelocityvector": 15, "rxvelocityvector": 15, "scenario": [15, 18, 19, 28, 202, 203, 204, 268, 275, 276, 279, 280, 302, 305, 310, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 344, 346, 347, 348, 349, 352, 358], "locat": [15, 17, 18, 19, 57, 76, 85, 86, 102, 103, 104, 119, 189, 196, 197, 198, 199, 200, 206, 207, 210, 226, 229, 233, 235, 236, 237, 238, 251, 275, 276, 291, 294, 302, 309, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 346, 348, 349, 351, 358], "tx": [15, 18, 19, 196, 282, 285, 287, 288, 290, 292, 294, 295, 302, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 342, 343, 344, 347, 349, 351, 352, 358], "typic": [15, 18, 19, 235, 236, 237, 268, 269, 270, 271, 278, 282, 283, 296, 302, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 335, 338, 340, 341, 348, 349, 351], "station": [15, 16, 17, 18, 19, 29, 87, 227, 236, 250, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 282, 283, 285, 294, 296, 305, 306, 307, 320, 322, 323, 325, 327, 328, 329, 331, 332, 334, 338, 339, 340, 341, 342, 344, 346, 349, 352, 358], "bss": [15, 17, 18, 19, 65, 84, 107, 127, 165, 168, 242, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "dl": [15, 19, 39, 46, 184, 196, 198, 206, 227, 231, 236, 243, 248, 251, 254, 262, 266, 275, 325, 327, 352, 361], "dimension": [15, 18, 29, 188, 273, 278, 315, 339], "numsnapshot": [15, 18, 22, 344, 348, 351], "numb": [15, 18], "snapshot": [15, 16, 17, 18, 19, 324, 338, 339, 340, 341, 343, 344, 345, 346, 347, 349, 352], "rx": [15, 18, 19, 29, 273, 285, 287, 288, 289, 291, 294, 302, 318, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 342, 343, 344, 347, 349, 351, 352, 358], "equip": [15, 16, 17, 19, 27, 91, 108, 132, 138, 144, 147, 148, 149, 175, 176, 181, 182, 196, 198, 215, 216, 246, 247, 250, 252, 253, 255, 256, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 285, 296, 320, 324, 329, 331, 332, 338, 339, 340, 341, 342, 344, 346, 349], "numu": [15, 18, 19, 22, 278, 279, 291, 294, 301, 304, 305, 306, 307, 308, 310, 318, 322, 323, 324, 344, 348, 349, 351], "veloc": [15, 17, 18, 19], "subcarrierspac": [15, 39, 46, 202, 203, 204, 205, 228, 231, 261, 265, 267, 302, 324, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 344, 346, 348], "15000": [15, 39, 46, 184, 228, 231, 236, 238, 262, 266, 267, 278, 285, 287, 288, 289, 291, 294, 301, 302, 323, 324, 329, 330, 332, 333, 334, 348, 349], "fftsize": [15, 267, 273, 285, 287, 288, 289, 291, 294, 322, 323, 324, 333, 338, 340, 341, 344, 349, 351], "128": [15, 228, 315, 329, 333, 336, 348], "normalizechannel": [15, 320, 322, 323, 325, 349, 351], "fft": [15, 29, 32, 33, 193, 195, 267, 268, 273, 285, 287, 288, 291, 294, 322, 323, 324, 325, 327, 328, 331, 333, 334, 338, 339, 340, 341, 344, 346, 348, 349, 351], "khz": [15, 29, 85, 103, 104, 189, 228, 229, 230, 231, 236, 238, 248, 249, 251, 267, 270, 271, 278, 301, 324, 327, 328, 329, 330, 331, 332, 338, 340, 341, 349], "ifft": [15, 273, 338, 339, 340, 341, 344, 346, 348], "respons": [15, 18, 19, 32, 85, 236, 269, 270, 271, 275, 276, 280, 283, 320, 327, 331, 334, 346, 347, 352, 358], "ignor": [15, 206, 244, 245, 266, 280, 294, 329, 338, 339, 343, 345, 346, 348], "passband": 15, "boolean": [15, 17, 18, 19, 39, 46, 88, 184, 189, 265, 269, 279, 281], "normal": [15, 18, 19, 227, 235, 237, 267, 273, 285, 287, 288, 289, 291, 294, 301, 318, 324, 328, 331, 333, 348, 349], "forc": [15, 19, 49, 72, 99, 115, 171, 174, 259, 269, 270, 271, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 345, 346, 348, 349, 351], "averag": [15, 18, 19, 269, 271, 315, 318, 350, 352, 358], "nfft": [15, 29, 202, 205, 228, 261, 267, 285, 287, 288, 289, 291, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 344, 346, 348, 349, 351], "accross": [15, 32, 279, 327, 328, 347, 352], "subcarri": [15, 29, 32, 33, 34, 35, 36, 37, 39, 46, 130, 131, 136, 137, 184, 202, 203, 204, 205, 215, 216, 218, 219, 231, 235, 237, 238, 256, 262, 265, 266, 267, 271, 273, 275, 276, 281, 285, 287, 289, 291, 294, 301, 322, 323, 324, 327, 328, 329, 330, 331, 332, 333, 334, 338, 340, 341, 346, 347, 348, 349, 351, 352], "numcarrierfreq": 15, "instant": [15, 18, 19, 33, 204, 339, 342, 343, 346], "numbss": [15, 18, 19, 22, 65, 84, 86, 87, 88, 107, 127, 165, 168, 233, 242, 294, 301, 322, 323, 344, 348, 351], "numrxant": 15, "numtxant": 15, "studi": [15, 18, 19, 318, 347, 352, 358], "five": 16, "name": [16, 17, 18, 19, 22, 29, 85, 86, 87, 88, 264, 298, 307], "across": [16, 19, 28, 38, 65, 84, 95, 101, 107, 127, 162, 168, 198, 202, 203, 204, 205, 208, 234, 235, 237, 239, 252, 253, 255, 256, 269, 271, 275, 276, 279, 325, 327, 328, 331, 339, 347, 352], "deploy": [16, 19, 268, 280, 318, 320, 327, 328, 331], "insid": [16, 19, 57, 76, 119, 152, 159, 210, 342, 343], "particular": [16, 19, 65, 84, 107, 127, 162, 168, 236, 239, 278, 282, 307], "parametergenear": 16, "necessari": [16, 18, 29, 204, 227, 236, 269, 270, 278, 315, 320, 339, 342, 343, 344, 345, 346, 348], "lsp": [16, 18, 19, 322, 323, 334, 338, 339, 340, 341, 342, 343, 344, 346], "ssp": [16, 18, 19, 322, 323, 334, 338, 339, 340, 341, 342, 343, 344, 346], "spread": [16, 18, 19, 28, 37, 135, 136, 137, 179, 218, 219, 222, 226, 234, 320, 333, 338, 340, 341, 344, 347, 352], "angular": [16, 18, 19, 331, 338, 340, 341, 344, 347, 352], "path": [16, 18, 19, 193, 195, 202, 203, 204, 205, 236, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 350, 351, 352, 362], "rai": [16, 18, 299], "departur": [16, 18, 19, 345, 352, 358], "channelgenear": 16, "found": [16, 19, 34, 36, 64, 83, 106, 126, 163, 167, 204, 235, 237, 240, 249, 289, 333], "parabol": [16, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 344, 346, 348, 349, 351], "dipol": [16, 339, 342, 343, 346], "3gpp_38_901": 16, "hertzian": 16, "displayrout": [16, 17, 324, 339, 342, 343, 344, 349], "walk": 16, "circular": [16, 57, 76, 102, 119, 207, 210, 227, 270, 339, 342, 343], "rout": [16, 19, 338, 339, 340, 341, 342, 344, 347, 352], "vehicl": [16, 343], "highwai": 16, "bslocat": [16, 18, 19, 302, 324, 327, 328, 329, 330, 331, 332, 338, 339, 340, 341, 342, 343, 344, 346], "isd": [16, 18, 19, 196, 198, 206, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "ueloc": [16, 18, 19, 302, 324, 327, 328, 329, 330, 331, 332, 338, 339, 340, 341, 342, 343, 344, 346], "uedistibut": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "ueheightdistribut": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 348, 349, 351], "bsantennaarrai": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "bsrout": [16, 19, 343], "clutterdens": [16, 19, 302, 338, 340, 341], "clutterheight": [16, 19, 302, 338, 340, 341, 345], "clutters": [16, 19, 338, 340, 341, 345], "correlationdistanceindoor": [16, 19], "correlationdistancelo": [16, 19], "correlationtypeindoor": [16, 19], "correlationtypelo": [16, 19], "enablespatialconsistencyindoor": [16, 19, 339, 342, 343, 346], "enablespatialconsistencylo": [16, 19, 324, 339, 342, 343, 349], "force3gppspatialconsistencyparamet": [16, 19, 324, 349], "forcelo": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 345, 346, 348, 349, 351], "heightofb": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "heightofroom": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 345, 348, 349, 351], "heightofu": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "indooruefract": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "layoutlength": [16, 19, 302, 327, 329, 330, 332, 334], "layouttyp": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "layoutwidth": [16, 19, 302, 327, 329, 330, 332, 334], "lengthofindoorobject": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "maxnumberoffloor": [16, 19, 327, 345], "memoryeffici": [16, 18, 19, 339, 342, 343, 346], "minnumberoffloor": [16, 19, 345], "minuebsdist": [16, 18, 19, 320, 325, 338, 340, 341], "numofb": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "numofsectorspersit": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "numofsnapshot": [16, 19], "numofu": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "radiusforcircularuedrop": [16, 19], "routetyp": [16, 19], "ueantennaarrai": [16, 18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "uedropmethod": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "uerout": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 344, 348, 349, 351], "widthofindoorobject": [16, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "hexagon": [16, 18, 320, 322, 323, 324, 325, 327, 328, 329, 331, 334, 339, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 358], "rectangular": [16, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "typeofmobl": [17, 343], "randomwalk": [17, 19, 324, 344, 349], "typical": 17, "static": [17, 269, 271, 327, 328, 331, 339, 342, 343, 344], "fall": [17, 280], "move": [17, 269, 271, 324, 339, 342, 343], "meter": [17, 18, 19, 198, 206, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 345, 348, 349, 351], "trajectori": [17, 339, 342], "anywher": [17, 19], "circumfer": [17, 339, 342], "circl": [17, 19, 206, 302, 329, 330, 331, 332, 339, 342, 343, 346, 352, 358], "start": [17, 32, 33, 57, 76, 88, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 198, 202, 204, 207, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 233, 236, 246, 247, 254, 265, 267, 270, 273, 278, 285, 287, 289, 291, 294, 301, 325, 342, 343, 350, 351, 356, 357, 358, 359], "deg": [17, 18], "kind": [17, 18], "option": [17, 33, 227, 235, 237, 244, 280, 285, 287, 289, 291, 294, 301, 320, 327, 328, 343, 348, 349], "optiona": [17, 343], "optionb": 17, "optionc": 17, "lane": 17, "width": [17, 18, 19, 206, 270, 273, 285, 287, 288, 289, 291, 294, 301, 302, 305, 309, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 339, 340, 341, 342, 345, 346, 348, 349, 351, 362], "postivi": 17, "nodeorient": 17, "timeinst": [17, 18, 19, 324, 339, 342, 343, 344, 349], "velocityvector": 17, "initloc": 17, "noderout": 17, "circularrout": 17, "dropvehicleshighwai": 17, "numnod": [17, 18], "minveloc": 17, "maxveloc": 17, "phimin": 17, "7853981633974483": [17, 324, 349], "phimax": 17, "randomizeorient": [17, 343], "decreas": [17, 19, 204, 308], "radiusmin": 17, "radiusmax": 17, "833": [17, 339, 342, 343], "isinitsnapshotlocationrandom": 17, "initangl": [17, 339, 342], "kmph": [17, 339, 342, 343], "initiat": 17, "snap": [17, 18, 19, 339], "shot": [17, 18, 19], "lanewidth": [17, 343], "numlan": [17, 343], "numvehicl": [17, 343], "vehicledroptyp": [17, 343], "correl": [18, 19, 204, 244, 245, 268, 273, 286, 290, 292, 293, 295, 348, 361], "displayclust": [18, 302, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 339, 343, 346, 348, 349, 351], "fetch": [18, 267, 285, 287, 288, 289, 291, 294, 324, 348, 349, 356, 359, 360], "through": [18, 19, 22, 64, 83, 86, 106, 126, 163, 167, 240, 268, 271, 279, 283, 294, 302, 315, 322, 323, 326, 329, 330, 332, 335, 336, 346, 350, 352, 356, 357, 358, 359, 360, 362], "getchannel": [18, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351], "3gppts38901_parametergener": 18, "lo": [18, 19, 197, 204, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 348, 349, 351], "phiaoa_lo": [18, 338, 339, 340, 341, 342, 343, 344, 346], "phiaod_lo": [18, 302, 331, 332, 338, 339, 340, 341, 342, 343, 344, 346], "thetaaoa_lo": [18, 338, 339, 340, 341, 342, 343, 344, 346], "thetaaod_lo": [18, 302, 331, 332, 338, 339, 340, 341, 342, 343, 344, 346], "shadow": [18, 347, 352], "fade": [18, 19, 28, 268, 269, 270, 271, 275, 276, 280, 281, 283, 320, 339, 347, 352], "shadowfad": [18, 338, 339, 340, 341, 342, 343, 344, 345, 346], "rician": [18, 347, 352], "kfactor": [18, 345], "delayspread": [18, 19, 323, 324, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349], "phiaod_spread": [18, 338, 339, 340, 341, 342, 343, 344, 345, 346], "phiaoa_spread": [18, 338, 339, 340, 341, 342, 343, 344, 345, 346], "thetaaod_spread": [18, 338, 339, 340, 341, 342, 343, 344, 345, 346], "thetaaoa_spread": [18, 338, 339, 340, 341, 342, 343, 344, 345, 346], "pathloss": [18, 329, 338, 339, 340, 341, 342, 343, 344, 345, 346], "casa": 18, "casd": 18, "czsa": 18, "pathdelai": [18, 338, 339, 340, 341, 342, 343, 344, 346], "pathpow": [18, 338, 339, 340, 341, 342, 343, 344, 346], "phiaoa_mn": [18, 338, 339, 340, 341, 342, 343, 344, 346], "phiaod_mn": [18, 338, 339, 340, 341, 342, 343, 344, 346], "thetaaoa_mn": [18, 338, 339, 340, 341, 342, 343, 344, 346], "thetaaod_mn": [18, 338, 339, 340, 341, 342, 343, 344, 346], "cross": [18, 29, 361], "xprnm": 18, "locb": 18, "locu": [18, 206, 331, 352, 358], "d3d": [18, 345], "d2d": [18, 299, 329, 343, 345, 361], "hallvolum": [18, 19], "surfacearea": [18, 19], "avgbuildingheight": [18, 19], "avgstreetwidth": [18, 19], "bsvelocityvector": [18, 19, 338, 339, 340, 341, 342, 343, 344, 346], "bsorient": [18, 19, 338, 339, 340, 341, 342, 343, 344, 346], "uevelocityvector": [18, 338, 339, 340, 341, 342, 343, 344, 346], "ueorient": [18, 338, 339, 340, 341, 342, 343, 344, 346], "enablespatialconsistencyforlsp": [18, 19, 324, 339, 342, 343, 349], "enablespatialconsistencyforssp": [18, 19, 324, 339, 342, 343, 349], "enablespatialconsistencyforinitialphas": [18, 19, 324, 339, 342, 343, 349], "equpi": 18, "volum": [18, 19], "hall": [18, 19, 327], "cubic": [18, 19, 275, 276, 294, 302, 323, 329, 330, 332, 334], "indoor": [18, 19, 199, 284, 302, 320, 322, 323, 324, 325, 327, 328, 329, 331, 334, 338, 339, 347, 348, 349, 351, 352, 358], "area": [18, 19, 269, 339, 358], "squar": [18, 19, 200, 206, 268, 269, 270, 271, 327, 328, 329, 330, 332, 348], "vaild": [18, 19], "height": [18, 19, 196, 197, 198, 199, 202, 204, 205, 206, 273, 275, 285, 289, 291, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "street": [18, 19], "compuat": [18, 19], "numofcarrierfrequ": 18, "ram": [18, 19, 301], "slow": [18, 19], "execut": [18, 19, 64, 83, 87, 88, 90, 106, 126, 163, 167, 181, 182, 240, 298, 356, 357, 359, 360], "spatial": [18, 19, 281, 283, 296, 299, 322, 323, 331, 334, 347, 352, 358, 361], "among": [18, 19, 188, 279, 306], "linkstatevec": [18, 338, 339, 340, 341, 342, 343, 344, 346], "nlo": [18, 19, 198, 327, 328, 329, 331, 338, 339, 340, 341, 342, 343, 344], "nanosec": 18, "mukdb": [18, 19, 327, 328], "varianc": [18, 19, 327, 328, 331], "sigmakdb": [18, 19, 327, 328], "angularspreadaod": [18, 19, 323], "defualt": 18, "angularspreadaoa": [18, 19, 323], "mulog10": [18, 19, 302], "absolut": [18, 19], "subtract": [18, 19], "tap": [18, 19, 32], "impuls": [18, 19, 32, 271, 338, 340, 341, 344, 346], "tdl": [18, 19], "cdl": [18, 19, 331, 351, 352, 358], "sigmalog10": [18, 19, 302], "enableabsolutedelai": [18, 19, 324, 349], "enableabsoluteangl": [18, 19], "sight": [18, 19, 302, 329, 347, 352], "numclust": [18, 338, 340, 341, 344], "zeta": [18, 198, 206, 333], "deviat": [18, 19, 315], "cd": 18, "nano": [18, 19], "Of": [18, 254, 265, 342, 350, 358], "positon": 18, "sens": [18, 299], "under": [18, 29, 236, 278, 281, 307, 315, 320, 338, 340, 341, 344], "indic": [18, 19, 29, 32, 33, 39, 46, 85, 86, 88, 94, 102, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 184, 185, 188, 189, 206, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 233, 236, 237, 238, 246, 247, 254, 262, 266, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 291, 293, 295, 315, 323, 325, 334, 339, 343, 345, 346, 348], "rayindex": [18, 302, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 339, 343, 346, 348, 349, 351], "carrierindex": [18, 339, 343, 346], "radiustx": [18, 339, 343, 346], "radiusrx": [18, 339, 343, 346], "displayplot": [18, 19, 204, 206, 324, 339, 343, 346], "third": [18, 38, 253, 255, 322, 323, 334], "boolen": [18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "applypathloss": [18, 338, 339, 340, 341, 342, 343, 344, 346], "scm": [18, 19], "uma": [18, 19, 324, 328, 334, 338, 339, 344, 345, 346, 348], "umi": [18, 19, 329, 343, 345], "inh": [18, 19, 330, 341], "oo": [18, 19, 39, 46, 330, 341], "carrierfreq": [18, 19, 39, 45, 46, 184, 262, 266, 291, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "numcarri": [18, 19, 344], "empti": [18, 19, 102, 207, 302, 327, 328, 329, 330, 331, 332, 342, 344], "simlayoutobj": [18, 19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "19": [18, 19, 278, 291, 301, 308, 309, 315, 327, 328, 329, 330, 331, 332, 334, 337, 339, 344, 348, 350, 362], "500": [18, 19, 285, 315, 324, 338, 339, 342, 343, 344, 346, 349], "35": [18, 19, 245, 289, 294, 301, 307, 309, 315, 323, 324, 327, 328, 329, 330, 331, 332, 337, 339, 342, 343, 344, 345, 346, 348], "topologi": [18, 19, 302, 322, 323, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351, 352, 358], "display2dtopologi": [18, 19, 302, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "paramgenobj": [18, 338, 339, 340, 341, 342, 343, 344, 346], "bstrack": [18, 19, 338, 339, 340, 341, 342, 343, 344, 346], "uetrack": [18, 338, 339, 340, 341, 342, 343, 344, 346], "linkstat": [18, 19, 324, 339, 342, 343, 345, 349], "now": [18, 285, 287, 288, 289, 291, 294, 301, 319, 322, 323, 329, 338, 339, 343, 345, 346, 351, 356, 357, 359, 360], "3gpptr38901_simlayout": 19, "deploi": [19, 327, 328, 331, 347, 352, 358], "chosen": [19, 87, 206, 227, 230, 236, 270, 278, 305, 325], "getparametergener": [19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "orbitparamet": 19, "600": [19, 248, 251], "78539816": 19, "initsatelliteparamet": 19, "57079633": 19, "useinitueloc": [19, 343], "exponenti": [19, 319], "50": [19, 90, 91, 94, 181, 182, 267, 301, 302, 308, 309, 315, 323, 327, 328, 329, 330, 331, 332, 334, 335, 337, 340, 341, 344, 345, 348], "probabl": [19, 65, 84, 107, 127, 162, 168, 239, 278, 283, 315, 318, 327, 328, 331, 347, 352, 358], "basic": [19, 286, 289, 291, 294, 295, 296, 352], "sector": [19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "intersit": [19, 196, 198, 206, 327, 328, 331], "neighbour": [19, 65, 84, 107, 127, 162, 168, 239, 269, 270, 271, 275, 348], "site": [19, 289, 302, 320, 322, 323, 324, 325, 327, 328, 330, 331, 332, 334, 338, 339, 340, 341, 343, 344, 345, 346, 347, 348, 349, 351, 352, 358], "placement": 19, "uedistribut": 19, "distribut": [19, 65, 84, 95, 101, 107, 127, 162, 168, 208, 239, 278, 279, 298, 302, 304, 305, 306, 307, 309, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 347, 348, 349, 351, 352], "choosen": [19, 236, 304, 309], "edg": [19, 278], "outermost": 19, "rectangl": 19, "uniformli": [19, 327, 328, 331], "point": [19, 32, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 227, 230, 238, 240, 242, 270, 295, 301, 333, 339, 352, 356, 357, 358, 359, 362], "row": [19, 26, 103, 104, 193, 195, 227, 228, 229, 231, 270, 302, 332, 334, 338, 340, 341], "orbit": 19, "satellit": 19, "altitud": 19, "eccentr": 19, "inclin": 19, "earth": 19, "perfect": [19, 86, 193, 195, 270, 302, 319, 332], "highli": [19, 280, 358], "closer": 19, "interv": [19, 22, 87, 95, 103, 104, 204, 205, 227, 228, 229, 231, 235, 248, 249, 251, 253, 255, 256, 268, 269, 270, 272, 285, 329, 333, 339, 342, 343, 344, 345, 346], "plane": 19, "equitori": 19, "longitud": 19, "ascend": 19, "periapsi": 19, "anomali": 19, "equin": 19, "vertox": 19, "perige": 19, "accord": [19, 144, 147, 181, 182, 227, 233, 325], "pick": [19, 238], "manual": [19, 285, 287, 288, 289, 291, 294], "gaussian": [19, 21, 32, 315], "hotspot": 19, "factori": [19, 327, 329, 338, 341, 347, 352, 358], "rural": [19, 347, 352, 358], "macro": [19, 328, 344, 347, 352, 358], "rma": [19, 331, 342, 345], "urban": [19, 328, 331, 339, 344, 352, 358], "micro": [19, 352, 358], "open": [19, 347, 352, 356, 357, 358, 359, 360], "offic": [19, 347, 352, 358], "mix": 19, "mo": 19, "clutter": [19, 338, 340, 341], "inf": [19, 302, 327, 332, 338, 340, 341], "sl": [19, 188, 235, 253, 256, 338, 340, 341], "sh": [19, 302, 327, 332, 351, 356, 357, 359], "dens": [19, 280, 302, 315, 320, 327, 328, 329, 330, 331, 332, 347, 352, 358], "hh": 19, "caputur": 19, "entri": [19, 227, 230, 270], "unexpect": [19, 254, 329, 338, 339, 343, 345, 346], "turn": [19, 279, 315, 362], "lie": [19, 236, 345], "close": [19, 32, 196, 305, 356, 359, 360], "fraction": [19, 281, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "room": [19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "ceil": [19, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 350, 351], "minval": [19, 324], "maxval": 19, "depend": [19, 32, 39, 46, 86, 87, 94, 102, 132, 138, 181, 184, 206, 207, 236, 238, 246, 247, 262, 266, 268, 270, 272, 278, 281, 302, 307, 331, 332, 358], "floor": [19, 204, 285, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 348, 349, 350, 351], "invok": [19, 254, 264], "is3gppbaselin": 19, "necessarili": 19, "restrict": [19, 236, 267], "li": [19, 327, 328], "rightarrow": 19, "supportedterrain": 19, "doe": [19, 39, 46, 58, 77, 120, 134, 184, 211, 217, 227, 236, 262, 266, 269, 271, 278, 304, 305, 306, 307, 308, 309], "belong": [19, 24, 87, 101, 102, 207, 208, 227, 236, 244, 245, 253, 254, 255, 256, 295, 315], "come": [19, 338, 340, 341, 344, 360], "inter": [19, 22, 65, 84, 107, 127, 162, 168, 195, 239, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "antnennaarrai": 19, "center": [19, 294, 326, 339, 342, 343, 345, 346], "speicifi": 19, "geometr": 19, "By": [19, 87, 88, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 197, 203, 204, 215, 216, 217, 218, 219, 220, 246, 247, 268, 269, 270, 271, 275, 276, 280, 281, 285, 329, 331, 332], "percentag": [19, 278, 280], "effic": [19, 294], "mode": [19, 29, 285, 287, 288, 289, 291, 294, 323, 334], "outdoor": [19, 347, 352, 358], "uepoints": 19, "facecolor": [19, 301, 342], "royalblu": [19, 302, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337, 342, 343], "isequalaspectratio": [19, 302, 327, 328, 329, 330, 331, 332], "displaylinkst": 19, "refb": [19, 328, 340, 341, 345], "displaysectorlabel": 19, "abl": [19, 203, 301, 356, 357, 359], "adjust": [19, 57, 76, 119, 152, 159, 210, 265, 268, 269, 270, 271, 280, 281, 283], "transpar": [19, 289, 327, 362], "background": 19, "aspect": [19, 280, 281, 285, 287, 289, 291, 294, 324, 325, 327, 328, 339, 346, 348, 349], "wrt": [19, 197, 206, 273], "diplai": 19, "rest": [19, 264, 319, 346], "bsonli": 19, "ueonli": 19, "label": [19, 273, 285, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 350, 351, 362], "0000000000000001e": 19, "07": [19, 301, 304, 315, 362], "seen": [19, 29, 32], "60": [19, 230, 236, 238, 245, 267, 278, 285, 287, 288, 289, 291, 301, 302, 304, 305, 308, 309, 315, 323, 329, 330, 331, 337, 339, 342, 346], "09329365": 19, "2794876": 19, "45": [19, 227, 230, 255, 256, 270, 278, 294, 304, 309, 315, 323, 329, 330, 331, 337], "hexagonallayout": 19, "bsheight": 19, "intersitedist": 19, "numsectorspersit": 19, "rectangularlayout": 19, "numsit": [19, 342], "numsectorpersit": 19, "rectangulardrop": 19, "uedropdistribut": 19, "circulardrop": 19, "ueheight": 19, "hexagonaldrop": 19, "white": [21, 302, 315, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 334], "addcfo": 21, "n0": [21, 348], "spectral": [21, 203, 204, 268, 280, 281, 283, 294, 309, 315], "noisi": [21, 283, 315, 362], "isfrequencydomain": [22, 322, 323, 348, 351], "enableintertxinterfer": [22, 322, 323, 348, 351], "memoryconsumptionlevel": [22, 322, 323, 348, 351], "beamform": [22, 29, 186, 189, 275, 276, 283, 299, 302, 320, 322, 323, 324, 325, 329, 330, 332, 346, 349, 352, 358], "h": [22, 29, 32, 193, 195, 198, 202, 203, 204, 205, 228, 275, 323, 327, 328, 334, 358], "multicel": [22, 338, 340, 341], "reperesent": 22, "matric": [22, 275, 276, 322, 323, 334], "interfer": [22, 65, 84, 107, 127, 162, 168, 203, 204, 239, 269, 270, 271, 275, 276, 280, 281, 283, 296, 299, 302, 320, 329, 330, 331, 332, 333, 361], "speed": [22, 199, 329, 333, 339, 342, 343, 358], "fastest": [22, 195], "most": [22, 39, 46, 184, 238, 262, 266, 279, 289, 295, 296, 302, 304, 309, 327, 328, 329, 330, 331, 332, 346, 348], "intens": 22, "slowest": 22, "numfrequ": [22, 348, 351], "numsymbol": [22, 48, 60, 71, 79, 86, 95, 98, 114, 122, 170, 173, 189, 193, 195, 231, 232, 235, 249, 258, 263, 264, 267, 270, 279, 283, 294, 301, 320, 322, 323, 324, 348, 349, 351], "numsampl": [22, 204, 205, 273, 301, 348, 351], "numfftpoint": [22, 348, 351], "numrxantenna": [22, 86, 275, 344, 348, 351], "numtxantenna": [22, 344, 348, 351], "onto": [22, 85, 131, 137, 139, 204, 215, 216, 217, 218, 219, 220, 230, 232, 350], "inconsist": [22, 34, 36, 95, 228, 231, 235, 248, 249, 251, 255, 256, 269], "pbchinterleav": [23, 25, 184], "pbchdeinterleav": [23, 25], "subblock_interleav": [23, 28, 56, 59, 75, 78, 118, 121, 150, 154, 157, 158, 160, 184, 185, 188, 189, 212], "subblock_deinterleav": [23, 28, 56, 59, 75, 78, 118, 121, 150, 154, 157, 158, 160, 184, 185, 188, 189, 212], "channelinterleav": [23, 26, 56, 58, 75, 77, 118, 120, 150, 153, 157, 158, 160, 184, 185, 188, 189, 211], "channeldeinterleav": [23, 26, 56, 58, 75, 77, 118, 120, 150, 153, 157, 158, 160, 184, 185, 188, 189, 211], "bitinterleav": [23, 24, 100, 101, 186, 188, 208], "bitdeinterleav": [23, 24, 100, 101, 186, 208], "matcher": [24, 26, 28, 58, 59, 77, 78, 88, 120, 121, 153, 154, 158, 185, 211, 212], "pf": [24, 101, 208], "re": [24, 101, 208, 227, 228, 231, 236, 284, 302, 320, 325, 327, 328, 329, 330, 331, 332, 358], "alter": [24, 65, 84, 101, 107, 127, 162, 168, 208, 239], "ensur": [24, 32, 101, 102, 207, 208, 268, 269, 270, 271, 275, 276, 278, 279, 280, 283, 285, 309, 333], "fit": [24, 57, 76, 101, 102, 119, 152, 159, 207, 208, 210, 315], "alloc": [24, 35, 37, 57, 76, 87, 88, 89, 90, 94, 101, 102, 103, 104, 119, 130, 131, 132, 134, 136, 137, 138, 139, 180, 181, 182, 188, 189, 207, 208, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 232, 233, 236, 246, 247, 254, 264, 265, 270, 275, 278, 279, 283, 285, 291, 294, 299, 307, 308, 320, 348, 349, 350], "interleavedbit": 25, "numpbch": 25, "deinterleavedbit": 25, "triangular": 26, "isoscel": 26, "buffer": [26, 27, 57, 76, 87, 88, 90, 91, 102, 119, 181, 182, 207, 209, 210, 285, 287, 288, 289, 291, 294, 301], "constel": [26, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 290, 292, 293, 295, 318, 319, 323, 326, 333, 335, 336, 352, 358], "termin": [27, 356, 359, 360], "place": [27, 193, 195, 198, 206, 236, 348], "immedi": [27, 199], "sequenti": [27, 186, 279], "wait": 27, "alarm": 27, "rearrang": 28, "common": [28, 39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 202, 215, 216, 217, 218, 219, 220, 236, 246, 247, 262, 266, 268, 269, 270, 277, 278, 281, 304, 305, 306, 307, 308, 309, 325, 343, 348, 350], "sever": [28, 203, 204], "corrupt": [28, 203, 204], "sensit": [28, 301], "handl": [28, 204, 289, 327, 328, 338, 339, 340, 341, 342, 343, 344, 346], "burst": [28, 39, 46, 101, 184, 208, 214, 238, 262, 266, 272], "Such": [28, 87, 88, 181, 182, 343], "4g": 28, "assertionerror": [28, 59, 78, 121, 154, 158, 212], "complementari": [28, 59, 78, 121, 154, 158, 186, 212], "permut": [28, 59, 78, 121, 154, 158, 212], "dft": [29, 34, 35, 36, 37, 195, 205, 206, 327, 328, 348, 352, 358], "codebook": [29, 299, 334, 352, 358, 361], "28": [29, 87, 88, 94, 181, 182, 192, 194, 231, 244, 264, 278, 280, 301, 302, 304, 305, 315, 327, 328, 329, 330, 331, 332, 337, 340, 344, 348], "214": [29, 87, 94, 186, 236, 280, 301], "typeicodebook": [29, 30, 323, 334], "idealprecod": 29, "beam": [29, 39, 46, 196, 238, 243, 249, 275, 276, 283, 299, 327, 347, 352, 358, 361], "searchfre": [29, 30, 323, 334], "sf": [29, 136, 137, 218, 219, 333, 345], "pmi": [29, 361], "predefin": [29, 236], "full": [29, 361], "emploi": [29, 202, 268, 275, 276, 277, 279, 280, 329, 331], "n1": [29, 315], "atenna": 29, "n2": [29, 88], "thu": [29, 87, 88, 181, 182, 278, 306, 307, 325, 335], "pre": [29, 360], "multipli": [29, 32, 131, 134, 137, 138, 139, 216, 217, 219, 220, 247, 309], "w": [29, 206, 275, 315, 349, 362], "transmisson": [29, 227], "oversampl": [29, 202, 205], "3gppts38214type1cb": 29, "mimoprocess": [29, 285, 287, 288, 289, 291, 294, 323, 324, 334, 348, 349], "codebooktyp": [29, 323, 334], "antennastructur": [29, 323, 334], "antennapolar": [29, 323, 334], "typei": [29, 323, 334], "singlepanel": [29, 323, 334], "multipanel": 29, "horizonat": [29, 339, 342, 343, 346], "addition": [29, 202, 280], "sinc": [29, 32, 35, 37, 227, 333], "numiter": [29, 196, 198, 206, 304, 305, 306, 307, 308, 309, 323, 334], "ideal": [29, 327, 328, 333, 334, 338, 339, 340, 341, 344, 346, 358], "svd": [29, 281, 323, 352, 358], "type1": 29, "nt": [29, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 346, 348, 349, 351], "codebookmod": [29, 323, 334], "fd": [29, 103, 104, 228, 229, 334], "resouc": 29, "rb": [29, 33, 87, 189, 227, 230, 234, 235, 236, 237, 238, 245, 265, 266, 267, 270, 279, 285, 287, 288, 289, 291, 294, 322, 323, 324, 325, 327, 328, 331, 348, 349, 350, 351], "times32": 29, "band": [29, 186, 189, 198, 238, 262, 266, 267, 268, 270, 279, 283, 285, 287, 288, 291, 323, 324, 334, 347, 348, 349, 352, 358, 361], "patch": [29, 227, 236, 278, 285, 287, 288, 302, 304, 305, 306, 307, 308, 309, 320, 325, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 346], "mpatch": [29, 227, 236, 278, 302, 304, 305, 306, 307, 308, 309, 327, 328, 329, 330, 331, 332, 334], "mpl": [29, 227, 236, 278, 302, 304, 305, 306, 307, 308, 309, 320, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 340, 341, 344, 345, 350, 351], "numrb": [29, 35, 37, 85, 87, 88, 90, 91, 94, 103, 104, 129, 130, 131, 132, 135, 136, 137, 138, 139, 179, 181, 182, 189, 215, 216, 218, 219, 220, 222, 229, 231, 233, 238, 244, 245, 246, 247, 254, 262, 264, 266, 267, 271, 275, 276, 279, 283, 285, 287, 288, 291, 294, 301, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "bwpoffset": [29, 270, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 349, 351], "txantstrutur": [29, 322, 323, 324, 349, 351], "rxantstrutur": [29, 322, 323, 324, 349, 351], "subband": 29, "subbands": [29, 323, 334], "prb": [29, 85, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 246, 247, 270, 278, 323, 325, 334, 350], "numsubband": [29, 323, 334], "subbandscindic": [29, 323, 334], "vh": [29, 322, 323, 334, 351], "linalg": [29, 294, 302, 315, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 351], "hf": [29, 39, 46, 202, 203, 204, 205, 235, 237, 270, 272, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 351], "conj": [29, 322, 323, 334, 351], "transpos": [29, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "combin": [29, 39, 46, 94, 103, 104, 184, 197, 203, 204, 228, 229, 231, 238, 262, 266, 267, 272, 324, 326, 334, 335, 336, 349, 350, 351, 352, 358, 361], "newaxi": [29, 294, 302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 348, 349, 351], "axi": [29, 193, 195, 278, 294, 302, 305, 309, 315, 319, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "xbeam": [29, 322, 323, 351], "txgrid": [29, 294, 320, 322, 323, 325, 351], "type1cb": [29, 323, 334], "numport": [29, 103, 104, 189, 229, 232, 233, 323, 334], "prod": [29, 302, 320, 323, 324, 325, 327, 329, 330, 332, 334, 345, 349], "type1precod": [29, 323, 334], "complex_": [29, 323, 334], "nsb": [29, 323, 334], "hk": [29, 193, 195, 302, 323, 332, 334], "s2": [29, 323, 334], "eig": [29, 323, 334], "nb": [29, 302, 323, 324, 327, 328, 329, 330, 331, 332, 349], "cbbeamformedgrid": 29, "sp": [29, 302, 327, 328, 329, 330, 331, 332, 334], "mode1": 29, "federico": 29, "penna": 29, "hongb": 29, "cheng": 29, "jungwon": 29, "lee": 29, "simplifi": 31, "broadband": 31, "characteris": 31, "furthermor": [31, 62, 81, 124, 164, 241, 301, 326, 327, 328, 331, 336, 338, 339, 340, 341, 342, 343, 344, 346, 356, 359, 360], "facilit": [31, 234, 269, 270, 271, 285, 324, 358], "prefix": [31, 32, 33, 267, 268, 273, 348], "sampl": [32, 33, 34, 35, 36, 37, 193, 195, 202, 204, 205, 260, 267, 268, 273, 286, 288, 289, 291, 294, 295, 315, 318, 333, 348, 358], "fft_size": [32, 33, 268], "l_min": 32, "cyclic_prefix_length": [32, 33, 268, 333], "represent": [32, 33, 39, 46, 184, 262, 266, 315, 346], "waveform": [32, 203, 204, 221, 299, 333, 361], "timechannel": 32, "pair": [32, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 203, 238, 258, 259, 262, 266, 267, 329], "y_b": 32, "ell": 32, "l_": [32, 64, 65, 83, 84, 106, 107, 126, 127, 162, 163, 165, 167, 168, 233, 239, 240, 242, 249, 254], "bar": [32, 33, 39, 46, 184, 249, 262, 265, 266, 291, 294, 309, 324, 348], "x_": 32, "w_b": 32, "quad": 32, "n_b": 32, "discret": [32, 33, 192, 202], "w_": 32, "cut": 32, "piec": 32, "throw": 32, "awai": [32, 324], "trail": 32, "fourier": [32, 192, 202], "window": [32, 33, 289, 352, 356, 359], "shift": [32, 132, 138, 215, 216, 217, 218, 219, 220, 221, 227, 244, 246, 247, 252, 253, 254, 265, 270, 275, 276, 320, 325, 348, 350], "j2": 32, "le": 32, "largest": [32, 273, 352], "lag": 32, "explicitli": 32, "step": [32, 196, 198, 203, 204, 206, 269, 270, 272, 301, 318, 326, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 350, 356, 357, 358, 359, 360], "pilot": [32, 103, 104, 229, 233, 268, 269, 271, 276, 327, 328, 330, 331, 332], "interpol": [32, 202, 205, 269, 270, 271, 275, 276, 285, 287, 289, 291, 294, 302, 318, 323, 324, 325, 329, 330, 331, 332, 334, 339, 346, 348, 349, 352, 358], "ofdmchannel": 32, "cir_to_time_channel": 32, "prepend": [32, 33], "num_ofdm_symbol": [32, 33], "nonneg": [32, 268], "cp": [33, 267, 268, 285, 287, 288, 289, 291, 294, 324, 348, 349, 352, 358], "_l": 33, "mu": [33, 63, 64, 65, 82, 83, 84, 85, 103, 104, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 194, 196, 198, 204, 206, 228, 229, 230, 231, 236, 240, 242, 248, 249, 251, 254, 265, 270, 271, 278, 304, 305, 306, 307, 308, 309, 320, 325], "n_": [33, 64, 65, 83, 84, 85, 103, 104, 106, 107, 126, 127, 163, 165, 167, 168, 189, 196, 198, 228, 229, 230, 231, 235, 236, 240, 242, 244, 245, 248, 249, 251, 252, 253, 254, 255, 256, 270, 271, 278, 285, 327, 328, 331], "mathrm": 33, "a_": 33, "left": [33, 238, 301, 309, 322, 323, 326, 334, 335, 336, 337], "k_0": 33, "right": [33, 298, 301, 326, 350], "delta": [33, 85, 103, 104, 189, 198, 206, 228, 229, 230, 231, 236, 238, 244, 245, 248, 249, 251, 254, 270, 271, 278, 327, 328, 331, 345, 348], "f": [33, 85, 103, 104, 189, 226, 228, 229, 230, 231, 235, 236, 237, 238, 248, 249, 251, 254, 265, 270, 271, 275, 278, 291, 294, 327, 328, 331, 333, 345, 348, 349], "t_": 33, "express": [33, 203, 236, 278, 298], "deriv": [33, 86, 280], "definit": [33, 333], "associ": [33, 227, 278, 298], "numerologi": [33, 230, 236, 238, 260, 267, 278, 320, 325], "durat": [33, 103, 104, 227, 229, 230, 233, 234, 236, 270, 278, 294, 320, 325, 346, 351], "longer": [33, 196, 198, 206], "numsubcarri": [34, 35, 36, 37, 86, 202, 203, 204, 205, 228, 230, 231, 270, 281, 334], "fdm": [34, 36], "numset": [34, 35, 36, 37], "stream": [34, 35, 36, 37, 57, 76, 85, 119, 152, 159, 210, 263, 264, 281], "tranform": [34, 35, 36, 37], "ngroupptr": [35, 37], "nsampgroup": [35, 37], "so": [35, 37, 88, 130, 131, 132, 136, 137, 138, 139, 198, 215, 216, 218, 219, 220, 238, 246, 247, 264, 304, 309], "slot": [35, 37, 48, 49, 60, 71, 72, 79, 85, 87, 88, 90, 91, 94, 98, 99, 103, 104, 114, 115, 122, 130, 131, 132, 134, 136, 137, 138, 139, 170, 171, 173, 174, 181, 182, 189, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 234, 236, 246, 247, 248, 249, 251, 252, 253, 254, 258, 259, 265, 270, 271, 278, 279, 283, 294, 304, 305, 306, 307, 308, 309, 318, 320, 322, 323, 325, 327, 328, 331, 350, 351, 352, 358], "possvalu": [35, 37, 271], "self": [35, 37, 39, 46, 94, 95, 103, 104, 228, 229, 231, 244, 254, 279, 280, 289], "__ngroupptr": [35, 37], "constitu": [38, 252, 253, 255, 256], "load": [38, 85, 103, 104, 189, 229, 230, 231, 232, 235, 236, 237, 238, 248, 251, 252, 253, 254, 255, 256, 264, 265, 266, 270, 271, 278, 279, 285, 287, 289, 291, 294, 301, 302, 320, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 348, 349, 351], "middl": [38, 252, 253, 255, 256, 322, 323, 334], "payloadgener": [38, 39, 46], "argc": 38, "dcityp": 38, "n_rb": [38, 238, 289, 294, 348, 349], "3gppts38211_dci": 38, "choic": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 228, 235, 236, 237, 238, 240, 242, 249, 262, 266, 269, 272, 278, 301, 304, 305, 306, 307, 308, 309, 315, 334, 348, 350], "choicebit": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "na": [39, 46, 49, 65, 72, 84, 99, 107, 115, 127, 162, 168, 171, 174, 239, 243, 259], "subcarrierspacingcommon": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "dmrstypeaposit": [39, 45, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 285, 287, 289, 291, 294, 322, 323, 324, 348, 349, 351], "controlresourceset0": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "searchspace0": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "cellbar": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "intrafrequencyreselect": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "ssbsubcarrieroffset": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "ssbindex": [39, 45, 46, 63, 64, 65, 82, 83, 84, 86, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 235, 237, 240, 242, 249, 262, 266, 272, 285, 287, 289, 291, 294, 324, 348, 349], "nssbcandidatesinhrf": [39, 45, 46, 184, 235, 237, 249, 262, 266, 272, 285, 287, 289, 291, 294, 324, 348, 349], "ati": [39, 46, 289, 291, 348, 352, 358], "systemframenumb": [39, 45, 46, 184, 262, 265, 266, 285, 287, 289, 291, 294, 302, 324, 329, 330, 332, 348, 349], "mibgener": [39, 45, 46, 184], "dmrsposit": [39, 46], "cresourcesetzero": [39, 46], "searchspacezero": [39, 46], "hrfbit": [39, 45, 46, 184, 235, 237, 249, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "titl": [39, 46, 262, 266, 291, 294, 309, 345], "misnom": [39, 46, 262, 266], "52": [39, 46, 184, 238, 262, 266, 305, 329, 330, 331, 337], "30000": [39, 46, 103, 104, 184, 228, 229, 231, 233, 261, 262, 266, 267, 301, 322, 324, 328, 331, 334, 348, 349, 351], "120000": [39, 46, 184, 262, 266, 327, 334], "240000": [39, 46, 184, 262, 266, 334], "sib1": [39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 215, 216, 217, 218, 219, 220, 246, 247, 262, 266, 348], "msg": [39, 46, 184, 262, 266], "si": [39, 46, 184, 194, 204, 236, 262, 266, 301, 348, 349], "typea": [39, 46, 184, 262, 266, 291, 294, 348], "dm": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 266, 271, 348], "pos2": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 294, 322, 323, 351], "pos3": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 294, 322, 323, 351], "controlresourceset": [39, 46, 184, 262, 266, 348], "crucial": [39, 46, 184, 196, 198, 206, 262, 266, 268, 269, 270, 271, 275, 276, 280, 285, 304, 305, 306, 307, 308, 309, 339, 349], "reselect": [39, 46, 184, 262, 266, 348], "intra": [39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 215, 216, 217, 218, 219, 220, 246, 247, 262, 266, 348], "treat": [39, 46, 184, 262, 266, 348], "frame": [39, 46, 64, 65, 83, 84, 85, 103, 104, 106, 107, 126, 127, 132, 138, 163, 165, 167, 168, 184, 189, 228, 229, 230, 231, 235, 236, 237, 238, 240, 242, 246, 247, 248, 249, 251, 254, 260, 262, 265, 266, 267, 268, 270, 271, 272, 278, 286, 294, 295, 296, 301, 304, 305, 306, 308, 309, 320, 324, 325, 327, 328, 331, 342, 348, 349, 358], "1023": [39, 46, 132, 138, 184, 246, 247, 254, 262, 265, 266], "msb": [39, 46, 184, 262, 266, 348], "sfn": [39, 46, 65, 84, 107, 127, 162, 168, 184, 239, 262, 266, 348], "ie": [39, 46, 184, 254, 262, 266], "lsb": [39, 46, 184, 262, 266], "outsid": [39, 46, 184, 262, 266, 295, 329, 343, 345], "overal": [39, 46, 184, 262, 266, 268, 271, 279, 280, 281, 283, 285, 306, 320, 329, 331, 348], "fr1": [39, 46, 184, 238, 262, 266, 267], "fr2": [39, 46, 184, 238, 249, 262, 266, 267], "configsib1": [39, 46, 184, 262, 266, 348], "ss": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 238, 240, 242, 249, 255, 256, 262, 266, 272, 348], "clear": [39, 46, 184, 262, 266, 272, 285, 288, 289, 291, 294, 342], "cellid": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 240, 242, 269, 272, 291, 294, 348, 349], "1007": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 237, 240, 242, 249, 269, 272], "candid": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 236, 240, 242, 249, 262, 266, 272, 278, 304, 305, 307, 308, 309, 310, 318, 325, 358], "upon": [39, 46, 102, 132, 181, 184, 207, 246, 262, 266, 269, 270, 272, 275, 276], "monitor": [39, 46, 236, 262, 266, 270, 281, 283, 305, 306, 308, 325], "No": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 198, 206, 240, 242, 252, 253, 255, 256, 275, 289, 315, 319, 327, 328, 331, 354], "5ghz": [39, 46, 238], "notbar": [39, 46, 348], "notallow": [39, 46, 291, 348], "typeb": [39, 46, 348], "15khz": [39, 46, 238], "30khz": [39, 46], "120khz": [39, 46], "240khz": [39, 46], "100ghz": [39, 46, 238], "3ghz": [39, 46], "6ghz": [39, 46, 238], "22": [39, 46, 189, 236, 238, 278, 284, 309, 315, 323, 324, 327, 328, 329, 330, 331, 332, 334, 337, 348, 362], "displayparamet": [39, 45, 46, 291, 294, 348], "mibextract": [39, 45, 46, 184], "payloadseq": [39, 46], "3gppts38211_mib": [39, 46], "similarli": [40, 195], "bpsk": [48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 315, 319, 326, 335, 336, 361], "3db": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "maxlog": [48, 60, 71, 79, 86, 98, 114, 122, 170, 173, 185, 188, 258, 291, 294, 301, 315, 348, 349], "bipolar": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "demapmethod": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258, 294], "consttyp": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294, 333], "mordul": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294], "scramblingid": [48, 60, 64, 65, 71, 79, 83, 84, 85, 98, 103, 104, 106, 107, 114, 122, 126, 127, 163, 165, 167, 168, 170, 173, 185, 189, 228, 229, 230, 232, 233, 240, 242, 248, 249, 258, 261, 263, 270, 271, 294, 322, 323, 334, 351], "3gppts38211_csir": [48, 60, 71, 79, 98, 114, 122, 170, 173, 248, 258], "custom": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 309, 361, 362], "convers": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259], "keyvalu": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259], "complex128": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "psk": [49, 72, 99, 115, 169, 171, 174, 257, 259, 315], "toolkit": [49, 72, 99, 115, 144, 147, 171, 174, 195, 196, 200, 205, 243, 259, 260, 267, 290, 292, 293, 295, 297, 298, 310, 318, 347, 352, 361], "program": [49, 72, 99, 115, 171, 174, 259, 295, 345], "similar": [49, 72, 99, 102, 115, 141, 171, 174, 175, 176, 207, 259, 295, 332, 339, 348], "eas": [49, 72, 99, 115, 171, 174, 259, 361], "3gppts38211_map": [49, 72, 99, 115, 171, 174, 259], "upto": [49, 72, 99, 115, 171, 174, 259, 301], "even": [49, 72, 99, 115, 171, 174, 193, 195, 203, 204, 205, 259, 301, 327, 328, 329, 331, 335], "1600": [49, 72, 99, 115, 171, 174, 259], "put": [49, 72, 99, 115, 171, 174, 259, 298, 327, 328], "kei": [49, 72, 99, 115, 171, 174, 259, 278, 280, 281, 293, 295, 322, 323, 326, 334, 335, 351, 356, 359, 360, 362], "bitdeselect": [56, 57, 75, 76, 100, 102, 118, 119, 150, 152, 157, 159, 160, 184, 185, 186, 188, 189, 207, 210, 336], "reflect": [57, 76, 102, 119, 207, 210], "repetit": [57, 76, 102, 119, 207, 210, 265, 361], "wherea": [57, 76, 89, 102, 119, 207, 210, 236, 278], "quantiti": [57, 76, 85, 103, 104, 119, 152, 159, 210, 229, 233, 263, 271], "involv": [57, 76, 89, 119, 152, 159, 175, 176, 180, 181, 182, 203, 204, 210, 268, 269, 270, 271, 272, 280, 281, 320, 326, 331, 332, 335, 336, 350], "choos": [57, 76, 119, 152, 159, 210, 236, 268, 278, 282, 307, 315, 325, 339, 342, 343, 346], "discard": [57, 76, 119, 152, 159, 210], "1st": [57, 76, 119, 152, 159, 189, 210, 323], "stage": [57, 76, 119, 152, 159, 189, 210], "term": [57, 76, 119, 152, 159, 188, 189, 210, 227, 236, 265, 278, 279, 281, 305, 307, 308, 325, 333, 339], "rm": [57, 76, 103, 104, 119, 152, 159, 210, 229, 233], "bug": [57, 76, 119, 152, 159, 210], "reach": [57, 76, 119, 152, 159, 210, 329, 331, 358], "mach": [57, 76, 119, 152, 159, 189, 210], "revers": [57, 76, 119, 152, 159, 210], "restor": [57, 76, 119, 152, 159, 210, 269, 270], "origin": [57, 76, 119, 139, 152, 159, 210, 220, 269, 270, 322, 323, 324, 325, 327, 328, 332, 334, 339, 342, 343], "modifi": [57, 76, 119, 152, 159, 210, 298], "drm": [57, 76, 119, 152, 159, 210], "isocel": [58, 77, 120, 211], "triangl": [58, 77, 120, 211], "temporari": [62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 236, 240, 241, 242, 271, 278], "intend": [62, 81, 124, 164, 241], "unicast": [62, 81, 124, 164, 241], "multicast": [62, 81, 124, 164, 241], "distinguish": [62, 81, 87, 124, 164, 241], "3gppts38212_rnti": [62, 81, 124, 164, 241], "invers": [62, 64, 65, 81, 83, 84, 102, 106, 107, 124, 126, 127, 144, 147, 162, 163, 164, 167, 168, 207, 239, 240, 241], "unmask": [62, 81, 124, 164, 241], "dcibit": [62, 81, 124, 164, 185, 241, 320, 325], "11548": [62, 81, 124, 164, 241], "dcirnti": [62, 81, 124, 164, 185, 241], "65519": [62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 185, 236, 240, 241, 242, 271, 278, 304, 305, 306, 307, 308, 309, 325], "lmax": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 238, 240, 242, 249, 272], "c_init": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 240, 242, 250], "nid": [63, 64, 65, 82, 83, 84, 85, 86, 105, 106, 107, 125, 126, 127, 129, 132, 135, 138, 150, 163, 165, 166, 167, 168, 175, 176, 179, 184, 185, 186, 188, 189, 215, 216, 217, 218, 219, 220, 240, 242, 246, 247, 249, 271, 272, 294, 320, 322, 323, 325, 350, 351], "q": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 240, 242, 294, 315, 358], "THe": [64, 83, 106, 126, 163, 167, 227, 235, 237, 240, 270, 338, 340, 341], "simpli": [64, 83, 106, 126, 163, 167, 240], "itself": [64, 83, 106, 126, 163, 167, 240, 272, 278, 356, 359, 360, 362], "bi": [64, 83, 106, 126, 163, 167, 186, 189, 240, 324, 349], "471": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "decrambl": [64, 83, 106, 126, 163, 167, 240], "pbchdescr": [64, 83, 106, 126, 163, 167, 240], "descrbit": [64, 83, 106, 126, 163, 167, 240, 322, 351], "scrbit": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242], "1051": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "18548": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "1151": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "cbindex": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "39742": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "pbchscr": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242], "seed": [64, 65, 83, 84, 106, 107, 126, 127, 162, 163, 165, 167, 168, 239, 240, 242, 245, 248, 249, 250, 251], "whom": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 196, 197, 198, 199, 240, 242, 249], "descrabl": [64, 83, 106, 126, 163, 167, 240], "n_cell_id": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "math": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 189, 196, 198, 233, 238, 240, 242, 264], "toward": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 196, 198, 206, 240, 242], "lesser": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "65535": [64, 65, 83, 84, 85, 86, 103, 104, 106, 107, 126, 127, 163, 165, 167, 168, 185, 189, 229, 232, 233, 240, 242, 249, 254, 263, 271], "datascramblingidentitypdsch": [64, 65, 83, 84, 85, 86, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 271], "ident": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 175, 176, 240, 242, 249, 256, 272, 285], "671": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "pd": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "chdescrambl": [64, 83, 106, 126, 163, 167, 240], "pdcchdescrambl": [64, 83, 106, 126, 163, 167, 240], "nu": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 244, 265], "consecut": [65, 84, 107, 127, 162, 168, 239, 254, 278, 279], "occurr": [65, 84, 107, 127, 162, 168, 239, 298], "xor": [65, 84, 107, 127, 162, 168, 239], "ed": [65, 84, 107, 127, 162, 168, 239, 353, 358], "impact": [65, 84, 107, 127, 162, 168, 239, 285, 306, 310, 318, 320, 358], "decorrel": [65, 84, 107, 127, 162, 168, 239], "abd": [65, 84, 107, 127, 162, 168, 239], "comment": [65, 84, 107, 127, 162, 168, 239, 315], "aka": [65, 84, 107, 127, 162, 168, 239], "nd": [65, 84, 107, 127, 162, 168, 239], "scambl": [65, 84, 107, 127, 162, 168, 239], "psch": [65, 84, 107, 127, 162, 168, 239], "affect": [65, 84, 107, 127, 162, 168, 239, 331], "3gppts38211_scr": [65, 84, 107, 127, 165, 168, 242], "just": [65, 84, 107, 127, 165, 168, 242, 285, 287, 288, 289, 291, 294], "anoth": [65, 84, 107, 127, 165, 168, 242, 278, 289, 315, 339], "ch": [65, 84, 107, 127, 165, 168, 242, 249], "scramber": [65, 84, 107, 127, 165, 168, 242], "pdschlowerphi": [85, 186, 294, 301, 322, 323, 351], "pdschmappingtyp": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "configurationtyp": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "maxlength": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "dmrsadditionalposit": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "l0": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "ld": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "l1": [85, 103, 104, 229, 233, 263, 264, 271, 294, 322, 323, 351], "3gppts38211pdsch": [85, 86, 95, 186], "len1": [85, 103, 104, 229, 263, 264, 271, 294, 351], "len2": [85, 103, 104, 229, 233, 263, 264, 271, 322, 323], "pos0": [85, 103, 104, 229, 233, 263, 264, 271, 351], "pos1": [85, 103, 104, 229, 263, 264, 271, 322, 323], "l_0": [85, 103, 104, 228, 229, 254, 263, 264, 271], "l_d": [85, 103, 104, 229, 233, 263, 264, 271], "l_1": [85, 103, 104, 228, 229, 263, 264, 271], "bits1": 85, "occupi": [85, 87, 103, 104, 227, 228, 229, 230, 231, 233, 234, 278, 301, 320, 325, 327, 328, 331, 350], "port": [85, 87, 88, 94, 102, 103, 104, 181, 182, 207, 228, 229, 233, 254, 263, 264, 265, 276, 294, 362], "slotnumb": [85, 103, 104, 129, 132, 135, 138, 179, 189, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 233, 236, 246, 247, 248, 249, 251, 261, 270, 271, 278, 294, 304, 305, 306, 307, 308, 309, 320, 322, 323, 325, 327, 328, 331, 334, 350, 351], "nscid": [85, 103, 104, 229, 233, 249, 263, 271, 294, 322, 323, 351], "\ud835\udc5b": [85, 103, 104, 229, 233, 263, 271], "scid": [85, 103, 104, 229, 233, 249, 263, 271], "pdschstartsymbol": [85, 233, 264, 271], "bits2": [85, 294, 322, 323, 351], "phy": [85, 86, 87, 88, 186, 189, 263, 264, 283, 318, 358], "rmdmrspdsch": [85, 103, 104, 229, 233], "gather": 85, "resourcemap": [85, 103, 104, 130, 131, 134, 136, 137, 139, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 269, 285, 287, 288, 289, 291, 294, 302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349], "pdschindic": [85, 86, 294, 322, 351], "store": [85, 196, 197, 205, 294], "displaydmrsgrid": [85, 186, 294, 351], "displayresourcegrid": [85, 103, 104, 186, 226, 228, 229, 231, 233, 294, 327, 328, 331, 351], "portindex": [85, 228], "pdschdecoderlowerphi": [86, 186, 294, 301, 322, 323, 351], "ischannelperfect": [86, 322, 350, 351], "isequ": [86, 322, 351], "necessit": 86, "channelestim": [86, 323], "rxgrid": [86, 269, 271, 275, 276, 291, 294, 302, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 334, 348, 351], "numrx": [86, 301], "portindic": 86, "subcarrierindic": [86, 334], "symbolsindic": 86, "numtb": [86, 87, 88, 90, 91, 181, 182, 264, 294, 301, 322, 323, 351], "constellationtyp": 86, "uncodedbit": [86, 323], "pdschupperphi": [87, 186, 294, 301, 322, 323, 351], "symbolsperslot": [87, 88, 90, 91, 94, 181, 182, 294, 301, 322, 323, 351], "numlay": [87, 88, 90, 91, 94, 95, 100, 102, 181, 182, 186, 207, 209, 294, 301, 322, 323, 336, 351], "scalingfield": [87, 88, 90, 91, 94, 181, 182, 264, 294, 301, 322, 323, 351], "additionaloverhead": [87, 88, 90, 91, 94, 181, 182, 264, 294, 301, 322, 323, 351], "dmrsre": [87, 88, 90, 94, 181, 294, 301, 322, 323, 351], "pdschtabl": [87, 88, 264, 294, 301, 322, 323, 351], "pdschtable1": [87, 88, 94, 264, 280, 294, 322, 323, 351], "scheme": [87, 88, 90, 91, 94, 181, 182, 264, 268, 275, 276, 280, 283, 315, 320, 361], "mc": [87, 88, 94, 181, 182, 264, 280, 281, 282, 320, 352, 358], "cqiindex": 87, "lowerbound": [87, 88, 264], "upperbound": [87, 88, 264], "pdschtable2": [87, 88, 94, 264, 280], "27": [87, 88, 264, 278, 280, 301, 315, 325, 329, 330, 331, 337, 348], "pdschtable3": [87, 88, 94, 264, 280], "pdschtable4": [87, 88, 94, 264], "26": [87, 88, 264, 301, 315, 329, 330, 331, 337, 342, 348, 350], "puschtable1": [87, 88, 94, 264], "puschtable2": [87, 88, 94, 264], "cqi": [87, 88, 94, 264, 275, 276, 361], "cqitable1": [87, 88, 94, 264], "cqitable2": [87, 88, 94, 264], "cqitable3": [87, 88, 94, 264], "cqitable4": [87, 88, 94, 264], "00": [87, 88, 90, 91, 94, 181, 182, 233, 264, 301, 315, 330], "01": [87, 88, 91, 94, 181, 182, 233, 264, 304, 315, 326, 330], "overhead": [87, 88, 90, 91, 94, 181, 182, 264], "lookup": [87, 88, 264], "progress": [87, 88, 90, 181, 182, 192, 194, 358], "tblock": [87, 108, 294, 322, 323, 351], "transfer": [87, 88, 94, 181, 182, 264, 350], "rvid": [87, 88, 90, 100, 102, 181, 186, 207, 209, 294, 301, 322, 323, 336, 351], "increment": [87, 102, 207, 327, 328, 361], "rvid1": [87, 91, 181, 182, 301], "rvid2": [87, 91, 301], "enablelbrm": [87, 88, 90, 91, 100, 102, 181, 182, 186, 207, 209, 294, 301, 322, 323, 336, 351], "concept": [87, 88, 102, 175, 176, 181, 182, 207, 271, 346], "lbrm": [87, 88, 102, 181, 182, 207], "minim": [87, 88, 101, 181, 182, 208, 271, 280, 308], "enablelbrm1": 87, "enablelbrm2": 87, "numtargetbits1": [87, 294, 322, 323, 351], "numtargetbits2": [87, 294, 322, 323, 351], "tblen2": [87, 91, 294, 322, 323, 351], "tblock2": [87, 91, 322, 323], "exist": [87, 88, 196, 197, 198, 199, 236, 264, 327, 328, 329, 330, 331, 332], "tblen1": [87, 91, 182, 294, 322, 323, 351], "tblock1": [87, 91, 182, 294, 301, 322, 323, 351], "pdschdecoderupperphi": [88, 186, 294, 301, 322, 323, 351], "symbolllr": 88, "numbertargetbit": [88, 294, 351], "k_ldpc2": 88, "n_ldpc2": 88, "liftingfactor2": 88, "fillerindic": [88, 102, 207, 336], "fillerindices2": 88, "filler": [88, 102, 207], "were": [88, 301], "crccheckforcb": [88, 301, 322, 323, 351], "crcchecktb": [88, 294, 301], "processes": [89, 180], "regard": [90, 181], "1000": [90, 181, 204, 205, 294, 304, 305, 307, 308, 309, 324, 343, 345, 350], "symbolestim": [90, 181, 323], "pdschrxobj": 90, "pdschdecod": 90, "pdschrxbit": 90, "wherein": [91, 182], "block1": [91, 182], "block2": 91, "pdschtxobj": 91, "pdschtxbit": 91, "213176": [91, 182], "rom": 94, "tbsobj": 94, "mcs_cqiindex": 94, "mcs_cqitabl": 94, "amount": [94, 279, 349, 362], "written": [94, 298, 360], "3gppts38214pdsch": [94, 186], "modulation_ord": 94, "code_r": 94, "alloca": 94, "warn": [94, 205, 206, 228, 231, 238, 253, 255, 256, 280, 320, 325, 329, 335, 338, 339, 342, 343, 345, 346, 348, 349, 362], "numr": 94, "send": [94, 315, 353], "__numrewithinrb": 94, "exceed": [94, 237, 342], "156": 94, "layermapp": [95, 186], "leq": [95, 254, 336], "codeword1": 95, "_1": 95, "codeword2": 95, "_2": 95, "repect": 95, "numsymbolperlay": 95, "__numcodeword": 95, "numlayerpercw": 95, "layerdemapp": [95, 186, 294, 323], "symbo": 95, "__numlayers1": 95, "__numlayers2": 95, "numsymbolsperlay": [95, 271], "k0": [100, 102, 186, 207, 209], "numcodedbit": [100, 102, 186, 207, 209, 336], "nldpc": [100, 102, 186, 207], "damag": [101, 208], "caus": [101, 208, 325, 335], "poorli": [101, 208], "local": [101, 196, 197, 198, 203, 204, 206, 208, 268, 326, 350, 352, 358], "erron": [101, 184, 185, 208], "numldpcout": [102, 209], "numgroup": [102, 209], "numcbingroup": [102, 209], "numbitingroup": [102, 209], "write": [102, 207], "bitselectionldpc": [102, 207], "atleast": [102, 198, 207, 270], "num_ldpc": [102, 207], "next": [102, 207, 228, 358], "obtain": [102, 203, 204, 207, 231, 269, 270, 315, 329, 338, 339, 340, 341, 342, 344, 346], "deselect": [102, 181, 207, 336], "fillerbit": [102, 207], "redundaci": [102, 207], "bitdeselectionldpc": [102, 207], "betadmr": [103, 104, 229, 233, 263, 294, 322, 323, 351], "13544": [103, 104, 229, 233], "resourcegrid": [103, 104, 189, 229, 233, 270, 294, 322, 323, 351], "fig0": [103, 104, 228, 229, 233], "ax0": [103, 104, 228, 229, 233], "cdm": [103, 104, 228, 229, 233, 249], "fig1": [103, 104, 228, 229, 233, 285], "ax1": [103, 104, 228, 229, 233, 285, 324], "displaycdmpattern": [103, 104, 186, 226, 228, 229, 233, 334], "symol": [103, 104, 229, 233], "doubl": [103, 104, 229, 233, 307], "3gppts38211_pdschdmr": [103, 104, 229, 233], "nrofport": [103, 104, 228, 229, 231, 261, 275, 334], "cdmtype": [103, 104, 228, 229, 231, 261, 334], "3gppts38211_csirsrm": [103, 104, 228, 229], "cdm21": [103, 104, 228, 229], "numresourceblock": [103, 104, 189, 229, 232, 233], "enter": [103, 104, 229, 233, 271], "maxport": [103, 104, 229], "what": [103, 104, 229, 236, 301, 339], "hell": [103, 104, 229], "__pdschmappingtyp": [103, 104, 229], "__maxlength": [103, 104, 229], "minld": [103, 104, 229], "maxld": [103, 104, 229], "someth": [103, 104, 229, 326, 356, 357, 359], "went": [103, 104, 229, 356, 357, 359], "wrong": [103, 104, 229, 356, 357, 359], "displaygrid": [103, 104, 226, 228, 229, 235, 237, 285, 287, 289, 291, 294, 324, 348, 349], "tbprocess": 108, "transportblocktxprocess": [108, 186], "rtbprocess": 108, "transportblockrxprocess": [108, 186], "rtblock1": 108, "chk1": 108, "rtblock": 108, "controlinfo": [129, 132, 179, 246, 350], "indexpucch": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 350], "initial_cyclicshift": [129, 132, 135, 138, 179, 215, 216, 246, 247], "m_c": [129, 132, 135, 138, 179, 215, 216, 217, 218, 219, 220, 246, 247, 352, 358], "numinterlacedrb": [129, 130, 131, 132, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 350], "numberofsymb": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 350], "pucch_grouphop": [129, 132, 135, 138, 139, 179, 215, 216, 217, 218, 219, 220, 246, 247, 350], "seqnumb": [129, 132, 179, 246], "start_symbindex": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247], "resourcemapperformat0": [129, 131, 179, 215, 216], "interlaceindex_0": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 350], "interlaceindex_1": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 350], "maxnumprb": [129, 130, 131, 134, 135, 136, 137, 138, 179, 215, 216, 217, 218, 219, 222, 247], "numofinterlac": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 350], "rg_size": [129, 130, 131, 135, 136, 137, 179, 215, 216, 218, 219, 222], "secondhopprb": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 350], "seqlength": [129, 130, 131, 134, 135, 136, 137, 139, 179, 215, 216, 217, 218, 219, 220, 222, 250], "startingprb": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 350], "resourcedemapperformat0": [129, 130, 179, 215], "interlacedtransmiss": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 350], "interlac": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 350], "pucch_resourcecommon": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 350], "intraslotfreqhop": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 350], "hop": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 254, 265, 350], "symbolindex_start": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 350], "resourceblock": [130, 131, 132, 215, 216, 246], "rmop": [130, 131, 136, 137, 215, 216, 217, 218, 219], "rdemobj": [130, 136, 215, 217, 218], "rdemop": [130, 134, 136, 215, 217, 218], "dedic": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 268, 275, 276, 350], "179": [130, 131, 215, 216], "275": [130, 131, 134, 136, 137, 138, 215, 216, 217, 218, 219, 247, 350], "initialis": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247], "bandwidth": [130, 131, 132, 134, 136, 137, 138, 215, 216, 217, 218, 219, 227, 230, 236, 238, 245, 246, 247, 254, 260, 265, 267, 270, 275, 276, 281, 285, 287, 288, 289, 291, 294, 301, 302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349], "bandwidthpart": [130, 131, 134, 136, 137, 138, 215, 216, 217, 218, 219, 247], "tend": [130, 131, 134, 136, 137, 139, 215, 216, 217, 218, 219, 220], "inputofdmgrid": [130, 136, 215, 218], "consider": [130, 131, 132, 136, 137, 138, 139, 203, 204, 215, 216, 218, 219, 220, 246, 247, 329], "intraslot": [130, 131, 136, 137, 138, 139, 215, 216, 218, 219, 220, 247, 350], "format0": [130, 131, 132, 179, 215, 216, 246, 350], "plu": [130, 131, 132, 136, 137, 138, 139, 206, 215, 216, 218, 219, 220, 246, 247, 280], "bwp": [130, 131, 132, 136, 137, 138, 215, 216, 218, 219, 227, 230, 236, 246, 247, 267, 270, 278, 285, 287, 288, 291, 324, 325, 327, 328, 331, 334, 348, 349], "intraslothop": [130, 131, 136, 137, 215, 216, 218, 219], "213": [130, 131, 132, 134, 136, 137, 138, 139, 186, 215, 216, 217, 218, 219, 220, 236, 244, 245, 246, 247, 255, 256, 278], "bullet": [130, 131, 132, 134, 136, 137, 138, 139, 181, 182], "edit": [130, 131, 132, 134, 136, 137, 138, 139, 181, 182], "format0_seq": [131, 132, 215, 216, 246], "rmobj": [131, 137, 215, 216, 217, 218, 219, 325], "beta_pucch0": [131, 216], "amplitud": [131, 137, 216, 219, 275, 276, 285, 288, 289, 291, 294, 331, 332, 333, 346, 347, 352], "conform": [131, 137, 216, 219], "prior": [131, 132, 137, 138, 216, 219, 246, 247, 268, 350], "inputseq": [131, 136, 137, 139, 216, 218, 219, 220], "658": [132, 215, 216, 246], "format0_seqgenobj": [132, 215, 216, 246], "287": [132, 215, 216, 246], "408": [132, 215, 216, 246, 254], "sequencegener": [132, 138, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 285, 287, 288, 289, 291, 294, 324, 348, 349, 350], "But": [132, 134, 138, 217, 227, 246, 247, 270, 302, 327, 328, 356, 357, 359], "And": [132, 138, 139, 145, 176, 220, 246, 247], "interpret": [132, 246, 315], "beteen": [132, 138, 246, 247], "withi": [132, 246], "numofsymbol": [134, 136, 137, 138, 139, 217, 218, 219, 220, 247, 350], "timedomainocc": [134, 135, 139, 179, 217, 218, 219, 220, 222], "cover": [134, 139, 217, 218, 219, 220, 260, 264, 275, 276, 331, 335, 339, 342, 343, 346, 348, 358, 360], "despreadingobj": [134, 217], "despreadingformat1": [134, 135, 179, 217, 222], "despreadedseq": [134, 217], "despread": [134, 217], "numofhop": [134, 217], "initilis": [134, 217], "spreadingfactor": [134, 135, 139, 179, 220], "statu": [134, 139, 350], "nhop": [135, 138, 179, 217, 218, 219, 220, 247], "spreadingformat1": [135, 139, 179, 217, 218, 219, 220, 222], "resourcemapperformat1": [135, 137, 179, 217, 218, 219, 222], "resourcedemapperformat1": [135, 136, 179, 217, 218, 222], "he": [136, 218], "irb": [136, 137, 139, 218, 219, 220], "format1": [136, 137, 179, 218, 219], "spreadedseq": [137, 139, 217, 218, 219, 220], "beta_pucch1": [137, 219], "157": [138, 247], "initialcycshift": [138, 217, 218, 219, 220, 247, 350], "format1_sequ": [138, 139, 217, 218, 219, 220, 247], "astyp": [138, 217, 218, 219, 220, 247, 289, 294, 315, 319, 323, 326, 335, 336], "format1_seqgenobj": [138, 217, 218, 219, 220, 247], "format1_seq": [138, 217, 218, 219, 220, 247], "symb": [138, 182, 217, 218, 219, 220, 235, 247, 254, 315, 319, 320, 325, 326, 333, 335, 336], "hoppingrefvar": [138, 217, 218, 219, 220, 247], "pucch_format1_seqgener": [138, 247], "inputsymb": [138, 247], "bwtween": [138, 247], "spreadingobj": [139, 217, 218, 219, 220], "occ": [139, 220], "othogon": [139, 220], "happen": [139, 220], "thr": [144, 147], "3gppts38212": [144, 145, 147, 148], "explain": [144, 147, 243], "numinfobit": [144, 147, 148, 175, 176], "uciblock": [144, 147, 176], "chsblobj": [144, 147], "channelcodingsmallblocklen": [144, 147], "numofseg": [144, 147, 148, 175], "decis": [144, 147, 280, 283, 320], "chdesblobj": [144, 147], "channeldecodingsmallblocklen": [144, 147], "physial": [145, 181, 182], "pc": 145, "wm": 145, "192": [145, 285, 287, 288, 289, 291, 294], "200": [148, 267, 301, 315, 320, 322, 323, 325, 327, 328, 329, 331, 332, 334, 348, 361], "4224": [148, 149], "cbconcaten": 148, "1555": 148, "2112": 148, "codewordsegreg": 148, "3gppts38212_polar": 149, "segmentationobj": 149, "codeseg": 149, "aggrobj": 149, "codeblockaggregationpucch": 149, "aggrop": 149, "codingof": [151, 161], "47": [163, 165, 167, 168, 278, 315, 329, 330, 331, 337], "35967": [163, 165, 167, 168], "pucchdescr": [163, 167], "pucchscr": [165, 168], "3gppts38212_pucch": [175, 176], "3gppts38211_pucch": [175, 176], "3gppts38211_pucch_format2": [175, 176], "3gppts38211_pucch_formats3and4": [175, 176], "sectio": 175, "detach": [175, 181], "100000": [175, 198, 319], "45976": [175, 176], "545": [175, 176, 331], "1654": [175, 176], "1792": 175, "838": 175, "bumber": 175, "equalized_symbol": 175, "pucchupperphydecoder_obj": 175, "pucchupperphydecod": 175, "10779": [175, 176], "377": [175, 176], "51": [175, 245, 278, 301, 329, 330, 331, 337], "better": [176, 196, 197, 198, 199, 202, 279, 280, 305, 327, 328, 331, 332, 358], "unerstand": 176, "pucchupperphy_obj": 176, "pucchupperphi": 176, "puschupperphi": [180, 182], "puschdecoderupperphi": [180, 181], "3gppts38211_pusch": [181, 182], "descript": [181, 182], "3gppts38212_pusch": [181, 182], "puschrx": 181, "puschdatarx": 181, "tha": 181, "estsymb": 181, "demappertyp": 181, "chri": [181, 182], "jhonson": [181, 182], "3gppts38214_pusch": 182, "puschtx": 182, "puschdata": 182, "3gppts38212pusch": 182, "pdcchdecod": [183, 185, 320, 325], "pbchdecod": [183, 184, 285, 287, 288, 289, 291, 294, 324, 348, 349], "psbchdecod": [183, 188], "pscchupperphi": [183, 189], "pscchlowerphi": [183, 189], "pscchupperphydecod": [183, 189], "pscchlowerphydecod": [183, 189], "3gppts38211pbch": 184, "432": [184, 235, 237, 269, 289, 291, 349], "pbchil": 184, "pbch_iil": 184, "sbbil": 184, "scr2": 184, "payloadmib": [184, 348], "mibsequ": [184, 291, 294], "requenc": 184, "ilbit": 184, "payloadcrc": 184, "iilbit": 184, "sbil_bit": 184, "scr2bit": [184, 291, 294, 348], "chil_bit": 184, "polardectyp": [184, 291, 294, 348, 349], "symboldemappertyp": [184, 291, 294, 348, 349], "mibflag": 184, "crccheck": [184, 349], "pbche": 184, "channeldeinterleaverbit": 184, "decrcbit": 184, "descrambledbit": 184, "descrambled2llr": 184, "inputdeinteleavedbit": 184, "mibrx": [184, 291, 294, 348], "pbchdeinterleavedbit": [184, 291, 294], "polardecodedbit": 184, "ratedematedbit": 184, "subblockdeinterleavedbit": 184, "3gppts38211pdcch": 185, "dcipayload": 185, "dcibil": 185, "dcicrc": 185, "dciibi": 185, "dcirm": 185, "dciscr": [185, 320], "demappingmethod": [185, 320, 325], "equalizedsymbol": 185, "decodedbit": 185, "dematchedbit": 185, "descrambledllr": 185, "ibdilbit": 185, "sbdbit": 185, "unmaskedbit": 185, "upperphi": [186, 189], "lowerphi": [186, 189], "rf": [186, 189, 196, 286, 290, 292, 293, 295, 361], "3gppts38213pdsch": 186, "entertain": [186, 189], "arrang": [186, 358], "develop": [186, 297, 358], "modular": [186, 361], "plug": [186, 358, 361], "plai": [186, 196, 198, 206, 271, 275, 276, 280, 281, 283, 358, 361], "research": [186, 339, 358, 361], "independ": [186, 203, 205, 236, 238, 278], "3gppts38211psbch": 188, "synchronis": 188, "scan": [188, 285], "camp": 188, "1386": 188, "1782": [188, 301], "verbal": 188, "explan": [188, 331], "subblockinterleav": 188, "symboldemapp": [188, 291, 294, 348, 349], "inputsymbol": 188, "polardecod": [188, 291, 294, 320, 348, 349], "possess": 188, "scl8": 188, "scl32": 188, "subblockdeinterleav": 188, "inputdeinterleav": 188, "3gppts38211pscch": 189, "3gppts38212pscch": 189, "comst": 189, "3057017": 189, "ofbit": 189, "scibit": 189, "scirm": 189, "sci": 189, "43": [189, 294, 315, 327, 328, 329, 330, 331, 337, 348], "symbnumb": [189, 232, 249], "v2x": [189, 343, 361], "complex32": [189, 232, 233], "payloadindic": 189, "descrllr": 189, "gpp": 189, "138": [189, 236, 278], "rscibit": 189, "pscchllr": 189, "5th": 190, "dft_doa": [192, 195, 206], "juli": [192, 194, 195], "sorri": [192, 194], "inconveni": [192, 194], "invari": [193, 203], "ntx": [193, 195, 302, 331, 332, 348], "nty": [193, 195, 302, 331, 332], "dtx": [193, 195, 302, 332], "dty": [193, 195, 302, 332], "taken": [193, 195, 206, 233, 235, 256, 298, 301, 302, 332], "propoerti": [193, 302, 332], "lpath": [193, 195, 202, 205, 302, 327, 328, 329, 330, 332], "strongest": [193, 195, 202, 203, 204, 205, 324], "espritdoa": [193, 302, 332], "esprit_doa": [193, 195, 206, 332], "xoa_est": [193, 195], "nr_x": [193, 195, 302, 348], "nr_y": [193, 195, 302, 348], "nobserv": [193, 195, 302], "exploit": [193, 195, 203, 204, 268, 281, 346], "y": [193, 195, 196, 197, 198, 199, 275, 285, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 315, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 348, 349, 350, 351, 362], "theta_": [193, 195, 345], "phi_": [193, 195, 345], "trace": [193, 195, 299], "d_spcgx_rx": [193, 195], "d_spcgy_rx": [193, 195], "numpath": [193, 195, 202, 205, 338, 340, 341, 344], "thei": [193, 195, 236, 255, 256, 278, 333, 356, 357, 358, 359], "ltipl": [194, 204], "gnal": [194, 204], "lassif": [194, 204], "music_doa": [194, 195, 206], "doa": [195, 200, 206, 302, 331, 332], "planner": 195, "offer": [195, 197, 203, 204, 280, 283, 298, 329], "oof": 195, "increas": [195, 196, 198, 202, 206, 227, 281, 285, 287, 288, 289, 291, 294, 306, 307, 308, 309, 319, 342], "resolut": [195, 196, 202, 203, 204, 284, 331, 332], "music": [195, 202, 205, 206, 327, 328], "medium": [195, 294, 309, 310, 318, 329, 335], "esprit": [195, 205, 206, 302, 327, 328, 329, 330, 331, 332], "yet": [195, 354, 355], "doaestim": [195, 206, 302], "aoa": [195, 196, 197, 200, 206, 302, 347, 352, 358, 361], "nomenclatur": [196, 198], "aod": [196, 200, 206, 347, 352, 358, 361], "rsrp": [196, 200, 206, 349, 352, 358, 361], "newton": [196, 200, 206], "raphson": [196, 200, 206], "ul": [196, 198, 206, 236, 243, 254, 318, 352, 358, 361], "rtoa": [196, 198, 206], "reli": [196, 198, 268, 280, 281, 329], "gd": [196, 198], "converg": [196, 198, 206], "global": [196, 198, 206], "optima": [196, 198, 206], "inspir": [196, 198, 199], "3gppdoa": 196, "refloc": [196, 324], "nref": [196, 197, 198, 199], "xoa": [196, 197, 206, 302, 331, 332], "posestim": [196, 197, 206, 302, 331, 332], "leastsquaredoa": [196, 206, 331, 332], "framework": [196, 197, 198, 199, 200, 296, 318], "equiheight": [196, 197, 198, 199], "phenomenon": [196, 197, 198, 199, 346], "co": [196, 197, 198, 199, 302, 315, 324, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 346, 349], "ordin": [196, 197, 198, 199], "uncertainti": [196, 197, 198, 199, 206, 280], "numepoch": [196, 198, 206], "toler": [196, 198, 206], "stepsiz": [196, 198, 206], "gradientdescentdoa": [196, 206], "numiterationperepoch": [196, 198, 206], "1e": [196, 198, 206], "06": [196, 198, 206, 294, 301, 315, 319, 351, 362], "phi_i": 196, "theta_i": 196, "epoch": [196, 198, 206, 301, 315], "000001": 196, "solut": [196, 198, 206, 353, 358], "refposit": [196, 197, 198, 199, 206], "odd": [196, 198, 206, 269, 271, 275, 276], "get": [196, 198, 206, 267, 279, 291, 294, 308, 322, 323, 334, 345, 348, 356, 357, 358, 359], "stuck": [196, 198, 206], "role": [196, 198, 206, 271, 275, 276, 280, 281, 283], "sucept": [196, 198, 206], "minima": [196, 198, 206], "nrefnod": [196, 197, 198, 199], "trilater": [196, 197, 198, 329], "tdoa": [196, 200, 206, 302, 330, 352, 358, 361], "wang": [196, 304, 305, 306, 307, 308, 309], "shi": 196, "yu": 196, "huang": 196, "chen": 196, "2019": [196, 301], "16th": 196, "workshop": [196, 301], "navig": [196, 329, 331, 332], "wpnc": 196, "bremen": 196, "germani": 196, "doi": [196, 199, 284, 301, 315], "1109": [196, 199, 284, 301, 315], "wpnc47567": 196, "8970182": 196, "leverag": [197, 268, 271, 331, 332], "strength": [197, 280, 339], "approach": [197, 279], "accur": [197, 198, 203, 204, 268, 269, 270, 271, 275, 276, 285, 302, 320, 327, 328, 329, 330, 331, 332, 339], "fuse": 197, "multilater": [197, 329, 331, 332], "mitig": [197, 255, 256, 268, 269, 270, 271, 283, 329, 331], "resolv": 197, "ambigu": 197, "constraint": [197, 281, 283, 315, 333], "refin": [197, 268, 361], "strong": [197, 203, 204], "hybridtoaaoa": [197, 206], "txposit": [197, 198, 199, 206, 302, 327, 328, 329, 330, 331, 332], "numtranmitt": [197, 206], "doaest": [197, 206, 302, 332], "toae": [197, 198, 199, 206, 302, 327, 328, 329, 330, 331, 332], "refpositionaoa": [197, 206, 302], "hybridtdoaaoa": [197, 206], "tdoaest": [197, 206], "handbooktdoa": 198, "otdoa": 198, "rstd": 198, "leastsquar": [198, 206, 328, 330], "newtonraphson": [198, 206], "gradientdesc": [198, 206], "suffer": [198, 202], "calibr": 198, "major": [198, 302, 305, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 334, 346, 349, 351], "challeng": [198, 281, 329, 331, 358], "degrad": [198, 202, 204, 269, 270, 302, 325, 335], "significantli": [198, 302, 327], "leastsquaretdoa": [198, 206, 327, 329], "rxpositionestim": [198, 327, 328, 329, 330, 331, 332], "tau_": [198, 206], "tau_i": [198, 206], "tau_r": [198, 206], "neq": [198, 206], "gradientdescenttdoa": [198, 206], "numrepetit": [198, 302, 329, 330, 332], "0000000001": 198, "newtonraphsontdoa": [198, 206], "overcom": 198, "rmb": 198, "reza": 198, "zekavat": 198, "oxford": 198, "innov": 198, "wilei": 198, "press": 198, "2011": 198, "34": [198, 289, 294, 301, 315, 320, 329, 330, 331, 337, 348, 349], "hppinf": 199, "leastsquaretoa": [199, 206, 327, 329], "locestim": 199, "poserror": 199, "speed_of_light": 199, "light": [199, 329], "em": 199, "singh": [199, 284], "masal": [199, 284], "klutto": [199, 284], "milleth": [199, 284], "ramamurthi": [199, 284], "massiv": [199, 284, 334, 346, 352, 358, 361], "beyond": [199, 284, 318, 347, 352, 358], "32nd": [199, 284], "annual": [199, 284, 356, 359, 360], "person": [199, 284], "pimrc": [199, 284], "helsinki": [199, 284], "finland": [199, 284], "1234": [199, 284], "1240": [199, 284], "pimrc50174": [199, 284], "9569480": [199, 284], "rtt": [200, 206, 231, 330, 361], "gradient": [200, 206, 302, 315, 327, 331, 332], "descent": [200, 206, 302, 315, 327, 331, 332], "mrtt": [200, 206], "profil": [202, 205, 338, 339, 340, 341, 344, 346], "pdp": [202, 206], "peak": [202, 204, 273, 275, 352, 358], "experi": [202, 227, 283, 285, 301, 304, 331, 346], "unavail": [202, 278, 295], "situat": [202, 279], "numobserv": [202, 203, 204, 205], "osfactor": 202, "dfttoa": 202, "dft_toa": [202, 205, 206], "promin": [202, 204, 205, 273, 285, 289, 291, 294, 348], "displaypdp": 202, "document": [202, 203, 204, 205, 206, 244, 245, 253, 254, 256, 269, 273, 274, 276], "oversamplingfactor": [202, 205, 327, 328], "domin": [202, 204], "heigth": [202, 204, 205], "spike": [202, 204, 205, 273, 275], "spectrum": [202, 204, 205, 238, 262, 266, 281, 285, 289, 292, 293, 295, 333, 347, 352], "find_peak": [202, 204, 205, 273], "scipi": [202, 204, 205, 269, 273, 276, 302, 327, 328, 329, 330, 331, 332, 334, 356, 359, 360], "xmin": [202, 205, 302, 327, 329, 330, 332], "xmax": [202, 205, 302, 327, 329, 330, 332], "principl": [203, 204, 329], "covari": [203, 204], "context": [203, 269, 270, 289, 322, 323, 334, 346], "cyclostationar": [203, 268], "mathemat": [203, 315, 322, 323, 334], "eigenvalu": [203, 204], "decomposit": [203, 204, 322, 323, 334], "subspac": [203, 204], "interest": [203, 260, 280, 305, 358], "eigenvector": [203, 204], "onc": [203, 204, 206, 279, 329, 356, 357, 359, 360], "analyz": [203, 204, 268, 310, 315, 318, 320, 322, 323, 326, 327, 328, 331, 332, 334, 342, 344, 350, 358, 361], "adjac": 203, "trigonometr": 203, "relationship": 203, "advantag": [203, 204, 278], "presenc": [203, 204, 315, 331], "knowledg": [203, 204, 268], "narrowband": [203, 204], "exhibit": [203, 204, 346], "particularli": [203, 204, 280, 322, 323, 334, 346], "critic": [203, 204, 268, 269, 281, 283, 285, 362], "radar": [203, 204], "esprit_toa": [203, 205, 206], "numberofpath": [203, 204, 205, 302, 327, 328, 329, 330], "report": [203, 221, 234, 275, 276, 361], "experienc": [203, 204, 359], "ob": [203, 205], "observ": [203, 205, 315, 326, 327, 328, 335, 336, 338, 340, 341, 344, 350], "classif": 204, "popular": 204, "eigenstructur": 204, "decompos": [204, 322, 323, 334], "separ": [204, 260, 268], "suppress": 204, "leav": 204, "pseudospectrum": 204, "abil": [204, 331, 332, 333], "statist": [204, 268, 315, 347, 352, 358], "stationar": 204, "min_delai": [204, 205], "max_delai": [204, 205], "music_toa": [204, 205, 206], "displaymusicspectrum": 204, "displayeigenvalu": 204, "eigen": [204, 280, 281, 322, 323, 334, 351], "delaygrid": 204, "flaat": 204, "musicspectrum": 204, "peakvalu": 204, "numspik": 204, "manag": [204, 243, 254, 270, 283, 285, 296, 331, 332, 352, 358, 361], "actual": [204, 327, 328, 331, 345, 349], "multipath": [204, 268, 329, 331, 339, 346], "immun": 204, "miss": 204, "weak": [204, 338, 340, 341, 344], "idxlow": [204, 205], "idxhigh": [204, 205], "basi": [204, 206, 315], "till": [204, 278, 361], "toaestim": [205, 206, 302, 327, 328, 329, 330, 331, 332], "sort": [205, 302, 327, 328, 329, 330], "toaest": [205, 206], "noth": [205, 355], "devic": [206, 238, 244, 245, 285, 289, 295, 299, 301, 318, 343, 352, 358, 361], "positioningmethod": 206, "optimizationmethod": [206, 328, 330], "ecid": 206, "Not": [206, 233, 301, 327, 328, 331, 339, 342, 356, 359], "00000001": [206, 301], "txpositiontoa": 206, "txpositionaoa": 206, "due": [206, 268, 280, 301, 329, 333, 338, 340, 341, 344, 346, 362], "gdop": [206, 302], "numrefnod": 206, "fig_ax_tupl": 206, "visual": [206, 286, 295, 318, 352, 358], "circlelw": 206, "75": [206, 230, 281, 285, 288, 289, 291, 294, 301, 302, 308, 309, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 336, 337, 342, 345, 348], "circlel": 206, "estlocs": 206, "estlocmark": 206, "estloccolor": 206, "reflocs": 206, "reflocmark": 206, "refloccolor": 206, "displaylegend": 206, "style": [206, 285, 287, 288, 294, 301, 302, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 345, 346, 349, 351, 362], "sign": 206, "append": [206, 236, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "visibl": [206, 326], "wheather": [206, 362], "superimpos": 206, "serv": [214, 279, 282], "3gppts38211_format0": [215, 216, 246], "3gppts38212_format0": [215, 216, 246], "3gppts38213_format0": [215, 216, 246], "3gppts38211_dsformat1": 217, "3gppts38213_dsformat1": 217, "3gppts38211_dmformat1": 218, "3gppts38213_dmformat1": 218, "3gppts38211_rmformat1": 219, "3gppts38213_rmformat1": 219, "3gppts38211_sformat1": 220, "3gppts38213_sformat1": 220, "fill": [226, 230, 232, 275, 279, 302, 327, 328, 329, 330, 331, 332], "dmrsindic": [226, 237, 269, 291, 294, 348], "pbchindic": [226, 237, 269, 291, 294, 348], "pssindic": [226, 237], "sssindic": [226, 237], "displaycoresetreg_cce_map": [226, 227], "3gppts38211coreset": 227, "cce": [227, 230, 236, 270, 278, 304, 305, 306, 307, 308, 309, 320, 325], "quantifi": [227, 325], "assign": [227, 236, 278, 279, 320], "coverag": [227, 234, 244, 245, 254, 269, 278, 280, 283, 305, 309, 310, 318, 339, 352, 358], "accommod": 227, "frequencydomainresourc": [227, 230, 270, 320, 325], "contigu": [227, 230, 236, 270], "activ": [227, 236, 279, 301, 315, 357, 358], "270": [227, 278, 320, 325, 332], "reg": [227, 230, 270, 320, 325], "mappingtyp": 227, "bundl": [227, 230, 270, 320, 325], "bundles": 227, "permit": 227, "interleavers": [227, 270, 320, 325], "bandwith": [227, 309], "paramt": 227, "shiftlndex": 227, "nshift": [227, 230, 270, 320, 325], "274": [227, 270], "organis": 227, "72": [227, 244, 325, 329, 330, 331, 333, 337], "bwpstartprbindex": 227, "numrbincoreset": 227, "manner": [227, 279], "0th": [227, 230, 270], "sum": [227, 230, 270, 278, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 325, 327, 328, 329, 330, 331, 332, 333, 334, 342, 343, 345, 349], "cce_reg_mappingtyp": [227, 270, 320, 325], "reg_bundles": [227, 270, 320, 325], "shiftindex": [227, 270, 320, 325], "word": [227, 270, 315], "numberofrb": [227, 270], "numprbsincoreset": 227, "numregincoreset": 227, "displaycoreset": 227, "frequecydomainresourc": 227, "cce_reg_map": [227, 320, 325], "instansti": [227, 236], "coresetobj": [227, 320, 325], "coresetprbindic": [227, 320, 325], "numccesincoreset": [227, 325], "startprb": [228, 231, 261, 334], "nrofprb": [228, 231, 261, 334], "configurations___": [228, 334], "rowindex": [228, 231, 261, 334], "parameters__________________________________________": [228, 334], "13254": 228, "numslotsperfram": [228, 231, 278, 302, 304, 305, 306, 308, 309, 329, 330, 332], "_____________________________________________________________": [228, 334], "resources____________________": [228, 334], "betacsir": [228, 261, 334], "firstofdmsymbolintimedomain": [228, 231, 261, 334], "firstofdmsymbolintimedomain2": [228, 231, 261, 334], "frequencydomainalloc": [228, 231, 261, 334], "rmcsir": [228, 334], "csirsgrid": [228, 334], "3gppts38211_ssbgrid": [228, 235, 237, 238], "nocdm": 228, "cdm2": [228, 334], "cdm4": 228, "fd2": 228, "td2": 228, "cdm8": 228, "td4": 228, "4095": [228, 230, 231, 248, 251, 270], "k_i": 228, "resourcegridsizeinrb": [228, 265, 302, 329, 330, 332, 334], "unit": [228, 238, 266, 281], "resou": 228, "__rowindex": [228, 231], "numscmap": [228, 231], "__nrofport": [228, 231], "__densiti": [228, 231], "possiblecdmtyp": [228, 231], "possibledens": [228, 231], "interg": [228, 231, 232], "batchindex": 228, "3gppts38211pdcchrm": 230, "monitoringsymbolswithinslot": [230, 270, 320, 325], "3gppts38211_pdcchrm": 230, "120": [230, 236, 245, 250, 267, 278, 302, 309, 324, 327, 329, 330, 332, 334, 340, 342], "region": [230, 236, 278, 280, 326], "pdcchpayload": 230, "numpdcchbit": 230, "interleavertyp": 230, "chosencceindic": [230, 320], "al": [230, 236, 278, 304, 306, 307, 308, 309, 310, 318, 320, 325, 358], "3gppts38211_prsrm": 231, "dl_prs_numsymbol": [231, 327, 328, 331], "dl_prs_combsizen": [231, 327, 328, 331], "comb": [231, 254, 265, 327, 328, 331], "dl_prs_resourcesymboloffset": [231, 327, 328, 331], "dl_prs_reoffset": [231, 327, 328, 331], "dl_prs_sequenceid": [231, 327, 328, 331], "1031": [231, 328, 331], "betapr": [231, 327, 328, 331], "prsmapper": 231, "prsgrid": [231, 327, 328, 331], "combsiz": [231, 327, 328], "reoffset": 231, "startsymbol": [231, 263, 264, 294, 301, 322, 323, 351], "sequenceid": [231, 254, 265, 302, 329, 330, 332], "\ud835\udc3e": 231, "combsizen": 231, "andreoffset": 231, "compens": [231, 268, 269, 270, 271], "resourcesymboloffset": 231, "3gppts38211pscchrm": 232, "nrb": [232, 267, 285, 287, 288, 289, 291, 294, 324, 348, 349], "nsymbperslot": 232, "lptr": 233, "kptr": 233, "offsetindex": 233, "ts38": [233, 301], "pt": [233, 302, 324, 327, 328, 329, 330, 331, 332, 334, 348, 349], "k_": [233, 254, 265, 327, 328, 331, 345, 348], "offset00": 233, "offset01": 233, "offset10": 233, "offset11": 233, "tale": 233, "latenc": [234, 280], "classifi": 234, "short": [234, 346], "span": [234, 235, 237], "acknowledg": [234, 350], "puchh": 234, "unlik": 234, "energi": [234, 281, 309, 315, 346], "coher": [234, 249], "240": [235, 237, 238, 249, 269, 272, 274, 285, 287, 289, 291, 294, 301, 324, 348, 349], "127": [235, 237, 252, 253, 255, 256, 329], "144": [235, 237, 245, 249, 269, 285, 287, 289, 291, 294, 324, 348, 349], "numssb": [235, 237, 266, 269], "n_id1": [235, 237, 285, 287, 289, 291, 294, 348, 349], "336": [235, 237, 256, 285, 287, 289, 291, 294, 348], "n_id2": [235, 237, 273, 285, 287, 289, 291, 294, 348, 349], "n_id": [235, 237, 249, 285, 287, 289, 291, 294, 348, 349], "pssobject": [235, 237, 285, 287, 289, 291, 294, 324, 348, 349], "psssequenc": [235, 237, 252, 285, 287, 289, 291, 294, 324, 348, 349], "sssobject": [235, 237, 285, 287, 289, 291, 294, 324, 348, 349], "ssssequenc": [235, 237, 255, 256, 285, 287, 289, 291, 294, 324, 348, 349], "dmrslen": [235, 237, 249, 285, 287, 289, 291, 294, 324, 348, 349], "dmrsobject": [235, 237, 249, 285, 287, 289, 291, 294, 324, 348, 349], "dmrssequenc": [235, 237, 249, 285, 287, 289, 291, 294, 324, 348, 349], "pbchsymbol": [235, 237, 269, 285, 287, 289, 291, 294, 324, 348, 349], "ssbobject": [235, 237, 285, 287, 289, 291, 294, 324, 348, 349], "nid1": [235, 255, 256, 274, 324], "nid2": [235, 252, 253, 255, 256, 273, 274, 285, 288, 291, 294, 324, 348], "335": [235, 255, 256, 274], "isnorm": [235, 237], "un": [235, 237, 260, 261, 262, 263, 264, 265, 266, 267, 302, 329, 330, 332], "spss": [235, 253], "ssss": [235, 256], "33": [235, 278, 294, 301, 305, 309, 315, 327, 328, 329, 330, 331, 336, 337, 348], "99": [235, 301, 322, 326, 329, 330, 331, 335, 336], "shouldn": [235, 237], "pbchsymb": [235, 237], "dmrsseq": [235, 237, 285, 287, 289, 291, 294, 348, 349], "132": 235, "sl_ssb": 235, "254": 235, "heat": [235, 237, 285, 287, 289, 291, 294], "rel": [235, 237, 279, 301, 331, 332, 343], "3gppts38213_searchspaceset": 236, "blind": [236, 268, 310, 318, 352, 358], "css": [236, 278, 304, 305, 306, 307, 308, 309, 325], "uss": [236, 278, 304, 305, 306, 307, 308, 309, 325], "would": [236, 278, 295], "page": [236, 348, 353, 356, 357, 358, 359, 360], "ra": 236, "tpc": 236, "command": [236, 267, 356, 357, 359, 360], "searchspacetyp": [236, 278, 304, 305, 306, 307, 308, 309, 325], "numcandid": [236, 304, 305, 306, 307, 308, 309, 325], "coresetdur": [236, 270, 325], "monitoringperiod": 236, "monitoringoffset": 236, "searchspacesetdur": 236, "attempt": [236, 285], "serach": 236, "occas": 236, "period": [236, 261, 265, 269, 270, 275, 276, 285, 302, 329, 330, 332], "searchspac": 236, "candiat": [236, 278, 308], "correspondingli": [236, 278], "monitoringslotperiodicityandoffset": 236, "160": [236, 265], "320": [236, 265], "640": [236, 265], "1280": [236, 265, 331], "2560": [236, 265], "monitoringperiodicti": 236, "aggregationlevel": 236, "restric": 236, "coresets": [236, 308, 309, 325], "coresetid": [236, 278, 304, 305, 306, 307, 308, 309, 325], "pdcchmonitoringslotindic": 236, "pdcchmonitoringsymbolswithinslot": 236, "sy": [236, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 362], "numoffram": 236, "numofslotsperframepernumerologi": 236, "slotnum": 236, "sstype": [236, 325], "corset": 236, "54": [236, 270, 278, 294, 301, 304, 305, 306, 307, 320, 323, 325, 329, 330, 331, 337, 340, 350], "hash": [236, 278], "periodicti": 236, "22051": 236, "sssobj": 236, "candidatecc": 236, "36": [236, 244, 245, 254, 265, 289, 294, 301, 304, 305, 315, 323, 325, 329, 330, 331, 337, 345, 348], "37": [236, 289, 294, 315, 329, 330, 331, 332, 337, 348], "48": [236, 249, 278, 289, 291, 294, 301, 305, 315, 323, 327, 329, 330, 331, 334, 337, 348], "49": [236, 278, 301, 315, 329, 330, 331, 337], "zoom": [236, 326, 342], "pssseq": 237, "sssseq": 237, "maor": 237, "ssbtype": [238, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "casea": [238, 262, 266, 285, 287, 289, 291, 294, 324, 349], "3600000000": [238, 267, 348], "ispairedband": [238, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "withsharedspectrumchannelaccess": [238, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "caseb": [238, 262, 266], "casec": [238, 262, 266], "casef": 238, "caseg": 238, "kssb": [238, 289, 294, 348, 349], "offsettopointa": [238, 266, 285, 287, 289, 291, 294, 348, 349], "jointli": [238, 268], "offsetinsubcarri": [238, 262, 266, 285, 287, 291, 294, 324, 348, 349], "offsetinrb": [238, 262, 266, 285, 287, 291, 294, 324, 348, 349], "ssbpositioninburst": [238, 262, 266, 285, 287, 289, 291, 294, 324, 348, 349], "60khz": 238, "equival": 238, "rememb": 238, "overlap": [238, 278, 306, 333], "regardless": [238, 279], "nhf": [238, 249, 272, 289, 294, 348, 349], "5m": [238, 327, 328, 331], "boundari": [238, 252, 253, 285, 342], "272": [238, 279, 302, 315, 329, 330], "273": 238, "ones": [238, 266, 285, 287, 289, 291, 294, 320, 324, 331, 333, 345, 348, 349], "bitmap": 238, "copi": [238, 291, 294, 320, 348], "4x240": 238, "x4x240": 238, "3gppts38211_ssbrm": 238, "table1": [243, 280], "table2": 243, "preambl": 243, "3gppts38211lowpapr": [244, 245], "3gppts38213lowpapr": [244, 245], "constrain": [244, 245, 309, 324], "altern": [244, 245, 279], "gold": [244, 245, 250, 255, 256, 325, 326, 327, 328, 334, 335, 336, 337, 342], "excel": [244, 245, 273], "lengthofsequ": [244, 245, 254, 265], "lowpapr": [244, 245], "seq": [244, 245], "96": [244, 301, 329, 330, 331, 336], "84": [244, 329, 330, 331, 334, 337], "131": 244, "cyclicshift": 244, "groupnumb": [244, 245], "basesequencenumb": 244, "dummi": [244, 245], "like": [244, 245, 268, 326, 339], "n_c": 244, "n_u": [244, 245], "mzc": 244, "chose": [244, 245, 254, 278, 325], "accrodingli": [244, 245, 254], "u_or_cinit": 245, "122": [245, 324, 329, 348], "151": 245, "groupnumber_or_cinit": 245, "cinit": 245, "c_": [245, 248, 249, 250, 251], "3gppts38211_format1": 247, "3gppts38212_format1": 247, "3gppts38213_format1": 247, "ofdmsymbolnumb": [248, 251, 334], "symbolnumb": [248, 249, 251], "198": [248, 331], "csirslength": 248, "csirsobject": 248, "csirssequ": 248, "1075": [248, 251], "187": [248, 251], "3gppts38211_dmr": 249, "lambda": [249, 315], "lengthdmr": 249, "2ghz": 249, "mmwave": [249, 346], "n_cell_id_sl": 249, "scramblingid0": 249, "scramblingid1": 249, "lambdabar": 249, "scaler": [249, 250, 252, 253, 255, 256], "nscidbar": 249, "ofr": 250, "3gppts38211_pn": 250, "reproduc": [250, 298, 301, 315], "pnobject": 250, "1x120": 250, "21359": 250, "2780": 250, "161": 250, "3x161": 250, "dlprssequenceid": 251, "3gppts38211_pr": 251, "prslength": 251, "prsobject": [251, 327, 328, 331], "prssequenc": 251, "aim": [252, 253, 255, 256, 269, 270, 271, 274, 280, 281], "3gppts38211_pss": 252, "1x127": [252, 253, 255, 256], "4x127": [252, 253, 255, 256], "id2": [252, 253, 255, 256, 291, 294, 348], "3gppts38211_s_pss": 253, "spsssequenc": 253, "zadoff": 254, "chu": 254, "mind": [254, 353], "multiport": 254, "3gppts38211_sr": 254, "nrofsrs_port": [254, 265, 302, 329, 330, 332], "transmissioncomb": [254, 265, 302, 329, 330, 332], "nrofsymbol": [254, 265, 302, 329, 330, 332], "startposit": [254, 265, 302, 329, 330, 332], "nrofcyclicshift": [254, 265, 302, 329, 330, 332], "grouporsequencehop": [254, 265, 302, 329, 330, 332], "sequencehop": [254, 265], "974": 254, "slotindex": [254, 265, 327, 328, 331], "numid": 254, "grouphop": [254, 265], "tc": [254, 265], "nrofcyclicshiftmax": 254, "numsequenceid": [254, 276], "symbolindic": [254, 265, 324, 349], "behaviour": [254, 329, 338, 339, 343, 346], "symbolindex": 254, "m_": 254, "p_": [254, 327, 328, 331], "repetitionfactor": [254, 265, 302, 329, 330, 332], "confiur": 254, "ind": [254, 265], "ex": [254, 265], "ic": [254, 265], "centr": [255, 256], "3gppts38211_sss": 255, "204": [255, 256], "98": [255, 256, 294, 301, 329, 330, 331, 344, 351], "2x127": [255, 256], "101": [255, 256, 329], "3x127": [255, 256], "len": [255, 326, 335, 336, 337, 350], "3gppts38211_s_sss": 256, "fourth": 256, "fifth": 256, "sssssequenc": 256, "rrc": [260, 265], "influenc": [260, 281], "overwhelm": 260, "compli": 260, "acquir": [261, 265], "tdd": 261, "reciproc": [261, 265, 299], "slotoffset": 261, "numslot": [261, 302, 327, 328, 329, 330, 331, 332, 334], "nscsoffset": [262, 285, 287, 289, 291, 294, 324, 348, 349], "unconfigur": 263, "mcstabl": [264, 280, 294, 322, 323, 351], "config": [264, 285, 287, 288, 289, 291, 294, 334], "maintain": [264, 268, 269, 279, 280, 281, 305], "comboffset": [265, 302, 329, 330, 332], "resourcetyp": [265, 302, 329, 330, 332], "bsr": [265, 302, 329, 330, 332], "csr": [265, 302, 329, 330, 332], "bhop": [265, 302, 329, 330, 332], "freqscalingfactor": [265, 302, 329, 330, 332], "startrbindex": [265, 302, 329, 330, 332], "enablestartrbhop": [265, 302, 329, 330, 332], "freqdomainshift": [265, 302, 329, 330, 332], "freqdomainposit": [265, 302, 329, 330, 332], "periodicityinslot": 265, "offsetinslot": 265, "betasr": [265, 302, 329, 330, 332], "disbal": [265, 301], "hopp": 265, "67": [265, 309, 327, 328, 329, 330, 331, 336, 337], "268": 265, "p_f": 265, "inteer": 265, "repet": 265, "semi": 265, "persist": 265, "aperiod": 265, "legit": [266, 267, 327, 328], "equaval": 266, "guard": 267, "don": [267, 295, 320, 324, 325, 349], "bandwidthtx": [267, 324, 348, 349], "nsymbolfram": [267, 285, 287, 288, 289, 291, 294, 301, 324, 348, 349], "tfparam": [267, 285, 287, 288, 289, 291, 294, 301, 324, 348, 349], "typecp": [267, 285, 287, 288, 289, 291, 294, 301, 324, 348, 349], "transit": [267, 285, 287, 288, 289, 291, 294, 324, 348, 349], "neff": [267, 285, 287, 288, 289, 291, 294, 324, 348, 349], "exclud": [267, 285, 287, 288, 291, 324, 348, 349], "gaurd": [267, 285, 287, 288, 291, 324, 348, 349], "lengthcp": [267, 273, 285, 287, 288, 289, 291, 294, 324, 348, 349], "100000000": 267, "mhz": [267, 301, 324, 327, 328, 329, 330, 331, 332, 349], "prfix": 267, "acn": 267, "extend": [267, 269, 327, 328, 331], "possiblecombinations_fr1": 267, "39": [267, 294, 301, 315, 329, 330, 331, 337, 338, 339, 342, 343, 344, 345, 346, 348, 362], "possiblecombinations_fr2": 267, "400": [267, 285, 325, 328, 330, 331], "getgaurdband_fr1": 267, "gaird": 267, "getgaurdband_fr2": 267, "getnumberrb_fr1": 267, "getnumberrb_fr2": 267, "oscil": 268, "inaccuraci": 268, "doppler": [268, 320, 343, 347, 352], "proper": [268, 269, 270, 285], "recept": [268, 269, 270, 271, 283, 286, 290, 292, 293, 295, 320, 331, 332], "embed": [268, 315], "align": [268, 285, 299], "tone": 268, "do": [268, 333], "explicit": 268, "joint": [268, 280], "inher": 268, "essenti": [268, 269, 270, 283, 285, 320, 339, 346], "therefor": 268, "seamless": [268, 280, 285], "environment": [268, 331], "receiveralgorithm": [268, 269, 270, 271, 272, 273, 274, 275, 276, 285, 287, 288, 289, 291, 294, 302, 320, 323, 324, 325, 329, 330, 332, 334, 348, 349], "narrow": 268, "nearli": 268, "flat": [268, 281], "pssofdmsymbol": 268, "numcfoiter": 268, "despit": [269, 270, 280], "variat": [269, 270, 279, 280, 310, 318, 326, 329, 339, 345, 347, 352, 358], "gnb": [269, 270, 285, 320, 324, 327, 328, 329], "rss": [269, 270], "mmse": [269, 270], "fde": [269, 270], "distort": [269, 270, 271, 331], "final": [269, 270, 280, 301, 327, 328, 330, 331, 332, 358], "zf": [269, 291, 294, 348, 349], "nearest": [269, 270, 271, 275, 285, 287, 289, 291, 294, 324, 339, 346, 348, 349], "spline": [269, 275, 276, 294, 302, 327, 328, 329, 330, 331, 332, 334], "estimatortyp": [269, 291, 294, 348, 349], "interpolatortyp": [269, 275, 276, 291, 294, 302, 329, 330, 332, 334, 348, 349], "nn": [269, 275, 276, 291, 294, 315, 323, 334, 348], "chest": [269, 294, 302, 329, 330, 332, 334], "channelestimationandequ": [269, 285, 287, 288, 289, 291, 294, 324, 348, 349], "randn": [269, 272, 274, 315], "1j": [269, 272, 273, 274, 302, 315, 319, 324, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 349, 350], "pilotloc": 269, "tk": [269, 356, 357, 359, 360, 362], "dataloc": 269, "isuemobil": [269, 271, 291, 294, 323, 348, 349], "chanel": [269, 270], "ssbgrid": [269, 285, 287, 289, 291, 294, 324, 348, 349], "knot": [269, 275, 276, 334], "ssbestim": [269, 272, 274, 291, 294, 348], "possiblevalu": 269, "handov": [270, 285, 358], "hi": [270, 301], "speialli": 270, "vital": [271, 285], "delv": 271, "gnodeb": [271, 275, 276, 279, 280, 283, 331, 332], "intersymbol": 271, "isi": 271, "accordingli": 271, "sophist": [271, 275, 276], "1x1": 271, "2x2": 271, "3x3": 271, "4x4": 271, "5x5": 271, "6x6": 271, "7x7": 271, "8x8": 271, "reciv": 271, "unquil": 271, "interpolatortypefrequ": [271, 323], "extrapol": [271, 275, 276], "cubicsplin": [271, 323, 331], "blow": 272, "1008": [272, 334], "dmrsdet": 272, "ssbest": [272, 274, 324, 349], "l_max": 272, "897": 272, "halfframeindex": 272, "cellid2": [272, 324], "cellid1": [272, 324], "channelassist": [272, 274, 291, 294, 348], "wire": 273, "fro": 273, "st": [273, 291, 294], "largestpeak": [273, 285, 288, 289, 291, 294, 348], "detectortyp": 273, "peakdetector": 273, "timesynch": 273, "timeindex": 273, "rand": [273, 302, 324, 327, 328, 329, 330, 331, 332, 334, 348], "rxsampl": 273, "exp": [273, 302, 324, 327, 328, 329, 330, 331, 332, 334, 345, 349], "256": [273, 289, 318, 322, 333], "freqoffset": [273, 285, 288, 289, 291, 294, 348], "psspeakindic": [273, 285, 288, 289, 291, 294, 348], "psscorrel": [273, 285, 288, 289, 291, 294, 348], "rasteroffset": [273, 285, 288, 289, 291, 294, 348], "vline": [273, 285, 288, 289, 291, 294, 324, 331, 348], "ymin": [273, 285, 288, 289, 291, 294, 302, 324, 327, 329, 330, 331, 332, 348], "ymax": [273, 285, 288, 289, 291, 294, 302, 324, 327, 329, 330, 331, 332, 348], "purpl": [273, 285, 288, 289, 291, 294, 324, 325, 326, 327, 328, 334, 335, 336, 337, 342, 348], "set_ylim": [273, 285, 288, 289, 291, 294, 301, 302, 305, 309, 320, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 342, 348, 349, 351], "recevi": [273, 352, 358], "________________________________________________________________": [273, 285, 288, 289, 291, 294, 327, 328, 332, 348], "futur": 273, "threshold": [273, 278, 281, 285, 289, 291, 294, 309, 348], "025": [273, 275], "frequencei": 273, "sssdet": 274, "312": [274, 331], "receivecombin": [274, 285, 287, 288, 289, 291, 294, 324, 348, 349], "fundament": [275, 276, 315], "technic": [275, 276], "goal": [275, 276, 280, 295, 315], "sweep": [275, 276, 327], "feedback": [275, 276, 280, 281, 361], "dynam": [275, 276, 279, 280, 281, 283], "summari": [275, 276, 285, 315, 346], "numrxantennaport": 275, "csirsresourcemapp": 275, "akima": [275, 276, 334], "pchip": [275, 276, 334], "spline_and_denois": [275, 334], "smoothen": 275, "lagrangian": 275, "smooth": 275, "channelestimatorcsi": 275, "resourcemappersr": [275, 276, 302, 329, 330, 332], "numsc": [275, 276, 333], "numcyclicshit": 276, "numsrsport": 276, "unequil": 276, "srsresourcemapp": 276, "numcyclicshift": 276, "3gppts38213pdcch": 278, "evalu": [278, 304, 305, 306, 308, 309, 318, 320, 327, 328, 330, 331, 332, 352, 358], "metric": [278, 283, 294, 326, 335], "numcc": [278, 309], "numcandidatesundereach": [278, 307], "nci": [278, 304, 305, 306, 307, 308, 309], "ca": 278, "uesundereach": 278, "likewis": 278, "strategi": [278, 280, 281, 283, 304, 305, 306, 308, 309, 310, 318, 320, 358], "conserv": [278, 280, 304, 305, 306, 307, 308, 309], "aggress": [278, 280, 307], "priorit": [278, 307], "dimenison": 278, "successfulli": [278, 308, 356, 357, 359], "opportun": [278, 279], "ith": 278, "continu": [278, 280, 336], "entir": 278, "135": [278, 301, 309], "those": [278, 327, 328], "sinr": [278, 280, 281, 304], "moder": 278, "decent": 278, "nccep": [278, 304, 305, 306, 307, 308, 309], "numerlogi": [278, 304, 305, 306, 307, 308, 309], "agglevelprobdistribut": [278, 306, 307, 308, 309], "multinomi": [278, 304, 305, 306, 307, 308, 309], "replac": [278, 295, 301, 304, 305, 306, 307, 308, 309], "pdcchschedulerobj": [278, 304, 305, 306, 307, 308, 309], "count": [278, 302, 304, 305, 306, 307, 308, 309, 315, 327, 328, 329, 330, 331, 332, 333, 345], "cceindic": 278, "numblockedu": [278, 304, 305, 306, 307, 308, 309], "14766": 278, "34333": 278, "8673": 278, "37708": 278, "57818": 278, "42": [278, 294, 301, 315, 323, 329, 330, 331, 337, 348], "41": [278, 294, 315, 329, 330, 331, 337, 348], "44": [278, 294, 305, 315, 329, 330, 331, 337, 348], "46": [278, 294, 301, 315, 329, 330, 331, 337, 342, 362], "int64": 278, "mark": [278, 342], "fair": [279, 283], "equit": 279, "prioriti": [279, 299], "cycl": [279, 348], "fashion": [279, 298], "prevent": 279, "monopol": [279, 327, 328, 331], "begin": 279, "maxim": [279, 280, 281, 283], "meet": [279, 280, 283, 304, 310, 318], "qo": [279, 280, 281, 283], "proport": 279, "concern": 279, "strict": 279, "commonli": [279, 331], "balanc": [279, 280], "straightforward": 279, "numuescheduledacrossfreq": [279, 283], "numuescheduledacrosstim": [279, 283], "firstacrosstim": [279, 283], "accorss": 279, "contend": 279, "mulipl": 279, "numsymbolperu": 279, "numrbperu": 279, "resgrid": [279, 320, 325, 327, 328], "postiv": 279, "displayuealloc": 279, "availbl": 279, "appropri": [280, 281, 283, 362], "advers": 280, "mechan": [280, 281, 320, 324, 329], "rssi": 280, "amc": 280, "quickli": [280, 358], "fluctuat": 280, "prevail": [280, 281], "contribut": [280, 346], "mcsindic": 280, "descib": 280, "2nd": [280, 323], "pdchtable3": 280, "singular": [280, 281, 322, 323, 334], "sigma": [280, 281], "p_t": [280, 281, 327, 328, 331, 348], "n_0": [280, 281], "blertarget": 280, "decibel": 280, "blermargin": 280, "margin": [280, 342], "safeti": 280, "phenomena": [280, 346], "failur": 280, "diagram": [280, 290, 292, 293, 295, 326, 335, 336, 352, 358], "uncertain": 280, "ambiti": 280, "table3": 280, "selectmc": [280, 283], "minsnrvalu": 280, "simpler": [281, 339], "account": [281, 356, 359, 360], "favor": 281, "traffic": 281, "demand": 281, "therebi": [281, 350], "snrdbmin": 281, "isrankindicatorsubcarrierspecif": 281, "n_l": 281, "n_t": 281, "n_r": 281, "suit": 281, "protocol": 283, "stack": [283, 302, 315, 324, 331, 332, 349], "deal": 283, "weight": 283, "coordin": [283, 285, 302, 327, 328, 329, 330, 332, 338, 339, 340, 341, 342, 343, 344], "partit": 283, "deliv": 283, "satisfactori": 283, "ravi": 284, "kumar": 284, "super": 284, "manuscript": 284, "isj": 284, "15236": 284, "submit": 284, "journal": 284, "watch": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 362], "youtub": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 362], "view": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 362], "github": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 356, 357, 358, 359, 360, 362], "notebook": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351, 358, 360, 362], "breakdown": 285, "uniqu": 285, "nearbi": 285, "clock": [285, 329], "alongsid": 285, "benefit": [285, 298, 320, 331], "ipython": [285, 287, 288, 294, 301, 302, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 342, 345, 346, 349, 351, 362], "html": [285, 287, 288, 294, 301, 302, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 342, 345, 346, 349, 351, 357, 358, 362], "adi": [285, 287, 288, 289, 291, 294, 295], "analogbeamform": [285, 287, 288, 289, 291, 294, 324, 348, 349], "center_frequ": [285, 287, 288, 289, 291], "1e9": [285, 287, 288, 289, 291], "subcarrier_spac": [285, 287, 288, 289, 291], "numofdmsymbol": [285, 287, 288, 289, 291, 294, 348], "sample_r": [285, 287, 288, 289, 291, 294], "puls": [285, 287, 288, 289, 291, 294], "numsamplespersymbol": [285, 287, 288, 289, 291, 294], "buffer_s": [285, 287, 288, 289, 291, 294], "___________________________________________________________________": [285, 287, 289, 291, 294, 348], "3e8": [285, 287, 289, 291, 294, 324, 348, 349], "ssbparamet": [285, 287, 289, 291, 294, 324, 348, 349], "nsc_ssb": [285, 287, 289, 291, 294, 324, 348, 349], "nsymb_ssb": [285, 287, 289, 291, 294, 324, 348, 349], "_______________________________________": [285, 287, 289, 291, 294, 324, 348, 349], "getsequ": [285, 287, 289, 291, 294, 348, 349], "tensorflow": [285, 287, 289, 291, 294, 301, 315, 348, 349, 358, 359, 362], "pbchobject": [285, 287, 289, 291, 294, 324, 348, 349], "ssbrgobject": [285, 287, 289, 291, 294, 324, 348, 349], "numofguardcarri": [285, 287, 289, 291, 294, 348], "firstscindex": [285, 287, 289, 291, 294, 348], "__________________________________________________": [285, 287, 289, 291, 294], "x_time": [285, 287, 289, 291, 294, 348], "flatten": [285, 287, 289, 291, 294, 333, 345, 348, 349], "______________________________________________________": [285, 287, 289, 291, 294, 348], "imshow": [285, 287, 289, 291, 294, 324, 325, 327, 328, 339, 346, 348, 349], "cmap": [285, 287, 289, 291, 294, 324, 325, 327, 328, 334, 339, 346, 348, 349], "hot": [285, 287, 289, 291, 294, 315, 324, 327, 328, 334, 339, 346, 348, 349], "auto": [285, 287, 289, 291, 294, 315, 324, 325, 327, 328, 339, 346, 348, 349], "gca": [285, 287, 289, 291, 294, 327, 328, 334, 339, 346, 348], "linestyl": [285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 315, 319, 320, 322, 323, 326, 327, 328, 329, 330, 331, 332, 334, 335, 336, 337, 339, 346, 348, 349, 351], "linewidth": [285, 287, 289, 291, 294, 327, 328, 334, 339, 346, 348], "gridlin": [285, 287, 289, 291, 294, 327, 328, 334, 339, 346, 348], "tick": [285, 287, 289, 291, 294, 309, 324, 327, 328, 334, 339, 346, 348], "pluto": [285, 287, 288, 289, 291, 294, 295, 361], "ip": [285, 287, 288, 289, 291, 294], "168": [285, 287, 288, 289, 291, 294, 331, 350], "tx_rf_bandwidth": [285, 287, 288, 289, 291, 294], "filter": [285, 287, 288, 289, 291, 294, 331], "cutoff": [285, 287, 288, 289, 291, 294], "tx_lo": [285, 287, 288, 289, 291, 294], "tx_hardwaregain_chan0": [285, 287, 288, 289, 291, 294], "gain_control_mode_chan0": [285, 287, 288, 289, 291, 294], "rx_hardwaregain_chan0": [285, 287, 288, 289, 291, 294], "74": [285, 287, 288, 289, 291, 294, 301, 329, 330, 331, 337], "slow_attack": [285, 287, 288, 289, 291, 294], "agc": [285, 287, 288, 289, 291, 294], "fast_attack": [285, 287, 288, 289, 291, 294], "rx_lo": [285, 287, 288, 289, 291, 294], "rx_rf_bandwidth": [285, 287, 288, 289, 291, 294], "rx_buffer_s": [285, 287, 288, 289, 291, 294], "tx_cyclic_buff": [285, 287, 289, 291, 294], "safe": [285, 288, 289, 291, 294], "raw_data": [285, 288, 289, 291, 294], "rx_sampl": [285, 288, 289, 291, 294], "tx_destroy_buff": [285, 288, 289, 291, 294], "rn_id2": [285, 288, 289, 291, 294, 348], "ssboffset": [285, 288, 289, 291, 294, 348], "startingsubcarrierindic": [285, 288, 289, 291, 294, 348], "scalefig": [285, 288, 291, 294, 338, 340, 341, 342, 344], "figsiz": [285, 288, 291, 294, 301, 302, 322, 323, 324, 325, 327, 330, 333, 334, 338, 339, 340, 341, 342, 343, 344, 346, 351, 362], "374": 285, "interact": [285, 356, 357, 358, 359], "maplotlib": 285, "anim": [285, 287, 288, 339, 343, 346, 347, 352], "squeez": 285, "pssrtime": 285, "draw": [285, 326, 342], "def": [285, 289, 315, 342], "With": [285, 306, 325, 339, 342, 343, 346], "set_xlim": [285, 289, 291, 294, 301, 302, 305, 307, 308, 324, 326, 327, 328, 329, 330, 331, 332, 333, 338, 339, 340, 341, 342, 344, 346, 348], "minx": 285, "maxi": 285, "freq": [285, 320], "fontsiz": [285, 301, 304, 305, 306, 307, 308, 326, 335, 336, 337, 342, 343, 349, 350], "85": [285, 309, 323, 327, 328, 329, 330, 331, 332, 351], "suptitl": [285, 338, 339, 340, 341, 342, 344, 346], "millisecond": [285, 342], "drawn": [285, 327, 328, 339, 342], "funcanim": [285, 342], "blit": [285, 342], "mp4": [285, 342], "ffmpeg": [285, 342], "writer": [285, 342], "writervideo": [285, 342], "ffmpegwrit": [285, 342], "fp": [285, 342], "simulationofnodemobl": [285, 342], "extra_arg": [285, 342], "vcodec": [285, 342], "libx264": [285, 342], "gif": [285, 342], "fig1ur": 285, "scalefig1": 285, "max1i": 285, "anim1": 285, "overall_fram": 285, "sdr": [286, 290, 292, 293, 297, 358, 361], "setup": [286, 290, 292, 293, 295, 352, 358, 359], "save": [286, 295, 327, 328, 329, 330, 331, 332, 342, 352, 358], "run": [286, 295, 315, 325, 342, 356, 357, 359, 360], "288": [287, 344, 348], "362": 288, "broadacast": [289, 291], "__": [289, 291, 327, 328, 331], "scscarrier": [289, 294, 348, 349], "ssbperiod": [289, 294, 348, 349], "nframe": [289, 294, 324, 348, 349], "savefig": [289, 327, 333, 337, 362], "svg": [289, 327, 333, 362], "png": [289, 327, 333, 337], "axhlin": [289, 291, 294, 302, 327, 328, 329, 330, 331, 332, 348], "axvlin": [289, 291, 294, 302, 327, 328, 329, 330, 331, 332, 334, 342, 348], "firstsymbolindex": 289, "timeouterror": 289, "traceback": 289, "recent": 289, "file": [289, 356, 359, 360], "miniconda3": [289, 356, 357, 359], "env": 289, "mysdr": 289, "lib": 289, "python3": 289, "context_manag": 289, "py": [289, 302, 320, 331, 332, 348, 349], "uri": 289, "_device_nam": 289, "gt": [289, 291, 294, 315, 327, 328, 338, 339, 340, 341, 342, 343, 344, 345, 348], "_ctx": 289, "iio": 289, "baseexcept": 289, "1358": 289, "_context": 289, "1357": 289, "elif": [289, 291, 294, 322, 334, 345, 348, 350], "_isstr": 289, "_new_uri": 289, "ascii": 289, "1359": 289, "_check_nul": 289, "func": 289, "55": [289, 294, 309, 329, 330, 331, 337], "err": 289, "get_last_error": 289, "_system": 289, "get_errno": 289, "oserror": 289, "_strerror": 289, "errno": 289, "110": [289, 309, 329, 335, 362], "rx_tx": 289, "717": 289, "rx_tx_def": 289, "714": 289, "715": 289, "union": 289, "716": 289, "rx_def": 289, "718": 289, "tx_def": 289, "720": 289, "__post_init__": 289, "636": 289, "632": 289, "633": 289, "634": 289, "shared_def": 289, "638": 289, "_rx_data_device_nam": 289, "639": 289, "_rxadc": 289, "find_devic": 289, "586": 289, "584": 289, "uri_ctx": 289, "585": 289, "587": [289, 331], "588": [289, 331], "required_devic": 289, "_control_device_nam": 289, "2048": [291, 294, 336, 339, 346], "894": 291, "pssstartindex": [291, 294, 348], "ssbscsoffset": [291, 294, 348], "magnitud": [291, 294, 327, 334, 347, 352], "spreactrum": [291, 294], "n_id_1": [291, 294], "rn_id1": [291, 294, 348], "rn_id": [291, 294, 348], "rxssbobject": [291, 294, 348], "rxdmrsindic": [291, 294, 348], "dmrsdetect": [291, 294, 348], "rssbindex": [291, 294, 348], "rhrfbit": [291, 294, 348], "rxdmrsobject": [291, 294, 348], "rxdmrsseq": [291, 294, 348], "interpolt": [291, 294, 348, 349], "chanest": [291, 294, 348, 349], "rxpbchindic": [291, 294, 348], "pbchestim": [291, 294, 348, 349], "extractmibinfo": [291, 294, 348, 349], "rxmib": [291, 294, 348, 349], "lw": [291, 294, 301, 302, 315, 319, 322, 323, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 342, 348, 349, 362], "loc": [291, 294, 301, 309, 320, 322, 323, 326, 327, 328, 331, 334, 335, 336, 337, 349, 350, 351, 362], "lt": [291, 294, 315, 327, 328, 338, 339, 340, 341, 342, 343, 344, 345, 348], "frozen": [291, 294], "494": [291, 294, 320, 348, 349], "userwarn": [291, 294, 320, 348, 349], "ressourc": [291, 294, 320, 348, 349], "blocklength": [291, 294, 320, 348, 349], "cpu_onli": [291, 294, 320, 348, 349], "2000000000": 291, "intrafreqreselect": [291, 294, 348], "303": 291, "issbindex": [291, 294, 348], "couldn": [291, 294, 348], "id1": [291, 294, 348], "uncod": [291, 294, 319, 348], "uncodedb": [291, 294, 319, 320, 322, 323, 348, 351], "codedb": [291, 294, 320, 322, 323, 348, 351], "verif": [292, 293, 295], "recours": [293, 295], "cost": [294, 301, 305], "thm": 294, "coars": 294, "170": 294, "pdschlowerphyconfig": [294, 322, 323, 351], "pdschupperphyconfig": [294, 322, 323, 351], "51216": 294, "layerpertb": [294, 351], "6015625": 294, "85680": 294, "65536": [294, 320, 322, 323, 351], "pdschlowerphychain": [294, 322, 323, 351], "transmis": [294, 322, 323, 351], "sqrt": [294, 302, 315, 319, 320, 324, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 342, 349, 350], "norm": [294, 302, 315, 324, 325, 327, 328, 329, 330, 331, 332, 333, 334, 338, 340, 341, 346, 348], "0001": [294, 339], "640x480": [294, 344, 345], "xlabel": [294, 315, 345], "ylabel": [294, 315, 345], "ssbresgrid": 294, "112": [294, 329, 350], "11629": 294, "328723559462": 294, "scalingfactor": 294, "pulseshap": 294, "1101004": 294, "1038": 294, "dtection": 294, "1000000000": 294, "694": [294, 331], "pdschstartindex": 294, "pdschgrid": 294, "53": [294, 301, 324, 329, 330, 331, 334, 337], "polyord": 294, "Will": 294, "rsymbol": 294, "laydemap": 294, "rlmsym": 294, "rxllr": 294, "scrobject": 294, "rscrbit": 294, "pdschupphydec": [294, 322, 323, 351], "thoughput": 294, "hertz": 294, "slotdur": [294, 301], "spectaleffici": 294, "mbp": [294, 301], "412": 294, "2804": 294, "1428571428571429": 294, "7893069130182532e": 294, "softwar": [295, 361], "board": [295, 358], "our": [295, 327, 328, 330, 331, 356, 357, 358, 359], "prototyp": [295, 358], "test": [295, 301, 318, 358, 361], "xilinx": 295, "zynq": 295, "ultrascal": 295, "rfsoc": 295, "pynq": 295, "ni": [295, 361], "usrp": [295, 361], "b200": 295, "b205": 295, "mini": [295, 361], "b210": 295, "uhd": 295, "analog": [295, 299, 352, 361], "phasor": 295, "exhaust": [295, 327, 328, 330, 331], "sole": 295, "famili": [295, 333], "mention": 295, "encount": [295, 302, 331, 332], "difficulti": 295, "hesit": 295, "gigayasa": [295, 298, 356, 357, 358, 359, 360], "com": [295, 356, 357, 358, 359, 360], "glad": 295, "organ": [295, 322, 323, 334, 362], "script": [295, 325, 326, 335, 336, 350, 356, 357, 358, 359], "audienc": [296, 297, 348], "taught": 296, "ii": [296, 299, 310, 315, 318, 358, 361], "remot": [296, 361], "cours": [297, 358], "introductori": [297, 358], "2023": [298, 301, 358, 362], "reserv": [298, 325], "r23": 298, "logo": 298, "regist": 298, "privat": 298, "consent": 298, "public": [298, 358], "owner": 298, "product": [298, 338, 340, 341, 358], "rather": 298, "editori": 298, "intent": 298, "infring": 298, "reveal": 298, "copyright": [298, 358], "unauthor": 298, "reproduct": 298, "strictli": 298, "prohibit": 298, "legal": 298, "action": 298, "herein": 298, "furnish": 298, "subject": [298, 356, 359, 360], "notic": 298, "guarante": 298, "commit": 298, "terrestri": [299, 361], "ntn": [299, 361], "ai": [299, 324, 349, 358, 361], "ml": [299, 358, 361], "latest": [299, 356, 357, 358, 359], "architectur": [299, 356, 359, 360], "noma": 299, "otf": 299, "twin": [299, 301], "r23a": [300, 356, 357, 358, 360, 362], "teach": [301, 358], "neural": [301, 315], "convent": 301, "combinatori": 301, "consum": 301, "internet": 301, "thing": [301, 358], "iot": [301, 352, 358], "propos": 301, "er": [301, 349], "rapidli": 301, "might": [301, 329, 338, 339, 343, 345, 346, 356, 357, 358, 359], "hour": 301, "gb": 301, "excercis": 301, "numfram": 301, "numpoint": [301, 320, 322, 323, 324, 349, 351], "numtrainingsampl": 301, "ticker": [301, 351], "formatstrformatt": [301, 351], "nodesperlay": 301, "hidden": 301, "activationfunct": 301, "numtestsampl": 301, "relu": [301, 315], "displaymap": 301, "bitloc": 301, "displayrealpart": 301, "651u": 301, "0184e": 301, "04": [301, 308, 315], "9938": 301, "580u": 301, "617u": 301, "5833e": 301, "9970": 301, "620u": 301, "660u": 301, "0046": 301, "9902": 301, "02": [301, 302, 304, 315, 330], "628u": 301, "4096": [301, 302, 320, 325, 329, 330], "585u": 301, "5838e": 301, "9895": 301, "95": [301, 302, 305, 309, 328, 329, 330, 331, 334, 349], "525u": 301, "579u": 301, "0524e": 301, "9724": 301, "97": [301, 329, 330, 331], "532u": 301, "595u": 301, "8327e": 301, "9935": 301, "559u": 301, "591u": 301, "0649e": 301, "9734": 301, "528u": [301, 315], "611u": 301, "3079e": 301, "9711": 301, "556u": [301, 315], "3204e": 301, "9839": 301, "scspace": 301, "numtx": 301, "4785": 301, "001": [301, 350], "artifici": [301, 315, 358, 361], "ann": [301, 315], "mimic": 301, "fed": [301, 315], "adam": [301, 315], "levenberg": 301, "marquardt": 301, "backpropag": 301, "batch_siz": [301, 315], "reason": [301, 307], "slighli": 301, "paper": [301, 304, 305, 306, 307, 308, 309, 358], "claim": 301, "unabl": 301, "predict": [301, 315, 339, 353], "emit": [301, 331], "maxthroughput": 301, "mcsidx": 301, "pdschupphi": 301, "snrindex": [301, 315, 319, 326, 335, 336], "tbest": 301, "mod": [301, 342, 350], "_______________________________________________________": 301, "025147934868943605": 301, "028224781572676726": 301, "1536": 301, "776u": 301, "7875": 301, "9571": 301, "767u": 301, "0052": 301, "9923": 301, "761u": 301, "0027": 301, "9948": 301, "757u": 301, "0019": 301, "9952": 301, "647u": 301, "0018": 301, "49725": 301, "523u": [301, 315], "02535378607360339": 301, "511111111111111": 301, "016092136616362194": 301, "995": 301, "302160": 301, "00000000023": 301, "01816587238549113": 301, "943u": 301, "8334": 301, "9536": 301, "942u": 301, "0104": 301, "9900": 301, "950u": 301, "0034": 301, "9942": 301, "945u": 301, "0020": 301, "9954": 301, "675u": 301, "0013": 301, "9964": 301, "593u": 301, "01622584061424411": 301, "9975": 301, "151079": 301, "99999999677": 301, "622222222222223": 301, "0077429176595181365": 301, "6043199": 301, "999999999": 301, "009148795340217104": 301, "9425": 301, "3474839": 301, "9999999995": [301, 322], "1m": [301, 315, 345], "8134": 301, "9645": 301, "988u": 301, "0096": 301, "9915": 301, "976u": 301, "0028": 301, "9941": 301, "967u": 301, "9953": 301, "678u": 301, "0021": 301, "9961": 301, "61": [301, 302, 329, 330, 331, 337], "599u": 301, "00787595975642044": 301, "733333333333333": 301, "003140058247286206": 301, "645": 301, "21453360": 301, "003892308710616892": 301, "7224999999999999": 301, "16769880": 301, "000000004": 301, "9520": 301, "9576": 301, "997u": 301, "0037": 301, "9933": 301, "989u": 301, "9955": 301, "993u": 301, "0015": [301, 315], "665u": 301, "0014": 301, "9963": 301, "63": [301, 329, 330, 331, 337], "609u": 301, "003194334127614509": 301, "6525000000000001": 301, "21000119": 301, "999999996": [301, 351], "844444444444445": 301, "000560630129732592": 301, "29000000000000004": 301, "42906720": 301, "0007045935927985173": 301, "3325": 301, "40338360": 301, "958u": 301, "9824": 301, "9567": 301, "965u": 301, "0100": 301, "953u": 301, "0030": 301, "9931": 301, "9947": 301, "9950": 301, "598u": 301, "0005801562086311888": 301, "29500000000000004": 301, "42604560": 301, "955555555555556": 301, "00010424940428911835": 301, "08499999999999996": 301, "55295280": 301, "0001290706910246227": 301, "10499999999999998": 301, "54086640": 301, "971u": 301, "0082": 301, "9494": 301, "0094": 301, "948u": 301, "949u": 301, "0023": 301, "652u": 301, "00010325655281969817": 301, "066666666666667": 301, "942811755361398e": 301, "010000000000000009": [301, 322, 349], "59827680": 301, "1252316653428647e": 301, "015000000000000013": [301, 320, 351], "59525519": 301, "99999999": 301, "972u": 301, "1142": 301, "9508": 301, "951u": 301, "0042": 301, "9925": 301, "9949": 301, "947u": 301, "0016": [301, 315], "666u": 301, "0012": 301, "9960": 301, "597564204395023e": 301, "012499999999999956": 301, "59676600": 301, "177777777777778": 301, "3095048980672493e": 301, "0024999999999999467": 301, "60280920": 301, "60432000": 301, "0939": 301, "9534": 301, "930u": 301, "0038": 301, "9945": 301, "918u": 301, "926u": 301, "9956": 301, "679u": 301, "0017": 301, "569u": 301, "28888888888889": 301, "619009796134499e": 301, "0050000000000000044": [301, 320, 322], "60129839": 301, "935u": 301, "0920": 301, "9517": 301, "917u": 301, "0095": 301, "9910": 301, "924u": 301, "9939": 301, "909u": 301, "0026": 301, "655u": 301, "0024": 301, "916u": 301, "2061": 301, "9545": 301, "900u": 301, "0070": 301, "9918": 301, "904u": 301, "9959": 301, "661u": 301, "0031": 301, "586u": 301, "040188703800104114": 301, "04859621724796113": 301, "968u": 301, "8221": 301, "8768": 301, "952u": 301, "0433": 301, "9830": 301, "0163": 301, "9899": 301, "939u": 301, "0109": 301, "9908": 301, "9919": 301, "581u": 301, "04115499739718896": 301, "644444444444444": 301, "026602680895366996": 301, "036362571577303486": 301, "980u": 301, "9707": 301, "8692": 301, "962u": 301, "1349": [301, 331], "9510": 301, "0256": 301, "9822": 301, "940u": 301, "0161": 301, "9851": 301, "0138": 301, "9869": 301, "69": [301, 329, 330, 331, 337], "590u": 301, "028235944820406037": 301, "78888888888889": 301, "014358623980565678": 301, "9833333333333333": 301, "1536800": 301, "0000000047": 301, "023304919312857886": 301, "946u": 301, "2150": 301, "8748": 301, "0673": 301, "9768": 301, "0209": 301, "9893": 301, "0149": 301, "0115": 301, "594u": 301, "01549540170050321": 301, "985": 301, "1383120": 301, "0000000012": 301, "933333333333334": 301, "005127754641679681": 301, "8066666666666666": 301, "17826880": 301, "010303444386604198": 301, "2766240": 301, "0000000023": 301, "981u": 301, "3736": 301, "8757": 301, "966u": 301, "1384": 301, "9678": 301, "986u": 301, "0278": 301, "9870": 301, "955u": 301, "0187": 301, "9882": 301, "682u": 301, "0160": 301, "9887": 301, "87": [301, 329, 330, 331, 362], "603u": 301, "006156949505465903": 301, "845": 301, "14292240": 301, "000000002": 301, "077777777777778": 301, "0009125021690091967": 301, "405": 301, "54863759": 301, "0024898056567759846": 301, "685": 301, "29045519": 301, "889u": 301, "4978": 301, "8656": 301, "848u": 301, "1237": 301, "9658": 301, "858u": 301, "0273": 301, "9871": 301, "862u": 301, "0174": 301, "9889": 301, "644u": 301, "0151": 301, "9886": 301, "86": [301, 322, 329, 330, 331], "564u": [301, 315], "0012116085372201979": 301, "44333333333333336": 301, "51329119": 301, "222222222222223": [301, 323], "00011886170397362485": 301, "11333333333333329": 301, "81757760": 301, "00032838799236508765": 301, "22999999999999998": [301, 320], "71000160": 301, "911u": 301, "9472": 301, "8702": 301, "1385": 301, "9595": 301, "0353": 301, "9880": 301, "0234": 301, "9905": 301, "635u": 301, "0182": 301, "9921": 301, "00018154606975533577": 301, "79759920": 301, "366666666666667": 301, "326739545375672e": 301, "90824880": 301, "017178552837064e": 301, "026666666666666616": 301, "89749120": 301, "890u": 301, "3447": 301, "8683": 301, "880u": 301, "0913": 301, "9728": 301, "870u": 301, "0263": 301, "0154": 301, "9913": 301, "634u": 301, "0113": 301, "9928": 301, "541u": 301, "1929550581294465e": 301, "01666666666666672": 301, "90671200": 301, "92208000": 301, "1858": 301, "8540": 301, "1405": 301, "9655": 301, "0335": 301, "9883": 301, "0232": 301, "9897": 301, "654u": 301, "0198": 301, "9888": 301, "88": [301, 329, 330, 331], "1690091965989935e": 301, "0016666666666667052": 301, "92054319": 301, "655555555555557": 301, "902u": 301, "6813": 301, "8733": 301, "905u": 301, "1776": 301, "9657": 301, "0431": 301, "9854": 301, "923u": 301, "9884": 301, "639u": 301, "0189": 301, "9894": [301, 345], "94": [301, 329, 330, 331], "557u": [301, 315], "2463": 301, "8624": 301, "861u": 301, "9677": 301, "859u": 301, "0383": 301, "884u": 301, "0240": 301, "570u": 301, "009899100172025936": 301, "92": [301, 322, 329, 330, 331], "9672959": 301, "999999994": 301, "026978959904724098": 301, "933u": 301, "5861": 301, "8235": 301, "920u": 301, "7076": 301, "9146": 301, "2689": 301, "9565": 301, "2034": 301, "9612": 301, "9594": 301, "04042411009659918": 301, "004650489612280005": 301, "7362500000000001": 301, "31890539": 301, "01804337038507344": 301, "302279": 301, "99999999354": 301, "7435": 301, "8228": 301, "6509": 301, "9322": 301, "961u": 301, "2652": 301, "9601": 301, "1813": [301, 331], "9653": 301, "1469": 301, "9664": 301, "027669544792907237": 301, "622222222222222": 301, "00196969696969697": 301, "49250000000000005": 301, "61362839": 301, "010304684398570862": 301, "96625": 301, "4080779": 301, "9999999935": 301, "910u": 301, "7789": 301, "8164": 301, "0580": 301, "9194": 301, "879u": 301, "3600": 301, "9580": 301, "869u": 301, "2619": 301, "9620": 301, "2258": 301, "9636": 301, "02898752811962419": 301, "733333333333334": 301, "00041898240042344845": 301, "21375": 301, "95067060": 301, "003805577610162763": 301, "30228000": 301, "907u": 301, "4401": 301, "8270": 301, "875u": 301, "8994": 301, "9237": 301, "3270": 301, "9573": 301, "2392": 301, "9637": 301, "624u": 301, "2117": 301, "560u": [301, 315], "021652937673680032": 301, "262935027127167e": 301, "07125000000000004": 301, "112297019": 301, "000882956199550086": 301, "37124999999999997": 301, "76023420": 301, "2444": 301, "8299": 301, "5827": 301, "9457": 301, "2849": 301, "2227": 301, "9648": 301, "1923": 301, "9681": 301, "81": [301, 329, 330, 331, 337], "568u": [301, 315], "008769849146486701": 301, "88125": 301, "14358300": 301, "60447267434167e": 301, "018750000000000044": 301, "118644899": 301, "00021106259097525474": 301, "11250000000000004": 301, "107309399": 301, "5266": 301, "8456": 301, "0916": 301, "9118": 301, "4076": 301, "9557": 301, "898u": 301, "2505": 301, "9698": 301, "2088": 301, "540u": [301, 315], "005416832076220722": 301, "76125": 301, "28867740": 301, "066666666666666": 301, "270477702792113e": 301, "0012499999999999734": 301, "120760860": 301, "4721450310969962e": 301, "7788": 301, "8309": 301, "9726": 301, "9291": 301, "3830": 301, "9591": 301, "897u": 301, "2585": 301, "9626": 301, "9646": 301, "565u": 301, "0014949715495567023": 301, "71942640": 301, "177777777777777": 301, "120912000": 301, "308191081116845e": 301, "899u": 301, "7222": 301, "8061": 301, "6367": 301, "8986": 301, "5433": 301, "9480": 301, "3280": 301, "9633": 301, "613u": 301, "2776": 301, "9649": 301, "587u": [301, 315], "0021064906709011514": 301, "56828640": 301, "8219": 301, "8436": 301, "9256": 301, "4170": 301, "9586": 301, "3252": 301, "9659": 301, "2890": 301, "9674": 301, "572u": 301, "0008334987428873892": 301, "2825": 301, "86754360": 301, "931u": 301, "7185": 301, "8259": 301, "0952": 301, "9265": 301, "4467": 301, "3370": 301, "9619": 301, "623u": 301, "3024": 301, "9624": 301, "574u": 301, "0002639936482731243": 301, "106402560": 301, "mediumspringgreen": [301, 319], "solid": [301, 302, 304, 305, 306, 307, 308, 319, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337], "mec": [301, 315, 319, 320, 322, 323, 349], "crimson": [301, 302, 319, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337, 342, 343], "mfc": [301, 315, 319, 349], "darkblu": [301, 319], "green": [301, 315, 319, 324, 326, 327, 328, 333, 335, 336, 337], "oliv": [301, 315, 319, 326, 335, 336, 337], "tomato": [301, 315, 319], "cyan": [301, 315, 319, 324, 326, 335, 336, 337], "dataset_2": 301, "axr": 301, "twinx": 301, "rcparam": [301, 333, 335, 336, 337], "font": [301, 333, 335, 336, 337], "aggregateddatabas": 301, "npz": [301, 302, 320, 322, 323, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337, 349, 351], "xaxi": [301, 351], "set_major_formatt": [301, 351], "1f": [301, 351], "author": 301, "paer": 301, "slighlti": 301, "complexitylogmap": 301, "832": 301, "3840": 301, "17408": 301, "complexitymaxlogmap": 301, "208": 301, "680": 301, "5000": [301, 306, 352], "complexityllrnet": 301, "608": 301, "1472": 301, "normalizedcomplexitymaxlogmap": 301, "normalizedcomplexityllrnet": 301, "throughputlogmap": 301, "throughputmaxlogmap": 301, "throughputllrnet": 301, "59": [301, 329, 330, 331, 337], "normalizedthroughputmaxlogmap": 301, "normalizedthroughputllrnet": 301, "snrdbvalu": 301, "edgecolor": [301, 302, 327, 328, 329, 330, 331, 332, 342], "impract": 301, "onlin": 301, "computation": 301, "fpga": 301, "soc": 301, "bulkier": 301, "shental": 301, "hoydi": [301, 315], "machin": [301, 358, 361], "llrning": 301, "softli": 301, "globecom": 301, "gc": 301, "wkshp": 301, "waikoloa": 301, "usa": 301, "gcwkshps45667": 301, "9024433": 301, "lack": 302, "suffici": 302, "insuffici": 302, "matlib": [302, 328, 329, 330, 331, 332, 334], "io": [302, 328, 329, 330, 331, 332, 334, 357, 358], "spio": [302, 328, 329, 330, 331, 332, 334], "constant": [302, 327, 328, 329, 330, 331, 332, 334], "propterrain": [302, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 346, 348], "numofbss": [302, 327, 329, 330, 332, 334], "nbss": [302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349], "nue": [302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349], "ueantarrai": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "bsantarrai": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "mindist": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "ueht": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "bsht": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "bslayouttyp": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "uedroptyp": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 344, 345, 348, 349, 351], "htdist": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "uedist": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 340, 341, 348, 349, 351], "nsectorspersit": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 351], "maxnumfloor": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "minnumfloor": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 348, 349, 351], "paramgen": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 345, 348, 349, 351], "130": [302, 309, 327, 329, 330, 332], "numantenna": [302, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 339, 342, 343, 346, 348, 349, 351], "srsperiodicityinslot": [302, 329, 330, 332], "srsoffsetinslot": [302, 329, 330, 332], "numuesperslot": [302, 329, 330, 332], "frameindic": [302, 329, 330, 332], "slotindic": [302, 329, 330, 332], "lpath2": 302, "xoaest": [302, 331, 332], "srsgrid": [302, 329, 330, 332], "srsobject": [302, 329, 330, 332], "xgrid": [302, 327, 328, 329, 330, 331, 332, 334, 349], "del": [302, 329, 330, 332], "pt_dbm": [302, 327, 328, 329, 330, 331, 332, 334, 348], "wt": [302, 327, 328, 329, 330, 332, 334], "xf": [302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 349], "xgrid1": [302, 327, 328, 329, 330, 332, 334], "ueindic": [302, 329, 330, 332], "yf": [302, 320, 324, 325, 327, 328, 329, 330, 331, 332, 334, 349], "boltzmanconst": [302, 324, 327, 328, 329, 330, 331, 332, 334], "380649": [302, 324, 327, 328, 329, 330, 331, 332, 334, 348], "temperatur": [302, 324, 327, 328, 329, 330, 331, 332, 334], "300": [302, 324, 327, 328, 329, 330, 331, 332, 334, 339, 342, 348], "noisefiguredbi": [302, 334], "noisefigur": [302, 334], "noisepow": [302, 324, 327, 328, 329, 330, 331, 332, 334], "kppm": [302, 324, 327, 328, 329, 330, 331, 332, 334, 348], "fcfo": [302, 324, 327, 328, 329, 330, 331, 332, 334, 348], "standard_norm": [302, 315, 319, 326, 329, 330, 332, 335, 336, 350], "hfest": [302, 327, 328, 329, 330, 332, 334], "chgrid": [302, 329, 330, 332], "hest": [302, 329, 330, 332, 334], "delayestim": [302, 327, 328, 329, 330], "home": [302, 320, 332, 348, 349], "tenet": [302, 320, 332, 348, 349], "startup": [302, 320, 332, 348, 349], "5g_toolkit": [302, 320, 332, 348, 349, 358], "version15": [302, 320, 332, 349], "hybrid_positioning_in_5g_network": 302, "angle_estim": [302, 332], "104": [302, 329, 331], "runtimewarn": [302, 331, 332], "arcsin": [302, 332], "kx": [302, 332], "ui": [302, 324, 332, 349], "ky": [302, 332], "vi": [302, 332], "rxposit": [302, 327, 328, 329, 330, 331, 332], "error1": 302, "bsindices1": 302, "argsort": [302, 327, 328, 329, 330, 331, 332, 345], "error2": 302, "bsindices2": 302, "error31": 302, "bsindices31": 302, "error32": 302, "bsindices32": 302, "error41": 302, "bsindices41": 302, "error42": 302, "bsindices42": 302, "rxpositionestimate1": 302, "rxpositionestimate2": 302, "rxpositionestimate3": 302, "rxpositionestimate4": 302, "rangeest_2d": [302, 327, 328, 329, 330, 331, 332], "linestyle_tupl": [302, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337], "dash": [302, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337], "dashdot": [302, 326, 327, 328, 329, 330, 331, 332, 335, 336, 337], "loos": [302, 327, 328, 329, 330, 331, 332], "dashdotdot": [302, 327, 328, 329, 330, 331, 332], "circle1": [302, 327, 328, 329, 330, 331, 332], "zorder": [302, 324, 327, 328, 329, 330, 331, 332, 339, 342, 343], "add_artist": [302, 327, 328, 329, 330, 331, 332], "nbin": [302, 327, 328, 329, 330, 331, 332, 345], "xlimit": [302, 327, 328, 329, 330, 331, 332], "ylimit": [302, 327, 328, 329, 330, 331, 332], "poserror2dtdoa": 302, "poserror3dtdoa": 302, "isnan": [302, 327, 328, 329, 330, 331, 332, 334], "bins_count": [302, 327, 328, 329, 330, 331, 332, 345], "histogram": [302, 327, 328, 329, 330, 331, 332, 333, 345], "bin": [302, 327, 328, 329, 330, 331, 332, 333, 345], "pdf": [302, 327, 328, 329, 330, 331, 332, 333, 345], "cdf": [302, 327, 328, 329, 330, 331, 332, 333, 345], "cumsum": [302, 327, 328, 329, 330, 331, 332, 333, 345], "poserror2daoa": 302, "poserror3daoa": 302, "poserror2dhybrid": 302, "poserror3dhybrid": 302, "poserror2dhybrid2": 302, "poserror3dhybrid2": 302, "set_ytick": [302, 305, 320, 322, 323, 325, 327, 328, 329, 330, 331, 332, 334, 349, 351], "magenta": [302, 327, 328, 329, 330, 331, 332], "66": [302, 326, 327, 328, 329, 330, 331, 332, 337], "midnightblu": [302, 325, 327, 328, 329, 330, 331, 332, 334, 342], "cm": [302, 327, 328, 329, 330, 331, 332], "databas": [302, 318, 320, 322, 323, 326, 327, 328, 329, 330, 331, 332, 335, 336, 349, 358], "poserror3dhybridtdoa_aoa": 302, "poserror2dhybridtdoa_aoa": 302, "poserror3dhybridtoa_aoa": 302, "poserror2dhybridtoa_aoa": 302, "fact": 304, "____________________________________________________________________________________________________________________": 304, "maxnumu": [304, 305, 307], "parameter": 304, "agglevelprobdistributionforgoodcoverag": 304, "outcom": 304, "blockag": [304, 318, 358], "probofblockingforgoodcoverag": 304, "enough": 304, "prob": [304, 305, 306, 307, 308, 309, 315, 333, 345], "uealdistribut": [304, 305, 306, 307, 308, 309], "agglevelprobdistributionformediumcoverag": 304, "probofblockingformediumcoverag": 304, "agglevelprobdistributionforextremecoverag": 304, "probofblockingforextremecoverag": 304, "clearli": 304, "recreat": [304, 305, 306, 307, 308, 309], "referenc": [304, 305, 306, 307, 308, 309], "mohammad": [304, 305, 306, 307, 308, 309], "mozaffari": [304, 305, 306, 307, 308, 309], "eric": [304, 305, 306, 307, 308, 309], "kittipong": [304, 305, 306, 307, 308, 309], "kittichokechai": [304, 305, 306, 307, 308, 309], "intuit": [305, 308], "probabilti": [305, 308], "al1": [305, 306], "agglevelprobdistributionforal1": 305, "probofblockingforal1": [305, 306], "al2": [305, 306], "agglevelprobdistributionforal2": 305, "probofblockingforal2": [305, 306], "al4": [305, 306], "agglevelprobdistributionforal4": 305, "probofblockingforal4": [305, 306], "al8": 305, "agglevelprobdistributionforal8": 305, "probofblockingforal8": 305, "al16": 305, "agglevelprobdistributionforal16": 305, "probofblockingforal16": 305, "tick_param": [305, 325, 327, 328, 334], "grid_linewidth": [305, 325, 327, 328, 334], "grid_linestyl": [305, 325, 327, 328, 334], "seper": 306, "supportednumcand": 306, "versu": [306, 307, 308], "incres": 306, "reduct": 306, "benefici": [306, 309], "probail": 306, "bd": [306, 308], "probofblockingforstrategy1": 307, "probofblockingforstrategy2": 307, "outperform": 307, "aproxim": 307, "fewer": 308, "flexibilti": 308, "around": [308, 327, 328, 339, 342, 343, 346], "mincc": [308, 309], "maxcc": [308, 309], "probofblockingrefcas": 308, "ovelap": 308, "almost": 308, "probofblockingbdcase_a": 308, "probofblockingbdcase_b": 308, "prevalindic": 308, "problem": [309, 353, 356, 358, 359, 360], "condidt": 309, "desir": 309, "perspect": 309, "blindli": [309, 325], "therfor": 309, "probofblock": 309, "targetblockingprob": 309, "mincoresetsize5fornumues5": 309, "mincoresetsize10fornumues5": 309, "mincoresetsize15fornumues5": 309, "mincoresetsize20fornumues5": 309, "105": [309, 329], "115": [309, 329], "mincoresetsize5fornumues10": 309, "mincoresetsize10fornumues10": 309, "mincoresetsize15fornumues10": 309, "mincoresetsize20fornumues10": 309, "mincoresetsize5fornumues15": 309, "mincoresetsize10fornumues15": 309, "mincoresetsize15fornumues15": 309, "mincoresetsize20fornumues15": 309, "cleari": 309, "speci": 309, "penguin_mean": 309, "item": 309, "rect": [309, 324], "bar_label": 309, "pad": 309, "ncol": 309, "oppos": 315, "tradit": 315, "alphabet": 315, "ae": 315, "idea": 315, "behind": 315, "intermedi": 315, "faithfulli": 315, "perturb": 315, "hyper": [315, 327, 328], "snr_train": 315, "alreadi": [315, 356, 357, 359], "implment": 315, "softmax": 315, "aposteriori": 315, "oneshot": 315, "n_test": 315, "blockerrorr": 315, "sklearn": 315, "stochast": 315, "neighbor": [315, 320, 329], "tsne": 315, "scikit": 315, "inlin": [315, 320, 325], "gaussiannois": 315, "batchnorm": 315, "sgd": 315, "backend": 315, "snr_db": 315, "generail": 315, "log2": [315, 325], "5714285714285714": 315, "noise_stddev": 315, "symbol_encod": 315, "ey": [315, 324, 346, 349], "9600000": 315, "1500": 315, "train_label": 315, "temp": [315, 345, 348], "train_data": 315, "verifi": [315, 356, 357, 359, 360], "templabel_train": 315, "6634013": 315, "5698954": 315, "7797983": 315, "1647048": 315, "8484082": 315, "5849713": 315, "6844526": 315, "1561517": 315, "3625133": 315, "6378228": 315, "3180495": 315, "1370770": 315, "5104703": 315, "16000": 315, "test_label": 315, "test_data": 315, "temptestlabel": 315, "11519": 315, "4498": 315, "10702": 315, "6711": 315, "2993": 315, "9873": 315, "5688": 315, "normalizeavgpow": 315, "normalizeenergi": 315, "l2_normal": 315, "onehot": 315, "dense1": 315, "dense2": 315, "avg": 315, "stddev": 315, "dense3": 315, "learning_r": 315, "compil": [315, 362], "categorical_crossentropi": 315, "_________________________________________________________________": 315, "param": 315, "input_1": 315, "inputlay": 315, "dense_1": 315, "gaussian_nois": 315, "gaussianno": 315, "ise": 315, "dense_2": 315, "dense_3": 315, "791": [315, 331], "09": 315, "byte": 315, "validation_data": 315, "1172": 315, "3m": [315, 338, 340, 341], "0619": 315, "val_loss": 315, "8036e": 315, "1638e": 315, "0011": 315, "2494e": 315, "0464e": 315, "0000e": 315, "9008e": 315, "7934e": 315, "0910e": 315, "8701e": 315, "5150e": 315, "3850e": 315, "4894e": 315, "9537e": 315, "8190e": 315, "9939e": 315, "6062e": 315, "6521e": 315, "4805e": 315, "6737e": 315, "5437e": 315, "3964e": 315, "1038e": 315, "5104e": 315, "2465e": 315, "3718e": 315, "2150e": 315, "2325e": 315, "2213e": 315, "0728e": 315, "0278e": 315, "3612e": 315, "0515e": 315, "1903e": 315, "2265e": 315, "9100e": 315, "7689e": 315, "8344e": 315, "7145e": 315, "9232e": 315, "5073e": 315, "7231e": 315, "4049e": 315, "3347e": 315, "5009e": 315, "5302e": 315, "3693e": 315, "4082e": 315, "4123e": 315, "5702e": 315, "3058e": 315, "3849e": 315, "src": 315, "callback": 315, "histori": 315, "0x29775d74b80": 315, "channelinput": 315, "channeloutput": 315, "rxinput": 315, "rx1": 315, "rxoutput": 315, "uncom": [315, 330, 342], "snr_linear": 315, "noise_std": 315, "noise_mean": 315, "num_error": 315, "num_sampl": 315, "x_hat": 315, "x_hat_noisi": 315, "y_hat": 315, "sym_estim": 315, "argmax": [315, 324, 331], "517u": 315, "503u": 315, "498375": 315, "567u": 315, "458625": 315, "522u": 315, "4203125": 315, "555u": 315, "38725": 315, "515u": 315, "566u": 315, "3485625": 315, "543u": 315, "3043125": 315, "662u": 315, "2595": 315, "529u": 315, "535u": 315, "2265625": 315, "1879375": 315, "152": 315, "536u": 315, "518u": 315, "122375": 315, "548u": 315, "092": 315, "551u": 315, "0673125": 315, "578u": 315, "544u": 315, "0513125": 315, "512u": 315, "03275": 315, "553u": 315, "02025": 315, "538u": 315, "011375": 315, "520u": 315, "0071875": 315, "504u": 315, "549u": 315, "0045625": 315, "533u": 315, "539u": 315, "0011875": 315, "575u": 315, "00025": 315, "000125": 315, "489u": 315, "527u": 315, "510u": 315, "numdim": 315, "1000000": 315, "mapperobject": [315, 319], "enc": 315, "codedblerhard": [315, 319], "codedblersoft": [315, 319], "uncbit": [315, 319], "spheredecod": [315, 319], "487595": 315, "554942": 315, "450965": 315, "522681": 315, "413592": 315, "49012": 315, "373975": 315, "454293": 315, "334565": 315, "416966": 315, "29465": 315, "378652": 315, "254375": 315, "340119": 315, "215441": 315, "301021": 315, "17943": 315, "261749": 315, "145708": 315, "225524": 315, "114448": 315, "189009": 315, "086905": 315, "154485": 315, "063574": 315, "123722": 315, "045241": 315, "095985": 315, "030357": 315, "072166": 315, "019361": 315, "052022": 315, "011799": 315, "036823": 315, "006764": 315, "024702": 315, "003584": 315, "015639": 315, "001758": 315, "009331": 315, "000827": 315, "005393": 315, "000329": 315, "00284": 315, "000129": 315, "001444": 315, "9e": 315, "000658": 315, "6e": 315, "000263": 315, "plote": 315, "pink": [315, 324, 326, 327, 328, 335, 336, 337], "previou": [315, 358], "retrain": 315, "constellationpoint": 315, "sin": [315, 324, 331, 332, 342, 349], "31m": 315, "x_noisi": 315, "x_embed": 315, "n_compon": 315, "n_iter": 315, "35000": 315, "random_st": 315, "perplex": 315, "fit_transform": 315, "resembl": 315, "ari": 315, "apsk": 315, "shea": 315, "deep": 315, "transact": 315, "cognit": 315, "563": 315, "575": 315, "dec": 315, "2017": 315, "tccn": 315, "2758370": 315, "postprocess": [318, 358], "train": [318, 358], "infer": [318, 358], "llrnet": [318, 358], "64000": [318, 358], "conclus": [318, 352, 358], "redcap": [318, 358], "srcnn": [318, 358], "dncnn": [318, 358], "autoencod": [318, 358], "millimet": [318, 346, 347, 352, 358], "2000": [318, 322, 323, 345, 351, 352, 358], "dist2": [319, 326, 335, 336], "python3_11": [319, 326, 335, 336, 356, 357, 359, 360], "codedberhard": 319, "codedbersoft": 319, "17671": 319, "18611285714285714": 319, "666666666666667": [319, 320, 322], "12653": 319, "14775285714285713": 319, "3333333333333335": [319, 322], "081805": 319, "11270857142857142": 319, "0436425": 319, "07803428571428571": 319, "333333333333333": [319, 320, 322, 323], "0185": 319, "04909714285714286": 319, "666666666666666": [319, 320, 322], "0063725": 319, "027304285714285715": 319, "0014125": 319, "01259": 319, "333333333333332": [319, 349], "000145": 319, "004475714285714286": 319, "5e": 319, "0011442857142857142": 319, "00018": 319, "demonst": [319, 338, 339, 340, 341, 343, 344, 346], "assess": 320, "made": [320, 329], "especi": [320, 339], "valuabl": 320, "behavior": 320, "flow": [320, 322, 323, 326, 335, 336], "bsarraygeometri": [320, 325], "uearraygeometri": [320, 325], "agglevel": [320, 325], "startsymindex": [320, 325], "nonzero": [320, 325], "fdr1": 320, "fdr2": 320, "fdr4": 320, "fdr8": 320, "fdr16": 320, "65518": 320, "numpdcchsymbol": 320, "numpdcchdmr": [320, 325], "rmpdcch": 320, "hp": [320, 325], "channelest": 320, "equalized_sym": 320, "rdcibit": 320, "965": 320, "765": 320, "6666666666666665": [320, 322], "333333333333334": [320, 322, 323], "666666666666668": [320, 323, 349], "link_level_and_system_level_simulation_for_physical_downlink_control_channel": 320, "825": 320, "444444444444445": [320, 322, 323, 349], "31499999999999995": 320, "888888888888889": [320, 323], "03500000000000003": 320, "7777777777777777": [320, 322], "8888888888888893": [320, 322], "745": 320, "020000000000000018": 320, "6666666666666679": 320, "975": 320, "44999999999999996": 320, "222222222222221": [320, 349], "05500000000000005": 320, "111111111111111": [320, 322], "555555555555557": [320, 323], "7777777777777786": [320, 322], "ls1": [320, 322, 323], "ls2": [320, 322, 323], "ls3": [320, 322, 323], "ytck": [320, 322, 323, 349, 351], "tile": [320, 322, 323, 331, 349, 351], "pdcch_ll": 320, "hello1": 321, "stand": [322, 323, 334], "manipul": [322, 323, 334], "signular": [322, 323, 334], "ant": [322, 323, 351], "strutur": [322, 323, 351], "intial": [322, 323, 334], "kpi": [322, 323, 351], "ptc": [322, 323, 348, 351], "ygrid": [322, 323, 351], "rgrid": [322, 323, 351], "pdschdeclowerphi": [322, 351], "temp1": 322, "temp2": 322, "566720": 322, "32999999999999996": 322, "2712160": 322, "0000000005": 322, "16000000000000003": 322, "3400319": 322, "030000000000000027": 322, "3926560": 322, "4007520": 322, "4048000": [322, 323], "222222222222222": 322, "78080": 322, "00000000007": 322, "5555555555555554": 322, "624639": 322, "9999999997": 322, "1952000": 322, "7808000": 322, "89": [322, 329, 330, 331, 336], "1295360": 322, "8888888888888888": [322, 336], "11776000": 322, "6666666666666667": 322, "4444444444444446": 322, "2222222222222223": 322, "775": 322, "5299200": 322, "23434240": 322, "23552000": 322, "filenam": [322, 323, 327, 328, 329, 330, 331, 332, 349, 351], "snrdba": [322, 323], "codedbera": [322, 323], "blera": [322, 323], "throughputa": [322, 323], "xticksa": [322, 323], "numdb": [322, 323], "cbbeamform": 323, "lmobject": 323, "rcodeword1": 323, "rcodeword2": 323, "bits_1": 323, "descrobject1": 323, "decscrambledbits1": 323, "bits_2": 323, "descrobject2": 323, "decscrambledbits2": 323, "decscrambledout": 323, "777777777777778": 323, "555555555555555": [323, 349], "1111111111111107": 323, "777777777777779": 323, "1212000": 323, "0000000002": 323, "2828000": 323, "6060000": 323, "8080000": 323, "111111111111114": 323, "6024000": 323, "12048000": 323, "88888888888889": [323, 349], "77777777777778": [323, 349], "44444444444444": 323, "15662400": 323, "333333333333336": 323, "24096000": 323, "22222222222223": 323, "type1sp": 323, "focus": 324, "timeinterv": [324, 349], "endpoint": [324, 349, 351], "secangl": [324, 349], "antloc": [324, 331, 349], "nbm": [324, 349], "steeringvector": [324, 331, 349], "beamvector": [324, 331, 349], "numrxbeam": [324, 349], "ssbesti": [324, 349], "log10": [324, 333, 339, 342, 343, 345, 346], "183": 324, "bestbeam": 324, "ueindex": [324, 327, 328, 331, 334, 339, 346], "lightblu": 324, "black": [324, 326, 327, 328, 333, 335, 336, 337], "075": 324, "bottom": 324, "121": [324, 329], "ax2": 324, "idx": [324, 327, 328, 329, 330, 331, 332, 342, 349], "argwher": [324, 349], "numbeam": [324, 331], "beamangl": 324, "nbeam": 324, "arctan2": 324, "set_rmax": 324, "set_rtick": 324, "radial": 324, "set_rlabel_posit": 324, "set_thetagrid": 324, "450": 324, "transimt": 325, "pdcchcandidateblinddecod": 325, "nofdmsymperslot": 325, "nsc": 325, "numcandidatesper": 325, "ssobj": 325, "uecand": 325, "uecc": 325, "numpdcchsym": 325, "kmax": 325, "pdcchobj": 325, "mapp": 325, "nsymbol": 325, "3240": 325, "palegreen": [325, 327, 328, 334, 342, 343], "lightcor": [325, 327, 328, 334, 342], "listedcolormap": [325, 327, 328, 334], "boundarynorm": [325, 327, 328, 334], "numsym": 325, "snrbd": 325, "equalizedgrid": 325, "intiat": 325, "bdobj": 325, "unsuccess": 325, "solomon": 326, "walsh": 326, "hadamard": 326, "testabl": [326, 350], "character": [326, 350], "mpl_toolkit": [326, 335, 336, 337, 345], "axes_grid1": [326, 335, 336, 337, 345], "inset_loc": [326, 335, 336, 337], "zoomed_inset_ax": [326, 335, 336, 337], "mark_inset": [326, 335, 336, 337], "folow": [326, 335, 336], "500000": [326, 335, 336], "montecarloiter": [326, 335, 336, 350], "kindex": [326, 335], "0886": 326, "012": 326, "0002": 326, "2209": 326, "087": 326, "011": 326, "0003": 326, "22253333333333333": 326, "09186666666666667": 326, "014066666666666667": 326, "0003333333333333333": 326, "2183": 326, "0982": 326, "01245": 326, "21296": 326, "0866": 326, "01604": 326, "00064": 326, "22046666666666667": 326, "08643333333333333": 326, "013": [326, 332], "0005333333333333334": 326, "422": 326, "29897142857142855": 326, "12937142857142858": 326, "016457142857142858": 326, "419075": 326, "31415": 326, "13155": 326, "017875": 326, "00015": 326, "41706666666666664": 326, "3154888888888889": 326, "13177777777777777": 326, "014177777777777777": 326, "0003111111111111111": 326, "42402": 326, "31048": 326, "12976": 326, "016": 326, "00034": 326, "42805454545454547": 326, "31236363636363634": 326, "1381090909090909": 326, "0156": 326, "0001818181818181818": 326, "reliablilti": [326, 335, 336, 350], "99990": [326, 335, 336], "99999": 326, "poorer": 326, "color_tupl": [326, 335, 336, 337], "orang": [326, 335, 336, 337, 342], "brown": [326, 327, 328, 335, 336, 337], "grai": [326, 335, 336, 337], "markcolor_tupl": [326, 335, 336, 337], "navi": [326, 335, 336, 337], "yellow": [326, 327, 328, 335, 336, 337], "springgreen": [326, 335, 336, 337], "aqua": [326, 335, 336, 337], "marker_tupl": [326, 335, 336, 337], "flip": [326, 335, 336, 337], "markers": [326, 335, 336, 337, 344], "bern": 326, "bervssnr": [326, 362], "axin": 326, "axins2": 326, "want": 326, "trial": [326, 356, 359, 360], "elegantli": 326, "date": 326, "x1": 326, "x2": 326, "y1": [326, 342], "1295": 326, "y2": [326, 342], "13375": 326, "xtick": [326, 351], "ytick": 326, "loc1": 326, "loc2": 326, "ec": 326, "0127": 326, "01325": 326, "150": [327, 332], "foe": [327, 328, 330, 331], "inturn": [327, 328, 330, 331], "tool": [327, 328, 330, 331], "rd": [327, 328, 330, 331], "parti": [327, 328, 330, 331], "quadriga": [327, 328, 330, 331], "efficaci": [327, 328, 330, 331, 332], "veric": [327, 328, 330, 331, 332], "150000000": 327, "200m": [327, 328], "35m": [327, 328, 331], "hertizian": [327, 328, 331], "960x480": [327, 328, 342, 343, 344, 348], "axes3d": [327, 328, 342, 343, 344, 348], "231": [327, 331], "numbssperslot": [327, 328, 331], "darkorang": [327, 328], "get_cmap": [327, 328], "gist_rainbow": [327, 328], "fontweight": [327, 328], "bold": [327, 328], "borderaxespad": [327, 328], "resour": [327, 328, 331, 334], "1020": [327, 328, 331], "bsindex": [327, 328, 331, 334, 339, 346], "grid_alpha": [327, 334], "heatmap": [327, 334, 346, 347, 352, 358], "dbm": [327, 328, 331, 348], "bemform": [327, 328, 331], "lb": [327, 328, 331], "lue": [327, 328, 331], "k_b": [327, 328, 331], "boltzmann": [327, 328, 331], "ppm": [327, 328, 331], "antidx": [327, 328], "splrep": [327, 328], "splev": [327, 328], "sa": [327, 328], "hfint": [327, 328], "prsindic": [327, 328, 331], "tck": [327, 328], "amp": [327, 328], "der": [327, 328], "unwrap": [327, 328, 339], "yeild": [327, 328], "suffic": [327, 328], "avaiabl": [327, 328], "te": [327, 328], "intersect": [327, 328, 329, 332], "correspsond": [327, 328], "locus": [327, 328, 332], "potenti": [327, 328, 332], "measnur": [327, 328, 331], "inaccuract": [327, 328, 331], "compromis": [327, 328, 331], "somehow": [327, 328, 331], "bsindic": [327, 328, 329, 330, 331, 332], "rxstdestim": [327, 328, 329, 330], "kbestindic": [327, 328, 329, 330, 331, 332], "accurci": [327, 328, 331], "disclaim": 327, "intract": [327, 330, 331, 332, 342], "perfrorm": [327, 328, 331], "percentil": [327, 328, 331], "ththan": [327, 328, 331], "5cm": [327, 328], "0cm": [327, 328], "6cm": [327, 328], "1cm": [327, 328], "poserror3d": [327, 328, 329, 330, 331, 332], "poserror2d": [327, 328, 329, 330, 331, 332], "dltdoa": [327, 328], "savez": [327, 328, 329, 330, 331, 332, 349], "bsarraystructur": [327, 328, 329, 330, 331, 332], "uearraystructur": [327, 328, 329, 330, 331, 332], "ioo_20m_fr1": 327, "f_c": [327, 328, 331, 338, 340, 341, 344, 348], "terrian": [327, 328, 331], "squrar": [328, 331], "eqaul": [328, 331], "30000000": [328, 331], "argmin": [328, 329, 331], "siteindic": [328, 329, 331], "dltoa": 328, "gp": 329, "atom": 329, "centimet": 329, "hyperboloid": 329, "face": 329, "ultra": 329, "emerg": [329, 331], "asset": [329, 331, 332], "10m": [329, 343], "5km": [329, 343], "57": [329, 330, 331, 337], "58": [329, 330, 331, 337], "62": [329, 330, 331, 337], "68": [329, 330, 331, 337], "71": [329, 330, 331, 337], "73": [329, 330, 331, 337], "76": [329, 330, 331, 337], "77": [329, 330, 331, 337], "78": [329, 330, 331, 337], "79": [329, 330, 331, 337], "82": [329, 330, 331, 337], "83": [329, 330, 331, 336, 337], "91": [329, 330, 331], "93": [329, 330, 331], "102": 329, "103": [329, 332], "106": [329, 331], "107": 329, "108": 329, "109": 329, "111": 329, "113": 329, "114": 329, "116": 329, "117": 329, "118": 329, "123": 329, "124": 329, "126": 329, "ultdoa": 329, "poserror3da": 329, "poserror2da": 329, "4215363": 330, "78032138": 330, "50797252": 330, "16600051": 330, "90443573": 330, "47474593": 330, "74856967": 330, "4471635": 330, "54521712": 330, "55050478": 330, "43931444": 330, "13662121": 330, "85489926": 330, "08774903": 330, "52755895": 330, "82279784": 330, "13361618": 330, "52349518": 330, "5575103": 330, "19681135": 330, "26737552": 330, "60794566": 330, "99476197": 330, "36027376": 330, "31028088": 330, "81732425": 330, "54359212": 330, "52461434": 330, "94843593": 330, "63401437": 330, "94944578": 330, "86232628": 330, "53715152": 330, "19626289": 330, "6363511": 330, "54316006": 330, "7766177": 330, "35418832": 330, "55182393": 330, "43763633": 330, "87677854": 330, "62842819": 330, "10258347": 330, "4317454": 330, "59871804": 330, "45307278": 330, "21452399": 330, "50998389": 330, "6464587": 330, "29464303": 330, "48682503": 330, "7587386": 330, "66229737": 330, "3835427": 330, "09971438": 330, "38507528": 330, "56703222": 330, "27252005": 330, "49408869": 330, "51767149": 330, "50213423": 330, "48030113": 330, "45949887": 330, "34462303": 330, "70412479": 330, "55940963": 330, "73676558": 330, "92578187": 330, "53169568": 330, "8547753": 330, "25440928": 330, "98212604": 330, "19296202": 330, "54132648": 330, "32365498": 330, "77500617": 330, "42255216": 330, "09675432": 330, "67607949": 330, "57987014": 330, "6925936": 330, "64046494": 330, "46865462": 330, "10059595": 330, "76752975": 330, "5878385": 330, "98563099": 330, "57898981": 330, "35617641": 330, "71111502": 330, "62758124": 330, "53094812": 330, "53053351": 330, "28051672": 330, "58516008": 330, "23063984": 330, "5500853": 330, "70358831": 330, "78052461": 330, "65531585": 330, "03970877": 330, "94894052": 330, "94009105": 330, "54089155": 330, "46149577": 330, "30705674": 330, "50187354": 330, "81744142": 330, "20506424": 330, "34471406": 330, "6483784": 330, "82144281": 330, "65057101": 330, "96426838": 330, "84613361": 330, "52809127": 330, "88183982": 330, "11692189": 330, "58092568": 330, "93255383": 330, "38596413": 330, "59088241": 330, "25763775": 330, "68921659": 330, "20074089": 330, "81871701": 330, "69916647": 330, "53817887": 330, "51638345": 330, "47014703": 330, "40071319": 330, "2191626": 330, "51207671": 330, "39257366": 330, "03684626": 330, "84860336": 330, "54572661": 330, "25958808": 330, "2801732": 330, "54925611": 330, "33437177": 330, "97326886": 330, "40693121": 330, "77308687": 330, "55953016": 330, "54205399": 330, "37610009": 330, "69339739": 330, "55662449": 330, "70189609": 330, "91514189": 330, "36600061": 330, "04513222": 330, "16133817": 330, "44517894": 330, "7716385": 330, "06307136": 330, "74075402": 330, "88460837": 330, "18871943": 330, "56949855": 330, "38266674": 330, "41449171": 330, "7346757": 330, "03350867": 330, "10186089": 330, "53488833": 330, "22157414": 330, "90806661": 330, "52708948": 330, "68240337": 330, "3120393": 330, "54565456": 330, "28301869": 330, "33792782": 330, "45110431": 330, "53908043": 330, "85546729": 330, "78521653": 330, "48409296": 330, "22177424": 330, "57523293": 330, "15941007": 330, "78749999": 330, "73683759": 330, "44544035": 330, "86865145": 330, "64336069": 330, "35673933": 330, "56513093": 330, "5104806": 330, "60731411": 330, "82421342": 330, "51323781": 330, "55865781": 330, "25305943": 330, "56305746": 330, "95872640e": 330, "77777011e": 330, "40148740e": 330, "80487407": 330, "82597089": 330, "52462734": 330, "84607066": 330, "53499602": 330, "57322733": 330, "82271079": 330, "36624418": 330, "4931076": 330, "59937911": 330, "16257303": 330, "65244339": 330, "67199244": 330, "76979372": 330, "55504678": 330, "27434072": 330, "58968042": 330, "54840076": 330, "35417842": 330, "89519595": 330, "68217251": 330, "26139614": 330, "94628174": 330, "3467783": 330, "99286639": 330, "44242967": 330, "14347406": 330, "28613448": 330, "30173949": 330, "64951933": 330, "51189734": 330, "56883229": 330, "00950839": 330, "39584732": 330, "62997557": 330, "68447328": 330, "15068034": 330, "34475186": 330, "46649924": 330, "09782035": 330, "79949224": 330, "51584499": 330, "79591351": 330, "6532013": 330, "39373625": 330, "0590222": 330, "11642352": 330, "55516197": 330, "65251898e": 330, "69197461e": 330, "27168134e": 330, "29946676": 330, "58691584": 330, "49303903": 330, "97450764": 330, "12167271": 330, "55384096": 330, "20689123": 330, "74646458": 330, "46958445": 330, "92385396": 330, "92520705": 330, "56564703": 330, "25366506": 330, "25672017": 330, "54979235": 330, "51188666": 330, "02819049": 330, "5397252": 330, "21662599": 330, "9655319": 330, "8884634": 330, "69419361": 330, "36651313": 330, "93550523": 330, "17105725": 330, "34864251": 330, "56813769": 330, "42779779": 330, "99143863": 330, "96956844": 330, "4434574": 330, "27896067": 330, "60876896": 330, "25819762": 330, "89316955": 330, "57901224": 330, "01349784": 330, "85114446": 330, "5497744": 330, "2879282": 330, "76396538": 330, "44778045": 330, "70869654": 330, "65021639": 330, "49618658": 330, "13428528": 330, "31297916": 330, "39113546": 330, "ultoa": 330, "triangul": [331, 332], "wider": 331, "deliveri": [331, 332], "awar": [331, 332], "nearestndinterpol": 331, "make_interp_splin": 331, "pchipinterpol": 331, "akima1dinterpol": 331, "position_estim": 331, "100m": 331, "1732": 331, "dbp": [331, 342, 345], "3958": 331, "406982421875": 331, "nbeamsphi": 331, "nbeamstheta": 331, "phimean": 331, "phistd": 331, "thetamean": 331, "thetastd": 331, "azimuthgrid": 331, "elevationgrid": 331, "markerlin": 331, "stemlin": 331, "baselin": 331, "stem": [331, 338, 339, 340, 341, 344, 346], "azimuthgridnew": 331, "rsrpnew": 331, "set_linewidth": 331, "set_markers": 331, "set_linestyl": 331, "beamindic": [331, 349], "std": [331, 332], "359": 331, "01876144": 331, "417": 331, "47088924": 331, "41016588": 331, "78669819": 331, "174": 331, "58115965": 331, "51680364": 331, "779": [331, 350], "10774189": 331, "81345912": 331, "66695834": 331, "182": [331, 362], "05063066": 331, "279": 331, "76018999": 331, "4014134": 331, "97485771": 331, "725": [331, 351], "42467735": 331, "03582379": 331, "418": 331, "68949763": 331, "63860667": 331, "95735549": 331, "347": 331, "31445659": 331, "203": 331, "84958682": 331, "62075529": 331, "395": 331, "13081408": 331, "3275688": 331, "66068703": 331, "305": 331, "60487736": 331, "776": 331, "44800372": 331, "75456728": 331, "576": 331, "9003876": 331, "71920292": 331, "06830207": 331, "334": 331, "75067944": 331, "262": 331, "58239455": 331, "19317779": 331, "18868112": 331, "28143355": 331, "66991935": 331, "679": 331, "37966381": 331, "481": 331, "38075781": 331, "23397206": 331, "318": 331, "50683548": 331, "15121481": 331, "32300754": 331, "559": 331, "30578699": 331, "215": 331, "5184474": 331, "09216752": 331, "2368": 331, "5875262": 331, "635": 331, "42440274": 331, "81445601": 331, "1906": 331, "8665596": 331, "68524732": 331, "46693427": 331, "2590": 331, "51569143": 331, "431": 331, "75573784": 331, "31983926": 331, "1456": 331, "77187222": 331, "12215914": 331, "07774653": 331, "2382": 331, "16254384": 331, "21674582": 331, "19592682": 331, "1387": 331, "33095929": 331, "543": 331, "99864225": 331, "32340611": 331, "2055": 331, "50388465": 331, "28497084": 331, "3900648": 331, "1158": 331, "26048815": 331, "414": 331, "02959409": 331, "72228914": 331, "81287085": 331, "93856921": 331, "17215767": 331, "2052": 331, "24832918": 331, "741": 331, "11608934": 331, "39182262": 331, "1647": 331, "43827205": 331, "602": 331, "81414949": 331, "44005139": 331, "2471": 331, "5986077": 331, "3680525": 331, "59277088": 331, "1327": 331, "23205468": 331, "134": 331, "94130645": 331, "83156608": 331, "2236": 331, "41048839": 331, "15011382": 331, "85800926": 331, "1410": 331, "0594": 331, "437": 331, "43269124": 331, "12643322": 331, "1663": 331, "09387474": 331, "1634": 331, "92986144": 331, "85570637": 331, "75362162": 331, "1409": 331, "41515279": 331, "92185182": 331, "70080146": 331, "1651": 331, "31026302": 331, "07257801": 331, "486": 331, "97779167": 331, "71374113": 331, "86127804": 331, "19397683": 331, "1350": 331, "02714357": 331, "45520646": 331, "1402": 331, "61079238": 331, "1559": 331, "69378179": 331, "22889458": 331, "813": 331, "04515911": 331, "1935": 331, "29235127": 331, "92112269": 331, "1486": 331, "22465188": 331, "1009": 331, "23907728": 331, "53187137": 331, "36130781": 331, "1110": 331, "40170535": 331, "75877958": 331, "1262": 331, "66757708": 331, "2198": 331, "21464019": 331, "35152197": 331, "1221": 331, "4887303": 331, "1288": 331, "78872932": 331, "44011282": 331, "19047402": 331, "1394": 331, "60711561": 331, "07534023": 331, "542": 331, "46449497": 331, "984": 331, "70649096": 331, "42142474": 331, "790": 331, "239718": 331, "1301": 331, "40456874": 331, "99330555": 331, "860": 331, "14610741": 331, "1735": 331, "78429058": 331, "64408335": 331, "969": 331, "48684934": 331, "2404": 331, "42615328": 331, "58621319": 331, "1134": 331, "82147955": 331, "2294": 331, "01818634": 331, "45202281": 331, "342": 331, "9157313": 331, "1679": 331, "30515952": 331, "57225551": 331, "730": 331, "84942838": 331, "736": 331, "3472413": 331, "94300512": 331, "816": 331, "78895508": 331, "1609": 331, "24331023": 331, "97490925": 331, "177": 331, "88119986": 331, "1149": 331, "67488905": 331, "53432483": 331, "547": 331, "69956874": 331, "1873": 331, "02627622": 331, "21545543": 331, "352": 331, "33454538": 331, "2009": 331, "3689197": 331, "74280221": 331, "1730": 331, "56175809": 331, "1290": 331, "26476032": 331, "26835123": 331, "283": 331, "45938857": 331, "935": 331, "10717211": 331, "90767655": 331, "1229": 331, "1693352": 331, "1399": 331, "97775435": 331, "17238544": 331, "1102": 331, "92491167": 331, "1531": 331, "1702206": 331, "49089528": 331, "693": 331, "17734376": 331, "29430399": 331, "07834947": 331, "1982": 331, "29472944": 331, "97878568": 331, "65760135": 331, "2142": 331, "39537827": 331, "647": 331, "3928471": 331, "40096387": 331, "2412": 331, "80617459": 331, "58952957": 331, "7406165": 331, "2063": 331, "61114326": 331, "627": 331, "06836296": 331, "50960189": 331, "2251": 331, "37727569": 331, "294": 331, "62929819": 331, "42629727": 331, "2406": 331, "30027313": 331, "389": 331, "6391116": 331, "37741679": 331, "2376": 331, "10349713": 331, "616": 331, "55458813": 331, "633375": 331, "1881": 331, "49272956": 331, "95006205": 331, "8512651": 331, "1616": 331, "3788927": 331, "57797906": 331, "53307558": 331, "2246": 331, "83339547": 331, "672": 331, "96263995": 331, "05195825": 331, "1493": 331, "37269841": 331, "65312303": 331, "51736564": 331, "2333": 331, "13188826": 331, "99405237": 331, "98471568": 331, "1893": 331, "04890434": 331, "280": 331, "7433992": 331, "83153548": 331, "1711": 331, "31276025": 331, "917": 331, "93176809": 331, "24532617": 331, "684": 331, "50866104": 331, "1814": 331, "1033381": 331, "20054161": 331, "667": 331, "31562928": 331, "2273": 331, "74722883": 331, "150375": 331, "1144": 331, "31590136": 331, "2016": 331, "75718266": 331, "42903418": 331, "569": 331, "4109725": 331, "883": 331, "99722987": 331, "03101273": 331, "1076": 331, "19568404": 331, "2114": 331, "78498633": 331, "00410155": 331, "461": 331, "4559225": 331, "1333": 331, "63924489": 331, "11010613": 331, "1695": 331, "36953111": 331, "65305988": 331, "45221372": 331, "695": 331, "08475296": 331, "1744": 331, "0502098": 331, "9867078": 331, "1197": 331, "41226215": 331, "755": 331, "22717687": 331, "93978465": 331, "23904268": 331, "1415": 331, "12273306": 331, "62348287": 331, "186": 331, "27005466": 331, "1615": 331, "65180073": 331, "31867804": 331, "799": 331, "31871766": 331, "1725": 331, "4556035": 331, "29838114": 331, "67700583": 331, "1637": 331, "65770434": 331, "57990531": 331, "1505": 331, "83197435": 331, "1375": 331, "59758004": 331, "85237886": 331, "1201": 331, "76762636": 331, "1122": 331, "7141471": 331, "37681137": 331, "1281": 331, "41068836": 331, "1652": 331, "65774792": 331, "63387359": 331, "762": 331, "21947203": 331, "999": 331, "14308765": 331, "21407282": 331, "253": 331, "13034854": 331, "2074": 331, "25781085": 331, "30823231": 331, "1377": 331, "79550784": 331, "1810": 331, "07727844": 331, "19178143": 331, "469": 331, "66045386": 331, "53616327": 331, "24595016": 331, "1272": 331, "20853414": 331, "1058": 331, "99189859": 331, "7584014": 331, "1418": 331, "51259671": 331, "2154": 331, "39879911": 331, "08808944": 331, "1307": 331, "051491": 331, "1184": 331, "32848574": 331, "85571692": 331, "998": 331, "14092356": 331, "1608": 331, "59937354": 331, "46111491": 331, "1244": 331, "89130973": 331, "1911": 331, "9021219": 331, "96026782": 331, "1332": 331, "68917835": 331, "1022": 331, "5080149": 331, "65556915": 331, "32076588": 331, "1645": 331, "18490969": 331, "31428473": 331, "239": 331, "27480029": 331, "1127": 331, "49411185": 331, "71727841": 331, "dlaod": 331, "tmp": 331, "ipykernel_56393": 331, "3860440226": 331, "360": [332, 342, 348], "angle_based_posit": 332, "ro": 332, "ulaoa": 332, "apart": 333, "wi": 333, "fi": 333, "lte": [333, 348], "evolut": 333, "wimax": 333, "chapter": 333, "roman": 333, "binsiz": 333, "cdfofdm": 333, "bincountofdm": 333, "samplespow": 333, "avgpoweroutput": 333, "peakpoweroutput": 333, "pointpaproutput": 333, "countout": 333, "bins_countout": 333, "loop": [333, 345], "cumul": [333, 345], "papr_ofdm": 333, "cdfdft": 333, "bincountdft": 333, "ortho": [333, 338, 340, 341, 346, 348], "00001": 333, "papr_dft": 333, "papr_comparison": 333, "3000": 333, "symbolperiod": 333, "symbolperiodcp": 333, "scscp": 333, "sf2": 333, "60000": 334, "599": 334, "rep": 334, "pcolor": 334, "txantidx": 334, "rxantidx": 334, "symbindex": 334, "hideal": 334, "0000285": 334, "0000325": 334, "maxrank": 334, "condition_numb": 334, "repsect": 335, "27399998903274536": 335, "08749999850988388": 335, "0020000000949949026": 335, "4251999855041504": 335, "17100000381469727": 335, "00559999980032444": 335, "48124998807907104": 335, "453000009059906": 335, "18912500143051147": 335, "004999999888241291": 335, "48818182945251465": 335, "4808181822299957": 335, "42027273774147034": 335, "049272727221250534": 335, "49235713481903076": 335, "4894285798072815": 335, "47942855954170227": 335, "24899999797344208": 335, "004142857156693935": 335, "polar_bervssnr": 335, "rindex": [336, 337], "3305785123966942": 336, "2787500023841858": 336, "011250000447034836": 336, "32124999165534973": 336, "26625001430511475": 336, "16875000298023224": 336, "02250000089406967": 336, "7547169811320755": 336, "32749998569488525": 336, "29249998927116394": 336, "2175000011920929": 336, "15625": 336, "036249998956918716": 336, "32249999046325684": 336, "2874999940395355": 336, "2537499964237213": 336, "17624999582767487": 336, "07874999940395355": 336, "tbindex": 336, "31975001096725464": 336, "2562499940395355": 336, "15012499690055847": 336, "0017500000540167093": 336, "32233333587646484": 336, "2644583284854889": 336, "15429165959358215": 336, "3272361159324646": 336, "2646944522857666": 336, "16170834004878998": 336, "3237692415714264": 336, "2660336494445801": 336, "16290384531021118": 336, "30405065417289734": 336, "24077533185482025": 336, "1438588947057724": 336, "fixx": 336, "ber_vs_snr": 336, "ldpc_bervssnr_fin": 336, "ber_vs_tbsiz": 336, "ldpc_bervssnr_tbsiz": 336, "ldpc_bervssnr0": 337, "ldpc_bervssnr": 337, "snrvsber_ldpc": 337, "_g": [338, 340, 341], "6m": [338, 340, 341], "4m": [338, 340, 341], "nsnapshot": [338, 339, 340, 341, 342, 343, 344, 345, 346], "bsgeometri": [338, 340, 341], "immendi": [338, 339, 340, 341, 342, 343, 344, 346], "ceilinght": [338, 340, 341], "clutterht": [338, 340, 341], "clutterden": [338, 340, 341], "0x7f929a1a3fd0": 338, "pl": [338, 340, 341, 344], "xpr": [338, 339, 340, 341, 342, 343, 344, 346], "hb": [338, 339, 343, 346], "bandlimit": [338, 340, 341, 344], "widen": [338, 340, 341, 344], "ht": [338, 339, 340, 341, 344, 346], "stabil": 339, "behav": 339, "engin": 339, "throughout": 339, "unchang": 339, "250": [339, 342, 343], "motion": [339, 342, 343, 346], "isinitlocationrandom": [339, 342], "isinitorientationrandom": [339, 342], "snapshotinterv": [339, 342, 343], "enablespatialconsist": [339, 342, 343, 346], "initialloc": [339, 342, 343], "0x7fca11a9ef10": 339, "coeffic": [339, 342, 343, 346], "efficeint": [339, 342, 343, 346], "coefficeint": [339, 342, 343, 346], "hue": [339, 342, 343, 345, 346], "bsantindex": [339, 346], "ueantindex": [339, 346], "inidc": [339, 346], "hdoppler": 339, "snapindex": [339, 346], "tau0": 339, "9999": 339, "0x7fd999829f10": 340, "0x7f73c2c5ea10": 341, "ruralmacro": 342, "ue2antarrai": 342, "ueroute2": 342, "0x7f7940973750": 342, "2638": 342, "93798828125": 342, "intiti": [342, 343], "discalim": 342, "wrapto30": 342, "ang": 342, "wrap": 342, "plotlayout": 342, "delangl": 342, "colour": 342, "hex": 342, "regularpolygon": 342, "numvertic": 342, "add_patch": 342, "wedg": 342, "theta1": 342, "theta2": 342, "bounddist": 342, "y0": 342, "past": 342, "loaction": 342, "grater": 342, "scenrio": 343, "everyth": [343, 356, 357, 359], "scerario": 343, "0x7fb96d21c390": 343, "milli": 343, "displayarrai": 344, "0x7f4c0d32b050": 344, "numcarrierfrequ": 344, "make_axes_locat": 345, "ceilingheight": 345, "plo": 345, "dist": 345, "proboflo": 345, "problo": 345, "10001": 345, "emper": 345, "aoaspread": 345, "aodspread": 345, "zoaspread": 345, "zodspread": 345, "10km": 345, "2199": 345, "114990234375": 345, "400634765625": 345, "count_sf": 345, "bins_count_sf": 345, "tau": [345, 346], "sigma_": 345, "count_kf": 345, "bins_count_kf": 345, "k_f": 345, "log_": 345, "count_phiaoa": 345, "bins_count_phiaoa": 345, "pdf_phiaoa": 345, "cdf_phiaoa": 345, "count_phiaod": 345, "bins_count_phiaod": 345, "pdf_phiaod": 345, "cdf_phiaod": 345, "count_thetaaoa": 345, "bins_count_thetaaoa": 345, "pdf_thetaaoa": 345, "cdf_thetaaoa": 345, "count_thetaaod": 345, "bins_count_thetaaod": 345, "pdf_thetaaod": 345, "cdf_thetaaod": 345, "signific": [346, 348], "neglig": 346, "aris": 346, "natur": 346, "impli": 346, "subset": 346, "inact": 346, "irrelev": 346, "focu": 346, "respond": 346, "rich": [346, 358], "scindex": 346, "oversamplingfactortx": 346, "oversamplingfactorrx": 346, "ftx": 346, "frx": 346, "hbeam": 346, "txantenna": 346, "rxantenna": 346, "genar": [347, 352, 358], "rough": [347, 352], "charaterist": [347, 352], "sparsiti": [347, 352, 358], "realist": [347, 352, 358], "incapsul": 348, "topic": 348, "condsid": 348, "nt_x": 348, "nt_y": 348, "considerd": 348, "mont": 348, "carlo": 348, "msg2": 348, "msg4": 348, "iab": 348, "mt": 348, "spare": 348, "unus": 348, "resourceset0": 348, "space0": 348, "bfangl": 348, "abf": 348, "x_beam": 348, "pt_a": 348, "nsymbforschedul": 348, "startofdmsymbolindic": 348, "iscustombeamform": 348, "htime": 348, "numfreq": 348, "k_bolt": 348, "yn": 348, "raster": 348, "boundri": 348, "rxarrai": 348, "rxcombin": 348, "combinertyp": 348, "numdftbeam": 348, "8183": 348, "ylim": 348, "firstsymbolindic": 348, "tranmit": 348, "version14": 348, "hurrai": 348, "ohh": 348, "470": 348, "pbchresequencebit": 348, "004629629629629629": 348, "rxbeamidx": 349, "bool_": 349, "yr": 349, "snr_vs_bler": 349, "link_level_and_system_level_simulation_for_physical_broadcast_channel": 349, "19999999999999996": 349, "07999999999999996": 349, "040000000000000036": 349, "11111111111111": 349, "dataset": [349, 352, 358], "_nr": 349, "cyclicshifthop": 350, "pucchformat0": 350, "pucchformat0decod": 350, "mcsestim": 350, "maxprb": 350, "initialc": 350, "validhoppinginfo": 350, "interlacedrb": 350, "refnum": 350, "853": 350, "pucchformat0obj": 350, "pucchformat0grid": 350, "initialcyclicshift": 350, "symbolindexstart": 350, "3300": 350, "pucchformat0decoderobj": 350, "pucchformat0decoderop": 350, "hardout": 350, "obj_mc": 350, "estimatem_c": 350, "offest": 350, "bin_arr": 350, "retriv": 350, "ber1": 350, "ber2": 350, "5023446658851114": 350, "2511723329425557": 350, "00206913808111479": 350, "4806565064478312": 350, "2403282532239156": 350, "004281332398719396": 350, "5005861664712778": 350, "2502930832356389": 350, "008858667904100823": 350, "5046893317702228": 350, "2523446658851114": 350, "018329807108324356": 350, "4783118405627198": 350, "2391559202813599": 350, "0379269019073225": 350, "4859320046893318": 350, "2429660023446659": 350, "07847599703514611": 350, "48182883939038684": 350, "24091441969519342": 350, "16237767391887217": 350, "4349355216881594": 350, "2174677608440797": 350, "3359818286283782": 350, "36518171160609614": 350, "18259085580304807": 350, "6951927961775608": 350, "1776084407971864": 350, "0888042203985932": 350, "4384498882876635": 350, "016998827667057445": 350, "008499413833528723": 350, "976351441631318": 350, "158482110660259": 350, "742749857031342": 350, "366508987303583": 350, "55594781168523": 350, "88378916846895": 350, "233": 350, "57214690901213": 350, "483": 350, "2930238571757": 350, "12040": 351, "513671875": 351, "23460": 351, "009053156146179402": 351, "009252344416027281": 351, "004455980066445183": 351, "004647485080988918": 351, "0018064784053156147": 351, "0019855072463768114": 351, "0006735880398671096": 351, "0007374254049445865": 351, "481600": 351, "0000000004": 351, "00021760797342192692": 351, "00024424552429667517": 351, "6622000": 351, "000000001": 351, "64451827242525e": 351, "734867860187553e": 351, "33499999999999996": 351, "16013200": 351, "475083056478405e": 351, "1935208866155157e": 351, "04500000000000004": 351, "22996399": 351, "4916943521594684e": 351, "4100596760443308e": 351, "23718800": 351, "24080000": 351, "mcsindex3": 351, "aclr": [352, 358], "extern": 352, "libari": 352, "odfm": 352, "extact": 352, "libraier": 352, "20000": [352, 358], "se": [352, 358], "p1": [352, 358, 361], "geni": [352, 358], "industri": [352, 358], "1300": [352, 358], "email": [353, 356, 357, 359, 360], "month": [353, 356, 358, 359, 360], "arxiv": [353, 358], "x86_64": [356, 357, 359, 360], "llvm": [356, 359, 360], "anaconda": [356, 357, 359], "skip": [356, 357, 359], "instruct": [356, 357, 359, 362], "lighter": [356, 357, 359], "outdat": [356, 357, 359], "linux": [356, 357, 359], "sudo": [356, 357, 359], "apt": [356, 357, 359], "shortcut": [356, 359], "ctrl": [356, 359], "alt": [356, 359], "wget": [356, 357, 359], "repo": [356, 357, 359], "bash": [356, 357, 359], "conda": [356, 359, 360], "click": [356, 357, 359, 360], "button": [356, 357, 359], "prompt": [356, 357, 359], "pip": [356, 357, 359, 360], "readi": [356, 357, 359], "cach": [356, 357, 359, 360], "dir": [356, 357, 359, 360], "gigayasawireless": [356, 357, 358, 359, 360], "raw": [356, 357, 359, 360], "python3_7": [356, 357, 360], "py3": [356, 357, 359, 360], "whl": [356, 357, 359, 360], "python3_8": [356, 357, 359, 360], "python3_9": [356, 357, 359, 360], "python3_10": [356, 357, 359, 360], "truli": [356, 357, 359], "browser": [356, 357, 359], "__version__": [356, 357, 359, 362], "still": [356, 357, 359], "struggl": [356, 357, 359], "mailto": [356, 357, 359], "vikram": [356, 357, 358, 359], "happi": [356, 357, 359], "purchas": [356, 359, 360], "perpetu": [356, 359, 360], "central": [356, 359, 360], "hub": [356, 359, 360], "unzip": [356, 359, 360], "login": [356, 359, 360], "try": [356, 359, 360], "templat": [357, 360], "licens": [357, 358], "md": 357, "doc": 357, "myenv": 357, "buggi": [357, 360], "tpu": 358, "cpu": [358, 362], "pytorch": 358, "intellig": [358, 361], "quarterli": 358, "upgrad": 358, "24x7": 358, "homepag": 358, "technologi": 358, "pxsch": 358, "pxcch": 358, "pxbch": 358, "dvanc": 358, "ntenna": 358, "ystem": 358, "aa": 358, "rtifici": 358, "ntellig": 358, "achin": 358, "earn": 358, "ybrid": 358, "utomat": 358, "epeat": 358, "uest": 358, "releasenot": 358, "instal": 358, "guid": 358, "lai": 358, "recip": 358, "solv": 358, "art": 358, "tent": 358, "week": 358, "young": 358, "repositori": 358, "reward": 358, "portal": 358, "miniconda": 358, "jupyt": [358, 360], "confirm": [358, 360], "video": 358, "hello": 358, "world": 358, "tentet": 358, "septemb": 358, "march": 358, "2024": 358, "trademark": 358, "5gtoolkit": 358, "jump": 359, "conflict": 359, "r24a": 359, "virtual": 360, "compress": 361, "chase": 361, "p2": 361, "ri": 361, "rsrq": 361, "pssch": 361, "rim": 361, "dmrss": 361, "hap": 361, "drone": 361, "duplex": 361, "sbfd": 361, "phaser": 361, "ettu": 361, "210": 361, "205": 361, "lime": 361, "nm": 361, "newbi": 362, "08": 362, "651000": 362, "core": 362, "cc": 362, "onednn": 362, "tf_enable_onednn_opt": 362, "779554": 362, "platform": 362, "cpu_feature_guard": 362, "avx2": 362, "avx512f": 362, "avx512_vnni": 362, "fma": 362, "rebuild": 362, "478801": 362, "tf2tensorrt": 362, "py_util": 362, "trt": 362, "could": 362, "tensorrt": 362, "dpi": 362, "9600": 362, "15873515625": 362, "0block": 362, "8957356524063758": 362, "08426328125": 362, "8957356524063758block": 362, "5938136638046276": 362, "029006510416666666": 362, "5938136638046276block": 362, "812920690579611": 362, "004522395833333333": 362, "812920690579611block": 362, "8428": 362, "91549665014884": 362, "00016276041666666666": 362, "91549665014884block": 362, "06489999999999996": 362, "484367468222267": 362, "8125e": 362, "484367468222267block": 362, "00029999999999996696": 362, "41588833612777": 362, "41588833612777block": 362, "99225435691065": 362, "99225435691065block": 362, "166": 362, "81005372000593": 362, "81005372000593block": 362, "316": 362, "22776601683796": 362, "22776601683796block": 362, "28259557291666665": 362, "21662265625": 362, "1511671875": 362, "09119765625": 362, "04033958333333333": 362, "010061197916666667": 362, "9855": 362, "0008690104166666667": 362, "2984": 362, "333333333333334e": 362, "0032999999999999696": 362, "3536518229166667": 362, "3059221354166667": 362, "24816536458333333": 362, "18723645833333333": 362, "1307921875": 362, "08174973958333333": 362, "040142447916666664": 362, "011923697916666667": 362, "9943": 362, "0014354166666666667": 362, "43820000000000003": 362, "96875e": 362, "01200000000000001": 362}, "objects": {"toolkit5G.CRC": [[3, 0, 1, "", "CRCDecoder"], [4, 0, 1, "", "CRCEncoder"]], "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder": [[5, 0, 1, "", "HammingDecoder"], [5, 0, 1, "", "HammingSphereDecoder"], [5, 0, 1, "", "HammingSyndromeDecoder"]], "toolkit5G.ChannelCoder.HammingCoder.hammingEncoder": [[5, 0, 1, "", "HammingEncoder"]], "toolkit5G.ChannelCoder.LDPC": [[93, 0, 1, "", "CodeBlockAggregation"], [92, 0, 1, "", "CodeBlockConcatenation"], [93, 0, 1, "", "CodeBlockSegmentation"], [92, 0, 1, "", "CodeBlockSegregation"], [9, 0, 1, "", "LDPCparameters"]], "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation": [[93, 1, 1, "", "C"], [93, 1, 1, "", "Kbar"], [93, 1, 1, "", "Kcb"], [93, 1, 1, "", "baseGraph"], [93, 1, 1, "", "codeRate"], [93, 1, 1, "", "crcType"], [93, 1, 1, "", "tbSize"]], "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation": [[93, 1, 1, "", "B"], [93, 1, 1, "", "C"], [93, 1, 1, "", "K"], [93, 1, 1, "", "Kb"], [93, 1, 1, "", "Kbar"], [93, 1, 1, "", "L"], [93, 1, 1, "", "Zc"], [93, 1, 1, "", "baseGraph"], [93, 1, 1, "", "codeRate"]], "toolkit5G.ChannelCoder": [[96, 0, 1, "", "LDPCDecoder5G"], [96, 0, 1, "", "LDPCEncoder5G"], [146, 0, 1, "", "PolarDecoder5G"], [146, 0, 1, "", "PolarEncoder5G"], [12, 0, 1, "", "ReedMullerDecoder5G"], [12, 0, 1, "", "ReedMullerEncoder5G"]], "toolkit5G.ChannelCoder.LDPCDecoder5G": [[96, 1, 1, "", "bm"], [96, 2, 1, "", "computeIls"], [96, 1, 1, "", "i_ls"], [96, 1, 1, "", "k_ldpc"], [96, 1, 1, "", "llr_max"], [96, 1, 1, "", "n"], [96, 1, 1, "", "n_ldpc"], [96, 1, 1, "", "nb_pruned_nodes"], [96, 1, 1, "", "prune_pcm"]], "toolkit5G.ChannelCoder.LDPCEncoder5G": [[96, 1, 1, "", "bm"], [96, 2, 1, "", "computeIls"], [96, 1, 1, "", "i_ls"], [96, 1, 1, "", "k"], [96, 1, 1, "", "n"], [96, 1, 1, "", "n_ldpc"], [96, 1, 1, "", "pcm"], [96, 1, 1, "", "z"]], "toolkit5G.ChannelCoder.PolarCoder": [[149, 0, 1, "", "CodeBlockAggregation"], [148, 0, 1, "", "CodeBlockConcatenation"], [149, 0, 1, "", "CodeBlockSegmentation"], [148, 0, 1, "", "CodeBlockSegregation"], [143, 0, 1, "", "InputBitDeInterleaver"], [143, 0, 1, "", "InputBitInterleaver"]], "toolkit5G.ChannelCoder.PolarDecoder5G": [[146, 1, 1, "", "E"], [146, 1, 1, "", "K"], [146, 1, 1, "", "N"], [146, 1, 1, "", "dec_type"], [146, 1, 1, "", "llr_max"], [146, 1, 1, "", "output_dtype"]], "toolkit5G.ChannelCoder.PolarEncoder5G": [[146, 1, 1, "", "N"]], "toolkit5G.ChannelCoder.ReedMullerDecoder5G": [[12, 1, 1, "", "dtype"], [12, 1, 1, "", "hardIn"], [12, 1, 1, "", "k"]], "toolkit5G.ChannelCoder.ReedMullerEncoder5G": [[12, 1, 1, "", "dtype"], [12, 1, 1, "", "k"]], "toolkit5G.ChannelModels": [[14, 0, 1, "", "AntennaArrays"], [15, 0, 1, "", "ChannelGenerator"], [17, 0, 1, "", "NodeMobility"], [18, 0, 1, "", "ParameterGenerator"], [19, 0, 1, "", "SimulationLayout"]], "toolkit5G.ChannelModels.NodeMobility": [[17, 2, 1, "", "displayRoute"]], "toolkit5G.ChannelModels.SimulationLayout": [[19, 1, 1, "", "BSLocations"], [19, 1, 1, "", "ISD"], [19, 1, 1, "", "UELocations"], [19, 1, 1, "", "UEdistibution"], [19, 1, 1, "", "UEheightDistribution"], [19, 1, 1, "", "bsAntennaArray"], [19, 1, 1, "", "bsRoute"], [19, 1, 1, "", "carrierFrequency"], [19, 1, 1, "", "clutterDensity"], [19, 1, 1, "", "clutterHeight"], [19, 1, 1, "", "clutterSize"], [19, 1, 1, "", "correlationDistanceIndoor"], [19, 1, 1, "", "correlationDistanceLoS"], [19, 1, 1, "", "correlationTypeIndoor"], [19, 1, 1, "", "correlationTypeLoS"], [19, 1, 1, "", "enableSpatialConsistencyIndoor"], [19, 1, 1, "", "enableSpatialConsistencyLoS"], [19, 1, 1, "", "force3GPPSpatialConsistencyParameters"], [19, 1, 1, "", "forceLOS"], [19, 1, 1, "", "heightOfBS"], [19, 1, 1, "", "heightOfRoom"], [19, 1, 1, "", "heightOfUE"], [19, 1, 1, "", "indoorUEfraction"], [19, 1, 1, "", "layoutLength"], [19, 1, 1, "", "layoutType"], [19, 1, 1, "", "layoutWidth"], [19, 1, 1, "", "lengthOfIndoorObject"], [19, 1, 1, "", "maxNumberOfFloors"], [19, 1, 1, "", "memoryEfficient"], [19, 1, 1, "", "minNumberOfFloors"], [19, 1, 1, "", "minUEBSDistance"], [19, 1, 1, "", "numOfBS"], [19, 1, 1, "", "numOfSectorsPerSite"], [19, 1, 1, "", "numOfSnapShots"], [19, 1, 1, "", "numOfUE"], [19, 1, 1, "", "radiusForCircularUEDrop"], [19, 1, 1, "", "routeType"], [19, 1, 1, "", "terrain"], [19, 1, 1, "", "ueAntennaArray"], [19, 1, 1, "", "ueDropMethod"], [19, 1, 1, "", "ueRoute"], [19, 1, 1, "", "widthOfIndoorObject"]], "toolkit5G.ChannelModels.antennaArrays": [[14, 0, 1, "", "Antenna_3GPP_38901"], [14, 0, 1, "", "Antenna_HertzianDipole"], [14, 0, 1, "", "Antenna_LinearDipole"]], "toolkit5G.ChannelModels.nodeMobility": [[17, 0, 1, "", "CircularRoute"], [17, 0, 1, "", "DropVehiclesHighway"], [17, 0, 1, "", "RandomWalk"]], "toolkit5G.ChannelModels.simulationLayout": [[19, 0, 1, "", "HexagonalLayout"], [19, 0, 1, "", "RectangularLayout"]], "toolkit5G.ChannelProcessing": [[21, 0, 1, "", "AddNoise"], [22, 0, 1, "", "ApplyChannel"]], "toolkit5G.ChannelProcessing.ApplyChannel": [[22, 1, 1, "", "enableInterTxInterference"], [22, 1, 1, "", "isFrequencyDomain"], [22, 1, 1, "", "memoryConsumptionLevel"]], "toolkit5G.Configurations": [[261, 0, 1, "", "CSIConfiguration"], [262, 0, 1, "", "GenerateValidSSBParameters"], [263, 0, 1, "", "PDSCHLowerPhyConfiguration"], [264, 0, 1, "", "PDSCHUpperPhyConfiguration"], [265, 0, 1, "", "SRSConfiguration"], [266, 0, 1, "", "SSBConfiguration"], [267, 0, 1, "", "TimeFrequency5GParameters"]], "toolkit5G.Configurations.SRSConfiguration": [[265, 1, 1, "", "bHop"], [265, 1, 1, "", "bSRS"], [265, 1, 1, "", "betaSRS"], [265, 1, 1, "", "cSRS"], [265, 1, 1, "", "combOffset"], [265, 1, 1, "", "enableStartRBHopping"], [265, 1, 1, "", "freqDomainPosition"], [265, 1, 1, "", "freqDomainShift"], [265, 1, 1, "", "freqScalingFactor"], [265, 1, 1, "", "groupOrSequenceHopping"], [265, 1, 1, "", "lengthOfSequence"], [265, 1, 1, "", "nrOfCyclicShift"], [265, 1, 1, "", "nrofSRS_Ports"], [265, 1, 1, "", "nrofSymbols"], [265, 1, 1, "", "offsetInSlots"], [265, 1, 1, "", "periodicityInSlots"], [265, 1, 1, "", "purpose"], [265, 1, 1, "", "repetitionFactor"], [265, 1, 1, "", "resourceGridSizeinRBs"], [265, 1, 1, "", "resourceType"], [265, 1, 1, "", "sequenceId"], [265, 1, 1, "", "slotIndex"], [265, 1, 1, "", "startPosition"], [265, 1, 1, "", "startRBIndex"], [265, 1, 1, "", "symbolIndices"], [265, 1, 1, "", "systemFrameNumber"], [265, 1, 1, "", "transmissionComb"]], "toolkit5G.Configurations.TimeFrequency5GParameters": [[267, 2, 1, "", "getGaurdBand_FR1"], [267, 2, 1, "", "getGaurdBand_FR2"], [267, 2, 1, "", "getNumberRB_FR1"], [267, 2, 1, "", "getNumberRB_FR2"]], "toolkit5G.MIMOProcessing": [[29, 0, 1, "", "SearchFree"], [29, 0, 1, "", "TypeICodeBook"]], "toolkit5G.OFDM": [[32, 0, 1, "", "OFDMDemodulator"], [33, 0, 1, "", "OFDMModulator"], [35, 0, 1, "", "TransformDecoding5G"], [36, 0, 1, "", "TransformPrecoding"], [37, 0, 1, "", "TransformPrecoding5G"]], "toolkit5G.PayloadGeneration": [[38, 0, 1, "", "DCIExtraction"], [38, 0, 1, "", "DCIGeneration"], [46, 0, 1, "", "MIBExtraction"], [46, 0, 1, "", "MIBGeneration"]], "toolkit5G.PayloadGeneration.MIBExtraction": [[46, 1, 1, "", "carrierFreq"], [46, 1, 1, "", "cellBarred"], [46, 1, 1, "", "choiceBit"], [46, 1, 1, "", "controlResourceSet0"], [46, 2, 1, "", "displayParameters"], [46, 1, 1, "", "dmrsTypeAPosition"], [46, 1, 1, "", "hrfBit"], [46, 1, 1, "", "intraFrequencyReselection"], [46, 1, 1, "", "nssbCandidatesInHrf"], [46, 1, 1, "", "searchSpace0"], [46, 1, 1, "", "ssbIndex"], [46, 1, 1, "", "ssbSubCarrierOffset"], [46, 1, 1, "", "subCarrierSpacingCommon"], [46, 1, 1, "", "systemFrameNumber"]], "toolkit5G.PayloadGeneration.MIBGeneration": [[46, 1, 1, "", "carrierFreq"], [46, 1, 1, "", "cellBarred"], [46, 1, 1, "", "choiceBit"], [46, 1, 1, "", "controlResourceSet0"], [46, 2, 1, "", "displayParameters"], [46, 1, 1, "", "dmrsTypeAPosition"], [46, 1, 1, "", "hrfBit"], [46, 1, 1, "", "intraFrequencyReselection"], [46, 1, 1, "", "nssbCandidatesInHrf"], [46, 1, 1, "", "searchSpace0"], [46, 1, 1, "", "ssbIndex"], [46, 1, 1, "", "ssbSubCarrierOffset"], [46, 1, 1, "", "subCarrierSpacingCommon"], [46, 1, 1, "", "systemFrameNumber"]], "toolkit5G.PhysicalChannels": [[184, 0, 1, "", "PBCH"], [184, 0, 1, "", "PBCHDecoder"], [185, 0, 1, "", "PDCCH"], [185, 0, 1, "", "PDCCHDecoder"], [86, 0, 1, "", "PDSCHDecoderLowerPhy"], [88, 0, 1, "", "PDSCHDecoderUpperPhy"], [85, 0, 1, "", "PDSCHLowerPhy"], [87, 0, 1, "", "PDSCHUpperPhy"], [188, 0, 1, "", "PSBCH"], [188, 0, 1, "", "PSBCHDecoder"], [189, 0, 1, "", "PSCCHLowerPhy"], [189, 0, 1, "", "PSCCHLowerPhyDecoder"], [189, 0, 1, "", "PSCCHUpperPhy"], [189, 0, 1, "", "PSCCHUpperPhyDecoder"], [181, 0, 1, "", "PUSCHDecoderUpperPhy"], [182, 0, 1, "", "PUSCHUpperPhy"]], "toolkit5G.PhysicalChannels.PBCH": [[25, 0, 1, "", "PBCHDeInterleaver"], [25, 0, 1, "", "PBCHInterleaver"], [184, 1, 1, "", "chIL_bits"], [184, 1, 1, "", "encBits"], [184, 1, 1, "", "iILBits"], [184, 1, 1, "", "ilBits"], [184, 1, 1, "", "mib"], [184, 1, 1, "", "payloadCRC"], [184, 1, 1, "", "payloadMIB"], [184, 1, 1, "", "rmBits"], [184, 1, 1, "", "sBIL_bits"], [184, 1, 1, "", "scr2bits"], [184, 1, 1, "", "scrBits"]], "toolkit5G.PhysicalChannels.PBCHDecoder": [[184, 1, 1, "", "channelDeInterleaverBits"], [184, 1, 1, "", "crcCheck"], [184, 1, 1, "", "deCRCBits"], [184, 1, 1, "", "deScrambledBits"], [184, 1, 1, "", "descrambled2LLRs"], [184, 1, 1, "", "inputDeinteleavedBits"], [184, 1, 1, "", "llr"], [184, 1, 1, "", "mibRx"], [184, 1, 1, "", "pbchDeInterleavedBits"], [184, 1, 1, "", "polarDecodedBits"], [184, 1, 1, "", "rateDematedBits"], [184, 1, 1, "", "subBlockDeinterleavedBits"]], "toolkit5G.PhysicalChannels.PDCCH": [[185, 1, 1, "", "dciBIL"], [185, 1, 1, "", "dciCRC"], [185, 1, 1, "", "dciIBI"], [185, 1, 1, "", "dciRM"], [185, 1, 1, "", "dciRNTI"], [185, 1, 1, "", "dciSCR"], [185, 1, 1, "", "encBits"]], "toolkit5G.PhysicalChannels.PDCCHDecoder": [[185, 1, 1, "", "check"], [185, 1, 1, "", "dciBits"], [185, 1, 1, "", "decodedBits"], [185, 1, 1, "", "dematchedBits"], [185, 1, 1, "", "descrambledLLRs"], [185, 1, 1, "", "ibDILBits"], [185, 1, 1, "", "llr"], [185, 1, 1, "", "sbdBits"], [185, 1, 1, "", "unmaskedBits"]], "toolkit5G.PhysicalChannels.PDSCH": [[94, 0, 1, "", "ComputeTransportBlockSize"], [95, 0, 1, "", "LayerDemapper"], [95, 0, 1, "", "LayerMapper"], [108, 0, 1, "", "TransportBlockRxProcessing"], [108, 0, 1, "", "TransportBlockTxProcessing"]], "toolkit5G.PhysicalChannels.PDSCHLowerPhy": [[85, 2, 1, "", "displayDMRSGrid"], [85, 2, 1, "", "displayResourceGrid"]], "toolkit5G.Positioning": [[192, 0, 1, "", "DFT_DoA"], [202, 0, 1, "", "DFT_ToA"], [195, 0, 1, "", "DoAEstimation"], [193, 0, 1, "", "ESPRIT_DoA"], [203, 0, 1, "", "ESPRIT_ToA"], [196, 0, 1, "", "GradientDescentDoA"], [198, 0, 1, "", "GradientDescentTDoA"], [197, 0, 1, "", "HybridTDoAAoA"], [197, 0, 1, "", "HybridToAAoA"], [196, 0, 1, "", "LeastSquareDoA"], [198, 0, 1, "", "LeastSquareTDoA"], [199, 0, 1, "", "LeastSquareToA"], [194, 0, 1, "", "MUSIC_DoA"], [204, 0, 1, "", "MUSIC_ToA"], [198, 0, 1, "", "NewtonRaphsonTDoA"], [206, 0, 1, "", "PositionEstimation"], [205, 0, 1, "", "ToAEstimation"]], "toolkit5G.Ratematcher.LDPC": [[208, 0, 1, "", "BitDeinterleaver"], [207, 0, 1, "", "BitDeselection"], [208, 0, 1, "", "BitInterleaver"], [207, 0, 1, "", "BitSelection"], [209, 0, 1, "", "RatematchParameters"]], "toolkit5G.Ratematcher.LDPC.BitDeinterleaver": [[208, 1, 1, "", "modOrder"], [208, 1, 1, "", "numBits1"], [208, 1, 1, "", "numBits2"]], "toolkit5G.Ratematcher.LDPC.BitDeselection": [[207, 1, 1, "", "Ncb"], [207, 1, 1, "", "baseGraph"], [207, 1, 1, "", "enableLBRM"], [207, 1, 1, "", "k0"], [207, 1, 1, "", "liftingFactor"], [207, 1, 1, "", "nLDPC"], [207, 1, 1, "", "rvID"]], "toolkit5G.Ratematcher.LDPC.BitInterleaver": [[208, 1, 1, "", "modOrder"], [208, 1, 1, "", "numBits1"], [208, 1, 1, "", "numBits2"]], "toolkit5G.Ratematcher.LDPC.BitSelection": [[207, 1, 1, "", "baseGraph"], [207, 1, 1, "", "enableLBRM"], [207, 1, 1, "", "k0"], [207, 1, 1, "", "liftingFactor"], [207, 1, 1, "", "modOrder"], [207, 1, 1, "", "numCBs"], [207, 1, 1, "", "numCodedBits"], [207, 1, 1, "", "numLayers"], [207, 1, 1, "", "rvID"], [207, 1, 1, "", "tbSize"]], "toolkit5G.Ratematcher.LDPC.RatematchParameters": [[209, 1, 1, "", "baseGraph"], [209, 1, 1, "", "enableLBRM"], [209, 1, 1, "", "k0"], [209, 1, 1, "", "liftingFactor"], [209, 1, 1, "", "modOrder"], [209, 1, 1, "", "numCodeBlocks"], [209, 1, 1, "", "numCodedBits"], [209, 1, 1, "", "numLayers"], [209, 1, 1, "", "rvID"], [209, 1, 1, "", "tbSize"]], "toolkit5G.Ratematcher.PolarCoder": [[210, 0, 1, "", "BitDeSelection"], [210, 0, 1, "", "BitSelection"], [211, 0, 1, "", "ChannelDeInterleaver"], [211, 0, 1, "", "ChannelInterleaver"], [212, 0, 1, "", "Subblock_DeInterleaver"], [212, 0, 1, "", "Subblock_Interleaver"]], "toolkit5G.ReceiverAlgorithms": [[268, 0, 1, "", "CarrierFrequencyOffsetEstimation"], [269, 0, 1, "", "ChannelEstimationAndEqualizationPBCH"], [270, 0, 1, "", "ChannelEstimationAndEqualizationPDCCH"], [271, 0, 1, "", "ChannelEstimationAndEqualizationPDSCH"], [275, 0, 1, "", "ChannelEstimationCSIRS"], [276, 0, 1, "", "ChannelEstimationSRS"], [272, 0, 1, "", "DMRSParameterDetection"], [273, 0, 1, "", "PSSDetection"], [274, 0, 1, "", "SSSDetection"]], "toolkit5G.ResourceMapping": [[227, 0, 1, "", "CORESET"], [217, 0, 1, "", "DeSpreadingFormat1"], [215, 0, 1, "", "ResourceDeMapperFormat0"], [218, 0, 1, "", "ResourceDeMapperFormat1"], [228, 0, 1, "", "ResourceMapperCSIRS"], [229, 0, 1, "", "ResourceMapperDMRSPDSCH"], [216, 0, 1, "", "ResourceMapperFormat0"], [219, 0, 1, "", "ResourceMapperFormat1"], [231, 0, 1, "", "ResourceMapperPRS"], [233, 0, 1, "", "ResourceMapperPTRSPDSCH"], [238, 0, 1, "", "ResourceMapperSSB"], [230, 0, 1, "", "ResourceMappingPDCCH"], [232, 0, 1, "", "ResourceMappingPSCCH"], [237, 0, 1, "", "SSB_Grid"], [235, 0, 1, "", "SSSB_Grid"], [236, 0, 1, "", "SearchSpaceSet"], [220, 0, 1, "", "SpreadingFormat1"]], "toolkit5G.ResourceMapping.CORESET": [[227, 2, 1, "", "displayCoresetREG_CCE_Mapping"]], "toolkit5G.ResourceMapping.DeSpreadingFormat1": [[134, 1, 1, "", "SpreadingFactor"], [217, 1, 1, "", "indexPUCCH"], [217, 1, 1, "", "maxNumPRBs"], [217, 1, 1, "", "numberOfSymb"], [217, 1, 1, "", "start_SymbIndex"], [217, 1, 1, "", "timedomainOCC"]], "toolkit5G.ResourceMapping.ResourceDeMapperFormat0": [[215, 1, 1, "", "formatPUCCH"], [215, 1, 1, "", "indexPUCCH"], [215, 1, 1, "", "interlaceIndex_0"], [215, 1, 1, "", "interlaceIndex_1"], [215, 1, 1, "", "maxNumPRBs"], [215, 1, 1, "", "numInterlacedRBs"], [215, 1, 1, "", "numOfInterlaces"], [215, 1, 1, "", "numRBs"], [215, 1, 1, "", "numberOfSymb"], [215, 1, 1, "", "offset"], [215, 1, 1, "", "rg_Size"], [215, 1, 1, "", "secondHopPRB"], [215, 1, 1, "", "seqLength"], [215, 1, 1, "", "start_SymbIndex"], [215, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceDeMapperFormat1": [[218, 1, 1, "", "indexPUCCH"], [218, 1, 1, "", "interlaceIndex_0"], [218, 1, 1, "", "interlaceIndex_1"], [218, 1, 1, "", "maxNumPRBs"], [218, 1, 1, "", "numInterlacedRBs"], [218, 1, 1, "", "numOfInterlaces"], [218, 1, 1, "", "numRBs"], [218, 1, 1, "", "numberOfSymb"], [218, 1, 1, "", "offset"], [218, 1, 1, "", "rg_Size"], [218, 1, 1, "", "secondHopPRB"], [218, 1, 1, "", "seqLength"], [218, 1, 1, "", "start_SymbIndex"], [218, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceMapperCSIRS": [[228, 2, 1, "", "displayCDMPattern"], [228, 2, 1, "", "displayResourceGrid"]], "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH": [[229, 2, 1, "", "displayCDMPattern"], [229, 2, 1, "", "displayResourceGrid"]], "toolkit5G.ResourceMapping.ResourceMapperFormat0": [[216, 1, 1, "", "formatPUCCH"], [216, 1, 1, "", "indexPUCCH"], [216, 1, 1, "", "interlaceIndex_0"], [216, 1, 1, "", "interlaceIndex_1"], [216, 1, 1, "", "maxNumPRBs"], [216, 1, 1, "", "numInterlacedRBs"], [216, 1, 1, "", "numOfInterlaces"], [216, 1, 1, "", "numRBs"], [216, 1, 1, "", "numberOfSymb"], [216, 1, 1, "", "offset"], [216, 1, 1, "", "rg_Size"], [216, 1, 1, "", "secondHopPRB"], [216, 1, 1, "", "seqLength"], [216, 1, 1, "", "start_SymbIndex"], [216, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceMapperFormat1": [[219, 1, 1, "", "indexPUCCH"], [219, 1, 1, "", "interlaceIndex_0"], [219, 1, 1, "", "interlaceIndex_1"], [219, 1, 1, "", "maxNumPRBs"], [219, 1, 1, "", "numInterlacedRBs"], [219, 1, 1, "", "numOfInterlaces"], [219, 1, 1, "", "numRBs"], [219, 1, 1, "", "numberOfSymb"], [219, 1, 1, "", "offset"], [219, 1, 1, "", "rg_Size"], [219, 1, 1, "", "secondHopPRB"], [219, 1, 1, "", "seqLength"], [219, 1, 1, "", "start_SymbIndex"], [219, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.SSB_Grid": [[237, 2, 1, "", "displayGrid"], [237, 1, 1, "", "dmrsIndices"], [237, 1, 1, "", "pbchIndices"], [237, 1, 1, "", "pssIndices"], [237, 1, 1, "", "sssIndices"]], "toolkit5G.ResourceMapping.SSSB_Grid": [[235, 2, 1, "", "displayGrid"]], "toolkit5G.ResourceMapping.SpreadingFormat1": [[139, 1, 1, "", "SpreadingFactor"], [220, 1, 1, "", "indexPUCCH"], [220, 1, 1, "", "numRBs"], [220, 1, 1, "", "numberOfSymb"], [220, 1, 1, "", "start_SymbIndex"], [220, 1, 1, "", "timedomainOCC"]], "toolkit5G.Scheduler": [[280, 0, 1, "", "LinkAdaptation"], [278, 0, 1, "", "PDCCHScheduler"], [281, 0, 1, "", "RankAdaptation"], [279, 0, 1, "", "RoundRobinScheduler"]], "toolkit5G.Scheduler.LinkAdaptation": [[280, 2, 1, "", "selectMCS"]], "toolkit5G.Scheduler.RoundRobinScheduler": [[279, 1, 1, "", "firstAcrossTime"], [279, 1, 1, "", "numRB"], [279, 1, 1, "", "numSymbol"], [279, 1, 1, "", "numUEscheduledAcrossFreq"], [279, 1, 1, "", "numUEscheduledAcrossTime"]], "toolkit5G.Scrambler": [[240, 0, 1, "", "DeScrambler"], [241, 0, 1, "", "RNTImasking"], [242, 0, 1, "", "Scrambler"]], "toolkit5G.Scrambler.DeScrambler": [[240, 1, 1, "", "Lmax"], [240, 1, 1, "", "c_init"], [240, 1, 1, "", "id"], [240, 1, 1, "", "mu"], [240, 1, 1, "", "nID"], [240, 1, 1, "", "purpose"], [240, 1, 1, "", "q"], [240, 1, 1, "", "rnti"], [240, 1, 1, "", "ssbIndex"]], "toolkit5G.Scrambler.RNTImasking": [[241, 1, 1, "", "rnti"]], "toolkit5G.Scrambler.Scrambler": [[242, 1, 1, "", "Lmax"], [242, 1, 1, "", "c_init"], [242, 1, 1, "", "id"], [242, 1, 1, "", "mu"], [242, 1, 1, "", "nID"], [242, 1, 1, "", "purpose"], [242, 1, 1, "", "q"], [242, 1, 1, "", "rnti"], [242, 1, 1, "", "ssbIndex"]], "toolkit5G.SequenceGeneration": [[248, 0, 1, "", "CSIRS"], [249, 0, 1, "", "DMRS"], [244, 0, 1, "", "LowPAPRSequenceType1"], [245, 0, 1, "", "LowPAPRSequenceType2"], [250, 0, 1, "", "PNSequence"], [251, 0, 1, "", "PRS"], [252, 0, 1, "", "PSS"], [246, 0, 1, "", "PUCCHFormat0Sequence"], [247, 0, 1, "", "PUCCHFormat1Sequence"], [254, 0, 1, "", "SRS"], [255, 0, 1, "", "SSS"], [253, 0, 1, "", "S_PSS"], [256, 0, 1, "", "S_SSS"]], "toolkit5G.SequenceGeneration.LowPAPRSequenceType1": [[244, 1, 1, "", "baseSequenceNumber"], [244, 1, 1, "", "cyclicShift"], [244, 1, 1, "", "delta"], [244, 1, 1, "", "groupNumber"], [244, 1, 1, "", "lengthOfSequence"], [244, 1, 1, "", "numRBs"]], "toolkit5G.SequenceGeneration.LowPAPRSequenceType2": [[245, 1, 1, "", "cinit"], [245, 1, 1, "", "delta"], [245, 1, 1, "", "groupNumber"], [245, 1, 1, "", "groupNumber_Or_cinit"], [245, 1, 1, "", "lengthOfSequence"], [245, 1, 1, "", "numRBs"]], "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence": [[246, 1, 1, "", "controlInfo"], [246, 1, 1, "", "indexPUCCH"], [246, 1, 1, "", "initial_CyclicShift"], [246, 1, 1, "", "m_CS"], [246, 1, 1, "", "nID"], [246, 1, 1, "", "numBatches"], [246, 1, 1, "", "numInterlacedRBs"], [246, 1, 1, "", "numRBs"], [246, 1, 1, "", "numberOfSymb"], [246, 1, 1, "", "pucch_GroupHopping"], [246, 1, 1, "", "seqNumber"], [246, 1, 1, "", "slotNumber"], [246, 1, 1, "", "start_SymbIndex"]], "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence": [[247, 1, 1, "", "indexPUCCH"], [247, 1, 1, "", "initial_CyclicShift"], [247, 1, 1, "", "m_CS"], [247, 1, 1, "", "maxNumPRBs"], [247, 1, 1, "", "nHop"], [247, 1, 1, "", "nID"], [247, 1, 1, "", "numInterlacedRBs"], [247, 1, 1, "", "numRBs"], [247, 1, 1, "", "numberOfSymb"], [247, 1, 1, "", "pucch_GroupHopping"], [247, 1, 1, "", "slotNumber"], [247, 1, 1, "", "start_SymbIndex"]], "toolkit5G.SequenceGeneration.SRS": [[254, 1, 1, "", "lengthOfSequence"], [254, 1, 1, "", "nrOfCyclicShift"], [254, 1, 1, "", "nrofSymbols"], [254, 1, 1, "", "sequenceId"], [254, 1, 1, "", "slotIndex"], [254, 1, 1, "", "startPosition"], [254, 1, 1, "", "symbolIndices"], [254, 1, 1, "", "transmissionComb"]], "toolkit5G.SymbolMapping": [[258, 0, 1, "", "Demapper"], [259, 0, 1, "", "Mapper"]]}, "objtypes": {"0": "py:class", "1": "py:property", "2": "py:method"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "property", "Python property"], "2": ["py", "method", "Python method"]}, "titleterms": {"get": [0, 362], "start": [0, 362], "understand": 0, "api": [0, 1], "document": [0, 1, 358], "hello": 0, "world": 0, "import": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 331, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 362], "python": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 349, 350, 351, 362], "librari": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 356, 359, 360, 362], "how": [0, 358, 360], "5g": [0, 1, 12, 23, 33, 35, 37, 65, 84, 107, 127, 151, 161, 162, 168, 196, 198, 206, 234, 239, 260, 267, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 296, 301, 302, 303, 304, 305, 307, 308, 309, 310, 313, 314, 316, 317, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "toolkit": [0, 1, 284, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 344, 346, 348, 349, 350, 351, 356, 357, 358, 359, 360, 362], "creat": [0, 327, 328, 331, 357, 362], "object": [0, 362], "all": [0, 324], "modul": [0, 1, 33, 47, 70, 97, 113, 172, 289, 291, 301, 348], "gener": [0, 15, 18, 39, 40, 46, 132, 138, 235, 237, 243, 249, 285, 287, 289, 291, 294, 301, 302, 320, 322, 323, 324, 327, 328, 329, 330, 331, 332, 334, 338, 339, 340, 341, 342, 343, 344, 345, 348, 349, 351, 362], "payload": [0, 39, 40, 45, 46, 348, 362], "bit": [0, 11, 24, 27, 43, 44, 56, 57, 68, 69, 75, 76, 101, 102, 111, 112, 118, 119, 143, 144, 147, 152, 159, 207, 208, 210, 301, 362], "encod": [0, 4, 6, 10, 12, 55, 74, 96, 117, 142, 144, 146, 147, 362], "them": 0, "symbol": [0, 49, 72, 99, 115, 169, 174, 257, 269, 270, 271, 286, 291, 301, 335, 336, 348, 362], "map": [0, 49, 72, 99, 115, 130, 131, 136, 137, 169, 174, 215, 216, 218, 219, 226, 238, 257, 301, 335, 336, 348], "pass": [0, 324, 327, 328, 331, 334, 348, 349, 351], "through": [0, 324, 327, 328, 331, 334, 348, 349, 351], "awgn": [0, 315, 335, 362], "channel": [0, 10, 15, 16, 18, 20, 22, 26, 55, 56, 58, 74, 75, 77, 103, 104, 117, 118, 120, 142, 144, 145, 146, 147, 153, 158, 183, 184, 185, 186, 187, 188, 189, 190, 191, 211, 228, 229, 230, 232, 233, 234, 248, 249, 261, 269, 270, 271, 275, 276, 291, 302, 303, 311, 313, 315, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 334, 335, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 351, 362], "demap": [0, 301, 362], "detect": [0, 273, 274, 348, 362], "error": [0, 13, 301, 302, 315, 327, 328, 329, 330, 331, 332, 349, 362], "block": [0, 7, 11, 28, 39, 44, 46, 56, 59, 69, 75, 78, 92, 93, 94, 108, 112, 118, 121, 143, 144, 147, 148, 149, 151, 154, 158, 161, 212, 235, 237, 238, 301, 304, 305, 306, 307, 308, 309, 315, 336, 349, 362], "comput": [0, 9, 94, 309, 324, 331, 345, 348, 362], "rate": [0, 56, 75, 100, 102, 118, 151, 155, 156, 157, 159, 160, 161, 209, 213, 214, 301, 315, 336, 349], "constel": [0, 289, 291, 294, 315, 348, 362], "diagram": [0, 289, 291, 294, 348, 362], "tx": [0, 29, 289, 291, 315, 339, 346, 348], "rx": [0, 315, 339, 346, 348], "link": [0, 280, 320, 322, 323, 349, 351, 362], "level": [0, 305, 320, 322, 323, 349, 351, 362], "simul": [0, 19, 294, 301, 302, 304, 305, 306, 307, 308, 309, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 349, 350, 351, 362], "perform": [0, 10, 55, 74, 117, 142, 146, 291, 294, 301, 302, 315, 319, 320, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 348, 349, 350, 362], "resourc": [0, 130, 131, 136, 137, 215, 216, 218, 219, 226, 227, 238, 282, 294, 297, 324, 325, 327, 328, 334, 348], "script": 0, "tabl": [1, 2, 10, 23, 33, 39, 42, 46, 49, 51, 53, 55, 65, 67, 72, 74, 84, 99, 107, 110, 115, 117, 127, 142, 146, 162, 168, 171, 174, 196, 198, 234, 235, 237, 239, 243, 249, 259, 301, 326, 328, 331, 335, 350], "1": [1, 10, 23, 29, 33, 39, 46, 55, 65, 74, 84, 107, 117, 127, 133, 142, 144, 146, 147, 162, 168, 196, 198, 217, 218, 219, 220, 222, 234, 235, 237, 239, 243, 244, 247, 249, 274, 305, 323], "The": 1, "packag": 1, "support": [1, 29], "cyclic": [2, 41, 42, 50, 51, 53, 66, 67, 109, 110], "redund": [2, 41, 42, 50, 51, 53, 66, 67, 109, 110], "check": [2, 6, 41, 42, 50, 51, 53, 66, 67, 96, 109, 110, 336], "2": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 140, 141, 144, 147, 171, 174, 223, 243, 245, 259, 273, 305], "uplink": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 190, 191, 234, 243, 259, 276, 317, 329, 330, 332], "refer": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 228, 231, 243, 248, 249, 251, 254, 259, 261, 265, 301, 304, 305, 306, 307, 308, 309, 315, 327, 328, 331, 333, 348], "signal": [2, 22, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 228, 231, 235, 237, 238, 243, 252, 253, 255, 256, 259, 261, 265, 327, 328, 331, 348, 349], "its": [2, 10, 42, 49, 51, 53, 55, 67, 72, 74, 99, 110, 115, 117, 142, 146, 171, 174, 243, 259, 332], "util": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 243, 259], "crc": [3, 4, 362], "decod": [3, 5, 6, 10, 12, 34, 35, 55, 74, 86, 88, 96, 117, 142, 146, 291, 294, 308, 325, 348, 350, 362], "ham": [5, 315, 319], "coder": [5, 54, 57, 58, 59, 73, 76, 77, 78, 116, 119, 120, 121, 144, 145, 147, 152, 153, 154, 155, 158, 159, 160, 210, 211, 212, 213, 335, 336], "sphere": 5, "syndrom": 5, "base": [5, 192, 193, 194, 196, 197, 198, 199, 202, 203, 204, 285, 288, 289, 291, 294, 302, 311, 315, 321, 322, 323, 324, 327, 328, 329, 330, 331, 332, 350, 351], "low": [6, 96, 244, 245, 336], "densiti": [6, 96, 336], "pariti": [6, 96, 336], "code": [6, 7, 10, 11, 12, 29, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 144, 146, 147, 148, 149, 298, 312, 315, 319, 326, 335, 336], "ldpc": [6, 9, 96, 101, 102, 207, 208, 209, 312, 336], "codec": [6, 10, 55, 74, 96, 117, 142, 146], "subcompon": [6, 96], "codeblock": [7, 8, 92, 93], "process": [7, 8, 11, 20, 30, 44, 69, 90, 91, 108, 112, 143, 325, 348, 351], "receiv": [7, 11, 21, 44, 69, 90, 92, 93, 95, 108, 112, 143, 148, 149, 175, 181, 184, 185, 186, 188, 189, 277, 285, 288, 289, 291, 294, 324, 325, 334, 342, 343, 348, 349], "segreg": [7, 11, 44, 69, 92, 112, 143, 148], "aggreg": [7, 11, 44, 69, 93, 112, 143, 149, 305, 320, 348], "transmitt": [8, 11, 44, 69, 91, 92, 93, 95, 108, 112, 143, 148, 149, 176, 182, 184, 185, 186, 188, 189, 285, 287, 289, 291, 294, 315, 325, 327, 328, 331], "segment": [8, 11, 44, 69, 93, 112, 143, 149], "concaten": [8, 11, 44, 69, 92, 112, 143, 148], "paramet": [9, 18, 65, 84, 107, 127, 162, 168, 239, 249, 272, 285, 287, 288, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 315, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351], "polar": [10, 54, 55, 57, 58, 59, 73, 74, 76, 77, 78, 116, 117, 119, 120, 121, 142, 146, 152, 153, 154, 155, 158, 159, 160, 210, 211, 212, 213, 312, 335], "configur": [10, 55, 74, 117, 142, 146, 260, 261, 262, 263, 264, 265, 266, 267, 285, 287, 288, 289, 291, 294, 302, 329, 330, 332, 334, 335, 336, 349, 351], "differ": [10, 55, 74, 117, 142, 146, 302, 304, 305, 308, 309, 322, 323, 329, 336], "bioglio": [10, 55, 74, 117, 142, 146], "comparison": [10, 55, 74, 117, 142, 146, 302, 315, 333], "method": [10, 55, 74, 117, 142, 146, 192, 195, 202, 302, 327, 328, 329, 330, 331, 332], "compon": [10, 55, 74, 117, 142, 146, 150, 184, 185, 186, 188, 189, 235, 237], "input": [11, 27, 43, 44, 68, 69, 111, 112, 143, 301], "interleav": [11, 23, 24, 25, 26, 27, 28, 43, 44, 56, 58, 59, 68, 69, 75, 77, 78, 101, 111, 112, 118, 120, 121, 143, 153, 154, 158, 208, 211, 212], "deinterleav": [11, 24, 25, 27, 44, 69, 112, 143], "reed": [12, 144, 147, 312, 326], "muller": [12, 144, 147, 312, 326], "forward": 13, "correct": [13, 290], "antenna": [14, 338, 339, 340, 341, 342, 343, 344, 345, 346], "arrai": [14, 338, 339, 340, 341, 342, 343, 344, 345, 346], "element": 14, "3gpp_38_901": 14, "hertzian": 14, "dipol": 14, "linear": 14, "model": [16, 17, 315, 346, 347], "node": [17, 339, 342, 344], "mobil": [17, 339, 342, 343, 344], "random": [17, 187, 250], "walk": 17, "circular": [17, 19], "rout": [17, 343], "vehicl": 17, "drop": [17, 19], "highwai": 17, "layout": [19, 338, 339, 340, 341, 342, 343, 344, 345, 346], "b": [19, 287, 308, 343], "hexagon": [19, 338], "rectangular": 19, "ue": [19, 288, 302, 305, 307, 308, 309, 325, 327, 328, 329, 330, 331, 332, 342, 343], "hardwar": 20, "impair": 20, "add": [21, 324, 327, 328, 331, 334], "nois": [21, 324, 327, 328, 331, 334, 348], "cfo": [21, 268, 290], "appli": 22, "transmit": [22, 291, 294, 327, 328, 331, 334, 343, 348], "pbch": [25, 39, 45, 46, 52, 184, 262, 266, 269, 291, 294, 348, 349], "de": [26, 57, 58, 59, 76, 77, 78, 101, 102, 119, 120, 121, 130, 134, 136, 144, 147, 151, 152, 159, 161, 207, 208, 210, 211, 212, 215, 217, 218], "sub": [28, 56, 59, 75, 78, 118, 121, 154, 158, 212], "book": 29, "type": [29, 244, 245, 323, 334], "arrang": 29, "i": [29, 307, 334, 358], "singl": 29, "panel": 29, "assum": 29, "atleast": 29, "4": [29, 141, 178, 225, 243, 301, 305], "csi": [29, 228, 248, 261, 275, 334], "r": [29, 228, 248, 261, 275, 334], "port": 29, "multi": 29, "8": [29, 301, 305], "mimo": [30, 321, 322, 323], "orthogon": 31, "frequenc": [31, 267, 268, 288, 290, 324, 338, 339, 340, 341, 344, 349], "divis": 31, "multiplex": 31, "content": [31, 39, 46, 298, 301, 326, 328, 331, 335, 350, 358], "ofdm": [32, 33, 286, 289, 291, 324, 327, 328, 331, 333, 338, 339, 340, 341, 342, 343, 344, 346, 348, 349], "demodul": [32, 249, 291, 348], "posit": [33, 196, 197, 198, 199, 206, 231, 251, 276, 301, 302, 327, 328, 329, 330, 331, 332], "network": [33, 196, 198, 206, 285, 287, 288, 289, 290, 291, 292, 293, 294, 302, 310, 313, 321, 322, 323, 324, 325, 327, 328, 331, 332, 333, 349], "transform": [34, 35, 36, 37], "precod": [36, 37, 321, 322, 323, 334, 351], "downlink": [38, 103, 104, 185, 186, 229, 230, 233, 243, 275, 285, 287, 288, 289, 291, 292, 293, 294, 303, 316, 320, 321, 322, 323, 327, 328, 331, 334, 351], "control": [38, 185, 189, 190, 227, 230, 232, 234, 303, 320], "inform": [38, 39, 46, 144, 147, 228, 248, 261, 348, 350, 358], "dci": 38, "master": [39, 46], "mib": [39, 46, 324], "extract": [39, 46, 291, 294, 327, 328, 334], "demapp": [48, 60, 71, 79, 95, 98, 114, 122, 170, 173, 258, 326], "mapper": [49, 72, 95, 99, 115, 171, 174, 259, 326, 362], "scrambler": [52, 65, 84, 107, 127, 165, 168, 242], "match": [56, 75, 100, 102, 118, 151, 155, 156, 157, 159, 160, 161, 209, 213, 214], "select": [56, 57, 75, 76, 102, 118, 119, 152, 159, 207, 210, 309, 324, 327, 328, 331], "rnti": [61, 62, 80, 81, 123, 124, 164, 241], "mask": [61, 62, 80, 81, 123, 124, 164, 241], "scrambl": [63, 65, 82, 84, 105, 107, 125, 127, 162, 166, 168, 239], "pdcch": [63, 82, 125, 185, 230, 270, 278, 304, 305, 306, 307, 308, 309, 325], "descrambl": [64, 83, 106, 126, 163, 167, 240], "pdsch": [85, 86, 87, 88, 89, 105, 186, 263, 264, 271, 293, 294, 301, 351], "lower": [85, 86, 263], "physic": [85, 86, 87, 88, 103, 104, 175, 176, 183, 184, 185, 186, 187, 188, 189, 190, 191, 229, 230, 232, 233, 234, 263, 264, 303, 320, 349, 351], "layer": [85, 86, 87, 88, 95, 175, 176, 263, 264, 315], "chain": [85, 86, 87, 88, 89, 90, 91, 175, 176, 180, 181, 182], "upper": [87, 88, 175, 176, 264], "transport": [94, 108], "size": [94, 235, 237, 308, 309, 336], "share": [103, 104, 186, 191, 229, 233, 351], "dmr": [103, 104, 229, 249, 348], "pucch": [128, 133, 140, 150, 166, 175, 176, 177, 178, 179, 190, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 234, 246, 247, 350], "format": [128, 133, 140, 141, 177, 178, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 234, 246, 247, 350], "0": [128, 215, 216, 221, 246, 350, 358], "format0": 129, "sequenc": [132, 138, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 348], "spread": [134, 139, 217, 220, 345], "format1": 135, "3": [141, 177, 224, 358], "small": [144, 147, 151, 161], "length": [144, 147, 151, 161, 336], "other": [144, 147], "pusch": [180, 191], "broadcast": [184, 188, 349], "access": [187, 348], "prach": [187, 317], "sidelink": [188, 189, 232, 235, 243, 253, 256], "psbch": 188, "pscch": [189, 232], "dft": [192, 202, 333], "aoa": [192, 332, 345], "esprit": [193, 203], "doa": [193, 194, 196, 197], "estim": [193, 194, 195, 196, 197, 198, 199, 203, 204, 205, 206, 268, 269, 270, 271, 272, 275, 276, 290, 291, 302, 313, 327, 328, 329, 330, 331, 332, 334, 345, 348, 350], "music": [194, 204], "direct": [195, 332], "arriv": [195, 196, 205, 327, 328, 329, 332], "least": [196, 197, 198, 199], "squar": [196, 197, 198, 199], "angl": [196, 331], "od": 196, "departur": [196, 331], "gradient": [196, 198], "descent": [196, 198], "hybrid": [197, 314], "toa": [197, 199, 203, 204, 205, 302, 327, 328, 329, 330, 331, 332], "mrtt": [197, 199], "tdoa": [197, 198, 327, 329], "4g": 198, "newton": 198, "raphson": 198, "optim": 200, "algorithm": [200, 277], "time": [205, 267, 273, 285, 286, 287, 288, 289, 291, 294, 324, 327, 328, 329, 338, 339, 340, 341, 342, 343, 344, 349], "delai": [205, 339, 345, 346], "submodul": 206, "set": [227, 236, 325, 349], "state": [228, 248, 261], "pr": [231, 251], "ptr": 233, "nr": 234, "synchron": [235, 237, 238, 252, 253, 255, 256, 273, 285, 286, 287, 288, 289, 291, 292, 294, 316, 317, 348, 349], "ssb": [235, 237, 238, 262, 266, 272, 285, 287, 289, 291, 292, 294, 316, 324, 348, 349], "grid": [235, 237, 285, 287, 289, 291, 294, 324, 325, 327, 328, 331, 334, 348, 349], "search": [236, 325], "space": [236, 325], "papr": [244, 245, 333], "each": [249, 320, 326, 335, 339, 349], "pseudo": 250, "pn": 250, "primari": [252, 253, 348], "": [253, 256, 333], "pss": [253, 273, 285, 286, 287, 288, 289, 291, 294, 348], "sound": [254, 265], "sr": [254, 265, 276, 302, 329, 330, 332], "secondari": [255, 256, 348], "sss": [256, 274, 348], "carrier": [268, 290, 344], "offset": [268, 290], "equal": [269, 270, 271, 291, 348], "cell": [273, 274, 329, 348], "id": [273, 274, 348], "us": [275, 276, 284, 285, 286, 287, 288, 292, 293, 294, 316, 317, 324, 329, 330, 332, 334, 357], "schedul": [278, 279, 283, 304, 305, 306, 307, 308, 309], "round": 279, "robin": 279, "adapt": [280, 281], "rank": [281, 322, 323, 334], "alloc": 282, "research": 284, "work": 284, "carri": 284, "out": 284, "frame": [285, 287, 288], "some": [285, 287, 288], "basic": [285, 287, 288, 320, 329], "emul": [285, 287, 288, 289, 291], "construct": [285, 287, 348], "transmiss": [285, 287, 289, 291, 294, 324, 327, 328, 331, 348, 349], "domain": [285, 287, 338, 339, 340, 341, 344, 346], "sampl": [285, 287, 301], "sdr": [285, 287, 288, 289, 291, 294, 295], "setup": [285, 287, 288, 289, 291, 294, 319, 362], "rf": [285, 287, 288, 289, 291, 294], "recept": [285, 288, 289, 291, 294], "correl": [285, 288, 289, 291, 294], "visual": [285, 302, 324, 327, 328, 329, 330, 331, 332], "save": [285, 351], "run": 285, "side": [287, 288, 325, 348, 351], "implement": [287, 288, 289, 291, 294, 351], "spectrum": [291, 294, 339, 348], "verif": [291, 294], "data": [293, 294, 315], "commun": [293, 294], "relat": 294, "recours": 294, "kei": 294, "indic": 294, "integr": 295, "introductori": 296, "cours": 296, "standard": 296, "learn": [297, 301, 315], "licens": [298, 356, 359, 360], "trademark": 298, "sourc": 298, "tentet": 299, "list": 299, "featur": [299, 358], "In": 299, "progress": 299, "To": 299, "releas": [299, 361], "soon": 299, "next": 299, "quarter": 299, "befor": 299, "septemb": 299, "2023": 299, "march": 299, "2024": 299, "previou": 300, "version": 300, "databas": 301, "preprocess": 301, "postprocess": 301, "train": [301, 315], "valid": 301, "infer": 301, "from": [301, 315, 348], "llrnet": 301, "output": 301, "m": 301, "6": 301, "throughput": [301, 322, 323], "ber": [301, 319, 320, 322, 323, 336, 348, 350, 362], "framework": 301, "deploy": 301, "section": 301, "evalu": [301, 319, 326, 335, 336, 348, 349, 350, 362], "v": [301, 307, 319, 320, 322, 323, 331, 333, 336, 362], "snr": [301, 319, 320, 322, 323, 336, 349, 362], "db": 301, "16": [301, 305], "qam": 301, "64": 301, "256": 301, "bler": [301, 315, 319, 320, 322, 323, 349, 362], "10000": [301, 322, 323, 349, 351], "batch": [301, 320, 322, 323, 349, 351], "64000": 301, "complex": 301, "analysi": [301, 302, 304, 310, 327, 328, 329, 330, 331, 332, 333, 348], "conclus": [301, 319], "limit": 301, "between": 302, "millimet": [302, 327, 332, 340], "wave": [302, 327], "wireless": [302, 320, 322, 323, 324, 325, 327, 328, 329, 330, 331, 332, 338, 340, 341, 342, 344, 346, 348, 349, 351], "slot": [302, 329, 330, 332], "ul": [302, 329, 330, 332], "result": [302, 304, 322, 323, 336, 351], "averag": [302, 322, 323, 326, 333, 335, 336, 349, 351], "over": [302, 322, 323, 326, 335, 336, 349, 351], "2000": [302, 327, 328, 329, 330, 331], "probabl": [304, 305, 306, 307, 308, 309, 310, 345], "coverag": [304, 349], "condit": [304, 334], "good": 304, "scenario": [304, 343], "medium": 304, "extrem": 304, "plot": [304, 305, 306, 307, 308, 315, 326, 338, 340, 341, 342, 344, 350], "variat": [305, 306, 336, 342, 343], "al": 305, "impact": [305, 307, 308], "number": [305, 306, 307, 309, 334], "analyz": [306, 307, 308], "effect": 306, "candid": 306, "strategi": 307, "ii": 307, "capabl": 308, "case": 308, "coreset": [308, 309, 320, 325], "reduc": 308, "blind": [308, 325], "A": [308, 320, 322, 323, 325, 349], "minimum": 309, "given": 309, "target": 309, "numu": 309, "5": 309, "10": [309, 357, 360], "15": 309, "displai": [309, 325, 327, 328, 334, 342, 349, 362], "requir": [309, 356, 359, 360], "meet": 309, "blockag": 310, "redcap": 310, "devic": [310, 327], "interpol": [311, 327, 328], "srcnn": 311, "dncnn": 311, "compar": [312, 348], "studi": [312, 327, 328, 331, 342], "qualiti": [313, 327, 328], "beyond": [313, 314, 328, 331, 343], "automat": 314, "repeat": 314, "request": 314, "an": [315, 357], "phy": 315, "autoencod": 315, "step": 315, "test": 315, "normal": 315, "function": [315, 342], "defin": 315, "line": [315, 332, 345], "n": 315, "k": [315, 327, 328, 331, 345], "system": [316, 317, 348, 356, 357, 359, 360], "project": 318, "cdl": [320, 322, 323, 325, 349], "For": [320, 327, 328, 329, 330], "valu": [320, 349, 350], "reliabl": [320, 336], "20000": 320, "svd": [321, 322, 334, 351], "combin": [321, 322, 323, 348], "massiv": [321, 322, 323], "se": [322, 323], "codebook": 323, "p1": 324, "procedur": [324, 328, 331, 336, 360], "beam": [324, 331, 346], "manag": 324, "ati": 324, "power": [324, 333, 342, 343], "heatmap": [324, 339, 349], "rsrp": [324, 331], "station": 324, "topologi": 324, "65": 326, "dataset": [326, 335], "5000": 326, "point": [326, 335], "industri": 327, "iot": 327, "beamform": [327, 328, 331, 334, 348, 351], "locu": [327, 328, 332], "circl": [327, 328], "best": [327, 328, 331], "measur": [327, 328, 331], "geni": [327, 328, 331], "aid": [327, 328, 331], "further": [327, 328, 331, 342], "outdoor": [329, 338, 342, 345], "urban": 329, "micro": 329, "site": [329, 342], "indoor": [330, 332, 340, 341], "open": [330, 341], "offic": [330, 341], "rural": [331, 342], "macro": [331, 342], "terrain": [331, 338, 340, 341, 345], "window": [331, 357, 360], "index": 331, "aod": [331, 345], "dl": 331, "local": 332, "factori": [332, 340], "accuraci": 332, "1300": 332, "peak": [333, 348], "ratio": 333, "cp": 333, "aclr": 333, "100": [335, 336], "fix": 336, "follow": 336, "ar": 336, "tb": 336, "deploi": [338, 340], "geometri": 338, "coeffici": [338, 339, 340, 341, 342, 343, 344, 346], "magnitud": [338, 340, 341, 344], "respons": [338, 340, 341, 344], "spatial": 339, "consist": 339, "statist": 339, "realist": 339, "amplitud": 339, "subcarri": 339, "accross": 339, "One": 339, "phase": 339, "doppler": 339, "sparsiti": [339, 346], "dens": 340, "high": 340, "band": 340, "genar": 341, "user": 342, "connect": 342, "across": [342, 343], "anim": 342, "snapshot": 342, "dual": 343, "multipl": 344, "propag": 345, "characterist": 345, "rough": 345, "sight": 345, "path": 345, "loss": 345, "distribut": 345, "shadow": 345, "fade": 345, "rician": 345, "factor": 345, "charaterist": 345, "angular": 345, "azimuth": 345, "elev": 345, "demonstr": 346, "detail": [347, 357, 360], "tutori": [347, 352, 356, 359], "3gpp": 347, "initi": 348, "extern": 348, "libari": 348, "odfm": 348, "analog": 348, "addit": 348, "largest": 348, "reconstruct": 348, "extact": 348, "assist": 348, "libraier": 349, "m_c": 350, "mc": 350, "recevi": 351, "challeng": [353, 354], "Of": 353, "thi": [353, 355], "week": 353, "arxiv": 354, "ed": 354, "solut": 355, "month": 355, "problem": 355, "instal": [356, 357, 359, 360], "depend": [356, 359, 360], "miniconda": [356, 357, 359], "jupyt": [356, 357, 359], "notebook": [356, 357, 359], "final": [356, 357, 359], "confirm": [356, 357, 359], "activ": [356, 359, 360], "video": [356, 359], "ubuntu": [357, 360], "updat": 357, "11": [357, 360], "environ": 357, "conda": 357, "salient": 358, "technic": 358, "r24a": 358, "organ": 358, "look": 358, "help": 358, "more": 358, "20": 360, "04": 360, "22": 360, "note": 361}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Getting Started": [[0, "getting-started"]], "Understanding API Documentation": [[0, "understanding-api-documentation"]], "Hello World!": [[0, "hello-world"]], "Import Python Libraries": [[0, "import-python-libraries"], [294, "Import-Python-Libraries"], [301, "Import-Python-Libraries"], [302, "Import-Python-Libraries"], [304, "Import-Python-Libraries"], [322, "Import-Python-Libraries"], [322, "import-python-libraries-1"], [323, "Import-Python-Libraries"], [323, "import-python-libraries-1"], [333, "Import-Python-Libraries"], [334, "Import-Python-Libraries"], [334, "import-python-libraries-1"], [338, "Import-Python-Libraries"], [339, "Import-Python-Libraries"], [340, "Import-Python-Libraries"], [341, "Import-Python-Libraries"], [343, "Import-Python-Libraries"], [346, "Import-Python-Libraries"], [349, "Import-Python-Libraries"], [351, "Import-Python-Libraries"], [362, "Import-Python-Libraries"]], "How to import 5G Toolkit Libraries": [[0, "how-to-import-5g-toolkit-libraries"]], "Create Objects for all the Modules": [[0, "create-objects-for-all-the-modules"]], "Generate Payload bits and Encode them": [[0, "generate-payload-bits-and-encode-them"]], "Symbol Mapping the Encoded Bits": [[0, "symbol-mapping-the-encoded-bits"]], "Pass through AWGN Channel": [[0, "pass-through-awgn-channel"]], "Demapping the Symbols": [[0, "demapping-the-symbols"], [362, "Demapping-the-Symbols"]], "Detect Error in the Blocks": [[0, "detect-error-in-the-blocks"]], "Compute Bit and Block Error Rate": [[0, "compute-bit-and-block-error-rate"]], "Constellation Diagrams at the Tx and Rx": [[0, "constellation-diagrams-at-the-tx-and-rx"]], "Link Level Simulation": [[0, "link-level-simulation"], [362, "Link-Level-Simulation"]], "Bit/Block Error Rate Performance": [[0, "bit-block-error-rate-performance"]], "Resources and Scripts": [[0, "resources-and-scripts"]], "API Documentation": [[1, "api-documentation"]], "Table-1: The modules and packages supported by 5G Toolkit": [[1, "id1"]], "Cyclic Redundancy Check": [[2, "cyclic-redundancy-check"], [42, "cyclic-redundancy-check"], [51, "cyclic-redundancy-check"], [53, "cyclic-redundancy-check"], [67, "cyclic-redundancy-check"], [110, "cyclic-redundancy-check"]], "Table-2: Uplink Reference Signal and its utility": [[2, "id1"], [42, "id1"], [49, "id3"], [51, "id1"], [53, "id1"], [67, "id1"], [72, "id3"], [99, "id3"], [110, "id1"], [115, "id3"], [171, "id3"], [174, "id3"], [243, "id4"], [259, "id3"]], "CRC Decoder": [[3, "crc-decoder"]], "CRC Encoder": [[4, "crc-encoder"]], "Hamming Coder": [[5, "hamming-coder"]], "Hamming coder": [[5, "id1"]], "Hamming Decoder": [[5, "hamming-decoder"]], "Hamming Decoder - Sphere Decoding": [[5, "hamming-decoder-sphere-decoding"]], "Hamming Decoder - Syndrome Based Decoding": [[5, "hamming-decoder-syndrome-based-decoding"]], "Low Density Parity Check Codes": [[6, "low-density-parity-check-codes"], [96, "low-density-parity-check-codes"]], "LDPC Encoder": [[6, "ldpc-encoder"], [96, "ldpc-encoder"]], "LDPC Decoder": [[6, "ldpc-decoder"], [96, "ldpc-decoder"]], "LDPC Codec Subcomponents": [[6, "ldpc-codec-subcomponents"], [96, "ldpc-codec-subcomponents"]], "Codeblock Processing: Receiver": [[7, "codeblock-processing-receiver"]], "Code-block Segregation": [[7, "code-block-segregation"], [11, "code-block-segregation"], [44, "code-block-segregation"], [69, "code-block-segregation"], [112, "code-block-segregation"], [143, "code-block-segregation"]], "Codeblock Aggregation": [[7, "codeblock-aggregation"]], "Codeblock Processing: Transmitter": [[8, "codeblock-processing-transmitter"]], "Codeblock Segmentation": [[8, "codeblock-segmentation"]], "Codeblock Concatenation": [[8, "codeblock-concatenation"]], "LDPC Parameters Computation": [[9, "ldpc-parameters-computation"]], "Polar Codes": [[10, "polar-codes"], [55, "polar-codes"], [74, "polar-codes"], [117, "polar-codes"], [142, "polar-codes"], [146, "polar-codes"]], "Table-1: Polar codes and its configurations for different channels [Bioglio]": [[10, "id9"], [55, "id9"], [74, "id9"], [117, "id9"], [142, "id9"], [146, "id9"]], "Polar Encoder": [[10, "polar-encoder"], [55, "polar-encoder"], [74, "polar-encoder"], [117, "polar-encoder"], [142, "polar-encoder"], [146, "polar-encoder"]], "Polar Decoder": [[10, "polar-decoder"], [55, "polar-decoder"], [74, "polar-decoder"], [117, "polar-decoder"], [142, "polar-decoder"], [146, "polar-decoder"]], "Performance Comparison of Different Polar Decoding Methods.": [[10, "id10"], [55, "id10"], [74, "id10"], [117, "id10"], [142, "id10"], [146, "id10"]], "Polar Codec Components": [[10, "polar-codec-components"], [55, "polar-codec-components"], [74, "polar-codec-components"], [117, "polar-codec-components"], [142, "polar-codec-components"], [146, "polar-codec-components"]], "Code-block Processing: Transmitter": [[11, "code-block-processing-transmitter"], [44, "code-block-processing-transmitter"], [69, "code-block-processing-transmitter"], [112, "code-block-processing-transmitter"], [143, "code-block-processing-transmitter"]], "Code-block Segmentation": [[11, "code-block-segmentation"], [44, "code-block-segmentation"], [69, "code-block-segmentation"], [112, "code-block-segmentation"], [143, "code-block-segmentation"]], "Code-block Concatenation": [[11, "code-block-concatenation"], [44, "code-block-concatenation"], [69, "code-block-concatenation"], [112, "code-block-concatenation"], [143, "code-block-concatenation"]], "Code-block Processing: Receiver": [[11, "code-block-processing-receiver"], [44, "code-block-processing-receiver"], [69, "code-block-processing-receiver"], [112, "code-block-processing-receiver"], [143, "code-block-processing-receiver"]], "Code-block Aggregation": [[11, "code-block-aggregation"], [44, "code-block-aggregation"], [69, "code-block-aggregation"], [112, "code-block-aggregation"], [143, "code-block-aggregation"]], "Input Bit Interleavers": [[11, "input-bit-interleavers"], [44, "input-bit-interleavers"], [69, "input-bit-interleavers"], [112, "input-bit-interleavers"], [143, "input-bit-interleavers"]], "Input Bit Interleaver": [[11, "input-bit-interleaver"], [27, "input-bit-interleaver"], [27, "id1"], [43, "input-bit-interleaver"], [44, "input-bit-interleaver"], [68, "input-bit-interleaver"], [69, "input-bit-interleaver"], [111, "input-bit-interleaver"], [112, "input-bit-interleaver"], [143, "input-bit-interleaver"]], "Input Bit Deinterleaver": [[11, "input-bit-deinterleaver"], [44, "input-bit-deinterleaver"], [69, "input-bit-deinterleaver"], [112, "input-bit-deinterleaver"], [143, "input-bit-deinterleaver"]], "Reed Muller Codes": [[12, "reed-muller-codes"]], "Reed Muller Encoder 5G": [[12, "reed-muller-encoder-5g"]], "Reed Muller Decoder 5G": [[12, "reed-muller-decoder-5g"]], "Forward Error Correction": [[13, "forward-error-correction"]], "Antenna Array": [[14, "antenna-array"]], "Antenna Elements": [[14, "antenna-elements"]], "3GPP_38_901 Antenna Element": [[14, "gpp-38-901-antenna-element"]], "Hertzian Dipole Antenna Element": [[14, "hertzian-dipole-antenna-element"]], "Linear Dipole Antenna Element": [[14, "linear-dipole-antenna-element"]], "Channel Generator": [[15, "channel-generator"]], "Channel Models": [[16, "channel-models"]], "Node Mobility": [[17, "node-mobility"], [339, "Node-Mobility"], [342, "Node-Mobility"], [344, "Node-Mobility"]], "Mobility Models": [[17, "mobility-models"]], "Random-Walk": [[17, "random-walk"]], "Circular Route": [[17, "circular-route"]], "Vehicle Drops on HighWays": [[17, "vehicle-drops-on-highways"]], "Channel Parameter Generator": [[18, "channel-parameter-generator"]], "Simulation Layout": [[19, "simulation-layout"], [339, "Simulation-Layout"], [342, "Simulation-Layout"], [343, "Simulation-Layout"], [345, "Simulation-Layout"], [346, "Simulation-Layout"]], "BS Layouts": [[19, "bs-layouts"]], "Hexagonal Layout": [[19, "hexagonal-layout"]], "Rectangular Layout": [[19, "rectangular-layout"]], "UE Drops": [[19, "ue-drops"]], "Rectangular Drop": [[19, "rectangular-drop"]], "Circular Drop": [[19, "circular-drop"]], "Hexagonal Drop": [[19, "hexagonal-drop"]], "Channel Processing and Hardware Impairment": [[20, "channel-processing-and-hardware-impairment"]], "Add Noise and CFO at Receiver": [[21, "add-noise-and-cfo-at-receiver"]], "Apply Channel to Transmitted Signal": [[22, "apply-channel-to-transmitted-signal"]], "Interleavers": [[23, "interleavers"]], "Table-1: Interleavers in 5G": [[23, "id1"]], "Bit Interleavers": [[24, "bit-interleavers"]], "Bit Interleaver": [[24, "bit-interleaver"], [101, "bit-interleaver"], [208, "bit-interleaver"]], "Bit Deinterleaver": [[24, "bit-deinterleaver"]], "PBCH Interleaver": [[25, "pbch-interleaver"], [25, "id1"]], "PBCH DeInterleaver": [[25, "pbch-deinterleaver"]], "Channel Interleaver": [[26, "channel-interleaver"], [26, "id1"], [56, "channel-interleaver"], [58, "channel-interleaver"], [75, "channel-interleaver"], [77, "channel-interleaver"], [118, "channel-interleaver"], [120, "channel-interleaver"], [211, "channel-interleaver"]], "Channel De-interleaver": [[26, "channel-de-interleaver"], [58, "channel-de-interleaver"], [77, "channel-de-interleaver"], [120, "channel-de-interleaver"], [211, "channel-de-interleaver"]], "Input Bit DeInterleaver": [[27, "input-bit-deinterleaver"]], "Sub Block Interleaver": [[28, "sub-block-interleaver"], [28, "id1"], [28, "id4"], [56, "sub-block-interleaver"], [75, "sub-block-interleaver"], [118, "sub-block-interleaver"]], "Code-Books": [[29, "code-books"]], "Type-1 Code-Book": [[29, "type-1-code-book"]], "Arrangement of Type-I Single Panel assuming that Tx support atleast 4 CSI-RS ports.": [[29, "id3"]], "Arrangement of Type-I Multi Panel assuming that the Tx support atleast 8 CSI-RS ports": [[29, "id4"]], "MIMO Processing": [[30, "mimo-processing"]], "Orthogonal Frequency Division Multiplexing": [[31, "orthogonal-frequency-division-multiplexing"]], "Contents:": [[31, null], [358, null]], "OFDM: Demodulator": [[32, "ofdm-demodulator"]], "OFDM: Modulator": [[33, "ofdm-modulator"]], "Table-1: Positioning in 5G Networks": [[33, "id1"]], "Transform Decoding": [[34, "transform-decoding"]], "Transform Decoding for 5G": [[35, "transform-decoding-for-5g"]], "Transform Precoding": [[36, "transform-precoding"]], "Transform Precoding for 5G": [[37, "transform-precoding-for-5g"]], "Downlink Control Information (DCI)": [[38, "downlink-control-information-dci"]], "Master Information Block (MIB)": [[39, "master-information-block-mib"], [46, "master-information-block-mib"]], "Table-1: Content of PBCH Payload/MIB": [[39, "id1"], [46, "id1"]], "MIB Generation": [[39, "mib-generation"], [46, "mib-generation"]], "MIB Extraction": [[39, "mib-extraction"], [46, "mib-extraction"]], "Payload Generation": [[40, "payload-generation"]], "Cyclic Redundency Check": [[41, "cyclic-redundency-check"], [50, "cyclic-redundency-check"], [66, "cyclic-redundency-check"], [109, "cyclic-redundency-check"]], "PBCH Payload": [[45, "pbch-payload"]], "Modulation": [[47, "modulation"], [70, "modulation"], [97, "modulation"], [113, "modulation"], [172, "modulation"]], "Demapper": [[48, "demapper"], [60, "demapper"], [71, "demapper"], [79, "demapper"], [98, "demapper"], [114, "demapper"], [122, "demapper"], [170, "demapper"], [173, "demapper"], [258, "demapper"]], "Symbol Mapping": [[49, "symbol-mapping"], [72, "symbol-mapping"], [99, "symbol-mapping"], [115, "symbol-mapping"], [169, "symbol-mapping"], [174, "symbol-mapping"], [257, "symbol-mapping"]], "Mapper": [[49, "mapper"], [72, "mapper"], [99, "mapper"], [115, "mapper"], [171, "mapper"], [174, "mapper"], [259, "mapper"]], "PBCH Scrambler": [[52, "pbch-scrambler"]], "Polar Coder": [[54, "polar-coder"], [73, "polar-coder"], [116, "polar-coder"]], "Rate Matching": [[56, "rate-matching"], [75, "rate-matching"], [100, "rate-matching"], [118, "rate-matching"], [151, "rate-matching"], [157, "rate-matching"], [161, "rate-matching"]], "Bit Selection": [[56, "bit-selection"], [57, "bit-selection"], [75, "bit-selection"], [76, "bit-selection"], [102, "bit-selection"], [118, "bit-selection"], [119, "bit-selection"], [152, "bit-selection"], [159, "bit-selection"], [207, "bit-selection"], [210, "bit-selection"]], "Bit Selection for Polar Coder": [[57, "bit-selection-for-polar-coder"], [76, "bit-selection-for-polar-coder"], [119, "bit-selection-for-polar-coder"], [152, "bit-selection-for-polar-coder"], [159, "bit-selection-for-polar-coder"], [210, "bit-selection-for-polar-coder"]], "Bit De-selection": [[57, "bit-de-selection"], [76, "bit-de-selection"], [102, "bit-de-selection"], [119, "bit-de-selection"], [152, "bit-de-selection"], [159, "bit-de-selection"], [207, "bit-de-selection"], [210, "bit-de-selection"]], "Channel Interleaver for Polar Coder": [[58, "channel-interleaver-for-polar-coder"], [77, "channel-interleaver-for-polar-coder"], [120, "channel-interleaver-for-polar-coder"], [153, "channel-interleaver-for-polar-coder"], [158, "channel-interleaver-for-polar-coder"], [211, "channel-interleaver-for-polar-coder"]], "Sub Block Interleaver for Polar Coder": [[59, "sub-block-interleaver-for-polar-coder"], [78, "sub-block-interleaver-for-polar-coder"], [121, "sub-block-interleaver-for-polar-coder"], [154, "sub-block-interleaver-for-polar-coder"], [158, "sub-block-interleaver-for-polar-coder"], [212, "sub-block-interleaver-for-polar-coder"]], "Sub-block Interleaver": [[59, "sub-block-interleaver"], [78, "sub-block-interleaver"], [121, "sub-block-interleaver"], [212, "sub-block-interleaver"]], "Sub-block De-interleaver": [[59, "sub-block-de-interleaver"], [78, "sub-block-de-interleaver"], [121, "sub-block-de-interleaver"], [212, "sub-block-de-interleaver"]], "RNTI Masking": [[61, "rnti-masking"], [62, "rnti-masking"], [80, "rnti-masking"], [81, "rnti-masking"], [123, "rnti-masking"], [124, "rnti-masking"], [164, "rnti-masking"], [241, "rnti-masking"]], "Scrambling: PDCCH": [[63, "scrambling-pdcch"], [82, "scrambling-pdcch"], [125, "scrambling-pdcch"]], "Descrambler": [[64, "descrambler"], [83, "descrambler"], [106, "descrambler"], [126, "descrambler"], [163, "descrambler"], [167, "descrambler"], [240, "descrambler"]], "Scrambling": [[65, "scrambling"], [84, "scrambling"], [107, "scrambling"], [127, "scrambling"], [162, "scrambling"], [168, "scrambling"], [239, "scrambling"]], "Table-1: Scrambling and Scrambling parameters in 5G": [[65, "id4"], [84, "id4"], [107, "id4"], [127, "id4"], [162, "id1"], [168, "id4"], [239, "id1"]], "Scrambler": [[65, "scrambler"], [84, "scrambler"], [107, "scrambler"], [127, "scrambler"], [165, "scrambler"], [168, "scrambler"], [242, "scrambler"]], "PDSCH: Lower Physical layer Chain": [[85, "pdsch-lower-physical-layer-chain"]], "PDSCH: Lower Physical layer Chain Decoder": [[86, "pdsch-lower-physical-layer-chain-decoder"]], "PDSCH: Upper Physical layer Chain": [[87, "pdsch-upper-physical-layer-chain"]], "PDSCH: Upper Physical layer Chain Decoder": [[88, "pdsch-upper-physical-layer-chain-decoder"]], "PDSCH Chain": [[89, "pdsch-chain"]], "Receiver Processing": [[90, "receiver-processing"]], "Receiver": [[90, "receiver"]], "Receiver Chain": [[90, "receiver-chain"], [181, "receiver-chain"]], "Transmitter Processing": [[91, "transmitter-processing"]], "Transmitter": [[91, "transmitter"], [315, "Transmitter"]], "Transmitter Chain": [[91, "transmitter-chain"], [182, "transmitter-chain"]], "Code Block Concatenation": [[92, "code-block-concatenation"], [148, "code-block-concatenation"]], "Codeblock Concatenation: Transmitter": [[92, "codeblock-concatenation-transmitter"]], "Code-block Segregation: Receiver": [[92, "code-block-segregation-receiver"]], "Code Block Segmentation": [[93, "code-block-segmentation"], [149, "code-block-segmentation"]], "Codeblock Segmentation: Transmitter": [[93, "codeblock-segmentation-transmitter"]], "Code Block Aggregation: Receiver": [[93, "code-block-aggregation-receiver"], [149, "code-block-aggregation-receiver"]], "Transport Block Size Computation": [[94, "transport-block-size-computation"]], "Layer Mapper": [[95, "layer-mapper"]], "Layer Mapper: Transmitter": [[95, "layer-mapper-transmitter"]], "Layer Demapper: Receiver": [[95, "layer-demapper-receiver"]], "Bit Interleaver for LDPC": [[101, "bit-interleaver-for-ldpc"], [208, "bit-interleaver-for-ldpc"]], "Bit De-interleaver": [[101, "bit-de-interleaver"], [208, "bit-de-interleaver"]], "Rate matching for LDPC": [[102, "rate-matching-for-ldpc"], [209, "rate-matching-for-ldpc"]], "Bit Selection for LDPC": [[102, "bit-selection-for-ldpc"], [207, "bit-selection-for-ldpc"]], "Physical Downlink Shared Channel-DMRS": [[103, "physical-downlink-shared-channel-dmrs"], [104, "physical-downlink-shared-channel-dmrs"], [229, "physical-downlink-shared-channel-dmrs"]], "Scrambling: PDSCH": [[105, "scrambling-pdsch"]], "Transport Block Processing": [[108, "transport-block-processing"]], "Transport Block Processing: Transmitter": [[108, "transport-block-processing-transmitter"]], "Transport Block Processing: Receiver": [[108, "transport-block-processing-receiver"]], "PUCCH Format 0": [[128, "pucch-format-0"]], "Format0": [[129, "format0"]], "Resource De-Mapping": [[130, "resource-de-mapping"], [136, "resource-de-mapping"]], "Resource Mapping": [[131, "resource-mapping"], [137, "resource-mapping"], [226, "resource-mapping"]], "Sequence Generation": [[132, "sequence-generation"], [138, "sequence-generation"], [243, "sequence-generation"]], "PUCCH Format 1": [[133, "pucch-format-1"]], "De-Spreading": [[134, "de-spreading"]], "Format1": [[135, "format1"]], "Spreading": [[139, "spreading"]], "PUCCH Format 2": [[140, "pucch-format-2"]], "Format 2,3,4": [[141, "format-2-3-4"]], "Channel Coding of Small Block Length": [[144, "channel-coding-of-small-block-length"], [147, "channel-coding-of-small-block-length"]], "Encoding of 1-bit Information": [[144, "encoding-of-1-bit-information"], [147, "encoding-of-1-bit-information"]], "Encoding of 2-bit Information": [[144, "encoding-of-2-bit-information"], [147, "encoding-of-2-bit-information"]], "Encoding of other small block lengths (Reed Muller Coder)": [[144, "encoding-of-other-small-block-lengths-reed-muller-coder"], [147, "encoding-of-other-small-block-lengths-reed-muller-coder"]], "Channel De-Coding of Small Block Length": [[144, "channel-de-coding-of-small-block-length"], [147, "channel-de-coding-of-small-block-length"]], "Channel Coder": [[145, "channel-coder"]], "Code Block Concatenation: Transmitter": [[148, "code-block-concatenation-transmitter"]], "Code Block Segregation: Receiver": [[148, "code-block-segregation-receiver"]], "Code Block Segmentation: Transmitter": [[149, "code-block-segmentation-transmitter"]], "PUCCH Components": [[150, "pucch-components"]], "Rate matching for Small Block Length 5G": [[151, "rate-matching-for-small-block-length-5g"], [161, "rate-matching-for-small-block-length-5g"]], "De-Rate Matching": [[151, "de-rate-matching"], [161, "de-rate-matching"]], "Rate matching for Polar coder": [[155, "rate-matching-for-polar-coder"], [159, "rate-matching-for-polar-coder"], [213, "rate-matching-for-polar-coder"]], "Rate matching": [[156, "rate-matching"], [214, "rate-matching"]], "Rate Matching for Polar Coder": [[160, "rate-matching-for-polar-coder"]], "Scrambling: PUCCH": [[166, "scrambling-pucch"]], "PUCCH Receiver": [[175, "pucch-receiver"]], "PUCCH: Upper Physical Layer Chain": [[175, "pucch-upper-physical-layer-chain"], [176, "pucch-upper-physical-layer-chain"]], "PUCCH Transmitter": [[176, "pucch-transmitter"]], "PUCCH Format 3": [[177, "pucch-format-3"]], "PUCCH Format 4": [[178, "pucch-format-4"]], "PUCCH": [[179, "pucch"]], "PUSCH Chain": [[180, "pusch-chain"]], "Physical Channels": [[183, "physical-channels"]], "Physical Broadcast Channel (PBCH)": [[184, "physical-broadcast-channel-pbch"]], "PBCH Transmitter": [[184, "pbch-transmitter"]], "PBCH Receiver": [[184, "pbch-receiver"], [294, "PBCH-Receiver"]], "PBCH Components": [[184, "pbch-components"]], "Physical Downlink Control Channel (PDCCH)": [[185, "physical-downlink-control-channel-pdcch"], [230, "physical-downlink-control-channel-pdcch"]], "PDCCH Transmitter": [[185, "pdcch-transmitter"]], "PDCCH Receiver": [[185, "pdcch-receiver"]], "PDCCH Components": [[185, "pdcch-components"]], "Physical Downlink Shared Channel (PDSCH)": [[186, "physical-downlink-shared-channel-pdsch"]], "PDSCH Transmitter": [[186, "pdsch-transmitter"]], "PDSCH Receiver": [[186, "pdsch-receiver"], [294, "PDSCH-Receiver"]], "PDSCH Components": [[186, "pdsch-components"]], "Physical Random Access Channel (PRACH)": [[187, "physical-random-access-channel-prach"]], "Physical Sidelink Broadcast Channel (PSBCH)": [[188, "physical-sidelink-broadcast-channel-psbch"]], "PSBCH Transmitter": [[188, "psbch-transmitter"]], "PSBCH Receiver": [[188, "psbch-receiver"]], "PSBCH Components": [[188, "psbch-components"]], "Physical Sidelink Control Channel (PSCCH)": [[189, "physical-sidelink-control-channel-pscch"], [232, "physical-sidelink-control-channel-pscch"]], "PSCCH Transmitter": [[189, "pscch-transmitter"]], "PSCCH Receiver": [[189, "pscch-receiver"]], "PSCCH Components": [[189, "pscch-components"]], "Physical Uplink Control Channel (PUCCH)": [[190, "physical-uplink-control-channel-pucch"], [234, "physical-uplink-control-channel-pucch"]], "Physical Uplink Shared Channel (PUSCH)": [[191, "physical-uplink-shared-channel-pusch"]], "DFT based AoA Method": [[192, "dft-based-aoa-method"]], "ESPRIT based DoA Estimation": [[193, "esprit-based-doa-estimation"]], "MUSIC based DoA Estimation": [[194, "music-based-doa-estimation"]], "Direction of Arrival Estimation": [[195, "direction-of-arrival-estimation"]], "Direction of Arrival Estimation Methods": [[195, "id1"]], "Least Squares based Position Estimator for DoA": [[196, "least-squares-based-position-estimator-for-doa"]], "Table-1: Angle od Departure and Arrival based Positioning in 5G Networks": [[196, "id4"]], "Gradient Descent based Position Estimator for DoA": [[196, "gradient-descent-based-position-estimator-for-doa"]], "Least Square based Position Estimator for Hybrid ToA/mRTT and DoA": [[197, "least-square-based-position-estimator-for-hybrid-toa-mrtt-and-doa"]], "Least Square based Position Estimator for Hybrid TDoA and DoA": [[197, "least-square-based-position-estimator-for-hybrid-tdoa-and-doa"]], "Least Squares based Position Estimator for TDoA": [[198, "least-squares-based-position-estimator-for-tdoa"]], "Table-1: TDoA in 4G and 5G Networks": [[198, "id6"]], "Gradient Descent based Position Estimator for TDoA": [[198, "gradient-descent-based-position-estimator-for-tdoa"]], "Newton Raphson based Position Estimator for TDoA": [[198, "newton-raphson-based-position-estimator-for-tdoa"]], "Least Squares based Position Estimator for ToA/mRTT": [[199, "least-squares-based-position-estimator-for-toa-mrtt"]], "Optimization Algorithms": [[200, "optimization-algorithms"]], "DFT based Method": [[202, "dft-based-method"]], "ESPRIT based ToA Estimation": [[203, "esprit-based-toa-estimation"]], "MUSIC based ToA Estimation": [[204, "music-based-toa-estimation"]], "Time of Arrival (ToA)/Delay Estimation": [[205, "time-of-arrival-toa-delay-estimation"]], "Position Estimation": [[206, "position-estimation"], [206, "id1"]], "Positioning in 5G Networks": [[206, "id2"]], "Submodules": [[206, "submodules"]], "PUCCH Format 0 Resource De-Mapping": [[215, "pucch-format-0-resource-de-mapping"]], "PUCCH Format 0 Resource Mapping": [[216, "pucch-format-0-resource-mapping"]], "PUCCH Format-1 De-Spreading": [[217, "pucch-format-1-de-spreading"]], "PUCCH Format-1 Resource De-Mapping": [[218, "pucch-format-1-resource-de-mapping"]], "PUCCH Format-1 Resource Mapping": [[219, "pucch-format-1-resource-mapping"]], "PUCCH Format-1 Spreading": [[220, "pucch-format-1-spreading"]], "PUCCH Format-0": [[221, "pucch-format-0"]], "PUCCH Format-1": [[222, "pucch-format-1"]], "PUCCH Format-2": [[223, "pucch-format-2"]], "PUCCH Format-3": [[224, "pucch-format-3"]], "PUCCH Format-4": [[225, "pucch-format-4"]], "Control Resource Set": [[227, "control-resource-set"]], "Channel state Information reference signal (CSI-RS)": [[228, "channel-state-information-reference-signal-csi-rs"]], "Positioning Reference Signal (PRS)": [[231, "positioning-reference-signal-prs"]], "Physical Downlink Shared Channel-PTRS": [[233, "physical-downlink-shared-channel-ptrs"]], "Table-1: PUCCH Format in 5G-NR": [[234, "id1"]], "Sidelink Synchronization Signal Block (SSB) Grid Generation": [[235, "sidelink-synchronization-signal-block-ssb-grid-generation"]], "Table-1: Sizes of the components of SSBs": [[235, "id1"], [237, "id2"]], "Search Space Set": [[236, "search-space-set"]], "Synchronization Signal Block (SSB) Grid Generation": [[237, "synchronization-signal-block-ssb-grid-generation"]], "Synchronization Signal Block (SSB) Resource Mapping": [[238, "synchronization-signal-block-ssb-resource-mapping"]], "Table-1: Downlink Reference Signal and its utility": [[243, "id3"]], "Table-4: Sidelink Reference Signal and its utility": [[243, "id5"]], "Low PAPR Sequence Type 1": [[244, "low-papr-sequence-type-1"]], "Low PAPR Sequence Type 2": [[245, "low-papr-sequence-type-2"]], "PUCCH Format 0 Sequence": [[246, "pucch-format-0-sequence"]], "PUCCH Format 1 Sequence": [[247, "pucch-format-1-sequence"]], "Channel State Information Reference Sequence (CSI-RS)": [[248, "channel-state-information-reference-sequence-csi-rs"]], "Demodulation Reference Sequence (DMRS)": [[249, "demodulation-reference-sequence-dmrs"]], "Table-1: Parameters for generating DMRS for each channel.": [[249, "id3"]], "Pseudo Random (PN) Sequence": [[250, "pseudo-random-pn-sequence"]], "Positioning Reference Sequence (PRS)": [[251, "positioning-reference-sequence-prs"]], "Primary Synchronization Signal": [[252, "primary-synchronization-signal"]], "Primary Synchronization Signal for Sidelink (S-PSS)": [[253, "primary-synchronization-signal-for-sidelink-s-pss"]], "Sounding Reference Sequence (SRS)": [[254, "sounding-reference-sequence-srs"]], "Secondary Synchronization Signal": [[255, "secondary-synchronization-signal"]], "Secondary Synchronization Signal for Sidelink (S-SSS)": [[256, "secondary-synchronization-signal-for-sidelink-s-sss"]], "5G Configurations": [[260, "g-configurations"]], "Channel state information reference signal (CSI-RS) Configurations": [[261, "channel-state-information-reference-signal-csi-rs-configurations"]], "SSB/PBCH Configurations": [[262, "ssb-pbch-configurations"], [266, "ssb-pbch-configurations"]], "PDSCH Lower Physical Layer Configurations": [[263, "pdsch-lower-physical-layer-configurations"]], "PDSCH Upper Physical Layer Configurations": [[264, "pdsch-upper-physical-layer-configurations"]], "Sounding Reference Signal (SRS) Configurations": [[265, "sounding-reference-signal-srs-configurations"]], "Time-Frequency 5G-Configurations": [[267, "time-frequency-5g-configurations"]], "Carrier Frequency Offset (CFO) Estimation": [[268, "carrier-frequency-offset-cfo-estimation"]], "Channel Estimation and Symbol Equalization for PBCH": [[269, "channel-estimation-and-symbol-equalization-for-pbch"]], "Channel Estimation and Symbol Equalization for PDCCH": [[270, "channel-estimation-and-symbol-equalization-for-pdcch"]], "Channel Estimation and Symbol Equalization for PDSCH": [[271, "channel-estimation-and-symbol-equalization-for-pdsch"]], "SSB Parameters Estimation": [[272, "ssb-parameters-estimation"]], "Time Synchronization and PSS/Cell ID-2 Detection": [[273, "time-synchronization-and-pss-cell-id-2-detection"]], "SSS/Cell ID-1 Detection": [[274, "sss-cell-id-1-detection"]], "Downlink Channel Estimation using CSI-RS": [[275, "downlink-channel-estimation-using-csi-rs"], [334, "Downlink-Channel-Estimation-using-CSI-RS"]], "Uplink Channel Estimation using SRS for Positioning": [[276, "uplink-channel-estimation-using-srs-for-positioning"]], "Receiver Algorithms": [[277, "receiver-algorithms"]], "PDCCH Scheduler": [[278, "pdcch-scheduler"]], "Round Robin Scheduler": [[279, "round-robin-scheduler"]], "Link Adaptation": [[280, "link-adaptation"]], "Rank Adaptation": [[281, "rank-adaptation"]], "Resource Allocation": [[282, "resource-allocation"]], "Scheduler": [[283, "scheduler"]], "Research work carried out using 5G Toolkit": [[284, "research-work-carried-out-using-5g-toolkit"]], "Downlink Time/Frame Synchronization using PSS in 5G Networks": [[285, "Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "Import Libraries": [[285, "Import-Libraries"], [287, "Import-Libraries"], [288, "Import-Libraries"], [289, "Import-Libraries"], [291, "Import-Libraries"], [301, "Import-Libraries"], [301, "id1"], [302, "Import-Libraries"], [319, "Import-Libraries"], [320, "Import-Libraries"], [325, "Import-Libraries"], [326, "Import-Libraries"], [327, "Import-Libraries"], [328, "Import-Libraries"], [329, "Import-Libraries"], [331, "Import-Libraries"], [333, "Import-Libraries"], [336, "Import-Libraries"], [338, "Import-Libraries"], [339, "Import-Libraries"], [340, "Import-Libraries"], [341, "Import-Libraries"], [342, "Import-Libraries"], [343, "Import-Libraries"], [344, "Import-Libraries"], [346, "Import-Libraries"], [348, "Import-Libraries"], [349, "Import-Libraries"], [350, "import-libraries"]], "Import Some Basic Python Libraries": [[285, "Import-Some-Basic-Python-Libraries"], [287, "Import-Some-Basic-Python-Libraries"], [288, "Import-Some-Basic-Python-Libraries"]], "Import 5G Libraries": [[285, "Import-5G-Libraries"], [287, "Import-5G-Libraries"], [288, "Import-5G-Libraries"], [343, "Import-5G-Libraries"]], "Emulation Parameters": [[285, "Emulation-Parameters"], [287, "Emulation-Parameters"], [288, "Emulation-Parameters"]], "Generate SSB Parameters": [[285, "Generate-SSB-Parameters"], [287, "Generate-SSB-Parameters"]], "Construct Transmission Grid and Generate Time Domain Samples": [[285, "Construct-Transmission-Grid-and-Generate-Time-Domain-Samples"], [287, "Construct-Transmission-Grid-and-Generate-Time-Domain-Samples"]], "SDR-Setup Configurations": [[285, "SDR-Setup-Configurations"], [287, "SDR-Setup-Configurations"], [288, "SDR-Setup-Configurations"], [289, "SDR-Setup-Configurations"], [291, "SDR-Setup-Configurations"], [294, "SDR-Setup-Configurations"]], "Transmission: SDR RF Transmitter": [[285, "Transmission:-SDR-RF-Transmitter"], [287, "Transmission:-SDR-RF-Transmitter"], [289, "Transmission:-SDR-RF-Transmitter"], [291, "Transmission:-SDR-RF-Transmitter"], [294, "Transmission:-SDR-RF-Transmitter"]], "Reception: SDR RF Receiver": [[285, "Reception:-SDR-RF-Receiver"], [288, "Reception:-SDR-RF-Receiver"], [289, "Reception:-SDR-RF-Receiver"], [291, "Reception:-SDR-RF-Receiver"], [294, "Reception:-SDR-RF-Receiver"]], "Time Synchronization: Based on PSS Correlation": [[285, "Time-Synchronization:-Based-on-PSS-Correlation"], [288, "Time-Synchronization:-Based-on-PSS-Correlation"], [289, "Time-Synchronization:-Based-on-PSS-Correlation"], [291, "Time-Synchronization:-Based-on-PSS-Correlation"], [294, "Time-Synchronization:-Based-on-PSS-Correlation"]], "Frame Synchronization: Visualization": [[285, "Frame-Synchronization:-Visualization"]], "Saving Running frames": [[285, "Saving-Running-frames"]], "Time/OFDM Symbol Synchronization using PSS in 5G": [[286, "time-ofdm-symbol-synchronization-using-pss-in-5g"]], "[BS Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks": [[287, "[BS-Side-Implementation]-Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "[UE Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks": [[288, "[UE-Side-Implementation]-Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "Time Frequency Configurations": [[288, "Time-Frequency-Configurations"]], "Downlink Synchronization in 5G Networks: SSB": [[289, "Downlink-Synchronization-in-5G-Networks:-SSB"], [291, "Downlink-Synchronization-in-5G-Networks:-SSB"]], "Import Python and SDR Libraries": [[289, "Import-Python-and-SDR-Libraries"], [291, "Import-Python-and-SDR-Libraries"]], "Import 5G Toolkit Libraries": [[289, "Import-5G-Toolkit-Libraries"], [291, "Import-5G-Toolkit-Libraries"], [302, "Import-5G-Toolkit-Libraries"], [304, "Import-5G-Toolkit-Libraries"], [329, "Import-5G-Toolkit-Libraries"], [338, "Import-5G-Toolkit-Libraries"], [340, "Import-5G-Toolkit-Libraries"], [341, "Import-5G-Toolkit-Libraries"], [362, "Import-5G-Toolkit-Libraries"]], "Emulation Configurations": [[289, "Emulation-Configurations"], [291, "Emulation-Configurations"]], "Transmitter Implementation": [[289, "Transmitter-Implementation"], [291, "Transmitter-Implementation"]], "Generate the SSB Grid for synchronization": [[289, "Generate-the-SSB-Grid-for-synchronization"], [291, "Generate-the-SSB-Grid-for-synchronization"]], "Constellation Diagram": [[289, "Constellation-Diagram"], [291, "Constellation-Diagram"], [294, "Constellation-Diagram"], [362, "Constellation-Diagram"]], "OFDM Modulation: Tx": [[289, "OFDM-Modulation:-Tx"], [291, "OFDM-Modulation:-Tx"]], "Receiver Implementation": [[289, "Receiver-Implementation"], [291, "Receiver-Implementation"]], "Carrier Frequency Offset (CFO) Estimation and Correction in 5G Networks": [[290, "carrier-frequency-offset-cfo-estimation-and-correction-in-5g-networks"]], "OFDM Demodulation and SSB Extraction": [[291, "OFDM-Demodulation-and-SSB-Extraction"]], "SSB Grid: Transmitter and Receiver": [[291, "SSB-Grid:-Transmitter-and-Receiver"], [294, "SSB-Grid:-Transmitter-and-Receiver"]], "Spectrum: Transmitted Grid and Received Grid": [[291, "Spectrum:-Transmitted-Grid-and-Received-Grid"], [294, "Spectrum:-Transmitted-Grid-and-Received-Grid"]], "Parameter Estimation for SSB and PBCH": [[291, "Parameter-Estimation-for-SSB-and-PBCH"]], "Channel Estimation and PBCH Symbol Equalization": [[291, "Channel-Estimation-and-PBCH-Symbol-Equalization"], [348, "Channel-Estimation-and-PBCH-Symbol-Equalization"]], "PBCH Decoding and Constellation": [[291, "PBCH-Decoding-and-Constellation"], [294, "PBCH-Decoding-and-Constellation"]], "Performance Verification": [[291, "Performance-Verification"], [294, "Performance-Verification"]], "Downlink Synchronization using SSB in 5G Networks": [[292, "downlink-synchronization-using-ssb-in-5g-networks"]], "Downlink Data Communication using PDSCH in 5G Networks": [[293, "downlink-data-communication-using-pdsch-in-5g-networks"]], "Downlink Data Communication in 5G Networks": [[294, "Downlink-Data-Communication-in-5G-Networks"]], "5G Toolkit Libraries": [[294, "5G-Toolkit-Libraries"], [319, "5G-Toolkit-Libraries"], [325, "5G-Toolkit-Libraries"], [326, "5G-Toolkit-Libraries"], [327, "5G-Toolkit-Libraries"], [328, "5G-Toolkit-Libraries"], [330, "5G-Toolkit-Libraries"], [331, "5G-Toolkit-Libraries"], [332, "5G-Toolkit-Libraries"], [336, "5G-Toolkit-Libraries"], [342, "5G-Toolkit-Libraries"], [344, "5G-Toolkit-Libraries"]], "Simulation Parameters": [[294, "Simulation-Parameters"], [301, "Simulation-Parameters"], [302, "Simulation-Parameters"], [304, "Simulation-Parameters"], [305, "Simulation-Parameters"], [306, "Simulation-Parameters"], [307, "Simulation-Parameters"], [308, "Simulation-Parameters"], [309, "Simulation-Parameters"], [320, "Simulation-Parameters"], [322, "Simulation-Parameters"], [323, "Simulation-Parameters"], [324, "Simulation-Parameters"], [325, "Simulation-Parameters"], [326, "Simulation-Parameters"], [327, "Simulation-Parameters"], [328, "Simulation-Parameters"], [329, "Simulation-Parameters"], [330, "Simulation-Parameters"], [331, "Simulation-Parameters"], [332, "Simulation-Parameters"], [333, "Simulation-Parameters"], [334, "Simulation-Parameters"], [338, "Simulation-Parameters"], [339, "Simulation-Parameters"], [340, "Simulation-Parameters"], [341, "Simulation-Parameters"], [342, "Simulation-Parameters"], [343, "Simulation-Parameters"], [344, "Simulation-Parameters"], [345, "Simulation-Parameters"], [346, "Simulation-Parameters"], [349, "Simulation-Parameters"], [350, "simulation-parameters"], [351, "Simulation-Parameters"]], "PDSCH Transmitter Implementation": [[294, "PDSCH-Transmitter-Implementation"]], "Generate the PDSCH related parameters: Use PDSCH Configurations": [[294, "Generate-the-PDSCH-related-parameters:-Use-PDSCH-Configurations"]], "Generate the PDSCH Resource Grid": [[294, "Generate-the-PDSCH-Resource-Grid"]], "SSB Transmitter Implementation": [[294, "SSB-Transmitter-Implementation"]], "Generate the SSB Resource Grid": [[294, "Generate-the-SSB-Resource-Grid"]], "Receiver Implementation: SSB": [[294, "Receiver-Implementation:-SSB"]], "PDSCH Recourse Implementation": [[294, "PDSCH-Recourse-Implementation"]], "Extract PDSCH Resource Grid": [[294, "Extract-PDSCH-Resource-Grid"]], "Key Performance Indicators": [[294, "Key-Performance-Indicators"]], "Integration with SDRs": [[295, "integration-with-sdrs"]], "Introductory Course on 5G Standards": [[296, "introductory-course-on-5g-standards"]], "Learning Resources": [[297, "learning-resources"]], "License": [[298, "license"]], "Trademarks": [[298, "trademarks"]], "Source Code": [[298, "source-code"]], "Content": [[298, "content"]], "Tentetive list of Feature": [[299, "tentetive-list-of-feature"]], "In Progress (To be Released soon):": [[299, "in-progress-to-be-released-soon"]], "Next Quarter": [[299, "next-quarter"]], "Before September 2023": [[299, "before-september-2023"]], "Before March 2024": [[299, "before-march-2024"]], "Previous Versions": [[300, "previous-versions"]], "Learning to Demap: Database Generation, Preprocessing, Postprocessing, Training, Validation and Inferences from the LLRNet": [[301, "Learning-to-Demap:-Database-Generation,-Preprocessing,-Postprocessing,-Training,-Validation-and-Inferences-from-the-LLRNet"]], "Table of Contents": [[301, "Table-of-Contents"], [350, "table-of-contents"]], "Import 5G Toolkit Modules": [[301, "Import-5G-Toolkit-Modules"]], "Learning to Demap the Symbols": [[301, "Learning-to-Demap-the-Symbols"]], "Input Output Mapping for M = 4": [[301, "Input-Output-Mapping-for-M-=-4"]], "Input Output Mapping for M = 6": [[301, "Input-Output-Mapping-for-M-=-6"]], "Input Output Mapping for M = 8": [[301, "Input-Output-Mapping-for-M-=-8"]], "Throughput and BER Performance of LLRnet": [[301, "Throughput-and-BER-Performance-of-LLRnet"]], "PDSCH Parameters": [[301, "PDSCH-Parameters"]], "LLRnet Parameters": [[301, "LLRnet-Parameters"]], "Training Framework": [[301, "Training-Framework"]], "Deployment Framework": [[301, "Deployment-Framework"]], "Simulation Section": [[301, "Simulation-Section"]], "Performance Evaluation": [[301, "Performance-Evaluation"], [326, "Performance-Evaluation"], [350, "performance-evaluation"]], "Throughput vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Throughput-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Bit Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Bit-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Block Error Rate (BLER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Block-Error-Rate-(BLER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Performance Evaluation: 10000 batches and 64000 training samples for LLRNet": [[301, "Performance-Evaluation:-10000-batches-and-64000-training-samples-for-LLRNet"]], "Throughput vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Throughput-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Bit Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Bit-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Block Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Block-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Complexity Analysis": [[301, "Complexity-Analysis"]], "Conclusion": [[301, "Conclusion"]], "Positives of the LLRnet:": [[301, "Positives-of-the-LLRnet:"]], "Limitations of the LLRnet:": [[301, "Limitations-of-the-LLRnet:"]], "References:": [[301, "References:"]], "Performance comparison between different Positioning Methods for millimeter wave 5G Networks": [[302, "Performance-comparison-between-different-Positioning-Methods-for-millimeter-wave-5G-Networks"]], "Generate Wireless Channels": [[302, "Generate-Wireless-Channels"], [329, "Generate-Wireless-Channels"], [330, "Generate-Wireless-Channels"], [332, "Generate-Wireless-Channels"]], "SRS Configurations": [[302, "SRS-Configurations"], [329, "SRS-Configurations"], [330, "SRS-Configurations"], [332, "SRS-Configurations"]], "Slot by Slot Simulation": [[302, "Slot-by-Slot-Simulation"], [329, "Slot-by-Slot-Simulation"], [330, "Slot-by-Slot-Simulation"], [332, "Slot-by-Slot-Simulation"]], "Position Estimation: Based on UL-ToA": [[302, "Position-Estimation:-Based-on-UL-ToA"], [329, "Position-Estimation:-Based-on-UL-ToA"], [330, "Position-Estimation:-Based-on-UL-ToA"], [332, "Position-Estimation:-Based-on-UL-ToA"]], "Visualization of Estimated Position": [[302, "Visualization-of-Estimated-Position"], [329, "Visualization-of-Estimated-Position"], [330, "Visualization-of-Estimated-Position"]], "Performance Analysis of Positioning Error for ToA based method": [[302, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [327, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [328, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [329, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [331, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"]], "Positioning Results Averaged over 2000 UEs": [[302, "Positioning-Results-Averaged-over-2000-UEs"]], "Physical downlink control Channel in 5G": [[303, "physical-downlink-control-channel-in-5g"]], "Analysis of Blocking Probability for different Coverage Conditions": [[304, "Analysis-of-Blocking-Probability-for-different-Coverage-Conditions"]], "PDCCH Scheduling Parameters": [[304, "PDCCH-Scheduling-Parameters"], [305, "PDCCH-Scheduling-Parameters"], [306, "PDCCH-Scheduling-Parameters"], [307, "PDCCH-Scheduling-Parameters"], [308, "PDCCH-Scheduling-Parameters"], [309, "PDCCH-Scheduling-Parameters"]], "PDCCH Scheduling for Good Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Good-Coverage-Scenarios"]], "PDCCH Scheduling for Medium Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Medium-Coverage-Scenarios"]], "PDCCH Scheduling for Extreme Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Extreme-Coverage-Scenarios"]], "Plotting the results": [[304, "Plotting-the-results"]], "References": [[304, "References"], [305, "References"], [306, "References"], [307, "References"], [308, "References"], [309, "References"], [315, "References"], [333, "References"]], "Variation in Blocking Probability with Different Aggregation Levels (ALs)": [[305, "Variation-in-Blocking-Probability-with-Different-Aggregation-Levels-(ALs)"]], "Python Libraries": [[305, "Python-Libraries"], [307, "Python-Libraries"], [308, "Python-Libraries"], [309, "Python-Libraries"], [319, "Python-Libraries"], [325, "Python-Libraries"], [326, "Python-Libraries"], [327, "Python-Libraries"], [328, "Python-Libraries"], [330, "Python-Libraries"], [331, "Python-Libraries"], [332, "Python-Libraries"], [335, "Python-Libraries"], [342, "Python-Libraries"], [344, "Python-Libraries"], [350, "python-libraries"]], "5G-Toolkit Libraries": [[305, "5G-Toolkit-Libraries"], [307, "5G-Toolkit-Libraries"], [308, "5G-Toolkit-Libraries"], [309, "5G-Toolkit-Libraries"]], "Impact of AL 1": [[305, "Impact-of-AL-1"]], "Impact of AL 2": [[305, "Impact-of-AL-2"]], "Impact of AL 4": [[305, "Impact-of-AL-4"]], "Impact of AL 8": [[305, "Impact-of-AL-8"]], "Impact of AL 16": [[305, "Impact-of-AL-16"]], "Plot the Variation in Blocking Probability with number of UEs for different Aggregation levels.": [[305, "Plot-the-Variation-in-Blocking-Probability-with-number-of-UEs-for-different-Aggregation-levels."]], "Analyzing the effect of Number of Candidates on Blocking Probability": [[306, "Analyzing-the-effect-of-Number-of-Candidates-on-Blocking-Probability"]], "Plot the Variation in Blocking Probability with number of PDCCH candidates": [[306, "Plot-the-Variation-in-Blocking-Probability-with-number-of-PDCCH-candidates"]], "Analyzing the Impact of Scheduling Strategy on Blocking Probability": [[307, "Analyzing-the-Impact-of-Scheduling-Strategy-on-Blocking-Probability"]], "Simulation for Scheduling Strategy-I": [[307, "Simulation-for-Scheduling-Strategy-I"]], "Blocking probability vs number of UEs to be scheduled.": [[307, "Blocking-probability-vs-number-of-UEs-to-be-scheduled."]], "Simulation for Scheduling Strategy-II": [[307, "Simulation-for-Scheduling-Strategy-II"]], "Plotting Blocking Probability vs Number of UEs for Scheduling Strategy": [[307, "Plotting-Blocking-Probability-vs-Number-of-UEs-for-Scheduling-Strategy"]], "Analyze the Impact of UE Capability on Blocking Probability": [[308, "Analyze-the-Impact-of-UE-Capability-on-Blocking-Probability"]], "Simulating the Reference Case": [[308, "Simulating-the-Reference-Case"]], "Plot Blocking Probability for Different CORESET Sizes for Different UEs": [[308, "Plot-Blocking-Probability-for-Different-CORESET-Sizes-for-Different-UEs"], [308, "id1"]], "Simulating Reduced Blind Decoding Case-A": [[308, "Simulating-Reduced-Blind-Decoding-Case-A"]], "Simulating Reduced Blind Decoding Case-B": [[308, "Simulating-Reduced-Blind-Decoding-Case-B"]], "Selection of minimum CORESET Size for a Given Target Block Probability": [[309, "Selection-of-minimum-CORESET-Size-for-a-Given-Target-Block-Probability"]], "Compute minimum coreset size for numUEs = 5.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-5."]], "Compute minimum coreset size for numUEs = 10.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-10."]], "Compute minimum coreset size for numUEs = 15.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-15."]], "Display Minimum CORESET size required to meet the Target Blocking Probability for different number of UEs.": [[309, "Display-Minimum-CORESET-size-required-to-meet-the-Target-Blocking-Probability-for-different-number-of-UEs."]], "Blockage Probability Analysis for RedCap Devices in 5G Networks": [[310, "blockage-probability-analysis-for-redcap-devices-in-5g-networks"]], "Channel Interpolation based on SRCNN and DnCNN": [[311, "channel-interpolation-based-on-srcnn-and-dncnn"]], "Comparative Study of Reed Muller codes, Polar Codes and LDPC codes": [[312, "comparative-study-of-reed-muller-codes-polar-codes-and-ldpc-codes"]], "Channel Quality Estimation in 5G and Beyond Networks": [[313, "channel-quality-estimation-in-5g-and-beyond-networks"]], "Hybrid Automatic repeat Request in 5G and Beyond": [[314, "hybrid-automatic-repeat-request-in-5g-and-beyond"]], "Constellation Learning in an AWGN Channel": [[315, "Constellation-Learning-in-an-AWGN-Channel"]], "PHY layer as AutoEncoder": [[315, "PHY-layer-as-AutoEncoder"]], "Steps": [[315, "Steps"]], "Importing Libraries": [[315, "Importing-Libraries"]], "Parameters of AutoEncoder": [[315, "Parameters-of-AutoEncoder"]], "Training Data": [[315, "Training-Data"]], "Testing Data": [[315, "Testing-Data"]], "Normalization Functions": [[315, "Normalization-Functions"]], "Defining AutoEncoder Model": [[315, "Defining-AutoEncoder-Model"]], "Training AutoEncoder": [[315, "Training-AutoEncoder"]], "Defining Tx, Channel and Rx from Trained AutoEncoder": [[315, "Defining-Tx,-Channel-and-Rx-from-Trained-AutoEncoder"]], "Block Error Rate (BLER) performance": [[315, "Block-Error-Rate-(BLER)-performance"]], "Hamming Codes": [[315, "Hamming-Codes"], [319, "Hamming-Codes"]], "BLER plot : comparison of AutoEncoder BLER with base line (n,k) Hamming Code BLER": [[315, "BLER-plot-:-comparison-of-AutoEncoder-BLER-with-base-line-(n,k)-Hamming-Code-BLER"]], "Constellation Learning": [[315, "Constellation-Learning"]], "learned constellation plot": [[315, "learned-constellation-plot"]], "Downlink Synchronization using SSB in 5G systems": [[316, "downlink-synchronization-using-ssb-in-5g-systems"]], "Uplink Synchronization using PRACH in 5G systems": [[317, "uplink-synchronization-using-prach-in-5g-systems"]], "Projects": [[318, "projects"]], "Hamming Codes Parameters": [[319, "Hamming-Codes-Parameters"]], "Simulation Setup": [[319, "Simulation-Setup"], [362, "Simulation-Setup"]], "Performance Evaluation: SNR vs BER": [[319, "Performance-Evaluation:-SNR-vs-BER"]], "Performance Evaluation: SNR vs BLER": [[319, "Performance-Evaluation:-SNR-vs-BLER"]], "Conclusions": [[319, "Conclusions"]], "Link Level Simulation for Physical Downlink Control Channels": [[320, "Link-Level-Simulation-for-Physical-Downlink-Control-Channels"]], "Import Basic Python Libraries": [[320, "Import-Basic-Python-Libraries"], [329, "Import-Basic-Python-Libraries"]], "Import 5G-Toolkit Libraries": [[320, "Import-5G-Toolkit-Libraries"], [322, "Import-5G-Toolkit-Libraries"], [323, "Import-5G-Toolkit-Libraries"], [333, "Import-5G-Toolkit-Libraries"], [334, "Import-5G-Toolkit-Libraries"], [351, "Import-5G-Toolkit-Libraries"]], "CORESET Parameters": [[320, "CORESET-Parameters"]], "Generate Wireless Channel: CDL-A": [[320, "Generate-Wireless-Channel:-CDL-A"], [322, "Generate-Wireless-Channel:-CDL-A"], [323, "Generate-Wireless-Channel:-CDL-A"]], "Link level Simulation: For each Aggregation level and Each SNR value": [[320, "Link-level-Simulation:-For-each-Aggregation-level-and-Each-SNR-value"]], "Reliability Performance: BER/BLER vs SNR": [[320, "Reliability-Performance:-BER/BLER-vs-SNR"]], "Reliability Performance: BER/BLER vs SNR for 20000 Batches": [[320, "Reliability-Performance:-BER/BLER-vs-SNR-for-20000-Batches"]], "SVD based Downlink Precoding and Combining for Massive MIMO in 5G Networks": [[321, "svd-based-downlink-precoding-and-combining-for-massive-mimo-in-5g-networks"]], "SVD based Downlink Precoding and Combining for Massive MIMO 5G Networks": [[322, "SVD-based-Downlink-Precoding-and-Combining-for-Massive-MIMO-5G-Networks"]], "Link level simulation: BLER/BER/Throughput/SE vs SNR for different ranks": [[322, "Link-level-simulation:-BLER/BER/Throughput/SE-vs-SNR-for-different-ranks"], [323, "Link-level-simulation:-BLER/BER/Throughput/SE-vs-SNR-for-different-ranks"]], "Simulation Results": [[322, "Simulation-Results"], [323, "Simulation-Results"], [351, "Simulation-Results"]], "Simulation Results: Averaged over 10000 batches": [[322, "Simulation-Results:-Averaged-over-10000-batches"], [323, "Simulation-Results:-Averaged-over-10000-batches"], [351, "Simulation-Results:-Averaged-over-10000-batches"]], "Type-1 codebook based Downlink Precoding and Combining for Massive MIMO 5G Networks": [[323, "Type-1-codebook-based-Downlink-Precoding-and-Combining-for-Massive-MIMO-5G-Networks"]], "P1 Procedure: Beam management in 5G networks using SSB": [[324, "P1-Procedure:-Beam-management-in-5G-networks-using-SSB"]], "Import librariers": [[324, "Import-librariers"]], "Import Python libraries": [[324, "Import-Python-libraries"]], "Import 5G Toolkit libraries": [[324, "Import-5G-Toolkit-libraries"]], "Generate Wireless Channel": [[324, "Generate-Wireless-Channel"]], "Generate Time Frequency Parameters and MIB+ATI Parameters": [[324, "Generate-Time-Frequency-Parameters-and-MIB+ATI-Parameters"]], "Generate OFDM Resource/Transmission Grid": [[324, "Generate-OFDM-Resource/Transmission-Grid"]], "Pass through the Wireless Channel": [[324, "Pass-through-the-Wireless-Channel"], [349, "Pass-through-the-Wireless-Channel"], [351, "Pass-through-the-Wireless-Channel"]], "Power Heatmap of Received Grid": [[324, "Power-Heatmap-of-Received-Grid"]], "Add Noise": [[324, "Add-Noise"], [327, "Add-Noise"], [328, "Add-Noise"], [331, "Add-Noise"]], "RSRP Computation": [[324, "RSRP-Computation"]], "Visualization of All Beam RSRP": [[324, "Visualization-of-All-Beam-RSRP"]], "Selected Base-station and Beam": [[324, "Selected-Base-station-and-Beam"]], "Simulation Topology": [[324, "Simulation-Topology"]], "Search space, CORESET and blind decoding of PDCCH channels in 5G Networks": [[325, "Search-space,-CORESET-and-blind-decoding-of-PDCCH-channels-in-5G-Networks"]], "CORESET and Search Space Set Parameters": [[325, "CORESET-and-Search-Space-Set-Parameters"]], "Transmitter Side Processing": [[325, "Transmitter-Side-Processing"]], "Displaying Resource Grid": [[325, "Displaying-Resource-Grid"]], "Wireless Channel : CDL-A": [[325, "Wireless-Channel-:-CDL-A"]], "Receiver Side Processing and Blind Decoding of UE": [[325, "Receiver-Side-Processing-and-Blind-Decoding-of-UE"]], "Reed Muller Codes in 5G": [[326, "Reed-Muller-Codes-in-5G"]], "Table of content:": [[326, "Table-of-content:"], [335, "Table-of-content:"]], "Mapper and Demapper Parameters": [[326, "Mapper-and-Demapper-Parameters"]], "Simulation": [[326, "Simulation"], [350, "simulation"]], "Performance Plot: Averaged over 65 datasets of 5000 points each.": [[326, "Performance-Plot:-Averaged-over-65-datasets-of-5000-points-each."]], "Downlink TDoA Based Positioning for Industrial IoT Devices in Millimeter Wave 5G Networks": [[327, "Downlink-TDoA-Based-Positioning-for-Industrial-IoT-Devices-in-Millimeter-Wave-5G-Networks"]], "Channel Generation": [[327, "Channel-Generation"], [328, "Channel-Generation"], [331, "Channel-Generation"], [348, "Channel-Generation"]], "Channel Parameters:": [[327, "Channel-Parameters:"], [328, "Channel-Parameters:"], [331, "Channel-Parameters:"]], "Position Reference Signal": [[327, "Position-Reference-Signal"], [328, "Position-Reference-Signal"], [331, "Position-Reference-Signal"]], "OFDM Transmitter: Create Transmission Grid": [[327, "OFDM-Transmitter:-Create-Transmission-Grid"], [328, "OFDM-Transmitter:-Create-Transmission-Grid"], [331, "OFDM-Transmitter:-Create-Transmission-Grid"]], "Display Transmission Grid": [[327, "Display-Transmission-Grid"], [328, "Display-Transmission-Grid"]], "Transmit Beamforming": [[327, "Transmit-Beamforming"], [328, "Transmit-Beamforming"], [331, "Transmit-Beamforming"], [334, "Transmit-Beamforming"]], "Pass the Beamformed Grid Through Wireless Channel": [[327, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"], [328, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"], [331, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"]], "Extracting the Resource Grid": [[327, "Extracting-the-Resource-Grid"], [328, "Extracting-the-Resource-Grid"]], "Channel Estimation + Interpolation": [[327, "Channel-Estimation-+-Interpolation"], [328, "Channel-Estimation-+-Interpolation"]], "Display the quality of Channel Estimates": [[327, "Display-the-quality-of-Channel-Estimates"], [328, "Display-the-quality-of-Channel-Estimates"]], "ToA Estimation": [[327, "ToA-Estimation"], [328, "ToA-Estimation"]], "Visualization: Time of Arrival locus Circles": [[327, "Visualization:-Time-of-Arrival-locus-Circles"], [328, "Visualization:-Time-of-Arrival-locus-Circles"]], "Position Estimation + K-Best Measurement Selection (Genie Aided)": [[327, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"], [328, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"], [331, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"]], "Measurement Selection:": [[327, "Measurement-Selection:"], [328, "Measurement-Selection:"], [331, "Measurement-Selection:"]], "Visualization of Positioning": [[327, "Visualization-of-Positioning"], [328, "Visualization-of-Positioning"], [331, "Visualization-of-Positioning"]], "Performance Analysis: For 2000 UEs": [[327, "Performance-Analysis:-For-2000-UEs"], [328, "Performance-Analysis:-For-2000-UEs"], [329, "Performance-Analysis:-For-2000-UEs"], [330, "Performance-Analysis:-For-2000-UEs"]], "Further Study": [[327, "Further-Study"], [328, "Further-Study"], [331, "Further-Study"], [342, "Further-Study"]], "Downlink Time of Arrival based Positioning in 5G and Beyond Networks": [[328, "Downlink-Time-of-Arrival-based-Positioning-in-5G-and-Beyond-Networks"]], "Positioning Procedure": [[328, "Positioning-Procedure"], [331, "Positioning-Procedure"]], "Table of Content:": [[328, "Table-of-Content:"], [331, "Table-of-Content:"]], "Positioning the Outdoor UEs using 5G Urban Micro cell sites based Uplink Time Difference of Arrival (UL-TDoA) method": [[329, "Positioning-the-Outdoor-UEs-using-5G-Urban-Micro-cell-sites-based-Uplink-Time-Difference-of-Arrival-(UL-TDoA)-method"]], "Positioning the Indoor Open Office UEs using Uplink ToA method": [[330, "Positioning-the-Indoor-Open-Office-UEs-using-Uplink-ToA-method"]], "Performance Analysis of Positioning Error for Uplink-ToA based method": [[330, "Performance-Analysis-of-Positioning-Error-for-Uplink-ToA-based-method"]], "Downlink Angle of Departure based Positioning for Rural Macro Terrain in 5G and Beyond Network": [[331, "Downlink-Angle-of-Departure-based-Positioning-for-Rural-Macro-Terrain-in-5G-and-Beyond-Network"]], "Compute the Measurement Windows": [[331, "Compute-the-Measurement-Windows"]], "RSRP vs beam Index": [[331, "RSRP-vs-beam-Index"]], "AoD Estimation": [[331, "AoD-Estimation"]], "Performance Analysis for DL-AoD method: 2000 UEs": [[331, "Performance-Analysis-for-DL-AoD-method:-2000-UEs"]], "Uplink AoA (UL-AoA) based Localization of the Indoor Factory UEs using millimeter 5G Networks": [[332, "Uplink-AoA-(UL-AoA)-based-Localization-of-the-Indoor-Factory-UEs-using-millimeter-5G-Networks"]], "Visualization: Direction of Arrival Locus Lines": [[332, "Visualization:-Direction-of-Arrival-Locus-Lines"]], "Visualization of Estimated Position and its accuracy": [[332, "Visualization-of-Estimated-Position-and-its-accuracy"]], "Performance Analysis of Positioning Error for UL-AoA method": [[332, "Performance-Analysis-of-Positioning-Error-for-UL-AoA-method"]], "Performance Analysis for UL-AoA method: 1300 UEs": [[332, "Performance-Analysis-for-UL-AoA-method:-1300-UEs"]], "Performance comparison of OFDM and DFT-s-OFDM in 5G Networks": [[333, "Performance-comparison-of-OFDM-and-DFT-s-OFDM-in-5G-Networks"]], "Peak to Average Power Ratio (PAPR) Analysis": [[333, "Peak-to-Average-Power-Ratio-(PAPR)-Analysis"]], "PAPR Analysis: CP-OFDM": [[333, "PAPR-Analysis:-CP-OFDM"]], "PAPR Analysis: DFT-s-OFDM": [[333, "PAPR-Analysis:-DFT-s-OFDM"]], "PAPR Performance Comparison: CP-OFDM vs DFT-s-OFDM": [[333, "PAPR-Performance-Comparison:-CP-OFDM-vs-DFT-s-OFDM"]], "ACLR Analysis: CP-OFDM vs DFT-s-OFDM": [[333, "ACLR-Analysis:-CP-OFDM-vs-DFT-s-OFDM"]], "ACLR Comparison of OFDM and DFT-s-OFDM": [[333, "ACLR-Comparison-of-OFDM-and-DFT-s-OFDM"]], "Generate Channel": [[334, "Generate-Channel"], [351, "Generate-Channel"]], "CSI Configurations": [[334, "CSI-Configurations"]], "Generate CSI-RS Resource Grid": [[334, "Generate-CSI-RS-Resource-Grid"]], "Generate the Transmit Grid": [[334, "Generate-the-Transmit-Grid"]], "Pass through the Channel": [[334, "Pass-through-the-Channel"]], "Add noise at Receiver": [[334, "Add-noise-at-Receiver"]], "Extract the Resource Grid": [[334, "Extract-the-Resource-Grid"]], "Estimate the Channel using CSI-RS": [[334, "Estimate-the-Channel-using-CSI-RS"]], "Display the Estimated channel": [[334, "Display-the-Estimated-channel"]], "Estimate the Rank and Condition number": [[334, "Estimate-the-Rank-and-Condition-number"]], "SVD of Channel and Condition number": [[334, "SVD-of-Channel-and-Condition-number"]], "Estimate the Precoder: Type-I": [[334, "Estimate-the-Precoder:-Type-I"]], "Polar Codes in 5G": [[335, "Polar-Codes-in-5G"]], "Import libraries": [[335, "Import-libraries"]], "5G Toolkit libraries": [[335, "5G-Toolkit-libraries"]], "Symbol Mapping Configurations": [[335, "Symbol-Mapping-Configurations"], [336, "Symbol-Mapping-Configurations"]], "Polar Coder Configurations": [[335, "Polar-Coder-Configurations"]], "Simulation: AWGN Channel": [[335, "Simulation:-AWGN-Channel"]], "Performance Evaluations": [[335, "Performance-Evaluations"], [362, "Performance-Evaluations"]], "Performance Evaluations: Averaging over a 100 dataset of 100 points each": [[335, "Performance-Evaluations:-Averaging-over-a-100-dataset-of-100-points-each"]], "Low Density Parity Check (LDPC) Codes in 5G": [[336, "Low-Density-Parity-Check-(LDPC)-Codes-in-5G"]], "Python LIbraries": [[336, "Python-LIbraries"]], "Simulation: Variation in Reliability with code-rate for fixed block-length": [[336, "Simulation:-Variation-in-Reliability-with-code-rate-for-fixed-block-length"]], "LDPC Parameters": [[336, "LDPC-Parameters"]], "Simulation Procedure": [[336, "Simulation-Procedure"]], "Performance Evaluation: BER vs SNR for different code-rates": [[336, "Performance-Evaluation:-BER-vs-SNR-for-different-code-rates"]], "Simulation: Variation in Reliability with block-length for fixed coderate": [[336, "Simulation:-Variation-in-Reliability-with-block-length-for-fixed-coderate"]], "Performance Evaluation: BER vs SNR for different block lengths": [[336, "Performance-Evaluation:-BER-vs-SNR-for-different-block-lengths"]], "Following results are averaged over 100 results": [[336, "Following-results-are-averaged-over-100-results"]], "BER vs SNR": [[336, "BER-vs-SNR"]], "BER vs TB-size": [[336, "BER-vs-TB-size"]], "Wireless Channel Generation for Outdoor Terrains deployed in Hexagonal Geometry": [[338, "Wireless-Channel-Generation-for-Outdoor-Terrains-deployed-in-Hexagonal-Geometry"]], "Generate Antenna Arrays": [[338, "Generate-Antenna-Arrays"], [340, "Generate-Antenna-Arrays"], [341, "Generate-Antenna-Arrays"]], "Generate Simulation Layout": [[338, "Generate-Simulation-Layout"], [340, "Generate-Simulation-Layout"], [341, "Generate-Simulation-Layout"], [344, "Generate-Simulation-Layout"]], "Generate Channel Parameters": [[338, "Generate-Channel-Parameters"], [340, "Generate-Channel-Parameters"], [341, "Generate-Channel-Parameters"], [344, "Generate-Channel-Parameters"]], "Generate Channel Coefficients": [[338, "Generate-Channel-Coefficients"], [340, "Generate-Channel-Coefficients"], [341, "Generate-Channel-Coefficients"], [344, "Generate-Channel-Coefficients"]], "Generate OFDM Channel": [[338, "Generate-OFDM-Channel"], [340, "Generate-OFDM-Channel"], [341, "Generate-OFDM-Channel"], [344, "Generate-OFDM-Channel"]], "Frequency Domain : Magnitude Response Plot": [[338, "Frequency-Domain-:-Magnitude-Response-Plot"], [340, "Frequency-Domain-:-Magnitude-Response-Plot"], [341, "Frequency-Domain-:-Magnitude-Response-Plot"], [344, "Frequency-Domain-:-Magnitude-Response-Plot"]], "Time Domain Channel response": [[338, "Time-Domain-Channel-response"], [340, "Time-Domain-Channel-response"], [341, "Time-Domain-Channel-response"], [344, "Time-Domain-Channel-response"]], "Generate Spatially Consistent Statistical Channels for Realistic Simulations": [[339, "Generate-Spatially-Consistent-Statistical-Channels-for-Realistic-Simulations"]], "Import 5G Toolkit": [[339, "Import-5G-Toolkit"], [346, "Import-5G-Toolkit"]], "Antenna Arrays": [[339, "Antenna-Arrays"], [342, "Antenna-Arrays"], [345, "Antenna-Arrays"], [346, "Antenna-Arrays"]], "Antenna Array at Rx": [[339, "Antenna-Array-at-Rx"], [346, "Antenna-Array-at-Rx"]], "Antenna Array at Tx": [[339, "Antenna-Array-at-Tx"], [346, "Antenna-Array-at-Tx"]], "Channel Parameters, Channel Coefficients and OFDM Channel": [[339, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [342, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [343, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [346, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"]], "Frequency Domain Consistency": [[339, "Frequency-Domain-Consistency"]], "Amplitude Spectrum: Each subcarrier accross time": [[339, "Amplitude-Spectrum:-Each-subcarrier-accross-time"]], "Amplitude Spectrum: One subcarrier accross time": [[339, "Amplitude-Spectrum:-One-subcarrier-accross-time"]], "Amplitude Heatmap": [[339, "Amplitude-Heatmap"]], "Phase Spectrum": [[339, "Phase-Spectrum"]], "Doppler Domain Sparsity": [[339, "Doppler-Domain-Sparsity"]], "Delay/Time Domain: Sparsity": [[339, "Delay/Time-Domain:-Sparsity"]], "Wireless Channel Generation for a Dense High Indoor Factory Terrain Deployed at millimeter band.": [[340, "Wireless-Channel-Generation-for-a-Dense-High-Indoor-Factory-Terrain-Deployed-at-millimeter-band."]], "Genarating the Wireless Channel for Indoor Open Office Terrain": [[341, "Genarating-the-Wireless-Channel-for-Indoor-Open-Office-Terrain"]], "Wireless Channel Generation for Outdoor Mobile User Connected to Rural Macro Site": [[342, "Wireless-Channel-Generation-for-Outdoor-Mobile-User-Connected-to-Rural-Macro-Site"]], "Variation in Channel Power across Time": [[342, "Variation-in-Channel-Power-across-Time"], [343, "Variation-in-Channel-Power-across-Time"]], "Animation: Displaying the variation in receiver power of a UE time snapshots": [[342, "Animation:-Displaying-the-variation-in-receiver-power-of-a-UE-time-snapshots"]], "Functions to Animate the Plot": [[342, "Functions-to-Animate-the-Plot"]], "Simulation Animation": [[342, "Simulation-Animation"]], "Channel Generation for Dual Mobility Scenarios in 5G and Beyond": [[343, "Channel-Generation-for-Dual-Mobility-Scenarios-in-5G-and-Beyond"]], "Generate Antenna Array": [[343, "Generate-Antenna-Array"], [344, "Generate-Antenna-Array"]], "Generate Transmit Arrays": [[343, "Generate-Transmit-Arrays"]], "Generate Receiver Arrays": [[343, "Generate-Receiver-Arrays"]], "Generate the Routes": [[343, "Generate-the-Routes"]], "Generate the BS Routes": [[343, "Generate-the-BS-Routes"]], "Generate the UE Routes": [[343, "Generate-the-UE-Routes"]], "Wireless Channel Generation for Multiple Carrier Frequencies": [[344, "Wireless-Channel-Generation-for-Multiple-Carrier-Frequencies"]], "Propagation Characteristics of Outdoor Terrains": [[345, "Propagation-Characteristics-of-Outdoor-Terrains"]], "Compute the Rough estimate of the Probability of line of sight": [[345, "Compute-the-Rough-estimate-of-the-Probability-of-line-of-sight"]], "Parameter Generator": [[345, "Parameter-Generator"]], "Path-loss Characteristics": [[345, "Path-loss-Characteristics"]], "Distribution of Shadow fading": [[345, "Distribution-of-Shadow-fading"]], "Probability Distribution of Rician K factor": [[345, "Probability-Distribution-of-Rician-K-factor"]], "Delay Spread Charateristics": [[345, "Delay-Spread-Charateristics"]], "Angular Spread Characteristics": [[345, "Angular-Spread-Characteristics"]], "Probability distribution of Azimuth-AoA": [[345, "Probability-distribution-of-Azimuth-AoA"]], "Probability distribution of Azimuth-AoD": [[345, "Probability-distribution-of-Azimuth-AoD"]], "Probability distribution of Elevation-AoA": [[345, "Probability-distribution-of-Elevation-AoA"]], "Probability distribution of Elevation-AoD": [[345, "Probability-distribution-of-Elevation-AoD"]], "Beam Domain and Delay Domain Sparsity in Wireless Channel Models": [[346, "Beam-Domain-and-Delay-Domain-Sparsity-in-Wireless-Channel-Models"]], "Demonstrating the Beam Domain Sparsity": [[346, "Demonstrating-the-Beam-Domain-Sparsity"]], "Demonstrating the Delay Domain Sparsity": [[346, "Demonstrating-the-Delay-Domain-Sparsity"]], "Detailed Tutorials on 3GPP Channel Models": [[347, "detailed-tutorials-on-3gpp-channel-models"]], "Initial Access in 5G": [[348, "Initial-Access-in-5G"]], "External Libaries": [[348, "External-Libaries"]], "5G Toolkit Modules": [[348, "5G-Toolkit-Modules"]], "System Parameters": [[348, "System-Parameters"]], "PBCH Information": [[348, "PBCH-Information"]], "Transmission-side Processing": [[348, "Transmission-side-Processing"]], "Generate Primary Synchronization Sequence (PSS)": [[348, "Generate-Primary-Synchronization-Sequence-(PSS)"]], "Generate Secondary Synchronization Sequence (SSS)": [[348, "Generate-Secondary-Synchronization-Sequence-(SSS)"]], "Generate Demodulation Reference Sequence (DMRS)": [[348, "Generate-Demodulation-Reference-Sequence-(DMRS)"]], "Generate the PBCH Payload": [[348, "Generate-the-PBCH-Payload"]], "Constellation Diagram: Tx": [[348, "Constellation-Diagram:-Tx"]], "Construct SSB Grid": [[348, "Construct-SSB-Grid"]], "Mapping SSB to Transmission Grid for ODFM": [[348, "Mapping-SSB-to-Transmission-Grid-for-ODFM"]], "OFDM-Modulator": [[348, "OFDM-Modulator"]], "Analog Beamforming": [[348, "Analog-Beamforming"]], "Pass Tx signal through Wireless Channel": [[348, "Pass-Tx-signal-through-Wireless-Channel"]], "Noise addition at receiver": [[348, "Noise-addition-at-receiver"]], "SSB Receiver Side": [[348, "SSB-Receiver-Side"]], "Receiver combining": [[348, "Receiver-combining"]], "PSS Detection: largest peak": [[348, "PSS-Detection:-largest-peak"]], "Largest peak": [[348, "Largest-peak"]], "OFDM Demodulation: Resource Grid reconstruction": [[348, "OFDM-Demodulation:-Resource-Grid-reconstruction"]], "SSB Extaction from Resource Grid": [[348, "SSB-Extaction-from-Resource-Grid"]], "Comparing Transmitted and Received SSB Grid": [[348, "Comparing-Transmitted-and-Received-SSB-Grid"]], "Spectrum Analysis": [[348, "Spectrum-Analysis"]], "(SSS Detection: PSS channel assisted) + Cell-ID estimation": [[348, "(SSS-Detection:-PSS-channel-assisted)-+-Cell-ID-estimation"]], "DMRS Parameters Detection + DMRS Sequence Generation": [[348, "DMRS-Parameters-Detection-+-DMRS-Sequence-Generation"]], "Constellation Diagram: Rx": [[348, "Constellation-Diagram:-Rx"]], "PBCH Decoding": [[348, "PBCH-Decoding"]], "Information Aggregation": [[348, "Information-Aggregation"]], "Performance Evaluations: BER + Cell-IDs + DMRS Parameter Detection": [[348, "Performance-Evaluations:-BER-+-Cell-IDs-+-DMRS-Parameter-Detection"]], "Cell-IDs Detection": [[348, "Cell-IDs-Detection"]], "DMRS Parameter Detection": [[348, "DMRS-Parameter-Detection"]], "BER computation": [[348, "BER-computation"]], "Coverage Evaluation of Physical Broadcast Channels (PBCH) in 5G Networks": [[349, "Coverage-Evaluation-of-Physical-Broadcast-Channels-(PBCH)-in-5G-Networks"]], "Import 5G Toolkit Libraiers": [[349, "Import-5G-Toolkit-Libraiers"]], "Generate the Wireless Channel : CDL-A": [[349, "Generate-the-Wireless-Channel-:-CDL-A"]], "Set SSB and Time-Frequency OFDM Configurations/Parameters": [[349, "Set-SSB-and-Time-Frequency-OFDM-Configurations/Parameters"]], "Generate the Synchronization Signal Block (SSB) Grid": [[349, "Generate-the-Synchronization-Signal-Block-(SSB)-Grid"]], "Generate the Transmission Grid": [[349, "Generate-the-Transmission-Grid"]], "Display the Heatmap for the Received Grid": [[349, "Display-the-Heatmap-for-the-Received-Grid"]], "Link level Simulation: BLER for each SNR value": [[349, "Link-level-Simulation:-BLER-for-each-SNR-value"]], "Block Error Rate Performance": [[349, "Block-Error-Rate-Performance"]], "Block Error Rate: Averaged over a 10000 batches": [[349, "Block-Error-Rate:-Averaged-over-a-10000-batches"]], "BER Performance of PUCCH Format 0": [[350, "ber-performance-of-pucch-format-0"]], "5G ToolKit Libraries": [[350, "g-toolkit-libraries"]], "Format 0": [[350, "format-0"]], "Format 0 Decoder": [[350, "format-0-decoder"]], "M_CS Estimation": [[350, "m-cs-estimation"]], "Information content based on MCS value": [[350, "information-content-based-on-mcs-value"]], "Performance Plot": [[350, "performance-plot"]], "Link Level Simulation for Physical Downlink Shared Channel in 5G": [[351, "Link-Level-Simulation-for-Physical-Downlink-Shared-Channel-in-5G"]], "PDSCH Configurations": [[351, "PDSCH-Configurations"]], "PDSCH Implementation": [[351, "PDSCH-Implementation"]], "SVD based Precoding and Beamforming": [[351, "SVD-based-Precoding-and-Beamforming"]], "Recevier Side Processing": [[351, "Recevier-Side-Processing"]], "Save Results": [[351, "Save-Results"]], "Tutorials": [[352, "tutorials"]], "Challenge Of this Week": [[353, "challenge-of-this-week"]], "Arxiv-ed Challenges": [[354, "arxiv-ed-challenges"]], "Solution of this Months Problems": [[355, "solution-of-this-months-problems"]], "Install 5G Toolkit": [[356, "install-5g-toolkit"], [356, "id2"], [357, "install-5g-toolkit"], [357, "id1"], [357, "id5"], [359, "install-5g-toolkit"], [359, "id3"], [360, "install-5g-toolkit"]], "System Requirements:": [[356, "system-requirements"], [359, "system-requirements"], [360, "system-requirements"]], "Dependent Libraries:": [[356, "dependent-libraries"], [360, "dependent-libraries"]], "Install Miniconda": [[356, "install-miniconda"], [357, "install-miniconda"], [357, "id2"], [359, "install-miniconda"]], "Install Jupyter Notebook": [[356, "install-jupyter-notebook"], [357, "install-jupyter-notebook"], [357, "id4"], [359, "install-jupyter-notebook"]], "Final Confirmation": [[356, "final-confirmation"], [357, "final-confirmation"], [357, "id6"], [359, "final-confirmation"]], "License 5G Toolkit": [[356, "license-5g-toolkit"], [359, "license-5g-toolkit"], [360, "license-5g-toolkit"]], "Activate the 5G Toolkit License": [[356, "activate-the-5g-toolkit-license"], [359, "activate-the-5g-toolkit-license"], [360, "activate-the-5g-toolkit-license"]], "Installation Tutorial: Video": [[356, "installation-tutorial-video"], [359, "installation-tutorial-video"]], "Detailed Installation on Ubuntu": [[357, "detailed-installation-on-ubuntu"]], "Update Ubuntu system": [[357, "update-ubuntu-system"]], "Detailed Installation on Windows 10/11": [[357, "detailed-installation-on-windows-10-11"]], "Create an environment using Conda": [[357, "create-an-environment-using-conda"]], "5G Toolkit": [[358, "g-toolkit"]], "Salient Features": [[358, "salient-features"]], "Technical Features": [[358, "technical-features"]], "5G Toolkit R24a.0.3 Documentation": [[358, "g-toolkit-version-documentation"]], "How the documentation is organized": [[358, "how-the-documentation-is-organized"]], "Looking for Help": [[358, "looking-for-help"]], "More Information": [[358, "more-information"]], "5G Toolkit Features": [[358, "g-toolkit-features"]], "Dependent Libraries": [[359, "dependent-libraries"], [360, "id2"]], "How to install 5G Toolkit:": [[360, "how-to-install-5g-toolkit"]], "system Requirements": [[360, "id1"]], "Install 5G Toolkit on Ubuntu (20.04/22.04) and Windows (10/11)": [[360, "install-5g-toolkit-on-ubuntu-20-04-22-04-and-windows-10-11"]], "Library Dependencies": [[360, "id3"]], "Detailed Installation Procedure": [[360, "detailed-installation-procedure"]], "Release Notes": [[361, "release-notes"]], "Getting Started with 5G Toolkit": [[362, "Getting-Started-with-5G-Toolkit"]], "Create Objects": [[362, "Create-Objects"]], "Payload Bits Generation and Encoding": [[362, "Payload-Bits-Generation-and-Encoding"]], "Symbol Mapper": [[362, "Symbol-Mapper"]], "AWGN Channel": [[362, "AWGN-Channel"]], "CRC Decoder: Error Detection": [[362, "CRC-Decoder:-Error-Detection"]], "BER and Block Error Computation": [[362, "BER-and-Block-Error-Computation"]], "Display BER/BLER vs SNR.": [[362, "Display-BER/BLER-vs-SNR."]]}, "indexentries": {"crcdecoder (class in toolkit5g.crc)": [[3, "toolkit5G.CRC.CRCDecoder"]], "crcencoder (class in toolkit5g.crc)": [[4, "toolkit5G.CRC.CRCEncoder"]], "hammingdecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingDecoder"]], "hammingencoder (class in toolkit5g.channelcoder.hammingcoder.hammingencoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingEncoder.HammingEncoder"]], "hammingspheredecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingSphereDecoder"]], "hammingsyndromedecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingSyndromeDecoder"]], "ldpcdecoder5g (class in toolkit5g.channelcoder)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G"]], "ldpcencoder5g (class in toolkit5g.channelcoder)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G"]], "bm (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.bm"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.bm"]], "bm (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.bm"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.bm"]], "computeils() (toolkit5g.channelcoder.ldpcdecoder5g method)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.computeIls"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.computeIls"]], "computeils() (toolkit5g.channelcoder.ldpcencoder5g method)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.computeIls"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.computeIls"]], "i_ls (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.i_ls"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.i_ls"]], "i_ls (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.i_ls"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.i_ls"]], "k (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.k"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.k"]], "k_ldpc (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.k_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.k_ldpc"]], "llr_max (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.llr_max"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.llr_max"]], "n (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.n"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.n"]], "n (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.n"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.n"]], "n_ldpc (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.n_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.n_ldpc"]], "n_ldpc (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.n_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.n_ldpc"]], "nb_pruned_nodes (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.nb_pruned_nodes"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.nb_pruned_nodes"]], "pcm (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.pcm"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.pcm"]], "prune_pcm (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.prune_pcm"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.prune_pcm"]], "z (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.z"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.z"]], "c (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.C"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.C"]], "codeblockaggregation (class in toolkit5g.channelcoder.ldpc)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation"]], "codeblocksegregation (class in toolkit5g.channelcoder.ldpc)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegregation"], [92, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegregation"]], "kbar (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kbar"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kbar"]], "kcb (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kcb"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kcb"]], "basegraph (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.baseGraph"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.baseGraph"]], "coderate (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.codeRate"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.codeRate"]], "crctype (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.crcType"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.crcType"]], "tbsize (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.tbSize"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.tbSize"]], "b (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.B"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.B"]], "c (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.C"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.C"]], "codeblockconcatenation (class in toolkit5g.channelcoder.ldpc)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockConcatenation"], [92, "toolkit5G.ChannelCoder.LDPC.CodeBlockConcatenation"]], "codeblocksegmentation (class in toolkit5g.channelcoder.ldpc)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation"]], "k (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.K"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.K"]], "kb (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kb"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kb"]], "kbar (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kbar"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kbar"]], "l (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.L"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.L"]], "zc (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Zc"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Zc"]], "basegraph (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.baseGraph"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.baseGraph"]], "coderate (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.codeRate"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.codeRate"]], "ldpcparameters (class in toolkit5g.channelcoder.ldpc)": [[9, "toolkit5G.ChannelCoder.LDPC.LDPCparameters"]], "e (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.E"]], "k (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.K"]], "n (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.N"]], "n (toolkit5g.channelcoder.polarencoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [55, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [74, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [117, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [142, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [146, "toolkit5G.ChannelCoder.PolarEncoder5G.N"]], "polardecoder5g (class in toolkit5g.channelcoder)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G"]], "polarencoder5g (class in toolkit5g.channelcoder)": [[10, "toolkit5G.ChannelCoder.PolarEncoder5G"], [55, "toolkit5G.ChannelCoder.PolarEncoder5G"], [74, "toolkit5G.ChannelCoder.PolarEncoder5G"], [117, "toolkit5G.ChannelCoder.PolarEncoder5G"], [142, "toolkit5G.ChannelCoder.PolarEncoder5G"], [146, "toolkit5G.ChannelCoder.PolarEncoder5G"]], "dec_type (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"]], "llr_max (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"]], "output_dtype (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"]], "codeblockaggregation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [149, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"]], "codeblockconcatenation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [148, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"]], "codeblocksegmentation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [149, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"]], "codeblocksegregation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [148, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"]], "inputbitdeinterleaver (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [27, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [44, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [69, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [112, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [143, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"]], "inputbitinterleaver (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [27, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [44, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [69, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [112, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [143, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"]], "reedmullerdecoder5g (class in toolkit5g.channelcoder)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G"]], "reedmullerencoder5g (class in toolkit5g.channelcoder)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G"]], "dtype (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.dtype"]], "dtype (toolkit5g.channelcoder.reedmullerencoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G.dtype"]], "hardin (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.hardIn"]], "k (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.k"]], "k (toolkit5g.channelcoder.reedmullerencoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G.k"]], "antennaarrays (class in toolkit5g.channelmodels)": [[14, "toolkit5G.ChannelModels.AntennaArrays"]], "antenna_3gpp_38901 (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_3GPP_38901"]], "antenna_hertziandipole (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_HertzianDipole"]], "antenna_lineardipole (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_LinearDipole"]], "channelgenerator (class in toolkit5g.channelmodels)": [[15, "toolkit5G.ChannelModels.ChannelGenerator"]], "circularroute (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.CircularRoute"]], "dropvehicleshighway (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.DropVehiclesHighway"]], "nodemobility (class in toolkit5g.channelmodels)": [[17, "toolkit5G.ChannelModels.NodeMobility"]], "randomwalk (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.RandomWalk"]], "displayroute() (toolkit5g.channelmodels.nodemobility method)": [[17, "toolkit5G.ChannelModels.NodeMobility.displayRoute"]], "parametergenerator (class in toolkit5g.channelmodels)": [[18, "toolkit5G.ChannelModels.ParameterGenerator"]], "bslocations (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.BSLocations"]], "hexagonallayout (class in toolkit5g.channelmodels.simulationlayout)": [[19, "toolkit5G.ChannelModels.simulationLayout.HexagonalLayout"]], "isd (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ISD"]], "rectangularlayout (class in toolkit5g.channelmodels.simulationlayout)": [[19, "toolkit5G.ChannelModels.simulationLayout.RectangularLayout"]], "simulationlayout (class in toolkit5g.channelmodels)": [[19, "toolkit5G.ChannelModels.SimulationLayout"]], "uelocations (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UELocations"]], "uedistibution (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UEdistibution"]], "ueheightdistribution (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UEheightDistribution"]], "bsantennaarray (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.bsAntennaArray"]], "bsroute (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.bsRoute"]], "carrierfrequency (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.carrierFrequency"]], "clutterdensity (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterDensity"]], "clutterheight (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterHeight"]], "cluttersize (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterSize"]], "correlationdistanceindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationDistanceIndoor"]], "correlationdistancelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationDistanceLoS"]], "correlationtypeindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationTypeIndoor"]], "correlationtypelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationTypeLoS"]], "enablespatialconsistencyindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.enableSpatialConsistencyIndoor"]], "enablespatialconsistencylos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.enableSpatialConsistencyLoS"]], "force3gppspatialconsistencyparameters (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.force3GPPSpatialConsistencyParameters"]], "forcelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.forceLOS"]], "heightofbs (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfBS"]], "heightofroom (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfRoom"]], "heightofue (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfUE"]], "indooruefraction (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.indoorUEfraction"]], "layoutlength (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutLength"]], "layouttype (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutType"]], "layoutwidth (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutWidth"]], "lengthofindoorobject (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.lengthOfIndoorObject"]], "maxnumberoffloors (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.maxNumberOfFloors"]], "memoryefficient (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.memoryEfficient"]], "minnumberoffloors (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.minNumberOfFloors"]], "minuebsdistance (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.minUEBSDistance"]], "numofbs (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfBS"]], "numofsectorspersite (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfSectorsPerSite"]], "numofsnapshots (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfSnapShots"]], "numofue (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfUE"]], "radiusforcircularuedrop (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.radiusForCircularUEDrop"]], "routetype (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.routeType"]], "terrain (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.terrain"]], "ueantennaarray (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueAntennaArray"]], "uedropmethod (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueDropMethod"]], "ueroute (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueRoute"]], "widthofindoorobject (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.widthOfIndoorObject"]], "addnoise (class in toolkit5g.channelprocessing)": [[21, "toolkit5G.ChannelProcessing.AddNoise"]], "applychannel (class in toolkit5g.channelprocessing)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel"]], "enableintertxinterference (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.enableInterTxInterference"]], "isfrequencydomain (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.isFrequencyDomain"]], "memoryconsumptionlevel (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.memoryConsumptionLevel"]], "bitdeinterleaver (class in toolkit5g.ratematcher.ldpc)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"]], "bitinterleaver (class in toolkit5g.ratematcher.ldpc)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver"]], "modorder (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"]], "modorder (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"]], "numbits1 (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"]], "numbits1 (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"]], "numbits2 (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"]], "numbits2 (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"]], "pbchdeinterleaver (class in toolkit5g.physicalchannels.pbch)": [[25, "toolkit5G.PhysicalChannels.PBCH.PBCHDeInterleaver"]], "pbchinterleaver (class in toolkit5g.physicalchannels.pbch)": [[25, "toolkit5G.PhysicalChannels.PBCH.PBCHInterleaver"]], "channeldeinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[26, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [58, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [77, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [120, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [153, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [211, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"]], "channelinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[26, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [58, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [77, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [120, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [153, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [211, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"]], "subblock_deinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[28, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [59, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [78, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [121, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [154, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [212, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"]], "subblock_interleaver (class in toolkit5g.ratematcher.polarcoder)": [[28, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [59, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [78, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [121, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [154, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [212, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"]], "searchfree (class in toolkit5g.mimoprocessing)": [[29, "toolkit5G.MIMOProcessing.SearchFree"]], "typeicodebook (class in toolkit5g.mimoprocessing)": [[29, "toolkit5G.MIMOProcessing.TypeICodeBook"]], "ofdmdemodulator (class in toolkit5g.ofdm)": [[32, "toolkit5G.OFDM.OFDMDemodulator"]], "ofdmmodulator (class in toolkit5g.ofdm)": [[33, "toolkit5G.OFDM.OFDMModulator"]], "transformprecoding (class in toolkit5g.ofdm)": [[34, "toolkit5G.OFDM.TransformPrecoding"], [36, "toolkit5G.OFDM.TransformPrecoding"]], "transformdecoding5g (class in toolkit5g.ofdm)": [[35, "toolkit5G.OFDM.TransformDecoding5G"]], "transformprecoding5g (class in toolkit5g.ofdm)": [[37, "toolkit5G.OFDM.TransformPrecoding5G"]], "dciextraction (class in toolkit5g.payloadgeneration)": [[38, "toolkit5G.PayloadGeneration.DCIExtraction"]], "dcigeneration (class in toolkit5g.payloadgeneration)": [[38, "toolkit5G.PayloadGeneration.DCIGeneration"]], "mibextraction (class in toolkit5g.payloadgeneration)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction"], [46, "toolkit5G.PayloadGeneration.MIBExtraction"]], "mibgeneration (class in toolkit5g.payloadgeneration)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration"], [46, "toolkit5G.PayloadGeneration.MIBGeneration"]], "carrierfreq (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.carrierFreq"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.carrierFreq"]], "carrierfreq (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.carrierFreq"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.carrierFreq"]], "cellbarred (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.cellBarred"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.cellBarred"]], "cellbarred (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.cellBarred"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.cellBarred"]], "choicebit (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.choiceBit"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.choiceBit"]], "choicebit (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.choiceBit"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.choiceBit"]], "controlresourceset0 (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.controlResourceSet0"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.controlResourceSet0"]], "controlresourceset0 (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.controlResourceSet0"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.controlResourceSet0"]], "displayparameters() (toolkit5g.payloadgeneration.mibextraction method)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.displayParameters"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.displayParameters"]], "displayparameters() (toolkit5g.payloadgeneration.mibgeneration method)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.displayParameters"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.displayParameters"]], "dmrstypeaposition (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.dmrsTypeAPosition"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.dmrsTypeAPosition"]], "dmrstypeaposition (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.dmrsTypeAPosition"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.dmrsTypeAPosition"]], "hrfbit (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.hrfBit"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.hrfBit"]], "hrfbit (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.hrfBit"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.hrfBit"]], "intrafrequencyreselection (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.intraFrequencyReselection"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.intraFrequencyReselection"]], "intrafrequencyreselection (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.intraFrequencyReselection"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.intraFrequencyReselection"]], "nssbcandidatesinhrf (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.nssbCandidatesInHrf"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.nssbCandidatesInHrf"]], "nssbcandidatesinhrf (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.nssbCandidatesInHrf"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.nssbCandidatesInHrf"]], "searchspace0 (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.searchSpace0"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.searchSpace0"]], "searchspace0 (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.searchSpace0"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.searchSpace0"]], "ssbindex (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.ssbIndex"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.ssbIndex"]], "ssbindex (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.ssbIndex"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.ssbIndex"]], "ssbsubcarrieroffset (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.ssbSubCarrierOffset"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.ssbSubCarrierOffset"]], "ssbsubcarrieroffset (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.ssbSubCarrierOffset"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.ssbSubCarrierOffset"]], "subcarrierspacingcommon (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.subCarrierSpacingCommon"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.subCarrierSpacingCommon"]], "subcarrierspacingcommon (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.subCarrierSpacingCommon"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.subCarrierSpacingCommon"]], "systemframenumber (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.systemFrameNumber"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.systemFrameNumber"]], "systemframenumber (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.systemFrameNumber"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.systemFrameNumber"]], "demapper (class in toolkit5g.symbolmapping)": [[48, "toolkit5G.SymbolMapping.Demapper"], [60, "toolkit5G.SymbolMapping.Demapper"], [71, "toolkit5G.SymbolMapping.Demapper"], [79, "toolkit5G.SymbolMapping.Demapper"], [98, "toolkit5G.SymbolMapping.Demapper"], [114, "toolkit5G.SymbolMapping.Demapper"], [122, "toolkit5G.SymbolMapping.Demapper"], [170, "toolkit5G.SymbolMapping.Demapper"], [173, "toolkit5G.SymbolMapping.Demapper"], [258, "toolkit5G.SymbolMapping.Demapper"]], "mapper (class in toolkit5g.symbolmapping)": [[49, "toolkit5G.SymbolMapping.Mapper"], [72, "toolkit5G.SymbolMapping.Mapper"], [99, "toolkit5G.SymbolMapping.Mapper"], [115, "toolkit5G.SymbolMapping.Mapper"], [171, "toolkit5G.SymbolMapping.Mapper"], [174, "toolkit5G.SymbolMapping.Mapper"], [259, "toolkit5G.SymbolMapping.Mapper"]], "bitdeselection (class in toolkit5g.ratematcher.polarcoder)": [[57, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [76, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [119, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [152, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [159, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [210, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"]], "bitselection (class in toolkit5g.ratematcher.polarcoder)": [[57, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [76, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [119, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [152, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [159, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [210, "toolkit5G.Ratematcher.PolarCoder.BitSelection"]], "rntimasking (class in toolkit5g.scrambler)": [[62, "toolkit5G.Scrambler.RNTImasking"], [81, "toolkit5G.Scrambler.RNTImasking"], [124, "toolkit5G.Scrambler.RNTImasking"], [164, "toolkit5G.Scrambler.RNTImasking"], [241, "toolkit5G.Scrambler.RNTImasking"]], "rnti (toolkit5g.scrambler.rntimasking property)": [[62, "toolkit5G.Scrambler.RNTImasking.rnti"], [81, "toolkit5G.Scrambler.RNTImasking.rnti"], [124, "toolkit5G.Scrambler.RNTImasking.rnti"], [164, "toolkit5G.Scrambler.RNTImasking.rnti"], [241, "toolkit5G.Scrambler.RNTImasking.rnti"]], "descrambler (class in toolkit5g.scrambler)": [[64, "toolkit5G.Scrambler.DeScrambler"], [83, "toolkit5G.Scrambler.DeScrambler"], [106, "toolkit5G.Scrambler.DeScrambler"], [126, "toolkit5G.Scrambler.DeScrambler"], [163, "toolkit5G.Scrambler.DeScrambler"], [167, "toolkit5G.Scrambler.DeScrambler"], [240, "toolkit5G.Scrambler.DeScrambler"]], "lmax (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.Lmax"], [83, "toolkit5G.Scrambler.DeScrambler.Lmax"], [106, "toolkit5G.Scrambler.DeScrambler.Lmax"], [126, "toolkit5G.Scrambler.DeScrambler.Lmax"], [163, "toolkit5G.Scrambler.DeScrambler.Lmax"], [167, "toolkit5G.Scrambler.DeScrambler.Lmax"], [240, "toolkit5G.Scrambler.DeScrambler.Lmax"]], "c_init (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.c_init"], [83, "toolkit5G.Scrambler.DeScrambler.c_init"], [106, "toolkit5G.Scrambler.DeScrambler.c_init"], [126, "toolkit5G.Scrambler.DeScrambler.c_init"], [163, "toolkit5G.Scrambler.DeScrambler.c_init"], [167, "toolkit5G.Scrambler.DeScrambler.c_init"], [240, "toolkit5G.Scrambler.DeScrambler.c_init"]], "id (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.id"], [83, "toolkit5G.Scrambler.DeScrambler.id"], [106, "toolkit5G.Scrambler.DeScrambler.id"], [126, "toolkit5G.Scrambler.DeScrambler.id"], [163, "toolkit5G.Scrambler.DeScrambler.id"], [167, "toolkit5G.Scrambler.DeScrambler.id"], [240, "toolkit5G.Scrambler.DeScrambler.id"]], "mu (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.mu"], [83, "toolkit5G.Scrambler.DeScrambler.mu"], [106, "toolkit5G.Scrambler.DeScrambler.mu"], [126, "toolkit5G.Scrambler.DeScrambler.mu"], [163, "toolkit5G.Scrambler.DeScrambler.mu"], [167, "toolkit5G.Scrambler.DeScrambler.mu"], [240, "toolkit5G.Scrambler.DeScrambler.mu"]], "nid (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.nID"], [83, "toolkit5G.Scrambler.DeScrambler.nID"], [106, "toolkit5G.Scrambler.DeScrambler.nID"], [126, "toolkit5G.Scrambler.DeScrambler.nID"], [163, "toolkit5G.Scrambler.DeScrambler.nID"], [167, "toolkit5G.Scrambler.DeScrambler.nID"], [240, "toolkit5G.Scrambler.DeScrambler.nID"]], "purpose (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.purpose"], [83, "toolkit5G.Scrambler.DeScrambler.purpose"], [106, "toolkit5G.Scrambler.DeScrambler.purpose"], [126, "toolkit5G.Scrambler.DeScrambler.purpose"], [163, "toolkit5G.Scrambler.DeScrambler.purpose"], [167, "toolkit5G.Scrambler.DeScrambler.purpose"], [240, "toolkit5G.Scrambler.DeScrambler.purpose"]], "q (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.q"], [83, "toolkit5G.Scrambler.DeScrambler.q"], [106, "toolkit5G.Scrambler.DeScrambler.q"], [126, "toolkit5G.Scrambler.DeScrambler.q"], [163, "toolkit5G.Scrambler.DeScrambler.q"], [167, "toolkit5G.Scrambler.DeScrambler.q"], [240, "toolkit5G.Scrambler.DeScrambler.q"]], "rnti (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.rnti"], [83, "toolkit5G.Scrambler.DeScrambler.rnti"], [106, "toolkit5G.Scrambler.DeScrambler.rnti"], [126, "toolkit5G.Scrambler.DeScrambler.rnti"], [163, "toolkit5G.Scrambler.DeScrambler.rnti"], [167, "toolkit5G.Scrambler.DeScrambler.rnti"], [240, "toolkit5G.Scrambler.DeScrambler.rnti"]], "ssbindex (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [83, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [106, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [126, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [163, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [167, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [240, "toolkit5G.Scrambler.DeScrambler.ssbIndex"]], "lmax (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.Lmax"], [84, "toolkit5G.Scrambler.Scrambler.Lmax"], [107, "toolkit5G.Scrambler.Scrambler.Lmax"], [127, "toolkit5G.Scrambler.Scrambler.Lmax"], [165, "toolkit5G.Scrambler.Scrambler.Lmax"], [168, "toolkit5G.Scrambler.Scrambler.Lmax"], [242, "toolkit5G.Scrambler.Scrambler.Lmax"]], "scrambler (class in toolkit5g.scrambler)": [[65, "toolkit5G.Scrambler.Scrambler"], [84, "toolkit5G.Scrambler.Scrambler"], [107, "toolkit5G.Scrambler.Scrambler"], [127, "toolkit5G.Scrambler.Scrambler"], [165, "toolkit5G.Scrambler.Scrambler"], [168, "toolkit5G.Scrambler.Scrambler"], [242, "toolkit5G.Scrambler.Scrambler"]], "c_init (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.c_init"], [84, "toolkit5G.Scrambler.Scrambler.c_init"], [107, "toolkit5G.Scrambler.Scrambler.c_init"], [127, "toolkit5G.Scrambler.Scrambler.c_init"], [165, "toolkit5G.Scrambler.Scrambler.c_init"], [168, "toolkit5G.Scrambler.Scrambler.c_init"], [242, "toolkit5G.Scrambler.Scrambler.c_init"]], "id (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.id"], [84, "toolkit5G.Scrambler.Scrambler.id"], [107, "toolkit5G.Scrambler.Scrambler.id"], [127, "toolkit5G.Scrambler.Scrambler.id"], [165, "toolkit5G.Scrambler.Scrambler.id"], [168, "toolkit5G.Scrambler.Scrambler.id"], [242, "toolkit5G.Scrambler.Scrambler.id"]], "mu (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.mu"], [84, "toolkit5G.Scrambler.Scrambler.mu"], [107, "toolkit5G.Scrambler.Scrambler.mu"], [127, "toolkit5G.Scrambler.Scrambler.mu"], [165, "toolkit5G.Scrambler.Scrambler.mu"], [168, "toolkit5G.Scrambler.Scrambler.mu"], [242, "toolkit5G.Scrambler.Scrambler.mu"]], "nid (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.nID"], [84, "toolkit5G.Scrambler.Scrambler.nID"], [107, "toolkit5G.Scrambler.Scrambler.nID"], [127, "toolkit5G.Scrambler.Scrambler.nID"], [165, "toolkit5G.Scrambler.Scrambler.nID"], [168, "toolkit5G.Scrambler.Scrambler.nID"], [242, "toolkit5G.Scrambler.Scrambler.nID"]], "purpose (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.purpose"], [84, "toolkit5G.Scrambler.Scrambler.purpose"], [107, "toolkit5G.Scrambler.Scrambler.purpose"], [127, "toolkit5G.Scrambler.Scrambler.purpose"], [165, "toolkit5G.Scrambler.Scrambler.purpose"], [168, "toolkit5G.Scrambler.Scrambler.purpose"], [242, "toolkit5G.Scrambler.Scrambler.purpose"]], "q (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.q"], [84, "toolkit5G.Scrambler.Scrambler.q"], [107, "toolkit5G.Scrambler.Scrambler.q"], [127, "toolkit5G.Scrambler.Scrambler.q"], [165, "toolkit5G.Scrambler.Scrambler.q"], [168, "toolkit5G.Scrambler.Scrambler.q"], [242, "toolkit5G.Scrambler.Scrambler.q"]], "rnti (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.rnti"], [84, "toolkit5G.Scrambler.Scrambler.rnti"], [107, "toolkit5G.Scrambler.Scrambler.rnti"], [127, "toolkit5G.Scrambler.Scrambler.rnti"], [165, "toolkit5G.Scrambler.Scrambler.rnti"], [168, "toolkit5G.Scrambler.Scrambler.rnti"], [242, "toolkit5G.Scrambler.Scrambler.rnti"]], "ssbindex (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [84, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [107, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [127, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [165, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [168, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [242, "toolkit5G.Scrambler.Scrambler.ssbIndex"]], "pdschlowerphy (class in toolkit5g.physicalchannels)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy"]], "displaydmrsgrid() (toolkit5g.physicalchannels.pdschlowerphy method)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy.displayDMRSGrid"]], "displayresourcegrid() (toolkit5g.physicalchannels.pdschlowerphy method)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy.displayResourceGrid"]], "pdschdecoderlowerphy (class in toolkit5g.physicalchannels)": [[86, "toolkit5G.PhysicalChannels.PDSCHDecoderLowerPhy"]], "pdschupperphy (class in toolkit5g.physicalchannels)": [[87, "toolkit5G.PhysicalChannels.PDSCHUpperPhy"]], "pdschdecoderupperphy (class in toolkit5g.physicalchannels)": [[88, "toolkit5G.PhysicalChannels.PDSCHDecoderUpperPhy"]], "computetransportblocksize (class in toolkit5g.physicalchannels.pdsch)": [[94, "toolkit5G.PhysicalChannels.PDSCH.ComputeTransportBlockSize"]], "layerdemapper (class in toolkit5g.physicalchannels.pdsch)": [[95, "toolkit5G.PhysicalChannels.PDSCH.LayerDemapper"]], "layermapper (class in toolkit5g.physicalchannels.pdsch)": [[95, "toolkit5G.PhysicalChannels.PDSCH.LayerMapper"]], "bitdeselection (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection"]], "bitselection (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection"]], "ncb (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.Ncb"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.Ncb"]], "ratematchparameters (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters"]], "basegraph (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.baseGraph"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.baseGraph"]], "basegraph (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.baseGraph"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.baseGraph"]], "basegraph (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.baseGraph"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.baseGraph"]], "enablelbrm (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.enableLBRM"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.enableLBRM"]], "enablelbrm (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.enableLBRM"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.enableLBRM"]], "enablelbrm (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.enableLBRM"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.enableLBRM"]], "k0 (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.k0"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.k0"]], "k0 (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.k0"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.k0"]], "k0 (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.k0"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.k0"]], "liftingfactor (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.liftingFactor"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.liftingFactor"]], "liftingfactor (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.liftingFactor"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.liftingFactor"]], "liftingfactor (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.liftingFactor"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.liftingFactor"]], "modorder (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.modOrder"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.modOrder"]], "modorder (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.modOrder"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.modOrder"]], "nldpc (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.nLDPC"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.nLDPC"]], "numcbs (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numCBs"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numCBs"]], "numcodeblocks (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodeBlocks"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodeBlocks"]], "numcodedbits (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numCodedBits"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numCodedBits"]], "numcodedbits (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodedBits"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodedBits"]], "numlayers (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numLayers"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numLayers"]], "numlayers (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numLayers"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numLayers"]], "rvid (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.rvID"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.rvID"]], "rvid (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.rvID"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.rvID"]], "rvid (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.rvID"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.rvID"]], "tbsize (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.tbSize"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.tbSize"]], "tbsize (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.tbSize"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.tbSize"]], "resourcemapperdmrspdsch (class in toolkit5g.resourcemapping)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"]], "displaycdmpattern() (toolkit5g.resourcemapping.resourcemapperdmrspdsch method)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"]], "displayresourcegrid() (toolkit5g.resourcemapping.resourcemapperdmrspdsch method)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"]], "transportblockrxprocessing (class in toolkit5g.physicalchannels.pdsch)": [[108, "toolkit5G.PhysicalChannels.PDSCH.TransportBlockRxProcessing"]], "transportblocktxprocessing (class in toolkit5g.physicalchannels.pdsch)": [[108, "toolkit5G.PhysicalChannels.PDSCH.TransportBlockTxProcessing"]], "resourcedemapperformat0 (class in toolkit5g.resourcemapping)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0"]], "formatpucch (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.formatPUCCH"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.formatPUCCH"]], "indexpucch (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.indexPUCCH"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_0"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_1"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.maxNumPRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numInterlacedRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numOfInterlaces"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numberOfSymb"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.offset"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.offset"]], "rg_size (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.rg_Size"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.secondHopPRB"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.seqLength"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.start_SymbIndex"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.startingPRB"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.startingPRB"]], "resourcemapperformat0 (class in toolkit5g.resourcemapping)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0"]], "formatpucch (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.formatPUCCH"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.formatPUCCH"]], "indexpucch (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.indexPUCCH"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_0"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_1"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.maxNumPRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numInterlacedRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numOfInterlaces"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numberOfSymb"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.offset"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.offset"]], "rg_size (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.rg_Size"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.secondHopPRB"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.seqLength"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.start_SymbIndex"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.startingPRB"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.startingPRB"]], "pucchformat0sequence (class in toolkit5g.sequencegeneration)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence"]], "controlinfo (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.controlInfo"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.controlInfo"]], "indexpucch (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.indexPUCCH"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.indexPUCCH"]], "initial_cyclicshift (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.initial_CyclicShift"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.initial_CyclicShift"]], "m_cs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.m_CS"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.m_CS"]], "nid (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.nID"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.nID"]], "numbatches (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numBatches"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numBatches"]], "numinterlacedrbs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numInterlacedRBs"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numInterlacedRBs"]], "numrbs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numRBs"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numRBs"]], "numberofsymb (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numberOfSymb"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numberOfSymb"]], "pucch_grouphopping (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.pucch_GroupHopping"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.pucch_GroupHopping"]], "seqnumber (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.seqNumber"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.seqNumber"]], "slotnumber (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.slotNumber"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.slotNumber"]], "start_symbindex (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.start_SymbIndex"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.start_SymbIndex"]], "despreadingformat1 (class in toolkit5g.resourcemapping)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1"]], "spreadingfactor (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.SpreadingFactor"]], "indexpucch (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.indexPUCCH"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.indexPUCCH"]], "maxnumprbs (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.maxNumPRBs"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.maxNumPRBs"]], "numberofsymb (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.numberOfSymb"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.numberOfSymb"]], "start_symbindex (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.start_SymbIndex"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.start_SymbIndex"]], "timedomainocc (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.timedomainOCC"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.timedomainOCC"]], "resourcedemapperformat1 (class in toolkit5g.resourcemapping)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1"]], "indexpucch (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.indexPUCCH"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_0"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_1"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.maxNumPRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numInterlacedRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numOfInterlaces"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numberOfSymb"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.offset"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.offset"]], "rg_size (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.rg_Size"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.secondHopPRB"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.seqLength"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.start_SymbIndex"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.startingPRB"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.startingPRB"]], "resourcemapperformat1 (class in toolkit5g.resourcemapping)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1"]], "indexpucch (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.indexPUCCH"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_0"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_1"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.maxNumPRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numInterlacedRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numOfInterlaces"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numberOfSymb"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.offset"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.offset"]], "rg_size (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.rg_Size"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.secondHopPRB"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.seqLength"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.start_SymbIndex"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.startingPRB"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.startingPRB"]], "pucchformat1sequence (class in toolkit5g.sequencegeneration)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence"]], "indexpucch (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.indexPUCCH"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.indexPUCCH"]], "initial_cyclicshift (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.initial_CyclicShift"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.initial_CyclicShift"]], "m_cs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.m_CS"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.m_CS"]], "maxnumprbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.maxNumPRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.maxNumPRBs"]], "nhop (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nHop"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nHop"]], "nid (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nID"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nID"]], "numinterlacedrbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numInterlacedRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numInterlacedRBs"]], "numrbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numRBs"]], "numberofsymb (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numberOfSymb"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numberOfSymb"]], "pucch_grouphopping (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.pucch_GroupHopping"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.pucch_GroupHopping"]], "slotnumber (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.slotNumber"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.slotNumber"]], "start_symbindex (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.start_SymbIndex"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.start_SymbIndex"]], "spreadingfactor (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.SpreadingFactor"]], "spreadingformat1 (class in toolkit5g.resourcemapping)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1"]], "indexpucch (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.indexPUCCH"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.indexPUCCH"]], "numrbs (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.numRBs"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.numberOfSymb"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.numberOfSymb"]], "start_symbindex (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.start_SymbIndex"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.start_SymbIndex"]], "timedomainocc (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.timedomainOCC"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.timedomainOCC"]], "puschdecoderupperphy (class in toolkit5g.physicalchannels)": [[181, "toolkit5G.PhysicalChannels.PUSCHDecoderUpperPhy"]], "puschupperphy (class in toolkit5g.physicalchannels)": [[182, "toolkit5G.PhysicalChannels.PUSCHUpperPhy"]], "pbch (class in toolkit5g.physicalchannels)": [[184, "toolkit5G.PhysicalChannels.PBCH"]], "pbchdecoder (class in toolkit5g.physicalchannels)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder"]], "chil_bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.chIL_bits"]], "channeldeinterleaverbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.channelDeInterleaverBits"]], "crccheck (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.crcCheck"]], "decrcbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.deCRCBits"]], "descrambledbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.deScrambledBits"]], "descrambled2llrs (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.descrambled2LLRs"]], "encbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.encBits"]], "iilbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.iILBits"]], "ilbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.ilBits"]], "inputdeinteleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.inputDeinteleavedBits"]], "llr (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.llr"]], "mib (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.mib"]], "mibrx (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.mibRx"]], "payloadcrc (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.payloadCRC"]], "payloadmib (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.payloadMIB"]], "pbchdeinterleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.pbchDeInterleavedBits"]], "polardecodedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.polarDecodedBits"]], "ratedematedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.rateDematedBits"]], "rmbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.rmBits"]], "sbil_bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.sBIL_bits"]], "scr2bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.scr2bits"]], "scrbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.scrBits"]], "subblockdeinterleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.subBlockDeinterleavedBits"]], "pdcch (class in toolkit5g.physicalchannels)": [[185, "toolkit5G.PhysicalChannels.PDCCH"]], "pdcchdecoder (class in toolkit5g.physicalchannels)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder"]], "check (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.check"]], "dcibil (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciBIL"]], "dcibits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.dciBits"]], "dcicrc (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciCRC"]], "dciibi (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciIBI"]], "dcirm (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciRM"]], "dcirnti (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciRNTI"]], "dciscr (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciSCR"]], "decodedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.decodedBits"]], "dematchedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.dematchedBits"]], "descrambledllrs (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.descrambledLLRs"]], "encbits (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.encBits"]], "ibdilbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.ibDILBits"]], "llr (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.llr"]], "sbdbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.sbdBits"]], "unmaskedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.unmaskedBits"]], "psbch (class in toolkit5g.physicalchannels)": [[188, "toolkit5G.PhysicalChannels.PSBCH"]], "psbchdecoder (class in toolkit5g.physicalchannels)": [[188, "toolkit5G.PhysicalChannels.PSBCHDecoder"]], "pscchlowerphy (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHLowerPhy"]], "pscchlowerphydecoder (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHLowerPhyDecoder"]], "pscchupperphy (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHUpperPhy"]], "pscchupperphydecoder (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHUpperPhyDecoder"]], "dft_doa (class in toolkit5g.positioning)": [[192, "toolkit5G.Positioning.DFT_DoA"]], "esprit_doa (class in toolkit5g.positioning)": [[193, "toolkit5G.Positioning.ESPRIT_DoA"]], "music_doa (class in toolkit5g.positioning)": [[194, "toolkit5G.Positioning.MUSIC_DoA"]], "doaestimation (class in toolkit5g.positioning)": [[195, "toolkit5G.Positioning.DoAEstimation"]], "gradientdescentdoa (class in toolkit5g.positioning)": [[196, "toolkit5G.Positioning.GradientDescentDoA"]], "leastsquaredoa (class in toolkit5g.positioning)": [[196, "toolkit5G.Positioning.LeastSquareDoA"]], "hybridtdoaaoa (class in toolkit5g.positioning)": [[197, "toolkit5G.Positioning.HybridTDoAAoA"]], "hybridtoaaoa (class in toolkit5g.positioning)": [[197, "toolkit5G.Positioning.HybridToAAoA"]], "gradientdescenttdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.GradientDescentTDoA"]], "leastsquaretdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.LeastSquareTDoA"]], "newtonraphsontdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.NewtonRaphsonTDoA"]], "leastsquaretoa (class in toolkit5g.positioning)": [[199, "toolkit5G.Positioning.LeastSquareToA"]], "dft_toa (class in toolkit5g.positioning)": [[202, "toolkit5G.Positioning.DFT_ToA"]], "esprit_toa (class in toolkit5g.positioning)": [[203, "toolkit5G.Positioning.ESPRIT_ToA"]], "music_toa (class in toolkit5g.positioning)": [[204, "toolkit5G.Positioning.MUSIC_ToA"]], "toaestimation (class in toolkit5g.positioning)": [[205, "toolkit5G.Positioning.ToAEstimation"]], "positionestimation (class in toolkit5g.positioning)": [[206, "toolkit5G.Positioning.PositionEstimation"]], "coreset (class in toolkit5g.resourcemapping)": [[227, "toolkit5G.ResourceMapping.CORESET"]], "displaycoresetreg_cce_mapping() (toolkit5g.resourcemapping.coreset method)": [[227, "toolkit5G.ResourceMapping.CORESET.displayCoresetREG_CCE_Mapping"]], "resourcemappercsirs (class in toolkit5g.resourcemapping)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS"]], "displaycdmpattern() (toolkit5g.resourcemapping.resourcemappercsirs method)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS.displayCDMPattern"]], "displayresourcegrid() (toolkit5g.resourcemapping.resourcemappercsirs method)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS.displayResourceGrid"]], "resourcemappingpdcch (class in toolkit5g.resourcemapping)": [[230, "toolkit5G.ResourceMapping.ResourceMappingPDCCH"]], "resourcemapperprs (class in toolkit5g.resourcemapping)": [[231, "toolkit5G.ResourceMapping.ResourceMapperPRS"]], "resourcemappingpscch (class in toolkit5g.resourcemapping)": [[232, "toolkit5G.ResourceMapping.ResourceMappingPSCCH"]], "resourcemapperptrspdsch (class in toolkit5g.resourcemapping)": [[233, "toolkit5G.ResourceMapping.ResourceMapperPTRSPDSCH"]], "sssb_grid (class in toolkit5g.resourcemapping)": [[235, "toolkit5G.ResourceMapping.SSSB_Grid"]], "displaygrid() (toolkit5g.resourcemapping.sssb_grid method)": [[235, "toolkit5G.ResourceMapping.SSSB_Grid.displayGrid"]], "searchspaceset (class in toolkit5g.resourcemapping)": [[236, "toolkit5G.ResourceMapping.SearchSpaceSet"]], "ssb_grid (class in toolkit5g.resourcemapping)": [[237, "toolkit5G.ResourceMapping.SSB_Grid"]], "displaygrid() (toolkit5g.resourcemapping.ssb_grid method)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.displayGrid"]], "dmrsindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.dmrsIndices"]], "pbchindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.pbchIndices"]], "pssindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.pssIndices"]], "sssindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.sssIndices"]], "resourcemapperssb (class in toolkit5g.resourcemapping)": [[238, "toolkit5G.ResourceMapping.ResourceMapperSSB"]], "lowpaprsequencetype1 (class in toolkit5g.sequencegeneration)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1"]], "basesequencenumber (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.baseSequenceNumber"]], "cyclicshift (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.cyclicShift"]], "delta (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.delta"]], "groupnumber (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.groupNumber"]], "lengthofsequence (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.lengthOfSequence"]], "numrbs (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.numRBs"]], "lowpaprsequencetype2 (class in toolkit5g.sequencegeneration)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2"]], "cinit (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.cinit"]], "delta (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.delta"]], "groupnumber (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.groupNumber"]], "groupnumber_or_cinit (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.groupNumber_Or_cinit"]], "lengthofsequence (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.lengthOfSequence"]], "numrbs (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.numRBs"]], "csirs (class in toolkit5g.sequencegeneration)": [[248, "toolkit5G.SequenceGeneration.CSIRS"]], "dmrs (class in toolkit5g.sequencegeneration)": [[249, "toolkit5G.SequenceGeneration.DMRS"]], "pnsequence (class in toolkit5g.sequencegeneration)": [[250, "toolkit5G.SequenceGeneration.PNSequence"]], "prs (class in toolkit5g.sequencegeneration)": [[251, "toolkit5G.SequenceGeneration.PRS"]], "pss (class in toolkit5g.sequencegeneration)": [[252, "toolkit5G.SequenceGeneration.PSS"]], "s_pss (class in toolkit5g.sequencegeneration)": [[253, "toolkit5G.SequenceGeneration.S_PSS"]], "srs (class in toolkit5g.sequencegeneration)": [[254, "toolkit5G.SequenceGeneration.SRS"]], "lengthofsequence (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.lengthOfSequence"]], "nrofcyclicshift (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.nrOfCyclicShift"]], "nrofsymbols (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.nrofSymbols"]], "sequenceid (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.sequenceId"]], "slotindex (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.slotIndex"]], "startposition (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.startPosition"]], "symbolindices (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.symbolIndices"]], "transmissioncomb (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.transmissionComb"]], "sss (class in toolkit5g.sequencegeneration)": [[255, "toolkit5G.SequenceGeneration.SSS"]], "s_sss (class in toolkit5g.sequencegeneration)": [[256, "toolkit5G.SequenceGeneration.S_SSS"]], "csiconfiguration (class in toolkit5g.configurations)": [[261, "toolkit5G.Configurations.CSIConfiguration"]], "generatevalidssbparameters (class in toolkit5g.configurations)": [[262, "toolkit5G.Configurations.GenerateValidSSBParameters"]], "pdschlowerphyconfiguration (class in toolkit5g.configurations)": [[263, "toolkit5G.Configurations.PDSCHLowerPhyConfiguration"]], "pdschupperphyconfiguration (class in toolkit5g.configurations)": [[264, "toolkit5G.Configurations.PDSCHUpperPhyConfiguration"]], "srsconfiguration (class in toolkit5g.configurations)": [[265, "toolkit5G.Configurations.SRSConfiguration"]], "bhop (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.bHop"]], "bsrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.bSRS"]], "betasrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.betaSRS"]], "csrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.cSRS"]], "comboffset (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.combOffset"]], "enablestartrbhopping (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.enableStartRBHopping"]], "freqdomainposition (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqDomainPosition"]], "freqdomainshift (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqDomainShift"]], "freqscalingfactor (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqScalingFactor"]], "grouporsequencehopping (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.groupOrSequenceHopping"]], "lengthofsequence (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.lengthOfSequence"]], "nrofcyclicshift (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrOfCyclicShift"]], "nrofsrs_ports (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrofSRS_Ports"]], "nrofsymbols (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrofSymbols"]], "offsetinslots (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.offsetInSlots"]], "periodicityinslots (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.periodicityInSlots"]], "purpose (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.purpose"]], "repetitionfactor (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.repetitionFactor"]], "resourcegridsizeinrbs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.resourceGridSizeinRBs"]], "resourcetype (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.resourceType"]], "sequenceid (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.sequenceId"]], "slotindex (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.slotIndex"]], "startposition (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.startPosition"]], "startrbindex (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.startRBIndex"]], "symbolindices (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.symbolIndices"]], "systemframenumber (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.systemFrameNumber"]], "transmissioncomb (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.transmissionComb"]], "ssbconfiguration (class in toolkit5g.configurations)": [[266, "toolkit5G.Configurations.SSBConfiguration"]], "timefrequency5gparameters (class in toolkit5g.configurations)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters"]], "getgaurdband_fr1() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getGaurdBand_FR1"]], "getgaurdband_fr2() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getGaurdBand_FR2"]], "getnumberrb_fr1() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getNumberRB_FR1"]], "getnumberrb_fr2() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getNumberRB_FR2"]], "carrierfrequencyoffsetestimation (class in toolkit5g.receiveralgorithms)": [[268, "toolkit5G.ReceiverAlgorithms.CarrierFrequencyOffsetEstimation"]], "channelestimationandequalizationpbch (class in toolkit5g.receiveralgorithms)": [[269, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPBCH"]], "channelestimationandequalizationpdcch (class in toolkit5g.receiveralgorithms)": [[270, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPDCCH"]], "channelestimationandequalizationpdsch (class in toolkit5g.receiveralgorithms)": [[271, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPDSCH"]], "dmrsparameterdetection (class in toolkit5g.receiveralgorithms)": [[272, "toolkit5G.ReceiverAlgorithms.DMRSParameterDetection"]], "pssdetection (class in toolkit5g.receiveralgorithms)": [[273, "toolkit5G.ReceiverAlgorithms.PSSDetection"]], "sssdetection (class in toolkit5g.receiveralgorithms)": [[274, "toolkit5G.ReceiverAlgorithms.SSSDetection"]], "channelestimationcsirs (class in toolkit5g.receiveralgorithms)": [[275, "toolkit5G.ReceiverAlgorithms.ChannelEstimationCSIRS"]], "channelestimationsrs (class in toolkit5g.receiveralgorithms)": [[276, "toolkit5G.ReceiverAlgorithms.ChannelEstimationSRS"]], "pdcchscheduler (class in toolkit5g.scheduler)": [[278, "toolkit5G.Scheduler.PDCCHScheduler"]], "roundrobinscheduler (class in toolkit5g.scheduler)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler"]], "firstacrosstime (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.firstAcrossTime"]], "numrb (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numRB"]], "numsymbol (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numSymbol"]], "numuescheduledacrossfreq (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numUEscheduledAcrossFreq"]], "numuescheduledacrosstime (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numUEscheduledAcrossTime"]], "linkadaptation (class in toolkit5g.scheduler)": [[280, "toolkit5G.Scheduler.LinkAdaptation"]], "selectmcs() (toolkit5g.scheduler.linkadaptation method)": [[280, "toolkit5G.Scheduler.LinkAdaptation.selectMCS"]], "rankadaptation (class in toolkit5g.scheduler)": [[281, "toolkit5G.Scheduler.RankAdaptation"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["GettingStarted", "api/5G_Toolkit/5Gtoolkit", "api/5G_Toolkit/CRC/crc", "api/5G_Toolkit/CRC/crc.crcDecoder", "api/5G_Toolkit/CRC/crc.crcEncoder", "api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components", "api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller", "api/5G_Toolkit/ChannelCoder/channelCoder", "api/5G_Toolkit/ChannelModels/antennaArray", "api/5G_Toolkit/ChannelModels/channelGenerator", "api/5G_Toolkit/ChannelModels/channelModels", "api/5G_Toolkit/ChannelModels/nodeMobility", "api/5G_Toolkit/ChannelModels/parameterGenerator", "api/5G_Toolkit/ChannelModels/simulationLayout", "api/5G_Toolkit/ChannelProcessing/channelProcessing", "api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise", "api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel", "api/5G_Toolkit/Interleaver/interleavers", "api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver", "api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers", "api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver", "api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver", "api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver", "api/5G_Toolkit/MIMOProcessing/codeBooks", "api/5G_Toolkit/MIMOProcessing/mimoProcessing", "api/5G_Toolkit/OFDM/ofdm", "api/5G_Toolkit/OFDM/ofdm.demodulator", "api/5G_Toolkit/OFDM/ofdm.modulator", "api/5G_Toolkit/OFDM/ofdm.transformDecoding", "api/5G_Toolkit/OFDM/ofdm.transformDecoding5G", "api/5G_Toolkit/OFDM/ofdm.transformprecoding", "api/5G_Toolkit/OFDM/ofdm.transformprecoding5G", "api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci", "api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib", "api/5G_Toolkit/PayloadGeneration/payloadGeneration", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format3", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format4", "api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy", "api/5G_Toolkit/PhysicalChannels/physicalChannels", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.prach", "api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA", "api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation", "api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid", "api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA", "api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms", "api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA", "api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation", "api/5G_Toolkit/Positioning/positioning", "api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection", "api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver", "api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc", "api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver", "api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder", "api/5G_Toolkit/Ratematcher/ratematcher", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4", "api/5G_Toolkit/ResourceMapping/resourceMapping", "api/5G_Toolkit/ResourceMapping/resourceMapping.coreset", "api/5G_Toolkit/ResourceMapping/resourceMapping.csirs", "api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH", "api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch", "api/5G_Toolkit/ResourceMapping/resourceMapping.prs", "api/5G_Toolkit/ResourceMapping/resourceMapping.pscch", "api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH", "api/5G_Toolkit/ResourceMapping/resourceMapping.pucch", "api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb", "api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssb", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration", "api/5G_Toolkit/Scrambler/scrambler", "api/5G_Toolkit/Scrambler/scrambler.deScrambler", "api/5G_Toolkit/Scrambler/scrambler.rntiMasking", "api/5G_Toolkit/Scrambler/scrambler.scrambler", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss", "api/5G_Toolkit/SymbolMapping/symbolMapping", "api/5G_Toolkit/SymbolMapping/symbolMapping.demapper", "api/5G_Toolkit/SymbolMapping/symbolMapping.mapper", "api/5G_Toolkit/[N]Configurations/configurations", "api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters", "api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration", "api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters", "api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection", "api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS", "api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS", "api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms", "api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation", "api/5G_Toolkit/[N]Scheduler/scheduler", "api/Built_using_5G_Toolkit/builtUsing5GToolkit", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH", "api/Integration_with_SDR/Integration_with_SDRs", "api/LearningResources/GW-IC5GS", "api/LearningResources/LearningResources", "api/License/license", "api/Preview_of_Next_Release/FeatureList", "api/Previous_Versions/PreviousVersions", "api/Projects/Project1/learning2Demap", "api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA", "api/Projects/Project10/project10", "api/Projects/Project2/Blocking Probability for Different AL distributions", "api/Projects/Project2/Blocking Probability for Different ALs", "api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level", "api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability", "api/Projects/Project2/Impact of UEs Capability on Blocking Probability", "api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability", "api/Projects/Project2/project2", "api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks", "api/Projects/Project3/Generate_Channel_Datasets", "api/Projects/Project3/project3", "api/Projects/Project3/trainCSINet", "api/Projects/Project4/project4", "api/Projects/Project5/project5", "api/Projects/Project6/project6", "api/Projects/Project7/E2E_Learning_for_Physical_Layer", "api/Projects/Project8/project8", "api/Projects/Project9/project9", "api/Projects/Projects", "api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes", "api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels", "api/Tutorials/Tutorial10/tutorial9", "api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks", "api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks", "api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure]", "api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding", "api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes", "api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory", "api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA", "api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks", "api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA", "api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM", "api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS", "api/Tutorials/Tutorial3/Tutorial3_PolarCodes", "api/Tutorials/Tutorial4/Tutorial4_LDPCCodes", "api/Tutorials/Tutorial4/aggregateResults", "api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains", "api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations", "api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain", "api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot", "api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site", "api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond", "api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies", "api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains", "api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models", "api/Tutorials/Tutorial5/tutorial5", "api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB", "api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels", "api/Tutorials/Tutorial8/pucchFormat0_Tutorial", "api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G", "api/Tutorials/Tutorials", "api/WeekChallenge/challenge", "api/WeekChallenge/challengeArxiv", "api/WeekChallenge/challengeOftheWeek", "detailedInstall", "detailedInstall2", "index", "install", "install2", "releaseNotes", "test_GettingStarted"], "filenames": ["GettingStarted.rst", "api/5G_Toolkit/5Gtoolkit.rst", "api/5G_Toolkit/CRC/crc.rst", "api/5G_Toolkit/CRC/crc.crcDecoder.rst", "api/5G_Toolkit/CRC/crc.crcEncoder.rst", "api/5G_Toolkit/ChannelCoder/HammingCoder/channelCoder.hamming.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingReceiver.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.codeblockprocessingTransmitter.rst", "api/5G_Toolkit/ChannelCoder/LDPC/channelCoder.ldpc.ldpcParameters.rst", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.rst", "api/5G_Toolkit/ChannelCoder/PolarCoder/channelCoder.polar.components.rst", "api/5G_Toolkit/ChannelCoder/ReedMullerCoder/channelCoder.reedMuller.rst", "api/5G_Toolkit/ChannelCoder/channelCoder.rst", "api/5G_Toolkit/ChannelModels/antennaArray.rst", "api/5G_Toolkit/ChannelModels/channelGenerator.rst", "api/5G_Toolkit/ChannelModels/channelModels.rst", "api/5G_Toolkit/ChannelModels/nodeMobility.rst", "api/5G_Toolkit/ChannelModels/parameterGenerator.rst", "api/5G_Toolkit/ChannelModels/simulationLayout.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.addNoise.rst", "api/5G_Toolkit/ChannelProcessing/channelProcessing.applyChannel.rst", "api/5G_Toolkit/Interleaver/interleavers.rst", "api/5G_Toolkit/Interleaver/interleavers.lpdc.bitInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.pbchInterleavers.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.channelInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.inputBitInterleaver.rst", "api/5G_Toolkit/Interleaver/interleavers.polar.subBlockInterleaver.rst", "api/5G_Toolkit/MIMOProcessing/codeBooks.rst", "api/5G_Toolkit/MIMOProcessing/mimoProcessing.rst", "api/5G_Toolkit/OFDM/ofdm.rst", "api/5G_Toolkit/OFDM/ofdm.demodulator.rst", "api/5G_Toolkit/OFDM/ofdm.modulator.rst", "api/5G_Toolkit/OFDM/ofdm.transformDecoding.rst", "api/5G_Toolkit/OFDM/ofdm.transformDecoding5G.rst", "api/5G_Toolkit/OFDM/ofdm.transformprecoding.rst", "api/5G_Toolkit/OFDM/ofdm.transformprecoding5G.rst", "api/5G_Toolkit/PayloadGeneration/DCI/payloadGeneration.dci.rst", "api/5G_Toolkit/PayloadGeneration/MIB/payloadGeneration.mib.rst", "api/5G_Toolkit/PayloadGeneration/payloadGeneration.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.mib.mib.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchInterleaver.pbchInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.pbchScrambler.pbchScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PBCH/subcomponents/physicalChannels.pbch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhy.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.LowerPhyDecoder.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/physicalChannels.pdsch.UpperPhyDecoder.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/PDSCH.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/ReceiverUpperPHY.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/TransmitterUpperPHY.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockConcatenation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.codeblockSegmentation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.computeTBsize.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.layermapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ldpcCodec.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.resourceMappingDMRS.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PDSCH/subcomponents/physicalChannels.pdsch.components.transportblockProcessing.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.crc.crc.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.inputBitInterleaver.inputBitInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.polar.polarCoder.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.channelInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.ratematching.subblockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.resourceMapping.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.rnti.rnti.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PSCCH/subcomponents/physicalChannels.pdcch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/Format0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceDemappingFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/ResourceMappingFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format0/SequenceGenerationFormat0.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/DespreadingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/Format1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceDemappingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/ResourceMappingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SequenceGenerationFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format1/SpreadingFormat1.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/Format2_3_4.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/PolarCoder/channelCoder.polar.components.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/SBL/channelCoder.sbl.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.ChannelCoding.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.polarCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/ChannelCoding/physicalChannels.pucch.components.sblCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockConcatenation/physicalChannels.pucch.components.CodeBlockConcatenation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/CodeBlockSegmentation/physicalChannels.pucch.components.CodeBlockSegmentation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/PUCCHComponents.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ChannelCodingOfSmallBlockLength/ratematcher.ChannelCodingOfSmallBlockLength.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/PolarCoder/ratematcher.polarcoder.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/Ratematcher/ratematcher.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.Interleaver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.bitSelection.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.polarCodec.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/RateMatching/physicalChannels.pucch.components.ratematching.sbl.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.deScrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.rntiMasking.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/Scrambler/scrambler.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.descrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/Scrambler/physicalChannels.pucch.components.scrambling.scrambler.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.demapper.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/SymbolMapping_/symbolMapping.mapper.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolDemapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHComponents/SymbolMapping/physicalChannels.pucch.components.modulation.symbolMapping.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHReceiver/PUCCHReceiver.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format2_3_4/PUCCHTransmitter/PUCCHTransmitter.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format3.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/Format4.rst", "api/5G_Toolkit/PhysicalChannels/PUCCH/PUCCH.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCH.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHDecoderUpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/PUSCH/PUSCHUpperPhy.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pbch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdcch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pdsch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.prach.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.psbch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pscch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pucch.rst", "api/5G_Toolkit/PhysicalChannels/physicalChannels.pusch.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.dftDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.espritDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/methods/positioning.doaEstimation.musicDoA.rst", "api/5G_Toolkit/Positioning/Angle_Estimation/positioning.doaEstimation.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/DoA/positioning.optimization_Algorithms.DoA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/Hybrid/positioning.optimization_Algorithms.Hybrid.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/TDoA/positioning.optimization_Algorithms.TDoA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/ToA/positioning.optimization_Algorithms.leastSquareToA.rst", "api/5G_Toolkit/Positioning/Optimization_Algorithms/positioning.optimization_Algorithms.rst", "api/5G_Toolkit/Positioning/Position_Estimation/positioning.position_Estimation.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.dftToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.espritToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/methods/positioning.toaEstimation.musicToA.rst", "api/5G_Toolkit/Positioning/Time_Estimation/positioning.toaEstimation.rst", "api/5G_Toolkit/Positioning/positioning.rst", "api/5G_Toolkit/Ratematcher/LDPC/BitSelection/ratematcher.ldpc.bitSelection.rst", "api/5G_Toolkit/Ratematcher/LDPC/Interleavers/ratematcher.ldpc.bitInterleaver.rst", "api/5G_Toolkit/Ratematcher/LDPC/ratematcher.ldpc.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/BitSelection/ratematcher.polarcoder.bitSelection.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.channelInterleavers.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/Interleavers/ratematcher.polarcoder.subBlockInterleaver.rst", "api/5G_Toolkit/Ratematcher/PolarCoder/ratematcher.polarcoder.rst", "api/5G_Toolkit/Ratematcher/ratematcher.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceDemappingFormat0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format0/ResourceMappingFormat0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/DespreadingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceDemappingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/ResourceMappingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/Format1/SpreadingFormat1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format0.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format1.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format2.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format3.rst", "api/5G_Toolkit/ResourceMapping/PUCCH/resourceMapping.pucch.format4.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.coreset.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.csirs.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.dmrsPDSCH.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pdcch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.prs.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pscch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ptrsPDSCH.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.pucch.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.s_ssb.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.searchSpace.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssb.rst", "api/5G_Toolkit/ResourceMapping/resourceMapping.ssbGeneration.rst", "api/5G_Toolkit/Scrambler/scrambler.rst", "api/5G_Toolkit/Scrambler/scrambler.deScrambler.rst", "api/5G_Toolkit/Scrambler/scrambler.rntiMasking.rst", "api/5G_Toolkit/Scrambler/scrambler.scrambler.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration1.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.LowPAPRSequenceGeneration2.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat0.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.SequenceGenerationFormat1.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.csirs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.dmrs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pnSequence.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.prs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.pss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.spss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.srs.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.sss.rst", "api/5G_Toolkit/SequenceGeneration/sequenceGeneration.ssss.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.demapper.rst", "api/5G_Toolkit/SymbolMapping/symbolMapping.mapper.rst", "api/5G_Toolkit/[N]Configurations/configurations.rst", "api/5G_Toolkit/[N]Configurations/configurations.csiConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.generateValidSSBParameters.rst", "api/5G_Toolkit/[N]Configurations/configurations.pdschLowerPhyConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.pdschUpperPhyConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.srsConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.ssbConfiguration.rst", "api/5G_Toolkit/[N]Configurations/configurations.timeFrequency_5GParameters.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/CFOEstimation/cfoEstimation.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPBCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDCCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/ChannelEstimation_and_Equalization/channelEstimationAndEqualizationPDSCH.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.dmrsParameterDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.pssDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/DL_Synchronization/receiverAlgorithms.sssDetection.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/Downlink_CSI_Acquisition/channelEstimationCSIRS.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/Positioning/channelEstimationSRS.rst", "api/5G_Toolkit/[N]ReceiverAlgorithms/receiverAlgorithms.rst", "api/5G_Toolkit/[N]Scheduler/PDCCHScheduler/pdcchScheduler.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/ResourceAllocation/roundRobinScheduler.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/linkAdpatation.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/rankAdaptation.rst", "api/5G_Toolkit/[N]Scheduler/PDSCHScheduler/resourceAllocation.rst", "api/5G_Toolkit/[N]Scheduler/scheduler.rst", "api/Built_using_5G_Toolkit/builtUsing5GToolkit.rst", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/Time_Synchronization.rst", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[BS-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/1.Time_Synchronization_using_PSS/[UE-Implementation]DL_Time(Frame)_Synchronization_using_PSS_in_5G.ipynb", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb", "api/Integration_with_SDR/2.CFO_Estimation_and_Correction_using_SSB/CFO_Correction.rst", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/5G_Downlink_Synchronization_in_5G_on_Plutto-SDR.ipynb", "api/Integration_with_SDR/3.Downlink_Synchronization_in_5G_using_SSB/Downlink_Synchronization.rst", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication.rst", "api/Integration_with_SDR/4.Data_Communication_in_5G/5G_Data_Communication_using_PDSCH.ipynb", "api/Integration_with_SDR/Integration_with_SDRs.rst", "api/LearningResources/GW-IC5GS.rst", "api/LearningResources/LearningResources.rst", "api/License/license.md", "api/Preview_of_Next_Release/FeatureList.rst", "api/Previous_Versions/PreviousVersions.rst", "api/Projects/Project1/learning2Demap.ipynb", "api/Projects/Project10/[SLS]Hybrid_Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA_AoA.ipynb", "api/Projects/Project10/project10.rst", "api/Projects/Project2/Blocking Probability for Different AL distributions.ipynb", "api/Projects/Project2/Blocking Probability for Different ALs.ipynb", "api/Projects/Project2/Blocking Probability vs Number of Candidates per Aggregation Level.ipynb", "api/Projects/Project2/Impact of Scheduling Strategy on Blocking Probability.ipynb", "api/Projects/Project2/Impact of UEs Capability on Blocking Probability.ipynb", "api/Projects/Project2/Minimum CORESET Size for a Target Blocking Probability.ipynb", "api/Projects/Project2/project2.rst", "api/Projects/Project3/CSI_Compression_and_Reconstruction_using_CSINet_for_TDD_Massive_MIMO_5G_Networks.ipynb", "api/Projects/Project3/Generate_Channel_Datasets.ipynb", "api/Projects/Project3/project3.rst", "api/Projects/Project3/trainCSINet.ipynb", "api/Projects/Project4/project4.rst", "api/Projects/Project5/project5.rst", "api/Projects/Project6/project6.rst", "api/Projects/Project7/E2E_Learning_for_Physical_Layer.ipynb", "api/Projects/Project8/project8.rst", "api/Projects/Project9/project9.rst", "api/Projects/Projects.rst", "api/Tutorials/Tutorial1/BER_Analysis_of_Hamming_Codes.ipynb", "api/Tutorials/Tutorial10/Link_Level_and_System_Level_Simulation_for_Physical_Downlink_Control_Channels.ipynb", "api/Tutorials/Tutorial10/tutorial9.rst", "api/Tutorials/Tutorial12/SVD_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.ipynb", "api/Tutorials/Tutorial13/Type1_Codebook_based_Downlink_Precoding_and_Combining_for_Massive_MIMO_5G_Networks.ipynb", "api/Tutorials/Tutorial14/Beam_management_in_5G_Networks_using_SSB[P1-Procedure].ipynb", "api/Tutorials/Tutorial18[PDCCH_Blind_Decoding]/PDCCH_Blind_Decoding.ipynb", "api/Tutorials/Tutorial2/Tutorial2_ReedMullerCodes.ipynb", "api/Tutorials/Tutorial21+/E2E_Downlink_TDoA_Based_Positioning_for_millimeter_Wave_5G_Networks_Deployed_in_Indoor_Factory.ipynb", "api/Tutorials/Tutorial21+/E2E_Downlink_ToA_Based_Positioning_in_5G_Networks.ipynb", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-TDoA.ipynb", "api/Tutorials/Tutorial21+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-ToA.ipynb", "api/Tutorials/Tutorial25+/[LLS]DL-AoD_Based_Positioning_in_5G_Networks.ipynb", "api/Tutorials/Tutorial25+/[SLS]Positioning_in_IndoorFactory_5G_Networks_based_on_UL-AoA.ipynb", "api/Tutorials/Tutorial27/Performance_Comparison_of_OFDM_and_DFT-s-OFDM.ipynb", "api/Tutorials/Tutorial28/Downliink_Channel_Estimation_using_CSI-RS.ipynb", "api/Tutorials/Tutorial3/Tutorial3_PolarCodes.ipynb", "api/Tutorials/Tutorial4/Tutorial4_LDPCCodes.ipynb", "api/Tutorials/Tutorial4/aggregateResults.ipynb", "api/Tutorials/Tutorial5/1.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Outdoor_Terrains.ipynb", "api/Tutorials/Tutorial5/10.Spatially_Consistent_Channel_Modelling_for_Mobility_Simulations.ipynb", "api/Tutorials/Tutorial5/2.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Factory_Terrain.ipynb", "api/Tutorials/Tutorial5/3.Channel_Generation_for_Multicell_Multi_Sector_MIMO_System_for_Indoor_Hotspot.ipynb", "api/Tutorials/Tutorial5/4.[Mobility]Channel_Generation_for_Outdoor_Mobile_User_in_Rural_Macro_Hexagonal_Site.ipynb", "api/Tutorials/Tutorial5/5.[Mobility2x]Channel_Generation_for_Dual_Mobility_Scenarios_in_5G_and_Beyond.ipynb", "api/Tutorials/Tutorial5/6.Generate_UMa_Channel_for_Multiple_Frequencies.ipynb", "api/Tutorials/Tutorial5/7.Propagation_Characteristics_of_Outdoor_Terrains.ipynb", "api/Tutorials/Tutorial5/8.Beam_Domain and Delay_Domain_Sparsity_in_Wireless_Channel_Models.ipynb", "api/Tutorials/Tutorial5/tutorial5.rst", "api/Tutorials/Tutorial6/Downlink_Synchronization_procedure_using_SSB.ipynb", "api/Tutorials/Tutorial7/Link_Level_Simulation_for_Physical_Broadcast_Channels_using_CDL-A_Channels.ipynb", "api/Tutorials/Tutorial8/pucchFormat0_Tutorial.rst", "api/Tutorials/Tutorial9/Link_Level_Simulation_for_PDSCH_in_5G.ipynb", "api/Tutorials/Tutorials.rst", "api/WeekChallenge/challenge.rst", "api/WeekChallenge/challengeArxiv.rst", "api/WeekChallenge/challengeOftheWeek.rst", "detailedInstall.rst", "detailedInstall2.rst", "index.rst", "install.rst", "install2.rst", "releaseNotes.md", "test_GettingStarted.ipynb"], "titles": ["Getting Started", "API Documentation", "Cyclic Redundancy Check", "CRC Decoder", "CRC Encoder", "Hamming Coder", "Low Density Parity Check Codes", "Codeblock Processing: Receiver", "Codeblock Processing: Transmitter", "LDPC Parameters Computation", "Polar Codes", "Code-block Processing: Transmitter", "Reed Muller Codes", "Forward Error Correction", "Antenna Array", "Channel Generator", "Channel Models", "Node Mobility", "Channel Parameter Generator", "Simulation Layout", "Channel Processing and Hardware Impairment", "Add Noise and CFO at Receiver", "Apply Channel to Transmitted Signal", "Interleavers", "Bit Interleavers", "PBCH Interleaver", "Channel Interleaver", "Input Bit Interleaver", "Sub Block Interleaver", "Code-Books", "MIMO Processing", "Orthogonal Frequency Division Multiplexing", "OFDM: Demodulator", "OFDM: Modulator", "Transform Decoding", "Transform Decoding for 5G", "Transform Precoding", "Transform Precoding for 5G", "Downlink Control Information (DCI)", "Master Information Block (MIB)", "Payload Generation", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "PBCH Payload", "Master Information Block (MIB)", "Modulation", "Demapper", "Symbol Mapping", "Cyclic Redundency Check", "Cyclic Redundancy Check", "PBCH Scrambler", "Cyclic Redundancy Check", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "Modulation", "Demapper", "Symbol Mapping", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "PDSCH: Lower Physical layer Chain", "PDSCH: Lower Physical layer Chain Decoder", "PDSCH: Upper Physical layer Chain", "PDSCH: Upper Physical layer Chain Decoder", "PDSCH Chain", "Receiver Processing", "Transmitter Processing", "Code Block Concatenation", "Code Block Segmentation", "Transport Block Size Computation", "Layer Mapper", "Low Density Parity Check Codes", "Modulation", "Demapper", "Symbol Mapping", "Rate Matching", "Bit Interleaver for LDPC", "Rate matching for LDPC", "Physical Downlink Shared Channel-DMRS", "Physical Downlink Shared Channel-DMRS", "Scrambling: PDSCH", "Descrambler", "Scrambling", "Transport Block Processing", "Cyclic Redundency Check", "Cyclic Redundancy Check", "Input Bit Interleaver", "Code-block Processing: Transmitter", "Modulation", "Demapper", "Symbol Mapping", "Polar Coder", "Polar Codes", "Rate Matching", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Demapper", "RNTI Masking", "RNTI Masking", "Scrambling: PDCCH", "Descrambler", "Scrambling", "PUCCH Format 0", "Format0", "Resource De-Mapping", "Resource Mapping", "Sequence Generation", "PUCCH Format 1", "De-Spreading", "Format1", "Resource De-Mapping", "Resource Mapping", "Sequence Generation", "Spreading", "PUCCH Format 2", "Format 2,3,4", "Polar Codes", "Code-block Processing: Transmitter", "Channel Coding of Small Block Length", "Channel Coder", "Polar Codes", "Channel Coding of Small Block Length", "Code Block Concatenation", "Code Block Segmentation", "PUCCH Components", "Rate matching for Small Block Length 5G", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate matching", "Rate Matching", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate Matching for Polar Coder", "Rate matching for Small Block Length 5G", "Scrambling", "Descrambler", "RNTI Masking", "Scrambler", "Scrambling: PUCCH", "Descrambler", "Scrambling", "Symbol Mapping", "Demapper", "Mapper", "Modulation", "Demapper", "Symbol Mapping", "PUCCH Receiver", "PUCCH Transmitter", "PUCCH Format 3", "PUCCH Format 4", "PUCCH", "PUSCH Chain", "Receiver Chain", "Transmitter Chain", "Physical Channels", "Physical Broadcast Channel (PBCH)", "Physical Downlink Control Channel (PDCCH)", "Physical Downlink Shared Channel (PDSCH)", "Physical Random Access Channel (PRACH)", "Physical Sidelink Broadcast Channel (PSBCH)", "Physical Sidelink Control Channel (PSCCH)", "Physical Uplink Control Channel (PUCCH)", "Physical Uplink Shared Channel (PUSCH)", "DFT based AoA Method", "ESPRIT based DoA Estimation", "MUSIC based DoA Estimation", "Direction of Arrival Estimation", "Least Squares based Position Estimator for DoA", "Least Square based Position Estimator for Hybrid ToA/mRTT and DoA", "Least Squares based Position Estimator for TDoA", "Least Squares based Position Estimator for ToA/mRTT", "Optimization Algorithms", "<no title>", "DFT based Method", "ESPRIT based ToA Estimation", "MUSIC based ToA Estimation", "Time of Arrival (ToA)/Delay Estimation", "Position Estimation", "Bit Selection for LDPC", "Bit Interleaver for LDPC", "Rate matching for LDPC", "Bit Selection for Polar Coder", "Channel Interleaver for Polar Coder", "Sub Block Interleaver for Polar Coder", "Rate matching for Polar coder", "Rate matching", "PUCCH Format 0 Resource De-Mapping", "PUCCH Format 0 Resource Mapping", "PUCCH Format-1 De-Spreading", "PUCCH Format-1 Resource De-Mapping", "PUCCH Format-1 Resource Mapping", "PUCCH Format-1 Spreading", "PUCCH Format-0", "PUCCH Format-1", "PUCCH Format-2", "PUCCH Format-3", "PUCCH Format-4", "Resource Mapping", "Control Resource Set", "Channel state Information reference signal (CSI-RS)", "Physical Downlink Shared Channel-DMRS", "Physical Downlink Control Channel (PDCCH)", "Positioning Reference Signal (PRS)", "Physical Sidelink Control Channel (PSCCH)", "Physical Downlink Shared Channel-PTRS", "Physical Uplink Control Channel (PUCCH)", "Sidelink Synchronization Signal Block (SSB) Grid Generation", "Search Space Set", "Synchronization Signal Block (SSB) Grid Generation", "Synchronization Signal Block (SSB) Resource Mapping", "Scrambling", "Descrambler", "RNTI Masking", "Scrambler", "Sequence Generation", "Low PAPR Sequence Type 1", "Low PAPR Sequence Type 2", "PUCCH Format 0 Sequence", "PUCCH Format 1 Sequence", "Channel State Information Reference Sequence (CSI-RS)", "Demodulation Reference Sequence (DMRS)", "Pseudo Random (PN) Sequence", "Positioning Reference Sequence (PRS)", "Primary Synchronization Signal", "Primary Synchronization Signal for Sidelink (S-PSS)", "Sounding Reference Sequence (SRS)", "Secondary Synchronization Signal", "Secondary Synchronization Signal for Sidelink (S-SSS)", "Symbol Mapping", "Demapper", "Mapper", "5G Configurations", "Channel state information reference signal (CSI-RS) Configurations", "SSB/PBCH Configurations", "PDSCH Lower Physical Layer Configurations", "PDSCH Upper Physical Layer Configurations", "Sounding Reference Signal (SRS) Configurations", "SSB/PBCH Configurations", "Time-Frequency 5G-Configurations", "Carrier Frequency Offset (CFO) Estimation", "Channel Estimation and Symbol Equalization for PBCH", "Channel Estimation and Symbol Equalization for PDCCH", "Channel Estimation and Symbol Equalization for PDSCH", "SSB Parameters Estimation", "Time Synchronization and PSS/Cell ID-2 Detection", "SSS/Cell ID-1 Detection", "Downlink Channel Estimation using CSI-RS", "Uplink Channel Estimation using SRS for Positioning", "Receiver Algorithms", "PDCCH Scheduler", "Round Robin Scheduler", "Link Adaptation", "Rank Adaptation", "Resource Allocation", "Scheduler", "Research work carried out using 5G Toolkit", "Downlink Time/Frame Synchronization using PSS in 5G Networks", "Time/OFDM Symbol Synchronization using PSS in 5G", "[BS Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks", "[UE Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks", "Downlink Synchronization in 5G Networks: SSB", "Carrier Frequency Offset (CFO) Estimation and Correction in 5G Networks", "Downlink Synchronization in 5G Networks: SSB", "Downlink Synchronization using SSB in 5G Networks", "Downlink Data Communication using PDSCH in 5G Networks", "Downlink Data Communication in 5G Networks", "Integration with SDRs", "Introductory Course on 5G Standards", "Learning Resources", "License", "Tentetive list of Feature", "Previous Versions", "Learning to Demap: Database Generation, Preprocessing, Postprocessing, Training, Validation and Inferences from the LLRNet", "Performance comparison between different Positioning Methods for millimeter wave 5G Networks", "Physical downlink control Channel in 5G", "Analysis of Blocking Probability for different Coverage Conditions", "Variation in Blocking Probability with Different Aggregation Levels (ALs)", "Analyzing the effect of Number of Candidates on Blocking Probability", "Analyzing the Impact of Scheduling Strategy on Blocking Probability", "Analyze the Impact of UE Capability on Blocking Probability", "Selection of minimum CORESET Size for a Given Target Block Probability", "Blockage Probability Analysis for RedCap Devices in 5G Networks", "CSI Compression and Reconstruction using CSINet for TDD Massive MIMO 5G Networks", "Wireless Channel Dataset Generation for Training the AI based Models", "Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks", "Training the CSINet", "Comparative Study of Reed Muller codes, Polar Codes and LDPC codes", "Channel Quality Estimation in 5G and Beyond Networks", "Hybrid Automatic repeat Request in 5G and Beyond", "Constellation Learning in an AWGN Channel", "Downlink Synchronization using SSB in 5G systems", "Uplink Synchronization using PRACH in 5G systems", "Projects", "Hamming Codes", "Link Level Simulation for Physical Downlink Control Channels", "SVD based Downlink Precoding and Combining for Massive MIMO in 5G Networks", "SVD based Downlink Precoding and Combining for Massive MIMO 5G Networks", "Type-1 codebook based Downlink Precoding and Combining for Massive MIMO 5G Networks", "P1 Procedure: Beam management in 5G networks using SSB", "Search space, CORESET and blind decoding of PDCCH channels in 5G Networks", "Reed Muller Codes in 5G", "Downlink TDoA Based Positioning for Industrial IoT Devices in Millimeter Wave 5G Networks", "Downlink Time of Arrival based Positioning in 5G and Beyond Networks", "Positioning the Outdoor UEs using 5G Urban Micro cell sites based Uplink Time Difference of Arrival (UL-TDoA) method", "Positioning the Indoor Open Office UEs using Uplink ToA method", "Downlink Angle of Departure based Positioning for Rural Macro Terrain in 5G and Beyond Network", "Uplink AoA (UL-AoA) based Localization of the Indoor Factory UEs using millimeter 5G Networks", "Performance comparison of OFDM and DFT-s-OFDM in 5G Networks", "Downlink Channel Estimation using CSI-RS", "Polar Codes in 5G", "Low Density Parity Check (LDPC) Codes in 5G", "<no title>", "Wireless Channel Generation for Outdoor Terrains deployed in Hexagonal Geometry", "Generate Spatially Consistent Statistical Channels for Realistic Simulations", "Wireless Channel Generation for a Dense High Indoor Factory Terrain Deployed at millimeter band.", "Genarating the Wireless Channel for Indoor Open Office Terrain", "Wireless Channel Generation for Outdoor Mobile User Connected to Rural Macro Site", "Channel Generation for Dual Mobility Scenarios in 5G and Beyond", "Wireless Channel Generation for Multiple Carrier Frequencies", "Propagation Characteristics of Outdoor Terrains", "Beam Domain and Delay Domain Sparsity in Wireless Channel Models", "Detailed Tutorials on 3GPP Channel Models", "Initial Access in 5G", "Coverage Evaluation of Physical Broadcast Channels (PBCH) in 5G Networks", "BER Performance of PUCCH Format 0", "Link Level Simulation for Physical Downlink Shared Channel in 5G", "Tutorials", "Challenge Of this Week", "Arxiv-ed Challenges", "Solution of this Months Problems", "Install 5G Toolkit", "Install 5G Toolkit", "5G Toolkit", "Install 5G Toolkit", "Install 5G Toolkit", "Release Notes", "Getting Started with 5G Toolkit"], "terms": {"\u00bd": [0, 361], "\u00bc": [0, 361], "\u215b": [0, 361], "\u00be": [0, 361], "\u215c": [0, 361], "\u215d": [0, 361], "\u215e": [0, 361], "_": [0, 7, 8, 10, 11, 24, 26, 27, 32, 33, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 85, 86, 92, 93, 95, 101, 102, 103, 104, 106, 107, 112, 117, 120, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 158, 163, 165, 167, 168, 181, 182, 184, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 211, 218, 219, 220, 229, 230, 231, 232, 233, 235, 237, 238, 240, 242, 247, 249, 254, 262, 263, 265, 266, 270, 271, 272, 273, 274, 330, 331, 334, 351, 361], "\u00b5": [0, 361], "\u03c9": [0, 361], "\u00aa": [0, 361], "\u00ba": [0, 361], "\u00b9": [0, 361], "\u00b2": [0, 361], "\u00b3": [0, 361], "In": [0, 7, 8, 9, 10, 14, 19, 26, 27, 31, 34, 35, 36, 37, 39, 46, 55, 74, 85, 87, 89, 92, 93, 103, 104, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 149, 180, 184, 192, 194, 196, 198, 203, 204, 206, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 235, 236, 237, 244, 245, 246, 247, 256, 262, 266, 268, 269, 270, 275, 276, 277, 279, 280, 281, 283, 285, 289, 294, 295, 304, 305, 306, 307, 308, 309, 312, 318, 323, 325, 326, 328, 329, 334, 336, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 356, 361], "section": [0, 2, 4, 6, 7, 8, 9, 10, 11, 12, 19, 24, 25, 26, 27, 28, 29, 31, 34, 36, 42, 44, 48, 49, 51, 53, 55, 58, 59, 60, 62, 65, 67, 69, 71, 72, 74, 77, 78, 79, 81, 84, 85, 86, 87, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 107, 110, 112, 114, 115, 117, 120, 121, 122, 124, 127, 142, 143, 144, 145, 146, 147, 148, 149, 153, 154, 158, 162, 164, 165, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 199, 205, 206, 207, 208, 209, 211, 212, 213, 214, 227, 228, 229, 230, 231, 233, 235, 236, 237, 238, 239, 241, 242, 243, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 265, 266, 270, 278, 295, 321, 354, 361, 363], "we": [0, 6, 14, 96, 236, 294, 295, 297, 299, 301, 304, 305, 306, 307, 308, 309, 311, 312, 318, 325, 326, 328, 329, 330, 331, 333, 334, 335, 336, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 353, 354, 356, 359, 360, 361, 362, 363], "first": [0, 7, 10, 18, 19, 32, 39, 46, 55, 57, 64, 65, 74, 76, 83, 84, 85, 92, 94, 102, 103, 104, 106, 107, 117, 119, 126, 127, 130, 131, 136, 137, 138, 142, 146, 163, 165, 167, 168, 184, 189, 198, 204, 206, 207, 210, 215, 216, 217, 218, 219, 220, 227, 229, 231, 233, 236, 238, 240, 242, 247, 249, 250, 252, 262, 264, 266, 267, 270, 271, 272, 278, 279, 307, 325, 326, 333, 337, 345, 347, 351, 353, 359, 360, 362, 365], "give": [0, 17, 279], "you": [0, 244, 245, 295, 312, 342, 356, 359, 360, 361, 362, 363, 365], "quick": [0, 234, 365], "overview": [0, 269, 270, 312, 332, 361], "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 33, 35, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 152, 153, 154, 155, 156, 158, 159, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 277, 278, 279, 280, 281, 282, 289, 291, 295, 297, 298, 301, 302, 304, 305, 306, 307, 308, 309, 312, 313, 318, 321, 322, 323, 325, 326, 328, 329, 330, 331, 334, 336, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 355, 359, 361, 362, 363, 364, 365], "which": [0, 2, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 18, 19, 24, 26, 27, 28, 29, 30, 31, 32, 39, 42, 44, 46, 51, 53, 55, 57, 58, 62, 64, 65, 67, 69, 74, 76, 77, 81, 83, 84, 86, 87, 88, 93, 94, 95, 96, 101, 102, 106, 107, 110, 112, 117, 119, 120, 124, 126, 127, 130, 131, 138, 142, 143, 144, 145, 146, 147, 149, 152, 153, 158, 159, 162, 163, 164, 165, 167, 168, 181, 182, 184, 189, 196, 197, 198, 200, 202, 203, 204, 205, 207, 208, 210, 211, 214, 215, 216, 227, 230, 234, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 247, 249, 250, 252, 253, 254, 255, 256, 260, 261, 262, 264, 265, 266, 267, 268, 270, 271, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 285, 295, 297, 302, 305, 306, 307, 309, 311, 318, 322, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 352, 353, 354, 359, 360, 361, 362, 363, 364, 365], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, 158, 159, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 299, 301, 302, 304, 305, 306, 308, 309, 310, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 355, 356, 359, 360, 362, 363, 364, 365], "follow": [0, 2, 3, 4, 5, 6, 8, 10, 11, 12, 14, 17, 18, 19, 24, 25, 26, 27, 28, 29, 38, 39, 42, 44, 46, 48, 51, 53, 55, 59, 60, 62, 64, 65, 67, 69, 71, 74, 78, 79, 81, 83, 84, 85, 87, 88, 93, 94, 96, 98, 102, 106, 107, 110, 112, 114, 117, 121, 122, 124, 126, 127, 142, 143, 146, 149, 163, 164, 165, 167, 168, 170, 173, 175, 176, 181, 182, 186, 188, 189, 195, 198, 199, 202, 203, 204, 205, 206, 209, 212, 213, 214, 227, 236, 240, 241, 242, 243, 249, 252, 253, 258, 260, 262, 264, 266, 267, 269, 270, 273, 278, 280, 281, 284, 285, 289, 291, 295, 296, 297, 299, 301, 302, 304, 305, 306, 307, 308, 309, 318, 322, 323, 325, 326, 329, 335, 336, 337, 338, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 355, 359, 360, 361, 362, 363, 365], "simpl": [0, 279, 361, 365], "tutori": [0, 6, 10, 12, 55, 64, 74, 83, 96, 106, 117, 126, 142, 146, 163, 167, 189, 235, 237, 240, 249, 289, 290, 291, 292, 293, 295, 301, 318, 323, 325, 326, 328, 329, 330, 331, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 361, 365], "long": [0, 65, 84, 107, 127, 162, 168, 234, 239, 302, 330, 331, 332, 333, 334, 335, 336], "excit": [0, 361], "journei": 0, "learn": [0, 311, 312, 321, 332, 336, 345, 361, 364], "explor": [0, 6, 96, 302], "The": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 180, 181, 182, 184, 185, 186, 188, 189, 190, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 301, 302, 304, 305, 306, 307, 308, 309, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 333, 334, 335, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 359, 360, 361, 362, 363, 365], "provid": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 24, 25, 26, 27, 28, 29, 30, 31, 33, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 90, 92, 93, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 186, 189, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 235, 236, 237, 239, 240, 241, 242, 243, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 266, 267, 269, 270, 273, 274, 275, 276, 279, 280, 281, 282, 285, 295, 301, 305, 318, 323, 329, 330, 331, 335, 336, 338, 339, 341, 343, 344, 347, 351, 359, 361, 362, 363, 364], "requir": [0, 5, 6, 10, 11, 12, 18, 29, 34, 36, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 87, 88, 94, 96, 102, 106, 107, 112, 117, 120, 126, 127, 142, 143, 146, 163, 165, 167, 168, 181, 182, 184, 188, 196, 197, 198, 203, 204, 206, 207, 209, 211, 214, 234, 236, 240, 242, 249, 252, 253, 255, 256, 262, 264, 266, 267, 268, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 291, 294, 301, 302, 304, 310, 321, 323, 330, 331, 332, 333, 334, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 361, 365], "emul": [0, 286, 290, 292, 295, 297, 361], "purpos": [0, 1, 5, 10, 11, 44, 55, 62, 63, 64, 65, 69, 74, 81, 82, 83, 84, 105, 106, 107, 112, 117, 124, 125, 126, 127, 142, 143, 146, 149, 150, 162, 163, 164, 165, 166, 167, 168, 184, 185, 186, 188, 189, 214, 239, 240, 241, 242, 243, 249, 254, 265, 271, 275, 276, 280, 285, 302, 328, 332, 333, 335, 338], "each": [0, 3, 5, 7, 8, 10, 12, 14, 15, 17, 18, 19, 24, 29, 32, 33, 35, 37, 55, 57, 59, 65, 74, 76, 78, 84, 87, 88, 89, 92, 93, 101, 102, 107, 117, 119, 121, 127, 132, 138, 142, 145, 146, 148, 152, 159, 162, 168, 176, 180, 181, 182, 185, 186, 189, 193, 195, 197, 203, 204, 205, 207, 208, 210, 212, 227, 230, 235, 236, 237, 238, 239, 246, 247, 250, 252, 253, 254, 255, 256, 264, 265, 267, 269, 270, 271, 276, 278, 279, 281, 282, 283, 285, 295, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 343, 344, 345, 346, 347, 348, 349, 350, 351, 354, 355, 361, 365], "expect": [0, 6, 48, 49, 57, 60, 71, 72, 76, 79, 87, 88, 94, 95, 96, 98, 99, 114, 115, 119, 122, 134, 152, 159, 170, 171, 173, 174, 188, 189, 193, 195, 210, 217, 227, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 264, 268, 270, 280, 301, 342, 349], "2": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 22, 24, 25, 29, 33, 34, 35, 36, 37, 39, 44, 46, 48, 55, 60, 62, 64, 65, 69, 71, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 101, 102, 103, 104, 106, 107, 108, 112, 114, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 162, 163, 164, 165, 167, 168, 170, 173, 175, 176, 179, 181, 182, 183, 184, 185, 188, 189, 190, 193, 195, 196, 197, 198, 199, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 277, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 306, 307, 308, 309, 310, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 361, 364, 365], "set": [0, 1, 5, 6, 11, 12, 14, 18, 19, 22, 24, 26, 27, 29, 33, 35, 37, 39, 44, 46, 58, 65, 69, 77, 84, 85, 86, 87, 88, 94, 96, 101, 102, 103, 104, 107, 112, 120, 127, 130, 131, 132, 134, 136, 137, 138, 139, 143, 145, 153, 158, 165, 168, 181, 182, 184, 198, 205, 206, 207, 208, 209, 211, 215, 216, 217, 218, 219, 220, 226, 228, 229, 230, 231, 232, 238, 242, 244, 245, 246, 247, 254, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 275, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 306, 307, 308, 313, 318, 321, 327, 329, 330, 331, 332, 333, 334, 335, 338, 339, 345, 351, 355, 361, 365], "argument": [0, 3, 4, 17, 19, 64, 65, 83, 84, 87, 88, 106, 107, 126, 127, 134, 163, 165, 167, 168, 205, 217, 240, 242, 249, 264, 267, 289], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 29, 32, 34, 36, 37, 39, 40, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 141, 142, 143, 146, 148, 149, 152, 159, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 200, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 218, 219, 220, 227, 228, 229, 230, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 283, 285, 294, 295, 297, 298, 299, 301, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 328, 329, 330, 331, 332, 334, 335, 336, 337, 338, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 359, 360, 361, 362, 363, 364, 365], "time": [0, 1, 7, 10, 11, 15, 16, 17, 18, 19, 22, 24, 29, 31, 32, 33, 39, 44, 46, 55, 57, 69, 74, 76, 86, 92, 93, 94, 95, 101, 102, 112, 117, 119, 142, 143, 144, 146, 147, 148, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 206, 207, 208, 210, 227, 228, 230, 231, 233, 234, 235, 236, 237, 238, 243, 244, 245, 252, 253, 254, 255, 256, 260, 262, 265, 266, 268, 269, 270, 271, 275, 276, 277, 279, 280, 281, 283, 290, 292, 293, 295, 299, 301, 302, 307, 309, 312, 333, 334, 335, 336, 337, 339, 349, 350, 351, 353, 355, 361, 364], "creation": [0, 312, 341, 342, 343, 344, 345, 346, 347, 349], "instanti": [0, 14, 18, 19, 318, 342, 345, 346, 349], "call": [0, 3, 4, 6, 8, 14, 18, 19, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 93, 96, 98, 99, 106, 107, 114, 115, 122, 126, 127, 149, 162, 163, 165, 167, 168, 170, 171, 173, 174, 206, 236, 239, 240, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259, 285, 287, 288, 289, 291, 294, 301, 318, 341, 342, 343, 344, 345, 346, 347, 349], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 17, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 273, 274, 275, 276, 277, 278, 279, 280, 281, 283, 286, 289, 292, 293, 295, 299, 310, 313, 321, 338, 350, 355, 361, 364, 365], "second": [0, 6, 7, 18, 64, 83, 92, 94, 96, 106, 126, 130, 131, 136, 137, 138, 163, 167, 198, 202, 203, 204, 205, 206, 215, 216, 217, 218, 219, 220, 227, 238, 240, 247, 249, 250, 253, 270, 278, 294, 311, 318, 342, 345, 346, 353], "while": [0, 15, 19, 21, 22, 94, 103, 104, 193, 195, 197, 203, 204, 206, 227, 229, 264, 270, 279, 280, 281, 289, 295, 301, 302, 306, 309, 312, 330, 331, 332, 333, 334, 335, 342, 345, 346, 349], "These": [0, 2, 6, 7, 9, 10, 18, 19, 34, 36, 37, 40, 42, 49, 51, 53, 55, 67, 72, 74, 96, 99, 110, 115, 117, 142, 146, 169, 174, 184, 186, 189, 195, 206, 234, 243, 255, 257, 260, 268, 269, 270, 271, 278, 312, 329, 330, 331, 332, 334, 336, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 353, 361], "input": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 17, 18, 19, 21, 22, 23, 24, 25, 26, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 40, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 314, 318, 321, 322, 323, 325, 326, 330, 331, 337, 349, 351, 361], "If": [0, 3, 6, 7, 10, 11, 14, 17, 18, 19, 21, 22, 25, 28, 29, 44, 55, 59, 64, 65, 69, 74, 78, 83, 84, 87, 88, 92, 94, 96, 106, 107, 112, 117, 121, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 145, 146, 149, 154, 158, 163, 165, 167, 168, 182, 196, 197, 198, 199, 206, 212, 215, 216, 218, 219, 220, 227, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 264, 267, 269, 270, 271, 278, 279, 280, 281, 359, 360, 362, 363], "configur": [0, 1, 4, 9, 12, 18, 19, 29, 48, 60, 71, 79, 85, 87, 98, 102, 103, 104, 114, 122, 130, 131, 132, 134, 136, 137, 138, 139, 170, 173, 204, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 246, 247, 254, 258, 270, 271, 275, 276, 278, 281, 286, 290, 292, 293, 295, 301, 305, 306, 308, 311, 312, 318, 321, 322, 325, 326, 327, 329, 334, 351, 353, 355, 359, 361, 362, 363, 364], "correctli": [0, 102, 189, 207, 264, 269, 270, 285, 291, 294, 351], "produc": [0, 278], "one": [0, 14, 18, 29, 35, 37, 39, 46, 57, 76, 86, 87, 102, 119, 184, 188, 198, 205, 206, 207, 210, 227, 231, 235, 236, 237, 238, 250, 252, 253, 254, 262, 266, 267, 270, 281, 295, 301, 302, 305, 306, 318, 323, 330, 331, 333, 334, 336, 342, 359, 362, 363], "multipl": [0, 5, 7, 8, 10, 12, 14, 16, 19, 21, 24, 28, 34, 35, 36, 37, 39, 46, 48, 49, 55, 59, 60, 71, 72, 74, 78, 79, 85, 86, 92, 93, 95, 98, 99, 101, 114, 115, 117, 121, 122, 139, 142, 146, 148, 149, 154, 158, 169, 170, 171, 173, 174, 186, 204, 206, 208, 212, 220, 227, 235, 237, 238, 244, 245, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 265, 271, 275, 276, 279, 281, 283, 299, 301, 302, 312, 323, 325, 326, 330, 332, 334, 335, 336, 337, 341, 343, 344, 349, 350, 355, 361], "output": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 17, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 283, 318, 321, 322, 323, 325, 326, 328, 337, 349, 351, 360, 361], "type": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 24, 30, 39, 44, 46, 48, 49, 55, 60, 69, 71, 72, 74, 79, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 108, 112, 114, 115, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 170, 171, 173, 174, 184, 185, 204, 206, 207, 208, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 246, 247, 254, 258, 259, 262, 263, 264, 265, 266, 267, 269, 270, 271, 275, 276, 278, 279, 294, 296, 299, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 327, 328, 330, 331, 332, 333, 334, 335, 336, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 355, 361, 364], "size": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 17, 18, 19, 25, 29, 31, 32, 33, 39, 44, 46, 48, 49, 55, 57, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 78, 79, 81, 83, 84, 86, 87, 88, 91, 92, 93, 95, 96, 98, 99, 102, 106, 107, 108, 112, 114, 115, 117, 119, 121, 122, 124, 126, 127, 130, 131, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 152, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 209, 210, 212, 215, 216, 218, 219, 220, 227, 228, 230, 231, 234, 236, 238, 240, 241, 242, 247, 248, 249, 250, 251, 252, 254, 255, 256, 258, 259, 262, 265, 266, 267, 268, 269, 270, 271, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 310, 311, 312, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 340, 341, 343, 344, 345, 346, 347, 348, 351, 352, 353, 354, 355, 361, 365], "shape": [0, 3, 4, 5, 6, 7, 14, 15, 17, 18, 19, 21, 22, 24, 29, 34, 35, 36, 37, 87, 88, 92, 96, 101, 182, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 208, 235, 237, 244, 245, 252, 253, 254, 255, 256, 269, 270, 272, 274, 275, 276, 278, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354], "detail": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 18, 21, 24, 25, 26, 27, 28, 31, 33, 34, 36, 38, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 92, 93, 95, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 143, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 182, 186, 189, 195, 196, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 231, 235, 237, 239, 240, 241, 242, 243, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 269, 271, 272, 273, 274, 275, 280, 281, 330, 331, 333, 334, 335, 338, 351, 355, 361], "its": [0, 28, 29, 59, 78, 121, 154, 158, 175, 181, 189, 204, 212, 227, 236, 244, 245, 268, 283, 285, 298, 301, 318, 328, 332, 334, 336, 345, 346, 355, 361], "user": [0, 5, 6, 14, 15, 16, 17, 18, 19, 27, 29, 87, 91, 96, 108, 132, 138, 144, 147, 148, 149, 175, 176, 181, 182, 195, 198, 199, 206, 215, 216, 246, 247, 250, 252, 253, 255, 256, 260, 267, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 295, 296, 299, 301, 302, 323, 327, 330, 331, 332, 333, 334, 335, 339, 341, 342, 343, 344, 346, 347, 349, 350, 352, 355, 359, 360, 361, 362, 363], "access": [0, 1, 14, 15, 17, 19, 39, 46, 85, 86, 88, 102, 103, 104, 183, 184, 206, 207, 229, 233, 238, 243, 249, 254, 262, 266, 267, 273, 279, 296, 299, 341, 342, 343, 344, 345, 346, 347, 349, 355, 361, 364], "attribut": [0, 9, 11, 14, 17, 18, 19, 26, 27, 28, 44, 58, 59, 69, 77, 78, 85, 86, 87, 88, 102, 112, 120, 121, 143, 153, 154, 158, 181, 182, 184, 188, 199, 204, 206, 207, 211, 212, 236, 244, 245, 254, 262, 266, 267, 271, 272, 279, 309], "some": [0, 1, 14, 176, 244, 249, 254, 268, 272, 275, 276, 277, 286, 295, 309, 312, 330, 331, 332, 333, 334, 345, 346, 348, 361, 362], "addit": [0, 21, 39, 46, 87, 88, 90, 91, 94, 103, 104, 181, 182, 189, 197, 203, 204, 227, 229, 233, 262, 264, 266, 270, 318, 355, 361], "method": [0, 3, 4, 14, 15, 17, 18, 19, 29, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 85, 86, 98, 99, 103, 104, 106, 107, 114, 115, 122, 126, 127, 134, 139, 163, 165, 167, 168, 170, 171, 173, 174, 181, 193, 194, 196, 197, 198, 199, 203, 204, 205, 206, 227, 228, 229, 235, 237, 240, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259, 268, 269, 270, 271, 272, 273, 274, 279, 281, 291, 294, 299, 301, 312, 318, 321, 322, 326, 337, 351, 353, 355, 361], "displai": [0, 14, 17, 18, 19, 39, 46, 85, 87, 88, 103, 104, 181, 182, 202, 204, 205, 206, 227, 228, 229, 231, 233, 235, 236, 237, 278, 279, 285, 287, 288, 294, 298, 301, 302, 310, 311, 313, 314, 321, 325, 326, 327, 329, 332, 333, 334, 335, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 350, 351, 354, 355, 361], "function": [0, 6, 8, 14, 15, 16, 17, 18, 19, 29, 30, 32, 93, 96, 102, 205, 207, 227, 230, 236, 267, 270, 278, 279, 280, 282, 285, 301, 304, 305, 306, 321, 327, 336, 348, 350, 351, 352, 355, 361], "insight": [0, 323], "implement": [0, 1, 2, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 19, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 42, 44, 48, 49, 51, 53, 55, 58, 59, 60, 62, 65, 67, 69, 71, 72, 74, 77, 78, 79, 81, 84, 85, 86, 87, 88, 92, 93, 95, 96, 98, 99, 101, 102, 107, 110, 112, 114, 115, 117, 120, 121, 122, 124, 127, 141, 142, 143, 144, 145, 146, 147, 148, 149, 151, 153, 154, 158, 161, 164, 165, 168, 170, 171, 173, 174, 175, 176, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 198, 199, 202, 203, 204, 207, 208, 211, 212, 227, 235, 236, 237, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 268, 269, 270, 271, 276, 278, 280, 281, 282, 286, 290, 292, 293, 295, 318, 329, 338, 339, 345, 351, 355, 361, 364, 365], "from": [0, 1, 3, 4, 6, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 29, 32, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 60, 64, 69, 71, 72, 74, 76, 79, 83, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 108, 112, 114, 115, 117, 119, 122, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 152, 159, 163, 167, 169, 170, 171, 173, 174, 181, 182, 184, 189, 193, 195, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 235, 236, 237, 238, 240, 244, 246, 247, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 275, 276, 278, 279, 280, 281, 283, 285, 287, 288, 289, 291, 294, 295, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 353, 354, 355, 359, 360, 361, 362, 363, 365], "standpoint": 0, "__init__": [0, 193, 289], "address": 0, "__call__": [0, 193], "let": [0, 271, 302, 307, 346, 359, 360, 362], "u": [0, 28, 29, 59, 78, 121, 154, 158, 212, 244, 245, 295, 307, 311, 325, 326, 337, 354, 356, 359, 360, 361, 362], "your": [0, 295, 356, 359, 360, 361, 362, 363], "Its": [0, 10, 11, 17, 26, 38, 39, 44, 46, 55, 64, 65, 69, 74, 83, 84, 102, 106, 107, 112, 117, 126, 127, 142, 143, 146, 163, 165, 167, 168, 184, 196, 198, 203, 206, 207, 209, 213, 238, 240, 242, 244, 254, 266, 267, 279, 301, 304, 305, 306, 307, 308, 309, 327, 351, 352], "veri": [0, 10, 11, 12, 28, 32, 44, 55, 69, 74, 112, 117, 142, 143, 146, 202, 204, 244, 245, 260, 280, 322, 330, 331, 346], "project": [0, 204, 294, 295, 301, 302, 303, 315, 316, 317, 319, 320, 327, 352, 361], "textcolor": 0, "blue": [0, 206, 301, 318, 327, 329, 336, 338, 339, 340, 365], "text": [0, 3, 4, 7, 8, 10, 11, 24, 26, 27, 32, 33, 39, 44, 46, 55, 58, 64, 65, 69, 74, 77, 83, 84, 85, 86, 92, 93, 95, 101, 102, 103, 104, 106, 107, 112, 117, 120, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 158, 163, 165, 167, 168, 181, 182, 184, 185, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 211, 218, 219, 220, 228, 229, 230, 231, 233, 235, 237, 240, 242, 244, 245, 247, 253, 254, 255, 256, 262, 263, 265, 266, 270, 271, 272, 273, 274, 279, 281, 301, 309, 329, 330, 331, 334, 338, 339, 341, 343, 344, 345, 347, 351, 353, 365], "cyclic": [0, 1, 3, 4, 31, 32, 33, 52, 132, 138, 183, 184, 185, 188, 189, 215, 216, 217, 218, 219, 220, 221, 227, 244, 246, 247, 252, 253, 254, 265, 267, 268, 273, 285, 287, 289, 291, 294, 296, 323, 328, 351, 353, 361], "redund": [0, 1, 3, 4, 5, 7, 52, 87, 88, 90, 91, 93, 102, 181, 182, 183, 184, 185, 188, 189, 207, 209, 228, 231, 296, 301, 361, 364], "check": [0, 1, 3, 5, 8, 13, 19, 27, 52, 88, 93, 102, 108, 175, 181, 183, 184, 185, 186, 188, 189, 206, 207, 264, 267, 291, 294, 296, 301, 322, 323, 328, 351, 352, 355, 359, 360, 361, 362, 363, 365], "add": [0, 1, 2, 5, 20, 42, 51, 53, 67, 110, 302, 309, 311, 314, 325, 326, 329, 332, 333, 335, 338, 345, 351, 352, 354, 355, 361], "nois": [0, 1, 6, 10, 12, 20, 32, 55, 74, 86, 96, 117, 142, 146, 181, 184, 185, 188, 203, 204, 269, 280, 281, 301, 302, 311, 318, 323, 325, 326, 328, 329, 332, 333, 335, 338, 339, 340, 352, 353, 354, 355, 361, 365], "shown": [0, 5, 6, 7, 8, 9, 10, 12, 33, 55, 74, 85, 87, 92, 93, 95, 96, 117, 142, 146, 148, 149, 186, 195, 196, 198, 235, 236, 237, 278, 330, 331, 333, 334, 351, 359, 362], "below": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 17, 18, 19, 21, 33, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 79, 81, 83, 84, 85, 86, 87, 92, 93, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 122, 124, 126, 127, 130, 131, 132, 142, 144, 146, 147, 148, 149, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 195, 196, 197, 198, 199, 200, 205, 206, 207, 208, 210, 211, 214, 215, 216, 226, 227, 235, 236, 237, 240, 241, 242, 246, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 263, 264, 265, 269, 272, 273, 274, 278, 281, 304, 305, 306, 307, 308, 309, 325, 326, 330, 331, 333, 334, 335, 339, 341, 343, 344, 351, 359, 360, 361, 362, 363], "crc": [0, 1, 2, 6, 7, 8, 10, 11, 25, 27, 44, 55, 62, 69, 74, 81, 88, 93, 95, 96, 108, 112, 117, 124, 142, 143, 146, 148, 149, 164, 175, 176, 181, 182, 184, 185, 189, 241, 323, 328, 338, 351, 361], "help": [0, 27, 28, 87, 88, 181, 182, 196, 197, 198, 204, 206, 271, 280, 281, 294, 297, 325, 326, 337, 341, 342, 343, 344, 347, 359, 360, 362], "receiv": [0, 1, 2, 3, 5, 6, 8, 9, 10, 15, 16, 18, 20, 22, 27, 28, 31, 32, 34, 35, 36, 37, 40, 42, 43, 49, 51, 53, 57, 59, 64, 65, 67, 68, 72, 76, 78, 83, 84, 86, 88, 89, 99, 102, 106, 107, 110, 111, 115, 119, 121, 126, 127, 141, 142, 150, 152, 154, 158, 159, 162, 163, 167, 168, 169, 174, 179, 180, 183, 193, 195, 196, 198, 200, 203, 204, 205, 207, 210, 212, 230, 232, 239, 240, 257, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 286, 287, 290, 292, 293, 295, 299, 301, 302, 311, 312, 318, 325, 326, 329, 330, 331, 332, 333, 334, 335, 338, 341, 342, 343, 344, 347, 349, 350, 353, 354, 355, 361, 365], "fail": [0, 3, 291, 294, 351], "can": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 22, 24, 25, 27, 28, 34, 35, 36, 37, 44, 48, 49, 55, 60, 62, 64, 65, 69, 71, 72, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 96, 98, 99, 101, 102, 106, 107, 112, 114, 115, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 169, 170, 173, 174, 180, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 231, 233, 234, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 249, 250, 252, 253, 254, 255, 256, 257, 258, 260, 262, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 281, 285, 294, 295, 297, 302, 304, 306, 308, 309, 312, 318, 322, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 353, 356, 359, 360, 361, 362, 363, 364], "request": [0, 3, 102, 207, 321, 323, 353, 359, 361, 362, 363], "retransmiss": [0, 3], "data": [0, 3, 5, 6, 7, 26, 28, 29, 48, 49, 57, 60, 62, 71, 72, 76, 79, 81, 87, 88, 89, 90, 93, 94, 96, 98, 99, 102, 108, 114, 115, 119, 122, 124, 132, 134, 138, 152, 159, 164, 170, 171, 173, 174, 175, 176, 180, 181, 182, 186, 207, 210, 217, 234, 241, 243, 246, 247, 249, 258, 259, 264, 269, 270, 271, 276, 279, 280, 281, 283, 284, 285, 291, 295, 301, 311, 312, 321, 323, 326, 336, 337, 339, 345, 348, 351, 352, 361, 364], "convert": [0, 1, 10, 40, 48, 55, 60, 71, 74, 79, 98, 114, 117, 122, 142, 146, 170, 173, 181, 258, 318, 332, 353], "transmiss": [0, 5, 22, 35, 37, 39, 46, 49, 57, 65, 72, 76, 84, 85, 87, 90, 91, 94, 99, 102, 103, 104, 107, 115, 119, 127, 130, 131, 132, 134, 136, 137, 138, 139, 162, 168, 169, 174, 182, 189, 207, 210, 215, 216, 217, 218, 219, 220, 228, 229, 233, 238, 239, 243, 246, 247, 257, 267, 268, 269, 270, 275, 276, 279, 280, 281, 283, 286, 290, 292, 293, 295, 301, 302, 322, 323, 325, 326, 328, 332, 333, 335, 336, 337, 353, 355, 361], "introduc": [0, 21, 271, 296, 301, 318, 351], "transmit": [0, 1, 5, 20, 29, 32, 38, 39, 46, 57, 76, 85, 86, 103, 104, 119, 131, 132, 137, 138, 149, 152, 159, 175, 182, 205, 210, 216, 219, 221, 227, 228, 229, 233, 234, 235, 236, 237, 238, 244, 245, 246, 247, 249, 254, 263, 264, 266, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 287, 288, 289, 292, 293, 295, 301, 318, 323, 327, 332, 333, 335, 336, 350, 353, 355, 361, 365], "signal": [0, 1, 5, 6, 10, 12, 20, 21, 32, 33, 38, 55, 57, 74, 76, 86, 87, 88, 94, 96, 103, 104, 117, 119, 132, 138, 142, 146, 152, 159, 181, 184, 185, 188, 189, 193, 203, 204, 205, 206, 210, 226, 229, 230, 232, 233, 234, 244, 245, 246, 247, 248, 249, 250, 251, 254, 260, 268, 269, 270, 271, 272, 273, 275, 276, 277, 280, 281, 283, 285, 289, 291, 294, 296, 311, 312, 318, 323, 325, 326, 327, 329, 332, 333, 335, 337, 338, 339, 340, 342, 349, 353, 355, 361, 364, 365], "model": [0, 1, 6, 10, 15, 18, 19, 21, 55, 74, 96, 117, 142, 146, 203, 204, 295, 296, 299, 301, 311, 313, 314, 321, 323, 330, 331, 332, 333, 334, 341, 342, 343, 344, 345, 346, 347, 348, 355, 361, 364], "numpi": [0, 3, 4, 6, 7, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 44, 48, 49, 55, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 93, 94, 96, 98, 99, 102, 106, 107, 112, 114, 115, 117, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 153, 154, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 188, 189, 193, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 230, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 264, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 361, 362, 363, 365], "matplotlib": [0, 18, 19, 29, 204, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 362, 363, 365], "linear": [0, 5, 16, 184, 188, 203, 204, 269, 270, 271, 275, 276, 291, 294, 301, 302, 318, 326, 329, 332, 333, 335, 337, 352], "algebra": 0, "plot": [0, 10, 14, 18, 19, 55, 74, 117, 142, 146, 202, 204, 206, 273, 285, 287, 288, 289, 291, 294, 301, 302, 310, 311, 321, 322, 327, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 342, 346, 348, 350, 351, 355, 361], "respect": [0, 3, 4, 6, 8, 10, 14, 15, 16, 17, 18, 19, 29, 39, 40, 46, 55, 74, 87, 90, 93, 95, 96, 117, 138, 139, 142, 146, 149, 181, 196, 197, 198, 199, 205, 220, 230, 236, 243, 247, 249, 254, 265, 267, 278, 279, 281, 298, 302, 305, 306, 318, 328, 345, 347, 349], "o": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "environ": [0, 29, 227, 236, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 362, 363, 365], "cuda_visible_devic": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "1": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 14, 15, 17, 18, 19, 22, 24, 25, 26, 27, 28, 30, 32, 34, 35, 36, 37, 38, 42, 44, 48, 49, 51, 53, 58, 59, 60, 62, 64, 67, 69, 71, 72, 77, 78, 79, 81, 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 110, 112, 114, 115, 120, 121, 122, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 143, 145, 148, 149, 153, 154, 158, 163, 164, 165, 167, 170, 171, 173, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 188, 189, 190, 193, 195, 197, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 221, 226, 227, 228, 229, 230, 231, 232, 233, 236, 238, 240, 241, 242, 245, 246, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 275, 276, 277, 278, 279, 280, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 306, 307, 308, 309, 310, 311, 312, 314, 318, 321, 322, 323, 325, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 359, 361, 362, 363, 365], "tf_cpp_min_log_level": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 365], "3": [0, 1, 2, 6, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 26, 27, 29, 34, 35, 36, 37, 39, 42, 44, 46, 51, 53, 55, 58, 62, 64, 65, 67, 69, 74, 77, 81, 83, 84, 85, 86, 87, 88, 90, 91, 93, 94, 95, 96, 102, 103, 104, 106, 107, 110, 112, 117, 120, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 153, 158, 163, 164, 165, 167, 168, 175, 176, 179, 181, 182, 183, 184, 185, 188, 189, 190, 196, 197, 198, 199, 206, 207, 209, 211, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 263, 264, 265, 267, 270, 271, 273, 274, 278, 280, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 362, 363, 365], "np": [0, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 95, 96, 98, 99, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 176, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 269, 270, 271, 272, 273, 274, 275, 276, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "widget": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "pyplot": [0, 29, 227, 236, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "plt": [0, 18, 19, 29, 206, 227, 236, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "line": [0, 18, 19, 206, 273, 285, 288, 289, 291, 294, 302, 321, 327, 329, 330, 331, 332, 333, 334, 338, 339, 340, 345, 350, 351, 355, 359, 360, 361, 362], "code": [0, 1, 5, 8, 9, 13, 14, 19, 24, 26, 27, 28, 30, 39, 43, 46, 54, 57, 58, 64, 68, 73, 76, 77, 83, 87, 88, 90, 91, 94, 95, 101, 102, 106, 108, 111, 116, 119, 120, 126, 134, 139, 141, 145, 150, 152, 159, 163, 167, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 214, 217, 218, 219, 220, 240, 262, 264, 266, 275, 276, 278, 280, 281, 282, 283, 285, 291, 294, 296, 299, 301, 321, 323, 328, 330, 331, 332, 333, 334, 335, 340, 341, 343, 344, 345, 346, 347, 351, 353, 355, 356, 359, 360, 361, 362, 364], "disabl": [0, 18, 19, 87, 88, 90, 91, 102, 130, 131, 132, 134, 136, 137, 138, 139, 144, 147, 181, 182, 206, 207, 209, 215, 216, 217, 218, 219, 220, 246, 247, 275, 276, 302, 330, 331, 334, 337, 341, 343, 344, 353], "gpu": [0, 361], "properli": [0, 278, 309], "up": [0, 19, 202, 238, 254, 345], "system": [0, 6, 22, 29, 37, 39, 46, 48, 60, 71, 79, 96, 98, 114, 122, 131, 132, 137, 138, 170, 173, 184, 186, 189, 196, 197, 199, 203, 204, 216, 219, 236, 243, 246, 247, 248, 250, 251, 252, 253, 255, 256, 258, 262, 265, 266, 267, 268, 269, 271, 273, 278, 279, 280, 281, 283, 284, 285, 287, 288, 289, 291, 294, 304, 312, 318, 321, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 336, 337, 342, 349, 352, 355, 361], "work": [0, 14, 204, 268, 276, 279, 285, 330, 336, 361, 362], "well": [0, 19, 28, 186, 238, 268, 269, 312, 318, 322, 330, 345, 361, 364], "remov": [0, 6, 32, 62, 65, 81, 84, 96, 107, 108, 124, 127, 162, 164, 168, 189, 239, 241, 312, 351, 363, 365], "As": [0, 3, 4, 64, 83, 106, 126, 163, 167, 181, 240, 253, 256, 301, 330, 331], "understood": [0, 25, 301, 329, 338, 339], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 39, 44, 46, 55, 58, 59, 64, 65, 69, 74, 77, 78, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 96, 101, 102, 103, 104, 106, 107, 108, 112, 117, 120, 121, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 146, 147, 148, 149, 151, 153, 154, 158, 161, 163, 165, 167, 168, 175, 176, 180, 181, 182, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 250, 252, 253, 254, 255, 256, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 284, 285, 287, 288, 289, 291, 294, 295, 296, 298, 299, 301, 302, 304, 305, 306, 307, 308, 309, 312, 318, 323, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "5": [0, 2, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 24, 25, 26, 27, 28, 29, 39, 42, 44, 46, 49, 51, 53, 55, 58, 59, 67, 69, 72, 74, 77, 78, 85, 86, 87, 89, 90, 91, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 108, 110, 112, 115, 117, 120, 121, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 153, 154, 158, 171, 174, 175, 176, 181, 182, 184, 185, 186, 190, 193, 195, 196, 204, 205, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 244, 245, 246, 247, 248, 249, 250, 251, 254, 259, 262, 263, 264, 265, 266, 267, 269, 271, 273, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 310, 311, 312, 314, 316, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 361, 365], "whole": [0, 294], "correspond": [0, 6, 14, 15, 16, 17, 18, 19, 29, 40, 88, 96, 102, 138, 139, 181, 182, 189, 203, 204, 209, 220, 227, 230, 236, 238, 247, 265, 267, 268, 270, 271, 278, 304, 305, 306, 307, 308, 309, 326, 328, 332, 337, 342, 345, 346, 347, 349], "list": [0, 7, 8, 10, 11, 14, 17, 18, 19, 24, 44, 48, 55, 60, 64, 65, 69, 71, 74, 79, 83, 84, 86, 87, 88, 92, 98, 101, 102, 106, 107, 112, 114, 117, 122, 126, 127, 142, 143, 146, 149, 163, 165, 167, 168, 170, 173, 181, 182, 207, 208, 214, 240, 242, 244, 245, 249, 258, 261, 263, 264, 265, 272, 279, 280, 295, 325, 326, 329, 341, 343, 344, 345, 361, 364], "toolkit5g": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 362, 363, 365], "crcencod": [0, 1, 2, 3, 4, 42, 51, 53, 67, 110, 184, 188, 365], "mapper": [0, 1, 3, 47, 64, 70, 83, 97, 101, 106, 113, 126, 141, 150, 151, 152, 153, 154, 158, 159, 161, 163, 167, 169, 172, 179, 183, 184, 185, 186, 188, 189, 208, 235, 237, 240, 257, 275, 294, 301, 311, 312, 318, 322, 325, 326, 336, 338, 339, 354, 355, 361, 364], "symbolmap": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294, 301, 311, 312, 318, 322, 325, 326, 329, 336, 338, 339, 354, 365], "channelprocess": [0, 21, 22, 301, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354, 365], "addnois": [0, 1, 21, 301, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354, 365], "demapp": [0, 1, 4, 47, 49, 70, 72, 86, 97, 99, 113, 115, 141, 150, 169, 172, 174, 179, 184, 185, 186, 188, 189, 257, 294, 301, 311, 312, 318, 322, 325, 326, 336, 338, 339, 354, 355, 361, 365], "decod": [0, 1, 2, 7, 8, 9, 11, 27, 31, 39, 44, 46, 48, 54, 59, 60, 64, 69, 71, 73, 78, 79, 83, 85, 93, 98, 102, 106, 108, 112, 114, 116, 121, 122, 126, 143, 144, 147, 149, 163, 167, 170, 173, 175, 181, 183, 184, 185, 186, 188, 189, 207, 212, 234, 236, 240, 243, 258, 262, 266, 269, 270, 272, 274, 280, 281, 284, 285, 289, 292, 293, 295, 301, 310, 318, 321, 322, 323, 329, 338, 339, 352, 355, 361], "crcdecod": [0, 1, 2, 3, 42, 51, 53, 67, 110, 188, 365], "directli": [0, 1, 85, 86, 184, 185, 193, 195, 203, 243, 244, 245, 283, 302, 335, 362], "It": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 16, 17, 19, 22, 24, 27, 28, 29, 32, 33, 38, 39, 44, 46, 48, 49, 55, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 154, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 249, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 309, 318, 329, 330, 331, 336, 338, 339, 353, 361, 363], "recommend": 0, "alon": [0, 206], "alias": 0, "mandatori": [0, 280], "design": [0, 3, 4, 6, 10, 12, 31, 55, 58, 74, 77, 96, 117, 120, 142, 146, 186, 211, 227, 234, 254, 269, 270, 275, 276, 309, 318, 323, 336, 339, 341, 342, 343, 344, 346, 349, 361, 364], "oper": [0, 57, 76, 95, 102, 119, 139, 186, 207, 210, 220, 268, 269, 270, 283, 285, 323, 351, 359, 362, 363, 365], "per": [0, 3, 4, 6, 14, 18, 19, 24, 48, 49, 60, 71, 72, 79, 85, 86, 87, 88, 90, 91, 94, 95, 96, 98, 99, 101, 102, 103, 104, 114, 115, 122, 130, 131, 132, 136, 137, 138, 139, 170, 171, 173, 174, 181, 182, 184, 185, 207, 208, 215, 216, 218, 219, 220, 228, 229, 230, 231, 232, 235, 236, 237, 238, 246, 247, 248, 251, 253, 256, 258, 259, 267, 271, 276, 278, 281, 285, 287, 288, 289, 291, 294, 299, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "num_bits_per_symbol": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 318, 322, 329, 338, 339, 365], "4": [0, 1, 2, 6, 8, 9, 12, 14, 17, 18, 19, 22, 24, 26, 28, 35, 37, 39, 42, 46, 48, 49, 51, 53, 58, 59, 60, 64, 65, 67, 71, 72, 77, 78, 79, 83, 84, 85, 87, 88, 89, 90, 91, 92, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 114, 115, 120, 121, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 144, 147, 153, 154, 158, 163, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 180, 181, 182, 183, 184, 190, 197, 198, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 221, 226, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 269, 271, 272, 273, 274, 275, 278, 285, 287, 288, 289, 291, 294, 302, 304, 306, 307, 308, 309, 310, 311, 312, 314, 315, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "demapping_method": [0, 48, 60, 71, 79, 86, 98, 114, 122, 170, 173, 258, 318, 322, 329, 338, 339, 365], "app": [0, 6, 48, 60, 71, 79, 86, 96, 98, 114, 122, 170, 173, 181, 188, 258, 294, 301, 318, 322, 323, 326, 328, 329, 338, 339, 365], "crctype": [0, 2, 3, 4, 7, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 93, 108, 110, 112, 117, 142, 143, 146, 186, 365], "crc24c": [0, 2, 3, 4, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 110, 112, 117, 142, 143, 146, 365], "qammapp": [0, 365], "qam": [0, 26, 48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 169, 170, 171, 173, 174, 235, 237, 257, 258, 259, 294, 321, 326, 336, 338, 339, 364, 365], "qamdemapp": [0, 365], "constellation_typ": [0, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 318, 322, 329, 338, 339, 365], "hard_out": [0, 6, 48, 60, 71, 79, 86, 96, 98, 114, 122, 144, 147, 170, 173, 258, 294, 301, 311, 318, 322, 325, 326, 329, 338, 339, 354, 365], "true": [0, 3, 5, 6, 10, 11, 12, 17, 18, 19, 21, 22, 44, 48, 55, 60, 69, 71, 74, 79, 86, 88, 96, 98, 103, 104, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 170, 173, 181, 184, 204, 206, 215, 216, 217, 218, 219, 220, 227, 228, 229, 235, 237, 238, 246, 247, 258, 263, 264, 269, 271, 273, 279, 281, 285, 287, 289, 291, 294, 301, 302, 305, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 338, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 365], "24": [0, 2, 3, 4, 8, 10, 29, 39, 42, 46, 51, 53, 55, 67, 74, 93, 110, 117, 142, 146, 184, 189, 228, 231, 234, 244, 245, 254, 262, 266, 278, 301, 304, 305, 314, 318, 323, 326, 328, 330, 331, 332, 333, 334, 335, 340, 341, 351, 365], "16": [0, 2, 3, 4, 8, 24, 29, 42, 49, 51, 53, 62, 67, 72, 81, 87, 92, 93, 99, 101, 102, 110, 115, 124, 130, 131, 132, 134, 136, 137, 138, 139, 164, 171, 174, 181, 182, 186, 202, 203, 205, 207, 208, 215, 216, 217, 218, 219, 220, 227, 228, 231, 234, 236, 241, 244, 245, 246, 247, 249, 259, 265, 278, 291, 294, 304, 306, 307, 308, 309, 310, 311, 314, 318, 321, 323, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 340, 341, 342, 343, 344, 345, 348, 349, 351, 352, 353, 359, 362, 363, 365], "log": [0, 5, 12, 18, 19, 48, 49, 57, 60, 64, 71, 72, 76, 79, 83, 86, 98, 99, 106, 114, 115, 119, 122, 126, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 189, 210, 240, 257, 258, 281, 301, 322, 329, 338, 339, 359, 362, 363], "return": [0, 5, 6, 7, 8, 9, 10, 11, 15, 18, 19, 35, 40, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 85, 86, 87, 88, 92, 93, 94, 96, 98, 99, 102, 112, 114, 115, 117, 122, 134, 139, 142, 143, 144, 146, 147, 148, 149, 170, 171, 173, 174, 175, 176, 181, 182, 186, 189, 193, 195, 196, 198, 202, 204, 206, 207, 209, 235, 236, 237, 244, 245, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 264, 267, 268, 269, 270, 271, 272, 274, 275, 278, 279, 280, 281, 285, 287, 288, 289, 291, 294, 302, 318, 322, 335, 345, 351], "hard": [0, 5, 6, 10, 11, 12, 24, 44, 48, 49, 55, 60, 64, 69, 71, 72, 74, 79, 83, 86, 96, 98, 99, 101, 102, 106, 112, 114, 115, 117, 122, 126, 142, 143, 144, 146, 147, 149, 163, 167, 169, 170, 173, 174, 207, 208, 240, 257, 258, 318, 322], "0": [0, 1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 24, 27, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 49, 55, 62, 64, 65, 69, 72, 74, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 148, 162, 163, 164, 165, 167, 168, 171, 174, 175, 181, 182, 183, 184, 185, 186, 188, 189, 190, 193, 195, 196, 197, 198, 202, 203, 204, 205, 206, 207, 208, 209, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 278, 280, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 355, 359, 360, 362, 363, 365], "power": [0, 6, 14, 15, 16, 18, 21, 96, 103, 104, 131, 137, 200, 202, 203, 204, 205, 206, 216, 219, 228, 229, 231, 235, 237, 244, 245, 275, 276, 279, 280, 283, 285, 287, 288, 289, 291, 294, 299, 301, 306, 318, 330, 331, 334, 339, 341, 342, 343, 344, 347, 349, 350, 351, 352, 355, 361], "ad": [0, 1, 6, 7, 21, 86, 93, 96, 301, 302, 323, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 348, 351, 353, 361, 365], "frac": [0, 19, 32, 33, 48, 49, 60, 71, 72, 79, 85, 95, 98, 99, 103, 104, 114, 115, 122, 170, 171, 173, 174, 182, 185, 189, 228, 229, 230, 231, 236, 238, 244, 245, 248, 249, 251, 254, 258, 259, 265, 270, 271, 278, 279, 280, 281, 322, 364, 365], "snr": [0, 1, 10, 12, 48, 55, 60, 71, 74, 79, 86, 90, 98, 114, 117, 122, 142, 146, 170, 173, 175, 181, 184, 185, 188, 258, 269, 278, 280, 281, 294, 304, 311, 318, 321, 328, 329, 330, 331, 333, 334, 335, 337, 338, 340, 353, 354, 355, 361], "sequenc": [0, 1, 3, 4, 8, 14, 24, 32, 39, 46, 48, 49, 60, 62, 64, 65, 71, 72, 79, 81, 83, 84, 85, 93, 98, 99, 101, 103, 104, 106, 107, 114, 115, 122, 124, 126, 127, 129, 130, 131, 134, 135, 136, 137, 139, 145, 148, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 208, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 233, 235, 237, 238, 239, 240, 241, 242, 252, 253, 255, 256, 258, 259, 263, 269, 271, 273, 276, 285, 287, 289, 291, 294, 296, 327, 330, 331, 334, 352, 353, 355, 361, 364], "randomli": [0, 19, 64, 65, 83, 84, 87, 106, 107, 126, 127, 163, 165, 167, 168, 206, 235, 240, 242, 260, 261, 262, 263, 264, 265, 266, 267], "randint": [0, 3, 4, 6, 10, 12, 25, 29, 49, 55, 62, 65, 72, 74, 81, 84, 91, 96, 99, 107, 108, 115, 117, 124, 127, 142, 144, 146, 147, 148, 149, 164, 165, 168, 171, 174, 176, 182, 235, 236, 237, 241, 242, 249, 259, 272, 274, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 351, 352, 353, 354, 365], "random": [0, 1, 3, 4, 6, 10, 12, 16, 18, 19, 25, 29, 49, 55, 62, 64, 65, 72, 74, 81, 83, 84, 91, 96, 99, 106, 107, 108, 115, 117, 124, 126, 127, 142, 144, 146, 147, 148, 149, 162, 163, 164, 165, 167, 168, 171, 174, 176, 182, 183, 198, 235, 236, 237, 239, 240, 241, 242, 243, 249, 259, 267, 269, 272, 273, 274, 278, 280, 285, 287, 289, 291, 294, 296, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 348, 351, 352, 353, 354, 361, 364, 365], "numblock": [0, 365], "10000": [0, 196, 198, 206, 312, 321, 336, 348, 355, 361, 365], "nbitsperblock": [0, 365], "384": [0, 244, 314, 336, 365], "crcbit": [0, 3, 4, 365], "e": [0, 7, 8, 10, 11, 14, 15, 16, 17, 18, 19, 22, 24, 26, 29, 32, 33, 39, 44, 46, 54, 55, 57, 58, 69, 73, 74, 76, 77, 86, 87, 92, 95, 101, 102, 112, 116, 117, 119, 120, 142, 143, 145, 146, 148, 149, 152, 153, 158, 159, 175, 181, 182, 184, 185, 188, 189, 207, 208, 210, 211, 227, 230, 236, 238, 262, 266, 270, 271, 278, 280, 304, 307, 309, 318, 323, 328, 338, 339], "group": [0, 7, 24, 29, 35, 37, 92, 101, 102, 132, 138, 139, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 230, 244, 245, 246, 247, 249, 270, 351, 353], "an": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 24, 25, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 58, 60, 62, 64, 65, 69, 71, 72, 74, 77, 79, 81, 83, 84, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 122, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 189, 193, 195, 196, 197, 198, 199, 204, 205, 206, 207, 208, 211, 215, 216, 218, 219, 220, 227, 228, 229, 231, 232, 233, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 265, 266, 269, 270, 271, 272, 275, 276, 278, 279, 280, 298, 302, 306, 307, 309, 311, 312, 321, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 342, 345, 346, 349, 351, 352, 353, 354, 359, 361, 362, 363], "70": [0, 267, 301, 304, 308, 309, 314, 332, 333, 334, 338, 340, 345, 351], "ratio": [0, 5, 10, 12, 18, 19, 48, 49, 55, 57, 60, 64, 71, 72, 74, 76, 79, 83, 86, 88, 98, 99, 106, 114, 115, 117, 119, 122, 126, 142, 146, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 188, 189, 210, 240, 257, 258, 269, 280, 281, 311, 322, 328, 329, 335, 338, 339, 340, 352, 353, 355, 361, 365], "rxsymbol": [0, 301, 365], "back": [0, 32, 34, 35, 36, 37, 318], "either": [0, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 22, 24, 29, 39, 44, 46, 48, 60, 64, 69, 71, 79, 83, 87, 88, 89, 92, 93, 94, 95, 96, 98, 101, 102, 106, 112, 114, 122, 126, 130, 131, 132, 136, 137, 138, 139, 143, 148, 163, 167, 170, 173, 176, 181, 182, 188, 189, 206, 207, 208, 215, 216, 218, 219, 220, 227, 235, 236, 238, 240, 244, 245, 246, 247, 249, 254, 258, 264, 265, 267, 278, 279, 280, 281, 328, 330, 331, 333, 334, 353], "llr": [0, 1, 5, 6, 10, 11, 12, 44, 48, 55, 57, 60, 64, 69, 71, 74, 76, 79, 83, 86, 88, 96, 98, 102, 106, 112, 114, 117, 119, 122, 126, 142, 143, 146, 149, 152, 159, 163, 167, 170, 173, 181, 184, 185, 207, 210, 240, 258, 291, 294, 301, 323, 339, 351], "base": [0, 1, 4, 6, 7, 8, 10, 15, 16, 17, 18, 19, 24, 29, 31, 48, 49, 55, 57, 58, 60, 64, 65, 71, 72, 74, 76, 77, 79, 83, 84, 85, 86, 87, 88, 92, 93, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 114, 115, 117, 119, 120, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 144, 145, 146, 147, 149, 163, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 188, 195, 200, 205, 206, 207, 208, 209, 210, 211, 215, 216, 217, 218, 219, 220, 221, 227, 228, 229, 231, 234, 235, 236, 240, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 261, 263, 264, 265, 267, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 282, 283, 284, 286, 287, 290, 292, 293, 295, 296, 299, 301, 305, 306, 307, 309, 313, 321, 322, 323, 328, 337, 339, 341, 342, 343, 344, 345, 347, 349, 351, 352, 355, 361, 364], "bitsest": [0, 365], "complex64": [0, 15, 29, 39, 46, 48, 49, 60, 71, 72, 79, 85, 86, 95, 98, 99, 103, 104, 114, 115, 122, 170, 171, 173, 174, 182, 184, 185, 228, 229, 230, 231, 235, 237, 238, 258, 259, 271, 275, 276, 285, 287, 289, 291, 294, 301, 302, 311, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 351, 352, 354, 365], "variabl": [0, 6, 8, 17, 18, 19, 22, 24, 29, 39, 46, 64, 65, 83, 84, 87, 92, 94, 96, 101, 106, 107, 126, 127, 163, 165, 167, 168, 189, 208, 233, 235, 236, 237, 240, 242, 243, 249, 265, 269, 276, 278, 301, 304, 305, 306, 307, 308, 309, 342, 365], "rbit": [0, 3, 294, 365], "otherwis": [0, 3, 6, 12, 15, 17, 19, 39, 46, 88, 95, 96, 182, 184, 231, 244, 245, 254, 262, 266, 272, 281, 322, 359, 360, 362, 363], "least": [0, 6, 22, 96, 200, 206, 268, 269, 270, 271, 295, 330, 331, 332, 333, 334, 335], "compar": [0, 271, 301, 306, 307, 308, 309, 312, 318, 321, 329, 330, 331, 334, 355, 361, 365], "On": [0, 49, 72, 99, 115, 171, 174, 186, 189, 204, 206, 259, 301, 322, 356], "other": [0, 10, 11, 14, 18, 19, 28, 44, 49, 55, 69, 72, 74, 87, 99, 112, 115, 117, 142, 143, 146, 171, 174, 186, 189, 196, 197, 198, 199, 204, 206, 227, 244, 245, 259, 267, 269, 270, 275, 276, 278, 279, 280, 283, 294, 295, 298, 301, 305, 306, 312, 318, 322, 323, 325, 326, 330, 331, 333, 334, 335, 336, 337, 342, 345, 346, 349, 359, 361, 362, 363, 364, 365], "hand": [0, 49, 72, 99, 115, 171, 174, 186, 189, 204, 206, 259, 301, 322], "flag": [0, 11, 15, 18, 19, 21, 26, 27, 39, 44, 46, 48, 58, 60, 69, 71, 77, 79, 98, 112, 114, 120, 122, 143, 153, 158, 170, 173, 184, 188, 189, 206, 211, 235, 237, 258, 265, 269, 271, 279, 281, 301, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354, 363, 365], "ber": [0, 12, 87, 289, 291, 294, 318, 321, 329, 337, 338, 340, 354, 355, 361], "mean": [0, 18, 19, 29, 269, 270, 271, 285, 291, 294, 301, 311, 318, 322, 323, 325, 326, 327, 329, 335, 336, 337, 338, 339, 342, 345, 346, 348, 349, 351, 352, 353, 354, 365], "ab": [0, 285, 287, 289, 291, 294, 301, 302, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 365], "total": [0, 8, 19, 29, 93, 102, 207, 230, 235, 237, 266, 278, 279, 304, 305, 307, 318, 351, 365], "number": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 34, 35, 36, 37, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 258, 259, 260, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, 276, 278, 279, 281, 285, 287, 288, 289, 291, 294, 301, 302, 304, 308, 310, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 355, 361, 365], "bler": [0, 280, 294, 313, 321, 337, 354, 355, 361], "print": [0, 10, 11, 18, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 227, 236, 244, 245, 254, 269, 272, 274, 278, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 345, 346, 351, 352, 353, 354, 365], "str": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 29, 35, 37, 39, 44, 46, 48, 49, 55, 60, 64, 65, 69, 71, 72, 74, 79, 83, 84, 85, 86, 87, 88, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 122, 126, 127, 130, 131, 132, 138, 142, 143, 146, 149, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 195, 205, 206, 207, 209, 215, 216, 227, 228, 229, 230, 231, 233, 236, 238, 240, 242, 244, 245, 246, 247, 249, 254, 258, 259, 262, 263, 264, 266, 267, 269, 270, 271, 272, 273, 274, 275, 276, 278, 289, 291, 294, 301, 302, 304, 305, 306, 307, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 351, 352, 353, 354, 365], "6": [0, 2, 3, 4, 17, 18, 19, 22, 24, 29, 34, 36, 39, 42, 46, 49, 51, 53, 64, 65, 67, 72, 83, 84, 85, 87, 88, 94, 95, 99, 101, 102, 103, 104, 106, 107, 110, 115, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 145, 163, 165, 167, 168, 171, 174, 175, 176, 181, 182, 184, 204, 205, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 229, 230, 231, 233, 234, 236, 238, 240, 242, 244, 245, 246, 247, 248, 249, 251, 254, 259, 262, 263, 264, 265, 266, 267, 270, 271, 273, 276, 278, 285, 287, 288, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 317, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 361, 362, 363, 365], "71875e": 0, "05": [0, 202, 204, 205, 278, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 330, 337, 354, 365], "026599999999999957": 0, "practic": [0, 198, 202, 203, 204, 341, 342, 343, 344, 347, 349], "possibl": [0, 132, 138, 196, 204, 205, 214, 236, 246, 247, 249, 254, 260, 261, 262, 263, 264, 265, 266, 267, 278, 279, 301, 305, 327, 328, 330, 331, 361], "known": [0, 203, 204, 268, 269, 270, 271, 272, 273, 275, 276, 285, 325, 326, 327, 330, 331, 332, 334, 337], "howev": [0, 10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 193, 195, 196, 197, 198, 199, 202, 267, 279, 295, 302, 307, 335], "without": [0, 27, 268, 298], "know": [0, 39, 46, 236, 262, 266], "inform": [0, 1, 2, 3, 6, 8, 9, 10, 11, 12, 14, 24, 27, 40, 42, 44, 45, 48, 49, 51, 53, 55, 57, 60, 64, 65, 67, 69, 71, 72, 74, 76, 79, 83, 84, 85, 86, 87, 88, 90, 93, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 119, 122, 126, 127, 131, 132, 137, 138, 142, 143, 146, 148, 149, 152, 159, 162, 163, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 185, 189, 197, 202, 203, 204, 205, 207, 208, 210, 215, 216, 217, 218, 219, 220, 226, 227, 230, 232, 235, 236, 237, 239, 240, 243, 246, 247, 258, 259, 260, 262, 265, 266, 269, 270, 272, 273, 275, 276, 277, 278, 280, 281, 285, 287, 289, 291, 294, 298, 312, 318, 322, 323, 326, 329, 330, 331, 332, 333, 334, 335, 338, 339, 352, 355], "fig": [0, 186, 195, 202, 204, 206, 231, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "ax": [0, 202, 204, 206, 231, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "subplot": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "set_aspect": [0, 302, 327, 330, 331, 333, 335, 342, 345, 346, 352, 365], "scatter": [0, 289, 291, 294, 301, 302, 318, 327, 330, 331, 332, 333, 334, 335, 342, 345, 346, 351, 365], "real": [0, 34, 36, 280, 285, 289, 291, 294, 301, 312, 318, 351, 365], "imag": [0, 285, 289, 291, 294, 351, 365], "color": [0, 19, 206, 273, 285, 287, 288, 289, 291, 294, 301, 302, 311, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 345, 346, 349, 351, 352, 365], "red": [0, 206, 301, 327, 329, 330, 331, 336, 338, 339, 340, 365], "marker": [0, 206, 301, 302, 304, 305, 306, 307, 308, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 352, 354, 365], "": [0, 1, 6, 14, 16, 17, 19, 29, 33, 34, 35, 36, 37, 64, 65, 83, 84, 85, 87, 88, 96, 101, 103, 104, 106, 107, 126, 127, 132, 138, 162, 163, 165, 167, 168, 181, 189, 196, 198, 206, 208, 228, 229, 230, 231, 235, 236, 239, 240, 242, 243, 246, 247, 248, 249, 251, 254, 265, 268, 269, 270, 271, 275, 276, 278, 279, 285, 289, 291, 294, 298, 301, 302, 305, 308, 311, 312, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 347, 349, 351, 354, 355, 361, 364, 365], "set_xlabel": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "part": [0, 24, 39, 46, 89, 101, 102, 130, 131, 132, 134, 136, 137, 138, 144, 147, 180, 184, 186, 189, 207, 208, 215, 216, 217, 218, 219, 227, 230, 236, 246, 247, 262, 266, 270, 285, 294, 301, 318, 325, 326, 337, 361, 365], "mathfrak": [0, 365], "r": [0, 1, 39, 46, 48, 49, 60, 71, 72, 79, 85, 87, 98, 99, 103, 104, 114, 115, 122, 145, 170, 171, 173, 174, 181, 184, 193, 195, 198, 206, 226, 227, 229, 230, 231, 233, 243, 254, 258, 259, 260, 262, 263, 265, 266, 269, 270, 271, 276, 277, 285, 289, 291, 294, 296, 299, 302, 307, 308, 311, 318, 322, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 336, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 354, 355, 361, 364, 365], "x": [0, 12, 22, 29, 86, 87, 95, 102, 189, 193, 195, 196, 197, 198, 199, 206, 207, 255, 273, 275, 278, 279, 280, 285, 287, 288, 289, 291, 294, 301, 302, 306, 309, 311, 318, 322, 323, 325, 326, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 365], "set_ylabel": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "imaginari": [0, 285, 301, 365], "set_titl": [0, 273, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "contel": [0, 329, 338, 339, 365], "grid": [0, 1, 19, 22, 29, 32, 33, 34, 35, 36, 37, 39, 46, 85, 86, 103, 104, 130, 136, 184, 185, 186, 189, 204, 215, 218, 226, 228, 229, 230, 231, 232, 233, 238, 243, 254, 255, 256, 262, 265, 266, 267, 269, 270, 271, 272, 273, 274, 275, 276, 279, 286, 288, 290, 292, 293, 295, 296, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 332, 333, 335, 336, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 353, 354, 355, 361, 365], "both": [0, 6, 7, 12, 14, 16, 18, 19, 22, 62, 81, 90, 92, 95, 96, 124, 164, 186, 189, 195, 196, 197, 198, 199, 206, 214, 227, 234, 235, 236, 237, 241, 249, 255, 256, 270, 273, 294, 305, 318, 322, 328, 330, 331, 334, 337, 339, 341, 342, 343, 344, 345, 346, 347, 349, 354, 364, 365], "show": [0, 18, 19, 29, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 359, 360, 362, 363, 365], "abov": [0, 19, 33, 39, 46, 95, 195, 196, 197, 198, 199, 206, 238, 278, 280, 289, 295, 301, 306, 351], "procedur": [0, 1, 6, 7, 12, 29, 94, 96, 102, 130, 131, 132, 134, 136, 137, 138, 139, 141, 175, 176, 186, 188, 206, 207, 215, 216, 217, 218, 219, 220, 236, 244, 245, 246, 247, 260, 278, 285, 289, 291, 299, 330, 332, 333, 335, 341, 342, 343, 344, 345, 346, 347, 349, 351, 355, 359, 361, 362, 364], "repeat": [0, 3, 29, 102, 207, 236, 279, 285, 287, 289, 291, 294, 302, 311, 321, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 337, 345, 352, 354, 361], "differ": [0, 2, 6, 14, 15, 17, 19, 23, 31, 42, 51, 53, 57, 62, 64, 65, 67, 76, 81, 83, 84, 87, 96, 102, 106, 107, 110, 119, 124, 126, 127, 162, 163, 164, 165, 167, 168, 190, 195, 197, 198, 200, 203, 206, 207, 209, 210, 226, 235, 236, 237, 239, 240, 241, 242, 249, 268, 275, 276, 278, 283, 284, 301, 306, 307, 310, 312, 318, 321, 323, 328, 329, 330, 331, 333, 334, 335, 338, 340, 341, 342, 343, 344, 345, 347, 349, 352, 353, 355, 361, 365], "order": [0, 2, 24, 26, 39, 42, 46, 48, 49, 51, 53, 58, 60, 67, 71, 72, 77, 79, 85, 86, 87, 88, 94, 98, 99, 101, 102, 110, 114, 115, 120, 122, 131, 137, 144, 147, 170, 171, 173, 174, 175, 176, 182, 204, 207, 208, 209, 211, 214, 216, 219, 227, 258, 259, 262, 264, 266, 269, 271, 275, 276, 281, 294, 301, 327, 337, 341, 343, 344, 347, 365], "analys": 0, "v": [0, 12, 29, 244, 284, 285, 288, 289, 291, 294, 302, 305, 306, 308, 310, 311, 318, 321, 329, 330, 331, 332, 333, 335, 337, 338, 340, 352, 353, 354, 355, 359, 360, 361, 362], "snrdb": [0, 280, 281, 301, 311, 322, 323, 325, 326, 328, 329, 338, 339, 340, 352, 353, 354, 365], "linspac": [0, 301, 302, 305, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 351, 352, 353, 354, 365], "25": [0, 10, 15, 18, 19, 55, 74, 117, 142, 145, 146, 189, 202, 250, 255, 256, 267, 301, 302, 304, 307, 309, 311, 312, 314, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 339, 340, 341, 342, 345, 347, 349, 351, 352, 354, 365], "10": [0, 2, 6, 14, 15, 18, 19, 24, 25, 29, 39, 42, 46, 49, 51, 53, 67, 72, 85, 87, 88, 90, 91, 94, 96, 99, 101, 102, 103, 104, 110, 115, 130, 131, 132, 136, 137, 138, 144, 145, 147, 171, 174, 181, 182, 184, 189, 196, 198, 199, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 245, 246, 247, 248, 249, 251, 254, 259, 262, 263, 264, 265, 266, 267, 269, 270, 271, 272, 273, 278, 279, 280, 281, 284, 285, 287, 288, 289, 291, 294, 301, 302, 303, 304, 305, 306, 307, 308, 310, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 362, 365], "modord": [0, 11, 23, 24, 44, 48, 49, 60, 69, 71, 72, 79, 85, 86, 88, 98, 99, 100, 101, 102, 112, 114, 115, 122, 143, 144, 147, 149, 170, 171, 173, 174, 175, 176, 182, 186, 207, 208, 209, 258, 259, 271, 294, 301, 311, 325, 326, 336, 339, 354, 365], "arrai": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12, 15, 16, 17, 18, 19, 21, 22, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 49, 55, 57, 58, 59, 62, 64, 65, 69, 72, 74, 76, 77, 78, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 99, 102, 106, 107, 112, 115, 117, 119, 120, 121, 124, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 264, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 287, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 339, 350, 351, 352, 353, 354, 355, 361, 365], "dtype": [0, 3, 4, 6, 10, 12, 14, 18, 19, 29, 48, 49, 55, 60, 71, 72, 74, 79, 91, 96, 98, 99, 108, 114, 115, 117, 122, 142, 146, 170, 171, 173, 174, 182, 227, 236, 249, 258, 259, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 311, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 339, 342, 345, 346, 347, 351, 352, 354, 365], "int32": [0, 12, 289, 294, 302, 332, 333, 335, 336, 338, 352, 365], "zero": [0, 6, 7, 8, 9, 11, 12, 14, 18, 19, 29, 44, 57, 69, 76, 93, 96, 102, 112, 119, 138, 143, 148, 152, 159, 193, 195, 203, 205, 207, 210, 217, 218, 219, 220, 238, 247, 269, 270, 271, 278, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 351, 352, 353, 354, 365], "j": [0, 33, 199, 284, 301, 318, 336, 365], "m": [0, 5, 6, 14, 17, 18, 96, 196, 198, 206, 244, 245, 252, 253, 254, 265, 302, 304, 305, 306, 307, 308, 311, 318, 321, 322, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 341, 342, 343, 344, 345, 346, 347, 348, 352, 361, 364, 365], "int": [0, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 91, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 193, 195, 196, 198, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 285, 287, 288, 289, 291, 294, 301, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 323, 326, 327, 328, 330, 331, 334, 336, 337, 339, 345, 351, 352, 353, 365], "float32": [0, 6, 7, 8, 10, 11, 12, 14, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 88, 92, 93, 96, 98, 99, 102, 108, 112, 114, 115, 117, 122, 142, 143, 146, 148, 149, 170, 171, 173, 174, 181, 182, 207, 258, 259, 285, 301, 318, 322, 326, 327, 329, 334, 338, 339, 342, 345, 346, 347, 352, 365], "For": [0, 6, 14, 15, 18, 19, 29, 32, 35, 37, 39, 46, 49, 64, 65, 72, 83, 84, 87, 94, 95, 96, 99, 103, 104, 106, 107, 115, 126, 127, 145, 162, 163, 165, 167, 168, 171, 174, 184, 196, 197, 198, 199, 202, 203, 204, 205, 206, 227, 228, 229, 231, 236, 238, 239, 240, 242, 249, 254, 259, 262, 265, 266, 267, 268, 269, 270, 273, 275, 276, 278, 280, 294, 295, 301, 304, 305, 307, 308, 309, 311, 312, 318, 322, 325, 326, 328, 329, 338, 339, 342, 345, 346, 347, 349, 354, 355, 359, 360, 361, 362, 363, 365], "arang": [0, 14, 29, 273, 278, 285, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 335, 336, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354, 365], "semilogi": [0, 301, 311, 318, 322, 323, 325, 326, 329, 338, 339, 340, 352, 353, 354, 365], "db": [0, 14, 18, 19, 281, 285, 287, 288, 289, 291, 294, 302, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 329, 338, 339, 340, 342, 345, 346, 348, 349, 352, 353, 354, 365], "set_xtick": [0, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 346, 352, 354, 365], "minor": [0, 285, 287, 289, 291, 294, 302, 305, 311, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 349, 351, 352, 354, 365], "fals": [0, 3, 5, 6, 10, 11, 12, 15, 17, 18, 19, 21, 22, 27, 44, 48, 55, 60, 69, 71, 74, 79, 86, 87, 88, 90, 96, 98, 102, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 149, 170, 173, 181, 182, 184, 207, 209, 215, 216, 217, 218, 219, 220, 227, 237, 238, 246, 247, 258, 269, 271, 278, 279, 281, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 342, 345, 346, 348, 349, 351, 352, 353, 354, 365], "legend": [0, 206, 273, 285, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 353, 354, 365], "qpsk": [0, 58, 77, 85, 86, 120, 184, 185, 211, 289, 291, 294, 323, 328, 338, 339, 351, 365], "16qam": [0, 365], "64qam": [0, 365], "download": [0, 285, 287, 288, 289, 291, 294, 295, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 355, 359, 360, 362, 363, 365], "find": [0, 22, 39, 46, 184, 196, 204, 236, 252, 253, 262, 266, 304, 336, 348, 351, 359, 360, 362, 365], "advanc": [0, 198, 268, 275, 276, 332, 334, 349], "thank": [0, 330, 331, 334], "read": [0, 26, 202, 204, 205, 227, 238, 269, 270, 273, 275, 276, 330, 331, 334], "feel": [0, 361], "free": [0, 3, 29, 361], "contact": [0, 295, 361], "assist": [0, 280, 295, 355, 364], "post": [0, 6, 21, 96, 280, 356, 357, 361], "question": [0, 361], "discuss": [0, 1, 8, 10, 55, 74, 93, 117, 142, 146, 149, 195, 200, 205, 214, 262, 266, 301, 336, 361], "forum": [0, 361], "answer": [0, 361], "soon": [0, 269, 361], "wide": [1, 336], "rang": [1, 6, 14, 18, 19, 29, 39, 46, 96, 132, 134, 138, 139, 184, 217, 220, 236, 238, 246, 247, 248, 249, 251, 262, 266, 267, 280, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 345, 347, 351, 352, 354], "usecas": 1, "featur": [1, 14, 19, 186, 243, 280, 312, 341, 342, 343, 344, 349], "them": [1, 6, 40, 87, 96, 204, 206, 275, 276, 363, 365], "captur": [1, 18, 19, 276, 278, 281, 294, 311, 312, 325, 326, 335, 354], "via": [1, 12, 102, 193, 203, 207, 294, 311, 312, 325, 326, 354, 364], "gener": [1, 2, 3, 4, 9, 10, 12, 14, 16, 19, 29, 32, 34, 35, 36, 37, 42, 45, 48, 49, 51, 53, 55, 60, 62, 64, 65, 67, 71, 72, 74, 79, 81, 83, 84, 85, 86, 87, 88, 89, 91, 98, 99, 102, 103, 104, 106, 107, 108, 110, 114, 115, 117, 122, 124, 126, 127, 129, 130, 131, 134, 135, 136, 137, 139, 142, 146, 148, 149, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 180, 182, 184, 185, 189, 190, 196, 198, 209, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 236, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 272, 275, 276, 286, 290, 292, 293, 295, 299, 313, 318, 321, 322, 328, 329, 336, 338, 339, 349, 350, 353, 355, 361, 364], "all": [1, 4, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 23, 27, 31, 39, 44, 46, 55, 65, 69, 74, 84, 85, 92, 93, 96, 103, 104, 107, 112, 117, 127, 142, 143, 146, 148, 149, 162, 168, 185, 195, 196, 197, 198, 199, 202, 214, 228, 229, 235, 236, 237, 238, 239, 243, 244, 249, 250, 253, 256, 267, 269, 273, 278, 279, 280, 281, 283, 285, 295, 298, 299, 301, 302, 308, 313, 318, 321, 330, 331, 338, 341, 342, 343, 344, 345, 346, 347, 351, 355, 359, 360, 361, 362, 363, 364, 365], "varieti": [1, 361], "channel": [1, 4, 6, 8, 11, 12, 13, 17, 19, 23, 28, 29, 31, 32, 38, 39, 44, 46, 48, 49, 57, 60, 62, 64, 65, 69, 71, 72, 76, 79, 81, 83, 84, 85, 86, 87, 88, 89, 92, 93, 94, 95, 96, 98, 99, 101, 102, 106, 107, 112, 114, 115, 119, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 143, 148, 149, 150, 151, 152, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 179, 180, 181, 182, 193, 195, 202, 203, 204, 205, 207, 208, 210, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 231, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 262, 263, 264, 265, 266, 268, 272, 277, 278, 279, 280, 281, 283, 284, 289, 292, 294, 295, 296, 299, 301, 304, 305, 306, 307, 308, 309, 313, 321, 322, 329, 339, 348, 353, 355, 356, 361, 364], "state": [1, 6, 18, 19, 48, 49, 60, 71, 72, 79, 96, 98, 99, 114, 115, 122, 170, 171, 173, 174, 195, 202, 203, 204, 205, 226, 243, 258, 259, 260, 265, 275, 276, 280, 281, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354, 361], "acquisit": [1, 243, 254], "posit": [1, 6, 12, 14, 15, 17, 18, 19, 29, 34, 35, 36, 37, 39, 46, 57, 76, 88, 94, 96, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 152, 159, 181, 182, 184, 192, 193, 194, 195, 200, 202, 203, 204, 205, 207, 209, 210, 215, 216, 217, 218, 219, 220, 226, 227, 228, 230, 236, 238, 243, 244, 245, 246, 247, 248, 249, 250, 254, 262, 264, 265, 266, 269, 270, 275, 277, 278, 279, 284, 296, 299, 318, 321, 345, 346, 351, 355, 361, 364], "etc": [1, 6, 16, 87, 96, 193, 195, 202, 203, 204, 205, 243, 264, 267, 282, 283, 309], "resourc": [1, 24, 29, 32, 33, 34, 35, 36, 37, 39, 46, 57, 76, 85, 86, 87, 88, 89, 90, 91, 94, 101, 102, 103, 104, 119, 129, 132, 134, 135, 138, 139, 179, 180, 181, 182, 184, 186, 189, 207, 208, 210, 217, 220, 221, 222, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 243, 244, 245, 246, 247, 251, 254, 260, 262, 264, 265, 266, 267, 270, 271, 273, 275, 276, 278, 279, 281, 283, 285, 287, 288, 289, 291, 293, 295, 296, 299, 301, 302, 311, 312, 323, 325, 326, 332, 333, 334, 335, 349, 352, 353, 354, 355, 361, 364], "map": [1, 24, 29, 34, 36, 37, 47, 48, 60, 70, 71, 79, 85, 86, 95, 97, 98, 101, 103, 104, 113, 114, 122, 129, 134, 135, 141, 150, 170, 171, 172, 173, 175, 176, 179, 181, 182, 184, 185, 186, 188, 189, 208, 217, 221, 222, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 243, 244, 245, 258, 259, 263, 264, 266, 270, 271, 285, 287, 289, 291, 294, 296, 311, 312, 318, 321, 322, 323, 325, 326, 328, 329, 330, 331, 336, 353, 354, 355, 361, 364, 365], "variou": [1, 10, 12, 55, 74, 117, 142, 146, 243, 254, 260, 268, 270, 275, 276, 277, 283, 295, 312, 323, 329, 334, 335, 336], "physic": [1, 2, 4, 6, 7, 8, 10, 11, 12, 29, 33, 38, 39, 42, 44, 46, 49, 51, 53, 55, 62, 64, 65, 67, 69, 72, 74, 81, 83, 84, 89, 91, 92, 93, 94, 95, 96, 99, 106, 107, 110, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 145, 146, 148, 149, 162, 163, 164, 165, 167, 168, 169, 171, 174, 179, 180, 181, 182, 215, 216, 217, 218, 219, 220, 226, 227, 228, 231, 235, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 259, 260, 269, 270, 271, 272, 273, 274, 278, 280, 283, 289, 291, 294, 296, 301, 304, 305, 306, 307, 308, 309, 311, 318, 325, 326, 338, 342, 351, 353, 355, 361, 364], "payload": [1, 2, 3, 6, 10, 11, 12, 25, 38, 42, 44, 51, 53, 55, 57, 62, 64, 65, 67, 69, 74, 76, 81, 83, 84, 86, 95, 96, 102, 106, 107, 110, 112, 117, 119, 124, 126, 127, 142, 143, 144, 145, 146, 147, 148, 163, 164, 165, 167, 168, 175, 176, 184, 185, 188, 189, 207, 210, 226, 227, 230, 232, 234, 235, 237, 240, 241, 242, 262, 266, 272, 289, 291, 318, 322, 323, 326, 328, 329, 338, 339, 355, 361], "frequenc": [1, 14, 15, 16, 18, 19, 21, 22, 24, 29, 32, 33, 38, 39, 46, 57, 76, 86, 94, 101, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 184, 196, 202, 203, 204, 205, 207, 208, 210, 215, 216, 217, 218, 219, 220, 227, 228, 230, 233, 238, 243, 246, 247, 249, 252, 253, 255, 256, 260, 262, 265, 266, 269, 270, 271, 272, 273, 275, 276, 277, 279, 281, 283, 286, 289, 291, 294, 295, 299, 302, 311, 312, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 336, 337, 345, 346, 348, 349, 350, 351, 353, 354, 355, 361, 364], "ofdm": [1, 15, 18, 22, 24, 31, 34, 35, 36, 37, 86, 101, 102, 130, 131, 132, 136, 137, 138, 139, 186, 189, 193, 195, 202, 203, 204, 205, 207, 208, 215, 216, 218, 219, 220, 226, 227, 228, 230, 231, 234, 235, 236, 237, 243, 246, 247, 248, 249, 251, 254, 260, 267, 268, 269, 270, 271, 273, 275, 278, 279, 281, 285, 287, 288, 290, 292, 294, 295, 296, 301, 302, 311, 312, 323, 325, 326, 328, 332, 333, 335, 337, 350, 353, 354, 355, 361, 364], "uplink": [1, 6, 10, 11, 23, 26, 44, 55, 65, 69, 74, 84, 95, 96, 107, 112, 117, 127, 132, 142, 143, 145, 146, 162, 168, 180, 181, 182, 183, 206, 226, 239, 244, 246, 249, 254, 265, 277, 321, 351, 355, 361, 364], "downlink": [1, 6, 10, 11, 12, 15, 23, 27, 29, 40, 44, 55, 58, 65, 69, 74, 77, 84, 85, 86, 87, 88, 89, 95, 96, 102, 107, 112, 117, 120, 127, 142, 143, 146, 162, 168, 180, 183, 191, 206, 207, 211, 226, 231, 234, 236, 239, 248, 249, 251, 260, 261, 263, 264, 265, 270, 271, 272, 274, 277, 278, 286, 290, 295, 301, 304, 305, 306, 307, 308, 309, 321, 338, 351, 352, 355, 361, 364], "control": [1, 2, 10, 11, 12, 39, 40, 42, 44, 46, 51, 53, 55, 57, 58, 67, 69, 74, 76, 77, 102, 103, 104, 110, 112, 117, 119, 120, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 152, 159, 183, 184, 186, 191, 207, 210, 211, 214, 215, 216, 217, 218, 219, 220, 226, 229, 233, 236, 243, 244, 245, 246, 247, 249, 260, 262, 266, 270, 275, 278, 280, 281, 283, 285, 296, 304, 305, 306, 307, 308, 309, 328, 329, 338, 351, 352, 353, 355, 361, 364, 365], "share": [1, 2, 6, 42, 51, 53, 67, 85, 86, 87, 88, 89, 95, 96, 110, 180, 181, 182, 183, 226, 234, 238, 243, 249, 260, 262, 263, 264, 266, 271, 279, 296, 301, 339, 352, 355, 359, 361, 362, 363, 364], "broadcast": [1, 10, 39, 46, 55, 58, 62, 74, 77, 81, 117, 120, 124, 142, 146, 164, 183, 211, 241, 243, 249, 262, 266, 269, 272, 296, 338, 351, 355, 361, 364], "mib": [1, 25, 40, 45, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242, 262, 266, 285, 287, 289, 291, 294, 338, 351, 355, 361], "dci": [1, 40, 62, 81, 102, 124, 164, 185, 207, 227, 236, 241, 278, 283, 328, 338, 352, 361], "forward": [1, 6, 7, 12, 20, 22, 93, 96, 149, 153, 154, 155, 156, 158, 159, 214, 338, 339, 361, 364], "error": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 20, 21, 22, 24, 25, 26, 27, 28, 34, 35, 36, 37, 39, 42, 44, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 110, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 143, 146, 148, 149, 152, 153, 154, 155, 156, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 211, 212, 214, 228, 229, 230, 231, 232, 233, 235, 237, 238, 240, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 279, 280, 281, 283, 294, 311, 312, 321, 322, 323, 325, 326, 329, 338, 339, 340, 351, 353, 354, 355, 359, 360, 361, 362, 364], "correct": [1, 5, 6, 7, 10, 11, 12, 20, 22, 44, 55, 69, 74, 93, 96, 101, 112, 117, 142, 143, 146, 149, 153, 154, 155, 156, 158, 159, 208, 214, 294, 312, 322, 323, 338, 339, 361, 364, 365], "polar": [1, 6, 11, 13, 14, 18, 23, 26, 27, 28, 29, 44, 56, 64, 69, 75, 83, 96, 106, 112, 118, 126, 141, 143, 145, 148, 149, 150, 156, 157, 163, 167, 176, 179, 183, 184, 185, 188, 189, 214, 240, 302, 311, 312, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 355, 361, 364], "codec": [1, 8, 9, 12, 23, 26, 28, 54, 58, 59, 73, 77, 78, 88, 93, 102, 116, 120, 121, 149, 153, 154, 158, 184, 185, 186, 188, 189, 207, 211, 212, 214, 339], "ldpc": [1, 7, 8, 11, 23, 24, 44, 69, 87, 88, 92, 93, 94, 100, 112, 143, 148, 181, 182, 186, 214, 264, 301, 321, 340, 355, 361, 364], "reed": [1, 5, 13, 321, 338, 339, 355, 361, 364], "muller": [1, 5, 13, 321, 338, 339, 355, 361, 364], "rate": [1, 6, 7, 8, 9, 10, 11, 12, 24, 26, 27, 28, 44, 55, 57, 58, 59, 69, 74, 76, 77, 78, 87, 88, 90, 91, 92, 93, 94, 95, 96, 101, 112, 117, 119, 120, 121, 141, 142, 143, 145, 146, 148, 149, 150, 152, 153, 154, 158, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 196, 198, 206, 207, 208, 210, 211, 212, 260, 264, 267, 271, 280, 281, 282, 283, 285, 287, 288, 289, 291, 294, 296, 311, 321, 322, 323, 325, 326, 329, 338, 340, 353, 354, 355, 361, 364, 365], "match": [1, 6, 7, 8, 10, 11, 19, 24, 39, 44, 46, 55, 57, 69, 74, 76, 85, 87, 88, 90, 91, 92, 93, 95, 96, 101, 112, 117, 119, 141, 142, 143, 145, 146, 148, 149, 150, 152, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 199, 206, 207, 208, 210, 238, 263, 264, 271, 280, 281, 296, 301, 318, 322, 338, 339, 361, 364], "interleav": [1, 8, 10, 92, 95, 100, 102, 141, 142, 150, 155, 157, 160, 181, 182, 183, 184, 185, 186, 188, 189, 207, 209, 213, 214, 227, 230, 270, 296, 323, 328, 339, 361, 364], "present": [1, 236, 351], "deinterleav": [1, 10, 23, 43, 68, 111, 142, 181, 184, 185, 188, 189, 339], "avail": [1, 10, 17, 55, 74, 87, 88, 94, 117, 131, 132, 137, 138, 142, 146, 181, 182, 202, 203, 205, 216, 219, 227, 236, 244, 245, 246, 247, 264, 267, 270, 278, 279, 281, 283, 285, 295, 301, 304, 305, 306, 307, 308, 309, 330, 331, 334, 336, 361, 365], "chain": [1, 2, 8, 10, 23, 25, 27, 40, 42, 51, 53, 55, 62, 65, 67, 74, 81, 84, 92, 107, 110, 117, 124, 127, 141, 142, 146, 148, 162, 164, 168, 179, 183, 184, 185, 186, 189, 196, 214, 239, 241, 260, 264, 291, 294, 301, 325, 326, 328, 351, 352, 361, 364], "orthogon": [1, 134, 139, 203, 204, 217, 218, 219, 220, 228, 254, 299, 336, 361], "divis": [1, 228, 336, 361], "multiplex": [1, 139, 220, 228, 234, 281, 336, 361], "demodul": [1, 7, 31, 34, 35, 36, 37, 48, 60, 71, 79, 87, 88, 92, 94, 98, 103, 104, 114, 122, 170, 173, 175, 181, 189, 229, 230, 232, 233, 234, 235, 237, 243, 258, 268, 271, 289, 292, 294, 295, 296, 301, 355, 361], "process": [1, 5, 6, 9, 10, 12, 21, 22, 40, 43, 49, 57, 62, 64, 65, 68, 72, 76, 81, 83, 84, 85, 86, 87, 88, 89, 93, 94, 95, 96, 99, 106, 107, 111, 115, 119, 124, 126, 127, 141, 142, 149, 152, 159, 162, 163, 164, 167, 168, 169, 174, 175, 176, 180, 181, 182, 183, 184, 185, 186, 188, 189, 210, 239, 240, 241, 257, 264, 268, 269, 270, 271, 275, 276, 277, 279, 280, 285, 294, 295, 312, 323, 325, 326, 332, 334, 335, 337, 339, 349, 355, 359, 360, 361, 362, 363], "pass": [1, 3, 4, 6, 7, 8, 10, 11, 14, 15, 17, 18, 19, 21, 22, 26, 27, 28, 29, 40, 44, 48, 49, 55, 58, 59, 60, 64, 65, 69, 71, 72, 74, 77, 78, 79, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 107, 112, 114, 115, 117, 120, 121, 122, 126, 127, 134, 142, 143, 146, 149, 153, 154, 158, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 198, 206, 209, 211, 212, 217, 228, 229, 231, 236, 238, 240, 242, 244, 245, 248, 250, 251, 252, 253, 256, 258, 259, 260, 264, 267, 269, 270, 280, 294, 302, 313, 321, 325, 326, 329, 332, 333, 335, 338, 339, 342, 345, 346, 349, 353, 355, 361, 365], "though": [1, 22, 325, 326], "domain": [1, 15, 16, 22, 32, 33, 39, 46, 184, 202, 203, 204, 205, 227, 230, 231, 238, 262, 265, 266, 268, 269, 270, 273, 275, 276, 286, 288, 289, 291, 294, 295, 299, 312, 323, 328, 350, 351, 353, 355, 361], "symbol": [1, 4, 7, 24, 31, 32, 33, 34, 35, 36, 37, 38, 47, 48, 60, 64, 70, 71, 79, 83, 85, 86, 87, 88, 90, 91, 92, 94, 95, 97, 98, 101, 103, 104, 106, 113, 114, 122, 126, 130, 131, 132, 134, 136, 137, 138, 139, 141, 150, 163, 167, 170, 171, 172, 173, 175, 176, 179, 181, 182, 184, 185, 186, 188, 189, 208, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 234, 235, 236, 237, 238, 240, 246, 247, 248, 249, 251, 252, 253, 254, 255, 256, 258, 259, 264, 265, 267, 268, 273, 275, 277, 278, 279, 280, 285, 287, 289, 292, 294, 295, 296, 298, 311, 318, 321, 322, 323, 326, 327, 328, 329, 330, 331, 332, 334, 336, 337, 342, 349, 352, 353, 354, 355, 361, 364], "demap": [1, 6, 48, 60, 71, 79, 86, 95, 96, 98, 114, 122, 170, 173, 181, 184, 185, 188, 258, 294, 318, 321, 322, 326, 329, 332, 338, 339, 361, 364], "bit": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 20, 22, 23, 25, 26, 28, 38, 39, 40, 42, 46, 48, 49, 51, 53, 55, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 77, 78, 79, 81, 83, 84, 85, 86, 88, 91, 92, 93, 95, 96, 98, 99, 100, 106, 107, 108, 110, 114, 115, 117, 120, 121, 122, 124, 126, 127, 141, 142, 145, 146, 148, 149, 150, 153, 154, 155, 156, 157, 158, 160, 162, 163, 164, 165, 167, 168, 169, 170, 171, 173, 174, 175, 176, 181, 182, 183, 184, 185, 186, 188, 189, 209, 211, 212, 213, 214, 221, 227, 230, 235, 236, 237, 238, 239, 240, 241, 242, 249, 257, 258, 259, 262, 266, 270, 271, 272, 294, 311, 314, 318, 321, 322, 323, 325, 326, 328, 329, 336, 338, 339, 340, 351, 352, 353, 354, 359, 360, 361, 362], "recov": [1, 10, 11, 32, 34, 35, 36, 37, 44, 49, 55, 65, 69, 72, 74, 84, 99, 102, 107, 112, 115, 117, 127, 142, 143, 146, 162, 168, 169, 174, 184, 207, 239, 257, 269, 270, 323], "scrambl": [1, 62, 64, 81, 83, 85, 86, 106, 124, 126, 141, 150, 163, 164, 165, 167, 175, 176, 179, 183, 184, 185, 186, 188, 189, 240, 241, 242, 248, 249, 323, 361], "complaint": [1, 6, 10, 11, 12, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149, 267, 361, 364], "scrambler": [1, 62, 63, 64, 81, 82, 83, 105, 106, 124, 125, 126, 141, 150, 162, 163, 164, 166, 167, 179, 184, 185, 186, 188, 189, 239, 240, 241, 294, 296, 326, 361, 364], "descrambl": [1, 48, 60, 63, 65, 71, 79, 82, 84, 86, 98, 105, 107, 114, 122, 125, 127, 141, 150, 162, 166, 168, 170, 173, 175, 179, 184, 185, 186, 188, 189, 239, 258, 294, 326, 361], "undo": [1, 11, 26, 27, 28, 35, 44, 58, 59, 64, 65, 69, 77, 78, 83, 84, 106, 107, 112, 120, 121, 126, 127, 143, 153, 154, 158, 162, 163, 167, 168, 211, 212, 239, 240], "encod": [1, 2, 3, 5, 7, 8, 9, 11, 25, 27, 28, 39, 44, 46, 54, 57, 59, 69, 73, 76, 78, 85, 87, 88, 93, 102, 112, 116, 119, 121, 143, 145, 148, 149, 152, 159, 181, 182, 184, 185, 186, 188, 189, 207, 209, 210, 212, 213, 262, 264, 266, 289, 314, 318, 322, 329, 338, 339, 361], "polynomi": [1, 2, 3, 4, 42, 51, 53, 67, 110, 269, 275, 276], "algorithm": [1, 5, 29, 144, 145, 147, 175, 176, 181, 182, 196, 197, 198, 204, 205, 206, 227, 268, 275, 276, 279, 299, 312, 318, 332, 334, 349, 361], "delai": [1, 16, 18, 19, 27, 192, 193, 194, 198, 202, 203, 204, 206, 231, 243, 283, 302, 312, 323, 330, 331, 332, 333, 334, 341, 343, 344, 345, 346, 347, 350, 355, 361], "estim": [1, 5, 6, 10, 11, 12, 29, 32, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 86, 88, 96, 98, 99, 112, 114, 115, 117, 122, 142, 143, 146, 149, 169, 170, 173, 174, 175, 181, 189, 192, 200, 202, 243, 248, 249, 251, 257, 258, 273, 274, 277, 280, 281, 284, 285, 289, 292, 294, 295, 299, 301, 318, 321, 349, 350, 352, 355, 361, 364], "primari": [1, 235, 237, 243, 273, 275, 276, 279, 285, 289, 291, 355, 361], "synchron": [1, 38, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 203, 204, 226, 240, 242, 243, 249, 262, 266, 268, 269, 272, 274, 277, 290, 293, 295, 296, 321, 327, 332, 355, 361, 364], "pss": [1, 235, 237, 243, 250, 252, 255, 256, 268, 277, 290, 292, 293, 295, 302, 327, 334, 335, 352, 355, 361, 364], "secondari": [1, 235, 237, 243, 249, 289, 291, 327, 355, 361], "sss": [1, 38, 235, 237, 243, 248, 249, 250, 251, 254, 255, 273, 277, 285, 287, 288, 289, 291, 294, 327, 352, 355, 361, 364], "refer": [1, 4, 6, 8, 10, 11, 12, 15, 18, 19, 23, 29, 38, 39, 44, 46, 48, 55, 60, 62, 65, 69, 71, 74, 79, 81, 84, 87, 88, 93, 94, 96, 98, 102, 103, 104, 107, 112, 114, 117, 122, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 164, 165, 168, 170, 173, 175, 181, 182, 184, 185, 186, 188, 189, 196, 197, 198, 199, 206, 207, 209, 215, 216, 217, 218, 219, 220, 226, 227, 229, 230, 232, 233, 234, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 250, 252, 253, 255, 256, 258, 260, 264, 268, 269, 270, 271, 275, 276, 278, 280, 281, 289, 291, 296, 310, 313, 321, 325, 326, 332, 333, 335, 337, 342, 349, 355, 361, 364], "dmr": [1, 39, 46, 64, 65, 83, 84, 85, 87, 88, 90, 94, 102, 106, 107, 126, 127, 163, 165, 167, 168, 181, 182, 183, 184, 185, 186, 189, 207, 226, 230, 232, 233, 234, 235, 237, 240, 242, 243, 260, 262, 263, 264, 266, 269, 271, 272, 285, 287, 288, 289, 291, 294, 299, 301, 323, 327, 328, 352, 355, 361, 364], "pr": [1, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 206, 226, 243, 248, 258, 259, 330, 331, 333, 334, 351, 361, 364], "csi": [1, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 193, 195, 202, 205, 226, 231, 243, 254, 258, 259, 260, 276, 277, 280, 281, 296, 299, 302, 321, 335, 355, 361, 364], "csir": [1, 248, 337], "sound": [1, 243, 260, 296, 332, 333, 335, 361, 364], "sr": [1, 132, 243, 244, 245, 246, 260, 277, 296, 299, 321, 353, 355, 361, 364], "pseudo": [1, 243, 361], "pn": [1, 243, 248, 249, 251, 341, 343, 344, 347, 361], "pnsequenc": [1, 250], "pucch": [1, 2, 10, 11, 26, 37, 42, 44, 51, 53, 55, 67, 69, 74, 110, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 146, 149, 163, 165, 167, 168, 183, 226, 236, 243, 296, 355, 361, 364], "format": [1, 8, 11, 37, 44, 48, 60, 62, 69, 71, 79, 81, 93, 98, 112, 114, 122, 124, 130, 131, 132, 134, 136, 137, 138, 139, 143, 149, 164, 170, 173, 175, 176, 179, 183, 190, 226, 236, 241, 243, 258, 278, 289, 330, 336, 355, 361, 365], "pucchformat0sequ": [1, 129, 132, 179, 215, 216, 246], "pucchformat1sequ": [1, 135, 138, 179, 217, 218, 219, 220, 247], "low": [1, 8, 10, 11, 13, 18, 19, 44, 55, 58, 69, 74, 77, 93, 102, 103, 104, 112, 117, 120, 130, 131, 132, 138, 142, 143, 146, 149, 183, 186, 196, 198, 204, 207, 211, 215, 216, 228, 229, 230, 231, 232, 233, 235, 237, 238, 243, 246, 247, 278, 279, 280, 294, 296, 301, 304, 307, 338, 341, 343, 344, 347, 349, 355, 361, 364], "papr": [1, 37, 103, 104, 130, 131, 132, 138, 215, 216, 228, 229, 230, 231, 232, 233, 235, 237, 238, 243, 246, 247, 296, 355, 361], "lowpaprsequencetype1": [1, 244, 245], "lowpaprsequencetype2": [1, 245], "sidelink": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 226, 240, 242, 249, 361, 364], "s_pss": [1, 253], "s_sss": [1, 255, 256], "block": [1, 5, 6, 8, 9, 10, 15, 23, 24, 27, 29, 35, 37, 38, 40, 43, 45, 55, 64, 65, 68, 74, 83, 84, 85, 86, 87, 88, 89, 90, 91, 95, 96, 101, 102, 103, 104, 106, 107, 111, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 145, 146, 150, 155, 156, 157, 160, 163, 165, 167, 168, 175, 176, 179, 180, 181, 182, 183, 184, 185, 186, 188, 189, 199, 207, 208, 209, 213, 214, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 236, 240, 242, 244, 245, 246, 247, 249, 252, 253, 255, 256, 262, 264, 265, 266, 267, 272, 278, 279, 280, 283, 285, 287, 288, 289, 291, 294, 310, 311, 321, 322, 323, 325, 326, 327, 329, 330, 331, 334, 337, 338, 340, 351, 353, 354, 355, 356, 361, 363], "ssb": [1, 38, 39, 46, 65, 84, 85, 86, 107, 127, 162, 168, 184, 185, 188, 226, 239, 243, 249, 252, 253, 255, 256, 260, 267, 269, 273, 274, 277, 286, 288, 290, 293, 295, 321, 355, 361, 364], "ssb_grid": [1, 226, 235, 237, 269, 285, 287, 288, 289, 291, 294, 327, 351, 352], "resourcemapperssb": [1, 226, 238, 285, 287, 288, 289, 291, 294, 327, 351, 352], "resourcemapperdmrspdsch": [1, 103, 104, 186, 226, 229, 233], "ptr": [1, 35, 37, 87, 226, 299, 361], "resourcemapperptrspdsch": [1, 226, 233], "pdcch": [1, 2, 10, 11, 27, 39, 42, 44, 46, 51, 53, 55, 62, 64, 65, 67, 69, 74, 81, 83, 84, 102, 106, 107, 110, 112, 117, 124, 126, 127, 142, 143, 146, 149, 162, 163, 164, 165, 167, 168, 183, 184, 188, 189, 207, 226, 227, 232, 236, 239, 240, 241, 242, 243, 249, 262, 266, 277, 283, 296, 310, 321, 323, 338, 351, 352, 355, 361, 364], "resourcemappingpdcch": [1, 226, 230, 270, 323, 328], "coreset": [1, 39, 46, 184, 226, 227, 230, 236, 262, 266, 270, 278, 304, 305, 306, 307, 310, 321, 351, 355, 361], "search": [1, 5, 29, 39, 46, 184, 188, 226, 262, 266, 278, 280, 304, 305, 306, 307, 308, 309, 351, 355, 361], "space": [1, 14, 15, 29, 39, 46, 184, 193, 195, 202, 203, 204, 205, 226, 230, 231, 238, 262, 266, 267, 278, 280, 294, 299, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 351, 352, 354, 355, 361], "searchspaceset": [1, 226, 236, 328], "resourcemappercsir": [1, 226, 228, 231, 337], "resourcemapperpr": [1, 226, 231, 330, 331, 334], "sssb_grid": [1, 226, 235], "pscch": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 226, 240, 242, 243, 249, 361, 364], "resourcemappingpscch": [1, 226, 232], "pdsch": [1, 2, 6, 9, 29, 42, 51, 53, 64, 65, 67, 83, 84, 91, 94, 95, 96, 103, 104, 106, 107, 108, 110, 126, 127, 163, 165, 167, 168, 183, 189, 226, 229, 233, 240, 242, 243, 249, 260, 277, 280, 281, 295, 296, 299, 312, 313, 321, 325, 326, 337, 352, 355, 361, 364], "transmitt": [1, 2, 6, 7, 9, 10, 15, 16, 18, 22, 31, 33, 42, 43, 51, 53, 67, 68, 87, 89, 110, 111, 141, 142, 150, 175, 179, 180, 183, 196, 197, 198, 199, 205, 268, 271, 281, 286, 290, 292, 293, 295, 299, 301, 302, 313, 321, 325, 326, 332, 333, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 355, 361], "compon": [1, 54, 73, 116, 141, 179, 183, 204, 268, 283, 312, 351], "pbch": [1, 2, 10, 11, 23, 27, 38, 42, 44, 51, 53, 55, 64, 65, 67, 69, 74, 83, 84, 85, 86, 106, 107, 110, 112, 117, 126, 127, 142, 143, 146, 149, 162, 163, 165, 167, 168, 183, 185, 188, 235, 237, 238, 239, 240, 242, 243, 249, 260, 272, 277, 284, 285, 287, 288, 289, 292, 293, 295, 296, 327, 355, 361, 364], "pusch": [1, 2, 6, 9, 26, 35, 37, 42, 51, 53, 67, 87, 88, 94, 96, 110, 181, 182, 183, 236, 243, 264, 296, 299, 361, 364], "prach": [1, 65, 84, 107, 127, 162, 168, 183, 236, 239, 243, 296, 321, 361, 364], "psbch": [1, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 183, 235, 240, 242, 243, 249, 361, 364], "master": [1, 40, 45, 338, 351, 361], "extract": [1, 7, 8, 9, 40, 45, 88, 93, 181, 182, 184, 203, 277, 289, 292, 293, 295, 302, 311, 312, 325, 326, 332, 333, 334, 335, 351, 354, 355, 361], "dcigener": [1, 38, 40], "dciextract": [1, 38, 40], "ham": [1, 13, 321, 355, 361, 364], "coder": [1, 6, 7, 8, 9, 10, 11, 12, 13, 20, 22, 44, 48, 55, 56, 60, 64, 69, 71, 74, 75, 79, 83, 88, 93, 95, 96, 98, 106, 112, 114, 117, 118, 122, 126, 141, 142, 143, 146, 148, 150, 156, 157, 163, 167, 170, 173, 175, 176, 179, 183, 184, 185, 186, 188, 189, 214, 240, 258, 294, 301, 311, 325, 326, 340, 354, 355, 361], "sphere": [1, 322, 332], "syndrom": [1, 322], "densiti": [1, 8, 13, 19, 21, 93, 102, 103, 104, 183, 186, 204, 207, 228, 229, 231, 233, 261, 275, 276, 301, 318, 337, 341, 343, 344, 355, 361], "pariti": [1, 2, 3, 4, 5, 8, 13, 27, 42, 51, 53, 67, 93, 102, 108, 110, 183, 186, 207, 301, 322, 355, 361], "subcompon": [1, 186], "select": [1, 6, 7, 8, 24, 26, 29, 31, 39, 46, 59, 78, 87, 88, 92, 93, 94, 96, 100, 101, 103, 104, 121, 130, 131, 132, 134, 136, 137, 138, 139, 141, 150, 155, 157, 160, 181, 182, 184, 185, 186, 188, 189, 196, 198, 206, 208, 209, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 238, 246, 247, 260, 261, 262, 263, 264, 265, 266, 267, 271, 279, 280, 281, 283, 291, 294, 299, 302, 310, 312, 321, 323, 325, 326, 329, 332, 333, 335, 337, 339, 341, 342, 343, 344, 345, 347, 351, 352, 355, 361], "ratematchparamet": [1, 100, 102, 186, 209], "sub": [1, 8, 9, 15, 16, 18, 23, 29, 48, 60, 71, 79, 85, 87, 93, 98, 114, 122, 141, 149, 150, 155, 157, 160, 170, 173, 184, 185, 186, 188, 189, 199, 202, 205, 213, 214, 230, 236, 253, 258, 278, 301, 304, 305, 306, 307, 308, 309, 323, 326, 328, 332, 337, 361, 364], "de": [1, 6, 11, 23, 24, 25, 27, 28, 44, 56, 65, 69, 75, 84, 96, 100, 107, 112, 118, 127, 129, 135, 141, 143, 150, 153, 154, 157, 158, 160, 162, 168, 175, 179, 181, 184, 185, 186, 188, 189, 221, 222, 226, 234, 239, 329, 338, 339], "ofdmdemodul": [1, 31, 32, 285, 287, 288, 289, 291, 294, 327, 336, 351, 352], "ofdmmodul": [1, 31, 33, 285, 287, 288, 289, 291, 294, 327, 336, 351, 352], "transform": [1, 31, 32, 192, 202, 312, 351, 361], "transformprecod": [1, 31, 34, 36], "transformdecoding5g": [1, 31, 35, 336], "precod": [1, 29, 31, 34, 35, 186, 189, 243, 283, 299, 301, 311, 355, 361, 364], "transformprecoding5g": [1, 31, 35, 37, 336], "hardwar": [1, 6, 96, 297, 312, 339, 361], "impair": [1, 198, 269, 270, 361], "appli": [1, 10, 11, 18, 20, 21, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 227, 238, 269, 270, 271, 312, 325, 326, 337, 361], "applychannel": [1, 22, 311, 312, 325, 326, 327, 331, 351, 352, 354], "cfo": [1, 20, 277, 294, 302, 327, 330, 331, 332, 333, 334, 335, 337, 351, 361], "rnti": [1, 63, 64, 65, 82, 83, 84, 85, 86, 105, 106, 107, 125, 126, 127, 150, 162, 163, 165, 166, 167, 168, 175, 176, 183, 184, 185, 186, 188, 189, 236, 239, 240, 242, 271, 278, 294, 304, 305, 306, 307, 308, 309, 311, 323, 325, 326, 328, 354, 361], "mask": [1, 65, 84, 107, 127, 162, 168, 183, 184, 185, 188, 239, 361], "rntimask": [1, 61, 62, 80, 81, 123, 124, 162, 164, 184, 185, 188, 239, 241], "antenna": [1, 15, 16, 18, 19, 29, 32, 193, 195, 196, 198, 254, 281, 283, 294, 301, 302, 311, 312, 314, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 350, 351, 352, 354, 355, 361, 364], "antennaarrai": [1, 14, 16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "element": [1, 15, 16, 17, 18, 19, 29, 87, 88, 90, 94, 131, 136, 137, 139, 181, 182, 189, 195, 216, 217, 218, 219, 220, 227, 228, 231, 233, 236, 264, 270, 274, 275, 278, 289, 291, 296, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "node": [1, 6, 15, 16, 18, 19, 96, 196, 197, 198, 199, 200, 206, 301, 327, 341, 343, 344, 349, 350, 352, 355, 361], "mobil": [1, 16, 19, 199, 269, 271, 275, 276, 280, 284, 285, 323, 327, 330, 331, 334, 341, 343, 344, 349, 350, 352, 355, 361, 364], "nodemobl": [1, 16, 17, 19, 327, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352], "simul": [1, 6, 10, 15, 16, 17, 18, 29, 39, 46, 55, 74, 96, 117, 142, 146, 184, 186, 189, 227, 236, 238, 243, 260, 262, 266, 267, 278, 293, 295, 310, 313, 318, 321, 350, 351, 355, 361, 364], "layout": [1, 16, 18, 302, 309, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 350, 351, 352, 354, 355, 361], "simulationlayout": [1, 16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "b": [1, 8, 15, 16, 18, 29, 32, 85, 93, 103, 104, 108, 186, 199, 206, 227, 229, 233, 234, 238, 250, 254, 261, 262, 263, 264, 265, 266, 271, 273, 278, 282, 284, 285, 286, 294, 295, 296, 301, 302, 304, 305, 306, 307, 309, 310, 311, 312, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 345, 347, 348, 349, 350, 351, 352, 353, 354, 355, 361, 364], "ue": [1, 15, 16, 17, 18, 29, 39, 46, 62, 81, 94, 124, 134, 164, 184, 188, 196, 197, 198, 199, 217, 227, 234, 236, 241, 250, 251, 252, 253, 254, 255, 256, 262, 266, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 282, 285, 286, 294, 295, 296, 304, 306, 310, 311, 312, 321, 323, 325, 326, 327, 337, 341, 342, 343, 344, 347, 348, 349, 350, 351, 352, 354, 355, 361], "drop": [1, 16, 18, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "parametergener": [1, 16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "channelgener": [1, 15, 16, 18, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "mimo": [1, 22, 29, 37, 87, 88, 89, 94, 102, 180, 181, 182, 199, 207, 271, 275, 281, 283, 284, 296, 313, 321, 323, 328, 337, 341, 343, 344, 349, 355, 361, 364], "book": [1, 30, 130, 131, 132, 134, 136, 137, 138, 139, 361], "schedul": [1, 39, 46, 102, 207, 236, 254, 260, 262, 266, 270, 280, 281, 282, 299, 302, 310, 321, 323, 332, 333, 335, 353, 361], "pdcchschedul": [1, 278, 283, 304, 305, 306, 307, 308, 309], "link": [1, 15, 16, 18, 19, 186, 189, 197, 227, 236, 243, 281, 282, 283, 299, 301, 302, 304, 312, 313, 318, 321, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 355, 359, 360, 361, 362, 363, 364], "adapt": [1, 227, 243, 275, 276, 283, 299, 301, 361, 364], "linkadapt": [1, 280, 283], "rank": [1, 6, 29, 39, 46, 85, 96, 102, 103, 104, 184, 207, 229, 233, 243, 262, 263, 264, 266, 271, 276, 280, 283, 294, 299, 311, 351, 354, 355, 361, 364], "rankadapt": [1, 280, 281, 283], "round": [1, 283, 330, 331, 361, 365], "robin": [1, 283, 361], "roundrobinschedul": [1, 279, 283], "carrier": [1, 14, 15, 18, 19, 21, 29, 39, 46, 87, 184, 186, 189, 202, 205, 230, 236, 238, 243, 249, 253, 255, 256, 262, 266, 267, 272, 277, 278, 291, 294, 299, 302, 304, 305, 306, 307, 308, 309, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 348, 349, 350, 351, 352, 354, 355, 361], "offset": [1, 21, 32, 33, 39, 46, 129, 130, 131, 132, 135, 136, 137, 138, 179, 184, 215, 216, 217, 218, 219, 220, 222, 230, 231, 233, 236, 238, 246, 247, 255, 256, 262, 265, 266, 267, 273, 277, 285, 287, 288, 291, 302, 309, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 353, 361], "carrierfrequencyoffsetestim": [1, 268, 277], "equal": [1, 2, 14, 19, 22, 34, 35, 36, 37, 42, 51, 53, 57, 64, 65, 67, 76, 83, 84, 86, 87, 88, 90, 94, 102, 106, 107, 110, 119, 126, 127, 130, 131, 132, 136, 137, 138, 139, 144, 147, 152, 159, 163, 165, 167, 168, 175, 181, 182, 185, 189, 193, 196, 197, 198, 206, 207, 210, 215, 216, 218, 219, 220, 227, 230, 231, 232, 235, 237, 238, 240, 242, 243, 246, 247, 255, 256, 266, 268, 277, 279, 289, 292, 294, 295, 301, 311, 312, 323, 325, 326, 327, 328, 331, 332, 333, 334, 335, 337, 345, 347, 349, 352, 354, 355, 361], "channelestimationandequalizationpbch": [1, 269, 277, 291, 294, 327, 351, 352], "channelestimationandequalizationpdcch": [1, 270, 277, 323, 328], "channelestimationandequalizationpdsch": [1, 271, 277, 294, 326], "dmrsparameterdetect": [1, 272, 277, 285, 287, 288, 289, 291, 294, 327, 351, 352], "cell": [1, 39, 46, 64, 65, 83, 84, 103, 104, 106, 107, 126, 127, 162, 163, 165, 167, 168, 184, 188, 196, 198, 199, 206, 229, 233, 235, 237, 239, 240, 242, 249, 250, 252, 253, 255, 256, 262, 266, 269, 272, 277, 278, 282, 283, 284, 285, 289, 291, 294, 302, 318, 323, 355, 361, 364], "id": [1, 39, 46, 63, 64, 65, 82, 83, 84, 85, 86, 87, 88, 90, 91, 102, 103, 104, 105, 106, 107, 125, 126, 127, 132, 138, 150, 162, 163, 165, 166, 167, 168, 181, 182, 184, 185, 186, 188, 189, 196, 207, 209, 215, 216, 217, 218, 219, 220, 229, 231, 233, 235, 236, 237, 239, 240, 242, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 269, 271, 272, 277, 278, 284, 285, 288, 289, 291, 294, 301, 304, 305, 306, 307, 308, 309, 323, 330, 331, 334, 353, 355, 361, 362], "detect": [1, 2, 3, 5, 6, 7, 10, 11, 42, 44, 51, 53, 55, 67, 69, 74, 93, 96, 110, 112, 117, 142, 143, 146, 234, 249, 255, 256, 269, 270, 271, 277, 285, 288, 289, 291, 294, 302, 318, 322, 334, 335, 355, 361], "pssdetect": [1, 272, 273, 277, 285, 287, 288, 289, 291, 294, 327, 351, 352], "sssdetect": [1, 272, 274, 277, 285, 287, 288, 289, 291, 294, 327, 351, 352], "channelestimationcsir": [1, 275, 277, 337], "channelestimationsr": [1, 276, 277, 302, 332, 333, 335], "positionestim": [1, 196, 197, 198, 199, 206, 302, 330, 331, 332, 333], "submodul": [1, 6, 96, 361], "arriv": [1, 16, 18, 19, 193, 197, 198, 199, 202, 203, 204, 206, 302, 312, 333, 334, 348, 349, 355, 361], "toa": [1, 18, 19, 196, 198, 200, 202, 206, 321, 355, 361, 364], "direct": [1, 14, 16, 17, 18, 19, 29, 88, 89, 180, 181, 182, 193, 196, 197, 206, 285, 330, 331, 334, 341, 342, 343, 344, 345, 346, 347, 349, 351, 355, 361, 364], "optim": [1, 10, 11, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 149, 170, 173, 196, 197, 198, 199, 206, 258, 271, 275, 276, 279, 280, 281, 283, 285, 301, 302, 318, 323, 330, 331, 332, 333, 334, 335, 342, 361, 365], "csiconfigur": [1, 261, 337], "generatevalidssbparamet": [1, 262, 266, 285, 287, 288, 289, 291, 294, 327, 351, 352], "lower": [1, 17, 48, 49, 60, 71, 72, 79, 88, 89, 98, 99, 114, 115, 122, 169, 170, 173, 174, 180, 183, 186, 189, 196, 197, 198, 199, 206, 227, 257, 258, 260, 278, 280, 281, 282, 294, 301, 304, 306, 307, 311, 318, 325, 326, 327, 328, 329, 330, 331, 338, 339, 340, 341, 343, 344, 347, 351, 354, 361], "layer": [1, 6, 7, 8, 10, 11, 29, 32, 37, 39, 44, 46, 49, 55, 64, 65, 69, 72, 74, 83, 84, 89, 90, 91, 92, 93, 94, 96, 99, 102, 103, 104, 106, 107, 112, 115, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 146, 148, 149, 163, 165, 167, 168, 169, 174, 179, 180, 181, 182, 183, 184, 186, 189, 207, 209, 215, 216, 217, 218, 219, 220, 227, 229, 230, 231, 233, 236, 240, 242, 244, 245, 246, 247, 249, 254, 256, 257, 260, 262, 266, 270, 271, 272, 274, 278, 281, 283, 294, 296, 301, 311, 314, 321, 325, 326, 354, 361, 364], "pdschlowerphyconfigur": [1, 263, 294, 311, 312, 325, 326, 354], "upper": [1, 8, 17, 89, 91, 92, 93, 141, 148, 149, 179, 180, 181, 182, 183, 186, 189, 260, 263, 270, 294, 301, 309, 311, 325, 326, 329, 353, 354, 361], "pdschupperphyconfigur": [1, 264, 294, 311, 312, 325, 326, 354], "srsconfigur": [1, 265], "ssbconfigur": [1, 266], "timefrequency5gparamet": [1, 267, 285, 287, 288, 289, 291, 294, 301, 327, 351, 352], "At": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 169, 174, 257, 318, 322, 329, 338, 339], "side": [2, 14, 16, 18, 19, 29, 33, 42, 51, 53, 58, 67, 77, 86, 87, 88, 110, 120, 186, 189, 193, 195, 211, 267, 282, 286, 294, 295, 299, 302, 311, 312, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 355, 361], "end": [2, 3, 4, 16, 42, 51, 53, 67, 87, 110, 188, 195, 295, 299, 314, 318, 361, 364], "comput": [2, 6, 7, 8, 10, 11, 15, 17, 18, 19, 24, 29, 32, 33, 42, 44, 48, 51, 53, 55, 60, 65, 67, 69, 71, 74, 79, 84, 87, 92, 93, 96, 98, 101, 102, 107, 110, 112, 114, 117, 122, 127, 142, 143, 146, 149, 162, 168, 170, 173, 182, 183, 186, 189, 195, 198, 202, 203, 204, 205, 206, 207, 208, 233, 239, 244, 245, 248, 249, 250, 251, 254, 255, 258, 267, 275, 278, 280, 281, 289, 291, 294, 301, 302, 304, 310, 311, 312, 318, 321, 325, 326, 329, 330, 331, 332, 333, 335, 338, 339, 349, 350, 353, 354, 355, 361], "whose": [2, 10, 11, 39, 42, 44, 46, 51, 53, 55, 58, 67, 69, 74, 77, 85, 103, 104, 110, 112, 117, 120, 142, 143, 146, 205, 206, 211, 227, 228, 229, 230, 235, 237, 266, 270], "3gpp": [2, 4, 6, 8, 10, 11, 12, 14, 15, 16, 18, 19, 24, 25, 29, 34, 36, 38, 39, 42, 44, 46, 49, 51, 53, 55, 62, 65, 67, 69, 72, 74, 81, 84, 87, 92, 93, 94, 96, 99, 101, 102, 103, 104, 107, 110, 112, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 149, 164, 165, 168, 171, 174, 175, 176, 181, 182, 184, 185, 186, 188, 196, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 267, 270, 278, 299, 301, 355, 361, 364], "ha": [2, 3, 4, 6, 7, 10, 11, 14, 19, 22, 28, 32, 42, 44, 48, 51, 53, 55, 60, 67, 69, 71, 74, 79, 85, 92, 95, 96, 98, 102, 103, 104, 110, 112, 114, 117, 122, 132, 138, 142, 143, 146, 149, 170, 173, 182, 186, 196, 198, 203, 205, 206, 207, 227, 228, 229, 234, 235, 236, 237, 238, 246, 247, 249, 250, 258, 270, 272, 273, 278, 279, 281, 284, 285, 287, 288, 289, 291, 294, 306, 309, 322, 326, 328, 330, 331, 333, 334, 335, 337, 341, 343, 344, 347, 349, 365], "standard": [2, 4, 6, 10, 11, 12, 18, 28, 42, 44, 51, 53, 55, 67, 69, 74, 87, 96, 110, 112, 117, 142, 143, 144, 146, 147, 149, 196, 206, 235, 238, 243, 250, 260, 267, 297, 299, 301, 312, 318, 330, 331, 333, 334, 336, 361, 364], "certain": [2, 5, 6, 8, 42, 51, 53, 57, 67, 76, 93, 96, 102, 110, 119, 149, 176, 207, 210, 249, 267, 275, 276, 278, 280, 302, 307, 318, 332, 333, 335, 349, 365], "length": [2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 17, 19, 24, 28, 32, 33, 34, 35, 36, 37, 42, 44, 48, 49, 51, 53, 55, 59, 60, 62, 64, 65, 67, 69, 71, 72, 74, 78, 79, 81, 83, 84, 86, 87, 88, 92, 93, 96, 98, 99, 101, 102, 106, 107, 110, 112, 114, 115, 117, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 145, 146, 148, 150, 154, 156, 157, 158, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 182, 189, 207, 208, 212, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 234, 235, 237, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 267, 268, 269, 270, 273, 280, 285, 287, 288, 289, 291, 294, 301, 302, 311, 312, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 341, 343, 344, 351, 352, 354, 355, 361], "about": [2, 3, 4, 5, 6, 9, 10, 12, 21, 24, 25, 26, 27, 28, 31, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 87, 88, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 146, 151, 152, 153, 154, 158, 159, 161, 162, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 186, 189, 195, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 235, 236, 237, 239, 240, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 269, 272, 273, 274, 275, 276, 280, 281, 283, 312, 318, 342, 361], "given": [2, 6, 9, 15, 18, 32, 42, 49, 51, 53, 67, 72, 85, 88, 91, 96, 99, 103, 104, 110, 115, 144, 147, 171, 174, 176, 181, 182, 199, 204, 227, 229, 230, 231, 233, 236, 244, 245, 249, 256, 259, 263, 266, 270, 271, 278, 279, 280, 281, 301, 310, 318, 321, 329, 338, 339, 342, 347, 353, 360, 361, 363], "usag": [2, 6, 7, 9, 24, 25, 26, 27, 28, 42, 51, 53, 62, 67, 81, 93, 96, 110, 124, 149, 164, 196, 197, 198, 241, 244, 245, 249, 359, 361, 362, 363], "crc24a": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "g_": [2, 42, 51, 53, 67, 110], "d": [2, 6, 10, 11, 12, 19, 42, 44, 51, 53, 55, 67, 69, 74, 96, 110, 112, 117, 142, 143, 146, 149, 182, 193, 195, 238, 262, 266, 302, 323, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 347], "23": [2, 10, 39, 42, 46, 51, 53, 55, 67, 74, 110, 117, 142, 146, 184, 189, 198, 236, 251, 262, 266, 278, 301, 302, 309, 314, 318, 327, 330, 331, 332, 333, 334, 335, 337, 340, 344, 351], "18": [2, 10, 42, 51, 53, 55, 67, 74, 87, 88, 94, 110, 117, 142, 145, 146, 181, 182, 227, 228, 231, 244, 245, 254, 264, 272, 278, 291, 294, 299, 301, 309, 311, 314, 318, 323, 326, 328, 330, 331, 332, 333, 334, 335, 337, 340, 342, 348, 349, 351, 352, 353], "17": [2, 4, 6, 10, 12, 15, 18, 19, 29, 35, 37, 38, 39, 42, 46, 49, 51, 53, 55, 62, 65, 67, 72, 74, 81, 84, 94, 96, 99, 103, 104, 107, 110, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278, 285, 287, 289, 291, 294, 301, 309, 311, 312, 314, 318, 326, 330, 331, 332, 333, 334, 335, 337, 340, 341, 342, 343, 344, 345, 347, 348, 351, 352, 353], "14": [2, 35, 37, 42, 51, 53, 67, 85, 87, 88, 91, 94, 103, 104, 110, 130, 131, 132, 136, 137, 138, 139, 181, 182, 189, 215, 216, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 245, 246, 247, 254, 267, 270, 271, 273, 275, 276, 278, 285, 287, 288, 289, 291, 294, 301, 302, 305, 309, 311, 314, 318, 327, 328, 330, 331, 332, 333, 334, 335, 337, 340, 342, 345, 346, 347, 348, 351, 352, 353, 354, 359, 362, 363], "11": [2, 3, 4, 12, 39, 42, 46, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 136, 137, 138, 144, 145, 147, 184, 188, 215, 216, 218, 219, 227, 229, 233, 235, 238, 244, 246, 247, 250, 262, 263, 264, 266, 271, 273, 278, 285, 289, 291, 294, 301, 302, 305, 309, 311, 314, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 362, 365], "7": [2, 6, 14, 15, 17, 18, 19, 25, 29, 39, 42, 46, 48, 49, 51, 53, 60, 62, 65, 67, 71, 72, 79, 81, 84, 85, 86, 87, 90, 95, 96, 98, 99, 103, 104, 107, 110, 114, 115, 122, 124, 127, 132, 134, 138, 139, 164, 165, 168, 170, 171, 173, 174, 184, 185, 196, 215, 216, 217, 220, 227, 228, 229, 230, 231, 233, 236, 237, 238, 241, 242, 246, 247, 248, 249, 250, 251, 252, 254, 255, 258, 259, 262, 263, 264, 266, 267, 270, 271, 273, 278, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 314, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "tb": [2, 8, 9, 42, 51, 53, 67, 85, 86, 87, 88, 93, 94, 95, 102, 110, 181, 182, 207, 301, 326, 355, 361], "crc24b": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "cb": [2, 7, 8, 11, 24, 42, 44, 51, 53, 67, 69, 92, 93, 101, 102, 110, 112, 143, 148, 181, 182, 207, 208], "21": [2, 3, 4, 42, 51, 53, 67, 110, 255, 256, 278, 301, 302, 309, 311, 314, 318, 327, 330, 331, 332, 333, 334, 335, 337, 340, 341, 347, 349, 351, 365], "20": [2, 6, 10, 11, 12, 42, 44, 51, 53, 55, 67, 69, 74, 91, 96, 103, 104, 110, 112, 117, 142, 143, 146, 149, 182, 189, 229, 233, 236, 238, 265, 267, 272, 273, 285, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 314, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 338, 340, 341, 342, 343, 344, 345, 347, 352, 353], "15": [2, 15, 19, 29, 39, 42, 46, 51, 53, 67, 85, 87, 88, 103, 104, 110, 134, 136, 137, 138, 139, 189, 196, 217, 218, 219, 220, 227, 228, 229, 230, 231, 234, 236, 238, 247, 248, 249, 251, 254, 264, 267, 270, 271, 273, 278, 285, 288, 291, 294, 301, 302, 305, 307, 310, 311, 314, 318, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 340, 342, 345, 347, 348, 349, 351, 352, 353, 365], "13": [2, 42, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 134, 136, 137, 138, 139, 188, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 246, 247, 248, 249, 251, 263, 264, 271, 273, 278, 289, 291, 301, 305, 309, 311, 314, 318, 323, 325, 327, 328, 330, 331, 332, 333, 334, 335, 337, 340, 342, 345, 347, 348, 351, 352, 353, 354, 359, 362, 363, 365], "12": [2, 10, 11, 12, 19, 29, 35, 37, 39, 42, 44, 46, 51, 53, 55, 67, 69, 74, 85, 87, 88, 90, 91, 94, 103, 104, 110, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 181, 182, 184, 189, 202, 203, 204, 205, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 234, 235, 237, 238, 244, 245, 246, 247, 254, 262, 263, 264, 265, 266, 271, 273, 275, 276, 278, 279, 285, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 362, 363, 365], "8": [2, 3, 4, 10, 11, 14, 17, 22, 24, 25, 35, 37, 39, 42, 44, 46, 49, 51, 53, 55, 64, 65, 67, 69, 72, 74, 83, 84, 85, 87, 88, 89, 91, 94, 95, 99, 101, 102, 103, 104, 106, 107, 110, 112, 115, 117, 126, 127, 130, 131, 132, 142, 143, 146, 149, 163, 165, 167, 168, 171, 174, 182, 188, 189, 204, 205, 207, 208, 209, 215, 216, 227, 228, 229, 231, 233, 234, 235, 236, 237, 240, 242, 244, 246, 249, 253, 254, 256, 259, 263, 264, 265, 271, 272, 273, 278, 285, 287, 289, 291, 294, 302, 304, 306, 307, 308, 309, 310, 311, 314, 318, 319, 321, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "crc16": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "crc11": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "9": [2, 14, 19, 29, 42, 51, 53, 67, 85, 103, 104, 110, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 227, 229, 231, 233, 234, 236, 238, 244, 245, 246, 247, 263, 264, 267, 271, 273, 278, 280, 285, 291, 294, 301, 302, 304, 305, 308, 309, 311, 312, 314, 318, 320, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "crc6": [2, 3, 4, 10, 42, 51, 53, 55, 67, 74, 110, 117, 142, 146], "applic": [2, 6, 24, 25, 26, 27, 28, 42, 49, 51, 53, 67, 72, 96, 99, 110, 115, 144, 147, 171, 174, 203, 204, 259, 295, 332, 334, 335, 359, 362, 363], "interfac": [2, 3, 4, 5, 6, 7, 9, 10, 12, 21, 24, 25, 26, 27, 28, 31, 33, 38, 39, 42, 46, 48, 49, 51, 53, 55, 57, 58, 59, 60, 62, 64, 65, 67, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 92, 94, 96, 98, 99, 101, 102, 106, 107, 110, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 142, 146, 148, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 195, 196, 197, 198, 199, 203, 204, 206, 207, 208, 210, 211, 212, 235, 237, 240, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 263, 264, 265, 267, 269, 272, 273, 274, 283, 295, 296, 336, 339, 361, 364], "content": [2, 23, 40, 42, 49, 51, 53, 65, 67, 72, 84, 99, 107, 110, 115, 127, 132, 138, 162, 168, 169, 174, 215, 216, 217, 218, 219, 220, 226, 234, 239, 243, 246, 247, 257, 260, 296, 302, 318, 321, 322, 328, 330, 332, 336, 339, 341, 343, 344, 345, 347, 351, 355], "assum": [3, 14, 19, 31, 32, 196, 197, 203, 204, 270, 278, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354], "attach": [3, 4, 8, 93, 95, 108, 149, 176, 182, 189, 267, 273], "sionna": [3, 4, 6, 10, 11, 44, 48, 49, 55, 60, 69, 71, 72, 74, 79, 96, 98, 99, 112, 114, 115, 117, 122, 142, 143, 146, 149, 170, 171, 173, 174, 258, 259, 330, 331, 333, 334, 359, 361, 362, 363], "intern": [3, 4, 6, 9, 10, 55, 64, 65, 74, 83, 84, 88, 96, 106, 107, 108, 117, 126, 127, 142, 146, 163, 165, 167, 168, 182, 199, 240, 242, 267, 270, 284, 285, 301, 361], "been": [3, 4, 28, 29, 132, 138, 186, 246, 247, 278, 279, 284, 326, 337, 341, 343, 344, 364], "exactli": [3, 4, 144, 147, 250], "same": [3, 4, 6, 7, 14, 18, 19, 31, 32, 62, 64, 65, 81, 83, 84, 92, 95, 96, 106, 107, 124, 126, 127, 132, 138, 163, 164, 165, 167, 168, 182, 185, 186, 196, 197, 198, 199, 206, 235, 237, 238, 240, 241, 242, 246, 247, 255, 276, 278, 285, 287, 288, 289, 291, 294, 295, 301, 307, 318, 339, 345], "compat": [3, 4, 295, 363], "hybrid": [3, 10, 55, 74, 102, 117, 142, 146, 200, 206, 207, 299, 302, 321, 323, 361, 364], "automat": [3, 19, 102, 207, 230, 321, 323, 359, 360, 361, 362], "harq": [3, 87, 102, 132, 207, 234, 246, 264, 323, 353, 361, 364], "1d": [3, 4, 17, 235, 269, 273, 281], "32": [3, 4, 6, 10, 12, 25, 28, 29, 38, 39, 46, 55, 59, 64, 65, 74, 78, 83, 84, 96, 106, 107, 117, 121, 126, 127, 142, 144, 146, 147, 154, 158, 163, 165, 167, 168, 184, 212, 228, 231, 240, 242, 244, 262, 265, 266, 278, 301, 304, 305, 311, 312, 314, 318, 325, 326, 327, 332, 333, 334, 336, 337, 339, 340, 351, 352, 354, 359, 360, 362], "creat": [3, 4, 5, 6, 10, 11, 24, 26, 44, 55, 57, 69, 74, 76, 96, 101, 102, 112, 117, 119, 142, 143, 146, 152, 159, 193, 195, 199, 207, 208, 210, 285, 294, 302, 335, 345, 347, 355, 359, 361, 362, 363], "object": [3, 4, 6, 7, 8, 9, 10, 11, 18, 19, 29, 44, 48, 49, 55, 60, 62, 64, 65, 69, 71, 72, 74, 79, 81, 83, 84, 85, 86, 88, 91, 93, 94, 95, 96, 98, 99, 106, 107, 108, 112, 114, 115, 117, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 181, 182, 184, 188, 189, 193, 195, 197, 198, 199, 202, 204, 206, 215, 216, 217, 218, 219, 220, 231, 235, 237, 240, 241, 242, 246, 247, 250, 252, 253, 255, 256, 258, 259, 267, 275, 276, 278, 285, 287, 289, 291, 294, 301, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "56": [3, 4, 10, 11, 44, 55, 62, 69, 74, 81, 112, 117, 124, 142, 143, 146, 164, 184, 241, 289, 305, 314, 326, 327, 332, 333, 334, 338, 340, 352], "2d": [3, 4, 12, 14, 18, 19, 25, 144, 147, 193, 195, 196, 197, 198, 202, 203, 204, 205, 235, 237, 269, 279, 281, 302, 330, 331, 332, 333, 334, 335, 346, 347, 348, 351], "64": [3, 4, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 235, 237, 240, 242, 249, 265, 272, 294, 314, 321, 332, 333, 334, 336, 340, 342, 349, 359, 360, 362, 365], "80": [3, 4, 6, 96, 217, 218, 219, 220, 236, 265, 267, 308, 309, 311, 312, 314, 325, 326, 332, 333, 334, 338, 339, 340, 354, 365], "dimens": [3, 4, 6, 7, 8, 10, 11, 12, 14, 18, 19, 22, 24, 29, 32, 44, 55, 69, 74, 88, 92, 95, 96, 101, 102, 112, 117, 130, 131, 132, 134, 136, 137, 139, 142, 143, 146, 181, 182, 189, 193, 196, 197, 202, 203, 204, 205, 207, 208, 215, 216, 217, 218, 219, 220, 235, 237, 244, 245, 246, 255, 269, 270, 275, 276, 278, 281, 311, 318, 339, 342, 351, 354], "contain": [3, 5, 6, 7, 8, 9, 10, 11, 12, 24, 32, 44, 55, 57, 69, 74, 76, 85, 87, 88, 92, 93, 96, 101, 102, 112, 117, 119, 132, 138, 142, 143, 146, 149, 152, 159, 181, 182, 188, 189, 196, 197, 204, 206, 207, 208, 210, 238, 246, 247, 268, 280, 285, 287, 288, 294, 295, 301, 302, 311, 312, 314, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 342, 345, 348, 349, 352, 354, 365], "higher": [3, 4, 26, 29, 39, 46, 58, 77, 120, 132, 138, 184, 195, 196, 197, 202, 204, 211, 214, 227, 230, 231, 246, 247, 254, 262, 266, 267, 278, 280, 281, 283, 301, 304, 305, 306, 307, 318, 334, 335, 339, 341, 343, 344, 347], "119": [3, 4, 314, 318, 332], "125": [3, 4, 206, 267, 302, 309, 314, 330, 331, 332, 333, 334, 335], "modul": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 94, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 158, 159, 161, 163, 164, 165, 167, 168, 170, 171, 173, 174, 175, 176, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 263, 264, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 280, 281, 282, 283, 285, 287, 290, 292, 294, 295, 318, 321, 323, 332, 336, 342, 345, 346, 347, 348, 349, 355, 361, 363, 364, 365], "class": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 285, 287, 288, 289, 291, 294, 327, 342, 345, 346, 347, 349, 351, 352], "none": [3, 4, 6, 7, 9, 11, 12, 14, 15, 17, 18, 19, 21, 25, 26, 27, 28, 35, 37, 39, 44, 46, 58, 59, 69, 77, 78, 85, 87, 88, 91, 92, 94, 95, 96, 102, 103, 104, 108, 112, 120, 121, 130, 131, 132, 134, 136, 137, 138, 139, 143, 148, 153, 154, 158, 176, 182, 184, 196, 197, 198, 199, 202, 203, 205, 206, 207, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 235, 238, 246, 247, 253, 256, 261, 262, 263, 264, 265, 266, 267, 269, 270, 273, 275, 276, 279, 280, 281, 285, 288, 289, 291, 294, 301, 302, 311, 312, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 342, 345, 351, 352, 353, 354, 359, 360, 362, 363], "arg": [3, 4, 17, 48, 60, 64, 65, 71, 79, 83, 84, 85, 98, 106, 107, 114, 122, 126, 127, 163, 165, 167, 168, 170, 173, 240, 242, 249, 258, 289], "sourc": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 38, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 185, 188, 189, 192, 193, 194, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 361], "insert": [3, 4, 26, 85, 86, 88, 102, 184, 185, 207, 268, 271, 289, 291, 351], "constructor": [3, 4, 48, 49, 60, 62, 64, 65, 71, 72, 79, 81, 83, 84, 98, 99, 106, 107, 114, 115, 122, 124, 126, 127, 163, 164, 165, 167, 168, 170, 171, 173, 174, 240, 241, 242, 248, 250, 251, 252, 253, 255, 256, 258, 259], "init": [3, 4, 18, 19, 245, 248, 249, 250, 251], "fec": [3, 4], "defin": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 24, 25, 26, 27, 28, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 108, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 132, 138, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 185, 188, 189, 193, 195, 196, 198, 199, 202, 205, 206, 207, 208, 210, 211, 212, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 295, 301, 321, 322, 329, 332, 336, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 364], "int8": [3, 4, 6, 12, 48, 49, 60, 62, 65, 71, 72, 79, 81, 84, 96, 98, 99, 107, 114, 115, 122, 124, 127, 164, 165, 168, 170, 171, 173, 174, 241, 242, 248, 249, 250, 251, 252, 253, 255, 258, 259, 318, 322, 330, 331, 332, 333, 334, 339], "crclength": [3, 4], "bool": [3, 5, 6, 10, 11, 12, 15, 17, 18, 19, 21, 22, 44, 48, 55, 60, 69, 71, 74, 79, 86, 87, 88, 96, 98, 102, 112, 114, 117, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 170, 173, 181, 182, 184, 188, 204, 206, 207, 209, 215, 216, 217, 218, 219, 220, 235, 237, 238, 246, 247, 258, 262, 266, 269, 271, 279, 318], "should": [3, 5, 6, 7, 8, 9, 11, 12, 14, 17, 19, 26, 27, 28, 32, 39, 44, 46, 48, 49, 57, 58, 59, 60, 62, 64, 69, 71, 72, 76, 77, 78, 79, 81, 83, 87, 92, 93, 94, 95, 96, 98, 99, 102, 103, 104, 106, 112, 114, 115, 119, 120, 121, 122, 124, 126, 132, 138, 143, 148, 152, 153, 154, 158, 159, 163, 164, 167, 170, 171, 173, 174, 193, 195, 196, 197, 198, 202, 203, 204, 205, 206, 207, 209, 210, 211, 212, 227, 228, 229, 231, 235, 236, 237, 238, 240, 241, 244, 245, 246, 247, 253, 254, 255, 256, 258, 259, 262, 266, 270, 271, 275, 276, 279, 295, 298, 301, 309, 348], "rais": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 19, 21, 22, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 58, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 77, 78, 79, 81, 83, 84, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 120, 121, 122, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 152, 153, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 289, 337], "valueerror": [3, 4, 6, 7, 8, 9, 10, 11, 12, 14, 19, 21, 22, 24, 25, 26, 27, 28, 29, 34, 35, 36, 37, 39, 44, 46, 49, 55, 58, 59, 62, 64, 65, 69, 72, 74, 77, 78, 81, 83, 84, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 120, 121, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 148, 149, 153, 154, 158, 163, 164, 165, 167, 168, 171, 174, 184, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 262, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 337], "inbit": [3, 4, 8, 12, 24, 65, 84, 92, 101, 107, 127, 165, 168, 208, 242], "must": [3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 17, 18, 19, 21, 22, 24, 25, 28, 29, 34, 35, 36, 37, 39, 44, 46, 48, 49, 55, 57, 59, 60, 62, 64, 65, 69, 71, 72, 74, 76, 78, 79, 81, 83, 84, 85, 86, 92, 93, 94, 95, 96, 98, 99, 101, 102, 103, 104, 106, 107, 112, 114, 115, 117, 119, 121, 122, 124, 126, 127, 142, 143, 146, 148, 149, 152, 154, 158, 159, 163, 164, 165, 167, 168, 170, 171, 173, 174, 184, 188, 189, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 210, 212, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 259, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 309, 318, 326, 337], "support": [4, 6, 13, 14, 17, 19, 20, 22, 39, 46, 48, 49, 60, 71, 72, 79, 85, 87, 96, 98, 99, 102, 114, 115, 122, 153, 154, 155, 156, 158, 159, 170, 171, 173, 174, 186, 190, 195, 206, 207, 227, 230, 233, 234, 236, 238, 243, 254, 258, 259, 264, 265, 267, 269, 270, 271, 274, 276, 278, 280, 281, 295, 299, 302, 305, 307, 318, 338, 339, 341, 343, 344, 346, 359, 360, 361, 362, 363, 364], "5g": [4, 6, 7, 8, 9, 10, 11, 13, 15, 18, 20, 22, 26, 27, 28, 31, 34, 36, 44, 48, 49, 55, 58, 60, 69, 71, 72, 74, 77, 79, 87, 93, 96, 98, 99, 103, 104, 112, 114, 115, 117, 120, 122, 130, 131, 132, 134, 136, 137, 138, 139, 141, 142, 143, 144, 145, 146, 147, 149, 150, 153, 154, 155, 156, 157, 158, 159, 170, 171, 173, 174, 175, 179, 181, 182, 184, 185, 186, 188, 189, 195, 199, 200, 205, 211, 214, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 258, 259, 265, 268, 269, 270, 271, 275, 276, 277, 278, 279, 280, 281, 283, 295, 297, 298, 306, 321, 350, 355, 364], "3gppts38211_crc": 4, "doesn": [4, 10, 24, 55, 65, 74, 84, 87, 101, 107, 117, 127, 132, 138, 142, 146, 165, 168, 208, 242, 246, 247, 280, 330, 331], "t": [4, 6, 8, 10, 12, 15, 18, 19, 24, 25, 29, 33, 34, 36, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 85, 87, 92, 93, 94, 96, 99, 101, 102, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 181, 182, 184, 185, 186, 188, 189, 198, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 226, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 267, 270, 278, 280, 291, 294, 295, 302, 318, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 359, 362], "n": [4, 5, 6, 7, 8, 9, 10, 11, 14, 18, 24, 28, 29, 32, 33, 39, 44, 46, 54, 55, 57, 59, 64, 65, 69, 73, 74, 76, 78, 83, 84, 85, 86, 88, 92, 93, 95, 96, 101, 102, 106, 107, 112, 116, 117, 119, 121, 126, 127, 136, 137, 138, 139, 142, 143, 145, 146, 148, 149, 152, 154, 158, 159, 163, 165, 167, 168, 175, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 198, 199, 203, 205, 206, 207, 208, 210, 212, 218, 219, 220, 228, 230, 231, 235, 236, 237, 238, 240, 242, 247, 249, 252, 253, 254, 255, 256, 262, 265, 266, 267, 270, 271, 272, 273, 274, 275, 278, 285, 287, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 311, 312, 321, 322, 327, 328, 330, 331, 332, 333, 334, 335, 337, 339, 341, 342, 343, 344, 345, 349, 351, 352, 353, 359, 360, 361, 362], "reshap": [4, 29, 291, 294, 302, 314, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 348, 352], "perform": [4, 5, 6, 7, 8, 9, 11, 12, 24, 26, 28, 44, 48, 57, 60, 62, 64, 65, 69, 71, 76, 79, 81, 83, 84, 87, 88, 92, 93, 95, 96, 98, 101, 102, 106, 107, 108, 112, 114, 119, 122, 124, 126, 127, 143, 148, 149, 162, 163, 164, 165, 167, 168, 170, 173, 175, 176, 181, 182, 186, 195, 196, 198, 202, 203, 204, 206, 207, 208, 210, 214, 236, 239, 240, 241, 242, 258, 260, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 283, 285, 289, 292, 293, 295, 304, 305, 306, 307, 308, 309, 313, 321, 325, 326, 328, 337, 345, 347, 354, 355, 361], "38": [4, 6, 8, 10, 11, 12, 14, 15, 16, 18, 19, 23, 24, 25, 29, 34, 36, 38, 39, 44, 46, 49, 55, 62, 65, 69, 72, 74, 81, 84, 87, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 107, 108, 112, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 164, 165, 168, 171, 174, 175, 181, 182, 184, 185, 186, 188, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 270, 278, 280, 289, 294, 301, 314, 318, 332, 333, 334, 340, 351, 365], "211": [4, 6, 10, 12, 23, 25, 34, 36, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 102, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 189, 207, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 265, 270, 301, 314, 329], "releas": [4, 6, 10, 12, 15, 18, 19, 29, 35, 37, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 103, 104, 107, 115, 117, 124, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 164, 165, 168, 171, 174, 175, 184, 185, 186, 188, 196, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278, 361], "v17": [4, 6, 10, 12, 19, 29, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 278], "2022": [4, 6, 10, 12, 19, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259], "03": [4, 6, 10, 12, 19, 38, 39, 46, 49, 55, 62, 65, 72, 74, 81, 84, 96, 99, 107, 115, 117, 124, 127, 142, 146, 164, 165, 168, 171, 174, 241, 242, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 301, 331, 335], "mai": [5, 39, 46, 88, 184, 193, 195, 203, 204, 236, 262, 266, 268, 275, 276, 279, 280, 281, 283, 298, 301, 307, 309, 312, 334, 351, 359, 362, 363, 365], "occur": [5, 236, 268, 278, 289], "dure": [5, 57, 76, 119, 152, 159, 188, 210, 227, 269, 270, 271, 273, 279, 280, 289], "digit": [5, 29, 189, 299, 311, 318, 325, 326, 354], "messag": [5, 6, 39, 46, 96, 184, 262, 266, 318, 351], "codeword": [5, 6, 7, 8, 9, 10, 11, 12, 24, 28, 44, 55, 64, 65, 69, 74, 83, 84, 87, 88, 92, 95, 96, 101, 102, 106, 107, 112, 117, 126, 127, 142, 143, 146, 148, 162, 163, 165, 167, 168, 182, 207, 208, 239, 240, 242, 271, 294, 301, 311, 318, 322, 325, 326, 329, 339, 354], "specif": [5, 10, 11, 12, 14, 18, 44, 55, 69, 74, 102, 112, 117, 138, 142, 143, 146, 149, 186, 189, 207, 217, 218, 219, 220, 227, 236, 247, 253, 256, 268, 271, 275, 276, 278, 280, 281, 285, 301, 304, 305, 306, 307, 308, 309, 327, 328, 330, 331, 364], "structur": [5, 8, 14, 29, 93, 149, 193, 195, 260, 267, 275, 276, 296, 311, 312, 325, 326, 327, 342, 345, 346, 349, 352, 354], "batch": [5, 6, 10, 12, 22, 25, 29, 49, 55, 65, 72, 74, 84, 87, 88, 96, 99, 107, 115, 117, 127, 132, 134, 142, 146, 165, 168, 171, 174, 189, 217, 242, 246, 259, 271, 276, 281, 294, 311, 312, 314, 321, 327, 328, 329, 338, 339, 351, 353, 355, 361], "simultan": [5, 12, 204, 281], "three": [5, 12, 13, 15, 17, 18, 19, 20, 22, 37, 57, 76, 102, 119, 144, 147, 153, 154, 155, 156, 158, 159, 195, 207, 210, 213, 295, 325, 326, 337, 342], "exampl": [5, 6, 7, 8, 10, 11, 12, 14, 18, 19, 25, 29, 44, 55, 62, 64, 69, 74, 81, 83, 90, 91, 92, 93, 94, 95, 96, 106, 108, 112, 117, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 146, 147, 148, 149, 163, 164, 167, 175, 176, 181, 182, 193, 195, 196, 197, 198, 199, 202, 203, 204, 205, 206, 215, 216, 217, 218, 219, 220, 227, 235, 236, 237, 240, 241, 246, 247, 249, 267, 269, 272, 274, 278, 361], "channelcod": [5, 6, 7, 8, 9, 10, 11, 12, 27, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 146, 148, 149, 291, 294, 318, 322, 323, 329, 338, 339, 351, 352], "hammingcod": 5, "hammingencod": [5, 318, 322], "k": [5, 6, 7, 8, 9, 10, 11, 12, 18, 19, 24, 27, 32, 33, 39, 44, 46, 54, 55, 57, 62, 69, 73, 74, 76, 81, 92, 93, 96, 101, 102, 112, 116, 117, 119, 124, 142, 143, 145, 146, 148, 149, 152, 159, 164, 175, 181, 182, 184, 185, 186, 188, 189, 193, 195, 196, 197, 206, 207, 208, 210, 231, 236, 238, 241, 254, 262, 265, 266, 269, 280, 285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 311, 314, 321, 322, 323, 325, 326, 327, 328, 329, 332, 333, 335, 336, 337, 338, 339, 342, 345, 346, 350, 351, 352, 355, 361], "take": [5, 6, 7, 8, 14, 15, 18, 19, 22, 24, 29, 35, 37, 39, 46, 64, 65, 83, 84, 85, 87, 88, 93, 94, 96, 101, 102, 103, 104, 106, 107, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 163, 165, 167, 168, 181, 182, 184, 188, 189, 198, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 236, 237, 238, 240, 242, 246, 247, 249, 254, 262, 263, 264, 265, 266, 269, 270, 271, 275, 276, 278, 280, 281, 301, 318, 322, 359, 360, 362, 363], "systemat": 5, "inputbit": [5, 7, 8, 11, 44, 57, 62, 69, 76, 81, 92, 93, 102, 112, 119, 124, 143, 144, 147, 148, 149, 152, 159, 164, 188, 207, 210, 241], "ndarrai": [5, 14, 15, 17, 18, 19, 29, 57, 76, 86, 87, 88, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 152, 159, 181, 182, 188, 189, 193, 195, 207, 210, 215, 216, 217, 218, 219, 220, 227, 230, 236, 246, 247, 248, 249, 251, 268, 270, 278, 280], "satisfi": [5, 7, 92, 103, 104, 229, 280], "condit": [5, 8, 24, 87, 92, 101, 102, 176, 182, 207, 208, 227, 268, 275, 276, 278, 279, 280, 281, 283, 309, 310, 312, 321, 323, 329, 332, 334, 353, 355, 361], "integ": [5, 6, 7, 11, 12, 14, 18, 19, 22, 24, 27, 29, 32, 33, 34, 35, 36, 37, 39, 44, 46, 49, 57, 62, 64, 65, 69, 72, 76, 81, 83, 84, 87, 88, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 119, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 143, 152, 159, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 189, 193, 195, 196, 198, 202, 203, 204, 205, 207, 208, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 259, 264, 265, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 318], "vectortobinaryarrai": [5, 353], "scalar": [5, 6, 14, 39, 46, 87, 88, 94, 96, 102, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 196, 198, 207, 209, 215, 216, 217, 218, 219, 220, 238, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 264, 265, 281], "note": [5, 6, 11, 12, 14, 19, 22, 44, 69, 85, 87, 96, 112, 143, 227, 236, 238, 264, 278, 280, 285, 301, 306, 307, 308, 318, 322, 323, 328, 330, 331, 333, 334, 335, 339, 345, 361], "hardoutput": 5, "likelihood": [5, 12, 48, 49, 57, 60, 64, 71, 72, 76, 79, 83, 86, 88, 98, 99, 106, 114, 115, 119, 122, 126, 152, 159, 163, 167, 169, 170, 173, 174, 175, 181, 184, 185, 189, 197, 210, 240, 257, 258, 268, 271, 322, 329, 334, 338, 339], "valu": [5, 6, 7, 8, 10, 11, 12, 15, 17, 18, 19, 21, 22, 24, 29, 32, 33, 35, 37, 39, 44, 46, 49, 55, 62, 64, 65, 69, 72, 74, 81, 83, 84, 85, 86, 87, 88, 92, 93, 94, 95, 96, 99, 101, 102, 103, 104, 106, 107, 112, 115, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 163, 164, 165, 167, 168, 171, 174, 181, 182, 184, 188, 189, 196, 197, 198, 199, 202, 203, 204, 205, 206, 207, 208, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 236, 237, 238, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 253, 254, 256, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 301, 302, 312, 318, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 355, 361], "hammingdecod": [5, 318, 322], "bot": 5, "decodertyp": [5, 185, 323, 328, 338], "undergo": [5, 181], "determin": [5, 203, 204, 227, 228, 236, 238, 278, 281, 283, 304, 309, 332, 334, 335, 351], "whether": [5, 15, 17, 18, 19, 29, 39, 46, 48, 60, 62, 71, 79, 81, 86, 98, 103, 104, 114, 122, 124, 130, 131, 132, 134, 136, 137, 138, 139, 164, 170, 173, 184, 185, 188, 189, 204, 215, 216, 217, 218, 219, 220, 229, 233, 236, 238, 241, 246, 247, 258, 262, 266, 269, 271, 279, 351], "case": [5, 6, 7, 8, 10, 11, 14, 19, 37, 39, 44, 46, 55, 57, 64, 69, 74, 76, 83, 85, 87, 92, 93, 96, 102, 103, 104, 106, 112, 117, 119, 126, 130, 131, 132, 136, 137, 138, 139, 142, 143, 146, 149, 163, 167, 184, 198, 204, 207, 210, 215, 216, 218, 219, 220, 227, 228, 229, 235, 237, 238, 240, 244, 245, 246, 247, 254, 256, 262, 266, 270, 279, 305, 307, 309, 310, 312, 318, 321, 330, 331, 338, 346, 356, 361], "hammingspheredecod": 5, "closest": 5, "within": [5, 39, 46, 85, 102, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 184, 189, 195, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 235, 236, 238, 246, 247, 248, 249, 251, 262, 266, 269, 270, 271, 272, 278, 280, 283, 285, 342], "radiu": [5, 17, 18, 19, 206, 327, 330, 331, 342, 345, 346], "minimum": [5, 8, 17, 19, 93, 202, 204, 205, 269, 270, 271, 280, 281, 302, 310, 321, 328, 341, 342, 343, 344, 345, 346, 347, 349, 351, 361], "distanc": [5, 18, 19, 196, 197, 198, 206, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "between": [5, 7, 8, 10, 11, 12, 14, 18, 19, 22, 39, 44, 46, 55, 62, 64, 69, 74, 81, 83, 87, 88, 92, 93, 94, 102, 106, 112, 117, 124, 126, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 144, 145, 146, 147, 148, 163, 164, 167, 181, 182, 184, 189, 193, 195, 196, 198, 203, 204, 205, 207, 215, 216, 217, 218, 219, 220, 227, 235, 238, 240, 241, 246, 247, 249, 254, 262, 266, 268, 269, 270, 271, 275, 276, 280, 281, 285, 301, 306, 309, 311, 312, 321, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 361, 362], "soft": [5, 6, 12, 24, 48, 60, 64, 71, 79, 83, 96, 98, 101, 102, 106, 114, 122, 126, 163, 167, 170, 173, 207, 208, 240, 258, 318, 322], "hammingsyndromedecod": 5, "techniqu": [5, 102, 188, 193, 197, 202, 203, 204, 207, 214, 268, 269, 270, 271, 273, 275, 276, 280, 283, 301, 312, 322, 323, 325, 326, 332, 334, 335, 336, 337, 349], "calcul": [5, 10, 55, 58, 64, 65, 74, 77, 83, 84, 94, 102, 106, 107, 108, 117, 120, 126, 127, 142, 146, 163, 165, 167, 168, 203, 206, 207, 211, 230, 240, 242, 264, 269, 270, 280, 301, 332, 334, 335, 336, 348], "vector": [5, 12, 14, 18, 19, 22, 25, 28, 87, 88, 181, 182, 185, 193, 227, 238, 244, 245, 254, 255, 256, 265, 318, 364], "repres": [5, 15, 22, 88, 181, 182, 202, 204, 205, 236, 264, 270, 301, 323], "equat": [5, 15, 33, 203, 204, 236, 250, 278], "identifi": [5, 29, 62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 202, 204, 205, 236, 240, 241, 242, 270, 271, 278, 285, 312], "pattern": [5, 11, 14, 25, 26, 27, 28, 32, 44, 57, 58, 59, 65, 69, 76, 77, 78, 84, 102, 107, 112, 119, 120, 121, 127, 143, 153, 154, 158, 165, 168, 207, 210, 211, 212, 227, 236, 242, 270, 271, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354, 364], "network": [6, 35, 62, 64, 65, 81, 83, 84, 85, 86, 96, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 190, 236, 240, 241, 242, 244, 260, 261, 268, 269, 270, 271, 275, 276, 277, 278, 279, 280, 283, 286, 295, 299, 301, 309, 318, 321, 323, 332, 337, 339, 346, 351, 355, 361, 364], "commun": [6, 10, 28, 31, 55, 57, 74, 76, 96, 117, 119, 142, 146, 152, 159, 189, 196, 197, 199, 203, 204, 210, 261, 265, 268, 271, 273, 275, 276, 280, 281, 282, 283, 284, 285, 295, 299, 312, 318, 323, 325, 326, 327, 336, 337, 339, 342, 349, 352, 356, 361], "over": [6, 10, 49, 55, 72, 74, 94, 96, 99, 115, 117, 142, 146, 169, 174, 193, 195, 203, 204, 205, 228, 238, 243, 257, 275, 276, 279, 281, 283, 295, 301, 312, 318, 321, 336, 342, 345, 346, 349, 353, 355, 359, 361, 362, 363], "air": [6, 31, 94, 96, 296, 336, 339, 364], "achiev": [6, 96, 197, 268, 271, 279, 280, 281, 332, 334, 339], "capac": [6, 57, 76, 96, 119, 139, 152, 159, 210, 220, 283, 285, 339], "larg": [6, 8, 11, 16, 18, 44, 69, 87, 88, 93, 96, 102, 112, 143, 149, 181, 182, 196, 198, 206, 207, 234, 260, 268, 291, 294, 301, 312, 323, 325, 326, 337, 339, 341, 343, 344, 347, 351, 352], "extrem": [6, 96, 278, 310, 321, 339], "robust": [6, 28, 96, 197, 198, 203, 204, 214, 268, 280, 283, 285, 301, 318, 332, 334, 336, 339], "against": [6, 10, 28, 55, 74, 96, 101, 117, 142, 146, 204, 208, 214, 280, 330, 331, 334, 339], "scalabl": [6, 96, 339], "effici": [6, 8, 18, 19, 93, 96, 203, 268, 271, 275, 276, 277, 279, 280, 281, 283, 285, 294, 301, 309, 318, 323, 325, 326, 327, 336, 337, 339, 349], "consumpt": [6, 18, 19, 22, 96, 202, 204, 280, 301, 306, 339], "silicon": [6, 96, 301, 339], "footprint": [6, 96, 339], "enhanc": [6, 96, 186, 197, 202, 268, 271, 281, 285, 299, 323, 325, 326, 334, 337, 339], "divers": [6, 58, 77, 96, 120, 202, 203, 204, 205, 211, 234, 268, 281, 330, 331, 339, 361], "easi": [6, 31, 96, 339, 361], "complex": [6, 10, 21, 22, 27, 29, 32, 33, 34, 35, 36, 37, 48, 55, 58, 60, 71, 74, 77, 79, 96, 98, 114, 117, 120, 122, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 170, 173, 195, 196, 198, 202, 203, 204, 205, 206, 211, 215, 216, 217, 218, 219, 220, 246, 247, 254, 258, 269, 270, 272, 273, 274, 275, 276, 279, 281, 306, 312, 321, 322, 330, 331, 339, 342, 361], "capabl": [6, 8, 11, 44, 69, 93, 96, 101, 112, 143, 149, 208, 310, 321, 332, 334, 339, 361], "consid": [6, 16, 18, 22, 29, 34, 36, 39, 46, 94, 96, 130, 131, 132, 134, 136, 137, 138, 184, 197, 206, 215, 216, 217, 218, 219, 238, 246, 247, 262, 266, 267, 278, 280, 281, 283, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 338, 339, 342, 345, 349, 351, 352, 354], "reliabl": [6, 10, 55, 74, 96, 117, 142, 146, 197, 234, 268, 269, 270, 271, 275, 276, 280, 281, 283, 285, 294, 311, 312, 332, 342, 352, 355, 361], "high": [6, 10, 19, 55, 74, 96, 117, 142, 146, 186, 189, 199, 203, 204, 206, 244, 245, 278, 280, 284, 304, 307, 318, 322, 323, 330, 331, 332, 336, 339, 341, 344, 347, 350, 355, 361, 364], "make": [6, 8, 11, 19, 28, 44, 65, 69, 84, 93, 96, 107, 112, 127, 143, 149, 162, 168, 198, 239, 280, 283, 312, 329, 332, 345], "suitabl": [6, 96, 234, 281, 301, 304, 329, 332], "carri": [6, 18, 19, 38, 39, 46, 57, 62, 64, 65, 76, 81, 83, 84, 96, 102, 106, 107, 119, 124, 126, 127, 131, 132, 137, 162, 163, 164, 167, 168, 184, 207, 210, 216, 219, 234, 235, 236, 237, 239, 240, 241, 246, 249, 262, 266, 271, 276, 301, 304, 305, 306, 307, 308, 309, 318, 323, 330, 331, 334, 336, 338, 352, 353, 361], "result": [6, 7, 10, 19, 55, 74, 88, 92, 94, 96, 101, 117, 142, 146, 181, 182, 196, 197, 198, 199, 204, 206, 208, 264, 268, 278, 281, 289, 298, 301, 305, 306, 307, 310, 321, 330, 331, 332, 333, 334, 335, 341, 342, 343, 344, 346, 347, 348, 349, 355, 361, 362, 365], "more": [6, 11, 14, 15, 18, 19, 27, 28, 29, 44, 62, 69, 81, 87, 96, 102, 112, 124, 143, 164, 195, 196, 197, 198, 202, 204, 205, 207, 228, 231, 235, 236, 237, 241, 249, 268, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 285, 305, 306, 307, 308, 309, 329, 334, 335, 342, 359, 360, 362], "comprehens": [6, 96], "analysi": [6, 96, 305, 306, 307, 308, 309, 312, 321, 323, 355, 361], "pleas": [6, 87, 96, 102, 207, 209, 238, 244, 245, 254, 268, 269, 275, 276, 278, 280, 295, 301, 321, 323, 327, 328, 333, 334, 335, 338, 345, 352, 355, 359, 360, 361, 362, 363], "3gppts38212_ldpc": [6, 7, 8, 9, 11, 44, 69, 92, 93, 96, 112, 143, 148], "There": [6, 10, 55, 74, 96, 117, 132, 138, 142, 146, 236, 246, 247, 295], "few": [6, 7, 10, 11, 44, 55, 69, 74, 93, 96, 112, 117, 142, 143, 146, 148, 214, 272, 301, 330, 331, 349, 364], "illustr": [6, 10, 19, 49, 55, 72, 74, 96, 99, 115, 117, 142, 146, 171, 174, 195, 198, 206, 226, 234, 259, 339, 361], "how": [6, 10, 19, 55, 74, 96, 117, 142, 144, 146, 147, 227, 270, 275, 276, 279, 283, 295, 297, 304, 318, 323, 329, 342, 345, 346, 349], "slightli": [6, 39, 46, 96, 262, 266, 332, 365], "comparison": [6, 11, 44, 69, 96, 112, 143, 195, 196, 197, 198, 289, 291, 301, 304, 321, 330, 331, 355, 361], "becaus": [6, 96, 236, 295, 301, 306, 346], "allow": [6, 8, 11, 15, 16, 18, 19, 29, 39, 44, 46, 62, 69, 81, 93, 96, 112, 124, 139, 143, 149, 164, 184, 186, 196, 204, 206, 220, 226, 241, 250, 262, 266, 271, 280, 285, 294, 334, 335, 342, 349, 352], "onli": [6, 10, 14, 18, 19, 21, 22, 24, 26, 27, 35, 37, 39, 46, 49, 55, 57, 64, 65, 72, 74, 76, 83, 84, 85, 86, 87, 95, 96, 99, 101, 102, 106, 107, 115, 117, 119, 126, 127, 130, 131, 132, 136, 137, 138, 139, 142, 146, 163, 165, 167, 168, 171, 174, 184, 189, 195, 196, 197, 204, 205, 206, 207, 208, 210, 215, 216, 218, 219, 220, 227, 233, 235, 236, 237, 238, 240, 242, 244, 246, 247, 249, 254, 259, 265, 267, 268, 269, 272, 273, 274, 275, 276, 278, 281, 285, 294, 295, 298, 305, 318, 330, 332, 341, 342, 346, 349, 359, 360, 362, 363], "fix": [6, 12, 96, 198, 250, 355, 361], "lift": [6, 8, 9, 87, 88, 93, 96, 102, 207, 209, 339], "factor": [6, 9, 14, 18, 19, 87, 88, 96, 102, 103, 104, 131, 134, 136, 137, 139, 202, 205, 207, 209, 216, 217, 218, 219, 220, 228, 229, 231, 244, 245, 254, 265, 268, 279, 283, 307, 308, 330, 331, 334, 335, 336, 339, 350, 355], "transport": [6, 7, 8, 9, 11, 12, 39, 44, 46, 69, 85, 86, 87, 88, 89, 90, 91, 93, 95, 96, 102, 112, 143, 148, 149, 180, 181, 182, 183, 184, 186, 207, 209, 262, 264, 266, 294, 325, 326, 339], "wa": [6, 57, 76, 96, 119, 152, 159, 210, 273, 351], "done": [6, 96], "have": [6, 7, 8, 11, 14, 17, 18, 19, 24, 25, 29, 44, 64, 65, 69, 83, 84, 92, 93, 96, 101, 102, 106, 107, 112, 126, 127, 143, 148, 163, 165, 167, 168, 182, 185, 189, 193, 195, 196, 197, 198, 199, 204, 206, 207, 208, 235, 236, 237, 240, 242, 244, 245, 255, 256, 270, 271, 275, 276, 278, 279, 295, 301, 302, 306, 307, 311, 312, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 349, 351, 352, 354, 356, 359, 360, 362, 363, 364], "flexibl": [6, 16, 96, 306, 308], "realtim": [6, 96], "fast": [6, 19, 96, 280], "tbsize": [6, 7, 9, 11, 44, 69, 87, 93, 96, 100, 102, 112, 143, 148, 186, 207, 209, 294, 311, 339, 354], "lpdcconfig": [6, 96, 339], "ldpcparamet": [6, 9, 96, 339], "k_ldpc": [6, 9, 88, 96, 186, 339], "bg": [6, 87, 96, 339], "basegraph": [6, 7, 8, 9, 93, 96, 100, 102, 186, 207, 209, 339], "graph": [6, 7, 8, 87, 93, 96, 102, 207, 209, 280, 334, 335, 339], "bg1": [6, 9, 96, 102, 207, 209], "bg2": [6, 9, 96, 102, 207, 209], "zc": [6, 8, 87, 93, 96, 186, 339], "liftingfactor": [6, 9, 88, 96, 100, 102, 186, 207, 209, 339], "numcb": [6, 88, 96, 100, 102, 148, 149, 186, 207, 294, 301, 311, 339, 354], "numcodeblock": [6, 9, 96, 100, 102, 186, 207, 209, 339], "numbatch": [6, 10, 11, 12, 22, 25, 29, 44, 49, 55, 65, 69, 72, 74, 84, 86, 87, 88, 91, 95, 96, 99, 107, 108, 112, 115, 117, 127, 129, 132, 138, 142, 143, 144, 146, 147, 148, 149, 165, 168, 171, 174, 176, 179, 182, 189, 215, 216, 217, 218, 219, 220, 228, 232, 233, 242, 246, 247, 259, 271, 275, 276, 281, 294, 301, 311, 312, 314, 322, 325, 326, 328, 329, 336, 338, 339, 351, 353, 354], "ldpcencoder5g": [6, 96, 186, 339], "encbit": [6, 96, 184, 185, 318, 322, 338, 339], "tf": [6, 10, 11, 32, 33, 44, 49, 55, 69, 72, 74, 96, 99, 112, 115, 117, 142, 143, 146, 149, 171, 174, 182, 259, 301, 314, 318, 365], "kwarg": [6, 10, 32, 33, 48, 49, 55, 60, 71, 72, 74, 79, 96, 98, 99, 114, 115, 117, 122, 142, 146, 170, 171, 173, 174, 258, 259, 289], "nr": [6, 10, 15, 18, 29, 55, 74, 96, 103, 104, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 145, 146, 175, 181, 182, 184, 185, 186, 188, 189, 196, 198, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 248, 251, 278, 284, 302, 304, 305, 306, 307, 308, 309, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 349, 351, 352, 354, 364], "util": [6, 96, 202, 254, 275, 276, 280, 281, 285, 336, 353, 365], "mani": [6, 23, 28, 96, 214, 236, 272, 274, 295, 361], "broken": [6, 8, 10, 11, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 146, 148, 149], "complianc": [6, 96], "further": [6, 8, 85, 92, 96, 148, 202, 236, 275, 308, 329, 350, 355, 359, 360, 361, 362], "usabl": [6, 96], "tabl": [6, 11, 14, 18, 19, 25, 27, 28, 40, 44, 59, 69, 78, 87, 88, 94, 95, 96, 102, 103, 104, 112, 121, 143, 154, 158, 169, 195, 205, 206, 207, 209, 212, 226, 228, 229, 231, 233, 236, 257, 260, 264, 265, 280, 302, 318, 321, 322, 328, 330, 332, 336, 339, 341, 343, 344, 345, 347, 355, 361], "valid": [6, 14, 18, 19, 29, 64, 65, 83, 84, 87, 88, 94, 96, 102, 106, 107, 126, 127, 132, 138, 163, 165, 167, 168, 181, 182, 207, 233, 236, 240, 242, 246, 247, 260, 261, 262, 263, 264, 265, 266, 267, 278, 285, 287, 288, 289, 291, 294, 318, 321, 326, 327, 337, 351, 352, 361], "default": [6, 7, 10, 11, 12, 14, 15, 17, 18, 19, 21, 44, 55, 69, 74, 85, 86, 87, 88, 92, 95, 96, 102, 103, 104, 108, 112, 117, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 149, 181, 182, 196, 198, 202, 203, 204, 205, 206, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 235, 236, 238, 246, 247, 263, 264, 267, 268, 269, 270, 271, 273, 274, 275, 276, 278, 279, 280, 281], "datatyp": [6, 10, 12, 55, 74, 96, 102, 108, 117, 142, 146, 209], "precis": [6, 10, 55, 74, 96, 117, 142, 146, 199, 203, 204, 284, 285, 302, 332, 334, 336], "remain": [6, 10, 55, 74, 87, 96, 117, 142, 146, 198, 206, 230, 231, 260, 266, 272, 328, 330, 331, 333, 334, 335, 342, 349, 351], "uint8": [6, 96], "tensor": [6, 10, 11, 12, 15, 25, 32, 44, 55, 69, 74, 87, 96, 112, 117, 142, 143, 146, 149, 182, 318, 339], "besid": [6, 96, 182], "last": [6, 8, 32, 62, 81, 92, 96, 124, 148, 164, 182, 234, 238, 241, 278, 289, 301, 318], "chang": [6, 65, 84, 96, 107, 127, 165, 168, 182, 235, 237, 242, 269, 271, 275, 276, 280, 281, 283, 298, 306, 318, 323, 327, 328, 345, 352], "string": [6, 10, 11, 29, 39, 44, 46, 55, 69, 74, 87, 88, 94, 96, 102, 103, 104, 112, 117, 130, 131, 132, 138, 142, 143, 146, 181, 182, 188, 207, 215, 216, 227, 229, 233, 236, 238, 246, 247, 262, 264, 265, 266, 269, 270, 271, 275, 276, 278, 280, 281, 342, 345, 346, 349], "unsupport": [6, 96], "i_l": [6, 96, 186], "too": [6, 96], "cannot": [6, 10, 11, 33, 35, 37, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149, 278, 328, 338, 342, 345, 346, 348, 349], "neg": [6, 32, 94, 96, 130, 131, 132, 136, 137, 202, 203, 204, 205, 215, 216, 218, 219, 237, 246, 248, 249, 251], "properti": [6, 7, 8, 10, 12, 19, 22, 24, 39, 46, 55, 62, 64, 65, 74, 81, 83, 84, 93, 96, 101, 102, 106, 107, 117, 124, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 146, 163, 164, 165, 167, 168, 184, 185, 195, 203, 207, 208, 209, 215, 216, 217, 218, 219, 220, 237, 240, 241, 242, 244, 245, 246, 247, 254, 265, 268, 273, 279, 298, 302, 325, 326, 337, 342, 349], "bm": [6, 96, 186], "matrix": [6, 22, 29, 96, 193, 195, 203, 204, 205, 269, 279, 283, 302, 311, 325, 326, 335, 337, 354], "construct": [6, 96, 286, 289, 291, 295, 355], "computeil": [6, 96, 186], "sec": [6, 18, 19, 96, 285, 342, 345], "index": [6, 18, 19, 32, 39, 46, 48, 49, 60, 64, 65, 71, 72, 79, 83, 84, 85, 87, 88, 90, 91, 94, 96, 98, 99, 102, 103, 104, 106, 107, 114, 115, 122, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 162, 163, 165, 167, 168, 170, 171, 173, 174, 181, 182, 184, 204, 207, 209, 215, 216, 217, 218, 219, 220, 227, 228, 229, 231, 233, 235, 236, 237, 238, 239, 240, 242, 246, 247, 248, 249, 251, 254, 258, 259, 262, 264, 265, 266, 270, 272, 273, 278, 279, 280, 282, 285, 287, 288, 289, 291, 294, 302, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 335, 337, 342, 351, 353, 354, 355, 361], "specifi": [6, 8, 12, 14, 15, 17, 18, 19, 24, 29, 87, 92, 94, 96, 101, 102, 175, 176, 181, 182, 195, 207, 208, 227, 230, 236, 238, 268, 270, 278, 280, 302, 309, 318, 330, 331, 332, 333, 334, 335, 337], "exact": [6, 65, 84, 96, 107, 127, 162, 168, 239, 301], "befor": [6, 7, 9, 25, 27, 34, 36, 37, 59, 64, 78, 83, 88, 93, 96, 106, 121, 126, 163, 167, 195, 212, 240, 313, 321, 361, 362], "ratematch": [6, 7, 10, 24, 26, 28, 55, 57, 58, 59, 74, 76, 77, 78, 92, 96, 101, 102, 117, 119, 120, 121, 142, 146, 152, 153, 154, 158, 159, 184, 207, 208, 209, 210, 211, 212, 323, 339], "n_ldpc": [6, 9, 88, 96, 186], "prune": [6, 96], "pcm": [6, 58, 77, 96, 120, 186, 211], "z": [6, 96, 138, 139, 186, 196, 220, 247], "belief": [6, 96], "propag": [6, 15, 18, 19, 96, 193, 195, 198, 203, 204, 231, 268, 302, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 352, 355, 361], "compliant": [6, 8, 16, 19, 92, 96, 144, 145, 147, 148, 238, 243, 299, 301, 330, 331, 333, 334, 364], "inherit": [6, 10, 55, 74, 96, 117, 142, 146], "librari": [6, 29, 96, 227, 236, 278, 286, 290, 292, 293, 295, 310, 313, 321, 350, 355, 360, 361], "rxcodeword": [6, 96, 339], "denot": [6, 8, 29, 93, 96, 132, 138, 184, 185, 188, 196, 198, 203, 204, 205, 206, 235, 244, 245, 246, 247, 254, 256, 265, 275, 276, 278, 281, 304, 305, 306, 307, 308, 309, 330, 331], "logit": [6, 10, 11, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 149], "ldpcdecoder5g": [6, 96, 186, 339], "decbit": [6, 7, 9, 62, 81, 93, 96, 124, 164, 241, 318, 322, 339], "trainabl": [6, 96, 318], "cn_type": [6, 96], "boxplu": [6, 96], "phi": [6, 14, 96, 193, 195, 196, 327, 334, 351, 352], "track_exit": [6, 96], "return_infobit": [6, 96], "prune_pcm": [6, 96, 186], "num_it": [6, 10, 11, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146], "output_dtyp": [6, 10, 54, 55, 73, 74, 96, 116, 117, 142, 146, 184, 185, 188, 189], "iter": [6, 10, 11, 29, 44, 55, 69, 74, 96, 112, 117, 142, 143, 146, 196, 198, 206, 268, 279, 305], "tractabl": [6, 96], "differentiabilil": [6, 96], "kera": [6, 10, 55, 74, 96, 117, 142, 146, 301, 314, 318], "everi": [6, 19, 96, 198, 206, 236, 249, 270, 275, 281, 298, 302, 311, 312, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 347, 351, 352, 353, 354, 356, 361], "outgo": [6, 96], "scale": [6, 8, 16, 18, 87, 88, 90, 91, 93, 94, 96, 103, 104, 131, 137, 181, 182, 184, 188, 216, 219, 228, 229, 231, 244, 245, 264, 265, 285, 312, 318, 322, 330, 331, 334, 336, 337, 341, 343, 344, 345, 347, 361], "A": [6, 8, 10, 14, 15, 17, 18, 19, 24, 29, 33, 55, 64, 65, 74, 83, 84, 85, 89, 93, 96, 101, 102, 103, 104, 106, 107, 108, 117, 126, 127, 142, 146, 162, 163, 165, 167, 168, 189, 197, 199, 207, 208, 227, 229, 233, 236, 238, 239, 240, 242, 262, 263, 264, 266, 271, 278, 279, 284, 294, 310, 312, 313, 321, 334, 351, 354, 355, 361], "One": [6, 87, 96, 196, 197, 198, 199, 274, 278, 304, 312, 318, 350, 355], "minsum": [6, 96], "where": [6, 7, 8, 10, 11, 14, 15, 18, 19, 24, 26, 28, 29, 32, 39, 44, 46, 55, 58, 59, 69, 74, 77, 78, 85, 86, 88, 91, 92, 93, 95, 96, 101, 102, 103, 104, 108, 112, 117, 120, 121, 136, 137, 138, 139, 142, 143, 145, 146, 148, 153, 154, 158, 181, 182, 184, 189, 196, 198, 202, 203, 204, 205, 206, 207, 208, 211, 212, 218, 219, 220, 227, 228, 229, 230, 231, 234, 235, 236, 237, 244, 245, 247, 248, 249, 251, 252, 253, 254, 255, 256, 262, 264, 266, 267, 269, 270, 271, 275, 278, 279, 280, 281, 294, 295, 302, 304, 307, 309, 311, 312, 318, 322, 325, 326, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 354, 359, 360, 362, 365], "singl": [6, 14, 19, 32, 37, 85, 89, 96, 103, 104, 181, 229, 233, 254, 273, 276, 279, 281, 285, 288, 289, 291, 294, 295, 302, 311, 313, 318, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 364], "rule": [6, 96], "numer": [6, 11, 27, 44, 69, 96, 112, 143, 280, 361, 365], "stabl": [6, 96, 280], "version": [6, 8, 15, 18, 24, 33, 58, 77, 87, 88, 90, 91, 92, 94, 96, 101, 102, 103, 104, 120, 130, 131, 132, 134, 136, 137, 138, 139, 145, 175, 181, 182, 184, 185, 186, 188, 203, 204, 207, 208, 209, 211, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 243, 244, 245, 246, 247, 253, 256, 260, 284, 301, 359, 360, 361, 362, 363, 364], "ryan": [6, 96], "min": [6, 29, 32, 96, 281, 285, 289, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "approxim": [6, 29, 96, 269, 276], "cn": [6, 96], "updat": [6, 96, 128, 133, 140, 177, 178, 192, 194, 195, 199, 223, 224, 225, 301, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 349, 359, 361, 362], "decid": [6, 11, 12, 44, 69, 96, 112, 143, 149, 206, 283], "instead": [6, 94, 96, 268, 328, 338], "track": [6, 19, 96, 233, 296, 327, 332, 334, 335, 345, 346], "exit": [6, 96], "characterist": [6, 96, 269, 270, 271, 275, 276, 281, 304, 312, 323, 325, 326, 330, 331, 334, 337, 342, 349, 350, 355, 361], "cw": [6, 96], "info": [6, 96, 353], "punctur": [6, 57, 76, 96, 102, 119, 207, 210], "degre": [6, 14, 19, 96, 345, 348], "vn": [6, 96], "connect": [6, 14, 19, 96, 280, 285, 289, 350, 355, 361], "see": [6, 19, 96, 278, 305, 306, 307, 308, 309, 334, 335, 345, 365], "cammer": [6, 96], "yield": [6, 96], "improv": [6, 26, 27, 28, 58, 77, 96, 101, 120, 195, 196, 198, 202, 203, 204, 206, 208, 211, 214, 268, 269, 271, 275, 276, 279, 281, 283, 285, 302, 304, 323, 330, 331, 332, 334, 335], "throughput": [6, 96, 268, 279, 280, 281, 283, 285, 294, 313, 321, 323, 337, 354, 355, 361], "reduc": [6, 19, 27, 37, 57, 65, 76, 84, 87, 88, 94, 96, 102, 107, 119, 127, 162, 168, 181, 182, 196, 198, 204, 206, 207, 210, 239, 264, 280, 301, 306, 310, 312, 318, 321, 361], "memori": [6, 10, 11, 18, 19, 22, 44, 55, 69, 74, 87, 88, 96, 112, 117, 142, 143, 146, 149, 181, 182, 195, 202, 204, 301, 330, 331, 361], "earli": [6, 27, 96], "stop": [6, 96, 196, 198, 202, 206, 285, 288, 289, 291, 294], "moment": [6, 96, 301], "msg_vn": [6, 96], "need": [6, 32, 96, 196, 198, 278, 309, 312, 314, 332], "when": [6, 11, 12, 14, 15, 17, 18, 19, 21, 22, 35, 37, 39, 44, 46, 48, 60, 64, 69, 71, 79, 83, 86, 87, 95, 96, 98, 106, 112, 114, 122, 126, 143, 163, 167, 170, 173, 182, 184, 188, 196, 198, 206, 227, 233, 235, 236, 237, 240, 244, 245, 249, 255, 256, 258, 262, 265, 266, 267, 269, 275, 276, 278, 280, 285, 305, 307, 308, 309, 318, 322, 332, 335, 342, 345, 346, 351], "llrs_ch": [6, 96], "tupl": [6, 9, 18, 85, 86, 96, 189, 203, 204, 205, 206, 237, 269, 278], "raggedtensor": [6, 96], "rag": [6, 96], "wise": [6, 26, 37, 65, 84, 96, 107, 127, 162, 168, 239], "assert": [6, 96, 268], "two": [6, 14, 18, 29, 32, 48, 57, 60, 64, 65, 71, 76, 79, 83, 84, 86, 87, 89, 95, 96, 98, 102, 106, 107, 114, 119, 122, 126, 127, 138, 145, 162, 163, 167, 168, 170, 173, 180, 181, 182, 195, 196, 197, 198, 199, 203, 205, 209, 210, 234, 236, 239, 240, 247, 250, 255, 256, 258, 278, 281, 294, 302, 307, 309, 318, 330, 331, 332, 333, 334, 335, 337, 346, 347, 348, 353], "float16": [6, 96], "float64": [6, 96, 181, 189, 334], "lot": [6, 96, 301], "welcom": [6, 96], "everyon": [6, 96], "go": [6, 96, 318, 359, 362, 363], "i_": [6, 96], "l": [6, 8, 29, 33, 39, 46, 93, 95, 96, 108, 184, 186, 193, 195, 196, 203, 204, 205, 227, 230, 231, 235, 236, 237, 248, 249, 251, 254, 262, 266, 270, 272, 278, 289, 291, 294, 301, 302, 311, 323, 328, 330, 331, 332, 333, 334, 335, 336, 345, 351, 352, 361, 365], "dot": [6, 7, 8, 11, 12, 24, 39, 44, 46, 69, 85, 93, 96, 101, 102, 103, 104, 112, 143, 148, 182, 184, 188, 189, 206, 207, 208, 228, 229, 230, 231, 232, 233, 235, 236, 254, 256, 262, 263, 264, 266, 269, 270, 271, 272, 274, 278, 301, 302, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340], "llr_max": [6, 10, 54, 55, 73, 74, 96, 116, 117, 142, 146, 184, 185, 186, 188, 189], "maximum": [6, 7, 8, 10, 11, 14, 17, 19, 27, 29, 39, 44, 46, 55, 64, 65, 69, 74, 83, 84, 87, 89, 93, 96, 106, 107, 112, 117, 126, 127, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 146, 163, 165, 167, 168, 180, 184, 197, 202, 204, 205, 215, 216, 217, 218, 219, 220, 227, 235, 236, 237, 238, 240, 242, 246, 247, 249, 254, 262, 266, 268, 271, 272, 278, 281, 305, 334, 351, 353], "avoid": [6, 96, 206, 306], "satur": [6, 10, 55, 74, 96, 117, 142, 146], "after": [6, 7, 8, 9, 10, 11, 12, 19, 26, 27, 37, 44, 55, 57, 69, 74, 76, 88, 92, 93, 95, 96, 102, 108, 112, 117, 119, 130, 131, 132, 134, 136, 137, 138, 139, 142, 143, 145, 146, 149, 152, 159, 175, 182, 189, 199, 204, 207, 210, 215, 216, 217, 218, 219, 220, 238, 246, 247, 269, 270, 285, 298, 323, 328, 341, 342, 343, 344, 345, 346, 347, 349, 353], "truncat": [6, 9, 57, 76, 88, 96, 102, 119, 207, 210], "nb_pruned_nod": [6, 96, 186], "preprocess": [6, 96, 203, 204, 281, 311, 313, 321, 361], "codeblock": [6, 9, 11, 24, 44, 64, 65, 69, 83, 84, 95, 96, 101, 102, 106, 107, 108, 112, 126, 127, 143, 148, 149, 163, 165, 167, 168, 186, 207, 208, 240, 242, 329, 333, 339], "segment": [6, 7, 9, 10, 24, 43, 55, 68, 74, 87, 92, 95, 96, 101, 102, 111, 117, 141, 142, 145, 146, 148, 150, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 207, 208], "concaten": [6, 7, 10, 43, 55, 68, 74, 87, 95, 96, 111, 117, 141, 142, 146, 150, 175, 176, 179, 181, 182, 183, 184, 185, 186, 188, 189, 294, 311, 312, 323, 325, 326, 330, 331, 332, 333, 334, 335, 352, 354], "codeblocksegment": [6, 7, 8, 10, 11, 43, 44, 68, 69, 93, 95, 111, 112, 141, 142, 143, 148, 149, 150, 184, 185, 186, 188, 189], "codeblockconcaten": [6, 8, 10, 11, 43, 44, 68, 69, 92, 95, 111, 112, 141, 142, 143, 148, 150, 184, 185, 186, 188, 189], "segreg": [6, 10, 43, 68, 111, 141, 142, 150, 175, 179, 181, 184, 185, 186, 188, 189, 365], "codeblocksegreg": [6, 7, 8, 10, 11, 43, 44, 68, 69, 92, 93, 111, 112, 141, 142, 143, 148, 150, 184, 185, 186, 188, 189], "aggreg": [6, 9, 10, 43, 68, 108, 111, 141, 142, 150, 175, 179, 181, 184, 185, 186, 188, 189, 227, 230, 236, 278, 304, 306, 307, 308, 309, 310, 313, 321, 328, 330, 331, 352, 355, 361], "codeblockaggreg": [6, 7, 10, 11, 43, 44, 68, 69, 93, 111, 112, 141, 142, 143, 148, 149, 150, 184, 185, 186, 188, 189], "introduct": [6, 96, 318], "handbook": [6, 96, 198], "record": [6, 96], "2004": [6, 96], "ebada": [6, 96], "elkelesh": [6, 96], "ten": [6, 96], "brink": [6, 96], "spars": [6, 19, 32, 96, 330, 349], "ieee": [6, 10, 55, 74, 96, 117, 142, 146, 198, 199, 284, 301, 318], "symposium": [6, 96, 199, 284], "theori": [6, 96, 198], "isit": [6, 96], "2018": [6, 96], "complement": 7, "opposit": [7, 28, 59, 78, 92, 93, 95, 121, 148, 149, 154, 158, 175, 181, 212], "break": [7, 8, 11, 44, 69, 92, 93, 112, 143, 148, 149, 323, 327, 328, 352], "numcbgrp1": [7, 92], "numrmop1": [7, 92], "cbsegreg": [7, 92], "cbsegregatellr": [7, 92], "numcbgrp2": [7, 92], "numrmop2": [7, 92], "numcbs1": [7, 92], "numbits1": [7, 23, 24, 85, 92, 100, 101, 186, 208], "numcbs2": [7, 92], "numbits2": [7, 23, 24, 85, 92, 100, 101, 186, 208], "divid": [7, 29, 59, 78, 92, 95, 102, 121, 176, 182, 186, 189, 207, 212, 227, 269, 270, 334, 336], "Then": [7, 92, 182, 249], "target": [7, 8, 10, 11, 44, 55, 57, 58, 69, 74, 76, 77, 88, 92, 93, 102, 112, 117, 119, 120, 142, 143, 146, 148, 149, 152, 159, 176, 181, 182, 185, 188, 189, 196, 199, 207, 209, 210, 211, 213, 214, 280, 299, 310, 321, 323, 328, 359, 360, 361, 362, 363], "consist": [7, 10, 18, 19, 39, 46, 55, 74, 85, 86, 87, 92, 95, 102, 117, 130, 131, 132, 136, 137, 138, 142, 146, 184, 186, 189, 196, 197, 198, 209, 213, 215, 216, 218, 219, 227, 246, 247, 262, 264, 266, 270, 274, 285, 289, 291, 294, 299, 318, 350, 351, 355, 361, 364], "g": [7, 8, 24, 92, 101, 102, 181, 182, 207, 208, 238, 285, 302, 305, 307, 308, 311, 323, 325, 326, 330, 331, 332, 333, 334, 335, 341, 342, 343, 344, 347, 349, 352, 353, 354], "bitselect": [7, 56, 57, 75, 76, 92, 100, 102, 118, 119, 150, 152, 157, 159, 160, 184, 185, 186, 188, 189, 207, 210, 339], "sum_": [7, 8, 24, 32, 33, 92, 101, 102, 182, 207, 208, 270, 281], "els": [7, 92, 130, 131, 132, 136, 137, 138, 139, 145, 182, 196, 197, 198, 199, 215, 216, 217, 218, 219, 220, 246, 247, 289, 291, 294, 301, 302, 311, 325, 326, 330, 331, 332, 333, 334, 335, 337, 339, 351, 353, 354], "crash": [7, 92, 362], "numcbsi": [7, 92], "numbitsi": [7, 92], "ot": [7, 8, 19, 39, 46, 92, 93], "float": [7, 8, 11, 12, 14, 15, 17, 18, 19, 21, 39, 44, 46, 64, 69, 83, 86, 88, 92, 93, 94, 103, 104, 106, 112, 126, 143, 148, 163, 167, 185, 188, 193, 196, 198, 199, 202, 203, 204, 205, 206, 228, 229, 238, 240, 244, 245, 254, 268, 273, 275, 280, 281, 361, 365], "mismatch": [7, 92, 193, 235], "larger": [7, 8, 92, 93, 102, 202, 204, 205, 207, 237, 301, 307, 309, 329, 334], "than": [7, 8, 11, 12, 14, 17, 19, 27, 33, 35, 37, 39, 44, 46, 48, 60, 62, 64, 65, 69, 71, 79, 81, 83, 84, 92, 93, 98, 102, 106, 107, 112, 114, 122, 124, 126, 127, 143, 144, 145, 147, 163, 164, 165, 167, 168, 170, 173, 189, 193, 195, 196, 197, 198, 202, 203, 204, 205, 207, 227, 228, 231, 233, 235, 237, 238, 240, 241, 242, 244, 245, 258, 267, 270, 278, 279, 280, 298, 301, 306, 307, 309, 342, 345, 346, 348, 349, 359, 360, 362], "numbit": [7, 49, 72, 92, 99, 102, 115, 171, 174, 207, 259, 326, 336], "reconstruct": [7, 93, 149, 318, 321, 355, 361, 364], "mac": [7, 87, 93, 94, 149, 260, 282], "understand": [7, 64, 65, 83, 84, 93, 106, 107, 126, 127, 144, 147, 149, 163, 165, 167, 168, 238, 240, 242, 249, 278, 280, 297, 342, 361], "650390625": [7, 8, 9, 93, 95], "tblen": [7, 93, 108], "cbaggreg": [7, 93], "rtbwithcrc": [7, 93, 108], "api": [7, 8, 10, 11, 22, 44, 49, 55, 69, 72, 74, 92, 93, 99, 112, 115, 117, 142, 143, 146, 148, 149, 171, 174, 186, 189, 192, 193, 194, 195, 202, 203, 204, 205, 206, 244, 245, 254, 259, 260, 261, 262, 263, 264, 265, 266, 267, 273, 274, 295, 361, 364], "ani": [7, 8, 14, 19, 32, 93, 94, 132, 134, 139, 181, 182, 217, 220, 227, 236, 238, 244, 245, 246, 270, 278, 279, 295, 298, 318, 328, 359, 360, 362, 363], "mciindex": [7, 8, 93], "computetransportblocks": [7, 8, 9, 93, 94, 186, 294, 301, 311, 312, 325, 326, 354], "includ": [7, 11, 14, 15, 16, 18, 19, 26, 44, 57, 69, 76, 87, 93, 112, 119, 143, 144, 145, 147, 148, 152, 159, 203, 204, 210, 227, 268, 269, 270, 271, 273, 275, 276, 277, 280, 281, 283, 295, 298, 318, 323, 328, 334, 335, 341, 343, 344, 347], "relat": [7, 11, 38, 39, 44, 46, 69, 93, 112, 143, 148, 238, 260, 264, 267, 293, 295, 298, 349, 356, 361], "non": [7, 8, 9, 10, 11, 12, 14, 17, 18, 19, 29, 44, 55, 57, 69, 74, 76, 93, 112, 117, 119, 130, 131, 132, 136, 137, 142, 143, 146, 148, 149, 152, 159, 193, 195, 202, 203, 204, 205, 210, 215, 216, 218, 219, 227, 230, 238, 246, 248, 249, 251, 260, 261, 270, 278, 299, 308, 318, 332, 336, 364], "ve": [7, 8, 9, 11, 44, 57, 62, 64, 65, 69, 76, 81, 83, 84, 93, 106, 107, 112, 119, 124, 126, 127, 143, 148, 152, 159, 163, 164, 165, 167, 168, 189, 210, 231, 240, 241, 242], "c": [7, 8, 10, 14, 19, 33, 55, 64, 65, 74, 83, 84, 93, 106, 107, 117, 126, 127, 142, 146, 163, 165, 167, 168, 186, 194, 198, 204, 227, 236, 240, 242, 249, 254, 265, 270, 285, 287, 289, 291, 294, 304, 305, 306, 307, 308, 318, 330, 331, 337, 342, 345, 349, 351], "kbar": [7, 8, 93, 186], "kcb": [7, 93, 186], "measur": [7, 93, 196, 197, 198, 199, 200, 203, 205, 206, 275, 276, 302, 309, 312, 332, 333, 335, 355, 361, 364], "packet": [7, 85, 87, 93, 94, 283], "best": [8, 10, 11, 44, 55, 69, 74, 93, 112, 117, 142, 143, 146, 149, 195, 280, 291, 294, 302, 311, 323, 325, 326, 327, 332, 333, 335, 337, 351, 352, 354, 355, 361, 365], "To": [8, 28, 93, 128, 133, 140, 149, 177, 178, 189, 223, 224, 225, 233, 264, 301, 332, 345, 359, 360, 361, 362, 363, 365], "shall": [8, 12, 93, 94, 103, 104, 149, 228, 229, 231, 279], "bound": [8, 17, 88, 93, 149, 328, 330, 331, 337], "limit": [8, 87, 88, 90, 91, 93, 94, 102, 149, 181, 182, 196, 197, 198, 206, 207, 209, 244, 245, 254, 298, 308, 321, 330, 331], "exce": [8, 14, 17, 19, 93, 149, 236, 278, 309], "smaller": [8, 93, 149, 309], "individu": [8, 11, 44, 69, 92, 93, 112, 143, 148, 149, 197], "ratemat": [8, 93, 149], "dematch": [8, 93, 149, 189], "upcom": [8, 9, 31, 65, 84, 93, 107, 127, 149, 162, 168, 239, 243, 361, 364], "small": [8, 10, 11, 12, 16, 18, 44, 55, 69, 74, 93, 112, 117, 141, 142, 143, 145, 146, 149, 150, 156, 157, 176, 179, 186, 196, 198, 206, 227, 234, 244, 245, 307, 329, 338, 341, 343, 344, 347, 349], "demonstr": [8, 11, 12, 44, 62, 69, 81, 92, 93, 94, 95, 112, 124, 143, 148, 149, 164, 205, 241, 289, 291, 294, 295, 304, 329, 330, 331, 333, 334, 335, 350, 352, 355, 361], "wai": [8, 11, 12, 18, 19, 44, 64, 69, 83, 93, 106, 112, 126, 143, 149, 163, 167, 195, 198, 205, 240, 265, 280, 361], "crctblock": [8, 93, 95, 108], "cbsegment": [8, 93, 95], "212": [8, 10, 11, 12, 24, 44, 55, 69, 74, 87, 92, 93, 95, 101, 102, 108, 112, 117, 142, 143, 145, 146, 149, 175, 181, 182, 207, 208, 301, 314], "inputs": [8, 9, 93], "lpdc": [8, 93, 182], "kb": [8, 93, 186, 318], "rmbit": [8, 92, 95, 184], "3gppts38212pdsch": [8, 24, 92, 101, 102, 186, 207, 208], "python": [8, 24, 29, 92, 101, 208, 227, 236, 278, 286, 290, 292, 293, 295, 310, 313, 321, 350, 355, 359, 360, 361, 362, 363, 364], "tblength": [9, 94], "ldpcparam": 9, "liftfactor": 9, "ncb": [9, 100, 102, 186, 207], "relev": [9, 10, 11, 18, 19, 21, 44, 55, 65, 69, 74, 84, 107, 112, 117, 127, 142, 143, 146, 162, 168, 205, 206, 239, 244, 260, 267, 269, 275, 276, 281, 299, 312, 349, 363], "physicalchannel": [9, 25, 85, 86, 87, 88, 94, 95, 108, 181, 182, 184, 185, 188, 189, 285, 287, 288, 289, 291, 294, 301, 311, 312, 323, 325, 326, 327, 328, 351, 352, 353, 354], "form": [9, 196, 227, 244, 245, 269, 270, 278, 283, 295, 298, 299], "mcsindex": [9, 87, 88, 90, 91, 94, 181, 182, 264, 280, 294, 301, 311, 325, 326, 354], "packag": [10, 55, 74, 117, 142, 146, 195, 205, 206, 226, 243, 289, 302, 323, 335, 351, 352, 359, 360, 362, 363], "build": [10, 18, 19, 55, 74, 117, 142, 146], "top": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "level": [10, 11, 15, 16, 18, 19, 29, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 186, 189, 206, 227, 230, 236, 243, 275, 278, 279, 280, 281, 304, 306, 307, 308, 309, 310, 313, 321, 328, 330, 331, 332, 333, 334, 335, 341, 343, 344, 347, 355, 361, 364], "easili": [10, 55, 74, 117, 142, 146, 295, 330, 331, 359, 360, 362, 363, 364], "integr": [10, 55, 74, 117, 142, 146, 299, 328, 338, 361, 364], "convei": [10, 39, 46, 55, 64, 74, 83, 106, 117, 126, 142, 146, 163, 167, 184, 240, 262, 266, 285], "wireless": [10, 22, 28, 49, 55, 72, 74, 99, 115, 117, 142, 146, 169, 174, 190, 193, 195, 196, 197, 198, 203, 204, 228, 243, 257, 268, 271, 273, 275, 276, 280, 281, 283, 285, 295, 298, 313, 321, 336, 337, 342, 346, 350, 355, 356, 361], "mother": [10, 55, 74, 117, 142, 146], "seg": [10, 55, 74, 117, 142, 146], "il": [10, 11, 27, 44, 55, 69, 74, 112, 117, 142, 143, 145, 146, 302, 330, 331, 332, 333, 334, 335], "bil": [10, 26, 55, 58, 74, 77, 117, 120, 142, 146, 153, 158, 211], "512": [10, 55, 65, 74, 84, 107, 117, 127, 142, 146, 165, 168, 175, 184, 242, 285, 287, 288, 291, 301, 311, 312, 314, 327, 336, 339, 341, 343, 344, 347, 351, 352], "864": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 184, 235, 237, 248, 251, 338], "140": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 238, 267, 285, 287, 288, 289, 291, 301, 302, 314, 327, 330, 332, 333, 335, 338, 351, 352], "8192": [10, 55, 74, 117, 142, 146, 175, 339], "format3": [10, 55, 74, 117, 142, 146], "1706": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146], "1024": [10, 29, 55, 74, 117, 142, 146, 175, 203, 205, 273, 285, 287, 288, 294, 311, 312, 318, 325, 326, 330, 331, 334, 335, 336, 337, 341, 343, 344, 345, 346, 353, 354], "format4": [10, 55, 74, 117, 142, 146], "31": [10, 55, 74, 117, 142, 146, 250, 278, 314, 318, 332, 333, 334, 340, 351], "16384": [10, 55, 74, 117, 142, 146], "figur": [10, 12, 14, 19, 55, 74, 117, 142, 146, 186, 204, 206, 227, 234, 236, 278, 285, 294, 305, 306, 307, 308, 309, 311, 327, 329, 330, 331, 345, 346, 347, 348, 351, 353], "3gppts38212polar": [10, 11, 26, 27, 28, 44, 55, 58, 59, 69, 74, 77, 78, 112, 117, 120, 121, 142, 143, 146, 149, 153, 154, 158, 211, 212], "nbatch": [10, 55, 74, 117, 142, 146, 291, 294, 323, 327, 328, 351, 352], "verbos": [10, 11, 44, 55, 69, 74, 87, 88, 90, 112, 117, 142, 143, 146, 149, 181, 182, 188, 189, 263, 264, 273, 294, 301, 311, 325, 326, 338, 353, 354], "polarencoder5g": [10, 54, 55, 73, 74, 116, 117, 142, 146, 184, 185, 188, 189, 338], "polarencod": [10, 55, 74, 117, 142, 146], "built": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 312, 318, 361], "modif": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 276, 298], "moreov": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 235, 237, 243], "complainc": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "being": [10, 11, 15, 17, 18, 19, 44, 55, 57, 64, 65, 69, 74, 76, 83, 84, 87, 88, 106, 107, 112, 117, 119, 126, 127, 130, 131, 142, 143, 146, 149, 152, 159, 163, 165, 167, 168, 181, 182, 210, 215, 216, 227, 240, 242, 265, 270, 278, 318, 342, 345, 346, 347, 349], "out": [10, 11, 18, 19, 44, 55, 57, 64, 65, 69, 74, 76, 83, 84, 102, 106, 107, 112, 117, 119, 126, 127, 142, 143, 146, 149, 162, 163, 167, 168, 207, 210, 239, 240, 244, 245, 289, 301, 318, 329, 361], "except": [10, 11, 12, 39, 44, 46, 48, 55, 57, 60, 69, 71, 74, 76, 79, 98, 103, 104, 112, 114, 117, 119, 122, 142, 143, 146, 149, 152, 159, 170, 173, 203, 210, 229, 237, 238, 244, 258, 262, 266, 267, 269, 272, 273, 274, 275, 276, 289], "invalid": [10, 11, 44, 55, 64, 65, 69, 74, 83, 84, 94, 102, 103, 104, 106, 107, 112, 117, 126, 127, 130, 131, 134, 136, 137, 142, 143, 146, 149, 163, 165, 167, 168, 207, 209, 215, 216, 217, 218, 219, 228, 229, 231, 236, 238, 240, 242, 244, 249, 254, 262, 263, 266, 267, 269, 270, 302, 334, 335], "uci": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 144, 145, 146, 147, 149, 175, 176, 221, 234, 329, 338], "although": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "consortium": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "agre": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "curv": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149], "aid": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 271, 355, 361], "sc": [10, 11, 29, 33, 34, 36, 44, 55, 69, 74, 103, 104, 112, 117, 142, 143, 146, 149, 185, 188, 202, 203, 204, 205, 229, 230, 233, 236, 245, 254, 267, 278, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 338, 342, 343, 351, 352, 354], "bp": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 188, 325, 326, 354], "materi": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 328, 338], "lead": [10, 11, 32, 44, 55, 69, 74, 112, 117, 142, 143, 146, 149, 280, 305, 312], "effect": [10, 11, 26, 27, 28, 35, 37, 44, 55, 58, 59, 64, 69, 74, 77, 78, 83, 106, 112, 117, 120, 121, 126, 142, 143, 146, 149, 153, 154, 158, 163, 167, 211, 212, 240, 268, 269, 270, 271, 281, 283, 310, 312, 321, 323, 330, 331, 334, 341, 343, 344, 345, 347, 349, 361], "loss": [10, 11, 16, 18, 19, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 149, 170, 173, 258, 301, 312, 314, 318, 323, 341, 343, 344, 347, 350, 355], "trade": [10, 22, 55, 74, 117, 142, 146, 309], "off": [10, 22, 55, 74, 117, 142, 146, 309, 365], "accuraci": [10, 55, 74, 117, 142, 146, 195, 197, 198, 202, 203, 204, 271, 275, 276, 301, 302, 312, 330, 331, 332, 333, 334, 355, 361], "poor": [10, 55, 74, 117, 142, 146, 227, 278, 280, 281, 304], "scl": [10, 55, 74, 117, 142, 146, 188, 291, 294, 323, 328, 338, 351, 352], "list_siz": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146], "good": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 196, 198, 206, 278, 310, 321, 359, 362, 363], "hybscl": [10, 55, 74, 117, 142, 146, 188], "highest": [10, 39, 46, 55, 74, 117, 142, 146, 184, 195, 204, 262, 266, 280, 281, 301, 351], "lowest": [10, 55, 74, 117, 142, 146, 195, 204, 227, 230, 238, 270, 283, 301], "poorest": [10, 55, 74, 117, 142, 146], "100": [10, 11, 15, 17, 18, 19, 29, 44, 49, 55, 69, 72, 74, 99, 112, 115, 117, 142, 143, 146, 171, 174, 196, 198, 206, 259, 267, 285, 301, 302, 309, 311, 312, 314, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 345, 348, 352, 354, 355, 361, 365], "dec_typ": [10, 11, 44, 54, 55, 69, 73, 74, 112, 116, 117, 142, 143, 146, 184, 185, 188, 189, 338], "success": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 268, 291, 294, 328, 351, 359, 360, 362, 363], "cancel": [10, 11, 44, 55, 69, 74, 112, 117, 142, 143, 146, 198, 203], "polardecoder5g": [10, 11, 44, 54, 55, 69, 73, 74, 112, 116, 117, 142, 143, 146, 184, 185, 188, 189, 338], "bitest": [10, 11, 44, 48, 55, 60, 69, 71, 74, 79, 98, 112, 114, 117, 122, 142, 143, 146, 170, 173, 258, 291, 294, 323, 351], "iff": [10, 55, 74, 117, 142, 146], "accept": [10, 12, 17, 40, 48, 55, 60, 64, 65, 71, 74, 79, 83, 84, 87, 88, 94, 98, 102, 106, 107, 114, 117, 122, 126, 127, 134, 142, 146, 163, 165, 167, 168, 170, 173, 181, 182, 189, 207, 217, 240, 242, 249, 258, 264, 281], "binari": [10, 12, 55, 74, 117, 142, 146, 189, 227, 230, 298, 365], "unknown": [10, 55, 74, 117, 142, 146, 273], "afloat": [10, 55, 74, 117, 142, 146], "complet": [10, 27, 28, 39, 46, 55, 74, 117, 142, 146, 186, 189, 299, 301, 334, 342, 345, 359, 360, 361, 362, 363], "subsect": [10, 55, 74, 117, 142, 146, 329, 338, 339, 341, 343, 344, 347, 353], "inputbitinterleav": [10, 11, 23, 27, 43, 44, 68, 69, 111, 112, 142, 143, 184, 185, 188, 189], "inputbitdeinterleav": [10, 11, 23, 27, 43, 44, 68, 69, 111, 112, 142, 143, 184, 185, 188, 189], "condo": [10, 55, 74, 117, 142, 146], "land": [10, 55, 74, 117, 142, 146], "new": [10, 55, 74, 117, 142, 146, 206, 279, 304, 305, 306, 307, 308, 309, 336, 359, 360, 361, 362, 363], "radio": [10, 55, 62, 64, 65, 74, 81, 83, 84, 85, 86, 106, 107, 117, 124, 126, 127, 132, 138, 142, 146, 163, 164, 165, 167, 168, 175, 176, 185, 196, 199, 236, 240, 241, 242, 246, 247, 254, 260, 269, 270, 271, 278, 283, 284, 285, 295, 304, 305, 306, 307, 308, 309, 323, 336, 342, 364], "survei": [10, 55, 74, 117, 142, 146], "vol": [10, 55, 74, 117, 142, 146, 318], "pp": [10, 55, 74, 117, 142, 146, 196, 199, 284, 301, 318], "29": [10, 55, 74, 117, 142, 146, 278, 301, 314, 318, 332, 333, 334, 340, 343, 351, 365], "40": [10, 55, 74, 117, 142, 146, 175, 176, 236, 265, 267, 278, 285, 287, 288, 289, 291, 294, 302, 304, 305, 307, 308, 309, 314, 318, 326, 327, 332, 333, 334, 340, 351, 352], "quarter": [10, 55, 74, 117, 142, 146, 361], "2021": [10, 55, 74, 117, 142, 146, 189, 199, 284], "often": [11, 44, 69, 112, 143, 268, 271, 279], "vari": [11, 22, 31, 44, 69, 112, 143, 268, 275, 276, 280, 281, 302, 318, 330, 331, 345], "import": [11, 14, 16, 19, 29, 32, 39, 44, 46, 48, 60, 69, 71, 79, 98, 112, 114, 122, 143, 170, 173, 206, 227, 236, 258, 262, 266, 278, 286, 290, 292, 293, 295, 296, 305, 306, 307, 308, 309, 310, 313, 321, 333, 335, 340, 348, 350, 355, 359, 360, 361, 362, 363], "henc": [11, 39, 44, 46, 58, 64, 69, 77, 83, 106, 112, 120, 126, 143, 163, 167, 184, 196, 198, 211, 234, 240, 260, 262, 266, 276, 278, 305, 308, 360, 363], "becom": [11, 44, 69, 112, 143], "split": [11, 44, 69, 112, 143], "qualiti": [11, 44, 69, 94, 112, 143, 195, 269, 270, 271, 275, 276, 279, 280, 281, 283, 285, 302, 312, 321, 334, 335, 342, 355, 361], "servic": [11, 44, 69, 112, 143, 279, 280, 281, 283, 298, 332, 334, 335], "polarcod": [11, 26, 27, 28, 44, 57, 58, 59, 69, 76, 77, 78, 112, 119, 120, 121, 143, 148, 149, 152, 153, 154, 158, 159, 210, 211, 212, 291, 294, 323, 351, 352], "numtargetbit": [11, 44, 69, 88, 102, 112, 143, 148, 149, 189, 209, 271, 294, 311, 325, 326, 354], "formatpucch": [11, 44, 69, 112, 129, 130, 131, 143, 149, 175, 176, 179, 215, 216], "th": [11, 44, 69, 112, 143, 149, 196, 198, 204, 346], "bioglio": [11, 44, 69, 112, 143, 149], "describ": [11, 25, 44, 69, 89, 102, 112, 143, 148, 175, 176, 180, 181, 182, 207, 227, 280, 298, 323, 339, 341, 342, 343, 344, 345, 346, 347, 349, 360, 361], "enabl": [11, 18, 19, 21, 26, 27, 32, 44, 58, 69, 77, 87, 88, 91, 102, 112, 120, 130, 131, 132, 134, 136, 137, 138, 139, 143, 153, 158, 181, 182, 196, 206, 207, 209, 211, 215, 216, 217, 218, 219, 220, 238, 246, 247, 265, 268, 269, 270, 275, 276, 281, 285, 287, 289, 291, 294, 301, 330, 332, 334, 335, 353, 361, 365], "input_bit": [11, 25, 26, 27, 28, 44, 58, 59, 69, 77, 78, 112, 120, 121, 143, 153, 154, 158, 211, 212], "less": [11, 12, 18, 19, 27, 39, 44, 46, 57, 62, 69, 76, 81, 95, 112, 119, 124, 143, 144, 145, 147, 152, 159, 164, 189, 202, 203, 204, 205, 210, 231, 235, 238, 241, 244, 245, 267, 279, 283, 301, 318, 327, 341, 342, 343, 344, 345, 346, 347, 348, 349], "165": [11, 27, 44, 69, 112, 143, 314], "k_il_max": [11, 27, 44, 69, 112, 143], "interleavepattern": [11, 26, 27, 28, 44, 58, 59, 69, 77, 78, 112, 120, 121, 143, 153, 154, 158, 211, 212], "164": [11, 27, 44, 69, 112, 143, 314], "amd": [11, 27, 44, 69, 112, 143], "protect": [12, 280, 298], "awgn": [12, 48, 60, 71, 79, 86, 98, 114, 122, 130, 170, 173, 215, 258, 301, 321, 322, 329, 339, 355, 361], "reedmullerencoder5g": [12, 329], "numcodeword": [12, 95], "umber": 12, "3gppts38211_rm": 12, "reedmullerdecod": 12, "hardin": 12, "hard_in": 12, "reedmullerdecoder5g": [12, 329], "rxbit": [12, 294, 329, 338], "llrest": [12, 318, 322, 329, 338], "typeerror": [12, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 244, 245, 246, 247, 254], "primarili": [13, 20, 22, 153, 154, 155, 156, 158, 159, 346], "togeth": [14, 227, 270], "current": [14, 17, 19, 29, 31, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 195, 206, 238, 240, 242, 249, 260, 269, 270, 273, 274, 278, 280, 281, 295, 304, 305, 306, 307, 308, 309, 328, 345, 346, 351], "901": [14, 15, 16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "uniform": [14, 19, 279, 312, 341, 343, 344], "ula": 14, "planar": 14, "upa": 14, "multi": [14, 193, 195, 199, 202, 203, 204, 205, 281, 284, 326, 337, 347, 361, 364], "panel": [14, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "mpa": 14, "tr": [14, 15, 18, 19], "channelmodel": [14, 15, 17, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "antennatyp": [14, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "omni": [14, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "centerfrequ": [14, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "arraystructur": [14, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "uint16": 14, "antennaspac": [14, 18, 19], "antparamet": 14, "phasediff": 14, "thetagrid": 14, "pi": [14, 19, 32, 33, 48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 170, 171, 173, 174, 244, 258, 259, 273, 302, 318, 327, 330, 331, 332, 333, 334, 335, 337, 345, 352, 364], "180": [14, 302, 314, 327, 334, 335, 345, 352], "phigrid": 14, "3gpp_38": [14, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "dual": [14, 29, 280, 342, 345, 349, 350, 355, 361, 364], "ref": [14, 15, 18, 19, 196, 197, 198, 199, 206], "radiat": [14, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354, 364], "3d": [14, 18, 144, 147, 269, 296, 302, 330, 331, 333, 334, 335, 342, 364], "displayantennaradiationpattern": [14, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354], "surfac": [14, 18, 19], "displayantennaarrayfactor": 14, "rotat": [14, 193, 203], "rotateantennaradiationpattern": 14, "angl": [14, 16, 17, 18, 19, 193, 195, 197, 200, 206, 243, 302, 312, 330, 331, 332, 333, 335, 337, 341, 342, 343, 344, 345, 348, 351, 355, 361, 364], "alpha": [14, 19, 244, 302, 311, 318, 323, 325, 326, 330, 331, 332, 333, 334, 335, 345, 352, 354], "beta": [14, 228, 337], "gama": 14, "also": [14, 17, 18, 19, 29, 32, 91, 130, 131, 132, 136, 137, 138, 139, 175, 182, 202, 203, 204, 205, 215, 216, 218, 219, 220, 236, 246, 247, 249, 255, 256, 271, 278, 280, 283, 307, 308, 318, 327, 336, 342, 345, 348, 363], "euler": 14, "http": [14, 359, 360, 361, 362, 363], "en": [14, 360], "wikipedia": 14, "org": 14, "wiki": 14, "euler_angl": 14, "hertzian_dipol": 14, "linear_dipol": 14, "ntn_antenna": 14, "vsat": 14, "hz": [14, 15, 19, 202, 203, 204, 205, 267, 285, 287, 288, 289, 291, 294, 323, 328, 341, 342, 343, 344, 345, 346, 347, 348, 349], "ghz": [14, 15, 18, 19, 29, 39, 46, 184, 249, 262, 266, 267, 302, 327, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 345, 347, 351, 352], "alwai": [14, 19, 49, 58, 72, 77, 99, 115, 120, 130, 131, 132, 136, 137, 138, 171, 174, 211, 215, 216, 218, 219, 227, 235, 238, 244, 245, 246, 247, 254, 259, 278, 279, 285, 318, 345], "geometri": [14, 16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 343, 344, 345, 350, 351, 352, 354, 355, 361], "mg": 14, "ng": [14, 29], "p": [14, 29, 33, 206, 236, 250, 251, 252, 253, 254, 265, 278, 284, 302, 304, 305, 306, 307, 308, 309, 323, 325, 326, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 340, 341, 343, 344, 354, 360, 365], "vertic": [14, 29, 195, 302, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 348, 349, 351], "greater": [14, 17, 19, 35, 37, 102, 145, 193, 195, 204, 205, 207, 233, 280, 345], "horizont": [14, 29, 195, 302, 330, 331, 332, 333, 334, 335, 337, 348, 351], "column": [14, 19, 26, 193, 195, 227, 270, 341, 342, 343, 344, 345, 346, 349, 351], "dgv": 14, "dgh": 14, "dv": 14, "dh": [14, 19, 343], "theta_3db": 14, "half": [14, 19, 39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 235, 237, 238, 240, 242, 249, 262, 266, 272, 351], "beamwidth": 14, "along": [14, 19, 32, 139, 193, 195, 204, 217, 218, 219, 220, 227, 269, 270, 332, 341, 343, 344, 361], "elev": [14, 18, 193, 195, 196, 197, 206, 302, 335, 342, 350, 355], "65": [14, 285, 289, 291, 294, 309, 311, 314, 326, 332, 333, 334, 340, 351, 352, 355], "slav": 14, "lobe": 14, "attenu": 14, "30": [14, 90, 145, 204, 230, 236, 244, 245, 267, 278, 285, 288, 291, 294, 301, 302, 307, 308, 309, 311, 312, 314, 318, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 340, 341, 342, 343, 344, 345, 346, 349, 351, 352, 353, 354], "phi_3db": 14, "azimuth": [14, 16, 17, 18, 19, 193, 195, 196, 197, 206, 302, 327, 334, 335, 341, 342, 343, 344, 347, 350, 352, 355], "amax": 14, "max": [14, 29, 32, 39, 46, 48, 60, 64, 65, 71, 79, 83, 84, 98, 106, 107, 114, 122, 126, 127, 145, 162, 163, 165, 167, 168, 170, 173, 184, 235, 237, 239, 240, 242, 249, 255, 258, 262, 266, 272, 273, 278, 285, 288, 289, 291, 294, 301, 302, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 345, 348, 351, 352, 354], "wave": [14, 199, 312, 321, 336, 349, 355, 361], "phase": [14, 15, 18, 19, 32, 203, 221, 233, 243, 268, 273, 275, 276, 296, 299, 325, 326, 330, 331, 334, 335, 337, 341, 343, 344, 350, 355], "rad": [14, 17], "theta": [14, 193, 195, 196, 302, 318, 327, 330, 331, 332, 333, 334, 335, 337, 351, 352], "zenith": [14, 16, 18, 341, 343, 344, 347, 348], "radian": [14, 17, 19, 197, 206, 345], "orientationperpanel": 14, "orient": [14, 17, 18, 19, 228, 342, 345], "correpond": 14, "bear": 14, "down": [14, 18, 19, 236, 323, 327, 328, 352, 361], "tilt": 14, "slant": 14, "numofpanel": 14, "polarizationslantangl": 14, "directionalgainmax": 14, "gain": [14, 58, 77, 120, 211, 285, 287, 288, 289, 291, 294, 349], "dbi": 14, "neither": [14, 19, 132, 138, 203, 205, 236, 246, 247, 254, 265, 302, 332, 333, 335, 353], "nor": [14, 19, 132, 138, 236, 246, 247], "instanc": [14, 17, 19, 236, 278, 305, 307, 309, 345, 346], "snippet": [14, 19, 29, 198, 278, 285, 318, 341, 343, 344, 345, 346, 347], "orienat": 14, "num": [14, 18, 19, 85, 87, 202, 205, 206, 263, 264, 294, 311, 328, 342, 345, 346, 349, 354], "here": [14, 57, 76, 119, 152, 159, 210, 236, 269, 270, 275, 276, 279, 285, 295, 298, 312, 318, 321, 332, 355, 363], "psa": 14, "antarrayobj": 14, "hertzina": [14, 16], "90": [14, 267, 278, 285, 287, 288, 289, 291, 294, 301, 302, 309, 314, 327, 330, 331, 332, 333, 334, 335, 351, 352], "look": [14, 19, 301, 309], "fc": [14, 15, 18, 329, 336, 341, 343, 344, 347], "antenna_3gpp_38901": [14, 16], "3gpp_38901": 14, "antenaa": 14, "antenna_hertziandipol": [14, 16], "antenna_lineardipol": [14, 16], "usual": 14, "ge_max": 14, "carrierfrequ": [14, 15, 16, 19, 29, 238, 267, 285, 287, 289, 291, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "initi": [14, 17, 19, 33, 39, 46, 85, 103, 104, 132, 138, 184, 198, 206, 215, 216, 217, 218, 219, 220, 229, 233, 243, 245, 246, 247, 249, 250, 262, 263, 266, 271, 272, 273, 342, 345, 346, 353, 355, 360, 361, 362, 363], "lamda": [14, 275, 285, 287, 289, 291, 294, 302, 327, 330, 331, 332, 333, 334, 335, 337, 351, 352], "fieldtheta": 14, "fieldphi": 14, "field": [14, 39, 46, 85, 87, 88, 90, 91, 94, 103, 104, 181, 182, 184, 229, 233, 262, 263, 264, 266, 271, 351], "cluster": [15, 16, 18, 19, 341, 343, 344, 347], "coeffici": [15, 16, 18, 269, 270, 331, 332, 333, 350, 355], "timedomain": 15, "3gppts38901_channelgener": 15, "terrain": [15, 16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 335, 337, 342, 345, 346, 347, 349, 350, 351, 352, 354, 355, 361], "txlocat": 15, "rxlocat": 15, "txvelocityvector": 15, "rxvelocityvector": 15, "scenario": [15, 18, 19, 28, 202, 203, 204, 268, 275, 276, 279, 280, 302, 305, 310, 312, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 347, 349, 350, 351, 352, 355, 361], "locat": [15, 17, 18, 19, 57, 76, 85, 86, 102, 103, 104, 119, 189, 196, 197, 198, 199, 200, 206, 207, 210, 226, 229, 233, 235, 236, 237, 238, 251, 275, 276, 291, 294, 302, 309, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 349, 351, 352, 354, 361], "tx": [15, 18, 19, 196, 282, 285, 287, 288, 290, 292, 294, 295, 302, 311, 312, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 345, 346, 347, 350, 352, 354, 355, 361], "typic": [15, 18, 19, 235, 236, 237, 268, 269, 270, 271, 278, 282, 283, 296, 302, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 338, 341, 343, 344, 351, 352, 354], "station": [15, 16, 17, 18, 19, 29, 87, 227, 236, 250, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 282, 283, 285, 294, 296, 305, 306, 307, 323, 325, 326, 328, 330, 331, 332, 334, 335, 337, 341, 342, 343, 344, 345, 347, 349, 352, 355, 361], "bss": [15, 17, 18, 19, 65, 84, 107, 127, 165, 168, 242, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "dl": [15, 19, 39, 46, 184, 196, 198, 206, 227, 231, 236, 243, 248, 251, 254, 262, 266, 275, 328, 330, 355, 364], "dimension": [15, 18, 29, 188, 273, 278, 312, 318, 342], "numsnapshot": [15, 18, 22, 311, 347, 351, 354], "numb": [15, 18], "snapshot": [15, 16, 17, 18, 19, 327, 341, 342, 343, 344, 346, 347, 348, 349, 350, 352, 355], "rx": [15, 18, 19, 29, 273, 285, 287, 288, 289, 291, 294, 302, 311, 312, 321, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 345, 346, 347, 350, 352, 354, 355, 361], "equip": [15, 16, 17, 19, 27, 91, 108, 132, 138, 144, 147, 148, 149, 175, 176, 181, 182, 196, 198, 215, 216, 246, 247, 250, 252, 253, 255, 256, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 285, 296, 312, 323, 327, 332, 334, 335, 341, 342, 343, 344, 345, 347, 349, 352], "numu": [15, 18, 19, 22, 278, 279, 291, 294, 301, 304, 305, 306, 307, 308, 310, 311, 312, 321, 325, 326, 327, 347, 351, 352, 354], "veloc": [15, 17, 18, 19], "subcarrierspac": [15, 39, 46, 202, 203, 204, 205, 228, 231, 261, 265, 267, 302, 327, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 347, 349, 351], "15000": [15, 39, 46, 184, 228, 231, 236, 238, 262, 266, 267, 278, 285, 287, 288, 289, 291, 294, 301, 302, 311, 312, 326, 327, 332, 333, 335, 336, 337, 351, 352], "fftsize": [15, 267, 273, 285, 287, 288, 289, 291, 294, 311, 312, 325, 326, 327, 336, 341, 343, 344, 347, 352, 354], "128": [15, 228, 314, 318, 332, 336, 339, 351], "normalizechannel": [15, 311, 312, 323, 325, 326, 328, 352, 354], "fft": [15, 29, 32, 33, 193, 195, 267, 268, 273, 285, 287, 288, 291, 294, 311, 312, 325, 326, 327, 328, 330, 331, 334, 336, 337, 341, 342, 343, 344, 347, 349, 351, 352, 354], "khz": [15, 29, 85, 103, 104, 189, 228, 229, 230, 231, 236, 238, 248, 249, 251, 267, 270, 271, 278, 301, 327, 330, 331, 332, 333, 334, 335, 341, 343, 344, 352], "ifft": [15, 273, 341, 342, 343, 344, 347, 349, 351], "respons": [15, 18, 19, 32, 85, 236, 269, 270, 271, 275, 276, 280, 283, 323, 330, 334, 337, 349, 350, 355, 361], "ignor": [15, 206, 244, 245, 266, 280, 294, 332, 341, 342, 346, 348, 349, 351], "passband": 15, "boolean": [15, 17, 18, 19, 39, 46, 88, 184, 189, 265, 269, 279, 281], "normal": [15, 18, 19, 227, 235, 237, 267, 273, 285, 287, 288, 289, 291, 294, 301, 312, 321, 327, 331, 334, 336, 351, 352], "forc": [15, 19, 49, 72, 99, 115, 171, 174, 259, 269, 270, 271, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 348, 349, 351, 352, 354], "averag": [15, 18, 19, 269, 271, 318, 321, 353, 355, 361], "nfft": [15, 29, 202, 205, 228, 261, 267, 285, 287, 288, 289, 291, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 347, 349, 351, 352, 354], "accross": [15, 32, 279, 330, 331, 350, 355], "subcarri": [15, 29, 32, 33, 34, 35, 36, 37, 39, 46, 130, 131, 136, 137, 184, 202, 203, 204, 205, 215, 216, 218, 219, 231, 235, 237, 238, 256, 262, 265, 266, 267, 271, 273, 275, 276, 281, 285, 287, 289, 291, 294, 301, 311, 312, 314, 325, 326, 327, 330, 331, 332, 333, 334, 335, 336, 337, 341, 343, 344, 349, 350, 351, 352, 354, 355], "numcarrierfreq": 15, "instant": [15, 18, 19, 33, 204, 342, 345, 346, 349], "numbss": [15, 18, 19, 22, 65, 84, 86, 87, 88, 107, 127, 165, 168, 233, 242, 294, 301, 311, 312, 325, 326, 347, 351, 354], "numrxant": 15, "numtxant": 15, "studi": [15, 18, 19, 321, 350, 355, 361], "five": 16, "name": [16, 17, 18, 19, 22, 29, 85, 86, 87, 88, 264, 298, 307], "across": [16, 19, 28, 38, 65, 84, 95, 101, 107, 127, 162, 168, 198, 202, 203, 204, 205, 208, 234, 235, 237, 239, 252, 253, 255, 256, 269, 271, 275, 276, 279, 312, 328, 330, 331, 334, 342, 350, 355], "deploy": [16, 19, 268, 280, 321, 323, 330, 331, 334], "insid": [16, 19, 57, 76, 119, 152, 159, 210, 345, 346], "particular": [16, 19, 65, 84, 107, 127, 162, 168, 236, 239, 278, 282, 307], "parametergenear": 16, "necessari": [16, 18, 29, 204, 227, 236, 269, 270, 278, 318, 323, 342, 345, 346, 347, 348, 349, 351], "lsp": [16, 18, 19, 325, 326, 337, 341, 342, 343, 344, 345, 346, 347, 349], "ssp": [16, 18, 19, 325, 326, 337, 341, 342, 343, 344, 345, 346, 347, 349], "spread": [16, 18, 19, 28, 37, 135, 136, 137, 179, 218, 219, 222, 226, 234, 312, 323, 336, 341, 343, 344, 347, 350, 355], "angular": [16, 18, 19, 334, 341, 343, 344, 347, 350, 355], "path": [16, 18, 19, 193, 195, 202, 203, 204, 205, 236, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 352, 353, 354, 355, 365], "rai": [16, 18, 299], "departur": [16, 18, 19, 348, 355, 361], "channelgenear": 16, "found": [16, 19, 34, 36, 64, 83, 106, 126, 163, 167, 204, 235, 237, 240, 249, 289, 336], "parabol": [16, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 347, 349, 351, 352, 354], "dipol": [16, 342, 345, 346, 349], "3gpp_38_901": 16, "hertzian": 16, "displayrout": [16, 17, 327, 342, 345, 346, 347, 352], "walk": 16, "circular": [16, 57, 76, 102, 119, 207, 210, 227, 270, 342, 345, 346], "rout": [16, 19, 341, 342, 343, 344, 345, 347, 350, 355], "vehicl": [16, 346], "highwai": 16, "bslocat": [16, 18, 19, 302, 327, 330, 331, 332, 333, 334, 335, 341, 342, 343, 344, 345, 346, 347, 349], "isd": [16, 18, 19, 196, 198, 206, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "ueloc": [16, 18, 19, 302, 327, 330, 331, 332, 333, 334, 335, 341, 342, 343, 344, 345, 346, 347, 349], "uedistibut": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "ueheightdistribut": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 351, 352, 354], "bsantennaarrai": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "bsrout": [16, 19, 346], "clutterdens": [16, 19, 302, 341, 343, 344], "clutterheight": [16, 19, 302, 341, 343, 344, 348], "clutters": [16, 19, 341, 343, 344, 348], "correlationdistanceindoor": [16, 19], "correlationdistancelo": [16, 19], "correlationtypeindoor": [16, 19], "correlationtypelo": [16, 19], "enablespatialconsistencyindoor": [16, 19, 342, 345, 346, 349], "enablespatialconsistencylo": [16, 19, 327, 342, 345, 346, 352], "force3gppspatialconsistencyparamet": [16, 19, 327, 352], "forcelo": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 348, 349, 351, 352, 354], "heightofb": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "heightofroom": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 348, 351, 352, 354], "heightofu": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "indooruefract": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "layoutlength": [16, 19, 302, 330, 332, 333, 335, 337], "layouttyp": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "layoutwidth": [16, 19, 302, 330, 332, 333, 335, 337], "lengthofindoorobject": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "maxnumberoffloor": [16, 19, 330, 348], "memoryeffici": [16, 18, 19, 342, 345, 346, 349], "minnumberoffloor": [16, 19, 348], "minuebsdist": [16, 18, 19, 323, 328, 341, 343, 344], "numofb": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "numofsectorspersit": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "numofsnapshot": [16, 19], "numofu": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "radiusforcircularuedrop": [16, 19], "routetyp": [16, 19], "ueantennaarrai": [16, 18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "uedropmethod": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "uerout": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 347, 351, 352, 354], "widthofindoorobject": [16, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "hexagon": [16, 18, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 334, 337, 342, 345, 346, 347, 348, 349, 350, 351, 352, 354, 355, 361], "rectangular": [16, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "typeofmobl": [17, 346], "randomwalk": [17, 19, 327, 347, 352], "typical": 17, "static": [17, 269, 271, 330, 331, 334, 342, 345, 346, 347], "fall": [17, 280], "move": [17, 269, 271, 327, 342, 345, 346], "meter": [17, 18, 19, 198, 206, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 348, 351, 352, 354], "trajectori": [17, 342, 345], "anywher": [17, 19], "circumfer": [17, 342, 345], "circl": [17, 19, 206, 302, 332, 333, 334, 335, 342, 345, 346, 349, 355, 361], "start": [17, 32, 33, 57, 76, 88, 102, 119, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 198, 202, 204, 207, 209, 210, 215, 216, 217, 218, 219, 220, 227, 228, 230, 231, 233, 236, 246, 247, 254, 265, 267, 270, 273, 278, 285, 287, 289, 291, 294, 301, 311, 328, 345, 346, 353, 354, 359, 360, 361, 362], "deg": [17, 18], "kind": [17, 18], "option": [17, 33, 227, 235, 237, 244, 280, 285, 287, 289, 291, 294, 301, 323, 330, 331, 346, 351, 352], "optiona": [17, 346], "optionb": 17, "optionc": 17, "lane": 17, "width": [17, 18, 19, 206, 270, 273, 285, 287, 288, 289, 291, 294, 301, 302, 305, 309, 311, 312, 314, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 348, 349, 351, 352, 354, 365], "postivi": 17, "nodeorient": 17, "timeinst": [17, 18, 19, 327, 342, 345, 346, 347, 352], "velocityvector": 17, "initloc": 17, "noderout": 17, "circularrout": 17, "dropvehicleshighwai": 17, "numnod": [17, 18], "minveloc": 17, "maxveloc": 17, "phimin": 17, "7853981633974483": [17, 327, 352], "phimax": 17, "randomizeorient": [17, 346], "decreas": [17, 19, 204, 308], "radiusmin": 17, "radiusmax": 17, "833": [17, 342, 345, 346], "isinitsnapshotlocationrandom": 17, "initangl": [17, 342, 345], "kmph": [17, 342, 345, 346], "initiat": 17, "snap": [17, 18, 19, 342], "shot": [17, 18, 19], "lanewidth": [17, 346], "numlan": [17, 346], "numvehicl": [17, 346], "vehicledroptyp": [17, 346], "correl": [18, 19, 204, 244, 245, 268, 273, 286, 290, 292, 293, 295, 351, 364], "displayclust": [18, 302, 311, 312, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 342, 346, 349, 351, 352, 354], "fetch": [18, 267, 285, 287, 288, 289, 291, 294, 327, 351, 352, 359, 362, 363], "through": [18, 19, 22, 64, 83, 86, 106, 126, 163, 167, 240, 268, 271, 279, 283, 294, 302, 312, 313, 318, 321, 325, 326, 329, 332, 333, 335, 338, 339, 349, 353, 355, 359, 360, 361, 362, 363, 365], "getchannel": [18, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354], "3gppts38901_parametergener": 18, "lo": [18, 19, 197, 204, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354], "phiaoa_lo": [18, 341, 342, 343, 344, 345, 346, 347, 349], "phiaod_lo": [18, 302, 334, 335, 341, 342, 343, 344, 345, 346, 347, 349], "thetaaoa_lo": [18, 341, 342, 343, 344, 345, 346, 347, 349], "thetaaod_lo": [18, 302, 334, 335, 341, 342, 343, 344, 345, 346, 347, 349], "shadow": [18, 312, 350, 355], "fade": [18, 19, 28, 268, 269, 270, 271, 275, 276, 280, 281, 283, 312, 323, 342, 350, 355], "shadowfad": [18, 341, 342, 343, 344, 345, 346, 347, 348, 349], "rician": [18, 350, 355], "kfactor": [18, 348], "delayspread": [18, 19, 311, 312, 326, 327, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352], "phiaod_spread": [18, 341, 342, 343, 344, 345, 346, 347, 348, 349], "phiaoa_spread": [18, 341, 342, 343, 344, 345, 346, 347, 348, 349], "thetaaod_spread": [18, 341, 342, 343, 344, 345, 346, 347, 348, 349], "thetaaoa_spread": [18, 341, 342, 343, 344, 345, 346, 347, 348, 349], "pathloss": [18, 332, 341, 342, 343, 344, 345, 346, 347, 348, 349], "casa": 18, "casd": 18, "czsa": 18, "pathdelai": [18, 341, 342, 343, 344, 345, 346, 347, 349], "pathpow": [18, 341, 342, 343, 344, 345, 346, 347, 349], "phiaoa_mn": [18, 341, 342, 343, 344, 345, 346, 347, 349], "phiaod_mn": [18, 341, 342, 343, 344, 345, 346, 347, 349], "thetaaoa_mn": [18, 341, 342, 343, 344, 345, 346, 347, 349], "thetaaod_mn": [18, 341, 342, 343, 344, 345, 346, 347, 349], "cross": [18, 29, 364], "xprnm": 18, "locb": 18, "locu": [18, 206, 334, 355, 361], "d3d": [18, 348], "d2d": [18, 299, 332, 346, 348, 364], "hallvolum": [18, 19], "surfacearea": [18, 19], "avgbuildingheight": [18, 19], "avgstreetwidth": [18, 19], "bsvelocityvector": [18, 19, 341, 342, 343, 344, 345, 346, 347, 349], "bsorient": [18, 19, 341, 342, 343, 344, 345, 346, 347, 349], "uevelocityvector": [18, 341, 342, 343, 344, 345, 346, 347, 349], "ueorient": [18, 341, 342, 343, 344, 345, 346, 347, 349], "enablespatialconsistencyforlsp": [18, 19, 327, 342, 345, 346, 352], "enablespatialconsistencyforssp": [18, 19, 327, 342, 345, 346, 352], "enablespatialconsistencyforinitialphas": [18, 19, 327, 342, 345, 346, 352], "equpi": 18, "volum": [18, 19], "hall": [18, 19, 330], "cubic": [18, 19, 275, 276, 294, 302, 326, 332, 333, 335, 337], "indoor": [18, 19, 199, 284, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 334, 337, 341, 342, 350, 351, 352, 354, 355, 361], "area": [18, 19, 269, 342, 361], "squar": [18, 19, 200, 206, 268, 269, 270, 271, 330, 331, 332, 333, 335, 351], "vaild": [18, 19], "height": [18, 19, 196, 197, 198, 199, 202, 204, 205, 206, 273, 275, 285, 289, 291, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "street": [18, 19], "compuat": [18, 19], "numofcarrierfrequ": 18, "ram": [18, 19, 301], "slow": [18, 19], "execut": [18, 19, 64, 83, 87, 88, 90, 106, 126, 163, 167, 181, 182, 240, 298, 359, 360, 362, 363], "spatial": [18, 19, 281, 283, 296, 299, 325, 326, 334, 337, 350, 355, 361, 364], "among": [18, 19, 188, 279, 306], "linkstatevec": [18, 341, 342, 343, 344, 345, 346, 347, 349], "nlo": [18, 19, 198, 330, 331, 332, 334, 341, 342, 343, 344, 345, 346, 347], "nanosec": 18, "mukdb": [18, 19, 330, 331], "varianc": [18, 19, 330, 331, 334], "sigmakdb": [18, 19, 330, 331], "angularspreadaod": [18, 19, 326], "defualt": 18, "angularspreadaoa": [18, 19, 326], "mulog10": [18, 19, 302], "absolut": [18, 19], "subtract": [18, 19], "tap": [18, 19, 32], "impuls": [18, 19, 32, 271, 341, 343, 344, 347, 349], "tdl": [18, 19], "cdl": [18, 19, 312, 313, 321, 334, 354, 355, 361], "sigmalog10": [18, 19, 302], "enableabsolutedelai": [18, 19, 327, 352], "enableabsoluteangl": [18, 19], "sight": [18, 19, 302, 332, 350, 355], "numclust": [18, 341, 343, 344, 347], "zeta": [18, 198, 206, 336], "deviat": [18, 19, 318], "cd": 18, "nano": [18, 19], "Of": [18, 254, 265, 345, 353, 361], "positon": 18, "sens": [18, 299], "under": [18, 29, 236, 278, 281, 307, 312, 318, 323, 341, 343, 344, 347], "indic": [18, 19, 29, 32, 33, 39, 46, 85, 86, 88, 94, 102, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 184, 185, 188, 189, 206, 207, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 233, 236, 237, 238, 246, 247, 254, 262, 266, 269, 270, 271, 273, 275, 276, 278, 279, 280, 281, 291, 293, 295, 318, 326, 328, 337, 342, 346, 348, 349, 351], "rayindex": [18, 302, 311, 312, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 342, 346, 349, 351, 352, 354], "carrierindex": [18, 342, 346, 349], "radiustx": [18, 342, 346, 349], "radiusrx": [18, 342, 346, 349], "displayplot": [18, 19, 204, 206, 327, 342, 346, 349], "third": [18, 38, 253, 255, 325, 326, 337], "boolen": [18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "applypathloss": [18, 341, 342, 343, 344, 345, 346, 347, 349], "scm": [18, 19], "uma": [18, 19, 327, 331, 337, 341, 342, 347, 348, 349, 351], "umi": [18, 19, 332, 346, 348], "inh": [18, 19, 333, 344], "oo": [18, 19, 39, 46, 333, 344], "carrierfreq": [18, 19, 39, 45, 46, 184, 262, 266, 291, 294, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "numcarri": [18, 19, 347], "empti": [18, 19, 102, 207, 302, 330, 331, 332, 333, 334, 335, 345, 347], "simlayoutobj": [18, 19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "19": [18, 19, 278, 291, 301, 308, 309, 311, 314, 318, 330, 331, 332, 333, 334, 335, 337, 340, 342, 347, 351, 353, 365], "500": [18, 19, 285, 318, 327, 341, 342, 345, 346, 347, 349, 352], "35": [18, 19, 245, 289, 294, 301, 307, 309, 311, 314, 318, 326, 327, 330, 331, 332, 333, 334, 335, 340, 342, 345, 346, 347, 348, 349, 351], "topologi": [18, 19, 302, 311, 312, 325, 326, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354, 355, 361], "display2dtopologi": [18, 19, 302, 311, 312, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "paramgenobj": [18, 341, 342, 343, 344, 345, 346, 347, 349], "bstrack": [18, 19, 341, 342, 343, 344, 345, 346, 347, 349], "uetrack": [18, 341, 342, 343, 344, 345, 346, 347, 349], "linkstat": [18, 19, 327, 342, 345, 346, 348, 352], "now": [18, 285, 287, 288, 289, 291, 294, 301, 311, 312, 322, 325, 326, 332, 341, 342, 346, 348, 349, 354, 359, 360, 362, 363], "3gpptr38901_simlayout": 19, "deploi": [19, 312, 330, 331, 334, 350, 355, 361], "chosen": [19, 87, 206, 227, 230, 236, 270, 278, 305, 328], "getparametergener": [19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "orbitparamet": 19, "600": [19, 248, 251], "78539816": 19, "initsatelliteparamet": 19, "57079633": 19, "useinitueloc": [19, 346], "exponenti": [19, 322], "50": [19, 90, 91, 94, 181, 182, 267, 301, 302, 308, 309, 314, 318, 326, 330, 331, 332, 333, 334, 335, 337, 338, 340, 343, 344, 347, 348, 351], "probabl": [19, 65, 84, 107, 127, 162, 168, 239, 278, 283, 318, 321, 330, 331, 334, 350, 355, 361], "basic": [19, 286, 289, 291, 294, 295, 296, 313, 321, 355], "sector": [19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "intersit": [19, 196, 198, 206, 330, 331, 334], "neighbour": [19, 65, 84, 107, 127, 162, 168, 239, 269, 270, 271, 275, 351], "site": [19, 289, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 333, 334, 335, 337, 341, 342, 343, 344, 346, 347, 348, 349, 350, 351, 352, 354, 355, 361], "placement": 19, "uedistribut": 19, "distribut": [19, 65, 84, 95, 101, 107, 127, 162, 168, 208, 239, 278, 279, 298, 302, 304, 305, 306, 307, 309, 311, 312, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 350, 351, 352, 354, 355], "choosen": [19, 236, 304, 309], "edg": [19, 278], "outermost": 19, "rectangl": 19, "uniformli": [19, 330, 331, 334], "point": [19, 32, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 227, 230, 238, 240, 242, 270, 295, 301, 336, 342, 355, 359, 360, 361, 362, 365], "row": [19, 26, 103, 104, 193, 195, 227, 228, 229, 231, 270, 302, 335, 337, 341, 343, 344], "orbit": 19, "satellit": 19, "altitud": 19, "eccentr": 19, "inclin": 19, "earth": 19, "perfect": [19, 86, 193, 195, 270, 302, 313, 321, 322, 335], "highli": [19, 280, 361], "closer": 19, "interv": [19, 22, 87, 95, 103, 104, 204, 205, 227, 228, 229, 231, 235, 248, 249, 251, 253, 255, 256, 268, 269, 270, 272, 285, 332, 336, 342, 345, 346, 347, 348, 349], "plane": 19, "equitori": 19, "longitud": 19, "ascend": 19, "periapsi": 19, "anomali": 19, "equin": 19, "vertox": 19, "perige": 19, "accord": [19, 144, 147, 181, 182, 227, 233, 328], "pick": [19, 238], "manual": [19, 285, 287, 288, 289, 291, 294], "gaussian": [19, 21, 32, 318], "hotspot": 19, "factori": [19, 330, 332, 341, 344, 350, 355, 361], "rural": [19, 350, 355, 361], "macro": [19, 331, 347, 350, 355, 361], "rma": [19, 334, 345, 348], "urban": [19, 331, 334, 342, 347, 355, 361], "micro": [19, 355, 361], "open": [19, 350, 355, 359, 360, 361, 362, 363], "offic": [19, 350, 355, 361], "mix": 19, "mo": 19, "clutter": [19, 341, 343, 344], "inf": [19, 302, 330, 335, 341, 343, 344], "sl": [19, 188, 235, 253, 256, 341, 343, 344], "sh": [19, 302, 311, 330, 335, 354, 359, 360, 362], "dens": [19, 280, 302, 314, 318, 323, 330, 331, 332, 333, 334, 335, 350, 355, 361], "hh": 19, "caputur": 19, "entri": [19, 227, 230, 270], "unexpect": [19, 254, 332, 341, 342, 346, 348, 349], "turn": [19, 279, 318, 365], "lie": [19, 236, 348], "close": [19, 32, 196, 305, 359, 362, 363], "fraction": [19, 281, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "room": [19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "ceil": [19, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 353, 354], "minval": [19, 327], "maxval": 19, "depend": [19, 32, 39, 46, 86, 87, 94, 102, 132, 138, 181, 184, 206, 207, 236, 238, 246, 247, 262, 266, 268, 270, 272, 278, 281, 302, 307, 334, 335, 361], "floor": [19, 204, 285, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 351, 352, 353, 354], "invok": [19, 254, 264], "is3gppbaselin": 19, "necessarili": 19, "restrict": [19, 236, 267], "li": [19, 330, 331], "rightarrow": 19, "supportedterrain": 19, "doe": [19, 39, 46, 58, 77, 120, 134, 184, 211, 217, 227, 236, 262, 266, 269, 271, 278, 304, 305, 306, 307, 308, 309], "belong": [19, 24, 87, 101, 102, 207, 208, 227, 236, 244, 245, 253, 254, 255, 256, 295, 318], "come": [19, 341, 343, 344, 347, 363], "inter": [19, 22, 65, 84, 107, 127, 162, 168, 195, 239, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "antnennaarrai": 19, "center": [19, 294, 329, 342, 345, 346, 348, 349], "speicifi": 19, "geometr": 19, "By": [19, 87, 88, 130, 131, 132, 134, 136, 137, 138, 139, 181, 182, 197, 203, 204, 215, 216, 217, 218, 219, 220, 246, 247, 268, 269, 270, 271, 275, 276, 280, 281, 285, 332, 334, 335], "percentag": [19, 278, 280], "effic": [19, 294], "mode": [19, 29, 285, 287, 288, 289, 291, 294, 326, 337], "outdoor": [19, 350, 355, 361], "uepoints": 19, "facecolor": [19, 301, 345], "royalblu": [19, 302, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 345, 346], "isequalaspectratio": [19, 302, 330, 331, 332, 333, 334, 335], "displaylinkst": 19, "refb": [19, 331, 343, 344, 348], "displaysectorlabel": 19, "abl": [19, 203, 301, 359, 360, 362], "adjust": [19, 57, 76, 119, 152, 159, 210, 265, 268, 269, 270, 271, 280, 281, 283], "transpar": [19, 289, 330, 365], "background": 19, "aspect": [19, 280, 281, 285, 287, 289, 291, 294, 311, 312, 327, 328, 330, 331, 342, 349, 351, 352], "wrt": [19, 197, 206, 273], "diplai": 19, "rest": [19, 264, 322, 349], "bsonli": 19, "ueonli": 19, "label": [19, 273, 285, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 318, 322, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 353, 354, 365], "0000000000000001e": 19, "07": [19, 301, 304, 318, 365], "seen": [19, 29, 32], "60": [19, 230, 236, 238, 245, 267, 278, 285, 287, 288, 289, 291, 301, 302, 304, 305, 308, 309, 314, 318, 326, 332, 333, 334, 340, 342, 345, 349], "09329365": 19, "2794876": 19, "45": [19, 227, 230, 255, 256, 270, 278, 294, 304, 309, 311, 314, 318, 326, 332, 333, 334, 340], "hexagonallayout": 19, "bsheight": 19, "intersitedist": 19, "numsectorspersit": 19, "rectangularlayout": 19, "numsit": [19, 345], "numsectorpersit": 19, "rectangulardrop": 19, "uedropdistribut": 19, "circulardrop": 19, "ueheight": 19, "hexagonaldrop": 19, "white": [21, 302, 318, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 337], "addcfo": 21, "n0": [21, 351], "spectral": [21, 203, 204, 268, 280, 281, 283, 294, 309, 318], "noisi": [21, 283, 318, 365], "isfrequencydomain": [22, 311, 325, 326, 351, 354], "enableintertxinterfer": [22, 311, 325, 326, 351, 354], "memoryconsumptionlevel": [22, 311, 325, 326, 351, 354], "beamform": [22, 29, 186, 189, 275, 276, 283, 299, 302, 313, 321, 323, 325, 326, 327, 328, 332, 333, 335, 349, 352, 355, 361], "h": [22, 29, 32, 193, 195, 198, 202, 203, 204, 205, 228, 275, 311, 326, 330, 331, 337, 361], "multicel": [22, 341, 343, 344], "reperesent": 22, "matric": [22, 275, 276, 325, 326, 337], "interfer": [22, 65, 84, 107, 127, 162, 168, 203, 204, 239, 269, 270, 271, 275, 276, 280, 281, 283, 296, 299, 302, 323, 332, 333, 334, 335, 336, 364], "speed": [22, 199, 332, 336, 342, 345, 346, 361], "fastest": [22, 195], "most": [22, 39, 46, 184, 238, 262, 266, 279, 289, 295, 296, 302, 304, 309, 312, 330, 331, 332, 333, 334, 335, 349, 351], "intens": 22, "slowest": 22, "numfrequ": [22, 311, 351, 354], "numsymbol": [22, 48, 60, 71, 79, 86, 95, 98, 114, 122, 170, 173, 189, 193, 195, 231, 232, 235, 249, 258, 263, 264, 267, 270, 279, 283, 294, 301, 311, 323, 325, 326, 327, 351, 352, 354], "numsampl": [22, 204, 205, 273, 301, 311, 351, 354], "numfftpoint": [22, 311, 351, 354], "numrxantenna": [22, 86, 275, 311, 347, 351, 354], "numtxantenna": [22, 311, 347, 351, 354], "onto": [22, 85, 131, 137, 139, 204, 215, 216, 217, 218, 219, 220, 230, 232, 353], "inconsist": [22, 34, 36, 95, 228, 231, 235, 248, 249, 251, 255, 256, 269, 312], "pbchinterleav": [23, 25, 184], "pbchdeinterleav": [23, 25], "subblock_interleav": [23, 28, 56, 59, 75, 78, 118, 121, 150, 154, 157, 158, 160, 184, 185, 188, 189, 212], "subblock_deinterleav": [23, 28, 56, 59, 75, 78, 118, 121, 150, 154, 157, 158, 160, 184, 185, 188, 189, 212], "channelinterleav": [23, 26, 56, 58, 75, 77, 118, 120, 150, 153, 157, 158, 160, 184, 185, 188, 189, 211], "channeldeinterleav": [23, 26, 56, 58, 75, 77, 118, 120, 150, 153, 157, 158, 160, 184, 185, 188, 189, 211], "bitinterleav": [23, 24, 100, 101, 186, 188, 208], "bitdeinterleav": [23, 24, 100, 101, 186, 208], "matcher": [24, 26, 28, 58, 59, 77, 78, 88, 120, 121, 153, 154, 158, 185, 211, 212], "pf": [24, 101, 208], "re": [24, 101, 208, 227, 228, 231, 236, 284, 302, 323, 328, 330, 331, 332, 333, 334, 335, 361], "alter": [24, 65, 84, 101, 107, 127, 162, 168, 208, 239], "ensur": [24, 32, 101, 102, 207, 208, 268, 269, 270, 271, 275, 276, 278, 279, 280, 283, 285, 309, 312, 336], "fit": [24, 57, 76, 101, 102, 119, 152, 159, 207, 208, 210, 314, 318], "alloc": [24, 35, 37, 57, 76, 87, 88, 89, 90, 94, 101, 102, 103, 104, 119, 130, 131, 132, 134, 136, 137, 138, 139, 180, 181, 182, 188, 189, 207, 208, 210, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 232, 233, 236, 246, 247, 254, 264, 265, 270, 275, 278, 279, 283, 285, 291, 294, 299, 307, 308, 323, 351, 352, 353], "interleavedbit": 25, "numpbch": 25, "deinterleavedbit": 25, "triangular": 26, "isoscel": 26, "buffer": [26, 27, 57, 76, 87, 88, 90, 91, 102, 119, 181, 182, 207, 209, 210, 285, 287, 288, 289, 291, 294, 301], "constel": [26, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 290, 292, 293, 295, 321, 322, 326, 329, 336, 338, 339, 355, 361], "termin": [27, 359, 362, 363], "place": [27, 193, 195, 198, 206, 236, 351], "immedi": [27, 199], "sequenti": [27, 186, 279], "wait": 27, "alarm": 27, "rearrang": 28, "common": [28, 39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 202, 215, 216, 217, 218, 219, 220, 236, 246, 247, 262, 266, 268, 269, 270, 277, 278, 281, 304, 305, 306, 307, 308, 309, 313, 321, 328, 346, 351, 353], "sever": [28, 203, 204], "corrupt": [28, 203, 204], "sensit": [28, 301], "handl": [28, 204, 289, 330, 331, 341, 342, 343, 344, 345, 346, 347, 349], "burst": [28, 39, 46, 101, 184, 208, 214, 238, 262, 266, 272], "Such": [28, 87, 88, 181, 182, 346], "4g": 28, "assertionerror": [28, 59, 78, 121, 154, 158, 212], "complementari": [28, 59, 78, 121, 154, 158, 186, 212], "permut": [28, 59, 78, 121, 154, 158, 212], "dft": [29, 34, 35, 36, 37, 195, 205, 206, 330, 331, 351, 355, 361], "codebook": [29, 299, 337, 355, 361, 364], "28": [29, 87, 88, 94, 181, 182, 192, 194, 231, 244, 264, 278, 280, 301, 302, 304, 305, 314, 318, 330, 331, 332, 333, 334, 335, 340, 343, 347, 351], "214": [29, 87, 94, 186, 236, 280, 301, 314], "typeicodebook": [29, 30, 326, 337], "idealprecod": 29, "beam": [29, 39, 46, 196, 238, 243, 249, 275, 276, 283, 299, 330, 350, 355, 361, 364], "searchfre": [29, 30, 326, 337], "sf": [29, 136, 137, 218, 219, 336, 348], "pmi": [29, 364], "predefin": [29, 236], "full": [29, 364], "emploi": [29, 202, 268, 275, 276, 277, 279, 280, 332, 334], "n1": [29, 318], "atenna": 29, "n2": [29, 88], "thu": [29, 87, 88, 181, 182, 278, 306, 307, 328, 338], "pre": [29, 363], "multipli": [29, 32, 131, 134, 137, 138, 139, 216, 217, 219, 220, 247, 309], "w": [29, 206, 275, 311, 318, 352, 365], "transmisson": [29, 227], "oversampl": [29, 202, 205], "3gppts38214type1cb": 29, "mimoprocess": [29, 285, 287, 288, 289, 291, 294, 326, 327, 337, 351, 352], "codebooktyp": [29, 326, 337], "antennastructur": [29, 326, 337], "antennapolar": [29, 326, 337], "typei": [29, 326, 337], "singlepanel": [29, 326, 337], "multipanel": 29, "horizonat": [29, 342, 345, 346, 349], "addition": [29, 202, 280], "sinc": [29, 32, 35, 37, 227, 336], "numiter": [29, 196, 198, 206, 304, 305, 306, 307, 308, 309, 326, 337], "ideal": [29, 330, 331, 336, 337, 341, 342, 343, 344, 347, 349, 361], "svd": [29, 281, 313, 321, 326, 355, 361], "type1": 29, "nt": [29, 294, 302, 311, 312, 314, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 349, 351, 352, 354], "codebookmod": [29, 326, 337], "fd": [29, 103, 104, 228, 229, 337], "resouc": 29, "rb": [29, 33, 87, 189, 227, 230, 234, 235, 236, 237, 238, 245, 265, 266, 267, 270, 279, 285, 287, 288, 289, 291, 294, 311, 312, 325, 326, 327, 328, 330, 331, 334, 351, 352, 353, 354], "times32": 29, "band": [29, 186, 189, 198, 238, 262, 266, 267, 268, 270, 279, 283, 285, 287, 288, 291, 326, 327, 337, 350, 351, 352, 355, 361, 364], "patch": [29, 227, 236, 278, 285, 287, 288, 302, 304, 305, 306, 307, 308, 309, 323, 328, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 349], "mpatch": [29, 227, 236, 278, 302, 304, 305, 306, 307, 308, 309, 330, 331, 332, 333, 334, 335, 337], "mpl": [29, 227, 236, 278, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 343, 344, 347, 348, 353, 354], "numrb": [29, 35, 37, 85, 87, 88, 90, 91, 94, 103, 104, 129, 130, 131, 132, 135, 136, 137, 138, 139, 179, 181, 182, 189, 215, 216, 218, 219, 220, 222, 229, 231, 233, 238, 244, 245, 246, 247, 254, 262, 264, 266, 267, 271, 275, 276, 279, 283, 285, 287, 288, 291, 294, 301, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "bwpoffset": [29, 270, 294, 302, 311, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 352, 354], "txantstrutur": [29, 311, 312, 325, 326, 327, 352, 354], "rxantstrutur": [29, 311, 312, 325, 326, 327, 352, 354], "subband": 29, "subbands": [29, 326, 337], "prb": [29, 85, 103, 104, 130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 233, 246, 247, 270, 278, 326, 328, 337, 353], "numsubband": [29, 326, 337], "subbandscindic": [29, 326, 337], "vh": [29, 311, 325, 326, 337, 354], "linalg": [29, 294, 302, 311, 318, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 354], "hf": [29, 39, 46, 202, 203, 204, 205, 235, 237, 270, 272, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 354], "conj": [29, 311, 325, 326, 337, 354], "transpos": [29, 302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "combin": [29, 39, 46, 94, 103, 104, 184, 197, 203, 204, 228, 229, 231, 238, 262, 266, 267, 272, 311, 327, 329, 337, 338, 339, 352, 353, 354, 355, 361, 364], "newaxi": [29, 294, 302, 311, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 351, 352, 354], "axi": [29, 193, 195, 278, 294, 302, 305, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "xbeam": [29, 311, 325, 326, 354], "txgrid": [29, 294, 311, 323, 325, 326, 328, 354], "type1cb": [29, 326, 337], "numport": [29, 103, 104, 189, 229, 232, 233, 326, 337], "prod": [29, 302, 323, 326, 327, 328, 330, 332, 333, 335, 337, 348, 352], "type1precod": [29, 326, 337], "complex_": [29, 326, 337], "nsb": [29, 326, 337], "hk": [29, 193, 195, 302, 326, 335, 337], "s2": [29, 326, 337], "eig": [29, 326, 337], "nb": [29, 302, 326, 327, 330, 331, 332, 333, 334, 335, 352], "cbbeamformedgrid": 29, "sp": [29, 302, 330, 331, 332, 333, 334, 335, 337], "mode1": 29, "federico": 29, "penna": 29, "hongb": 29, "cheng": 29, "jungwon": 29, "lee": 29, "simplifi": 31, "broadband": 31, "characteris": 31, "furthermor": [31, 62, 81, 124, 164, 241, 301, 329, 330, 331, 334, 339, 341, 342, 343, 344, 345, 346, 347, 349, 359, 362, 363], "facilit": [31, 234, 269, 270, 271, 285, 327, 361], "prefix": [31, 32, 33, 267, 268, 273, 351], "sampl": [32, 33, 34, 35, 36, 37, 193, 195, 202, 204, 205, 260, 267, 268, 273, 286, 288, 289, 291, 294, 295, 318, 321, 336, 351, 361], "fft_size": [32, 33, 268], "l_min": 32, "cyclic_prefix_length": [32, 33, 268, 336], "represent": [32, 33, 39, 46, 184, 262, 266, 318, 349], "waveform": [32, 203, 204, 221, 299, 336, 364], "timechannel": 32, "pair": [32, 48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 203, 238, 258, 259, 262, 266, 267, 332], "y_b": 32, "ell": 32, "l_": [32, 64, 65, 83, 84, 106, 107, 126, 127, 162, 163, 165, 167, 168, 233, 239, 240, 242, 249, 254], "bar": [32, 33, 39, 46, 184, 249, 262, 265, 266, 291, 294, 309, 327, 351], "x_": 32, "w_b": 32, "quad": 32, "n_b": 32, "discret": [32, 33, 192, 202], "w_": 32, "cut": 32, "piec": 32, "throw": 32, "awai": [32, 327], "trail": 32, "fourier": [32, 192, 202, 312], "window": [32, 33, 289, 355, 359, 362], "shift": [32, 132, 138, 215, 216, 217, 218, 219, 220, 221, 227, 244, 246, 247, 252, 253, 254, 265, 270, 275, 276, 312, 323, 328, 351, 353], "j2": 32, "le": 32, "largest": [32, 273, 355], "lag": 32, "explicitli": 32, "step": [32, 196, 198, 203, 204, 206, 269, 270, 272, 301, 311, 312, 314, 321, 329, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 353, 359, 360, 361, 362, 363], "pilot": [32, 103, 104, 229, 233, 268, 269, 271, 276, 330, 331, 333, 334, 335], "interpol": [32, 202, 205, 269, 270, 271, 275, 276, 285, 287, 289, 291, 294, 302, 326, 327, 328, 332, 333, 334, 335, 337, 342, 349, 351, 352, 355, 361], "ofdmchannel": 32, "cir_to_time_channel": 32, "prepend": [32, 33], "num_ofdm_symbol": [32, 33], "nonneg": [32, 268], "cp": [33, 267, 268, 285, 287, 288, 289, 291, 294, 327, 351, 352, 355, 361], "_l": 33, "mu": [33, 63, 64, 65, 82, 83, 84, 85, 103, 104, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 194, 196, 198, 204, 206, 228, 229, 230, 231, 236, 240, 242, 248, 249, 251, 254, 265, 270, 271, 278, 304, 305, 306, 307, 308, 309, 323, 328], "n_": [33, 64, 65, 83, 84, 85, 103, 104, 106, 107, 126, 127, 163, 165, 167, 168, 189, 196, 198, 228, 229, 230, 231, 235, 236, 240, 242, 244, 245, 248, 249, 251, 252, 253, 254, 255, 256, 270, 271, 278, 285, 330, 331, 334], "mathrm": 33, "a_": 33, "left": [33, 238, 301, 309, 325, 326, 329, 337, 338, 339, 340], "k_0": 33, "right": [33, 298, 301, 329, 353], "delta": [33, 85, 103, 104, 189, 198, 206, 228, 229, 230, 231, 236, 238, 244, 245, 248, 249, 251, 254, 270, 271, 278, 330, 331, 334, 348, 351], "f": [33, 85, 103, 104, 189, 226, 228, 229, 230, 231, 235, 236, 237, 238, 248, 249, 251, 254, 265, 270, 271, 275, 278, 291, 294, 330, 331, 334, 336, 348, 351, 352], "t_": 33, "express": [33, 203, 236, 278, 298], "deriv": [33, 86, 280], "definit": [33, 336], "associ": [33, 227, 278, 298], "numerologi": [33, 230, 236, 238, 260, 267, 278, 323, 328], "durat": [33, 103, 104, 227, 229, 230, 233, 234, 236, 270, 278, 294, 311, 323, 328, 349, 354], "longer": [33, 196, 198, 206], "numsubcarri": [34, 35, 36, 37, 86, 202, 203, 204, 205, 228, 230, 231, 270, 281, 311, 314, 337], "fdm": [34, 36], "numset": [34, 35, 36, 37], "stream": [34, 35, 36, 37, 57, 76, 85, 119, 152, 159, 210, 263, 264, 281], "tranform": [34, 35, 36, 37], "ngroupptr": [35, 37], "nsampgroup": [35, 37], "so": [35, 37, 88, 130, 131, 132, 136, 137, 138, 139, 198, 215, 216, 218, 219, 220, 238, 246, 247, 264, 304, 309], "slot": [35, 37, 48, 49, 60, 71, 72, 79, 85, 87, 88, 90, 91, 94, 98, 99, 103, 104, 114, 115, 122, 130, 131, 132, 134, 136, 137, 138, 139, 170, 171, 173, 174, 181, 182, 189, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 234, 236, 246, 247, 248, 249, 251, 252, 253, 254, 258, 259, 265, 270, 271, 278, 279, 283, 294, 304, 305, 306, 307, 308, 309, 311, 312, 321, 323, 325, 326, 328, 330, 331, 334, 353, 354, 355, 361], "possvalu": [35, 37, 271], "self": [35, 37, 39, 46, 94, 95, 103, 104, 228, 229, 231, 244, 254, 279, 280, 289, 314], "__ngroupptr": [35, 37], "constitu": [38, 252, 253, 255, 256], "load": [38, 85, 103, 104, 189, 229, 230, 231, 232, 235, 236, 237, 238, 248, 251, 252, 253, 254, 255, 256, 264, 265, 266, 270, 271, 278, 279, 285, 287, 289, 291, 294, 301, 302, 311, 312, 313, 321, 323, 325, 326, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 351, 352, 354], "middl": [38, 252, 253, 255, 256, 325, 326, 337], "payloadgener": [38, 39, 46], "argc": 38, "dcityp": 38, "n_rb": [38, 238, 289, 294, 351, 352], "3gppts38211_dci": 38, "choic": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 228, 235, 236, 237, 238, 240, 242, 249, 262, 266, 269, 272, 278, 301, 304, 305, 306, 307, 308, 309, 311, 312, 318, 337, 351, 353], "choicebit": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "na": [39, 46, 49, 65, 72, 84, 99, 107, 115, 127, 162, 168, 171, 174, 239, 243, 259], "subcarrierspacingcommon": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "dmrstypeaposit": [39, 45, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 285, 287, 289, 291, 294, 311, 325, 326, 327, 351, 352, 354], "controlresourceset0": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "searchspace0": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "cellbar": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "intrafrequencyreselect": [39, 45, 46, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "ssbsubcarrieroffset": [39, 45, 46, 86, 184, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "ssbindex": [39, 45, 46, 63, 64, 65, 82, 83, 84, 86, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 235, 237, 240, 242, 249, 262, 266, 272, 285, 287, 289, 291, 294, 327, 351, 352], "nssbcandidatesinhrf": [39, 45, 46, 184, 235, 237, 249, 262, 266, 272, 285, 287, 289, 291, 294, 327, 351, 352], "ati": [39, 46, 289, 291, 351, 355, 361], "systemframenumb": [39, 45, 46, 184, 262, 265, 266, 285, 287, 289, 291, 294, 302, 327, 332, 333, 335, 351, 352], "mibgener": [39, 45, 46, 184], "dmrsposit": [39, 46], "cresourcesetzero": [39, 46], "searchspacezero": [39, 46], "hrfbit": [39, 45, 46, 184, 235, 237, 249, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "titl": [39, 46, 262, 266, 291, 294, 309, 348], "misnom": [39, 46, 262, 266], "52": [39, 46, 184, 238, 262, 266, 305, 314, 332, 333, 334, 340], "30000": [39, 46, 103, 104, 184, 228, 229, 231, 233, 261, 262, 266, 267, 301, 311, 312, 325, 327, 331, 334, 337, 351, 352, 354], "120000": [39, 46, 184, 262, 266, 330, 337], "240000": [39, 46, 184, 262, 266, 337], "sib1": [39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 215, 216, 217, 218, 219, 220, 246, 247, 262, 266, 351], "msg": [39, 46, 184, 262, 266], "si": [39, 46, 184, 194, 204, 236, 262, 266, 301, 351, 352], "typea": [39, 46, 184, 262, 266, 291, 294, 351], "dm": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 266, 271, 351], "pos2": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 294, 311, 325, 326, 354], "pos3": [39, 46, 85, 103, 104, 184, 229, 233, 262, 263, 264, 266, 271, 294, 311, 325, 326, 354], "controlresourceset": [39, 46, 184, 262, 266, 351], "crucial": [39, 46, 184, 196, 198, 206, 262, 266, 268, 269, 270, 271, 275, 276, 280, 285, 304, 305, 306, 307, 308, 309, 312, 342, 352], "reselect": [39, 46, 184, 262, 266, 351], "intra": [39, 46, 130, 131, 132, 134, 136, 137, 138, 139, 184, 215, 216, 217, 218, 219, 220, 246, 247, 262, 266, 351], "treat": [39, 46, 184, 262, 266, 351], "frame": [39, 46, 64, 65, 83, 84, 85, 103, 104, 106, 107, 126, 127, 132, 138, 163, 165, 167, 168, 184, 189, 228, 229, 230, 231, 235, 236, 237, 238, 240, 242, 246, 247, 248, 249, 251, 254, 260, 262, 265, 266, 267, 268, 270, 271, 272, 278, 286, 294, 295, 296, 301, 304, 305, 306, 308, 309, 323, 327, 328, 330, 331, 334, 345, 351, 352, 361], "1023": [39, 46, 132, 138, 184, 246, 247, 254, 262, 265, 266], "msb": [39, 46, 184, 262, 266, 351], "sfn": [39, 46, 65, 84, 107, 127, 162, 168, 184, 239, 262, 266, 351], "ie": [39, 46, 184, 254, 262, 266], "lsb": [39, 46, 184, 262, 266], "outsid": [39, 46, 184, 262, 266, 295, 332, 346, 348], "overal": [39, 46, 184, 262, 266, 268, 271, 279, 280, 281, 283, 285, 306, 323, 332, 334, 351], "fr1": [39, 46, 184, 238, 262, 266, 267], "fr2": [39, 46, 184, 238, 249, 262, 266, 267], "configsib1": [39, 46, 184, 262, 266, 351], "ss": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 238, 240, 242, 249, 255, 256, 262, 266, 272, 351], "clear": [39, 46, 184, 262, 266, 272, 285, 288, 289, 291, 294, 345], "cellid": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 240, 242, 269, 272, 291, 294, 351, 352], "1007": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 188, 237, 240, 242, 249, 269, 272], "candid": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 236, 240, 242, 249, 262, 266, 272, 278, 304, 305, 307, 308, 309, 310, 321, 328, 361], "upon": [39, 46, 102, 132, 181, 184, 207, 246, 262, 266, 269, 270, 272, 275, 276, 312], "monitor": [39, 46, 236, 262, 266, 270, 281, 283, 305, 306, 308, 328], "No": [39, 46, 64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 198, 206, 240, 242, 252, 253, 255, 256, 275, 289, 318, 322, 330, 331, 334, 357], "5ghz": [39, 46, 238], "notbar": [39, 46, 351], "notallow": [39, 46, 291, 351], "typeb": [39, 46, 351], "15khz": [39, 46, 238], "30khz": [39, 46], "120khz": [39, 46], "240khz": [39, 46], "100ghz": [39, 46, 238], "3ghz": [39, 46], "6ghz": [39, 46, 238], "22": [39, 46, 189, 236, 238, 278, 284, 309, 314, 318, 326, 327, 330, 331, 332, 333, 334, 335, 337, 340, 351, 365], "displayparamet": [39, 45, 46, 291, 294, 351], "mibextract": [39, 45, 46, 184], "payloadseq": [39, 46], "3gppts38211_mib": [39, 46], "similarli": [40, 195], "bpsk": [48, 49, 60, 71, 72, 79, 86, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 318, 322, 329, 338, 339, 364], "3db": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "maxlog": [48, 60, 71, 79, 86, 98, 114, 122, 170, 173, 185, 188, 258, 291, 294, 301, 318, 351, 352], "bipolar": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "demapmethod": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258, 294], "consttyp": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294, 336], "mordul": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 294], "scramblingid": [48, 60, 64, 65, 71, 79, 83, 84, 85, 98, 103, 104, 106, 107, 114, 122, 126, 127, 163, 165, 167, 168, 170, 173, 185, 189, 228, 229, 230, 232, 233, 240, 242, 248, 249, 258, 261, 263, 270, 271, 294, 311, 325, 326, 337, 354], "3gppts38211_csir": [48, 60, 71, 79, 98, 114, 122, 170, 173, 248, 258], "custom": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259, 309, 364, 365], "convers": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259], "keyvalu": [48, 49, 60, 71, 72, 79, 98, 99, 114, 115, 122, 170, 171, 173, 174, 258, 259], "complex128": [48, 60, 71, 79, 98, 114, 122, 170, 173, 258], "psk": [49, 72, 99, 115, 169, 171, 174, 257, 259, 318], "toolkit": [49, 72, 99, 115, 144, 147, 171, 174, 195, 196, 200, 205, 243, 259, 260, 267, 290, 292, 293, 295, 297, 298, 310, 313, 321, 350, 355, 364], "program": [49, 72, 99, 115, 171, 174, 259, 295, 348], "similar": [49, 72, 99, 102, 115, 141, 171, 174, 175, 176, 207, 259, 295, 335, 342, 351], "eas": [49, 72, 99, 115, 171, 174, 259, 364], "3gppts38211_map": [49, 72, 99, 115, 171, 174, 259], "upto": [49, 72, 99, 115, 171, 174, 259, 301], "even": [49, 72, 99, 115, 171, 174, 193, 195, 203, 204, 205, 259, 301, 330, 331, 332, 334, 338], "1600": [49, 72, 99, 115, 171, 174, 259], "put": [49, 72, 99, 115, 171, 174, 259, 298, 330, 331], "kei": [49, 72, 99, 115, 171, 174, 259, 278, 280, 281, 293, 295, 325, 326, 329, 337, 338, 354, 359, 362, 363, 365], "bitdeselect": [56, 57, 75, 76, 100, 102, 118, 119, 150, 152, 157, 159, 160, 184, 185, 186, 188, 189, 207, 210, 339], "reflect": [57, 76, 102, 119, 207, 210], "repetit": [57, 76, 102, 119, 207, 210, 265, 364], "wherea": [57, 76, 89, 102, 119, 207, 210, 236, 278], "quantiti": [57, 76, 85, 103, 104, 119, 152, 159, 210, 229, 233, 263, 271], "involv": [57, 76, 89, 119, 152, 159, 175, 176, 180, 181, 182, 203, 204, 210, 268, 269, 270, 271, 272, 280, 281, 312, 323, 329, 334, 335, 338, 339, 353], "choos": [57, 76, 119, 152, 159, 210, 236, 268, 278, 282, 307, 318, 328, 342, 345, 346, 349], "discard": [57, 76, 119, 152, 159, 210], "1st": [57, 76, 119, 152, 159, 189, 210, 326], "stage": [57, 76, 119, 152, 159, 189, 210], "term": [57, 76, 119, 152, 159, 188, 189, 210, 227, 236, 265, 278, 279, 281, 305, 307, 308, 328, 336, 342], "rm": [57, 76, 103, 104, 119, 152, 159, 210, 229, 233], "bug": [57, 76, 119, 152, 159, 210], "reach": [57, 76, 119, 152, 159, 210, 332, 334, 361], "mach": [57, 76, 119, 152, 159, 189, 210], "revers": [57, 76, 119, 152, 159, 210], "restor": [57, 76, 119, 152, 159, 210, 269, 270], "origin": [57, 76, 119, 139, 152, 159, 210, 220, 269, 270, 325, 326, 327, 328, 330, 331, 335, 337, 342, 345, 346], "modifi": [57, 76, 119, 152, 159, 210, 298], "drm": [57, 76, 119, 152, 159, 210], "isocel": [58, 77, 120, 211], "triangl": [58, 77, 120, 211], "temporari": [62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 175, 176, 185, 236, 240, 241, 242, 271, 278], "intend": [62, 81, 124, 164, 241], "unicast": [62, 81, 124, 164, 241], "multicast": [62, 81, 124, 164, 241], "distinguish": [62, 81, 87, 124, 164, 241], "3gppts38212_rnti": [62, 81, 124, 164, 241], "invers": [62, 64, 65, 81, 83, 84, 102, 106, 107, 124, 126, 127, 144, 147, 162, 163, 164, 167, 168, 207, 239, 240, 241], "unmask": [62, 81, 124, 164, 241], "dcibit": [62, 81, 124, 164, 185, 241, 323, 328], "11548": [62, 81, 124, 164, 241], "dcirnti": [62, 81, 124, 164, 185, 241], "65519": [62, 64, 65, 81, 83, 84, 85, 86, 106, 107, 124, 126, 127, 163, 164, 165, 167, 168, 185, 236, 240, 241, 242, 271, 278, 304, 305, 306, 307, 308, 309, 328], "lmax": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 238, 240, 242, 249, 272], "c_init": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 240, 242, 250], "nid": [63, 64, 65, 82, 83, 84, 85, 86, 105, 106, 107, 125, 126, 127, 129, 132, 135, 138, 150, 163, 165, 166, 167, 168, 175, 176, 179, 184, 185, 186, 188, 189, 215, 216, 217, 218, 219, 220, 240, 242, 246, 247, 249, 271, 272, 294, 311, 323, 325, 326, 328, 353, 354], "q": [63, 64, 65, 82, 83, 84, 105, 106, 107, 125, 126, 127, 150, 163, 165, 166, 167, 168, 184, 185, 186, 188, 189, 240, 242, 294, 318, 361], "THe": [64, 83, 106, 126, 163, 167, 227, 235, 237, 240, 270, 341, 343, 344], "simpli": [64, 83, 106, 126, 163, 167, 240], "itself": [64, 83, 106, 126, 163, 167, 240, 272, 278, 359, 362, 363, 365], "bi": [64, 83, 106, 126, 163, 167, 186, 189, 240, 327, 352], "471": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "decrambl": [64, 83, 106, 126, 163, 167, 240], "pbchdescr": [64, 83, 106, 126, 163, 167, 240], "descrbit": [64, 83, 106, 126, 163, 167, 240, 311, 325, 354], "scrbit": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242], "1051": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "18548": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "1151": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "cbindex": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "39742": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "pbchscr": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 184, 240, 242], "seed": [64, 65, 83, 84, 106, 107, 126, 127, 162, 163, 165, 167, 168, 239, 240, 242, 245, 248, 249, 250, 251], "whom": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 196, 197, 198, 199, 240, 242, 249], "descrabl": [64, 83, 106, 126, 163, 167, 240], "n_cell_id": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "math": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 189, 196, 198, 233, 238, 240, 242, 264], "toward": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 196, 198, 206, 240, 242], "lesser": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242], "65535": [64, 65, 83, 84, 85, 86, 103, 104, 106, 107, 126, 127, 163, 165, 167, 168, 185, 189, 229, 232, 233, 240, 242, 249, 254, 263, 271], "datascramblingidentitypdsch": [64, 65, 83, 84, 85, 86, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 271], "ident": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 175, 176, 240, 242, 249, 256, 272, 285], "671": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "pd": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 249], "chdescrambl": [64, 83, 106, 126, 163, 167, 240], "pdcchdescrambl": [64, 83, 106, 126, 163, 167, 240], "nu": [64, 65, 83, 84, 106, 107, 126, 127, 163, 165, 167, 168, 240, 242, 244, 265], "consecut": [65, 84, 107, 127, 162, 168, 239, 254, 278, 279], "occurr": [65, 84, 107, 127, 162, 168, 239, 298], "xor": [65, 84, 107, 127, 162, 168, 239], "ed": [65, 84, 107, 127, 162, 168, 239, 356, 361], "impact": [65, 84, 107, 127, 162, 168, 239, 285, 306, 310, 321, 323, 361], "decorrel": [65, 84, 107, 127, 162, 168, 239], "abd": [65, 84, 107, 127, 162, 168, 239], "comment": [65, 84, 107, 127, 162, 168, 239, 318], "aka": [65, 84, 107, 127, 162, 168, 239], "nd": [65, 84, 107, 127, 162, 168, 239], "scambl": [65, 84, 107, 127, 162, 168, 239], "psch": [65, 84, 107, 127, 162, 168, 239], "affect": [65, 84, 107, 127, 162, 168, 239, 334], "3gppts38211_scr": [65, 84, 107, 127, 165, 168, 242], "just": [65, 84, 107, 127, 165, 168, 242, 285, 287, 288, 289, 291, 294], "anoth": [65, 84, 107, 127, 165, 168, 242, 278, 289, 318, 342], "ch": [65, 84, 107, 127, 165, 168, 242, 249], "scramber": [65, 84, 107, 127, 165, 168, 242], "pdschlowerphi": [85, 186, 294, 301, 311, 312, 325, 326, 354], "pdschmappingtyp": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "configurationtyp": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "maxlength": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "dmrsadditionalposit": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "l0": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "ld": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "l1": [85, 103, 104, 229, 233, 263, 264, 271, 294, 311, 325, 326, 354], "3gppts38211pdsch": [85, 86, 95, 186], "len1": [85, 103, 104, 229, 263, 264, 271, 294, 311, 354], "len2": [85, 103, 104, 229, 233, 263, 264, 271, 325, 326], "pos0": [85, 103, 104, 229, 233, 263, 264, 271, 311, 354], "pos1": [85, 103, 104, 229, 263, 264, 271, 325, 326], "l_0": [85, 103, 104, 228, 229, 254, 263, 264, 271], "l_d": [85, 103, 104, 229, 233, 263, 264, 271], "l_1": [85, 103, 104, 228, 229, 263, 264, 271], "bits1": 85, "occupi": [85, 87, 103, 104, 227, 228, 229, 230, 231, 233, 234, 278, 301, 323, 328, 330, 331, 334, 353], "port": [85, 87, 88, 94, 102, 103, 104, 181, 182, 207, 228, 229, 233, 254, 263, 264, 265, 276, 294, 365], "slotnumb": [85, 103, 104, 129, 132, 135, 138, 179, 189, 215, 216, 217, 218, 219, 220, 228, 229, 230, 231, 232, 233, 236, 246, 247, 248, 249, 251, 261, 270, 271, 278, 294, 304, 305, 306, 307, 308, 309, 311, 312, 323, 325, 326, 328, 330, 331, 334, 337, 353, 354], "nscid": [85, 103, 104, 229, 233, 249, 263, 271, 294, 311, 325, 326, 354], "\ud835\udc5b": [85, 103, 104, 229, 233, 263, 271], "scid": [85, 103, 104, 229, 233, 249, 263, 271], "pdschstartsymbol": [85, 233, 264, 271], "bits2": [85, 294, 311, 325, 326, 354], "phy": [85, 86, 87, 88, 186, 189, 263, 264, 283, 321, 361], "rmdmrspdsch": [85, 103, 104, 229, 233], "gather": 85, "resourcemap": [85, 103, 104, 130, 131, 134, 136, 137, 139, 215, 216, 217, 218, 219, 220, 227, 228, 229, 230, 231, 232, 233, 235, 236, 237, 238, 269, 285, 287, 288, 289, 291, 294, 302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352], "pdschindic": [85, 86, 294, 311, 325, 354], "store": [85, 196, 197, 205, 294, 312], "displaydmrsgrid": [85, 186, 294, 311, 354], "displayresourcegrid": [85, 103, 104, 186, 226, 228, 229, 231, 233, 294, 311, 330, 331, 334, 354], "portindex": [85, 228], "pdschdecoderlowerphi": [86, 186, 294, 301, 311, 312, 325, 326, 354], "ischannelperfect": [86, 311, 325, 353, 354], "isequ": [86, 311, 325, 354], "necessit": 86, "channelestim": [86, 326], "rxgrid": [86, 269, 271, 275, 276, 291, 294, 302, 311, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 337, 351, 354], "numrx": [86, 301], "portindic": 86, "subcarrierindic": [86, 337], "symbolsindic": 86, "numtb": [86, 87, 88, 90, 91, 181, 182, 264, 294, 301, 311, 325, 326, 354], "constellationtyp": 86, "uncodedbit": [86, 326], "pdschupperphi": [87, 186, 294, 301, 311, 312, 325, 326, 354], "symbolsperslot": [87, 88, 90, 91, 94, 181, 182, 294, 301, 311, 325, 326, 354], "numlay": [87, 88, 90, 91, 94, 95, 100, 102, 181, 182, 186, 207, 209, 294, 301, 311, 325, 326, 339, 354], "scalingfield": [87, 88, 90, 91, 94, 181, 182, 264, 294, 301, 311, 325, 326, 354], "additionaloverhead": [87, 88, 90, 91, 94, 181, 182, 264, 294, 301, 311, 325, 326, 354], "dmrsre": [87, 88, 90, 94, 181, 294, 301, 311, 325, 326, 354], "pdschtabl": [87, 88, 264, 294, 301, 311, 325, 326, 354], "pdschtable1": [87, 88, 94, 264, 280, 294, 311, 325, 326, 354], "scheme": [87, 88, 90, 91, 94, 181, 182, 264, 268, 275, 276, 280, 283, 318, 323, 364], "mc": [87, 88, 94, 181, 182, 264, 280, 281, 282, 323, 355, 361], "cqiindex": 87, "lowerbound": [87, 88, 264], "upperbound": [87, 88, 264], "pdschtable2": [87, 88, 94, 264, 280], "27": [87, 88, 264, 278, 280, 301, 314, 318, 328, 332, 333, 334, 340, 351], "pdschtable3": [87, 88, 94, 264, 280], "pdschtable4": [87, 88, 94, 264], "26": [87, 88, 264, 301, 314, 318, 332, 333, 334, 340, 345, 351, 353], "puschtable1": [87, 88, 94, 264], "puschtable2": [87, 88, 94, 264], "cqi": [87, 88, 94, 264, 275, 276, 364], "cqitable1": [87, 88, 94, 264], "cqitable2": [87, 88, 94, 264], "cqitable3": [87, 88, 94, 264], "cqitable4": [87, 88, 94, 264], "00": [87, 88, 90, 91, 94, 181, 182, 233, 264, 301, 318, 333], "01": [87, 88, 91, 94, 181, 182, 233, 264, 304, 318, 329, 333], "overhead": [87, 88, 90, 91, 94, 181, 182, 264], "lookup": [87, 88, 264], "progress": [87, 88, 90, 181, 182, 192, 194, 361], "tblock": [87, 108, 294, 311, 325, 326, 354], "transfer": [87, 88, 94, 181, 182, 264, 353], "rvid": [87, 88, 90, 100, 102, 181, 186, 207, 209, 294, 301, 311, 325, 326, 339, 354], "increment": [87, 102, 207, 330, 331, 364], "rvid1": [87, 91, 181, 182, 301], "rvid2": [87, 91, 301], "enablelbrm": [87, 88, 90, 91, 100, 102, 181, 182, 186, 207, 209, 294, 301, 311, 325, 326, 339, 354], "concept": [87, 88, 102, 175, 176, 181, 182, 207, 271, 349], "lbrm": [87, 88, 102, 181, 182, 207], "minim": [87, 88, 101, 181, 182, 208, 271, 280, 308], "enablelbrm1": 87, "enablelbrm2": 87, "numtargetbits1": [87, 294, 311, 325, 326, 354], "numtargetbits2": [87, 294, 311, 325, 326, 354], "tblen2": [87, 91, 294, 311, 325, 326, 354], "tblock2": [87, 91, 325, 326], "exist": [87, 88, 196, 197, 198, 199, 236, 264, 330, 331, 332, 333, 334, 335], "tblen1": [87, 91, 182, 294, 311, 325, 326, 354], "tblock1": [87, 91, 182, 294, 301, 311, 325, 326, 354], "pdschdecoderupperphi": [88, 186, 294, 301, 311, 312, 325, 326, 354], "symbolllr": 88, "numbertargetbit": [88, 294, 311, 354], "k_ldpc2": 88, "n_ldpc2": 88, "liftingfactor2": 88, "fillerindic": [88, 102, 207, 339], "fillerindices2": 88, "filler": [88, 102, 207], "were": [88, 301], "crccheckforcb": [88, 301, 311, 325, 326, 354], "crcchecktb": [88, 294, 301], "processes": [89, 180], "regard": [90, 181], "1000": [90, 181, 204, 205, 294, 304, 305, 307, 308, 309, 314, 327, 346, 348, 353], "symbolestim": [90, 181, 326], "pdschrxobj": 90, "pdschdecod": 90, "pdschrxbit": 90, "wherein": [91, 182], "block1": [91, 182], "block2": 91, "pdschtxobj": 91, "pdschtxbit": 91, "213176": [91, 182], "rom": 94, "tbsobj": 94, "mcs_cqiindex": 94, "mcs_cqitabl": 94, "amount": [94, 279, 352, 365], "written": [94, 298, 363], "3gppts38214pdsch": [94, 186], "modulation_ord": 94, "code_r": 94, "alloca": 94, "warn": [94, 205, 206, 228, 231, 238, 253, 255, 256, 280, 323, 328, 332, 338, 341, 342, 345, 346, 348, 349, 351, 352, 365], "numr": 94, "send": [94, 318, 356], "__numrewithinrb": 94, "exceed": [94, 237, 345], "156": [94, 314], "layermapp": [95, 186], "leq": [95, 254, 339], "codeword1": 95, "_1": 95, "codeword2": 95, "_2": 95, "repect": 95, "numsymbolperlay": 95, "__numcodeword": 95, "numlayerpercw": 95, "layerdemapp": [95, 186, 294, 326], "symbo": 95, "__numlayers1": 95, "__numlayers2": 95, "numsymbolsperlay": [95, 271], "k0": [100, 102, 186, 207, 209], "numcodedbit": [100, 102, 186, 207, 209, 339], "nldpc": [100, 102, 186, 207], "damag": [101, 208], "caus": [101, 208, 328, 338], "poorli": [101, 208], "local": [101, 196, 197, 198, 203, 204, 206, 208, 268, 329, 353, 355, 361], "erron": [101, 184, 185, 208], "numldpcout": [102, 209], "numgroup": [102, 209], "numcbingroup": [102, 209], "numbitingroup": [102, 209], "write": [102, 207], "bitselectionldpc": [102, 207], "atleast": [102, 198, 207, 270], "num_ldpc": [102, 207], "next": [102, 207, 228, 361], "obtain": [102, 203, 204, 207, 231, 269, 270, 318, 332, 341, 342, 343, 344, 345, 347, 349], "deselect": [102, 181, 207, 339], "fillerbit": [102, 207], "redundaci": [102, 207], "bitdeselectionldpc": [102, 207], "betadmr": [103, 104, 229, 233, 263, 294, 311, 325, 326, 354], "13544": [103, 104, 229, 233], "resourcegrid": [103, 104, 189, 229, 233, 270, 294, 311, 325, 326, 354], "fig0": [103, 104, 228, 229, 233], "ax0": [103, 104, 228, 229, 233], "cdm": [103, 104, 228, 229, 233, 249], "fig1": [103, 104, 228, 229, 233, 285], "ax1": [103, 104, 228, 229, 233, 285, 327], "displaycdmpattern": [103, 104, 186, 226, 228, 229, 233, 337], "symol": [103, 104, 229, 233], "doubl": [103, 104, 229, 233, 307], "3gppts38211_pdschdmr": [103, 104, 229, 233], "nrofport": [103, 104, 228, 229, 231, 261, 275, 337], "cdmtype": [103, 104, 228, 229, 231, 261, 337], "3gppts38211_csirsrm": [103, 104, 228, 229], "cdm21": [103, 104, 228, 229], "numresourceblock": [103, 104, 189, 229, 232, 233], "enter": [103, 104, 229, 233, 271], "maxport": [103, 104, 229], "what": [103, 104, 229, 236, 301, 342], "hell": [103, 104, 229], "__pdschmappingtyp": [103, 104, 229], "__maxlength": [103, 104, 229], "minld": [103, 104, 229], "maxld": [103, 104, 229], "someth": [103, 104, 229, 329, 359, 360, 362], "went": [103, 104, 229, 359, 360, 362], "wrong": [103, 104, 229, 359, 360, 362], "displaygrid": [103, 104, 226, 228, 229, 235, 237, 285, 287, 289, 291, 294, 327, 351, 352], "tbprocess": 108, "transportblocktxprocess": [108, 186], "rtbprocess": 108, "transportblockrxprocess": [108, 186], "rtblock1": 108, "chk1": 108, "rtblock": 108, "controlinfo": [129, 132, 179, 246, 353], "indexpucch": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 353], "initial_cyclicshift": [129, 132, 135, 138, 179, 215, 216, 246, 247], "m_c": [129, 132, 135, 138, 179, 215, 216, 217, 218, 219, 220, 246, 247, 355, 361], "numinterlacedrb": [129, 130, 131, 132, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 353], "numberofsymb": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247, 353], "pucch_grouphop": [129, 132, 135, 138, 139, 179, 215, 216, 217, 218, 219, 220, 246, 247, 353], "seqnumb": [129, 132, 179, 246], "start_symbindex": [129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 179, 215, 216, 217, 218, 219, 220, 222, 246, 247], "resourcemapperformat0": [129, 131, 179, 215, 216], "interlaceindex_0": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 353], "interlaceindex_1": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 353], "maxnumprb": [129, 130, 131, 134, 135, 136, 137, 138, 179, 215, 216, 217, 218, 219, 222, 247], "numofinterlac": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 353], "rg_size": [129, 130, 131, 135, 136, 137, 179, 215, 216, 218, 219, 222], "secondhopprb": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 353], "seqlength": [129, 130, 131, 134, 135, 136, 137, 139, 179, 215, 216, 217, 218, 219, 220, 222, 250], "startingprb": [129, 130, 131, 135, 136, 137, 179, 215, 216, 217, 218, 219, 222, 353], "resourcedemapperformat0": [129, 130, 179, 215], "interlacedtransmiss": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 353], "interlac": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 353], "pucch_resourcecommon": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 353], "intraslotfreqhop": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 353], "hop": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 254, 265, 353], "symbolindex_start": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 353], "resourceblock": [130, 131, 132, 215, 216, 246], "rmop": [130, 131, 136, 137, 215, 216, 217, 218, 219], "rdemobj": [130, 136, 215, 217, 218], "rdemop": [130, 134, 136, 215, 217, 218], "dedic": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247, 268, 275, 276, 353], "179": [130, 131, 215, 216, 311, 314], "275": [130, 131, 134, 136, 137, 138, 215, 216, 217, 218, 219, 247, 314, 353], "initialis": [130, 131, 132, 134, 136, 137, 138, 139, 215, 216, 217, 218, 219, 220, 246, 247], "bandwidth": [130, 131, 132, 134, 136, 137, 138, 215, 216, 217, 218, 219, 227, 230, 236, 238, 245, 246, 247, 254, 260, 265, 267, 270, 275, 276, 281, 285, 287, 288, 289, 291, 294, 301, 302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352], "bandwidthpart": [130, 131, 134, 136, 137, 138, 215, 216, 217, 218, 219, 247], "tend": [130, 131, 134, 136, 137, 139, 215, 216, 217, 218, 219, 220], "inputofdmgrid": [130, 136, 215, 218], "consider": [130, 131, 132, 136, 137, 138, 139, 203, 204, 215, 216, 218, 219, 220, 246, 247, 332], "intraslot": [130, 131, 136, 137, 138, 139, 215, 216, 218, 219, 220, 247, 353], "format0": [130, 131, 132, 179, 215, 216, 246, 353], "plu": [130, 131, 132, 136, 137, 138, 139, 206, 215, 216, 218, 219, 220, 246, 247, 280], "bwp": [130, 131, 132, 136, 137, 138, 215, 216, 218, 219, 227, 230, 236, 246, 247, 267, 270, 278, 285, 287, 288, 291, 327, 328, 330, 331, 334, 337, 351, 352], "intraslothop": [130, 131, 136, 137, 215, 216, 218, 219], "213": [130, 131, 132, 134, 136, 137, 138, 139, 186, 215, 216, 217, 218, 219, 220, 236, 244, 245, 246, 247, 255, 256, 278, 314], "bullet": [130, 131, 132, 134, 136, 137, 138, 139, 181, 182], "edit": [130, 131, 132, 134, 136, 137, 138, 139, 181, 182], "format0_seq": [131, 132, 215, 216, 246], "rmobj": [131, 137, 215, 216, 217, 218, 219, 328], "beta_pucch0": [131, 216], "amplitud": [131, 137, 216, 219, 275, 276, 285, 288, 289, 291, 294, 334, 335, 336, 349, 350, 355], "conform": [131, 137, 216, 219], "prior": [131, 132, 137, 138, 216, 219, 246, 247, 268, 353], "inputseq": [131, 136, 137, 139, 216, 218, 219, 220], "658": [132, 215, 216, 246], "format0_seqgenobj": [132, 215, 216, 246], "287": [132, 215, 216, 246, 314], "408": [132, 215, 216, 246, 254], "sequencegener": [132, 138, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 285, 287, 288, 289, 291, 294, 327, 351, 352, 353], "But": [132, 134, 138, 217, 227, 246, 247, 270, 302, 330, 331, 359, 360, 362], "And": [132, 138, 139, 145, 176, 220, 246, 247], "interpret": [132, 246, 318], "beteen": [132, 138, 246, 247], "withi": [132, 246], "numofsymbol": [134, 136, 137, 138, 139, 217, 218, 219, 220, 247, 353], "timedomainocc": [134, 135, 139, 179, 217, 218, 219, 220, 222], "cover": [134, 139, 217, 218, 219, 220, 260, 264, 275, 276, 334, 338, 342, 345, 346, 349, 351, 361, 363], "despreadingobj": [134, 217], "despreadingformat1": [134, 135, 179, 217, 222], "despreadedseq": [134, 217], "despread": [134, 217], "numofhop": [134, 217], "initilis": [134, 217], "spreadingfactor": [134, 135, 139, 179, 220], "statu": [134, 139, 353], "nhop": [135, 138, 179, 217, 218, 219, 220, 247], "spreadingformat1": [135, 139, 179, 217, 218, 219, 220, 222], "resourcemapperformat1": [135, 137, 179, 217, 218, 219, 222], "resourcedemapperformat1": [135, 136, 179, 217, 218, 222], "he": [136, 218], "irb": [136, 137, 139, 218, 219, 220], "format1": [136, 137, 179, 218, 219], "spreadedseq": [137, 139, 217, 218, 219, 220], "beta_pucch1": [137, 219], "157": [138, 247, 314], "initialcycshift": [138, 217, 218, 219, 220, 247, 353], "format1_sequ": [138, 139, 217, 218, 219, 220, 247], "astyp": [138, 217, 218, 219, 220, 247, 289, 294, 318, 322, 326, 329, 338, 339], "format1_seqgenobj": [138, 217, 218, 219, 220, 247], "format1_seq": [138, 217, 218, 219, 220, 247], "symb": [138, 182, 217, 218, 219, 220, 235, 247, 254, 318, 322, 323, 328, 329, 336, 338, 339], "hoppingrefvar": [138, 217, 218, 219, 220, 247], "pucch_format1_seqgener": [138, 247], "inputsymb": [138, 247], "bwtween": [138, 247], "spreadingobj": [139, 217, 218, 219, 220], "occ": [139, 220], "othogon": [139, 220], "happen": [139, 220], "thr": [144, 147], "3gppts38212": [144, 145, 147, 148], "explain": [144, 147, 243], "numinfobit": [144, 147, 148, 175, 176], "uciblock": [144, 147, 176], "chsblobj": [144, 147], "channelcodingsmallblocklen": [144, 147], "numofseg": [144, 147, 148, 175], "decis": [144, 147, 280, 283, 323], "chdesblobj": [144, 147], "channeldecodingsmallblocklen": [144, 147], "physial": [145, 181, 182], "pc": 145, "wm": 145, "192": [145, 285, 287, 288, 289, 291, 294, 314], "200": [148, 267, 301, 311, 312, 314, 318, 323, 325, 326, 328, 330, 331, 332, 334, 335, 337, 351, 364], "4224": [148, 149], "cbconcaten": 148, "1555": 148, "2112": 148, "codewordsegreg": 148, "3gppts38212_polar": 149, "segmentationobj": 149, "codeseg": 149, "aggrobj": 149, "codeblockaggregationpucch": 149, "aggrop": 149, "codingof": [151, 161], "47": [163, 165, 167, 168, 278, 314, 318, 332, 333, 334, 340], "35967": [163, 165, 167, 168], "pucchdescr": [163, 167], "pucchscr": [165, 168], "3gppts38212_pucch": [175, 176], "3gppts38211_pucch": [175, 176], "3gppts38211_pucch_format2": [175, 176], "3gppts38211_pucch_formats3and4": [175, 176], "sectio": 175, "detach": [175, 181], "100000": [175, 198, 322], "45976": [175, 176], "545": [175, 176, 334], "1654": [175, 176], "1792": 175, "838": 175, "bumber": 175, "equalized_symbol": 175, "pucchupperphydecoder_obj": 175, "pucchupperphydecod": 175, "10779": [175, 176], "377": [175, 176, 314], "51": [175, 245, 278, 301, 314, 332, 333, 334, 340], "better": [176, 196, 197, 198, 199, 202, 279, 280, 305, 330, 331, 334, 335, 361], "unerstand": 176, "pucchupperphy_obj": 176, "pucchupperphi": 176, "puschupperphi": [180, 182], "puschdecoderupperphi": [180, 181], "3gppts38211_pusch": [181, 182], "descript": [181, 182], "3gppts38212_pusch": [181, 182], "puschrx": 181, "puschdatarx": 181, "tha": 181, "estsymb": 181, "demappertyp": 181, "chri": [181, 182], "jhonson": [181, 182], "3gppts38214_pusch": 182, "puschtx": 182, "puschdata": 182, "3gppts38212pusch": 182, "pdcchdecod": [183, 185, 323, 328], "pbchdecod": [183, 184, 285, 287, 288, 289, 291, 294, 327, 351, 352], "psbchdecod": [183, 188], "pscchupperphi": [183, 189], "pscchlowerphi": [183, 189], "pscchupperphydecod": [183, 189], "pscchlowerphydecod": [183, 189], "3gppts38211pbch": 184, "432": [184, 235, 237, 269, 289, 291, 352], "pbchil": 184, "pbch_iil": 184, "sbbil": 184, "scr2": 184, "payloadmib": [184, 351], "mibsequ": [184, 291, 294], "requenc": 184, "ilbit": 184, "payloadcrc": 184, "iilbit": 184, "sbil_bit": 184, "scr2bit": [184, 291, 294, 351], "chil_bit": 184, "polardectyp": [184, 291, 294, 351, 352], "symboldemappertyp": [184, 291, 294, 351, 352], "mibflag": 184, "crccheck": [184, 352], "pbche": 184, "channeldeinterleaverbit": 184, "decrcbit": 184, "descrambledbit": 184, "descrambled2llr": 184, "inputdeinteleavedbit": 184, "mibrx": [184, 291, 294, 351], "pbchdeinterleavedbit": [184, 291, 294], "polardecodedbit": 184, "ratedematedbit": 184, "subblockdeinterleavedbit": 184, "3gppts38211pdcch": 185, "dcipayload": 185, "dcibil": 185, "dcicrc": 185, "dciibi": 185, "dcirm": 185, "dciscr": [185, 323], "demappingmethod": [185, 323, 328], "equalizedsymbol": 185, "decodedbit": 185, "dematchedbit": 185, "descrambledllr": 185, "ibdilbit": 185, "sbdbit": 185, "unmaskedbit": 185, "upperphi": [186, 189], "lowerphi": [186, 189], "rf": [186, 189, 196, 286, 290, 292, 293, 295, 364], "3gppts38213pdsch": 186, "entertain": [186, 189], "arrang": [186, 361], "develop": [186, 297, 312, 361], "modular": [186, 364], "plug": [186, 361, 364], "plai": [186, 196, 198, 206, 271, 275, 276, 280, 281, 283, 361, 364], "research": [186, 342, 361, 364], "independ": [186, 203, 205, 236, 238, 278], "3gppts38211psbch": 188, "synchronis": 188, "scan": [188, 285], "camp": 188, "1386": 188, "1782": [188, 301], "verbal": 188, "explan": [188, 334], "subblockinterleav": 188, "symboldemapp": [188, 291, 294, 351, 352], "inputsymbol": 188, "polardecod": [188, 291, 294, 323, 351, 352], "possess": 188, "scl8": 188, "scl32": 188, "subblockdeinterleav": 188, "inputdeinterleav": 188, "3gppts38211pscch": 189, "3gppts38212pscch": 189, "comst": 189, "3057017": 189, "ofbit": 189, "scibit": 189, "scirm": 189, "sci": 189, "43": [189, 294, 314, 318, 330, 331, 332, 333, 334, 340, 351], "symbnumb": [189, 232, 249], "v2x": [189, 346, 364], "complex32": [189, 232, 233], "payloadindic": 189, "descrllr": 189, "gpp": 189, "138": [189, 236, 278, 314], "rscibit": 189, "pscchllr": 189, "5th": 190, "dft_doa": [192, 195, 206], "juli": [192, 194, 195], "sorri": [192, 194], "inconveni": [192, 194], "invari": [193, 203], "ntx": [193, 195, 302, 334, 335, 351], "nty": [193, 195, 302, 334, 335], "dtx": [193, 195, 302, 335], "dty": [193, 195, 302, 335], "taken": [193, 195, 206, 233, 235, 256, 298, 301, 302, 335], "propoerti": [193, 302, 335], "lpath": [193, 195, 202, 205, 302, 330, 331, 332, 333, 335], "strongest": [193, 195, 202, 203, 204, 205, 327], "espritdoa": [193, 302, 335], "esprit_doa": [193, 195, 206, 335], "xoa_est": [193, 195], "nr_x": [193, 195, 302, 351], "nr_y": [193, 195, 302, 351], "nobserv": [193, 195, 302], "exploit": [193, 195, 203, 204, 268, 281, 349], "y": [193, 195, 196, 197, 198, 199, 275, 285, 289, 291, 294, 302, 304, 305, 306, 307, 308, 309, 311, 318, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 351, 352, 353, 354, 365], "theta_": [193, 195, 348], "phi_": [193, 195, 348], "trace": [193, 195, 299], "d_spcgx_rx": [193, 195], "d_spcgy_rx": [193, 195], "numpath": [193, 195, 202, 205, 341, 343, 344, 347], "thei": [193, 195, 236, 255, 256, 278, 336, 359, 360, 361, 362], "ltipl": [194, 204], "gnal": [194, 204], "lassif": [194, 204], "music_doa": [194, 195, 206], "doa": [195, 200, 206, 302, 334, 335], "planner": 195, "offer": [195, 197, 203, 204, 280, 283, 298, 332], "oof": 195, "increas": [195, 196, 198, 202, 206, 227, 281, 285, 287, 288, 289, 291, 294, 306, 307, 308, 309, 322, 345], "resolut": [195, 196, 202, 203, 204, 284, 334, 335], "music": [195, 202, 205, 206, 330, 331], "medium": [195, 294, 309, 310, 321, 332, 338], "esprit": [195, 205, 206, 302, 330, 331, 332, 333, 334, 335], "yet": [195, 357, 358], "doaestim": [195, 206, 302], "aoa": [195, 196, 197, 200, 206, 302, 350, 355, 361, 364], "nomenclatur": [196, 198], "aod": [196, 200, 206, 350, 355, 361, 364], "rsrp": [196, 200, 206, 352, 355, 361, 364], "newton": [196, 200, 206], "raphson": [196, 200, 206], "ul": [196, 198, 206, 236, 243, 254, 321, 355, 361, 364], "rtoa": [196, 198, 206], "reli": [196, 198, 268, 280, 281, 332], "gd": [196, 198], "converg": [196, 198, 206], "global": [196, 198, 206], "optima": [196, 198, 206], "inspir": [196, 198, 199], "3gppdoa": 196, "refloc": [196, 327], "nref": [196, 197, 198, 199], "xoa": [196, 197, 206, 302, 334, 335], "posestim": [196, 197, 206, 302, 334, 335], "leastsquaredoa": [196, 206, 334, 335], "framework": [196, 197, 198, 199, 200, 296, 321], "equiheight": [196, 197, 198, 199], "phenomenon": [196, 197, 198, 199, 349], "co": [196, 197, 198, 199, 302, 318, 327, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 349, 352], "ordin": [196, 197, 198, 199], "uncertainti": [196, 197, 198, 199, 206, 280], "numepoch": [196, 198, 206], "toler": [196, 198, 206], "stepsiz": [196, 198, 206], "gradientdescentdoa": [196, 206], "numiterationperepoch": [196, 198, 206], "1e": [196, 198, 206], "06": [196, 198, 206, 294, 301, 311, 318, 322, 354, 365], "phi_i": 196, "theta_i": 196, "epoch": [196, 198, 206, 301, 314, 318], "000001": 196, "solut": [196, 198, 206, 356, 361], "refposit": [196, 197, 198, 199, 206], "odd": [196, 198, 206, 269, 271, 275, 276], "get": [196, 198, 206, 267, 279, 291, 294, 308, 325, 326, 337, 348, 351, 359, 360, 361, 362], "stuck": [196, 198, 206], "role": [196, 198, 206, 271, 275, 276, 280, 281, 283], "sucept": [196, 198, 206], "minima": [196, 198, 206], "nrefnod": [196, 197, 198, 199], "trilater": [196, 197, 198, 332], "tdoa": [196, 200, 206, 302, 333, 355, 361, 364], "wang": [196, 304, 305, 306, 307, 308, 309], "shi": 196, "yu": 196, "huang": 196, "chen": 196, "2019": [196, 301], "16th": 196, "workshop": [196, 301], "navig": [196, 332, 334, 335], "wpnc": 196, "bremen": 196, "germani": 196, "doi": [196, 199, 284, 301, 318], "1109": [196, 199, 284, 301, 318], "wpnc47567": 196, "8970182": 196, "leverag": [197, 268, 271, 334, 335], "strength": [197, 280, 312, 342], "approach": [197, 279, 312], "accur": [197, 198, 203, 204, 268, 269, 270, 271, 275, 276, 285, 302, 323, 330, 331, 332, 333, 334, 335, 342], "fuse": 197, "multilater": [197, 332, 334, 335], "mitig": [197, 255, 256, 268, 269, 270, 271, 283, 332, 334], "resolv": 197, "ambigu": 197, "constraint": [197, 281, 283, 318, 336], "refin": [197, 268, 364], "strong": [197, 203, 204], "hybridtoaaoa": [197, 206], "txposit": [197, 198, 199, 206, 302, 330, 331, 332, 333, 334, 335], "numtranmitt": [197, 206], "doaest": [197, 206, 302, 335], "toae": [197, 198, 199, 206, 302, 330, 331, 332, 333, 334, 335], "refpositionaoa": [197, 206, 302], "hybridtdoaaoa": [197, 206], "tdoaest": [197, 206], "handbooktdoa": 198, "otdoa": 198, "rstd": 198, "leastsquar": [198, 206, 331, 333], "newtonraphson": [198, 206], "gradientdesc": [198, 206], "suffer": [198, 202], "calibr": 198, "major": [198, 302, 305, 311, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 337, 349, 352, 354], "challeng": [198, 281, 332, 334, 361], "degrad": [198, 202, 204, 269, 270, 302, 328, 338], "significantli": [198, 302, 330], "leastsquaretdoa": [198, 206, 330, 332], "rxpositionestim": [198, 330, 331, 332, 333, 334, 335], "tau_": [198, 206], "tau_i": [198, 206], "tau_r": [198, 206], "neq": [198, 206], "gradientdescenttdoa": [198, 206], "numrepetit": [198, 302, 332, 333, 335], "0000000001": [198, 311], "newtonraphsontdoa": [198, 206], "overcom": 198, "rmb": 198, "reza": 198, "zekavat": 198, "oxford": 198, "innov": 198, "wilei": 198, "press": 198, "2011": 198, "34": [198, 289, 294, 301, 314, 318, 323, 332, 333, 334, 340, 351, 352], "hppinf": 199, "leastsquaretoa": [199, 206, 330, 332], "locestim": 199, "poserror": 199, "speed_of_light": 199, "light": [199, 332], "em": 199, "singh": [199, 284], "masal": [199, 284], "klutto": [199, 284], "milleth": [199, 284], "ramamurthi": [199, 284], "massiv": [199, 284, 313, 321, 337, 349, 355, 361, 364], "beyond": [199, 284, 321, 350, 355, 361], "32nd": [199, 284], "annual": [199, 284, 359, 362, 363], "person": [199, 284], "pimrc": [199, 284], "helsinki": [199, 284], "finland": [199, 284], "1234": [199, 284], "1240": [199, 284], "pimrc50174": [199, 284], "9569480": [199, 284], "rtt": [200, 206, 231, 333, 364], "gradient": [200, 206, 302, 318, 330, 334, 335], "descent": [200, 206, 302, 318, 330, 334, 335], "mrtt": [200, 206], "profil": [202, 205, 341, 342, 343, 344, 347, 349], "pdp": [202, 206], "peak": [202, 204, 273, 275, 355, 361], "experi": [202, 227, 283, 285, 301, 304, 334, 349], "unavail": [202, 278, 295], "situat": [202, 279], "numobserv": [202, 203, 204, 205], "osfactor": 202, "dfttoa": 202, "dft_toa": [202, 205, 206], "promin": [202, 204, 205, 273, 285, 289, 291, 294, 351], "displaypdp": 202, "document": [202, 203, 204, 205, 206, 244, 245, 253, 254, 256, 269, 273, 274, 276], "oversamplingfactor": [202, 205, 330, 331], "domin": [202, 204], "heigth": [202, 204, 205], "spike": [202, 204, 205, 273, 275], "spectrum": [202, 204, 205, 238, 262, 266, 281, 285, 289, 292, 293, 295, 336, 350, 355], "find_peak": [202, 204, 205, 273], "scipi": [202, 204, 205, 269, 273, 276, 302, 330, 331, 332, 333, 334, 335, 337, 359, 362, 363], "xmin": [202, 205, 302, 330, 332, 333, 335], "xmax": [202, 205, 302, 330, 332, 333, 335], "principl": [203, 204, 332], "covari": [203, 204], "context": [203, 269, 270, 289, 325, 326, 337, 349], "cyclostationar": [203, 268], "mathemat": [203, 318, 325, 326, 337], "eigenvalu": [203, 204], "decomposit": [203, 204, 325, 326, 337], "subspac": [203, 204], "interest": [203, 260, 280, 305, 361], "eigenvector": [203, 204], "onc": [203, 204, 206, 279, 332, 359, 360, 362, 363], "analyz": [203, 204, 268, 310, 318, 321, 323, 325, 326, 329, 330, 331, 334, 335, 337, 345, 347, 353, 361, 364], "adjac": 203, "trigonometr": 203, "relationship": 203, "advantag": [203, 204, 278], "presenc": [203, 204, 318, 334], "knowledg": [203, 204, 268], "narrowband": [203, 204], "exhibit": [203, 204, 349], "particularli": [203, 204, 280, 325, 326, 337, 349], "critic": [203, 204, 268, 269, 281, 283, 285, 365], "radar": [203, 204], "esprit_toa": [203, 205, 206], "numberofpath": [203, 204, 205, 302, 330, 331, 332, 333], "report": [203, 221, 234, 275, 276, 364], "experienc": [203, 204, 362], "ob": [203, 205], "observ": [203, 205, 318, 329, 330, 331, 338, 339, 341, 343, 344, 347, 353], "classif": 204, "popular": 204, "eigenstructur": 204, "decompos": [204, 325, 326, 337], "separ": [204, 260, 268], "suppress": 204, "leav": 204, "pseudospectrum": 204, "abil": [204, 334, 335, 336], "statist": [204, 268, 318, 350, 355, 361], "stationar": 204, "min_delai": [204, 205], "max_delai": [204, 205], "music_toa": [204, 205, 206], "displaymusicspectrum": 204, "displayeigenvalu": 204, "eigen": [204, 280, 281, 311, 325, 326, 337, 354], "delaygrid": 204, "flaat": 204, "musicspectrum": 204, "peakvalu": 204, "numspik": 204, "manag": [204, 243, 254, 270, 283, 285, 296, 334, 335, 355, 361, 364], "actual": [204, 330, 331, 334, 348, 352], "multipath": [204, 268, 312, 332, 334, 342, 349], "immun": 204, "miss": [204, 312], "weak": [204, 341, 343, 344, 347], "idxlow": [204, 205], "idxhigh": [204, 205], "basi": [204, 206, 318], "till": [204, 278, 364], "toaestim": [205, 206, 302, 330, 331, 332, 333, 334, 335], "sort": [205, 302, 330, 331, 332, 333], "toaest": [205, 206], "noth": [205, 358], "devic": [206, 238, 244, 245, 285, 289, 295, 299, 301, 321, 346, 355, 361, 364], "positioningmethod": 206, "optimizationmethod": [206, 331, 333], "ecid": 206, "Not": [206, 233, 301, 330, 331, 334, 342, 345, 359, 362], "00000001": [206, 301], "txpositiontoa": 206, "txpositionaoa": 206, "due": [206, 268, 280, 301, 332, 336, 341, 343, 344, 347, 349, 365], "gdop": [206, 302], "numrefnod": 206, "fig_ax_tupl": 206, "visual": [206, 286, 295, 321, 355, 361], "circlelw": 206, "75": [206, 230, 281, 285, 288, 289, 291, 294, 301, 302, 308, 309, 314, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 339, 340, 345, 348, 351], "circlel": 206, "estlocs": 206, "estlocmark": 206, "estloccolor": 206, "reflocs": 206, "reflocmark": 206, "refloccolor": 206, "displaylegend": 206, "style": [206, 285, 287, 288, 294, 301, 302, 311, 312, 314, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 342, 345, 348, 349, 352, 354, 365], "sign": 206, "append": [206, 236, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "visibl": [206, 329], "wheather": [206, 365], "superimpos": 206, "serv": [214, 279, 282], "3gppts38211_format0": [215, 216, 246], "3gppts38212_format0": [215, 216, 246], "3gppts38213_format0": [215, 216, 246], "3gppts38211_dsformat1": 217, "3gppts38213_dsformat1": 217, "3gppts38211_dmformat1": 218, "3gppts38213_dmformat1": 218, "3gppts38211_rmformat1": 219, "3gppts38213_rmformat1": 219, "3gppts38211_sformat1": 220, "3gppts38213_sformat1": 220, "fill": [226, 230, 232, 275, 279, 302, 330, 331, 332, 333, 334, 335], "dmrsindic": [226, 237, 269, 291, 294, 351], "pbchindic": [226, 237, 269, 291, 294, 351], "pssindic": [226, 237], "sssindic": [226, 237], "displaycoresetreg_cce_map": [226, 227], "3gppts38211coreset": 227, "cce": [227, 230, 236, 270, 278, 304, 305, 306, 307, 308, 309, 323, 328], "quantifi": [227, 328], "assign": [227, 236, 278, 279, 323], "coverag": [227, 234, 244, 245, 254, 269, 278, 280, 283, 305, 309, 310, 321, 342, 355, 361], "accommod": 227, "frequencydomainresourc": [227, 230, 270, 323, 328], "contigu": [227, 230, 236, 270], "activ": [227, 236, 279, 301, 318, 360, 361], "270": [227, 278, 314, 323, 328, 335], "reg": [227, 230, 270, 323, 328], "mappingtyp": 227, "bundl": [227, 230, 270, 323, 328], "bundles": 227, "permit": 227, "interleavers": [227, 270, 323, 328], "bandwith": [227, 309], "paramt": 227, "shiftlndex": 227, "nshift": [227, 230, 270, 323, 328], "274": [227, 270, 314], "organis": 227, "72": [227, 244, 314, 328, 332, 333, 334, 336, 340], "bwpstartprbindex": 227, "numrbincoreset": 227, "manner": [227, 279], "0th": [227, 230, 270], "sum": [227, 230, 270, 278, 302, 304, 305, 306, 307, 308, 309, 318, 322, 323, 328, 330, 331, 332, 333, 334, 335, 336, 337, 345, 346, 348, 352], "cce_reg_mappingtyp": [227, 270, 323, 328], "reg_bundles": [227, 270, 323, 328], "shiftindex": [227, 270, 323, 328], "word": [227, 270, 318], "numberofrb": [227, 270], "numprbsincoreset": 227, "numregincoreset": 227, "displaycoreset": 227, "frequecydomainresourc": 227, "cce_reg_map": [227, 323, 328], "instansti": [227, 236], "coresetobj": [227, 323, 328], "coresetprbindic": [227, 323, 328], "numccesincoreset": [227, 328], "startprb": [228, 231, 261, 337], "nrofprb": [228, 231, 261, 337], "configurations___": [228, 337], "rowindex": [228, 231, 261, 337], "parameters__________________________________________": [228, 337], "13254": 228, "numslotsperfram": [228, 231, 278, 302, 304, 305, 306, 308, 309, 332, 333, 335], "_____________________________________________________________": [228, 337], "resources____________________": [228, 337], "betacsir": [228, 261, 337], "firstofdmsymbolintimedomain": [228, 231, 261, 337], "firstofdmsymbolintimedomain2": [228, 231, 261, 337], "frequencydomainalloc": [228, 231, 261, 337], "rmcsir": [228, 337], "csirsgrid": [228, 337], "3gppts38211_ssbgrid": [228, 235, 237, 238], "nocdm": 228, "cdm2": [228, 337], "cdm4": 228, "fd2": 228, "td2": 228, "cdm8": 228, "td4": 228, "4095": [228, 230, 231, 248, 251, 270], "k_i": 228, "resourcegridsizeinrb": [228, 265, 302, 332, 333, 335, 337], "unit": [228, 238, 266, 281], "resou": 228, "__rowindex": [228, 231], "numscmap": [228, 231], "__nrofport": [228, 231], "__densiti": [228, 231], "possiblecdmtyp": [228, 231], "possibledens": [228, 231], "interg": [228, 231, 232], "batchindex": 228, "3gppts38211pdcchrm": 230, "monitoringsymbolswithinslot": [230, 270, 323, 328], "3gppts38211_pdcchrm": 230, "120": [230, 236, 245, 250, 267, 278, 302, 309, 314, 327, 330, 332, 333, 335, 337, 343, 345], "region": [230, 236, 278, 280, 329], "pdcchpayload": 230, "numpdcchbit": 230, "interleavertyp": 230, "chosencceindic": [230, 323], "al": [230, 236, 278, 304, 306, 307, 308, 309, 310, 321, 323, 328, 361], "3gppts38211_prsrm": 231, "dl_prs_numsymbol": [231, 330, 331, 334], "dl_prs_combsizen": [231, 330, 331, 334], "comb": [231, 254, 265, 330, 331, 334], "dl_prs_resourcesymboloffset": [231, 330, 331, 334], "dl_prs_reoffset": [231, 330, 331, 334], "dl_prs_sequenceid": [231, 330, 331, 334], "1031": [231, 331, 334], "betapr": [231, 330, 331, 334], "prsmapper": 231, "prsgrid": [231, 330, 331, 334], "combsiz": [231, 330, 331], "reoffset": 231, "startsymbol": [231, 263, 264, 294, 301, 311, 325, 326, 354], "sequenceid": [231, 254, 265, 302, 332, 333, 335], "\ud835\udc3e": 231, "combsizen": 231, "andreoffset": 231, "compens": [231, 268, 269, 270, 271], "resourcesymboloffset": 231, "3gppts38211pscchrm": 232, "nrb": [232, 267, 285, 287, 288, 289, 291, 294, 327, 351, 352], "nsymbperslot": 232, "lptr": 233, "kptr": 233, "offsetindex": 233, "ts38": [233, 301], "pt": [233, 302, 327, 330, 331, 332, 333, 334, 335, 337, 351, 352], "k_": [233, 254, 265, 330, 331, 334, 348, 351], "offset00": 233, "offset01": 233, "offset10": 233, "offset11": 233, "tale": 233, "latenc": [234, 280], "classifi": 234, "short": [234, 349], "span": [234, 235, 237], "acknowledg": [234, 353], "puchh": 234, "unlik": 234, "energi": [234, 281, 309, 318, 349], "coher": [234, 249], "240": [235, 237, 238, 249, 269, 272, 274, 285, 287, 289, 291, 294, 301, 314, 327, 351, 352], "127": [235, 237, 252, 253, 255, 256, 314, 332], "144": [235, 237, 245, 249, 269, 285, 287, 289, 291, 294, 314, 327, 351, 352], "numssb": [235, 237, 266, 269], "n_id1": [235, 237, 285, 287, 289, 291, 294, 351, 352], "336": [235, 237, 256, 285, 287, 289, 291, 294, 314, 351], "n_id2": [235, 237, 273, 285, 287, 289, 291, 294, 351, 352], "n_id": [235, 237, 249, 285, 287, 289, 291, 294, 351, 352], "pssobject": [235, 237, 285, 287, 289, 291, 294, 327, 351, 352], "psssequenc": [235, 237, 252, 285, 287, 289, 291, 294, 327, 351, 352], "sssobject": [235, 237, 285, 287, 289, 291, 294, 327, 351, 352], "ssssequenc": [235, 237, 255, 256, 285, 287, 289, 291, 294, 327, 351, 352], "dmrslen": [235, 237, 249, 285, 287, 289, 291, 294, 327, 351, 352], "dmrsobject": [235, 237, 249, 285, 287, 289, 291, 294, 327, 351, 352], "dmrssequenc": [235, 237, 249, 285, 287, 289, 291, 294, 327, 351, 352], "pbchsymbol": [235, 237, 269, 285, 287, 289, 291, 294, 327, 351, 352], "ssbobject": [235, 237, 285, 287, 289, 291, 294, 327, 351, 352], "nid1": [235, 255, 256, 274, 327], "nid2": [235, 252, 253, 255, 256, 273, 274, 285, 288, 291, 294, 327, 351], "335": [235, 255, 256, 274, 314], "isnorm": [235, 237], "un": [235, 237, 260, 261, 262, 263, 264, 265, 266, 267, 302, 332, 333, 335], "spss": [235, 253], "ssss": [235, 256], "33": [235, 278, 294, 301, 305, 309, 314, 318, 330, 331, 332, 333, 334, 339, 340, 351], "99": [235, 301, 311, 314, 325, 329, 332, 333, 334, 338, 339], "shouldn": [235, 237], "pbchsymb": [235, 237], "dmrsseq": [235, 237, 285, 287, 289, 291, 294, 351, 352], "132": [235, 314], "sl_ssb": 235, "254": [235, 314], "heat": [235, 237, 285, 287, 289, 291, 294], "rel": [235, 237, 279, 301, 334, 335, 346], "3gppts38213_searchspaceset": 236, "blind": [236, 268, 310, 321, 355, 361], "css": [236, 278, 304, 305, 306, 307, 308, 309, 328], "uss": [236, 278, 304, 305, 306, 307, 308, 309, 328], "would": [236, 278, 295], "page": [236, 351, 356, 359, 360, 361, 362, 363], "ra": 236, "tpc": 236, "command": [236, 267, 359, 360, 362, 363], "searchspacetyp": [236, 278, 304, 305, 306, 307, 308, 309, 328], "numcandid": [236, 304, 305, 306, 307, 308, 309, 328], "coresetdur": [236, 270, 328], "monitoringperiod": 236, "monitoringoffset": 236, "searchspacesetdur": 236, "attempt": [236, 285], "serach": 236, "occas": 236, "period": [236, 261, 265, 269, 270, 275, 276, 285, 302, 332, 333, 335], "searchspac": 236, "candiat": [236, 278, 308], "correspondingli": [236, 278], "monitoringslotperiodicityandoffset": 236, "160": [236, 265, 314], "320": [236, 265, 314], "640": [236, 265], "1280": [236, 265, 334], "2560": [236, 265], "monitoringperiodicti": 236, "aggregationlevel": 236, "restric": 236, "coresets": [236, 308, 309, 328], "coresetid": [236, 278, 304, 305, 306, 307, 308, 309, 328], "pdcchmonitoringslotindic": 236, "pdcchmonitoringsymbolswithinslot": 236, "sy": [236, 302, 304, 305, 306, 307, 308, 309, 311, 312, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354, 365], "numoffram": 236, "numofslotsperframepernumerologi": 236, "slotnum": 236, "sstype": [236, 328], "corset": 236, "54": [236, 270, 278, 294, 301, 304, 305, 306, 307, 314, 323, 326, 328, 332, 333, 334, 340, 343, 353], "hash": [236, 278], "periodicti": 236, "22051": 236, "sssobj": 236, "candidatecc": 236, "36": [236, 244, 245, 254, 265, 289, 294, 301, 304, 305, 314, 318, 326, 328, 332, 333, 334, 340, 348, 351], "37": [236, 289, 294, 314, 318, 332, 333, 334, 335, 340, 351], "48": [236, 249, 278, 289, 291, 294, 301, 305, 314, 318, 326, 330, 332, 333, 334, 337, 340, 351], "49": [236, 278, 301, 314, 318, 332, 333, 334, 340], "zoom": [236, 329, 345], "pssseq": 237, "sssseq": 237, "maor": 237, "ssbtype": [238, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "casea": [238, 262, 266, 285, 287, 289, 291, 294, 327, 352], "3600000000": [238, 267, 351], "ispairedband": [238, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "withsharedspectrumchannelaccess": [238, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "caseb": [238, 262, 266], "casec": [238, 262, 266], "casef": 238, "caseg": 238, "kssb": [238, 289, 294, 351, 352], "offsettopointa": [238, 266, 285, 287, 289, 291, 294, 351, 352], "jointli": [238, 268], "offsetinsubcarri": [238, 262, 266, 285, 287, 291, 294, 327, 351, 352], "offsetinrb": [238, 262, 266, 285, 287, 291, 294, 327, 351, 352], "ssbpositioninburst": [238, 262, 266, 285, 287, 289, 291, 294, 327, 351, 352], "60khz": 238, "equival": 238, "rememb": 238, "overlap": [238, 278, 306, 336], "regardless": [238, 279], "nhf": [238, 249, 272, 289, 294, 351, 352], "5m": [238, 330, 331, 334], "boundari": [238, 252, 253, 285, 345], "272": [238, 279, 302, 314, 318, 332, 333], "273": [238, 314], "ones": [238, 266, 285, 287, 289, 291, 294, 323, 327, 334, 336, 348, 351, 352], "bitmap": 238, "copi": [238, 291, 294, 323, 351], "4x240": 238, "x4x240": 238, "3gppts38211_ssbrm": 238, "table1": [243, 280], "table2": 243, "preambl": 243, "3gppts38211lowpapr": [244, 245], "3gppts38213lowpapr": [244, 245], "constrain": [244, 245, 309, 327], "altern": [244, 245, 279], "gold": [244, 245, 250, 255, 256, 328, 329, 330, 331, 337, 338, 339, 340, 345], "excel": [244, 245, 273], "lengthofsequ": [244, 245, 254, 265], "lowpapr": [244, 245], "seq": [244, 245], "96": [244, 301, 314, 332, 333, 334, 339], "84": [244, 314, 332, 333, 334, 337, 340], "131": [244, 314], "cyclicshift": 244, "groupnumb": [244, 245], "basesequencenumb": 244, "dummi": [244, 245], "like": [244, 245, 268, 329, 342], "n_c": 244, "n_u": [244, 245], "mzc": 244, "chose": [244, 245, 254, 278, 328], "accrodingli": [244, 245, 254], "u_or_cinit": 245, "122": [245, 314, 327, 332, 351], "151": [245, 314], "groupnumber_or_cinit": 245, "cinit": 245, "c_": [245, 248, 249, 250, 251], "3gppts38211_format1": 247, "3gppts38212_format1": 247, "3gppts38213_format1": 247, "ofdmsymbolnumb": [248, 251, 337], "symbolnumb": [248, 249, 251], "198": [248, 314, 334], "csirslength": 248, "csirsobject": 248, "csirssequ": 248, "1075": [248, 251], "187": [248, 251, 314], "3gppts38211_dmr": 249, "lambda": [249, 318], "lengthdmr": 249, "2ghz": 249, "mmwave": [249, 349], "n_cell_id_sl": 249, "scramblingid0": 249, "scramblingid1": 249, "lambdabar": 249, "scaler": [249, 250, 252, 253, 255, 256], "nscidbar": 249, "ofr": 250, "3gppts38211_pn": 250, "reproduc": [250, 298, 301, 318], "pnobject": 250, "1x120": 250, "21359": 250, "2780": 250, "161": [250, 314], "3x161": 250, "dlprssequenceid": 251, "3gppts38211_pr": 251, "prslength": 251, "prsobject": [251, 330, 331, 334], "prssequenc": 251, "aim": [252, 253, 255, 256, 269, 270, 271, 274, 280, 281], "3gppts38211_pss": 252, "1x127": [252, 253, 255, 256], "4x127": [252, 253, 255, 256], "id2": [252, 253, 255, 256, 291, 294, 351], "3gppts38211_s_pss": 253, "spsssequenc": 253, "zadoff": 254, "chu": 254, "mind": [254, 356], "multiport": 254, "3gppts38211_sr": 254, "nrofsrs_port": [254, 265, 302, 332, 333, 335], "transmissioncomb": [254, 265, 302, 332, 333, 335], "nrofsymbol": [254, 265, 302, 332, 333, 335], "startposit": [254, 265, 302, 332, 333, 335], "nrofcyclicshift": [254, 265, 302, 332, 333, 335], "grouporsequencehop": [254, 265, 302, 332, 333, 335], "sequencehop": [254, 265], "974": 254, "slotindex": [254, 265, 330, 331, 334], "numid": 254, "grouphop": [254, 265], "tc": [254, 265], "nrofcyclicshiftmax": 254, "numsequenceid": [254, 276], "symbolindic": [254, 265, 327, 352], "behaviour": [254, 332, 341, 342, 346, 349], "symbolindex": 254, "m_": 254, "p_": [254, 330, 331, 334], "repetitionfactor": [254, 265, 302, 332, 333, 335], "confiur": 254, "ind": [254, 265], "ex": [254, 265], "ic": [254, 265], "centr": [255, 256], "3gppts38211_sss": 255, "204": [255, 256, 314], "98": [255, 256, 294, 301, 314, 332, 333, 334, 347, 354], "2x127": [255, 256], "101": [255, 256, 314, 332], "3x127": [255, 256], "len": [255, 329, 338, 339, 340, 353], "3gppts38211_s_sss": 256, "fourth": 256, "fifth": 256, "sssssequenc": 256, "rrc": [260, 265], "influenc": [260, 281], "overwhelm": 260, "compli": 260, "acquir": [261, 265], "tdd": [261, 313, 321, 361], "reciproc": [261, 265, 299], "slotoffset": 261, "numslot": [261, 302, 330, 331, 332, 333, 334, 335, 337], "nscsoffset": [262, 285, 287, 289, 291, 294, 327, 351, 352], "unconfigur": 263, "mcstabl": [264, 280, 294, 311, 325, 326, 354], "config": [264, 285, 287, 288, 289, 291, 294, 337], "maintain": [264, 268, 269, 279, 280, 281, 305], "comboffset": [265, 302, 332, 333, 335], "resourcetyp": [265, 302, 332, 333, 335], "bsr": [265, 302, 332, 333, 335], "csr": [265, 302, 332, 333, 335], "bhop": [265, 302, 332, 333, 335], "freqscalingfactor": [265, 302, 332, 333, 335], "startrbindex": [265, 302, 332, 333, 335], "enablestartrbhop": [265, 302, 332, 333, 335], "freqdomainshift": [265, 302, 332, 333, 335], "freqdomainposit": [265, 302, 332, 333, 335], "periodicityinslot": 265, "offsetinslot": 265, "betasr": [265, 302, 332, 333, 335], "disbal": [265, 301], "hopp": 265, "67": [265, 309, 314, 330, 331, 332, 333, 334, 339, 340], "268": [265, 314], "p_f": 265, "inteer": 265, "repet": 265, "semi": 265, "persist": 265, "aperiod": 265, "legit": [266, 267, 330, 331], "equaval": 266, "guard": 267, "don": [267, 295, 323, 327, 328, 352], "bandwidthtx": [267, 327, 351, 352], "nsymbolfram": [267, 285, 287, 288, 289, 291, 294, 301, 327, 351, 352], "tfparam": [267, 285, 287, 288, 289, 291, 294, 301, 327, 351, 352], "typecp": [267, 285, 287, 288, 289, 291, 294, 301, 327, 351, 352], "transit": [267, 285, 287, 288, 289, 291, 294, 327, 351, 352], "neff": [267, 285, 287, 288, 289, 291, 294, 327, 351, 352], "exclud": [267, 285, 287, 288, 291, 327, 351, 352], "gaurd": [267, 285, 287, 288, 291, 327, 351, 352], "lengthcp": [267, 273, 285, 287, 288, 289, 291, 294, 327, 351, 352], "100000000": 267, "mhz": [267, 301, 327, 330, 331, 332, 333, 334, 335, 352], "prfix": 267, "acn": 267, "extend": [267, 269, 330, 331, 334], "possiblecombinations_fr1": 267, "39": [267, 294, 301, 311, 314, 318, 332, 333, 334, 340, 341, 342, 345, 346, 347, 348, 349, 351, 365], "possiblecombinations_fr2": 267, "400": [267, 285, 314, 328, 331, 333, 334], "getgaurdband_fr1": 267, "gaird": 267, "getgaurdband_fr2": 267, "getnumberrb_fr1": 267, "getnumberrb_fr2": 267, "oscil": 268, "inaccuraci": 268, "doppler": [268, 312, 323, 346, 350, 355], "proper": [268, 269, 270, 285], "recept": [268, 269, 270, 271, 283, 286, 290, 292, 293, 295, 323, 334, 335], "embed": [268, 318], "align": [268, 285, 299], "tone": 268, "do": [268, 336], "explicit": 268, "joint": [268, 280], "inher": 268, "essenti": [268, 269, 270, 283, 285, 323, 342, 349], "therefor": 268, "seamless": [268, 280, 285], "environment": [268, 334], "receiveralgorithm": [268, 269, 270, 271, 272, 273, 274, 275, 276, 285, 287, 288, 289, 291, 294, 302, 323, 326, 327, 328, 332, 333, 335, 337, 351, 352], "narrow": 268, "nearli": 268, "flat": [268, 281], "pssofdmsymbol": 268, "numcfoiter": 268, "despit": [269, 270, 280], "variat": [269, 270, 279, 280, 310, 321, 329, 332, 342, 348, 350, 355, 361], "gnb": [269, 270, 285, 323, 327, 330, 331, 332], "rss": [269, 270], "mmse": [269, 270], "fde": [269, 270], "distort": [269, 270, 271, 334], "final": [269, 270, 280, 301, 330, 331, 333, 334, 335, 361], "zf": [269, 291, 294, 351, 352], "nearest": [269, 270, 271, 275, 285, 287, 289, 291, 294, 327, 342, 349, 351, 352], "spline": [269, 275, 276, 294, 302, 330, 331, 332, 333, 334, 335, 337], "estimatortyp": [269, 291, 294, 351, 352], "interpolatortyp": [269, 275, 276, 291, 294, 302, 332, 333, 335, 337, 351, 352], "nn": [269, 275, 276, 291, 294, 318, 326, 337, 351], "chest": [269, 294, 302, 332, 333, 335, 337], "channelestimationandequ": [269, 285, 287, 288, 289, 291, 294, 327, 351, 352], "randn": [269, 272, 274, 318], "1j": [269, 272, 273, 274, 302, 318, 322, 327, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 352, 353], "pilotloc": 269, "tk": [269, 359, 360, 362, 363, 365], "dataloc": 269, "isuemobil": [269, 271, 291, 294, 326, 351, 352], "chanel": [269, 270], "ssbgrid": [269, 285, 287, 289, 291, 294, 327, 351, 352], "knot": [269, 275, 276, 337], "ssbestim": [269, 272, 274, 291, 294, 351], "possiblevalu": 269, "handov": [270, 285, 361], "hi": [270, 301], "speialli": 270, "vital": [271, 285], "delv": 271, "gnodeb": [271, 275, 276, 279, 280, 283, 334, 335], "intersymbol": 271, "isi": 271, "accordingli": 271, "sophist": [271, 275, 276], "1x1": 271, "2x2": 271, "3x3": 271, "4x4": 271, "5x5": 271, "6x6": 271, "7x7": 271, "8x8": 271, "reciv": 271, "unquil": 271, "interpolatortypefrequ": [271, 326], "extrapol": [271, 275, 276], "cubicsplin": [271, 326, 334], "blow": 272, "1008": [272, 337], "dmrsdet": 272, "ssbest": [272, 274, 327, 352], "l_max": 272, "897": 272, "halfframeindex": 272, "cellid2": [272, 327], "cellid1": [272, 327], "channelassist": [272, 274, 291, 294, 351], "wire": 273, "fro": 273, "st": [273, 291, 294], "largestpeak": [273, 285, 288, 289, 291, 294, 351], "detectortyp": 273, "peakdetector": 273, "timesynch": 273, "timeindex": 273, "rand": [273, 302, 327, 330, 331, 332, 333, 334, 335, 337, 351], "rxsampl": 273, "exp": [273, 302, 327, 330, 331, 332, 333, 334, 335, 337, 348, 352], "256": [273, 289, 314, 321, 325, 336], "freqoffset": [273, 285, 288, 289, 291, 294, 351], "psspeakindic": [273, 285, 288, 289, 291, 294, 351], "psscorrel": [273, 285, 288, 289, 291, 294, 351], "rasteroffset": [273, 285, 288, 289, 291, 294, 351], "vline": [273, 285, 288, 289, 291, 294, 327, 334, 351], "ymin": [273, 285, 288, 289, 291, 294, 302, 327, 330, 332, 333, 334, 335, 351], "ymax": [273, 285, 288, 289, 291, 294, 302, 327, 330, 332, 333, 334, 335, 351], "purpl": [273, 285, 288, 289, 291, 294, 327, 328, 329, 330, 331, 337, 338, 339, 340, 345, 351], "set_ylim": [273, 285, 288, 289, 291, 294, 301, 302, 305, 309, 311, 323, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 345, 351, 352, 354], "recevi": [273, 355, 361], "________________________________________________________________": [273, 285, 288, 289, 291, 294, 330, 331, 335, 351], "futur": 273, "threshold": [273, 278, 281, 285, 289, 291, 294, 309, 351], "025": [273, 275], "frequencei": 273, "sssdet": 274, "312": [274, 314, 334], "receivecombin": [274, 285, 287, 288, 289, 291, 294, 327, 351, 352], "fundament": [275, 276, 318], "technic": [275, 276], "goal": [275, 276, 280, 295, 318], "sweep": [275, 276, 330], "feedback": [275, 276, 280, 281, 311, 364], "dynam": [275, 276, 279, 280, 281, 283], "summari": [275, 276, 285, 318, 349], "numrxantennaport": 275, "csirsresourcemapp": 275, "akima": [275, 276, 337], "pchip": [275, 276, 337], "spline_and_denois": [275, 337], "smoothen": 275, "lagrangian": 275, "smooth": 275, "channelestimatorcsi": 275, "resourcemappersr": [275, 276, 302, 332, 333, 335], "numsc": [275, 276, 336], "numcyclicshit": 276, "numsrsport": 276, "unequil": 276, "srsresourcemapp": 276, "numcyclicshift": 276, "3gppts38213pdcch": 278, "evalu": [278, 304, 305, 306, 308, 309, 313, 321, 323, 330, 331, 333, 334, 335, 355, 361], "metric": [278, 283, 294, 329, 338], "numcc": [278, 309], "numcandidatesundereach": [278, 307], "nci": [278, 304, 305, 306, 307, 308, 309], "ca": 278, "uesundereach": 278, "likewis": 278, "strategi": [278, 280, 281, 283, 304, 305, 306, 308, 309, 310, 321, 323, 361], "conserv": [278, 280, 304, 305, 306, 307, 308, 309], "aggress": [278, 280, 307], "priorit": [278, 307], "dimenison": 278, "successfulli": [278, 308, 359, 360, 362], "opportun": [278, 279], "ith": 278, "continu": [278, 280, 339], "entir": 278, "135": [278, 301, 309, 314], "those": [278, 330, 331], "sinr": [278, 280, 281, 304], "moder": 278, "decent": 278, "nccep": [278, 304, 305, 306, 307, 308, 309], "numerlogi": [278, 304, 305, 306, 307, 308, 309], "agglevelprobdistribut": [278, 306, 307, 308, 309], "multinomi": [278, 304, 305, 306, 307, 308, 309], "replac": [278, 295, 301, 304, 305, 306, 307, 308, 309, 311, 312], "pdcchschedulerobj": [278, 304, 305, 306, 307, 308, 309], "count": [278, 302, 304, 305, 306, 307, 308, 309, 318, 330, 331, 332, 333, 334, 335, 336, 348], "cceindic": 278, "numblockedu": [278, 304, 305, 306, 307, 308, 309], "14766": 278, "34333": 278, "8673": 278, "37708": 278, "57818": 278, "42": [278, 294, 301, 314, 318, 326, 332, 333, 334, 340, 351], "41": [278, 294, 314, 318, 332, 333, 334, 340, 351], "44": [278, 294, 305, 314, 318, 332, 333, 334, 340, 351], "46": [278, 294, 301, 314, 318, 332, 333, 334, 340, 345, 365], "int64": 278, "mark": [278, 345], "fair": [279, 283], "equit": 279, "prioriti": [279, 299], "cycl": [279, 351], "fashion": [279, 298], "prevent": 279, "monopol": [279, 330, 331, 334], "begin": 279, "maxim": [279, 280, 281, 283], "meet": [279, 280, 283, 304, 310, 321], "qo": [279, 280, 281, 283], "proport": 279, "concern": 279, "strict": 279, "commonli": [279, 334], "balanc": [279, 280], "straightforward": 279, "numuescheduledacrossfreq": [279, 283], "numuescheduledacrosstim": [279, 283], "firstacrosstim": [279, 283], "accorss": 279, "contend": 279, "mulipl": 279, "numsymbolperu": 279, "numrbperu": 279, "resgrid": [279, 323, 328, 330, 331], "postiv": 279, "displayuealloc": 279, "availbl": 279, "appropri": [280, 281, 283, 365], "advers": 280, "mechan": [280, 281, 323, 327, 332], "rssi": 280, "amc": 280, "quickli": [280, 361], "fluctuat": 280, "prevail": [280, 281], "contribut": [280, 349], "mcsindic": 280, "descib": 280, "2nd": [280, 326], "pdchtable3": 280, "singular": [280, 281, 325, 326, 337], "sigma": [280, 281], "p_t": [280, 281, 330, 331, 334, 351], "n_0": [280, 281], "blertarget": 280, "decibel": 280, "blermargin": 280, "margin": [280, 345], "safeti": 280, "phenomena": [280, 349], "failur": 280, "diagram": [280, 290, 292, 293, 295, 329, 338, 339, 355, 361], "uncertain": 280, "ambiti": 280, "table3": 280, "selectmc": [280, 283], "minsnrvalu": 280, "simpler": [281, 342], "account": [281, 359, 362, 363], "favor": 281, "traffic": 281, "demand": 281, "therebi": [281, 353], "snrdbmin": 281, "isrankindicatorsubcarrierspecif": 281, "n_l": 281, "n_t": 281, "n_r": 281, "suit": 281, "protocol": 283, "stack": [283, 302, 318, 327, 334, 335, 352], "deal": 283, "weight": 283, "coordin": [283, 285, 302, 330, 331, 332, 333, 335, 341, 342, 343, 344, 345, 346, 347], "partit": 283, "deliv": 283, "satisfactori": 283, "ravi": 284, "kumar": 284, "super": 284, "manuscript": 284, "isj": 284, "15236": 284, "submit": 284, "journal": 284, "watch": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 365], "youtub": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 365], "view": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 365], "github": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 359, 360, 361, 362, 363, 365], "notebook": [285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354, 361, 363, 365], "breakdown": 285, "uniqu": 285, "nearbi": 285, "clock": [285, 332], "alongsid": 285, "benefit": [285, 298, 323, 334], "ipython": [285, 287, 288, 294, 301, 302, 311, 312, 314, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 342, 345, 348, 349, 352, 354, 365], "html": [285, 287, 288, 294, 301, 302, 311, 312, 314, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 342, 345, 348, 349, 352, 354, 360, 361, 365], "adi": [285, 287, 288, 289, 291, 294, 295], "analogbeamform": [285, 287, 288, 289, 291, 294, 327, 351, 352], "center_frequ": [285, 287, 288, 289, 291], "1e9": [285, 287, 288, 289, 291], "subcarrier_spac": [285, 287, 288, 289, 291], "numofdmsymbol": [285, 287, 288, 289, 291, 294, 351], "sample_r": [285, 287, 288, 289, 291, 294], "puls": [285, 287, 288, 289, 291, 294], "numsamplespersymbol": [285, 287, 288, 289, 291, 294], "buffer_s": [285, 287, 288, 289, 291, 294], "___________________________________________________________________": [285, 287, 289, 291, 294, 351], "3e8": [285, 287, 289, 291, 294, 327, 351, 352], "ssbparamet": [285, 287, 289, 291, 294, 327, 351, 352], "nsc_ssb": [285, 287, 289, 291, 294, 327, 351, 352], "nsymb_ssb": [285, 287, 289, 291, 294, 327, 351, 352], "_______________________________________": [285, 287, 289, 291, 294, 327, 351, 352], "getsequ": [285, 287, 289, 291, 294, 351, 352], "tensorflow": [285, 287, 289, 291, 294, 301, 314, 318, 351, 352, 361, 362, 365], "pbchobject": [285, 287, 289, 291, 294, 327, 351, 352], "ssbrgobject": [285, 287, 289, 291, 294, 327, 351, 352], "numofguardcarri": [285, 287, 289, 291, 294, 351], "firstscindex": [285, 287, 289, 291, 294, 351], "__________________________________________________": [285, 287, 289, 291, 294], "x_time": [285, 287, 289, 291, 294, 351], "flatten": [285, 287, 289, 291, 294, 336, 348, 351, 352], "______________________________________________________": [285, 287, 289, 291, 294, 351], "imshow": [285, 287, 289, 291, 294, 311, 312, 327, 328, 330, 331, 342, 349, 351, 352], "cmap": [285, 287, 289, 291, 294, 311, 312, 327, 328, 330, 331, 337, 342, 349, 351, 352], "hot": [285, 287, 289, 291, 294, 318, 327, 330, 331, 337, 342, 349, 351, 352], "auto": [285, 287, 289, 291, 294, 311, 312, 318, 327, 328, 330, 331, 342, 349, 351, 352], "gca": [285, 287, 289, 291, 294, 330, 331, 337, 342, 349, 351], "linestyl": [285, 287, 289, 291, 294, 301, 302, 304, 305, 306, 307, 308, 311, 318, 322, 323, 325, 326, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 342, 349, 351, 352, 354], "linewidth": [285, 287, 289, 291, 294, 330, 331, 337, 342, 349, 351], "gridlin": [285, 287, 289, 291, 294, 330, 331, 337, 342, 349, 351], "tick": [285, 287, 289, 291, 294, 309, 327, 330, 331, 337, 342, 349, 351], "pluto": [285, 287, 288, 289, 291, 294, 295, 364], "ip": [285, 287, 288, 289, 291, 294], "168": [285, 287, 288, 289, 291, 294, 314, 334, 353], "tx_rf_bandwidth": [285, 287, 288, 289, 291, 294], "filter": [285, 287, 288, 289, 291, 294, 334], "cutoff": [285, 287, 288, 289, 291, 294], "tx_lo": [285, 287, 288, 289, 291, 294], "tx_hardwaregain_chan0": [285, 287, 288, 289, 291, 294], "gain_control_mode_chan0": [285, 287, 288, 289, 291, 294], "rx_hardwaregain_chan0": [285, 287, 288, 289, 291, 294], "74": [285, 287, 288, 289, 291, 294, 301, 314, 332, 333, 334, 340], "slow_attack": [285, 287, 288, 289, 291, 294], "agc": [285, 287, 288, 289, 291, 294], "fast_attack": [285, 287, 288, 289, 291, 294], "rx_lo": [285, 287, 288, 289, 291, 294], "rx_rf_bandwidth": [285, 287, 288, 289, 291, 294], "rx_buffer_s": [285, 287, 288, 289, 291, 294], "tx_cyclic_buff": [285, 287, 289, 291, 294], "safe": [285, 288, 289, 291, 294], "raw_data": [285, 288, 289, 291, 294], "rx_sampl": [285, 288, 289, 291, 294], "tx_destroy_buff": [285, 288, 289, 291, 294], "rn_id2": [285, 288, 289, 291, 294, 351], "ssboffset": [285, 288, 289, 291, 294, 351], "startingsubcarrierindic": [285, 288, 289, 291, 294, 351], "scalefig": [285, 288, 291, 294, 341, 343, 344, 345, 347], "figsiz": [285, 288, 291, 294, 301, 302, 311, 312, 325, 326, 327, 328, 330, 333, 336, 337, 341, 342, 343, 344, 345, 346, 347, 349, 354, 365], "374": [285, 314], "interact": [285, 359, 360, 361, 362], "maplotlib": 285, "anim": [285, 287, 288, 342, 346, 349, 350, 355], "squeez": 285, "pssrtime": 285, "draw": [285, 329, 345], "def": [285, 289, 318, 345], "With": [285, 306, 328, 342, 345, 346, 349], "set_xlim": [285, 289, 291, 294, 301, 302, 305, 307, 308, 311, 327, 329, 330, 331, 332, 333, 334, 335, 336, 341, 342, 343, 344, 345, 347, 349, 351], "minx": 285, "maxi": 285, "freq": [285, 323], "fontsiz": [285, 301, 304, 305, 306, 307, 308, 311, 329, 338, 339, 340, 345, 346, 352, 353], "85": [285, 309, 311, 312, 314, 326, 330, 331, 332, 333, 334, 335, 354], "suptitl": [285, 341, 342, 343, 344, 345, 347, 349], "millisecond": [285, 345], "drawn": [285, 330, 331, 342, 345], "funcanim": [285, 345], "blit": [285, 345], "mp4": [285, 345], "ffmpeg": [285, 345], "writer": [285, 345], "writervideo": [285, 345], "ffmpegwrit": [285, 345], "fp": [285, 345], "simulationofnodemobl": [285, 345], "extra_arg": [285, 345], "vcodec": [285, 345], "libx264": [285, 345], "gif": [285, 345], "fig1ur": 285, "scalefig1": 285, "max1i": 285, "anim1": 285, "overall_fram": 285, "sdr": [286, 290, 292, 293, 297, 361, 364], "setup": [286, 290, 292, 293, 295, 355, 361, 362], "save": [286, 295, 314, 330, 331, 332, 333, 334, 335, 345, 355, 361], "run": [286, 295, 318, 328, 345, 359, 360, 362, 363], "288": [287, 314, 347, 351], "362": [288, 314], "broadacast": [289, 291], "__": [289, 291, 330, 331, 334], "scscarrier": [289, 294, 351, 352], "ssbperiod": [289, 294, 351, 352], "nframe": [289, 294, 327, 351, 352], "savefig": [289, 330, 336, 340, 365], "svg": [289, 330, 336, 365], "png": [289, 330, 336, 340], "axhlin": [289, 291, 294, 302, 330, 331, 332, 333, 334, 335, 351], "axvlin": [289, 291, 294, 302, 330, 331, 332, 333, 334, 335, 337, 345, 351], "firstsymbolindex": 289, "timeouterror": 289, "traceback": 289, "recent": 289, "file": [289, 314, 359, 362, 363], "miniconda3": [289, 359, 360, 362], "env": 289, "mysdr": 289, "lib": 289, "python3": 289, "context_manag": 289, "py": [289, 302, 323, 334, 335, 351, 352], "uri": 289, "_device_nam": 289, "gt": [289, 291, 294, 311, 314, 318, 330, 331, 341, 342, 343, 344, 345, 346, 347, 348, 351], "_ctx": 289, "iio": 289, "baseexcept": 289, "1358": 289, "_context": 289, "1357": 289, "elif": [289, 291, 294, 325, 337, 348, 351, 353], "_isstr": 289, "_new_uri": 289, "ascii": 289, "1359": 289, "_check_nul": 289, "func": 289, "55": [289, 294, 309, 314, 332, 333, 334, 340], "err": 289, "get_last_error": 289, "_system": 289, "get_errno": 289, "oserror": 289, "_strerror": 289, "errno": 289, "110": [289, 309, 314, 332, 338, 365], "rx_tx": 289, "717": 289, "rx_tx_def": 289, "714": 289, "715": 289, "union": 289, "716": 289, "rx_def": 289, "718": 289, "tx_def": 289, "720": 289, "__post_init__": 289, "636": 289, "632": 289, "633": 289, "634": 289, "shared_def": 289, "638": 289, "_rx_data_device_nam": 289, "639": 289, "_rxadc": 289, "find_devic": 289, "586": 289, "584": 289, "uri_ctx": 289, "585": 289, "587": [289, 334], "588": [289, 334], "required_devic": 289, "_control_device_nam": 289, "2048": [291, 294, 339, 342, 349], "894": 291, "pssstartindex": [291, 294, 351], "ssbscsoffset": [291, 294, 351], "magnitud": [291, 294, 330, 337, 350, 355], "spreactrum": [291, 294], "n_id_1": [291, 294], "rn_id1": [291, 294, 351], "rn_id": [291, 294, 351], "rxssbobject": [291, 294, 351], "rxdmrsindic": [291, 294, 351], "dmrsdetect": [291, 294, 351], "rssbindex": [291, 294, 351], "rhrfbit": [291, 294, 351], "rxdmrsobject": [291, 294, 351], "rxdmrsseq": [291, 294, 351], "interpolt": [291, 294, 351, 352], "chanest": [291, 294, 351, 352], "rxpbchindic": [291, 294, 351], "pbchestim": [291, 294, 351, 352], "extractmibinfo": [291, 294, 351, 352], "rxmib": [291, 294, 351, 352], "lw": [291, 294, 301, 302, 311, 318, 322, 325, 326, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 345, 351, 352, 365], "loc": [291, 294, 301, 309, 311, 323, 325, 326, 329, 330, 331, 334, 337, 338, 339, 340, 352, 353, 354, 365], "lt": [291, 294, 311, 318, 330, 331, 341, 342, 343, 344, 345, 346, 347, 348, 351], "frozen": [291, 294], "494": [291, 294, 323, 351, 352], "userwarn": [291, 294, 323, 351, 352], "ressourc": [291, 294, 323, 351, 352], "blocklength": [291, 294, 323, 351, 352], "cpu_onli": [291, 294, 323, 351, 352], "2000000000": 291, "intrafreqreselect": [291, 294, 351], "303": [291, 314], "issbindex": [291, 294, 351], "couldn": [291, 294, 351], "id1": [291, 294, 351], "uncod": [291, 294, 322, 351], "uncodedb": [291, 294, 311, 322, 323, 325, 326, 351, 354], "codedb": [291, 294, 311, 323, 325, 326, 351, 354], "verif": [292, 293, 295], "recours": [293, 295], "cost": [294, 301, 305], "thm": 294, "coars": 294, "170": [294, 314], "pdschlowerphyconfig": [294, 311, 325, 326, 354], "pdschupperphyconfig": [294, 311, 325, 326, 354], "51216": 294, "layerpertb": [294, 311, 354], "6015625": 294, "85680": 294, "65536": [294, 311, 323, 325, 326, 354], "pdschlowerphychain": [294, 311, 325, 326, 354], "transmis": [294, 311, 325, 326, 354], "sqrt": [294, 302, 311, 318, 322, 323, 327, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 345, 352, 353], "norm": [294, 302, 318, 327, 328, 330, 331, 332, 333, 334, 335, 336, 337, 341, 343, 344, 349, 351], "0001": [294, 342], "640x480": [294, 311, 347, 348], "xlabel": [294, 311, 318, 348], "ylabel": [294, 311, 318, 348], "ssbresgrid": 294, "112": [294, 314, 332, 353], "11629": 294, "328723559462": 294, "scalingfactor": 294, "pulseshap": 294, "1101004": 294, "1038": 294, "dtection": 294, "1000000000": 294, "694": [294, 334], "pdschstartindex": 294, "pdschgrid": 294, "53": [294, 301, 314, 327, 332, 333, 334, 337, 340], "polyord": 294, "Will": 294, "rsymbol": 294, "laydemap": 294, "rlmsym": 294, "rxllr": 294, "scrobject": 294, "rscrbit": 294, "pdschupphydec": [294, 311, 325, 326, 354], "thoughput": 294, "hertz": 294, "slotdur": [294, 301], "spectaleffici": 294, "mbp": [294, 301], "412": 294, "2804": 294, "1428571428571429": 294, "7893069130182532e": 294, "softwar": [295, 312, 364], "board": [295, 361], "our": [295, 330, 331, 333, 334, 359, 360, 361, 362], "prototyp": [295, 361], "test": [295, 301, 321, 361, 364], "xilinx": 295, "zynq": 295, "ultrascal": 295, "rfsoc": 295, "pynq": 295, "ni": [295, 364], "usrp": [295, 364], "b200": 295, "b205": 295, "mini": [295, 364], "b210": 295, "uhd": 295, "analog": [295, 299, 355, 364], "phasor": 295, "exhaust": [295, 330, 331, 333, 334], "sole": 295, "famili": [295, 336], "mention": 295, "encount": [295, 302, 334, 335], "difficulti": 295, "hesit": 295, "gigayasa": [295, 298, 359, 360, 361, 362, 363], "com": [295, 359, 360, 361, 362, 363], "glad": 295, "organ": [295, 325, 326, 337, 365], "script": [295, 328, 329, 338, 339, 353, 359, 360, 361, 362], "audienc": [296, 297, 351], "taught": 296, "ii": [296, 299, 310, 318, 321, 361, 364], "remot": [296, 364], "cours": [297, 361], "introductori": [297, 361], "2023": [298, 301, 361, 365], "reserv": [298, 328], "r23": 298, "logo": 298, "regist": 298, "privat": 298, "consent": 298, "public": [298, 361], "owner": 298, "product": [298, 341, 343, 344, 361], "rather": 298, "editori": 298, "intent": 298, "infring": 298, "reveal": 298, "copyright": [298, 361], "unauthor": 298, "reproduct": 298, "strictli": 298, "prohibit": 298, "legal": 298, "action": 298, "herein": 298, "furnish": 298, "subject": [298, 359, 362, 363], "notic": 298, "guarante": 298, "commit": 298, "terrestri": [299, 364], "ntn": [299, 364], "ai": [299, 321, 327, 352, 361, 364], "ml": [299, 321, 361, 364], "latest": [299, 359, 360, 361, 362], "architectur": [299, 359, 362, 363], "noma": 299, "otf": 299, "twin": [299, 301], "r23a": [300, 359, 360, 361, 363, 365], "teach": [301, 361], "neural": [301, 318], "convent": 301, "combinatori": 301, "consum": 301, "internet": 301, "thing": [301, 361], "iot": [301, 355, 361], "propos": 301, "er": [301, 311, 352], "rapidli": 301, "might": [301, 332, 341, 342, 346, 348, 349, 359, 360, 361, 362], "hour": 301, "gb": 301, "excercis": 301, "numfram": 301, "numpoint": [301, 311, 323, 325, 326, 327, 352, 354], "numtrainingsampl": 301, "ticker": [301, 311, 354], "formatstrformatt": [301, 311, 354], "nodesperlay": 301, "hidden": 301, "activationfunct": 301, "numtestsampl": 301, "relu": [301, 318], "displaymap": 301, "bitloc": 301, "displayrealpart": 301, "651u": 301, "0184e": 301, "04": [301, 308, 314, 318], "9938": 301, "580u": 301, "617u": 301, "5833e": 301, "9970": 301, "620u": 301, "660u": 301, "0046": 301, "9902": 301, "02": [301, 302, 304, 318, 333], "628u": 301, "4096": [301, 302, 323, 328, 332, 333], "585u": 301, "5838e": 301, "9895": 301, "95": [301, 302, 305, 309, 314, 331, 332, 333, 334, 337, 352], "525u": 301, "579u": 301, "0524e": 301, "9724": 301, "97": [301, 314, 332, 333, 334], "532u": 301, "595u": 301, "8327e": 301, "9935": 301, "559u": 301, "591u": 301, "0649e": 301, "9734": 301, "528u": [301, 318], "611u": 301, "3079e": 301, "9711": 301, "556u": [301, 318], "3204e": [301, 314], "9839": 301, "scspace": 301, "numtx": 301, "4785": 301, "001": [301, 353], "artifici": [301, 318, 321, 361, 364], "ann": [301, 318], "mimic": 301, "fed": [301, 318], "adam": [301, 318], "levenberg": 301, "marquardt": 301, "backpropag": 301, "batch_siz": [301, 314, 318], "reason": [301, 307], "slighli": 301, "paper": [301, 304, 305, 306, 307, 308, 309, 361], "claim": 301, "unabl": 301, "predict": [301, 311, 318, 342, 356], "emit": [301, 334], "maxthroughput": 301, "mcsidx": 301, "pdschupphi": 301, "snrindex": [301, 318, 322, 329, 338, 339], "tbest": 301, "mod": [301, 345, 353], "_______________________________________________________": 301, "025147934868943605": 301, "028224781572676726": 301, "1536": 301, "776u": 301, "7875": 301, "9571": 301, "767u": 301, "0052": 301, "9923": 301, "761u": 301, "0027": 301, "9948": 301, "757u": 301, "0019": 301, "9952": 301, "647u": 301, "0018": 301, "49725": 301, "523u": [301, 318], "02535378607360339": 301, "511111111111111": 301, "016092136616362194": 301, "995": 301, "302160": 301, "00000000023": [301, 311], "01816587238549113": 301, "943u": 301, "8334": 301, "9536": 301, "942u": 301, "0104": 301, "9900": 301, "950u": 301, "0034": 301, "9942": 301, "945u": 301, "0020": 301, "9954": 301, "675u": 301, "0013": [301, 314], "9964": 301, "593u": 301, "01622584061424411": 301, "9975": 301, "151079": 301, "99999999677": 301, "622222222222223": 301, "0077429176595181365": 301, "6043199": 301, "999999999": 301, "009148795340217104": 301, "9425": 301, "3474839": 301, "9999999995": [301, 311, 325], "1m": [301, 318, 348], "8134": 301, "9645": 301, "988u": 301, "0096": 301, "9915": 301, "976u": 301, "0028": 301, "9941": 301, "967u": 301, "9953": 301, "678u": 301, "0021": 301, "9961": 301, "61": [301, 302, 314, 332, 333, 334, 340], "599u": 301, "00787595975642044": 301, "733333333333333": 301, "003140058247286206": 301, "645": 301, "21453360": 301, "003892308710616892": 301, "7224999999999999": [301, 311], "16769880": 301, "000000004": 301, "9520": 301, "9576": 301, "997u": 301, "0037": [301, 314], "9933": 301, "989u": 301, "9955": 301, "993u": 301, "0015": [301, 314, 318], "665u": 301, "0014": 301, "9963": 301, "63": [301, 314, 332, 333, 334, 340], "609u": 301, "003194334127614509": 301, "6525000000000001": 301, "21000119": 301, "999999996": [301, 354], "844444444444445": 301, "000560630129732592": 301, "29000000000000004": 301, "42906720": 301, "0007045935927985173": 301, "3325": 301, "40338360": 301, "958u": 301, "9824": 301, "9567": 301, "965u": 301, "0100": 301, "953u": 301, "0030": [301, 314], "9931": 301, "9947": 301, "9950": 301, "598u": 301, "0005801562086311888": 301, "29500000000000004": 301, "42604560": 301, "955555555555556": 301, "00010424940428911835": 301, "08499999999999996": 301, "55295280": 301, "0001290706910246227": 301, "10499999999999998": 301, "54086640": 301, "971u": 301, "0082": 301, "9494": 301, "0094": 301, "948u": 301, "949u": 301, "0023": 301, "652u": 301, "00010325655281969817": 301, "066666666666667": 301, "942811755361398e": 301, "010000000000000009": [301, 325, 352], "59827680": 301, "1252316653428647e": 301, "015000000000000013": [301, 323, 354], "59525519": 301, "99999999": 301, "972u": 301, "1142": 301, "9508": 301, "951u": 301, "0042": 301, "9925": 301, "9949": 301, "947u": 301, "0016": [301, 318], "666u": 301, "0012": 301, "9960": 301, "597564204395023e": 301, "012499999999999956": 301, "59676600": 301, "177777777777778": 301, "3095048980672493e": 301, "0024999999999999467": 301, "60280920": 301, "60432000": 301, "0939": 301, "9534": 301, "930u": 301, "0038": 301, "9945": 301, "918u": 301, "926u": 301, "9956": 301, "679u": 301, "0017": [301, 314], "569u": 301, "28888888888889": 301, "619009796134499e": 301, "0050000000000000044": [301, 323, 325], "60129839": 301, "935u": 301, "0920": 301, "9517": 301, "917u": 301, "0095": 301, "9910": 301, "924u": 301, "9939": 301, "909u": 301, "0026": 301, "655u": 301, "0024": 301, "916u": 301, "2061": 301, "9545": 301, "900u": 301, "0070": 301, "9918": 301, "904u": 301, "9959": 301, "661u": 301, "0031": 301, "586u": 301, "040188703800104114": 301, "04859621724796113": 301, "968u": 301, "8221": 301, "8768": 301, "952u": 301, "0433": 301, "9830": 301, "0163": 301, "9899": 301, "939u": 301, "0109": 301, "9908": 301, "9919": 301, "581u": 301, "04115499739718896": 301, "644444444444444": 301, "026602680895366996": 301, "036362571577303486": 301, "980u": 301, "9707": 301, "8692": 301, "962u": 301, "1349": [301, 334], "9510": 301, "0256": 301, "9822": 301, "940u": 301, "0161": 301, "9851": 301, "0138": 301, "9869": 301, "69": [301, 314, 332, 333, 334, 340], "590u": 301, "028235944820406037": 301, "78888888888889": 301, "014358623980565678": 301, "9833333333333333": 301, "1536800": 301, "0000000047": 301, "023304919312857886": 301, "946u": 301, "2150": 301, "8748": 301, "0673": 301, "9768": 301, "0209": 301, "9893": 301, "0149": 301, "0115": 301, "594u": 301, "01549540170050321": 301, "985": 301, "1383120": 301, "0000000012": 301, "933333333333334": [301, 311], "005127754641679681": 301, "8066666666666666": 301, "17826880": 301, "010303444386604198": 301, "2766240": 301, "0000000023": 301, "981u": 301, "3736": 301, "8757": 301, "966u": 301, "1384": 301, "9678": 301, "986u": 301, "0278": 301, "9870": 301, "955u": 301, "0187": 301, "9882": 301, "682u": 301, "0160": 301, "9887": 301, "87": [301, 314, 332, 333, 334, 365], "603u": 301, "006156949505465903": 301, "845": 301, "14292240": 301, "000000002": [301, 311], "077777777777778": 301, "0009125021690091967": 301, "405": [301, 314], "54863759": 301, "0024898056567759846": 301, "685": 301, "29045519": 301, "889u": 301, "4978": 301, "8656": 301, "848u": 301, "1237": 301, "9658": 301, "858u": 301, "0273": 301, "9871": 301, "862u": 301, "0174": 301, "9889": 301, "644u": 301, "0151": 301, "9886": 301, "86": [301, 314, 325, 332, 333, 334], "564u": [301, 318], "0012116085372201979": 301, "44333333333333336": 301, "51329119": 301, "222222222222223": [301, 326], "00011886170397362485": 301, "11333333333333329": 301, "81757760": 301, "00032838799236508765": 301, "22999999999999998": [301, 323], "71000160": 301, "911u": 301, "9472": 301, "8702": 301, "1385": 301, "9595": 301, "0353": 301, "9880": 301, "0234": 301, "9905": 301, "635u": 301, "0182": 301, "9921": 301, "00018154606975533577": 301, "79759920": 301, "366666666666667": 301, "326739545375672e": 301, "90824880": 301, "017178552837064e": 301, "026666666666666616": 301, "89749120": 301, "890u": 301, "3447": 301, "8683": 301, "880u": 301, "0913": 301, "9728": 301, "870u": 301, "0263": 301, "0154": 301, "9913": 301, "634u": 301, "0113": 301, "9928": 301, "541u": 301, "1929550581294465e": 301, "01666666666666672": 301, "90671200": 301, "92208000": 301, "1858": 301, "8540": 301, "1405": 301, "9655": 301, "0335": 301, "9883": 301, "0232": 301, "9897": 301, "654u": 301, "0198": 301, "9888": 301, "88": [301, 314, 332, 333, 334], "1690091965989935e": 301, "0016666666666667052": 301, "92054319": 301, "655555555555557": 301, "902u": 301, "6813": 301, "8733": 301, "905u": 301, "1776": 301, "9657": 301, "0431": 301, "9854": 301, "923u": 301, "9884": 301, "639u": 301, "0189": 301, "9894": [301, 348], "94": [301, 314, 332, 333, 334], "557u": [301, 318], "2463": 301, "8624": 301, "861u": 301, "9677": 301, "859u": 301, "0383": 301, "884u": 301, "0240": 301, "570u": 301, "009899100172025936": 301, "92": [301, 314, 325, 332, 333, 334], "9672959": 301, "999999994": 301, "026978959904724098": 301, "933u": 301, "5861": 301, "8235": 301, "920u": 301, "7076": 301, "9146": 301, "2689": 301, "9565": 301, "2034": 301, "9612": 301, "9594": 301, "04042411009659918": 301, "004650489612280005": 301, "7362500000000001": 301, "31890539": 301, "01804337038507344": 301, "302279": 301, "99999999354": 301, "7435": 301, "8228": 301, "6509": 301, "9322": 301, "961u": 301, "2652": 301, "9601": 301, "1813": [301, 334], "9653": 301, "1469": 301, "9664": 301, "027669544792907237": 301, "622222222222222": 301, "00196969696969697": 301, "49250000000000005": 301, "61362839": 301, "010304684398570862": 301, "96625": 301, "4080779": 301, "9999999935": 301, "910u": 301, "7789": 301, "8164": 301, "0580": 301, "9194": 301, "879u": 301, "3600": 301, "9580": 301, "869u": 301, "2619": 301, "9620": 301, "2258": 301, "9636": 301, "02898752811962419": 301, "733333333333334": 301, "00041898240042344845": 301, "21375": 301, "95067060": 301, "003805577610162763": 301, "30228000": 301, "907u": 301, "4401": 301, "8270": 301, "875u": 301, "8994": 301, "9237": 301, "3270": 301, "9573": 301, "2392": 301, "9637": 301, "624u": 301, "2117": 301, "560u": [301, 318], "021652937673680032": 301, "262935027127167e": 301, "07125000000000004": 301, "112297019": 301, "000882956199550086": 301, "37124999999999997": 301, "76023420": 301, "2444": 301, "8299": 301, "5827": 301, "9457": 301, "2849": 301, "2227": 301, "9648": 301, "1923": 301, "9681": 301, "81": [301, 314, 332, 333, 334, 340], "568u": [301, 318], "008769849146486701": 301, "88125": 301, "14358300": 301, "60447267434167e": 301, "018750000000000044": 301, "118644899": 301, "00021106259097525474": 301, "11250000000000004": 301, "107309399": 301, "5266": 301, "8456": 301, "0916": 301, "9118": 301, "4076": 301, "9557": 301, "898u": 301, "2505": 301, "9698": 301, "2088": 301, "540u": [301, 318], "005416832076220722": 301, "76125": 301, "28867740": 301, "066666666666666": 301, "270477702792113e": 301, "0012499999999999734": 301, "120760860": 301, "4721450310969962e": 301, "7788": 301, "8309": 301, "9726": 301, "9291": 301, "3830": 301, "9591": 301, "897u": 301, "2585": 301, "9626": 301, "9646": 301, "565u": 301, "0014949715495567023": 301, "71942640": 301, "177777777777777": 301, "120912000": 301, "308191081116845e": 301, "899u": 301, "7222": 301, "8061": 301, "6367": 301, "8986": 301, "5433": 301, "9480": 301, "3280": 301, "9633": 301, "613u": 301, "2776": 301, "9649": 301, "587u": [301, 318], "0021064906709011514": 301, "56828640": 301, "8219": 301, "8436": 301, "9256": 301, "4170": 301, "9586": 301, "3252": 301, "9659": 301, "2890": 301, "9674": 301, "572u": 301, "0008334987428873892": 301, "2825": 301, "86754360": 301, "931u": 301, "7185": 301, "8259": 301, "0952": 301, "9265": 301, "4467": 301, "3370": 301, "9619": 301, "623u": 301, "3024": 301, "9624": 301, "574u": 301, "0002639936482731243": 301, "106402560": 301, "mediumspringgreen": [301, 322], "solid": [301, 302, 304, 305, 306, 307, 308, 322, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340], "mec": [301, 311, 318, 322, 323, 325, 326, 352], "crimson": [301, 302, 322, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 345, 346], "mfc": [301, 311, 318, 322, 352], "darkblu": [301, 322], "green": [301, 318, 322, 327, 329, 330, 331, 336, 338, 339, 340], "oliv": [301, 318, 322, 329, 338, 339, 340], "tomato": [301, 318, 322], "cyan": [301, 318, 322, 327, 329, 338, 339, 340], "dataset_2": 301, "axr": 301, "twinx": 301, "rcparam": [301, 336, 338, 339, 340], "font": [301, 336, 338, 339, 340], "aggregateddatabas": 301, "npz": [301, 302, 312, 314, 323, 325, 326, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340, 352, 354], "xaxi": [301, 311, 354], "set_major_formatt": [301, 311, 354], "1f": [301, 354], "author": 301, "paer": 301, "slighlti": 301, "complexitylogmap": 301, "832": 301, "3840": 301, "17408": 301, "complexitymaxlogmap": 301, "208": [301, 314], "680": 301, "5000": [301, 306, 314, 355], "complexityllrnet": 301, "608": 301, "1472": 301, "normalizedcomplexitymaxlogmap": 301, "normalizedcomplexityllrnet": 301, "throughputlogmap": 301, "throughputmaxlogmap": 301, "throughputllrnet": 301, "59": [301, 314, 332, 333, 334, 340], "normalizedthroughputmaxlogmap": 301, "normalizedthroughputllrnet": 301, "snrdbvalu": 301, "edgecolor": [301, 302, 330, 331, 332, 333, 334, 335, 345], "impract": 301, "onlin": 301, "computation": 301, "fpga": 301, "soc": 301, "bulkier": 301, "shental": 301, "hoydi": [301, 318], "machin": [301, 312, 321, 361, 364], "llrning": 301, "softli": 301, "globecom": 301, "gc": 301, "wkshp": 301, "waikoloa": 301, "usa": 301, "gcwkshps45667": 301, "9024433": 301, "lack": 302, "suffici": 302, "insuffici": 302, "matlib": [302, 331, 332, 333, 334, 335, 337], "io": [302, 331, 332, 333, 334, 335, 337, 360, 361], "spio": [302, 331, 332, 333, 334, 335, 337], "constant": [302, 330, 331, 332, 333, 334, 335, 337], "propterrain": [302, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 349, 351], "numofbss": [302, 330, 332, 333, 335, 337], "nbss": [302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352], "nue": [302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352], "ueantarrai": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "bsantarrai": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "mindist": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "ueht": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "bsht": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "bslayouttyp": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "uedroptyp": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 347, 348, 351, 352, 354], "htdist": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "uedist": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 343, 344, 351, 352, 354], "nsectorspersit": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 354], "maxnumfloor": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "minnumfloor": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 351, 352, 354], "paramgen": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 348, 351, 352, 354], "130": [302, 309, 314, 330, 332, 333, 335], "numantenna": [302, 311, 312, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 342, 345, 346, 349, 351, 352, 354], "srsperiodicityinslot": [302, 332, 333, 335], "srsoffsetinslot": [302, 332, 333, 335], "numuesperslot": [302, 332, 333, 335], "frameindic": [302, 332, 333, 335], "slotindic": [302, 332, 333, 335], "lpath2": 302, "xoaest": [302, 334, 335], "srsgrid": [302, 332, 333, 335], "srsobject": [302, 332, 333, 335], "xgrid": [302, 330, 331, 332, 333, 334, 335, 337, 352], "del": [302, 332, 333, 335], "pt_dbm": [302, 330, 331, 332, 333, 334, 335, 337, 351], "wt": [302, 330, 331, 332, 333, 335, 337], "xf": [302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 352], "xgrid1": [302, 330, 331, 332, 333, 335, 337], "ueindic": [302, 332, 333, 335], "yf": [302, 323, 327, 328, 330, 331, 332, 333, 334, 335, 337, 352], "boltzmanconst": [302, 327, 330, 331, 332, 333, 334, 335, 337], "380649": [302, 327, 330, 331, 332, 333, 334, 335, 337, 351], "temperatur": [302, 327, 330, 331, 332, 333, 334, 335, 337], "300": [302, 314, 327, 330, 331, 332, 333, 334, 335, 337, 342, 345, 351], "noisefiguredbi": [302, 337], "noisefigur": [302, 337], "noisepow": [302, 327, 330, 331, 332, 333, 334, 335, 337], "kppm": [302, 327, 330, 331, 332, 333, 334, 335, 337, 351], "fcfo": [302, 327, 330, 331, 332, 333, 334, 335, 337, 351], "standard_norm": [302, 318, 322, 329, 332, 333, 335, 338, 339, 353], "hfest": [302, 330, 331, 332, 333, 335, 337], "chgrid": [302, 332, 333, 335], "hest": [302, 311, 332, 333, 335, 337], "delayestim": [302, 330, 331, 332, 333], "home": [302, 323, 335, 351, 352], "tenet": [302, 323, 335, 351, 352], "startup": [302, 323, 335, 351, 352], "5g_toolkit": [302, 323, 335, 351, 352, 361], "version15": [302, 323, 335, 352], "hybrid_positioning_in_5g_network": 302, "angle_estim": [302, 335], "104": [302, 314, 332, 334], "runtimewarn": [302, 334, 335], "arcsin": [302, 335], "kx": [302, 335], "ui": [302, 327, 335, 352], "ky": [302, 335], "vi": [302, 335], "rxposit": [302, 330, 331, 332, 333, 334, 335], "error1": 302, "bsindices1": 302, "argsort": [302, 330, 331, 332, 333, 334, 335, 348], "error2": 302, "bsindices2": 302, "error31": 302, "bsindices31": 302, "error32": 302, "bsindices32": 302, "error41": 302, "bsindices41": 302, "error42": 302, "bsindices42": 302, "rxpositionestimate1": 302, "rxpositionestimate2": 302, "rxpositionestimate3": 302, "rxpositionestimate4": 302, "rangeest_2d": [302, 330, 331, 332, 333, 334, 335], "linestyle_tupl": [302, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340], "dash": [302, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340], "dashdot": [302, 329, 330, 331, 332, 333, 334, 335, 338, 339, 340], "loos": [302, 330, 331, 332, 333, 334, 335], "dashdotdot": [302, 330, 331, 332, 333, 334, 335], "circle1": [302, 330, 331, 332, 333, 334, 335], "zorder": [302, 327, 330, 331, 332, 333, 334, 335, 342, 345, 346], "add_artist": [302, 330, 331, 332, 333, 334, 335], "nbin": [302, 330, 331, 332, 333, 334, 335, 348], "xlimit": [302, 330, 331, 332, 333, 334, 335], "ylimit": [302, 330, 331, 332, 333, 334, 335], "poserror2dtdoa": 302, "poserror3dtdoa": 302, "isnan": [302, 330, 331, 332, 333, 334, 335, 337], "bins_count": [302, 330, 331, 332, 333, 334, 335, 348], "histogram": [302, 330, 331, 332, 333, 334, 335, 336, 348], "bin": [302, 330, 331, 332, 333, 334, 335, 336, 348], "pdf": [302, 330, 331, 332, 333, 334, 335, 336, 348], "cdf": [302, 330, 331, 332, 333, 334, 335, 336, 348], "cumsum": [302, 330, 331, 332, 333, 334, 335, 336, 348], "poserror2daoa": 302, "poserror3daoa": 302, "poserror2dhybrid": 302, "poserror3dhybrid": 302, "poserror2dhybrid2": 302, "poserror3dhybrid2": 302, "set_ytick": [302, 305, 311, 323, 325, 326, 328, 330, 331, 332, 333, 334, 335, 337, 352, 354], "magenta": [302, 330, 331, 332, 333, 334, 335], "66": [302, 314, 329, 330, 331, 332, 333, 334, 335, 340], "midnightblu": [302, 328, 330, 331, 332, 333, 334, 335, 337, 345], "cm": [302, 330, 331, 332, 333, 334, 335], "databas": [302, 313, 314, 321, 323, 325, 326, 329, 330, 331, 332, 333, 334, 335, 338, 339, 352, 361], "poserror3dhybridtdoa_aoa": 302, "poserror2dhybridtdoa_aoa": 302, "poserror3dhybridtoa_aoa": 302, "poserror2dhybridtoa_aoa": 302, "fact": 304, "____________________________________________________________________________________________________________________": 304, "maxnumu": [304, 305, 307], "parameter": 304, "agglevelprobdistributionforgoodcoverag": 304, "outcom": 304, "blockag": [304, 321, 361], "probofblockingforgoodcoverag": 304, "enough": 304, "prob": [304, 305, 306, 307, 308, 309, 318, 336, 348], "uealdistribut": [304, 305, 306, 307, 308, 309], "agglevelprobdistributionformediumcoverag": 304, "probofblockingformediumcoverag": 304, "agglevelprobdistributionforextremecoverag": 304, "probofblockingforextremecoverag": 304, "clearli": 304, "recreat": [304, 305, 306, 307, 308, 309], "referenc": [304, 305, 306, 307, 308, 309], "mohammad": [304, 305, 306, 307, 308, 309], "mozaffari": [304, 305, 306, 307, 308, 309], "eric": [304, 305, 306, 307, 308, 309], "kittipong": [304, 305, 306, 307, 308, 309], "kittichokechai": [304, 305, 306, 307, 308, 309], "intuit": [305, 308], "probabilti": [305, 308], "al1": [305, 306], "agglevelprobdistributionforal1": 305, "probofblockingforal1": [305, 306], "al2": [305, 306], "agglevelprobdistributionforal2": 305, "probofblockingforal2": [305, 306], "al4": [305, 306], "agglevelprobdistributionforal4": 305, "probofblockingforal4": [305, 306], "al8": 305, "agglevelprobdistributionforal8": 305, "probofblockingforal8": 305, "al16": 305, "agglevelprobdistributionforal16": 305, "probofblockingforal16": 305, "tick_param": [305, 328, 330, 331, 337], "grid_linewidth": [305, 328, 330, 331, 337], "grid_linestyl": [305, 328, 330, 331, 337], "seper": 306, "supportednumcand": 306, "versu": [306, 307, 308], "incres": 306, "reduct": [306, 312], "benefici": [306, 309], "probail": 306, "bd": [306, 308], "probofblockingforstrategy1": 307, "probofblockingforstrategy2": 307, "outperform": 307, "aproxim": 307, "fewer": 308, "flexibilti": 308, "around": [308, 330, 331, 342, 345, 346, 349], "mincc": [308, 309], "maxcc": [308, 309], "probofblockingrefcas": 308, "ovelap": 308, "almost": 308, "probofblockingbdcase_a": 308, "probofblockingbdcase_b": 308, "prevalindic": 308, "problem": [309, 356, 359, 361, 362, 363], "condidt": 309, "desir": 309, "perspect": 309, "blindli": [309, 328], "therfor": 309, "probofblock": 309, "targetblockingprob": 309, "mincoresetsize5fornumues5": 309, "mincoresetsize10fornumues5": 309, "mincoresetsize15fornumues5": 309, "mincoresetsize20fornumues5": 309, "105": [309, 314, 332], "115": [309, 314, 332], "mincoresetsize5fornumues10": 309, "mincoresetsize10fornumues10": 309, "mincoresetsize15fornumues10": 309, "mincoresetsize20fornumues10": 309, "mincoresetsize5fornumues15": 309, "mincoresetsize10fornumues15": 309, "mincoresetsize15fornumues15": 309, "mincoresetsize20fornumues15": 309, "cleari": 309, "speci": 309, "penguin_mean": 309, "item": 309, "rect": [309, 327], "bar_label": 309, "pad": 309, "ncol": 309, "ant": [311, 312, 325, 326, 354], "strutur": [311, 312, 325, 326, 354], "codewords": [311, 312, 314], "loadmodel": 311, "hprep": [311, 312, 314], "hrec": [311, 312], "postprocess": [311, 321, 361], "7m": 311, "numchannel": [311, 312], "idx": [311, 312, 327, 330, 331, 332, 333, 334, 335, 345, 352], "grei": [311, 312], "153": [311, 314], "134": [311, 314, 334], "124": [311, 314, 332], "nmse": 311, "20250736648608653": 311, "5768": 311, "2451171875": 311, "23460": [311, 354], "ptc": [311, 325, 326, 351, 354], "endpoint": [311, 327, 352, 354], "ygrid": [311, 325, 326, 354], "rgrid": [311, 325, 326, 354], "pdschdeclowerphi": [311, 325, 354], "kpi": [311, 325, 326, 354], "2000": [311, 321, 325, 326, 348, 354, 355, 361], "003271497919556172": 311, "004089940323955669": 311, "88888888888889": [311, 326, 352], "0019166088765603328": 311, "002438832054560955": 311, "277777777777779": 311, "0011243065187239944": 311, "001499147485080989": 311, "955": 311, "519120": 311, "00000000047": 311, "666666666666666": [311, 322, 323, 325], "0005989944521497919": 311, "0008077578857630008": 311, "8425": 311, "1816919": 311, "055555555555555": 311, "0002869278779472954": 311, "00043350383631713557": 311, "5549999999999999": 311, "5133520": 311, "444444444444445": [311, 323, 325, 326, 352], "00013262829403606102": 311, "00022953964194373402": 311, "3125": 311, "7931000": 311, "833333333333333": 311, "628294036061026e": 311, "00012510656436487638": 311, "19499999999999995": 311, "9286480": 311, "222222222222221": [311, 323, 352], "340499306518724e": 311, "457800511508951e": 311, "06499999999999995": 311, "10786160": 311, "611111111111111": 311, "836317135549872e": 311, "11536000": 311, "3231031543052003e": 311, "6m": [311, 341, 343, 344], "snrdb2": 311, "snr2": 311, "codedber2": 311, "uncodedber2": 311, "bler2": 311, "throughput2": 311, "002643030513176144": 311, "0033248081841432226": 311, "483333333333333": 311, "0017995839112343967": 311, "002294543904518329": 311, "115360": 311, "966666666666667": 311, "0012274618585298197": 311, "001603154305200341": 311, "975": [311, 323], "288400": 311, "0008538488210818308": 311, "0011327791986359761": 311, "9125": 311, "1009400": 311, "0000000002": [311, 326], "0005799237170596394": 311, "0008459079283887468": 311, "8325": 311, "1932279": 311, "9999999998": 311, "416666666666666": 311, "0004342926490984743": 311, "0006432225063938619": 311, "3201240": 311, "000000001": [311, 354], "8999999999999995": 311, "00031206657420249653": 311, "0005051150895140665": 311, "6074999999999999": 311, "4527880": 311, "383333333333333": 311, "00022798196948682387": 311, "0004360613810741688": 311, "48750000000000004": 311, "5912200": 311, "866666666666666": 311, "934812760055479e": 311, "0003923699914748508": 311, "020000000000000018": [311, 323], "11305280": 311, "0003610400682011935": 311, "2f": 311, "ytck": [311, 323, 325, 326, 352, 354], "tile": [311, 323, 325, 326, 334, 352, 354], "999": [311, 334], "snrdb1": 311, "deep": [311, 318], "prepar": 312, "synthet": 312, "world": [312, 361], "collect": 312, "special": 312, "electromagnet": 312, "clean": 312, "outlier": 312, "raw": [312, 359, 360, 362, 363], "wavelet": 312, "overfit": 312, "princip": 312, "pca": 312, "preserv": 312, "generaliz": 312, "csinet": [312, 313, 321, 361], "sure": 312, "directori": 312, "folder": 312, "montecarloiter": [312, 329, 338, 339, 353], "numtap": [312, 314], "mci": 312, "savez": [312, 330, 331, 332, 333, 334, 335, 352], "preprocessedchannel": [312, 314], "filenam": [312, 325, 326, 330, 331, 332, 333, 334, 335, 352, 354], "hp": [312, 314, 323, 328], "reconstrunct": [313, 321], "net": [313, 321], "imperfect": [313, 321], "dataset": [313, 321, 352, 355, 361], "train": [313, 321, 361], "storag": [313, 321], "sparsiti": [313, 321, 350, 355, 361], "batchnorm": [314, 318], "conv2d": 314, "leakyrelu": 314, "load_model": 314, "callback": [314, 318], "tensorboard": 314, "110000": 314, "htrain": 314, "hval": 314, "htest": 314, "71": [314, 332, 333, 334, 340], "7742e": 314, "val_loss": [314, 318], "0043": 314, "7259e": 314, "6864e": 314, "0029": 314, "6530e": 314, "0022": 314, "6243e": 314, "6001e": 314, "5802e": 314, "5634e": 314, "0011": [314, 318], "5492e": 314, "7465e": 314, "73": [314, 332, 333, 334, 340], "5370e": 314, "8815e": 314, "5262e": 314, "2990e": 314, "5167e": 314, "0591e": 314, "5085e": 314, "1419e": 314, "5011e": 314, "5195e": 314, "4947e": 314, "1186e": 314, "4891e": 314, "8665e": 314, "4841e": 314, "7138e": 314, "4796e": 314, "6209e": 314, "4754e": 314, "5635e": 314, "4717e": 314, "5279e": 314, "4683e": 314, "5035e": 314, "4653e": 314, "4878e": 314, "4625e": 314, "4770e": 314, "4599e": 314, "4575e": 314, "4617e": 314, "4553e": 314, "4551e": 314, "4533e": 314, "4505e": 314, "4512e": 314, "4463e": 314, "4493e": 314, "4427e": 314, "4475e": 314, "4402e": 314, "4457e": 314, "4354e": 314, "4440e": 314, "4335e": 314, "4423e": 314, "4307e": 314, "4407e": 314, "4283e": 314, "4391e": 314, "4230e": 314, "4376e": 314, "4228e": 314, "4361e": 314, "4194e": 314, "4346e": 314, "4173e": 314, "4332e": 314, "4149e": 314, "4318e": 314, "4133e": 314, "4304e": 314, "4106e": 314, "4289e": 314, "4086e": 314, "4274e": 314, "4061e": 314, "4261e": 314, "4033e": 314, "4249e": 314, "4021e": 314, "4235e": 314, "4001e": 314, "4221e": 314, "3973e": 314, "4211e": 314, "3967e": 314, "4198e": 314, "3946e": 314, "4185e": 314, "3920e": 314, "4172e": 314, "3910e": 314, "4156e": 314, "3889e": 314, "4144e": 314, "3886e": 314, "4130e": 314, "3855e": 314, "4118e": 314, "3846e": 314, "3834e": 314, "57": [314, 332, 333, 334, 340], "4092e": 314, "3812e": 314, "58": [314, 332, 333, 334, 340], "4080e": 314, "3790e": 314, "4067e": 314, "3776e": 314, "4056e": 314, "3763e": 314, "4044e": 314, "3736e": 314, "62": [314, 332, 333, 334, 340], "4029e": 314, "3737e": 314, "4013e": 314, "3721e": 314, "4004e": 314, "3699e": 314, "3984e": 314, "3682e": 314, "3969e": 314, "3674e": 314, "3956e": 314, "3660e": 314, "68": [314, 332, 333, 334, 340], "3942e": 314, "3652e": 314, "3928e": 314, "3637e": 314, "3915e": 314, "3635e": 314, "3897e": 314, "3625e": 314, "3884e": 314, "3883e": 314, "3603e": 314, "3857e": 314, "3597e": 314, "3841e": 314, "3604e": 314, "76": [314, 332, 333, 334, 340], "3821e": 314, "3579e": 314, "77": [314, 332, 333, 334, 340], "3795e": 314, "3555e": 314, "78": [314, 332, 333, 334, 340], "3775e": 314, "3563e": 314, "79": [314, 332, 333, 334, 340], "3756e": 314, "3545e": 314, "3738e": 314, "3547e": 314, "3722e": 314, "3548e": 314, "82": [314, 332, 333, 334, 340], "3710e": 314, "83": [314, 332, 333, 334, 339, 340], "3696e": 314, "3697e": 314, "3651e": 314, "3530e": 314, "3612e": [314, 318], "3516e": 314, "3613e": 314, "3505e": 314, "3574e": 314, "3499e": 314, "89": [314, 325, 332, 333, 334, 339], "3578e": 314, "3540e": 314, "3549e": 314, "3534e": 314, "91": [314, 332, 333, 334], "3487e": 314, "3491e": 314, "3490e": 314, "93": [314, 332, 333, 334], "3475e": 314, "3442e": 314, "3471e": 314, "3440e": 314, "3496e": 314, "3414e": 314, "3508e": 314, "3431e": 314, "3493e": 314, "3403e": 314, "3515e": 314, "3323e": 314, "3469e": 314, "3297e": 314, "3585e": 314, "3307e": 314, "3581e": 314, "102": [314, 332], "3270e": 314, "103": [314, 332, 335], "3247e": 314, "3364e": 314, "7186e": 314, "9999e": 314, "4725e": 314, "0587e": 314, "106": [314, 332, 334], "4827e": 314, "0315e": 314, "107": [314, 332], "6259e": 314, "108": [314, 332], "3717e": 314, "5379e": 314, "109": [314, 332], "0073e": 314, "3526e": 314, "7553e": 314, "111": [314, 332], "3462e": 314, "6115e": 314, "3404e": 314, "5349e": 314, "113": [314, 332], "3351e": 314, "4661e": 314, "114": [314, 332], "3302e": 314, "4291e": 314, "3255e": 314, "4210e": 314, "116": [314, 332], "3211e": 314, "4070e": 314, "117": [314, 332], "3170e": 314, "3908e": 314, "118": [314, 332], "3131e": 314, "3093e": 314, "3706e": 314, "3058e": [314, 318], "3630e": 314, "121": [314, 327, 332], "3024e": 314, "3509e": 314, "3495e": 314, "123": [314, 332], "2958e": 314, "3444e": 314, "2927e": 314, "3385e": 314, "2897e": 314, "3401e": 314, "126": [314, 332], "2869e": 314, "3360e": 314, "2841e": 314, "3312e": 314, "2815e": 314, "3210e": 314, "129": 314, "2788e": 314, "2762e": 314, "3188e": 314, "2736e": 314, "3199e": 314, "2712e": 314, "3122e": 314, "133": 314, "2690e": 314, "3178e": 314, "2663e": 314, "3107e": 314, "2638e": 314, "3061e": 314, "136": 314, "2614e": 314, "3039e": 314, "137": 314, "2590e": 314, "3072e": 314, "2567e": 314, "2932e": 314, "139": 314, "2542e": 314, "3050e": 314, "2519e": 314, "2852e": 314, "141": 314, "2502e": 314, "2818e": 314, "142": 314, "2473e": 314, "2908e": 314, "143": 314, "2453e": 314, "3138e": 314, "2444e": 314, "2780e": 314, "145": 314, "2419e": 314, "2681e": 314, "146": 314, "2402e": 314, "2615e": 314, "147": 314, "2369e": 314, "148": 314, "2352e": 314, "2830e": 314, "149": 314, "2314e": 314, "2605e": 314, "150": [314, 330, 335], "2286e": 314, "2743e": 314, "2271e": 314, "2598e": 314, "152": [314, 318], "0737e": 314, "5406e": 314, "154": 314, "2217e": 314, "4022e": 314, "155": 314, "6454e": 314, "8927e": 314, "5252e": 314, "2517e": 314, "4766e": 314, "9435e": 314, "158": 314, "4478e": 314, "7687e": 314, "159": 314, "4276e": 314, "6398e": 314, "4121e": 314, "5581e": 314, "5050e": 314, "162": 314, "3907e": 314, "4714e": 314, "163": 314, "3830e": 314, "4454e": 314, "3767e": 314, "4247e": 314, "3711e": 314, "4100e": 314, "166": [314, 365], "3661e": 314, "3959e": 314, "167": 314, "3615e": 314, "3854e": 314, "3572e": 314, "3760e": 314, "169": 314, "3533e": 314, "3684e": 314, "3616e": 314, "171": 314, "3460e": 314, "3561e": 314, "172": 314, "3425e": 314, "3502e": 314, "173": 314, "3392e": 314, "3455e": 314, "174": [314, 334], "3358e": 314, "3413e": 314, "175": 314, "3325e": 314, "3369e": 314, "176": 314, "3293e": 314, "3329e": 314, "177": [314, 334], "3260e": 314, "3295e": 314, "178": 314, "3227e": 314, "3262e": 314, "3195e": 314, "3225e": 314, "3163e": 314, "3183e": 314, "181": 314, "3149e": 314, "182": [314, 334, 365], "3098e": 314, "3120e": 314, "183": [314, 327], "3064e": 314, "3091e": 314, "184": 314, "3031e": 314, "185": 314, "2998e": 314, "3030e": 314, "186": [314, 334], "2967e": 314, "2996e": 314, "2935e": 314, "2962e": 314, "188": 314, "2905e": 314, "2936e": 314, "189": 314, "2875e": 314, "2912e": 314, "190": 314, "2843e": 314, "2879e": 314, "191": 314, "2811e": 314, "2853e": 314, "2781e": 314, "2833e": 314, "193": 314, "2751e": 314, "2804e": 314, "194": 314, "2720e": 314, "195": 314, "2748e": 314, "196": 314, "2660e": 314, "2726e": 314, "197": 314, "2631e": 314, "2693e": 314, "2602e": 314, "2667e": 314, "199": 314, "2573e": 314, "2636e": 314, "2544e": 314, "2612e": 314, "201": 314, "2515e": 314, "2579e": 314, "202": 314, "2487e": 314, "2556e": 314, "203": [314, 334], "2458e": 314, "2523e": 314, "2428e": 314, "2499e": 314, "205": [314, 364], "2400e": 314, "2467e": 314, "206": 314, "2372e": 314, "2451e": 314, "207": 314, "2344e": 314, "2414e": 314, "2316e": 314, "2387e": 314, "209": 314, "2288e": 314, "2359e": 314, "210": [314, 364], "2261e": 314, "2337e": 314, "2236e": 314, "2307e": 314, "2208e": 314, "2280e": 314, "2182e": 314, "2255e": 314, "2157e": 314, "2229e": 314, "215": [314, 334], "2131e": 314, "2206e": 314, "216": 314, "2107e": 314, "2184e": 314, "217": 314, "2080e": 314, "2160e": 314, "218": 314, "2056e": 314, "2135e": 314, "219": 314, "2031e": 314, "2108e": 314, "220": 314, "2006e": 314, "2086e": 314, "221": 314, "1980e": 314, "2061e": 314, "222": 314, "1956e": 314, "2034e": 314, "223": 314, "1932e": 314, "2015e": 314, "224": 314, "1907e": 314, "1992e": 314, "225": 314, "1883e": 314, "1964e": 314, "226": 314, "1859e": 314, "1946e": 314, "227": 314, "1836e": 314, "1924e": 314, "228": 314, "1812e": 314, "1901e": 314, "229": 314, "1788e": 314, "1873e": 314, "230": 314, "1762e": 314, "1849e": 314, "231": [314, 330, 334], "1739e": 314, "1824e": 314, "232": 314, "1716e": 314, "1801e": 314, "233": [314, 353], "1693e": 314, "1782e": 314, "234": 314, "1669e": 314, "1772e": 314, "235": 314, "1644e": 314, "1742e": 314, "236": 314, "1620e": 314, "1717e": 314, "237": 314, "1600e": 314, "1697e": 314, "238": 314, "1574e": 314, "1671e": 314, "239": [314, 334], "1550e": 314, "1646e": 314, "1526e": 314, "1627e": 314, "241": 314, "1501e": 314, "1614e": 314, "242": 314, "1479e": 314, "1579e": 314, "243": 314, "1453e": 314, "1561e": 314, "244": 314, "1430e": 314, "1536e": 314, "245": 314, "1407e": 314, "1516e": 314, "246": 314, "1384e": 314, "1494e": 314, "247": 314, "1361e": 314, "1468e": 314, "248": 314, "1338e": 314, "1452e": 314, "249": 314, "1312e": 314, "1422e": 314, "250": [314, 342, 345, 346], "1291e": 314, "1400e": 314, "251": 314, "1267e": 314, "1378e": 314, "252": 314, "1242e": 314, "1359e": 314, "253": [314, 334], "1221e": 314, "1342e": 314, "1198e": 314, "1317e": 314, "255": 314, "1179e": 314, "1296e": 314, "1158e": 314, "1277e": 314, "257": 314, "1134e": 314, "1292e": 314, "258": 314, "1103e": 314, "1229e": 314, "259": 314, "1094e": 314, "1236e": 314, "260": 314, "1069e": 314, "1202e": 314, "261": 314, "1052e": 314, "1211e": 314, "262": [314, 334], "1020e": 314, "1182e": 314, "263": 314, "0999e": 314, "1120e": 314, "264": 314, "0988e": 314, "1105e": 314, "265": 314, "0971e": 314, "1073e": 314, "266": 314, "0925e": 314, "1168e": 314, "267": 314, "0918e": 314, "1021e": 314, "0899e": 314, "1207e": 314, "269": 314, "0908e": 314, "1036e": 314, "0850e": 314, "1063e": 314, "271": 314, "0808e": 314, "0979e": 314, "0885e": 314, "0896e": 314, "0897e": 314, "0755e": 314, "0890e": 314, "0726e": 314, "0942e": 314, "276": 314, "0698e": 314, "0837e": 314, "277": 314, "0682e": 314, "1710e": 314, "278": 314, "1099e": 314, "0862e": 314, "279": [314, 334], "0679e": 314, "0775e": 314, "280": [314, 334], "0615e": 314, "0787e": 314, "281": 314, "0580e": 314, "0705e": 314, "282": 314, "0551e": 314, "283": [314, 334], "0542e": 314, "0673e": 314, "284": 314, "0500e": 314, "0644e": 314, "285": 314, "0506e": 314, "0654e": 314, "286": 314, "0493e": 314, "0618e": 314, "0476e": 314, "0601e": 314, "0445e": 314, "0588e": 314, "289": 314, "0439e": 314, "1388e": 314, "290": 314, "0033": 314, "291": 314, "8803e": 314, "5921e": 314, "292": 314, "5436e": 314, "2132e": 314, "293": 314, "8278e": 314, "6234e": 314, "294": [314, 334], "6361e": 314, "2145e": 314, "295": 314, "5566e": 314, "9489e": 314, "296": 314, "5087e": 314, "7818e": 314, "297": 314, "4780e": 314, "6677e": 314, "298": 314, "4506e": 314, "5912e": 314, "299": 314, "4321e": 314, "5355e": 314, "4175e": 314, "4977e": 314, "301": 314, "4046e": 314, "302": 314, "3919e": 314, "3819e": 314, "4305e": 314, "304": 314, "3741e": 314, "305": [314, 334], "3681e": 314, "4008e": 314, "306": 314, "3607e": 314, "3953e": 314, "307": 314, "3845e": 314, "308": 314, "3476e": 314, "3803e": 314, "309": 314, "3423e": 314, "3714e": 314, "310": 314, "3372e": 314, "311": 314, "3321e": 314, "3306e": 314, "3567e": 314, "313": 314, "3240e": 314, "3451e": 314, "314": 314, "3208e": 314, "3424e": 314, "315": 314, "3160e": 314, "3382e": 314, "316": [314, 365], "317": 314, "3088e": 314, "3309e": 314, "318": [314, 334], "319": 314, "3017e": 314, "3238e": 314, "2989e": 314, "321": 314, "3130e": 314, "322": 314, "2926e": 314, "3111e": 314, "323": 314, "2894e": 314, "3055e": 314, "324": 314, "3025e": 314, "325": 314, "2838e": 314, "2969e": 314, "326": 314, "2949e": 314, "327": 314, "2745e": 314, "2937e": 314, "328": 314, "2715e": 314, "2914e": 314, "329": 314, "2808e": 314, "330": 314, "2680e": 314, "2834e": 314, "331": 314, "2634e": 314, "2769e": 314, "332": 314, "2582e": 314, "2695e": 314, "333": 314, "2670e": 314, "334": [314, 334], "2497e": 314, "2688e": 314, "2454e": 314, "2421e": 314, "2562e": 314, "337": 314, "2386e": 314, "338": 314, "2343e": 314, "2498e": 314, "339": 314, "2306e": 314, "2484e": 314, "340": 314, "2273e": 314, "2452e": 314, "341": 314, "2228e": 314, "2410e": 314, "342": [314, 334], "2190e": 314, "2347e": 314, "343": 314, "2163e": 314, "2318e": 314, "344": 314, "2322e": 314, "345": 314, "2114e": 314, "2283e": 314, "346": 314, "2067e": 314, "2238e": 314, "347": [314, 334], "2042e": 314, "2186e": 314, "348": 314, "2004e": 314, "2154e": 314, "349": 314, "1972e": 314, "2112e": 314, "350": 314, "1937e": 314, "2095e": 314, "351": 314, "1906e": 314, "2064e": 314, "352": [314, 334], "1887e": 314, "2023e": 314, "353": 314, "1848e": 314, "1981e": 314, "354": 314, "1839e": 314, "1967e": 314, "355": 314, "1819e": 314, "1985e": 314, "356": 314, "1771e": 314, "1919e": 314, "357": 314, "1737e": 314, "1905e": 314, "358": 314, "1872e": 314, "359": [314, 334], "1681e": 314, "360": [314, 335, 345, 351], "1834e": 314, "361": 314, "1765e": 314, "1601e": 314, "1751e": 314, "363": 314, "1577e": 314, "1766e": 314, "364": 314, "1562e": 314, "365": 314, "1522e": 314, "1711e": 314, "366": 314, "1649e": 314, "367": 314, "1469e": 314, "1652e": 314, "368": 314, "1623e": 314, "369": 314, "1437e": 314, "1564e": 314, "370": 314, "1409e": 314, "1576e": 314, "371": 314, "1377e": 314, "1534e": 314, "372": 314, "1357e": 314, "1498e": 314, "373": 314, "1499e": 314, "1300e": 314, "1487e": 314, "375": 314, "1315e": 314, "1486e": 314, "376": 314, "1264e": 314, "1431e": 314, "1249e": 314, "1441e": 314, "378": 314, "1215e": 314, "1364e": 314, "379": 314, "1187e": 314, "380": 314, "1176e": 314, "1313e": 314, "381": 314, "382": 314, "1164e": 314, "1271e": 314, "383": 314, "1137e": 314, "1119e": 314, "1263e": 314, "385": 314, "1053e": 314, "1232e": 314, "386": 314, "1043e": 314, "1188e": 314, "387": 314, "1014e": 314, "388": 314, "0998e": 314, "1144e": 314, "389": [314, 334], "0969e": 314, "1139e": 314, "390": 314, "1118e": 314, "391": 314, "0932e": 314, "1173e": 314, "392": 314, "0985e": 314, "1075e": 314, "393": 314, "0881e": 314, "1055e": 314, "394": 314, "0861e": 314, "395": [314, 334], "0847e": 314, "396": 314, "0827e": 314, "0983e": 314, "397": 314, "0802e": 314, "0977e": 314, "398": 314, "0783e": 314, "0934e": 314, "399": 314, "0756e": 314, "0930e": 314, "0741e": 314, "401": 314, "0714e": 314, "0883e": 314, "402": 314, "0708e": 314, "403": 314, "0690e": 314, "404": 314, "0834e": 314, "eta": 314, "extens": 314, "shuffl": 314, "validation_data": [314, 318], "oppos": 318, "tradit": 318, "alphabet": 318, "ae": 318, "idea": 318, "behind": 318, "intermedi": 318, "faithfulli": 318, "perturb": 318, "hyper": [318, 330, 331], "snr_train": 318, "alreadi": [318, 359, 360, 362], "implment": 318, "softmax": 318, "aposteriori": 318, "oneshot": 318, "n_test": 318, "blockerrorr": 318, "sklearn": 318, "stochast": 318, "neighbor": [318, 323, 332], "tsne": 318, "scikit": 318, "inlin": [318, 323, 328], "gaussiannois": 318, "sgd": 318, "backend": 318, "snr_db": 318, "generail": 318, "log2": [318, 328], "5714285714285714": 318, "noise_stddev": 318, "symbol_encod": 318, "ey": [318, 327, 349, 352], "9600000": 318, "1500": 318, "train_label": 318, "temp": [318, 348, 351], "train_data": 318, "verifi": [318, 359, 360, 362, 363], "templabel_train": 318, "6634013": 318, "5698954": 318, "7797983": 318, "1647048": 318, "8484082": 318, "5849713": 318, "6844526": 318, "1561517": 318, "3625133": 318, "6378228": 318, "3180495": 318, "1370770": 318, "5104703": 318, "16000": 318, "test_label": 318, "test_data": 318, "temptestlabel": 318, "11519": 318, "4498": 318, "10702": 318, "6711": 318, "2993": 318, "9873": 318, "5688": 318, "normalizeavgpow": 318, "normalizeenergi": 318, "l2_normal": 318, "onehot": 318, "dense1": 318, "dense2": 318, "avg": 318, "stddev": 318, "dense3": 318, "learning_r": 318, "compil": [318, 365], "categorical_crossentropi": 318, "_________________________________________________________________": 318, "param": 318, "input_1": 318, "inputlay": 318, "dense_1": 318, "gaussian_nois": 318, "gaussianno": 318, "ise": 318, "dense_2": 318, "dense_3": 318, "791": [318, 334], "09": 318, "byte": 318, "1172": 318, "3m": [318, 341, 343, 344], "0619": 318, "8036e": 318, "1638e": 318, "2494e": 318, "0464e": 318, "0000e": 318, "9008e": 318, "7934e": 318, "0910e": 318, "8701e": 318, "5150e": 318, "3850e": 318, "4894e": 318, "9537e": 318, "8190e": 318, "9939e": 318, "6062e": 318, "6521e": 318, "4805e": 318, "6737e": 318, "5437e": 318, "3964e": 318, "1038e": 318, "5104e": 318, "2465e": 318, "3718e": 318, "2150e": 318, "2325e": 318, "2213e": 318, "0728e": 318, "0278e": 318, "0515e": 318, "1903e": 318, "2265e": 318, "9100e": 318, "7689e": 318, "8344e": 318, "7145e": 318, "9232e": 318, "5073e": 318, "7231e": 318, "4049e": 318, "3347e": 318, "5009e": 318, "5302e": 318, "3693e": 318, "4082e": 318, "4123e": 318, "5702e": 318, "3849e": 318, "src": 318, "histori": 318, "0x29775d74b80": 318, "channelinput": 318, "channeloutput": 318, "rxinput": 318, "rx1": 318, "rxoutput": 318, "uncom": [318, 333, 345], "snr_linear": 318, "noise_std": 318, "noise_mean": 318, "num_error": 318, "num_sampl": 318, "x_hat": 318, "x_hat_noisi": 318, "y_hat": 318, "sym_estim": 318, "argmax": [318, 327, 334], "517u": 318, "503u": 318, "498375": 318, "567u": 318, "458625": 318, "522u": 318, "4203125": 318, "555u": 318, "38725": 318, "515u": 318, "566u": 318, "3485625": 318, "543u": 318, "3043125": 318, "662u": 318, "2595": 318, "529u": 318, "535u": 318, "2265625": 318, "1879375": 318, "536u": 318, "518u": 318, "122375": 318, "548u": 318, "092": 318, "551u": 318, "0673125": 318, "578u": 318, "544u": 318, "0513125": 318, "512u": 318, "03275": 318, "553u": 318, "02025": 318, "538u": 318, "011375": 318, "520u": 318, "0071875": 318, "504u": 318, "549u": 318, "0045625": 318, "533u": 318, "539u": 318, "0011875": 318, "575u": 318, "00025": 318, "000125": 318, "489u": 318, "527u": 318, "510u": 318, "numdim": 318, "1000000": 318, "mapperobject": [318, 322], "enc": 318, "codedblerhard": [318, 322], "codedblersoft": [318, 322], "uncbit": [318, 322], "spheredecod": [318, 322], "487595": 318, "554942": 318, "450965": 318, "522681": 318, "413592": 318, "49012": 318, "373975": 318, "454293": 318, "334565": 318, "416966": 318, "29465": 318, "378652": 318, "254375": 318, "340119": 318, "215441": 318, "301021": 318, "17943": 318, "261749": 318, "145708": 318, "225524": 318, "114448": 318, "189009": 318, "086905": 318, "154485": 318, "063574": 318, "123722": 318, "045241": 318, "095985": 318, "030357": 318, "072166": 318, "019361": 318, "052022": 318, "011799": 318, "036823": 318, "006764": 318, "024702": 318, "003584": 318, "015639": 318, "001758": 318, "009331": 318, "000827": 318, "005393": 318, "000329": 318, "00284": 318, "000129": 318, "001444": 318, "9e": 318, "000658": 318, "6e": 318, "000263": 318, "plote": 318, "pink": [318, 327, 329, 330, 331, 338, 339, 340], "previou": [318, 361], "retrain": 318, "constellationpoint": 318, "sin": [318, 327, 334, 335, 345, 352], "31m": 318, "x_noisi": 318, "x_embed": 318, "n_compon": 318, "n_iter": 318, "35000": 318, "random_st": 318, "perplex": 318, "fit_transform": 318, "resembl": 318, "ari": 318, "apsk": 318, "shea": 318, "transact": 318, "cognit": 318, "563": 318, "575": 318, "dec": 318, "2017": 318, "tccn": 318, "2758370": 318, "infer": [321, 361], "llrnet": [321, 361], "64000": [321, 361], "conclus": [321, 355, 361], "redcap": [321, 361], "intellig": [321, 361, 364], "compress": [321, 361, 364], "autoencod": [321, 361], "millimet": [321, 349, 350, 355, 361], "dist2": [322, 329, 338, 339], "python3_11": [322, 329, 338, 339, 359, 360, 362, 363], "codedberhard": 322, "codedbersoft": 322, "17671": 322, "18611285714285714": 322, "666666666666667": [322, 323, 325], "12653": 322, "14775285714285713": 322, "3333333333333335": [322, 325], "081805": 322, "11270857142857142": 322, "0436425": 322, "07803428571428571": 322, "333333333333333": [322, 323, 325, 326], "0185": 322, "04909714285714286": 322, "0063725": 322, "027304285714285715": 322, "0014125": 322, "01259": 322, "333333333333332": [322, 352], "000145": 322, "004475714285714286": 322, "5e": 322, "0011442857142857142": 322, "00018": 322, "demonst": [322, 341, 342, 343, 344, 346, 347, 349], "assess": 323, "made": [323, 332], "especi": [323, 342], "valuabl": 323, "behavior": 323, "flow": [323, 325, 326, 329, 338, 339], "bsarraygeometri": [323, 328], "uearraygeometri": [323, 328], "agglevel": [323, 328], "startsymindex": [323, 328], "nonzero": [323, 328], "fdr1": 323, "fdr2": 323, "fdr4": 323, "fdr8": 323, "fdr16": 323, "65518": 323, "numpdcchsymbol": 323, "numpdcchdmr": [323, 328], "rmpdcch": 323, "channelest": 323, "equalized_sym": 323, "rdcibit": 323, "965": 323, "765": 323, "6666666666666665": [323, 325], "333333333333334": [323, 325, 326], "666666666666668": [323, 326, 352], "link_level_and_system_level_simulation_for_physical_downlink_control_channel": 323, "825": 323, "31499999999999995": 323, "888888888888889": [323, 326], "03500000000000003": 323, "7777777777777777": [323, 325], "8888888888888893": [323, 325], "745": 323, "6666666666666679": 323, "44999999999999996": 323, "05500000000000005": 323, "111111111111111": [323, 325], "555555555555557": [323, 326], "7777777777777786": [323, 325], "ls1": [323, 325, 326], "ls2": [323, 325, 326], "ls3": [323, 325, 326], "pdcch_ll": 323, "hello1": 324, "stand": [325, 326, 337], "manipul": [325, 326, 337], "signular": [325, 326, 337], "intial": [325, 326, 337], "temp1": 325, "temp2": 325, "566720": 325, "32999999999999996": 325, "2712160": 325, "0000000005": 325, "16000000000000003": 325, "3400319": 325, "030000000000000027": 325, "3926560": 325, "4007520": 325, "4048000": [325, 326], "222222222222222": 325, "78080": 325, "00000000007": 325, "5555555555555554": 325, "624639": 325, "9999999997": 325, "1952000": 325, "7808000": 325, "1295360": 325, "8888888888888888": [325, 339], "11776000": 325, "6666666666666667": 325, "4444444444444446": 325, "2222222222222223": 325, "775": 325, "5299200": 325, "23434240": 325, "23552000": 325, "snrdba": [325, 326], "codedbera": [325, 326], "blera": [325, 326], "throughputa": [325, 326], "xticksa": [325, 326], "numdb": [325, 326], "cbbeamform": 326, "lmobject": 326, "rcodeword1": 326, "rcodeword2": 326, "bits_1": 326, "descrobject1": 326, "decscrambledbits1": 326, "bits_2": 326, "descrobject2": 326, "decscrambledbits2": 326, "decscrambledout": 326, "777777777777778": 326, "555555555555555": [326, 352], "1111111111111107": 326, "777777777777779": 326, "1212000": 326, "2828000": 326, "6060000": 326, "8080000": 326, "111111111111114": 326, "6024000": 326, "12048000": 326, "77777777777778": [326, 352], "44444444444444": 326, "15662400": 326, "333333333333336": 326, "24096000": 326, "22222222222223": 326, "type1sp": 326, "focus": 327, "timeinterv": [327, 352], "secangl": [327, 352], "antloc": [327, 334, 352], "nbm": [327, 352], "steeringvector": [327, 334, 352], "beamvector": [327, 334, 352], "numrxbeam": [327, 352], "ssbesti": [327, 352], "log10": [327, 336, 342, 345, 346, 348, 349], "bestbeam": 327, "ueindex": [327, 330, 331, 334, 337, 342, 349], "lightblu": 327, "black": [327, 329, 330, 331, 336, 338, 339, 340], "075": 327, "bottom": 327, "ax2": 327, "argwher": [327, 352], "numbeam": [327, 334], "beamangl": 327, "nbeam": 327, "arctan2": 327, "set_rmax": 327, "set_rtick": 327, "radial": 327, "set_rlabel_posit": 327, "set_thetagrid": 327, "450": 327, "transimt": 328, "pdcchcandidateblinddecod": 328, "nofdmsymperslot": 328, "nsc": 328, "numcandidatesper": 328, "ssobj": 328, "uecand": 328, "uecc": 328, "numpdcchsym": 328, "kmax": 328, "pdcchobj": 328, "mapp": 328, "nsymbol": 328, "3240": 328, "palegreen": [328, 330, 331, 337, 345, 346], "lightcor": [328, 330, 331, 337, 345], "listedcolormap": [328, 330, 331, 337], "boundarynorm": [328, 330, 331, 337], "numsym": 328, "snrbd": 328, "equalizedgrid": 328, "intiat": 328, "bdobj": 328, "unsuccess": 328, "solomon": 329, "walsh": 329, "hadamard": 329, "testabl": [329, 353], "character": [329, 353], "mpl_toolkit": [329, 338, 339, 340, 348], "axes_grid1": [329, 338, 339, 340, 348], "inset_loc": [329, 338, 339, 340], "zoomed_inset_ax": [329, 338, 339, 340], "mark_inset": [329, 338, 339, 340], "folow": [329, 338, 339], "500000": [329, 338, 339], "kindex": [329, 338], "0886": 329, "012": 329, "0002": 329, "2209": 329, "087": 329, "011": 329, "0003": 329, "22253333333333333": 329, "09186666666666667": 329, "014066666666666667": 329, "0003333333333333333": 329, "2183": 329, "0982": 329, "01245": 329, "21296": 329, "0866": 329, "01604": 329, "00064": 329, "22046666666666667": 329, "08643333333333333": 329, "013": [329, 335], "0005333333333333334": 329, "422": 329, "29897142857142855": 329, "12937142857142858": 329, "016457142857142858": 329, "419075": 329, "31415": 329, "13155": 329, "017875": 329, "00015": 329, "41706666666666664": 329, "3154888888888889": 329, "13177777777777777": 329, "014177777777777777": 329, "0003111111111111111": 329, "42402": 329, "31048": 329, "12976": 329, "016": 329, "00034": 329, "42805454545454547": 329, "31236363636363634": 329, "1381090909090909": 329, "0156": 329, "0001818181818181818": 329, "reliablilti": [329, 338, 339, 353], "99990": [329, 338, 339], "99999": 329, "poorer": 329, "color_tupl": [329, 338, 339, 340], "orang": [329, 338, 339, 340, 345], "brown": [329, 330, 331, 338, 339, 340], "grai": [329, 338, 339, 340], "markcolor_tupl": [329, 338, 339, 340], "navi": [329, 338, 339, 340], "yellow": [329, 330, 331, 338, 339, 340], "springgreen": [329, 338, 339, 340], "aqua": [329, 338, 339, 340], "marker_tupl": [329, 338, 339, 340], "flip": [329, 338, 339, 340], "markers": [329, 338, 339, 340, 347], "bern": 329, "bervssnr": [329, 365], "axin": 329, "axins2": 329, "want": 329, "trial": [329, 359, 362, 363], "elegantli": 329, "date": 329, "x1": 329, "x2": 329, "y1": [329, 345], "1295": 329, "y2": [329, 345], "13375": 329, "xtick": [329, 354], "ytick": 329, "loc1": 329, "loc2": 329, "ec": 329, "0127": 329, "01325": 329, "foe": [330, 331, 333, 334], "inturn": [330, 331, 333, 334], "tool": [330, 331, 333, 334], "rd": [330, 331, 333, 334], "parti": [330, 331, 333, 334], "quadriga": [330, 331, 333, 334], "efficaci": [330, 331, 333, 334, 335], "veric": [330, 331, 333, 334, 335], "150000000": 330, "200m": [330, 331], "35m": [330, 331, 334], "hertizian": [330, 331, 334], "960x480": [330, 331, 345, 346, 347, 351], "axes3d": [330, 331, 345, 346, 347, 351], "numbssperslot": [330, 331, 334], "darkorang": [330, 331], "get_cmap": [330, 331], "gist_rainbow": [330, 331], "fontweight": [330, 331], "bold": [330, 331], "borderaxespad": [330, 331], "resour": [330, 331, 334, 337], "1020": [330, 331, 334], "bsindex": [330, 331, 334, 337, 342, 349], "grid_alpha": [330, 337], "heatmap": [330, 337, 349, 350, 355, 361], "dbm": [330, 331, 334, 351], "bemform": [330, 331, 334], "lb": [330, 331, 334], "lue": [330, 331, 334], "k_b": [330, 331, 334], "boltzmann": [330, 331, 334], "ppm": [330, 331, 334], "antidx": [330, 331], "splrep": [330, 331], "splev": [330, 331], "sa": [330, 331], "hfint": [330, 331], "prsindic": [330, 331, 334], "tck": [330, 331], "amp": [330, 331], "der": [330, 331], "unwrap": [330, 331, 342], "yeild": [330, 331], "suffic": [330, 331], "avaiabl": [330, 331], "te": [330, 331], "intersect": [330, 331, 332, 335], "correspsond": [330, 331], "locus": [330, 331, 335], "potenti": [330, 331, 335], "measnur": [330, 331, 334], "inaccuract": [330, 331, 334], "compromis": [330, 331, 334], "somehow": [330, 331, 334], "bsindic": [330, 331, 332, 333, 334, 335], "rxstdestim": [330, 331, 332, 333], "kbestindic": [330, 331, 332, 333, 334, 335], "accurci": [330, 331, 334], "disclaim": 330, "intract": [330, 333, 334, 335, 345], "perfrorm": [330, 331, 334], "percentil": [330, 331, 334], "ththan": [330, 331, 334], "5cm": [330, 331], "0cm": [330, 331], "6cm": [330, 331], "1cm": [330, 331], "poserror3d": [330, 331, 332, 333, 334, 335], "poserror2d": [330, 331, 332, 333, 334, 335], "dltdoa": [330, 331], "bsarraystructur": [330, 331, 332, 333, 334, 335], "uearraystructur": [330, 331, 332, 333, 334, 335], "ioo_20m_fr1": 330, "f_c": [330, 331, 334, 341, 343, 344, 347, 351], "terrian": [330, 331, 334], "squrar": [331, 334], "eqaul": [331, 334], "30000000": [331, 334], "argmin": [331, 332, 334], "siteindic": [331, 332, 334], "dltoa": 331, "gp": 332, "atom": 332, "centimet": 332, "hyperboloid": 332, "face": 332, "ultra": 332, "emerg": [332, 334], "asset": [332, 334, 335], "10m": [332, 346], "5km": [332, 346], "ultdoa": 332, "poserror3da": 332, "poserror2da": 332, "4215363": 333, "78032138": 333, "50797252": 333, "16600051": 333, "90443573": 333, "47474593": 333, "74856967": 333, "4471635": 333, "54521712": 333, "55050478": 333, "43931444": 333, "13662121": 333, "85489926": 333, "08774903": 333, "52755895": 333, "82279784": 333, "13361618": 333, "52349518": 333, "5575103": 333, "19681135": 333, "26737552": 333, "60794566": 333, "99476197": 333, "36027376": 333, "31028088": 333, "81732425": 333, "54359212": 333, "52461434": 333, "94843593": 333, "63401437": 333, "94944578": 333, "86232628": 333, "53715152": 333, "19626289": 333, "6363511": 333, "54316006": 333, "7766177": 333, "35418832": 333, "55182393": 333, "43763633": 333, "87677854": 333, "62842819": 333, "10258347": 333, "4317454": 333, "59871804": 333, "45307278": 333, "21452399": 333, "50998389": 333, "6464587": 333, "29464303": 333, "48682503": 333, "7587386": 333, "66229737": 333, "3835427": 333, "09971438": 333, "38507528": 333, "56703222": 333, "27252005": 333, "49408869": 333, "51767149": 333, "50213423": 333, "48030113": 333, "45949887": 333, "34462303": 333, "70412479": 333, "55940963": 333, "73676558": 333, "92578187": 333, "53169568": 333, "8547753": 333, "25440928": 333, "98212604": 333, "19296202": 333, "54132648": 333, "32365498": 333, "77500617": 333, "42255216": 333, "09675432": 333, "67607949": 333, "57987014": 333, "6925936": 333, "64046494": 333, "46865462": 333, "10059595": 333, "76752975": 333, "5878385": 333, "98563099": 333, "57898981": 333, "35617641": 333, "71111502": 333, "62758124": 333, "53094812": 333, "53053351": 333, "28051672": 333, "58516008": 333, "23063984": 333, "5500853": 333, "70358831": 333, "78052461": 333, "65531585": 333, "03970877": 333, "94894052": 333, "94009105": 333, "54089155": 333, "46149577": 333, "30705674": 333, "50187354": 333, "81744142": 333, "20506424": 333, "34471406": 333, "6483784": 333, "82144281": 333, "65057101": 333, "96426838": 333, "84613361": 333, "52809127": 333, "88183982": 333, "11692189": 333, "58092568": 333, "93255383": 333, "38596413": 333, "59088241": 333, "25763775": 333, "68921659": 333, "20074089": 333, "81871701": 333, "69916647": 333, "53817887": 333, "51638345": 333, "47014703": 333, "40071319": 333, "2191626": 333, "51207671": 333, "39257366": 333, "03684626": 333, "84860336": 333, "54572661": 333, "25958808": 333, "2801732": 333, "54925611": 333, "33437177": 333, "97326886": 333, "40693121": 333, "77308687": 333, "55953016": 333, "54205399": 333, "37610009": 333, "69339739": 333, "55662449": 333, "70189609": 333, "91514189": 333, "36600061": 333, "04513222": 333, "16133817": 333, "44517894": 333, "7716385": 333, "06307136": 333, "74075402": 333, "88460837": 333, "18871943": 333, "56949855": 333, "38266674": 333, "41449171": 333, "7346757": 333, "03350867": 333, "10186089": 333, "53488833": 333, "22157414": 333, "90806661": 333, "52708948": 333, "68240337": 333, "3120393": 333, "54565456": 333, "28301869": 333, "33792782": 333, "45110431": 333, "53908043": 333, "85546729": 333, "78521653": 333, "48409296": 333, "22177424": 333, "57523293": 333, "15941007": 333, "78749999": 333, "73683759": 333, "44544035": 333, "86865145": 333, "64336069": 333, "35673933": 333, "56513093": 333, "5104806": 333, "60731411": 333, "82421342": 333, "51323781": 333, "55865781": 333, "25305943": 333, "56305746": 333, "95872640e": 333, "77777011e": 333, "40148740e": 333, "80487407": 333, "82597089": 333, "52462734": 333, "84607066": 333, "53499602": 333, "57322733": 333, "82271079": 333, "36624418": 333, "4931076": 333, "59937911": 333, "16257303": 333, "65244339": 333, "67199244": 333, "76979372": 333, "55504678": 333, "27434072": 333, "58968042": 333, "54840076": 333, "35417842": 333, "89519595": 333, "68217251": 333, "26139614": 333, "94628174": 333, "3467783": 333, "99286639": 333, "44242967": 333, "14347406": 333, "28613448": 333, "30173949": 333, "64951933": 333, "51189734": 333, "56883229": 333, "00950839": 333, "39584732": 333, "62997557": 333, "68447328": 333, "15068034": 333, "34475186": 333, "46649924": 333, "09782035": 333, "79949224": 333, "51584499": 333, "79591351": 333, "6532013": 333, "39373625": 333, "0590222": 333, "11642352": 333, "55516197": 333, "65251898e": 333, "69197461e": 333, "27168134e": 333, "29946676": 333, "58691584": 333, "49303903": 333, "97450764": 333, "12167271": 333, "55384096": 333, "20689123": 333, "74646458": 333, "46958445": 333, "92385396": 333, "92520705": 333, "56564703": 333, "25366506": 333, "25672017": 333, "54979235": 333, "51188666": 333, "02819049": 333, "5397252": 333, "21662599": 333, "9655319": 333, "8884634": 333, "69419361": 333, "36651313": 333, "93550523": 333, "17105725": 333, "34864251": 333, "56813769": 333, "42779779": 333, "99143863": 333, "96956844": 333, "4434574": 333, "27896067": 333, "60876896": 333, "25819762": 333, "89316955": 333, "57901224": 333, "01349784": 333, "85114446": 333, "5497744": 333, "2879282": 333, "76396538": 333, "44778045": 333, "70869654": 333, "65021639": 333, "49618658": 333, "13428528": 333, "31297916": 333, "39113546": 333, "ultoa": 333, "triangul": [334, 335], "wider": 334, "deliveri": [334, 335], "awar": [334, 335], "nearestndinterpol": 334, "make_interp_splin": 334, "pchipinterpol": 334, "akima1dinterpol": 334, "position_estim": 334, "100m": 334, "1732": 334, "dbp": [334, 345, 348], "3958": 334, "406982421875": 334, "nbeamsphi": 334, "nbeamstheta": 334, "phimean": 334, "phistd": 334, "thetamean": 334, "thetastd": 334, "azimuthgrid": 334, "elevationgrid": 334, "markerlin": 334, "stemlin": 334, "baselin": 334, "stem": [334, 341, 342, 343, 344, 347, 349], "azimuthgridnew": 334, "rsrpnew": 334, "set_linewidth": 334, "set_markers": 334, "set_linestyl": 334, "beamindic": [334, 352], "std": [334, 335], "01876144": 334, "417": 334, "47088924": 334, "41016588": 334, "78669819": 334, "58115965": 334, "51680364": 334, "779": [334, 353], "10774189": 334, "81345912": 334, "66695834": 334, "05063066": 334, "76018999": 334, "4014134": 334, "97485771": 334, "725": [334, 354], "42467735": 334, "03582379": 334, "418": 334, "68949763": 334, "63860667": 334, "95735549": 334, "31445659": 334, "84958682": 334, "62075529": 334, "13081408": 334, "3275688": 334, "66068703": 334, "60487736": 334, "776": 334, "44800372": 334, "75456728": 334, "576": 334, "9003876": 334, "71920292": 334, "06830207": 334, "75067944": 334, "58239455": 334, "19317779": 334, "18868112": 334, "28143355": 334, "66991935": 334, "679": 334, "37966381": 334, "481": 334, "38075781": 334, "23397206": 334, "50683548": 334, "15121481": 334, "32300754": 334, "559": 334, "30578699": 334, "5184474": 334, "09216752": 334, "2368": 334, "5875262": 334, "635": 334, "42440274": 334, "81445601": 334, "1906": 334, "8665596": 334, "68524732": 334, "46693427": 334, "2590": 334, "51569143": 334, "431": 334, "75573784": 334, "31983926": 334, "1456": 334, "77187222": 334, "12215914": 334, "07774653": 334, "2382": 334, "16254384": 334, "21674582": 334, "19592682": 334, "1387": 334, "33095929": 334, "543": 334, "99864225": 334, "32340611": 334, "2055": 334, "50388465": 334, "28497084": 334, "3900648": 334, "1158": 334, "26048815": 334, "414": 334, "02959409": 334, "72228914": 334, "81287085": 334, "93856921": 334, "17215767": 334, "2052": 334, "24832918": 334, "741": 334, "11608934": 334, "39182262": 334, "1647": 334, "43827205": 334, "602": 334, "81414949": 334, "44005139": 334, "2471": 334, "5986077": 334, "3680525": 334, "59277088": 334, "1327": 334, "23205468": 334, "94130645": 334, "83156608": 334, "2236": 334, "41048839": 334, "15011382": 334, "85800926": 334, "1410": 334, "0594": 334, "437": 334, "43269124": 334, "12643322": 334, "1663": 334, "09387474": 334, "1634": 334, "92986144": 334, "85570637": 334, "75362162": 334, "1409": 334, "41515279": 334, "92185182": 334, "70080146": 334, "1651": 334, "31026302": 334, "07257801": 334, "486": 334, "97779167": 334, "71374113": 334, "86127804": 334, "19397683": 334, "1350": 334, "02714357": 334, "45520646": 334, "1402": 334, "61079238": 334, "1559": 334, "69378179": 334, "22889458": 334, "813": 334, "04515911": 334, "1935": 334, "29235127": 334, "92112269": 334, "1486": 334, "22465188": 334, "1009": 334, "23907728": 334, "53187137": 334, "36130781": 334, "1110": 334, "40170535": 334, "75877958": 334, "1262": 334, "66757708": 334, "2198": 334, "21464019": 334, "35152197": 334, "1221": 334, "4887303": 334, "1288": 334, "78872932": 334, "44011282": 334, "19047402": 334, "1394": 334, "60711561": 334, "07534023": 334, "542": 334, "46449497": 334, "984": 334, "70649096": 334, "42142474": 334, "790": 334, "239718": 334, "1301": 334, "40456874": 334, "99330555": 334, "860": 334, "14610741": 334, "1735": 334, "78429058": 334, "64408335": 334, "969": 334, "48684934": 334, "2404": 334, "42615328": 334, "58621319": 334, "1134": 334, "82147955": 334, "2294": 334, "01818634": 334, "45202281": 334, "9157313": 334, "1679": 334, "30515952": 334, "57225551": 334, "730": 334, "84942838": 334, "736": 334, "3472413": 334, "94300512": 334, "816": 334, "78895508": 334, "1609": 334, "24331023": 334, "97490925": 334, "88119986": 334, "1149": 334, "67488905": 334, "53432483": 334, "547": 334, "69956874": 334, "1873": 334, "02627622": 334, "21545543": 334, "33454538": 334, "2009": 334, "3689197": 334, "74280221": 334, "1730": 334, "56175809": 334, "1290": 334, "26476032": 334, "26835123": 334, "45938857": 334, "935": 334, "10717211": 334, "90767655": 334, "1229": 334, "1693352": 334, "1399": 334, "97775435": 334, "17238544": 334, "1102": 334, "92491167": 334, "1531": 334, "1702206": 334, "49089528": 334, "693": 334, "17734376": 334, "29430399": 334, "07834947": 334, "1982": 334, "29472944": 334, "97878568": 334, "65760135": 334, "2142": 334, "39537827": 334, "647": 334, "3928471": 334, "40096387": 334, "2412": 334, "80617459": 334, "58952957": 334, "7406165": 334, "2063": 334, "61114326": 334, "627": 334, "06836296": 334, "50960189": 334, "2251": 334, "37727569": 334, "62929819": 334, "42629727": 334, "2406": 334, "30027313": 334, "6391116": 334, "37741679": 334, "2376": 334, "10349713": 334, "616": 334, "55458813": 334, "633375": 334, "1881": 334, "49272956": 334, "95006205": 334, "8512651": 334, "1616": 334, "3788927": 334, "57797906": 334, "53307558": 334, "2246": 334, "83339547": 334, "672": 334, "96263995": 334, "05195825": 334, "1493": 334, "37269841": 334, "65312303": 334, "51736564": 334, "2333": 334, "13188826": 334, "99405237": 334, "98471568": 334, "1893": 334, "04890434": 334, "7433992": 334, "83153548": 334, "1711": 334, "31276025": 334, "917": 334, "93176809": 334, "24532617": 334, "684": 334, "50866104": 334, "1814": 334, "1033381": 334, "20054161": 334, "667": 334, "31562928": 334, "2273": 334, "74722883": 334, "150375": 334, "1144": 334, "31590136": 334, "2016": 334, "75718266": 334, "42903418": 334, "569": 334, "4109725": 334, "883": 334, "99722987": 334, "03101273": 334, "1076": 334, "19568404": 334, "2114": 334, "78498633": 334, "00410155": 334, "461": 334, "4559225": 334, "1333": 334, "63924489": 334, "11010613": 334, "1695": 334, "36953111": 334, "65305988": 334, "45221372": 334, "695": 334, "08475296": 334, "1744": 334, "0502098": 334, "9867078": 334, "1197": 334, "41226215": 334, "755": 334, "22717687": 334, "93978465": 334, "23904268": 334, "1415": 334, "12273306": 334, "62348287": 334, "27005466": 334, "1615": 334, "65180073": 334, "31867804": 334, "799": 334, "31871766": 334, "1725": 334, "4556035": 334, "29838114": 334, "67700583": 334, "1637": 334, "65770434": 334, "57990531": 334, "1505": 334, "83197435": 334, "1375": 334, "59758004": 334, "85237886": 334, "1201": 334, "76762636": 334, "1122": 334, "7141471": 334, "37681137": 334, "1281": 334, "41068836": 334, "1652": 334, "65774792": 334, "63387359": 334, "762": 334, "21947203": 334, "14308765": 334, "21407282": 334, "13034854": 334, "2074": 334, "25781085": 334, "30823231": 334, "1377": 334, "79550784": 334, "1810": 334, "07727844": 334, "19178143": 334, "469": 334, "66045386": 334, "53616327": 334, "24595016": 334, "1272": 334, "20853414": 334, "1058": 334, "99189859": 334, "7584014": 334, "1418": 334, "51259671": 334, "2154": 334, "39879911": 334, "08808944": 334, "1307": 334, "051491": 334, "1184": 334, "32848574": 334, "85571692": 334, "998": 334, "14092356": 334, "1608": 334, "59937354": 334, "46111491": 334, "1244": 334, "89130973": 334, "1911": 334, "9021219": 334, "96026782": 334, "1332": 334, "68917835": 334, "1022": 334, "5080149": 334, "65556915": 334, "32076588": 334, "1645": 334, "18490969": 334, "31428473": 334, "27480029": 334, "1127": 334, "49411185": 334, "71727841": 334, "dlaod": 334, "tmp": 334, "ipykernel_56393": 334, "3860440226": 334, "angle_based_posit": 335, "ro": 335, "ulaoa": 335, "apart": 336, "wi": 336, "fi": 336, "lte": [336, 351], "evolut": 336, "wimax": 336, "chapter": 336, "roman": 336, "binsiz": 336, "cdfofdm": 336, "bincountofdm": 336, "samplespow": 336, "avgpoweroutput": 336, "peakpoweroutput": 336, "pointpaproutput": 336, "countout": 336, "bins_countout": 336, "loop": [336, 348], "cumul": [336, 348], "papr_ofdm": 336, "cdfdft": 336, "bincountdft": 336, "ortho": [336, 341, 343, 344, 349, 351], "00001": 336, "papr_dft": 336, "papr_comparison": 336, "3000": 336, "symbolperiod": 336, "symbolperiodcp": 336, "scscp": 336, "sf2": 336, "60000": 337, "599": 337, "rep": 337, "pcolor": 337, "txantidx": 337, "rxantidx": 337, "symbindex": 337, "hideal": 337, "0000285": 337, "0000325": 337, "maxrank": 337, "condition_numb": 337, "repsect": 338, "27399998903274536": 338, "08749999850988388": 338, "0020000000949949026": 338, "4251999855041504": 338, "17100000381469727": 338, "00559999980032444": 338, "48124998807907104": 338, "453000009059906": 338, "18912500143051147": 338, "004999999888241291": 338, "48818182945251465": 338, "4808181822299957": 338, "42027273774147034": 338, "049272727221250534": 338, "49235713481903076": 338, "4894285798072815": 338, "47942855954170227": 338, "24899999797344208": 338, "004142857156693935": 338, "polar_bervssnr": 338, "rindex": [339, 340], "3305785123966942": 339, "2787500023841858": 339, "011250000447034836": 339, "32124999165534973": 339, "26625001430511475": 339, "16875000298023224": 339, "02250000089406967": 339, "7547169811320755": 339, "32749998569488525": 339, "29249998927116394": 339, "2175000011920929": 339, "15625": 339, "036249998956918716": 339, "32249999046325684": 339, "2874999940395355": 339, "2537499964237213": 339, "17624999582767487": 339, "07874999940395355": 339, "tbindex": 339, "31975001096725464": 339, "2562499940395355": 339, "15012499690055847": 339, "0017500000540167093": 339, "32233333587646484": 339, "2644583284854889": 339, "15429165959358215": 339, "3272361159324646": 339, "2646944522857666": 339, "16170834004878998": 339, "3237692415714264": 339, "2660336494445801": 339, "16290384531021118": 339, "30405065417289734": 339, "24077533185482025": 339, "1438588947057724": 339, "fixx": 339, "ber_vs_snr": 339, "ldpc_bervssnr_fin": 339, "ber_vs_tbsiz": 339, "ldpc_bervssnr_tbsiz": 339, "ldpc_bervssnr0": 340, "ldpc_bervssnr": 340, "snrvsber_ldpc": 340, "_g": [341, 343, 344], "4m": [341, 343, 344], "nsnapshot": [341, 342, 343, 344, 345, 346, 347, 348, 349], "bsgeometri": [341, 343, 344], "immendi": [341, 342, 343, 344, 345, 346, 347, 349], "ceilinght": [341, 343, 344], "clutterht": [341, 343, 344], "clutterden": [341, 343, 344], "0x7f929a1a3fd0": 341, "pl": [341, 343, 344, 347], "xpr": [341, 342, 343, 344, 345, 346, 347, 349], "hb": [341, 342, 346, 349], "bandlimit": [341, 343, 344, 347], "widen": [341, 343, 344, 347], "ht": [341, 342, 343, 344, 347, 349], "stabil": 342, "behav": 342, "engin": 342, "throughout": 342, "unchang": 342, "motion": [342, 345, 346, 349], "isinitlocationrandom": [342, 345], "isinitorientationrandom": [342, 345], "snapshotinterv": [342, 345, 346], "enablespatialconsist": [342, 345, 346, 349], "initialloc": [342, 345, 346], "0x7fca11a9ef10": 342, "coeffic": [342, 345, 346, 349], "efficeint": [342, 345, 346, 349], "coefficeint": [342, 345, 346, 349], "hue": [342, 345, 346, 348, 349], "bsantindex": [342, 349], "ueantindex": [342, 349], "inidc": [342, 349], "hdoppler": 342, "snapindex": [342, 349], "tau0": 342, "9999": 342, "0x7fd999829f10": 343, "0x7f73c2c5ea10": 344, "ruralmacro": 345, "ue2antarrai": 345, "ueroute2": 345, "0x7f7940973750": 345, "2638": 345, "93798828125": 345, "intiti": [345, 346], "discalim": 345, "wrapto30": 345, "ang": 345, "wrap": 345, "plotlayout": 345, "delangl": 345, "colour": 345, "hex": 345, "regularpolygon": 345, "numvertic": 345, "add_patch": 345, "wedg": 345, "theta1": 345, "theta2": 345, "bounddist": 345, "y0": 345, "past": 345, "loaction": 345, "grater": 345, "scenrio": 346, "everyth": [346, 359, 360, 362], "scerario": 346, "0x7fb96d21c390": 346, "milli": 346, "displayarrai": 347, "0x7f4c0d32b050": 347, "numcarrierfrequ": 347, "make_axes_locat": 348, "ceilingheight": 348, "plo": 348, "dist": 348, "proboflo": 348, "problo": 348, "10001": 348, "emper": 348, "aoaspread": 348, "aodspread": 348, "zoaspread": 348, "zodspread": 348, "10km": 348, "2199": 348, "114990234375": 348, "400634765625": 348, "count_sf": 348, "bins_count_sf": 348, "tau": [348, 349], "sigma_": 348, "count_kf": 348, "bins_count_kf": 348, "k_f": 348, "log_": 348, "count_phiaoa": 348, "bins_count_phiaoa": 348, "pdf_phiaoa": 348, "cdf_phiaoa": 348, "count_phiaod": 348, "bins_count_phiaod": 348, "pdf_phiaod": 348, "cdf_phiaod": 348, "count_thetaaoa": 348, "bins_count_thetaaoa": 348, "pdf_thetaaoa": 348, "cdf_thetaaoa": 348, "count_thetaaod": 348, "bins_count_thetaaod": 348, "pdf_thetaaod": 348, "cdf_thetaaod": 348, "signific": [349, 351], "neglig": 349, "aris": 349, "natur": 349, "impli": 349, "subset": 349, "inact": 349, "irrelev": 349, "focu": 349, "respond": 349, "rich": [349, 361], "scindex": 349, "oversamplingfactortx": 349, "oversamplingfactorrx": 349, "ftx": 349, "frx": 349, "hbeam": 349, "txantenna": 349, "rxantenna": 349, "genar": [350, 355, 361], "rough": [350, 355], "charaterist": [350, 355], "realist": [350, 355, 361], "incapsul": 351, "topic": 351, "condsid": 351, "nt_x": 351, "nt_y": 351, "considerd": 351, "mont": 351, "carlo": 351, "msg2": 351, "msg4": 351, "iab": 351, "mt": 351, "spare": 351, "unus": 351, "resourceset0": 351, "space0": 351, "bfangl": 351, "abf": 351, "x_beam": 351, "pt_a": 351, "nsymbforschedul": 351, "startofdmsymbolindic": 351, "iscustombeamform": 351, "htime": 351, "numfreq": 351, "k_bolt": 351, "yn": 351, "raster": 351, "boundri": 351, "rxarrai": 351, "rxcombin": 351, "combinertyp": 351, "numdftbeam": 351, "8183": 351, "ylim": 351, "firstsymbolindic": 351, "tranmit": 351, "version14": 351, "hurrai": 351, "ohh": 351, "470": 351, "pbchresequencebit": 351, "004629629629629629": 351, "rxbeamidx": 352, "bool_": 352, "yr": 352, "snr_vs_bler": 352, "link_level_and_system_level_simulation_for_physical_broadcast_channel": 352, "19999999999999996": 352, "07999999999999996": 352, "040000000000000036": 352, "11111111111111": 352, "_nr": 352, "cyclicshifthop": 353, "pucchformat0": 353, "pucchformat0decod": 353, "mcsestim": 353, "maxprb": 353, "initialc": 353, "validhoppinginfo": 353, "interlacedrb": 353, "refnum": 353, "853": 353, "pucchformat0obj": 353, "pucchformat0grid": 353, "initialcyclicshift": 353, "symbolindexstart": 353, "3300": 353, "pucchformat0decoderobj": 353, "pucchformat0decoderop": 353, "hardout": 353, "obj_mc": 353, "estimatem_c": 353, "offest": 353, "bin_arr": 353, "retriv": 353, "ber1": 353, "ber2": 353, "5023446658851114": 353, "2511723329425557": 353, "00206913808111479": 353, "4806565064478312": 353, "2403282532239156": 353, "004281332398719396": 353, "5005861664712778": 353, "2502930832356389": 353, "008858667904100823": 353, "5046893317702228": 353, "2523446658851114": 353, "018329807108324356": 353, "4783118405627198": 353, "2391559202813599": 353, "0379269019073225": 353, "4859320046893318": 353, "2429660023446659": 353, "07847599703514611": 353, "48182883939038684": 353, "24091441969519342": 353, "16237767391887217": 353, "4349355216881594": 353, "2174677608440797": 353, "3359818286283782": 353, "36518171160609614": 353, "18259085580304807": 353, "6951927961775608": 353, "1776084407971864": 353, "0888042203985932": 353, "4384498882876635": 353, "016998827667057445": 353, "008499413833528723": 353, "976351441631318": 353, "158482110660259": 353, "742749857031342": 353, "366508987303583": 353, "55594781168523": 353, "88378916846895": 353, "57214690901213": 353, "483": 353, "2930238571757": 353, "12040": 354, "513671875": 354, "009053156146179402": 354, "009252344416027281": 354, "004455980066445183": 354, "004647485080988918": 354, "0018064784053156147": 354, "0019855072463768114": 354, "0006735880398671096": 354, "0007374254049445865": 354, "481600": 354, "0000000004": 354, "00021760797342192692": 354, "00024424552429667517": 354, "6622000": 354, "64451827242525e": 354, "734867860187553e": 354, "33499999999999996": 354, "16013200": 354, "475083056478405e": 354, "1935208866155157e": 354, "04500000000000004": 354, "22996399": 354, "4916943521594684e": 354, "4100596760443308e": 354, "23718800": 354, "24080000": 354, "mcsindex3": 354, "aclr": [355, 361], "extern": 355, "libari": 355, "odfm": 355, "extact": 355, "libraier": 355, "20000": [355, 361], "se": [355, 361], "p1": [355, 361, 364], "geni": [355, 361], "industri": [355, 361], "1300": [355, 361], "email": [356, 359, 360, 362, 363], "month": [356, 359, 361, 362, 363], "arxiv": [356, 361], "x86_64": [359, 360, 362, 363], "llvm": [359, 362, 363], "anaconda": [359, 360, 362], "skip": [359, 360, 362], "instruct": [359, 360, 362, 365], "lighter": [359, 360, 362], "outdat": [359, 360, 362], "linux": [359, 360, 362], "sudo": [359, 360, 362], "apt": [359, 360, 362], "shortcut": [359, 362], "ctrl": [359, 362], "alt": [359, 362], "wget": [359, 360, 362], "repo": [359, 360, 362], "bash": [359, 360, 362], "conda": [359, 362, 363], "click": [359, 360, 362, 363], "button": [359, 360, 362], "prompt": [359, 360, 362], "pip": [359, 360, 362, 363], "readi": [359, 360, 362], "cach": [359, 360, 362, 363], "dir": [359, 360, 362, 363], "gigayasawireless": [359, 360, 361, 362, 363], "python3_7": [359, 360, 363], "py3": [359, 360, 362, 363], "whl": [359, 360, 362, 363], "python3_8": [359, 360, 362, 363], "python3_9": [359, 360, 362, 363], "python3_10": [359, 360, 362, 363], "truli": [359, 360, 362], "browser": [359, 360, 362], "__version__": [359, 360, 362, 365], "still": [359, 360, 362], "struggl": [359, 360, 362], "mailto": [359, 360, 362], "vikram": [359, 360, 361, 362], "happi": [359, 360, 362], "purchas": [359, 362, 363], "perpetu": [359, 362, 363], "central": [359, 362, 363], "hub": [359, 362, 363], "unzip": [359, 362, 363], "login": [359, 362, 363], "try": [359, 362, 363], "templat": [360, 363], "licens": [360, 361], "md": 360, "doc": 360, "myenv": 360, "buggi": [360, 363], "tpu": 361, "cpu": [361, 365], "pytorch": 361, "quarterli": 361, "upgrad": 361, "24x7": 361, "homepag": 361, "technologi": 361, "pxsch": 361, "pxcch": 361, "pxbch": 361, "dvanc": 361, "ntenna": 361, "ystem": 361, "aa": 361, "rtifici": 361, "ntellig": 361, "achin": 361, "earn": 361, "ybrid": 361, "utomat": 361, "epeat": 361, "uest": 361, "releasenot": 361, "instal": 361, "guid": 361, "lai": 361, "recip": 361, "solv": 361, "art": 361, "tent": 361, "week": 361, "young": 361, "repositori": 361, "reward": 361, "portal": 361, "miniconda": 361, "jupyt": [361, 363], "confirm": [361, 363], "video": 361, "hello": 361, "tentet": 361, "septemb": 361, "march": 361, "2024": 361, "trademark": 361, "5gtoolkit": 361, "jump": 362, "conflict": 362, "r24a": 362, "virtual": 363, "chase": 364, "p2": 364, "ri": 364, "rsrq": 364, "pssch": 364, "rim": 364, "dmrss": 364, "hap": 364, "drone": 364, "duplex": 364, "sbfd": 364, "phaser": 364, "ettu": 364, "lime": 364, "nm": 364, "newbi": 365, "08": 365, "651000": 365, "core": 365, "cc": 365, "onednn": 365, "tf_enable_onednn_opt": 365, "779554": 365, "platform": 365, "cpu_feature_guard": 365, "avx2": 365, "avx512f": 365, "avx512_vnni": 365, "fma": 365, "rebuild": 365, "478801": 365, "tf2tensorrt": 365, "py_util": 365, "trt": 365, "could": 365, "tensorrt": 365, "dpi": 365, "9600": 365, "15873515625": 365, "0block": 365, "8957356524063758": 365, "08426328125": 365, "8957356524063758block": 365, "5938136638046276": 365, "029006510416666666": 365, "5938136638046276block": 365, "812920690579611": 365, "004522395833333333": 365, "812920690579611block": 365, "8428": 365, "91549665014884": 365, "00016276041666666666": 365, "91549665014884block": 365, "06489999999999996": 365, "484367468222267": 365, "8125e": 365, "484367468222267block": 365, "00029999999999996696": 365, "41588833612777": 365, "41588833612777block": 365, "99225435691065": 365, "99225435691065block": 365, "81005372000593": 365, "81005372000593block": 365, "22776601683796": 365, "22776601683796block": 365, "28259557291666665": 365, "21662265625": 365, "1511671875": 365, "09119765625": 365, "04033958333333333": 365, "010061197916666667": 365, "9855": 365, "0008690104166666667": 365, "2984": 365, "333333333333334e": 365, "0032999999999999696": 365, "3536518229166667": 365, "3059221354166667": 365, "24816536458333333": 365, "18723645833333333": 365, "1307921875": 365, "08174973958333333": 365, "040142447916666664": 365, "011923697916666667": 365, "9943": 365, "0014354166666666667": 365, "43820000000000003": 365, "96875e": 365, "01200000000000001": 365}, "objects": {"toolkit5G.CRC": [[3, 0, 1, "", "CRCDecoder"], [4, 0, 1, "", "CRCEncoder"]], "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder": [[5, 0, 1, "", "HammingDecoder"], [5, 0, 1, "", "HammingSphereDecoder"], [5, 0, 1, "", "HammingSyndromeDecoder"]], "toolkit5G.ChannelCoder.HammingCoder.hammingEncoder": [[5, 0, 1, "", "HammingEncoder"]], "toolkit5G.ChannelCoder.LDPC": [[93, 0, 1, "", "CodeBlockAggregation"], [92, 0, 1, "", "CodeBlockConcatenation"], [93, 0, 1, "", "CodeBlockSegmentation"], [92, 0, 1, "", "CodeBlockSegregation"], [9, 0, 1, "", "LDPCparameters"]], "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation": [[93, 1, 1, "", "C"], [93, 1, 1, "", "Kbar"], [93, 1, 1, "", "Kcb"], [93, 1, 1, "", "baseGraph"], [93, 1, 1, "", "codeRate"], [93, 1, 1, "", "crcType"], [93, 1, 1, "", "tbSize"]], "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation": [[93, 1, 1, "", "B"], [93, 1, 1, "", "C"], [93, 1, 1, "", "K"], [93, 1, 1, "", "Kb"], [93, 1, 1, "", "Kbar"], [93, 1, 1, "", "L"], [93, 1, 1, "", "Zc"], [93, 1, 1, "", "baseGraph"], [93, 1, 1, "", "codeRate"]], "toolkit5G.ChannelCoder": [[96, 0, 1, "", "LDPCDecoder5G"], [96, 0, 1, "", "LDPCEncoder5G"], [146, 0, 1, "", "PolarDecoder5G"], [146, 0, 1, "", "PolarEncoder5G"], [12, 0, 1, "", "ReedMullerDecoder5G"], [12, 0, 1, "", "ReedMullerEncoder5G"]], "toolkit5G.ChannelCoder.LDPCDecoder5G": [[96, 1, 1, "", "bm"], [96, 2, 1, "", "computeIls"], [96, 1, 1, "", "i_ls"], [96, 1, 1, "", "k_ldpc"], [96, 1, 1, "", "llr_max"], [96, 1, 1, "", "n"], [96, 1, 1, "", "n_ldpc"], [96, 1, 1, "", "nb_pruned_nodes"], [96, 1, 1, "", "prune_pcm"]], "toolkit5G.ChannelCoder.LDPCEncoder5G": [[96, 1, 1, "", "bm"], [96, 2, 1, "", "computeIls"], [96, 1, 1, "", "i_ls"], [96, 1, 1, "", "k"], [96, 1, 1, "", "n"], [96, 1, 1, "", "n_ldpc"], [96, 1, 1, "", "pcm"], [96, 1, 1, "", "z"]], "toolkit5G.ChannelCoder.PolarCoder": [[149, 0, 1, "", "CodeBlockAggregation"], [148, 0, 1, "", "CodeBlockConcatenation"], [149, 0, 1, "", "CodeBlockSegmentation"], [148, 0, 1, "", "CodeBlockSegregation"], [143, 0, 1, "", "InputBitDeInterleaver"], [143, 0, 1, "", "InputBitInterleaver"]], "toolkit5G.ChannelCoder.PolarDecoder5G": [[146, 1, 1, "", "E"], [146, 1, 1, "", "K"], [146, 1, 1, "", "N"], [146, 1, 1, "", "dec_type"], [146, 1, 1, "", "llr_max"], [146, 1, 1, "", "output_dtype"]], "toolkit5G.ChannelCoder.PolarEncoder5G": [[146, 1, 1, "", "N"]], "toolkit5G.ChannelCoder.ReedMullerDecoder5G": [[12, 1, 1, "", "dtype"], [12, 1, 1, "", "hardIn"], [12, 1, 1, "", "k"]], "toolkit5G.ChannelCoder.ReedMullerEncoder5G": [[12, 1, 1, "", "dtype"], [12, 1, 1, "", "k"]], "toolkit5G.ChannelModels": [[14, 0, 1, "", "AntennaArrays"], [15, 0, 1, "", "ChannelGenerator"], [17, 0, 1, "", "NodeMobility"], [18, 0, 1, "", "ParameterGenerator"], [19, 0, 1, "", "SimulationLayout"]], "toolkit5G.ChannelModels.NodeMobility": [[17, 2, 1, "", "displayRoute"]], "toolkit5G.ChannelModels.SimulationLayout": [[19, 1, 1, "", "BSLocations"], [19, 1, 1, "", "ISD"], [19, 1, 1, "", "UELocations"], [19, 1, 1, "", "UEdistibution"], [19, 1, 1, "", "UEheightDistribution"], [19, 1, 1, "", "bsAntennaArray"], [19, 1, 1, "", "bsRoute"], [19, 1, 1, "", "carrierFrequency"], [19, 1, 1, "", "clutterDensity"], [19, 1, 1, "", "clutterHeight"], [19, 1, 1, "", "clutterSize"], [19, 1, 1, "", "correlationDistanceIndoor"], [19, 1, 1, "", "correlationDistanceLoS"], [19, 1, 1, "", "correlationTypeIndoor"], [19, 1, 1, "", "correlationTypeLoS"], [19, 1, 1, "", "enableSpatialConsistencyIndoor"], [19, 1, 1, "", "enableSpatialConsistencyLoS"], [19, 1, 1, "", "force3GPPSpatialConsistencyParameters"], [19, 1, 1, "", "forceLOS"], [19, 1, 1, "", "heightOfBS"], [19, 1, 1, "", "heightOfRoom"], [19, 1, 1, "", "heightOfUE"], [19, 1, 1, "", "indoorUEfraction"], [19, 1, 1, "", "layoutLength"], [19, 1, 1, "", "layoutType"], [19, 1, 1, "", "layoutWidth"], [19, 1, 1, "", "lengthOfIndoorObject"], [19, 1, 1, "", "maxNumberOfFloors"], [19, 1, 1, "", "memoryEfficient"], [19, 1, 1, "", "minNumberOfFloors"], [19, 1, 1, "", "minUEBSDistance"], [19, 1, 1, "", "numOfBS"], [19, 1, 1, "", "numOfSectorsPerSite"], [19, 1, 1, "", "numOfSnapShots"], [19, 1, 1, "", "numOfUE"], [19, 1, 1, "", "radiusForCircularUEDrop"], [19, 1, 1, "", "routeType"], [19, 1, 1, "", "terrain"], [19, 1, 1, "", "ueAntennaArray"], [19, 1, 1, "", "ueDropMethod"], [19, 1, 1, "", "ueRoute"], [19, 1, 1, "", "widthOfIndoorObject"]], "toolkit5G.ChannelModels.antennaArrays": [[14, 0, 1, "", "Antenna_3GPP_38901"], [14, 0, 1, "", "Antenna_HertzianDipole"], [14, 0, 1, "", "Antenna_LinearDipole"]], "toolkit5G.ChannelModels.nodeMobility": [[17, 0, 1, "", "CircularRoute"], [17, 0, 1, "", "DropVehiclesHighway"], [17, 0, 1, "", "RandomWalk"]], "toolkit5G.ChannelModels.simulationLayout": [[19, 0, 1, "", "HexagonalLayout"], [19, 0, 1, "", "RectangularLayout"]], "toolkit5G.ChannelProcessing": [[21, 0, 1, "", "AddNoise"], [22, 0, 1, "", "ApplyChannel"]], "toolkit5G.ChannelProcessing.ApplyChannel": [[22, 1, 1, "", "enableInterTxInterference"], [22, 1, 1, "", "isFrequencyDomain"], [22, 1, 1, "", "memoryConsumptionLevel"]], "toolkit5G.Configurations": [[261, 0, 1, "", "CSIConfiguration"], [262, 0, 1, "", "GenerateValidSSBParameters"], [263, 0, 1, "", "PDSCHLowerPhyConfiguration"], [264, 0, 1, "", "PDSCHUpperPhyConfiguration"], [265, 0, 1, "", "SRSConfiguration"], [266, 0, 1, "", "SSBConfiguration"], [267, 0, 1, "", "TimeFrequency5GParameters"]], "toolkit5G.Configurations.SRSConfiguration": [[265, 1, 1, "", "bHop"], [265, 1, 1, "", "bSRS"], [265, 1, 1, "", "betaSRS"], [265, 1, 1, "", "cSRS"], [265, 1, 1, "", "combOffset"], [265, 1, 1, "", "enableStartRBHopping"], [265, 1, 1, "", "freqDomainPosition"], [265, 1, 1, "", "freqDomainShift"], [265, 1, 1, "", "freqScalingFactor"], [265, 1, 1, "", "groupOrSequenceHopping"], [265, 1, 1, "", "lengthOfSequence"], [265, 1, 1, "", "nrOfCyclicShift"], [265, 1, 1, "", "nrofSRS_Ports"], [265, 1, 1, "", "nrofSymbols"], [265, 1, 1, "", "offsetInSlots"], [265, 1, 1, "", "periodicityInSlots"], [265, 1, 1, "", "purpose"], [265, 1, 1, "", "repetitionFactor"], [265, 1, 1, "", "resourceGridSizeinRBs"], [265, 1, 1, "", "resourceType"], [265, 1, 1, "", "sequenceId"], [265, 1, 1, "", "slotIndex"], [265, 1, 1, "", "startPosition"], [265, 1, 1, "", "startRBIndex"], [265, 1, 1, "", "symbolIndices"], [265, 1, 1, "", "systemFrameNumber"], [265, 1, 1, "", "transmissionComb"]], "toolkit5G.Configurations.TimeFrequency5GParameters": [[267, 2, 1, "", "getGaurdBand_FR1"], [267, 2, 1, "", "getGaurdBand_FR2"], [267, 2, 1, "", "getNumberRB_FR1"], [267, 2, 1, "", "getNumberRB_FR2"]], "toolkit5G.MIMOProcessing": [[29, 0, 1, "", "SearchFree"], [29, 0, 1, "", "TypeICodeBook"]], "toolkit5G.OFDM": [[32, 0, 1, "", "OFDMDemodulator"], [33, 0, 1, "", "OFDMModulator"], [35, 0, 1, "", "TransformDecoding5G"], [36, 0, 1, "", "TransformPrecoding"], [37, 0, 1, "", "TransformPrecoding5G"]], "toolkit5G.PayloadGeneration": [[38, 0, 1, "", "DCIExtraction"], [38, 0, 1, "", "DCIGeneration"], [46, 0, 1, "", "MIBExtraction"], [46, 0, 1, "", "MIBGeneration"]], "toolkit5G.PayloadGeneration.MIBExtraction": [[46, 1, 1, "", "carrierFreq"], [46, 1, 1, "", "cellBarred"], [46, 1, 1, "", "choiceBit"], [46, 1, 1, "", "controlResourceSet0"], [46, 2, 1, "", "displayParameters"], [46, 1, 1, "", "dmrsTypeAPosition"], [46, 1, 1, "", "hrfBit"], [46, 1, 1, "", "intraFrequencyReselection"], [46, 1, 1, "", "nssbCandidatesInHrf"], [46, 1, 1, "", "searchSpace0"], [46, 1, 1, "", "ssbIndex"], [46, 1, 1, "", "ssbSubCarrierOffset"], [46, 1, 1, "", "subCarrierSpacingCommon"], [46, 1, 1, "", "systemFrameNumber"]], "toolkit5G.PayloadGeneration.MIBGeneration": [[46, 1, 1, "", "carrierFreq"], [46, 1, 1, "", "cellBarred"], [46, 1, 1, "", "choiceBit"], [46, 1, 1, "", "controlResourceSet0"], [46, 2, 1, "", "displayParameters"], [46, 1, 1, "", "dmrsTypeAPosition"], [46, 1, 1, "", "hrfBit"], [46, 1, 1, "", "intraFrequencyReselection"], [46, 1, 1, "", "nssbCandidatesInHrf"], [46, 1, 1, "", "searchSpace0"], [46, 1, 1, "", "ssbIndex"], [46, 1, 1, "", "ssbSubCarrierOffset"], [46, 1, 1, "", "subCarrierSpacingCommon"], [46, 1, 1, "", "systemFrameNumber"]], "toolkit5G.PhysicalChannels": [[184, 0, 1, "", "PBCH"], [184, 0, 1, "", "PBCHDecoder"], [185, 0, 1, "", "PDCCH"], [185, 0, 1, "", "PDCCHDecoder"], [86, 0, 1, "", "PDSCHDecoderLowerPhy"], [88, 0, 1, "", "PDSCHDecoderUpperPhy"], [85, 0, 1, "", "PDSCHLowerPhy"], [87, 0, 1, "", "PDSCHUpperPhy"], [188, 0, 1, "", "PSBCH"], [188, 0, 1, "", "PSBCHDecoder"], [189, 0, 1, "", "PSCCHLowerPhy"], [189, 0, 1, "", "PSCCHLowerPhyDecoder"], [189, 0, 1, "", "PSCCHUpperPhy"], [189, 0, 1, "", "PSCCHUpperPhyDecoder"], [181, 0, 1, "", "PUSCHDecoderUpperPhy"], [182, 0, 1, "", "PUSCHUpperPhy"]], "toolkit5G.PhysicalChannels.PBCH": [[25, 0, 1, "", "PBCHDeInterleaver"], [25, 0, 1, "", "PBCHInterleaver"], [184, 1, 1, "", "chIL_bits"], [184, 1, 1, "", "encBits"], [184, 1, 1, "", "iILBits"], [184, 1, 1, "", "ilBits"], [184, 1, 1, "", "mib"], [184, 1, 1, "", "payloadCRC"], [184, 1, 1, "", "payloadMIB"], [184, 1, 1, "", "rmBits"], [184, 1, 1, "", "sBIL_bits"], [184, 1, 1, "", "scr2bits"], [184, 1, 1, "", "scrBits"]], "toolkit5G.PhysicalChannels.PBCHDecoder": [[184, 1, 1, "", "channelDeInterleaverBits"], [184, 1, 1, "", "crcCheck"], [184, 1, 1, "", "deCRCBits"], [184, 1, 1, "", "deScrambledBits"], [184, 1, 1, "", "descrambled2LLRs"], [184, 1, 1, "", "inputDeinteleavedBits"], [184, 1, 1, "", "llr"], [184, 1, 1, "", "mibRx"], [184, 1, 1, "", "pbchDeInterleavedBits"], [184, 1, 1, "", "polarDecodedBits"], [184, 1, 1, "", "rateDematedBits"], [184, 1, 1, "", "subBlockDeinterleavedBits"]], "toolkit5G.PhysicalChannels.PDCCH": [[185, 1, 1, "", "dciBIL"], [185, 1, 1, "", "dciCRC"], [185, 1, 1, "", "dciIBI"], [185, 1, 1, "", "dciRM"], [185, 1, 1, "", "dciRNTI"], [185, 1, 1, "", "dciSCR"], [185, 1, 1, "", "encBits"]], "toolkit5G.PhysicalChannels.PDCCHDecoder": [[185, 1, 1, "", "check"], [185, 1, 1, "", "dciBits"], [185, 1, 1, "", "decodedBits"], [185, 1, 1, "", "dematchedBits"], [185, 1, 1, "", "descrambledLLRs"], [185, 1, 1, "", "ibDILBits"], [185, 1, 1, "", "llr"], [185, 1, 1, "", "sbdBits"], [185, 1, 1, "", "unmaskedBits"]], "toolkit5G.PhysicalChannels.PDSCH": [[94, 0, 1, "", "ComputeTransportBlockSize"], [95, 0, 1, "", "LayerDemapper"], [95, 0, 1, "", "LayerMapper"], [108, 0, 1, "", "TransportBlockRxProcessing"], [108, 0, 1, "", "TransportBlockTxProcessing"]], "toolkit5G.PhysicalChannels.PDSCHLowerPhy": [[85, 2, 1, "", "displayDMRSGrid"], [85, 2, 1, "", "displayResourceGrid"]], "toolkit5G.Positioning": [[192, 0, 1, "", "DFT_DoA"], [202, 0, 1, "", "DFT_ToA"], [195, 0, 1, "", "DoAEstimation"], [193, 0, 1, "", "ESPRIT_DoA"], [203, 0, 1, "", "ESPRIT_ToA"], [196, 0, 1, "", "GradientDescentDoA"], [198, 0, 1, "", "GradientDescentTDoA"], [197, 0, 1, "", "HybridTDoAAoA"], [197, 0, 1, "", "HybridToAAoA"], [196, 0, 1, "", "LeastSquareDoA"], [198, 0, 1, "", "LeastSquareTDoA"], [199, 0, 1, "", "LeastSquareToA"], [194, 0, 1, "", "MUSIC_DoA"], [204, 0, 1, "", "MUSIC_ToA"], [198, 0, 1, "", "NewtonRaphsonTDoA"], [206, 0, 1, "", "PositionEstimation"], [205, 0, 1, "", "ToAEstimation"]], "toolkit5G.Ratematcher.LDPC": [[208, 0, 1, "", "BitDeinterleaver"], [207, 0, 1, "", "BitDeselection"], [208, 0, 1, "", "BitInterleaver"], [207, 0, 1, "", "BitSelection"], [209, 0, 1, "", "RatematchParameters"]], "toolkit5G.Ratematcher.LDPC.BitDeinterleaver": [[208, 1, 1, "", "modOrder"], [208, 1, 1, "", "numBits1"], [208, 1, 1, "", "numBits2"]], "toolkit5G.Ratematcher.LDPC.BitDeselection": [[207, 1, 1, "", "Ncb"], [207, 1, 1, "", "baseGraph"], [207, 1, 1, "", "enableLBRM"], [207, 1, 1, "", "k0"], [207, 1, 1, "", "liftingFactor"], [207, 1, 1, "", "nLDPC"], [207, 1, 1, "", "rvID"]], "toolkit5G.Ratematcher.LDPC.BitInterleaver": [[208, 1, 1, "", "modOrder"], [208, 1, 1, "", "numBits1"], [208, 1, 1, "", "numBits2"]], "toolkit5G.Ratematcher.LDPC.BitSelection": [[207, 1, 1, "", "baseGraph"], [207, 1, 1, "", "enableLBRM"], [207, 1, 1, "", "k0"], [207, 1, 1, "", "liftingFactor"], [207, 1, 1, "", "modOrder"], [207, 1, 1, "", "numCBs"], [207, 1, 1, "", "numCodedBits"], [207, 1, 1, "", "numLayers"], [207, 1, 1, "", "rvID"], [207, 1, 1, "", "tbSize"]], "toolkit5G.Ratematcher.LDPC.RatematchParameters": [[209, 1, 1, "", "baseGraph"], [209, 1, 1, "", "enableLBRM"], [209, 1, 1, "", "k0"], [209, 1, 1, "", "liftingFactor"], [209, 1, 1, "", "modOrder"], [209, 1, 1, "", "numCodeBlocks"], [209, 1, 1, "", "numCodedBits"], [209, 1, 1, "", "numLayers"], [209, 1, 1, "", "rvID"], [209, 1, 1, "", "tbSize"]], "toolkit5G.Ratematcher.PolarCoder": [[210, 0, 1, "", "BitDeSelection"], [210, 0, 1, "", "BitSelection"], [211, 0, 1, "", "ChannelDeInterleaver"], [211, 0, 1, "", "ChannelInterleaver"], [212, 0, 1, "", "Subblock_DeInterleaver"], [212, 0, 1, "", "Subblock_Interleaver"]], "toolkit5G.ReceiverAlgorithms": [[268, 0, 1, "", "CarrierFrequencyOffsetEstimation"], [269, 0, 1, "", "ChannelEstimationAndEqualizationPBCH"], [270, 0, 1, "", "ChannelEstimationAndEqualizationPDCCH"], [271, 0, 1, "", "ChannelEstimationAndEqualizationPDSCH"], [275, 0, 1, "", "ChannelEstimationCSIRS"], [276, 0, 1, "", "ChannelEstimationSRS"], [272, 0, 1, "", "DMRSParameterDetection"], [273, 0, 1, "", "PSSDetection"], [274, 0, 1, "", "SSSDetection"]], "toolkit5G.ResourceMapping": [[227, 0, 1, "", "CORESET"], [217, 0, 1, "", "DeSpreadingFormat1"], [215, 0, 1, "", "ResourceDeMapperFormat0"], [218, 0, 1, "", "ResourceDeMapperFormat1"], [228, 0, 1, "", "ResourceMapperCSIRS"], [229, 0, 1, "", "ResourceMapperDMRSPDSCH"], [216, 0, 1, "", "ResourceMapperFormat0"], [219, 0, 1, "", "ResourceMapperFormat1"], [231, 0, 1, "", "ResourceMapperPRS"], [233, 0, 1, "", "ResourceMapperPTRSPDSCH"], [238, 0, 1, "", "ResourceMapperSSB"], [230, 0, 1, "", "ResourceMappingPDCCH"], [232, 0, 1, "", "ResourceMappingPSCCH"], [237, 0, 1, "", "SSB_Grid"], [235, 0, 1, "", "SSSB_Grid"], [236, 0, 1, "", "SearchSpaceSet"], [220, 0, 1, "", "SpreadingFormat1"]], "toolkit5G.ResourceMapping.CORESET": [[227, 2, 1, "", "displayCoresetREG_CCE_Mapping"]], "toolkit5G.ResourceMapping.DeSpreadingFormat1": [[134, 1, 1, "", "SpreadingFactor"], [217, 1, 1, "", "indexPUCCH"], [217, 1, 1, "", "maxNumPRBs"], [217, 1, 1, "", "numberOfSymb"], [217, 1, 1, "", "start_SymbIndex"], [217, 1, 1, "", "timedomainOCC"]], "toolkit5G.ResourceMapping.ResourceDeMapperFormat0": [[215, 1, 1, "", "formatPUCCH"], [215, 1, 1, "", "indexPUCCH"], [215, 1, 1, "", "interlaceIndex_0"], [215, 1, 1, "", "interlaceIndex_1"], [215, 1, 1, "", "maxNumPRBs"], [215, 1, 1, "", "numInterlacedRBs"], [215, 1, 1, "", "numOfInterlaces"], [215, 1, 1, "", "numRBs"], [215, 1, 1, "", "numberOfSymb"], [215, 1, 1, "", "offset"], [215, 1, 1, "", "rg_Size"], [215, 1, 1, "", "secondHopPRB"], [215, 1, 1, "", "seqLength"], [215, 1, 1, "", "start_SymbIndex"], [215, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceDeMapperFormat1": [[218, 1, 1, "", "indexPUCCH"], [218, 1, 1, "", "interlaceIndex_0"], [218, 1, 1, "", "interlaceIndex_1"], [218, 1, 1, "", "maxNumPRBs"], [218, 1, 1, "", "numInterlacedRBs"], [218, 1, 1, "", "numOfInterlaces"], [218, 1, 1, "", "numRBs"], [218, 1, 1, "", "numberOfSymb"], [218, 1, 1, "", "offset"], [218, 1, 1, "", "rg_Size"], [218, 1, 1, "", "secondHopPRB"], [218, 1, 1, "", "seqLength"], [218, 1, 1, "", "start_SymbIndex"], [218, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceMapperCSIRS": [[228, 2, 1, "", "displayCDMPattern"], [228, 2, 1, "", "displayResourceGrid"]], "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH": [[229, 2, 1, "", "displayCDMPattern"], [229, 2, 1, "", "displayResourceGrid"]], "toolkit5G.ResourceMapping.ResourceMapperFormat0": [[216, 1, 1, "", "formatPUCCH"], [216, 1, 1, "", "indexPUCCH"], [216, 1, 1, "", "interlaceIndex_0"], [216, 1, 1, "", "interlaceIndex_1"], [216, 1, 1, "", "maxNumPRBs"], [216, 1, 1, "", "numInterlacedRBs"], [216, 1, 1, "", "numOfInterlaces"], [216, 1, 1, "", "numRBs"], [216, 1, 1, "", "numberOfSymb"], [216, 1, 1, "", "offset"], [216, 1, 1, "", "rg_Size"], [216, 1, 1, "", "secondHopPRB"], [216, 1, 1, "", "seqLength"], [216, 1, 1, "", "start_SymbIndex"], [216, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.ResourceMapperFormat1": [[219, 1, 1, "", "indexPUCCH"], [219, 1, 1, "", "interlaceIndex_0"], [219, 1, 1, "", "interlaceIndex_1"], [219, 1, 1, "", "maxNumPRBs"], [219, 1, 1, "", "numInterlacedRBs"], [219, 1, 1, "", "numOfInterlaces"], [219, 1, 1, "", "numRBs"], [219, 1, 1, "", "numberOfSymb"], [219, 1, 1, "", "offset"], [219, 1, 1, "", "rg_Size"], [219, 1, 1, "", "secondHopPRB"], [219, 1, 1, "", "seqLength"], [219, 1, 1, "", "start_SymbIndex"], [219, 1, 1, "", "startingPRB"]], "toolkit5G.ResourceMapping.SSB_Grid": [[237, 2, 1, "", "displayGrid"], [237, 1, 1, "", "dmrsIndices"], [237, 1, 1, "", "pbchIndices"], [237, 1, 1, "", "pssIndices"], [237, 1, 1, "", "sssIndices"]], "toolkit5G.ResourceMapping.SSSB_Grid": [[235, 2, 1, "", "displayGrid"]], "toolkit5G.ResourceMapping.SpreadingFormat1": [[139, 1, 1, "", "SpreadingFactor"], [220, 1, 1, "", "indexPUCCH"], [220, 1, 1, "", "numRBs"], [220, 1, 1, "", "numberOfSymb"], [220, 1, 1, "", "start_SymbIndex"], [220, 1, 1, "", "timedomainOCC"]], "toolkit5G.Scheduler": [[280, 0, 1, "", "LinkAdaptation"], [278, 0, 1, "", "PDCCHScheduler"], [281, 0, 1, "", "RankAdaptation"], [279, 0, 1, "", "RoundRobinScheduler"]], "toolkit5G.Scheduler.LinkAdaptation": [[280, 2, 1, "", "selectMCS"]], "toolkit5G.Scheduler.RoundRobinScheduler": [[279, 1, 1, "", "firstAcrossTime"], [279, 1, 1, "", "numRB"], [279, 1, 1, "", "numSymbol"], [279, 1, 1, "", "numUEscheduledAcrossFreq"], [279, 1, 1, "", "numUEscheduledAcrossTime"]], "toolkit5G.Scrambler": [[240, 0, 1, "", "DeScrambler"], [241, 0, 1, "", "RNTImasking"], [242, 0, 1, "", "Scrambler"]], "toolkit5G.Scrambler.DeScrambler": [[240, 1, 1, "", "Lmax"], [240, 1, 1, "", "c_init"], [240, 1, 1, "", "id"], [240, 1, 1, "", "mu"], [240, 1, 1, "", "nID"], [240, 1, 1, "", "purpose"], [240, 1, 1, "", "q"], [240, 1, 1, "", "rnti"], [240, 1, 1, "", "ssbIndex"]], "toolkit5G.Scrambler.RNTImasking": [[241, 1, 1, "", "rnti"]], "toolkit5G.Scrambler.Scrambler": [[242, 1, 1, "", "Lmax"], [242, 1, 1, "", "c_init"], [242, 1, 1, "", "id"], [242, 1, 1, "", "mu"], [242, 1, 1, "", "nID"], [242, 1, 1, "", "purpose"], [242, 1, 1, "", "q"], [242, 1, 1, "", "rnti"], [242, 1, 1, "", "ssbIndex"]], "toolkit5G.SequenceGeneration": [[248, 0, 1, "", "CSIRS"], [249, 0, 1, "", "DMRS"], [244, 0, 1, "", "LowPAPRSequenceType1"], [245, 0, 1, "", "LowPAPRSequenceType2"], [250, 0, 1, "", "PNSequence"], [251, 0, 1, "", "PRS"], [252, 0, 1, "", "PSS"], [246, 0, 1, "", "PUCCHFormat0Sequence"], [247, 0, 1, "", "PUCCHFormat1Sequence"], [254, 0, 1, "", "SRS"], [255, 0, 1, "", "SSS"], [253, 0, 1, "", "S_PSS"], [256, 0, 1, "", "S_SSS"]], "toolkit5G.SequenceGeneration.LowPAPRSequenceType1": [[244, 1, 1, "", "baseSequenceNumber"], [244, 1, 1, "", "cyclicShift"], [244, 1, 1, "", "delta"], [244, 1, 1, "", "groupNumber"], [244, 1, 1, "", "lengthOfSequence"], [244, 1, 1, "", "numRBs"]], "toolkit5G.SequenceGeneration.LowPAPRSequenceType2": [[245, 1, 1, "", "cinit"], [245, 1, 1, "", "delta"], [245, 1, 1, "", "groupNumber"], [245, 1, 1, "", "groupNumber_Or_cinit"], [245, 1, 1, "", "lengthOfSequence"], [245, 1, 1, "", "numRBs"]], "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence": [[246, 1, 1, "", "controlInfo"], [246, 1, 1, "", "indexPUCCH"], [246, 1, 1, "", "initial_CyclicShift"], [246, 1, 1, "", "m_CS"], [246, 1, 1, "", "nID"], [246, 1, 1, "", "numBatches"], [246, 1, 1, "", "numInterlacedRBs"], [246, 1, 1, "", "numRBs"], [246, 1, 1, "", "numberOfSymb"], [246, 1, 1, "", "pucch_GroupHopping"], [246, 1, 1, "", "seqNumber"], [246, 1, 1, "", "slotNumber"], [246, 1, 1, "", "start_SymbIndex"]], "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence": [[247, 1, 1, "", "indexPUCCH"], [247, 1, 1, "", "initial_CyclicShift"], [247, 1, 1, "", "m_CS"], [247, 1, 1, "", "maxNumPRBs"], [247, 1, 1, "", "nHop"], [247, 1, 1, "", "nID"], [247, 1, 1, "", "numInterlacedRBs"], [247, 1, 1, "", "numRBs"], [247, 1, 1, "", "numberOfSymb"], [247, 1, 1, "", "pucch_GroupHopping"], [247, 1, 1, "", "slotNumber"], [247, 1, 1, "", "start_SymbIndex"]], "toolkit5G.SequenceGeneration.SRS": [[254, 1, 1, "", "lengthOfSequence"], [254, 1, 1, "", "nrOfCyclicShift"], [254, 1, 1, "", "nrofSymbols"], [254, 1, 1, "", "sequenceId"], [254, 1, 1, "", "slotIndex"], [254, 1, 1, "", "startPosition"], [254, 1, 1, "", "symbolIndices"], [254, 1, 1, "", "transmissionComb"]], "toolkit5G.SymbolMapping": [[258, 0, 1, "", "Demapper"], [259, 0, 1, "", "Mapper"]]}, "objtypes": {"0": "py:class", "1": "py:property", "2": "py:method"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "property", "Python property"], "2": ["py", "method", "Python method"]}, "titleterms": {"get": [0, 365], "start": [0, 365], "understand": 0, "api": [0, 1], "document": [0, 1, 361], "hello": 0, "world": 0, "import": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 334, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 365], "python": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 311, 312, 314, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 352, 353, 354, 365], "librari": [0, 285, 287, 288, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 359, 362, 363, 365], "how": [0, 361, 363], "5g": [0, 1, 12, 23, 33, 35, 37, 65, 84, 107, 127, 151, 161, 162, 168, 196, 198, 206, 234, 239, 260, 267, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 296, 301, 302, 303, 304, 305, 307, 308, 309, 310, 311, 312, 313, 316, 317, 319, 320, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "toolkit": [0, 1, 284, 289, 291, 294, 301, 302, 304, 305, 307, 308, 309, 311, 312, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 347, 349, 351, 352, 353, 354, 359, 360, 361, 362, 363, 365], "creat": [0, 330, 331, 334, 360, 365], "object": [0, 365], "all": [0, 312, 327], "modul": [0, 1, 33, 47, 70, 97, 113, 172, 289, 291, 301, 351], "gener": [0, 15, 18, 39, 40, 46, 132, 138, 235, 237, 243, 249, 285, 287, 289, 291, 294, 301, 302, 311, 312, 323, 325, 326, 327, 330, 331, 332, 333, 334, 335, 337, 341, 342, 343, 344, 345, 346, 347, 348, 351, 352, 354, 365], "payload": [0, 39, 40, 45, 46, 351, 365], "bit": [0, 11, 24, 27, 43, 44, 56, 57, 68, 69, 75, 76, 101, 102, 111, 112, 118, 119, 143, 144, 147, 152, 159, 207, 208, 210, 301, 365], "encod": [0, 4, 6, 10, 12, 55, 74, 96, 117, 142, 144, 146, 147, 365], "them": 0, "symbol": [0, 49, 72, 99, 115, 169, 174, 257, 269, 270, 271, 286, 291, 301, 338, 339, 351, 365], "map": [0, 49, 72, 99, 115, 130, 131, 136, 137, 169, 174, 215, 216, 218, 219, 226, 238, 257, 301, 338, 339, 351], "pass": [0, 311, 327, 330, 331, 334, 337, 351, 352, 354], "through": [0, 311, 327, 330, 331, 334, 337, 351, 352, 354], "awgn": [0, 318, 338, 365], "channel": [0, 10, 15, 16, 18, 20, 22, 26, 55, 56, 58, 74, 75, 77, 103, 104, 117, 118, 120, 142, 144, 145, 146, 147, 153, 158, 183, 184, 185, 186, 187, 188, 189, 190, 191, 211, 228, 229, 230, 232, 233, 234, 248, 249, 261, 269, 270, 271, 275, 276, 291, 302, 303, 311, 312, 316, 318, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 337, 338, 341, 342, 343, 344, 345, 346, 347, 349, 350, 351, 352, 354, 365], "demap": [0, 301, 365], "detect": [0, 273, 274, 351, 365], "error": [0, 13, 301, 302, 318, 330, 331, 332, 333, 334, 335, 352, 365], "block": [0, 7, 11, 28, 39, 44, 46, 56, 59, 69, 75, 78, 92, 93, 94, 108, 112, 118, 121, 143, 144, 147, 148, 149, 151, 154, 158, 161, 212, 235, 237, 238, 301, 304, 305, 306, 307, 308, 309, 318, 339, 352, 365], "comput": [0, 9, 94, 309, 327, 334, 348, 351, 365], "rate": [0, 56, 75, 100, 102, 118, 151, 155, 156, 157, 159, 160, 161, 209, 213, 214, 301, 318, 339, 352], "constel": [0, 289, 291, 294, 318, 351, 365], "diagram": [0, 289, 291, 294, 351, 365], "tx": [0, 29, 289, 291, 318, 342, 349, 351], "rx": [0, 318, 342, 349, 351], "link": [0, 280, 311, 323, 325, 326, 352, 354, 365], "level": [0, 305, 311, 323, 325, 326, 352, 354, 365], "simul": [0, 19, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 352, 353, 354, 365], "perform": [0, 10, 55, 74, 117, 142, 146, 291, 294, 301, 302, 311, 318, 322, 323, 329, 330, 331, 332, 333, 334, 335, 336, 338, 339, 351, 352, 353, 365], "resourc": [0, 130, 131, 136, 137, 215, 216, 218, 219, 226, 227, 238, 282, 294, 297, 327, 328, 330, 331, 337, 351], "script": 0, "tabl": [1, 2, 10, 23, 33, 39, 42, 46, 49, 51, 53, 55, 65, 67, 72, 74, 84, 99, 107, 110, 115, 117, 127, 142, 146, 162, 168, 171, 174, 196, 198, 234, 235, 237, 239, 243, 249, 259, 301, 329, 331, 334, 338, 353], "1": [1, 10, 23, 29, 33, 39, 46, 55, 65, 74, 84, 107, 117, 127, 133, 142, 144, 146, 147, 162, 168, 196, 198, 217, 218, 219, 220, 222, 234, 235, 237, 239, 243, 244, 247, 249, 274, 305, 326], "The": 1, "packag": 1, "support": [1, 29], "cyclic": [2, 41, 42, 50, 51, 53, 66, 67, 109, 110], "redund": [2, 41, 42, 50, 51, 53, 66, 67, 109, 110], "check": [2, 6, 41, 42, 50, 51, 53, 66, 67, 96, 109, 110, 339], "2": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 140, 141, 144, 147, 171, 174, 223, 243, 245, 259, 273, 305], "uplink": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 190, 191, 234, 243, 259, 276, 320, 332, 333, 335], "refer": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 228, 231, 243, 248, 249, 251, 254, 259, 261, 265, 301, 304, 305, 306, 307, 308, 309, 311, 318, 330, 331, 334, 336, 351], "signal": [2, 22, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 228, 231, 235, 237, 238, 243, 252, 253, 255, 256, 259, 261, 265, 330, 331, 334, 351, 352], "its": [2, 10, 42, 49, 51, 53, 55, 67, 72, 74, 99, 110, 115, 117, 142, 146, 171, 174, 243, 259, 335], "util": [2, 42, 49, 51, 53, 67, 72, 99, 110, 115, 171, 174, 243, 259], "crc": [3, 4, 365], "decod": [3, 5, 6, 10, 12, 34, 35, 55, 74, 86, 88, 96, 117, 142, 146, 291, 294, 308, 328, 351, 353, 365], "ham": [5, 318, 322], "coder": [5, 54, 57, 58, 59, 73, 76, 77, 78, 116, 119, 120, 121, 144, 145, 147, 152, 153, 154, 155, 158, 159, 160, 210, 211, 212, 213, 338, 339], "sphere": 5, "syndrom": 5, "base": [5, 192, 193, 194, 196, 197, 198, 199, 202, 203, 204, 285, 288, 289, 291, 294, 302, 311, 312, 318, 324, 325, 326, 327, 330, 331, 332, 333, 334, 335, 353, 354], "low": [6, 96, 244, 245, 339], "densiti": [6, 96, 339], "pariti": [6, 96, 339], "code": [6, 7, 10, 11, 12, 29, 44, 55, 69, 74, 92, 93, 96, 112, 117, 142, 143, 144, 146, 147, 148, 149, 298, 315, 318, 322, 329, 338, 339], "ldpc": [6, 9, 96, 101, 102, 207, 208, 209, 315, 339], "codec": [6, 10, 55, 74, 96, 117, 142, 146], "subcompon": [6, 96], "codeblock": [7, 8, 92, 93], "process": [7, 8, 11, 20, 30, 44, 69, 90, 91, 108, 112, 143, 328, 351, 354], "receiv": [7, 11, 21, 44, 69, 90, 92, 93, 95, 108, 112, 143, 148, 149, 175, 181, 184, 185, 186, 188, 189, 277, 285, 288, 289, 291, 294, 327, 328, 337, 345, 346, 351, 352], "segreg": [7, 11, 44, 69, 92, 112, 143, 148], "aggreg": [7, 11, 44, 69, 93, 112, 143, 149, 305, 312, 323, 351], "transmitt": [8, 11, 44, 69, 91, 92, 93, 95, 108, 112, 143, 148, 149, 176, 182, 184, 185, 186, 188, 189, 285, 287, 289, 291, 294, 311, 318, 328, 330, 331, 334], "segment": [8, 11, 44, 69, 93, 112, 143, 149], "concaten": [8, 11, 44, 69, 92, 112, 143, 148], "paramet": [9, 18, 65, 84, 107, 127, 162, 168, 239, 249, 272, 285, 287, 288, 291, 294, 301, 302, 304, 305, 306, 307, 308, 309, 311, 312, 314, 318, 322, 323, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 339, 341, 342, 343, 344, 345, 346, 347, 348, 349, 351, 352, 353, 354], "polar": [10, 54, 55, 57, 58, 59, 73, 74, 76, 77, 78, 116, 117, 119, 120, 121, 142, 146, 152, 153, 154, 155, 158, 159, 160, 210, 211, 212, 213, 315, 338], "configur": [10, 55, 74, 117, 142, 146, 260, 261, 262, 263, 264, 265, 266, 267, 285, 287, 288, 289, 291, 294, 302, 332, 333, 335, 337, 338, 339, 352, 354], "differ": [10, 55, 74, 117, 142, 146, 302, 304, 305, 308, 309, 325, 326, 332, 339], "bioglio": [10, 55, 74, 117, 142, 146], "comparison": [10, 55, 74, 117, 142, 146, 302, 318, 336], "method": [10, 55, 74, 117, 142, 146, 192, 195, 202, 302, 330, 331, 332, 333, 334, 335], "compon": [10, 55, 74, 117, 142, 146, 150, 184, 185, 186, 188, 189, 235, 237], "input": [11, 27, 43, 44, 68, 69, 111, 112, 143, 301], "interleav": [11, 23, 24, 25, 26, 27, 28, 43, 44, 56, 58, 59, 68, 69, 75, 77, 78, 101, 111, 112, 118, 120, 121, 143, 153, 154, 158, 208, 211, 212], "deinterleav": [11, 24, 25, 27, 44, 69, 112, 143], "reed": [12, 144, 147, 315, 329], "muller": [12, 144, 147, 315, 329], "forward": 13, "correct": [13, 290], "antenna": [14, 341, 342, 343, 344, 345, 346, 347, 348, 349], "arrai": [14, 341, 342, 343, 344, 345, 346, 347, 348, 349], "element": 14, "3gpp_38_901": 14, "hertzian": 14, "dipol": 14, "linear": 14, "model": [16, 17, 312, 318, 349, 350], "node": [17, 342, 345, 347], "mobil": [17, 342, 345, 346, 347], "random": [17, 187, 250], "walk": 17, "circular": [17, 19], "rout": [17, 346], "vehicl": 17, "drop": [17, 19], "highwai": 17, "layout": [19, 341, 342, 343, 344, 345, 346, 347, 348, 349], "b": [19, 287, 308, 346], "hexagon": [19, 341], "rectangular": 19, "ue": [19, 288, 302, 305, 307, 308, 309, 328, 330, 331, 332, 333, 334, 335, 345, 346], "hardwar": 20, "impair": 20, "add": [21, 327, 330, 331, 334, 337], "nois": [21, 327, 330, 331, 334, 337, 351], "cfo": [21, 268, 290], "appli": 22, "transmit": [22, 291, 294, 330, 331, 334, 337, 346, 351], "pbch": [25, 39, 45, 46, 52, 184, 262, 266, 269, 291, 294, 351, 352], "de": [26, 57, 58, 59, 76, 77, 78, 101, 102, 119, 120, 121, 130, 134, 136, 144, 147, 151, 152, 159, 161, 207, 208, 210, 211, 212, 215, 217, 218], "sub": [28, 56, 59, 75, 78, 118, 121, 154, 158, 212], "book": 29, "type": [29, 244, 245, 326, 337], "arrang": 29, "i": [29, 307, 337, 361], "singl": [29, 312], "panel": 29, "assum": 29, "atleast": 29, "4": [29, 141, 178, 225, 243, 301, 305], "csi": [29, 228, 248, 261, 275, 311, 313, 337], "r": [29, 228, 248, 261, 275, 337], "port": 29, "multi": 29, "8": [29, 301, 305], "mimo": [30, 311, 324, 325, 326], "orthogon": 31, "frequenc": [31, 267, 268, 288, 290, 327, 341, 342, 343, 344, 347, 352], "divis": 31, "multiplex": 31, "content": [31, 39, 46, 298, 301, 329, 331, 334, 338, 353, 361], "ofdm": [32, 33, 286, 289, 291, 327, 330, 331, 334, 336, 341, 342, 343, 344, 345, 346, 347, 349, 351, 352], "demodul": [32, 249, 291, 351], "posit": [33, 196, 197, 198, 199, 206, 231, 251, 276, 301, 302, 330, 331, 332, 333, 334, 335], "network": [33, 196, 198, 206, 285, 287, 288, 289, 290, 291, 292, 293, 294, 302, 310, 311, 313, 316, 324, 325, 326, 327, 328, 330, 331, 334, 335, 336, 352], "transform": [34, 35, 36, 37], "precod": [36, 37, 324, 325, 326, 337, 354], "downlink": [38, 103, 104, 185, 186, 229, 230, 233, 243, 275, 285, 287, 288, 289, 291, 292, 293, 294, 303, 319, 323, 324, 325, 326, 330, 331, 334, 337, 354], "control": [38, 185, 189, 190, 227, 230, 232, 234, 303, 323], "inform": [38, 39, 46, 144, 147, 228, 248, 261, 351, 353, 361], "dci": 38, "master": [39, 46], "mib": [39, 46, 327], "extract": [39, 46, 291, 294, 330, 331, 337], "demapp": [48, 60, 71, 79, 95, 98, 114, 122, 170, 173, 258, 329], "mapper": [49, 72, 95, 99, 115, 171, 174, 259, 329, 365], "scrambler": [52, 65, 84, 107, 127, 165, 168, 242], "match": [56, 75, 100, 102, 118, 151, 155, 156, 157, 159, 160, 161, 209, 213, 214], "select": [56, 57, 75, 76, 102, 118, 119, 152, 159, 207, 210, 309, 327, 330, 331, 334], "rnti": [61, 62, 80, 81, 123, 124, 164, 241], "mask": [61, 62, 80, 81, 123, 124, 164, 241], "scrambl": [63, 65, 82, 84, 105, 107, 125, 127, 162, 166, 168, 239], "pdcch": [63, 82, 125, 185, 230, 270, 278, 304, 305, 306, 307, 308, 309, 328], "descrambl": [64, 83, 106, 126, 163, 167, 240], "pdsch": [85, 86, 87, 88, 89, 105, 186, 263, 264, 271, 293, 294, 301, 311, 354], "lower": [85, 86, 263], "physic": [85, 86, 87, 88, 103, 104, 175, 176, 183, 184, 185, 186, 187, 188, 189, 190, 191, 229, 230, 232, 233, 234, 263, 264, 303, 323, 352, 354], "layer": [85, 86, 87, 88, 95, 175, 176, 263, 264, 318], "chain": [85, 86, 87, 88, 89, 90, 91, 175, 176, 180, 181, 182], "upper": [87, 88, 175, 176, 264], "transport": [94, 108], "size": [94, 235, 237, 308, 309, 339], "share": [103, 104, 186, 191, 229, 233, 354], "dmr": [103, 104, 229, 249, 351], "pucch": [128, 133, 140, 150, 166, 175, 176, 177, 178, 179, 190, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 234, 246, 247, 353], "format": [128, 133, 140, 141, 177, 178, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 234, 246, 247, 353], "0": [128, 215, 216, 221, 246, 353, 361], "format0": 129, "sequenc": [132, 138, 243, 244, 245, 246, 247, 248, 249, 250, 251, 254, 351], "spread": [134, 139, 217, 220, 348], "format1": 135, "3": [141, 177, 224, 361], "small": [144, 147, 151, 161], "length": [144, 147, 151, 161, 339], "other": [144, 147], "pusch": [180, 191], "broadcast": [184, 188, 352], "access": [187, 351], "prach": [187, 320], "sidelink": [188, 189, 232, 235, 243, 253, 256], "psbch": 188, "pscch": [189, 232], "dft": [192, 202, 336], "aoa": [192, 335, 348], "esprit": [193, 203], "doa": [193, 194, 196, 197], "estim": [193, 194, 195, 196, 197, 198, 199, 203, 204, 205, 206, 268, 269, 270, 271, 272, 275, 276, 290, 291, 302, 316, 330, 331, 332, 333, 334, 335, 337, 348, 351, 353], "music": [194, 204], "direct": [195, 335], "arriv": [195, 196, 205, 330, 331, 332, 335], "least": [196, 197, 198, 199], "squar": [196, 197, 198, 199], "angl": [196, 334], "od": 196, "departur": [196, 334], "gradient": [196, 198], "descent": [196, 198], "hybrid": [197, 317], "toa": [197, 199, 203, 204, 205, 302, 330, 331, 332, 333, 334, 335], "mrtt": [197, 199], "tdoa": [197, 198, 330, 332], "4g": 198, "newton": 198, "raphson": 198, "optim": 200, "algorithm": [200, 277], "time": [205, 267, 273, 285, 286, 287, 288, 289, 291, 294, 327, 330, 331, 332, 341, 342, 343, 344, 345, 346, 347, 352], "delai": [205, 342, 348, 349], "submodul": 206, "set": [227, 236, 312, 314, 328, 352], "state": [228, 248, 261], "pr": [231, 251], "ptr": 233, "nr": 234, "synchron": [235, 237, 238, 252, 253, 255, 256, 273, 285, 286, 287, 288, 289, 291, 292, 294, 319, 320, 351, 352], "ssb": [235, 237, 238, 262, 266, 272, 285, 287, 289, 291, 292, 294, 319, 327, 351, 352], "grid": [235, 237, 285, 287, 289, 291, 294, 327, 328, 330, 331, 334, 337, 351, 352], "search": [236, 328], "space": [236, 328], "papr": [244, 245, 336], "each": [249, 323, 329, 338, 342, 352], "pseudo": 250, "pn": 250, "primari": [252, 253, 351], "": [253, 256, 336], "pss": [253, 273, 285, 286, 287, 288, 289, 291, 294, 351], "sound": [254, 265], "sr": [254, 265, 276, 302, 332, 333, 335], "secondari": [255, 256, 351], "sss": [256, 274, 351], "carrier": [268, 290, 347], "offset": [268, 290], "equal": [269, 270, 271, 291, 351], "cell": [273, 274, 332, 351], "id": [273, 274, 351], "us": [275, 276, 284, 285, 286, 287, 288, 292, 293, 294, 311, 319, 320, 327, 332, 333, 335, 337, 360], "schedul": [278, 279, 283, 304, 305, 306, 307, 308, 309], "round": 279, "robin": 279, "adapt": [280, 281], "rank": [281, 325, 326, 337], "alloc": 282, "research": 284, "work": 284, "carri": 284, "out": 284, "frame": [285, 287, 288], "some": [285, 287, 288], "basic": [285, 287, 288, 312, 323, 332], "emul": [285, 287, 288, 289, 291], "construct": [285, 287, 351], "transmiss": [285, 287, 289, 291, 294, 327, 330, 331, 334, 351, 352], "domain": [285, 287, 341, 342, 343, 344, 347, 349], "sampl": [285, 287, 301], "sdr": [285, 287, 288, 289, 291, 294, 295], "setup": [285, 287, 288, 289, 291, 294, 322, 365], "rf": [285, 287, 288, 289, 291, 294], "recept": [285, 288, 289, 291, 294], "correl": [285, 288, 289, 291, 294], "visual": [285, 302, 327, 330, 331, 332, 333, 334, 335], "save": [285, 354], "run": 285, "side": [287, 288, 328, 351, 354], "implement": [287, 288, 289, 291, 294, 354], "spectrum": [291, 294, 342, 351], "verif": [291, 294], "data": [293, 294, 318], "commun": [293, 294], "relat": 294, "recours": 294, "kei": 294, "indic": 294, "integr": 295, "introductori": 296, "cours": 296, "standard": 296, "learn": [297, 301, 313, 318], "licens": [298, 359, 362, 363], "trademark": 298, "sourc": 298, "tentet": 299, "list": 299, "featur": [299, 361], "In": 299, "progress": 299, "To": 299, "releas": [299, 364], "soon": 299, "next": 299, "quarter": 299, "befor": [299, 312], "septemb": 299, "2023": 299, "march": 299, "2024": 299, "previou": 300, "version": 300, "databas": [301, 312], "preprocess": [301, 312], "postprocess": 301, "train": [301, 312, 314, 318], "valid": 301, "infer": 301, "from": [301, 318, 351], "llrnet": 301, "output": 301, "m": 301, "6": 301, "throughput": [301, 311, 325, 326], "ber": [301, 322, 323, 325, 326, 339, 351, 353, 365], "framework": 301, "deploy": 301, "section": 301, "evalu": [301, 311, 322, 329, 338, 339, 351, 352, 353, 365], "v": [301, 307, 322, 323, 325, 326, 334, 336, 339, 365], "snr": [301, 322, 323, 325, 326, 339, 352, 365], "db": 301, "16": [301, 305], "qam": 301, "64": 301, "256": 301, "bler": [301, 311, 318, 322, 323, 325, 326, 352, 365], "10000": [301, 325, 326, 352, 354], "batch": [301, 323, 325, 326, 352, 354], "64000": 301, "complex": 301, "analysi": [301, 302, 304, 310, 330, 331, 332, 333, 334, 335, 336, 351], "conclus": [301, 322], "limit": 301, "between": 302, "millimet": [302, 330, 335, 343], "wave": [302, 330], "wireless": [302, 311, 312, 323, 325, 326, 327, 328, 330, 331, 332, 333, 334, 335, 341, 343, 344, 345, 347, 349, 351, 352, 354], "slot": [302, 332, 333, 335], "ul": [302, 332, 333, 335], "result": [302, 304, 325, 326, 339, 354], "averag": [302, 325, 326, 329, 336, 338, 339, 352, 354], "over": [302, 325, 326, 329, 338, 339, 352, 354], "2000": [302, 330, 331, 332, 333, 334], "probabl": [304, 305, 306, 307, 308, 309, 310, 348], "coverag": [304, 352], "condit": [304, 337], "good": 304, "scenario": [304, 346], "medium": 304, "extrem": 304, "plot": [304, 305, 306, 307, 308, 318, 329, 341, 343, 344, 345, 347, 353], "variat": [305, 306, 339, 345, 346], "al": 305, "impact": [305, 307, 308], "number": [305, 306, 307, 309, 337], "analyz": [306, 307, 308], "effect": 306, "candid": 306, "strategi": 307, "ii": 307, "capabl": 308, "case": 308, "coreset": [308, 309, 323, 328], "reduc": 308, "blind": [308, 328], "A": [308, 311, 323, 325, 326, 328, 352], "minimum": 309, "given": 309, "target": 309, "numu": 309, "5": 309, "10": [309, 360, 363], "15": 309, "displai": [309, 312, 328, 330, 331, 337, 345, 352, 365], "requir": [309, 359, 362, 363], "meet": 309, "blockag": 310, "redcap": 310, "devic": [310, 330], "compress": [311, 313], "reconstruct": [311, 313, 351], "csinet": [311, 314], "tdd": 311, "massiv": [311, 324, 325, 326], "cdl": [311, 323, 325, 326, 328, 352], "reconstrunct": 311, "net": 311, "svd": [311, 324, 325, 337, 354], "beamform": [311, 330, 331, 334, 337, 351, 354], "perfect": 311, "imperfect": 311, "dataset": [312, 314, 329, 338], "ai": [312, 313, 314], "common": 312, "storag": 312, "sparsiti": [312, 342, 349], "artifici": 313, "intellig": 313, "machin": 313, "ml": [313, 314], "load": 314, "compar": [315, 351], "studi": [315, 330, 331, 334, 345], "qualiti": [316, 330, 331], "beyond": [316, 317, 331, 334, 346], "automat": 317, "repeat": 317, "request": 317, "an": [318, 360], "phy": 318, "autoencod": 318, "step": 318, "test": 318, "normal": 318, "function": [318, 345], "defin": 318, "line": [318, 335, 348], "n": 318, "k": [318, 330, 331, 334, 348], "system": [319, 320, 351, 359, 360, 362, 363], "project": 321, "For": [323, 330, 331, 332, 333], "valu": [323, 352, 353], "reliabl": [323, 339], "20000": 323, "combin": [324, 325, 326, 351], "se": [325, 326], "codebook": 326, "p1": 327, "procedur": [327, 331, 334, 339, 363], "beam": [327, 334, 349], "manag": 327, "ati": 327, "power": [327, 336, 345, 346], "heatmap": [327, 342, 352], "rsrp": [327, 334], "station": 327, "topologi": 327, "65": 329, "5000": 329, "point": [329, 338], "industri": 330, "iot": 330, "interpol": [330, 331], "locu": [330, 331, 335], "circl": [330, 331], "best": [330, 331, 334], "measur": [330, 331, 334], "geni": [330, 331, 334], "aid": [330, 331, 334], "further": [330, 331, 334, 345], "outdoor": [332, 341, 345, 348], "urban": 332, "micro": 332, "site": [332, 345], "indoor": [333, 335, 343, 344], "open": [333, 344], "offic": [333, 344], "rural": [334, 345], "macro": [334, 345], "terrain": [334, 341, 343, 344, 348], "window": [334, 360, 363], "index": 334, "aod": [334, 348], "dl": 334, "local": 335, "factori": [335, 343], "accuraci": 335, "1300": 335, "peak": [336, 351], "ratio": 336, "cp": 336, "aclr": 336, "100": [338, 339], "fix": 339, "follow": 339, "ar": 339, "tb": 339, "deploi": [341, 343], "geometri": 341, "coeffici": [341, 342, 343, 344, 345, 346, 347, 349], "magnitud": [341, 343, 344, 347], "respons": [341, 343, 344, 347], "spatial": 342, "consist": 342, "statist": 342, "realist": 342, "amplitud": 342, "subcarri": 342, "accross": 342, "One": 342, "phase": 342, "doppler": 342, "dens": 343, "high": 343, "band": 343, "genar": 344, "user": 345, "connect": 345, "across": [345, 346], "anim": 345, "snapshot": 345, "dual": 346, "multipl": 347, "propag": 348, "characterist": 348, "rough": 348, "sight": 348, "path": 348, "loss": 348, "distribut": 348, "shadow": 348, "fade": 348, "rician": 348, "factor": 348, "charaterist": 348, "angular": 348, "azimuth": 348, "elev": 348, "demonstr": 349, "detail": [350, 360, 363], "tutori": [350, 355, 359, 362], "3gpp": 350, "initi": 351, "extern": 351, "libari": 351, "odfm": 351, "analog": 351, "addit": 351, "largest": 351, "extact": 351, "assist": 351, "libraier": 352, "m_c": 353, "mc": 353, "recevi": 354, "challeng": [356, 357], "Of": 356, "thi": [356, 358], "week": 356, "arxiv": 357, "ed": 357, "solut": 358, "month": 358, "problem": 358, "instal": [359, 360, 362, 363], "depend": [359, 362, 363], "miniconda": [359, 360, 362], "jupyt": [359, 360, 362], "notebook": [359, 360, 362], "final": [359, 360, 362], "confirm": [359, 360, 362], "activ": [359, 362, 363], "video": [359, 362], "ubuntu": [360, 363], "updat": 360, "11": [360, 363], "environ": 360, "conda": 360, "salient": 361, "technic": 361, "r24a": 361, "organ": 361, "look": 361, "help": 361, "more": 361, "20": 363, "04": 363, "22": 363, "note": 364}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"Getting Started": [[0, "getting-started"]], "Understanding API Documentation": [[0, "understanding-api-documentation"]], "Hello World!": [[0, "hello-world"]], "Import Python Libraries": [[0, "import-python-libraries"], [294, "Import-Python-Libraries"], [301, "Import-Python-Libraries"], [302, "Import-Python-Libraries"], [304, "Import-Python-Libraries"], [311, "Import-Python-Libraries"], [312, "Import-Python-Libraries"], [314, "Import-Python-Libraries"], [325, "Import-Python-Libraries"], [325, "import-python-libraries-1"], [326, "Import-Python-Libraries"], [326, "import-python-libraries-1"], [336, "Import-Python-Libraries"], [337, "Import-Python-Libraries"], [337, "import-python-libraries-1"], [341, "Import-Python-Libraries"], [342, "Import-Python-Libraries"], [343, "Import-Python-Libraries"], [344, "Import-Python-Libraries"], [346, "Import-Python-Libraries"], [349, "Import-Python-Libraries"], [352, "Import-Python-Libraries"], [354, "Import-Python-Libraries"], [365, "Import-Python-Libraries"]], "How to import 5G Toolkit Libraries": [[0, "how-to-import-5g-toolkit-libraries"]], "Create Objects for all the Modules": [[0, "create-objects-for-all-the-modules"]], "Generate Payload bits and Encode them": [[0, "generate-payload-bits-and-encode-them"]], "Symbol Mapping the Encoded Bits": [[0, "symbol-mapping-the-encoded-bits"]], "Pass through AWGN Channel": [[0, "pass-through-awgn-channel"]], "Demapping the Symbols": [[0, "demapping-the-symbols"], [365, "Demapping-the-Symbols"]], "Detect Error in the Blocks": [[0, "detect-error-in-the-blocks"]], "Compute Bit and Block Error Rate": [[0, "compute-bit-and-block-error-rate"]], "Constellation Diagrams at the Tx and Rx": [[0, "constellation-diagrams-at-the-tx-and-rx"]], "Link Level Simulation": [[0, "link-level-simulation"], [365, "Link-Level-Simulation"]], "Bit/Block Error Rate Performance": [[0, "bit-block-error-rate-performance"]], "Resources and Scripts": [[0, "resources-and-scripts"]], "API Documentation": [[1, "api-documentation"]], "Table-1: The modules and packages supported by 5G Toolkit": [[1, "id1"]], "Cyclic Redundancy Check": [[2, "cyclic-redundancy-check"], [42, "cyclic-redundancy-check"], [51, "cyclic-redundancy-check"], [53, "cyclic-redundancy-check"], [67, "cyclic-redundancy-check"], [110, "cyclic-redundancy-check"]], "Table-2: Uplink Reference Signal and its utility": [[2, "id1"], [42, "id1"], [49, "id3"], [51, "id1"], [53, "id1"], [67, "id1"], [72, "id3"], [99, "id3"], [110, "id1"], [115, "id3"], [171, "id3"], [174, "id3"], [243, "id4"], [259, "id3"]], "CRC Decoder": [[3, "crc-decoder"]], "CRC Encoder": [[4, "crc-encoder"]], "Hamming Coder": [[5, "hamming-coder"]], "Hamming coder": [[5, "id1"]], "Hamming Decoder": [[5, "hamming-decoder"]], "Hamming Decoder - Sphere Decoding": [[5, "hamming-decoder-sphere-decoding"]], "Hamming Decoder - Syndrome Based Decoding": [[5, "hamming-decoder-syndrome-based-decoding"]], "Low Density Parity Check Codes": [[6, "low-density-parity-check-codes"], [96, "low-density-parity-check-codes"]], "LDPC Encoder": [[6, "ldpc-encoder"], [96, "ldpc-encoder"]], "LDPC Decoder": [[6, "ldpc-decoder"], [96, "ldpc-decoder"]], "LDPC Codec Subcomponents": [[6, "ldpc-codec-subcomponents"], [96, "ldpc-codec-subcomponents"]], "Codeblock Processing: Receiver": [[7, "codeblock-processing-receiver"]], "Code-block Segregation": [[7, "code-block-segregation"], [11, "code-block-segregation"], [44, "code-block-segregation"], [69, "code-block-segregation"], [112, "code-block-segregation"], [143, "code-block-segregation"]], "Codeblock Aggregation": [[7, "codeblock-aggregation"]], "Codeblock Processing: Transmitter": [[8, "codeblock-processing-transmitter"]], "Codeblock Segmentation": [[8, "codeblock-segmentation"]], "Codeblock Concatenation": [[8, "codeblock-concatenation"]], "LDPC Parameters Computation": [[9, "ldpc-parameters-computation"]], "Polar Codes": [[10, "polar-codes"], [55, "polar-codes"], [74, "polar-codes"], [117, "polar-codes"], [142, "polar-codes"], [146, "polar-codes"]], "Table-1: Polar codes and its configurations for different channels [Bioglio]": [[10, "id9"], [55, "id9"], [74, "id9"], [117, "id9"], [142, "id9"], [146, "id9"]], "Polar Encoder": [[10, "polar-encoder"], [55, "polar-encoder"], [74, "polar-encoder"], [117, "polar-encoder"], [142, "polar-encoder"], [146, "polar-encoder"]], "Polar Decoder": [[10, "polar-decoder"], [55, "polar-decoder"], [74, "polar-decoder"], [117, "polar-decoder"], [142, "polar-decoder"], [146, "polar-decoder"]], "Performance Comparison of Different Polar Decoding Methods.": [[10, "id10"], [55, "id10"], [74, "id10"], [117, "id10"], [142, "id10"], [146, "id10"]], "Polar Codec Components": [[10, "polar-codec-components"], [55, "polar-codec-components"], [74, "polar-codec-components"], [117, "polar-codec-components"], [142, "polar-codec-components"], [146, "polar-codec-components"]], "Code-block Processing: Transmitter": [[11, "code-block-processing-transmitter"], [44, "code-block-processing-transmitter"], [69, "code-block-processing-transmitter"], [112, "code-block-processing-transmitter"], [143, "code-block-processing-transmitter"]], "Code-block Segmentation": [[11, "code-block-segmentation"], [44, "code-block-segmentation"], [69, "code-block-segmentation"], [112, "code-block-segmentation"], [143, "code-block-segmentation"]], "Code-block Concatenation": [[11, "code-block-concatenation"], [44, "code-block-concatenation"], [69, "code-block-concatenation"], [112, "code-block-concatenation"], [143, "code-block-concatenation"]], "Code-block Processing: Receiver": [[11, "code-block-processing-receiver"], [44, "code-block-processing-receiver"], [69, "code-block-processing-receiver"], [112, "code-block-processing-receiver"], [143, "code-block-processing-receiver"]], "Code-block Aggregation": [[11, "code-block-aggregation"], [44, "code-block-aggregation"], [69, "code-block-aggregation"], [112, "code-block-aggregation"], [143, "code-block-aggregation"]], "Input Bit Interleavers": [[11, "input-bit-interleavers"], [44, "input-bit-interleavers"], [69, "input-bit-interleavers"], [112, "input-bit-interleavers"], [143, "input-bit-interleavers"]], "Input Bit Interleaver": [[11, "input-bit-interleaver"], [27, "input-bit-interleaver"], [27, "id1"], [43, "input-bit-interleaver"], [44, "input-bit-interleaver"], [68, "input-bit-interleaver"], [69, "input-bit-interleaver"], [111, "input-bit-interleaver"], [112, "input-bit-interleaver"], [143, "input-bit-interleaver"]], "Input Bit Deinterleaver": [[11, "input-bit-deinterleaver"], [44, "input-bit-deinterleaver"], [69, "input-bit-deinterleaver"], [112, "input-bit-deinterleaver"], [143, "input-bit-deinterleaver"]], "Reed Muller Codes": [[12, "reed-muller-codes"]], "Reed Muller Encoder 5G": [[12, "reed-muller-encoder-5g"]], "Reed Muller Decoder 5G": [[12, "reed-muller-decoder-5g"]], "Forward Error Correction": [[13, "forward-error-correction"]], "Antenna Array": [[14, "antenna-array"]], "Antenna Elements": [[14, "antenna-elements"]], "3GPP_38_901 Antenna Element": [[14, "gpp-38-901-antenna-element"]], "Hertzian Dipole Antenna Element": [[14, "hertzian-dipole-antenna-element"]], "Linear Dipole Antenna Element": [[14, "linear-dipole-antenna-element"]], "Channel Generator": [[15, "channel-generator"]], "Channel Models": [[16, "channel-models"]], "Node Mobility": [[17, "node-mobility"], [342, "Node-Mobility"], [345, "Node-Mobility"], [347, "Node-Mobility"]], "Mobility Models": [[17, "mobility-models"]], "Random-Walk": [[17, "random-walk"]], "Circular Route": [[17, "circular-route"]], "Vehicle Drops on HighWays": [[17, "vehicle-drops-on-highways"]], "Channel Parameter Generator": [[18, "channel-parameter-generator"]], "Simulation Layout": [[19, "simulation-layout"], [342, "Simulation-Layout"], [345, "Simulation-Layout"], [346, "Simulation-Layout"], [348, "Simulation-Layout"], [349, "Simulation-Layout"]], "BS Layouts": [[19, "bs-layouts"]], "Hexagonal Layout": [[19, "hexagonal-layout"]], "Rectangular Layout": [[19, "rectangular-layout"]], "UE Drops": [[19, "ue-drops"]], "Rectangular Drop": [[19, "rectangular-drop"]], "Circular Drop": [[19, "circular-drop"]], "Hexagonal Drop": [[19, "hexagonal-drop"]], "Channel Processing and Hardware Impairment": [[20, "channel-processing-and-hardware-impairment"]], "Add Noise and CFO at Receiver": [[21, "add-noise-and-cfo-at-receiver"]], "Apply Channel to Transmitted Signal": [[22, "apply-channel-to-transmitted-signal"]], "Interleavers": [[23, "interleavers"]], "Table-1: Interleavers in 5G": [[23, "id1"]], "Bit Interleavers": [[24, "bit-interleavers"]], "Bit Interleaver": [[24, "bit-interleaver"], [101, "bit-interleaver"], [208, "bit-interleaver"]], "Bit Deinterleaver": [[24, "bit-deinterleaver"]], "PBCH Interleaver": [[25, "pbch-interleaver"], [25, "id1"]], "PBCH DeInterleaver": [[25, "pbch-deinterleaver"]], "Channel Interleaver": [[26, "channel-interleaver"], [26, "id1"], [56, "channel-interleaver"], [58, "channel-interleaver"], [75, "channel-interleaver"], [77, "channel-interleaver"], [118, "channel-interleaver"], [120, "channel-interleaver"], [211, "channel-interleaver"]], "Channel De-interleaver": [[26, "channel-de-interleaver"], [58, "channel-de-interleaver"], [77, "channel-de-interleaver"], [120, "channel-de-interleaver"], [211, "channel-de-interleaver"]], "Input Bit DeInterleaver": [[27, "input-bit-deinterleaver"]], "Sub Block Interleaver": [[28, "sub-block-interleaver"], [28, "id1"], [28, "id4"], [56, "sub-block-interleaver"], [75, "sub-block-interleaver"], [118, "sub-block-interleaver"]], "Code-Books": [[29, "code-books"]], "Type-1 Code-Book": [[29, "type-1-code-book"]], "Arrangement of Type-I Single Panel assuming that Tx support atleast 4 CSI-RS ports.": [[29, "id3"]], "Arrangement of Type-I Multi Panel assuming that the Tx support atleast 8 CSI-RS ports": [[29, "id4"]], "MIMO Processing": [[30, "mimo-processing"]], "Orthogonal Frequency Division Multiplexing": [[31, "orthogonal-frequency-division-multiplexing"]], "Contents:": [[31, null], [361, null]], "OFDM: Demodulator": [[32, "ofdm-demodulator"]], "OFDM: Modulator": [[33, "ofdm-modulator"]], "Table-1: Positioning in 5G Networks": [[33, "id1"]], "Transform Decoding": [[34, "transform-decoding"]], "Transform Decoding for 5G": [[35, "transform-decoding-for-5g"]], "Transform Precoding": [[36, "transform-precoding"]], "Transform Precoding for 5G": [[37, "transform-precoding-for-5g"]], "Downlink Control Information (DCI)": [[38, "downlink-control-information-dci"]], "Master Information Block (MIB)": [[39, "master-information-block-mib"], [46, "master-information-block-mib"]], "Table-1: Content of PBCH Payload/MIB": [[39, "id1"], [46, "id1"]], "MIB Generation": [[39, "mib-generation"], [46, "mib-generation"]], "MIB Extraction": [[39, "mib-extraction"], [46, "mib-extraction"]], "Payload Generation": [[40, "payload-generation"]], "Cyclic Redundency Check": [[41, "cyclic-redundency-check"], [50, "cyclic-redundency-check"], [66, "cyclic-redundency-check"], [109, "cyclic-redundency-check"]], "PBCH Payload": [[45, "pbch-payload"]], "Modulation": [[47, "modulation"], [70, "modulation"], [97, "modulation"], [113, "modulation"], [172, "modulation"]], "Demapper": [[48, "demapper"], [60, "demapper"], [71, "demapper"], [79, "demapper"], [98, "demapper"], [114, "demapper"], [122, "demapper"], [170, "demapper"], [173, "demapper"], [258, "demapper"]], "Symbol Mapping": [[49, "symbol-mapping"], [72, "symbol-mapping"], [99, "symbol-mapping"], [115, "symbol-mapping"], [169, "symbol-mapping"], [174, "symbol-mapping"], [257, "symbol-mapping"]], "Mapper": [[49, "mapper"], [72, "mapper"], [99, "mapper"], [115, "mapper"], [171, "mapper"], [174, "mapper"], [259, "mapper"]], "PBCH Scrambler": [[52, "pbch-scrambler"]], "Polar Coder": [[54, "polar-coder"], [73, "polar-coder"], [116, "polar-coder"]], "Rate Matching": [[56, "rate-matching"], [75, "rate-matching"], [100, "rate-matching"], [118, "rate-matching"], [151, "rate-matching"], [157, "rate-matching"], [161, "rate-matching"]], "Bit Selection": [[56, "bit-selection"], [57, "bit-selection"], [75, "bit-selection"], [76, "bit-selection"], [102, "bit-selection"], [118, "bit-selection"], [119, "bit-selection"], [152, "bit-selection"], [159, "bit-selection"], [207, "bit-selection"], [210, "bit-selection"]], "Bit Selection for Polar Coder": [[57, "bit-selection-for-polar-coder"], [76, "bit-selection-for-polar-coder"], [119, "bit-selection-for-polar-coder"], [152, "bit-selection-for-polar-coder"], [159, "bit-selection-for-polar-coder"], [210, "bit-selection-for-polar-coder"]], "Bit De-selection": [[57, "bit-de-selection"], [76, "bit-de-selection"], [102, "bit-de-selection"], [119, "bit-de-selection"], [152, "bit-de-selection"], [159, "bit-de-selection"], [207, "bit-de-selection"], [210, "bit-de-selection"]], "Channel Interleaver for Polar Coder": [[58, "channel-interleaver-for-polar-coder"], [77, "channel-interleaver-for-polar-coder"], [120, "channel-interleaver-for-polar-coder"], [153, "channel-interleaver-for-polar-coder"], [158, "channel-interleaver-for-polar-coder"], [211, "channel-interleaver-for-polar-coder"]], "Sub Block Interleaver for Polar Coder": [[59, "sub-block-interleaver-for-polar-coder"], [78, "sub-block-interleaver-for-polar-coder"], [121, "sub-block-interleaver-for-polar-coder"], [154, "sub-block-interleaver-for-polar-coder"], [158, "sub-block-interleaver-for-polar-coder"], [212, "sub-block-interleaver-for-polar-coder"]], "Sub-block Interleaver": [[59, "sub-block-interleaver"], [78, "sub-block-interleaver"], [121, "sub-block-interleaver"], [212, "sub-block-interleaver"]], "Sub-block De-interleaver": [[59, "sub-block-de-interleaver"], [78, "sub-block-de-interleaver"], [121, "sub-block-de-interleaver"], [212, "sub-block-de-interleaver"]], "RNTI Masking": [[61, "rnti-masking"], [62, "rnti-masking"], [80, "rnti-masking"], [81, "rnti-masking"], [123, "rnti-masking"], [124, "rnti-masking"], [164, "rnti-masking"], [241, "rnti-masking"]], "Scrambling: PDCCH": [[63, "scrambling-pdcch"], [82, "scrambling-pdcch"], [125, "scrambling-pdcch"]], "Descrambler": [[64, "descrambler"], [83, "descrambler"], [106, "descrambler"], [126, "descrambler"], [163, "descrambler"], [167, "descrambler"], [240, "descrambler"]], "Scrambling": [[65, "scrambling"], [84, "scrambling"], [107, "scrambling"], [127, "scrambling"], [162, "scrambling"], [168, "scrambling"], [239, "scrambling"]], "Table-1: Scrambling and Scrambling parameters in 5G": [[65, "id4"], [84, "id4"], [107, "id4"], [127, "id4"], [162, "id1"], [168, "id4"], [239, "id1"]], "Scrambler": [[65, "scrambler"], [84, "scrambler"], [107, "scrambler"], [127, "scrambler"], [165, "scrambler"], [168, "scrambler"], [242, "scrambler"]], "PDSCH: Lower Physical layer Chain": [[85, "pdsch-lower-physical-layer-chain"]], "PDSCH: Lower Physical layer Chain Decoder": [[86, "pdsch-lower-physical-layer-chain-decoder"]], "PDSCH: Upper Physical layer Chain": [[87, "pdsch-upper-physical-layer-chain"]], "PDSCH: Upper Physical layer Chain Decoder": [[88, "pdsch-upper-physical-layer-chain-decoder"]], "PDSCH Chain": [[89, "pdsch-chain"]], "Receiver Processing": [[90, "receiver-processing"]], "Receiver": [[90, "receiver"]], "Receiver Chain": [[90, "receiver-chain"], [181, "receiver-chain"]], "Transmitter Processing": [[91, "transmitter-processing"]], "Transmitter": [[91, "transmitter"], [318, "Transmitter"]], "Transmitter Chain": [[91, "transmitter-chain"], [182, "transmitter-chain"]], "Code Block Concatenation": [[92, "code-block-concatenation"], [148, "code-block-concatenation"]], "Codeblock Concatenation: Transmitter": [[92, "codeblock-concatenation-transmitter"]], "Code-block Segregation: Receiver": [[92, "code-block-segregation-receiver"]], "Code Block Segmentation": [[93, "code-block-segmentation"], [149, "code-block-segmentation"]], "Codeblock Segmentation: Transmitter": [[93, "codeblock-segmentation-transmitter"]], "Code Block Aggregation: Receiver": [[93, "code-block-aggregation-receiver"], [149, "code-block-aggregation-receiver"]], "Transport Block Size Computation": [[94, "transport-block-size-computation"]], "Layer Mapper": [[95, "layer-mapper"]], "Layer Mapper: Transmitter": [[95, "layer-mapper-transmitter"]], "Layer Demapper: Receiver": [[95, "layer-demapper-receiver"]], "Bit Interleaver for LDPC": [[101, "bit-interleaver-for-ldpc"], [208, "bit-interleaver-for-ldpc"]], "Bit De-interleaver": [[101, "bit-de-interleaver"], [208, "bit-de-interleaver"]], "Rate matching for LDPC": [[102, "rate-matching-for-ldpc"], [209, "rate-matching-for-ldpc"]], "Bit Selection for LDPC": [[102, "bit-selection-for-ldpc"], [207, "bit-selection-for-ldpc"]], "Physical Downlink Shared Channel-DMRS": [[103, "physical-downlink-shared-channel-dmrs"], [104, "physical-downlink-shared-channel-dmrs"], [229, "physical-downlink-shared-channel-dmrs"]], "Scrambling: PDSCH": [[105, "scrambling-pdsch"]], "Transport Block Processing": [[108, "transport-block-processing"]], "Transport Block Processing: Transmitter": [[108, "transport-block-processing-transmitter"]], "Transport Block Processing: Receiver": [[108, "transport-block-processing-receiver"]], "PUCCH Format 0": [[128, "pucch-format-0"]], "Format0": [[129, "format0"]], "Resource De-Mapping": [[130, "resource-de-mapping"], [136, "resource-de-mapping"]], "Resource Mapping": [[131, "resource-mapping"], [137, "resource-mapping"], [226, "resource-mapping"]], "Sequence Generation": [[132, "sequence-generation"], [138, "sequence-generation"], [243, "sequence-generation"]], "PUCCH Format 1": [[133, "pucch-format-1"]], "De-Spreading": [[134, "de-spreading"]], "Format1": [[135, "format1"]], "Spreading": [[139, "spreading"]], "PUCCH Format 2": [[140, "pucch-format-2"]], "Format 2,3,4": [[141, "format-2-3-4"]], "Channel Coding of Small Block Length": [[144, "channel-coding-of-small-block-length"], [147, "channel-coding-of-small-block-length"]], "Encoding of 1-bit Information": [[144, "encoding-of-1-bit-information"], [147, "encoding-of-1-bit-information"]], "Encoding of 2-bit Information": [[144, "encoding-of-2-bit-information"], [147, "encoding-of-2-bit-information"]], "Encoding of other small block lengths (Reed Muller Coder)": [[144, "encoding-of-other-small-block-lengths-reed-muller-coder"], [147, "encoding-of-other-small-block-lengths-reed-muller-coder"]], "Channel De-Coding of Small Block Length": [[144, "channel-de-coding-of-small-block-length"], [147, "channel-de-coding-of-small-block-length"]], "Channel Coder": [[145, "channel-coder"]], "Code Block Concatenation: Transmitter": [[148, "code-block-concatenation-transmitter"]], "Code Block Segregation: Receiver": [[148, "code-block-segregation-receiver"]], "Code Block Segmentation: Transmitter": [[149, "code-block-segmentation-transmitter"]], "PUCCH Components": [[150, "pucch-components"]], "Rate matching for Small Block Length 5G": [[151, "rate-matching-for-small-block-length-5g"], [161, "rate-matching-for-small-block-length-5g"]], "De-Rate Matching": [[151, "de-rate-matching"], [161, "de-rate-matching"]], "Rate matching for Polar coder": [[155, "rate-matching-for-polar-coder"], [159, "rate-matching-for-polar-coder"], [213, "rate-matching-for-polar-coder"]], "Rate matching": [[156, "rate-matching"], [214, "rate-matching"]], "Rate Matching for Polar Coder": [[160, "rate-matching-for-polar-coder"]], "Scrambling: PUCCH": [[166, "scrambling-pucch"]], "PUCCH Receiver": [[175, "pucch-receiver"]], "PUCCH: Upper Physical Layer Chain": [[175, "pucch-upper-physical-layer-chain"], [176, "pucch-upper-physical-layer-chain"]], "PUCCH Transmitter": [[176, "pucch-transmitter"]], "PUCCH Format 3": [[177, "pucch-format-3"]], "PUCCH Format 4": [[178, "pucch-format-4"]], "PUCCH": [[179, "pucch"]], "PUSCH Chain": [[180, "pusch-chain"]], "Physical Channels": [[183, "physical-channels"]], "Physical Broadcast Channel (PBCH)": [[184, "physical-broadcast-channel-pbch"]], "PBCH Transmitter": [[184, "pbch-transmitter"]], "PBCH Receiver": [[184, "pbch-receiver"], [294, "PBCH-Receiver"]], "PBCH Components": [[184, "pbch-components"]], "Physical Downlink Control Channel (PDCCH)": [[185, "physical-downlink-control-channel-pdcch"], [230, "physical-downlink-control-channel-pdcch"]], "PDCCH Transmitter": [[185, "pdcch-transmitter"]], "PDCCH Receiver": [[185, "pdcch-receiver"]], "PDCCH Components": [[185, "pdcch-components"]], "Physical Downlink Shared Channel (PDSCH)": [[186, "physical-downlink-shared-channel-pdsch"]], "PDSCH Transmitter": [[186, "pdsch-transmitter"]], "PDSCH Receiver": [[186, "pdsch-receiver"], [294, "PDSCH-Receiver"]], "PDSCH Components": [[186, "pdsch-components"]], "Physical Random Access Channel (PRACH)": [[187, "physical-random-access-channel-prach"]], "Physical Sidelink Broadcast Channel (PSBCH)": [[188, "physical-sidelink-broadcast-channel-psbch"]], "PSBCH Transmitter": [[188, "psbch-transmitter"]], "PSBCH Receiver": [[188, "psbch-receiver"]], "PSBCH Components": [[188, "psbch-components"]], "Physical Sidelink Control Channel (PSCCH)": [[189, "physical-sidelink-control-channel-pscch"], [232, "physical-sidelink-control-channel-pscch"]], "PSCCH Transmitter": [[189, "pscch-transmitter"]], "PSCCH Receiver": [[189, "pscch-receiver"]], "PSCCH Components": [[189, "pscch-components"]], "Physical Uplink Control Channel (PUCCH)": [[190, "physical-uplink-control-channel-pucch"], [234, "physical-uplink-control-channel-pucch"]], "Physical Uplink Shared Channel (PUSCH)": [[191, "physical-uplink-shared-channel-pusch"]], "DFT based AoA Method": [[192, "dft-based-aoa-method"]], "ESPRIT based DoA Estimation": [[193, "esprit-based-doa-estimation"]], "MUSIC based DoA Estimation": [[194, "music-based-doa-estimation"]], "Direction of Arrival Estimation": [[195, "direction-of-arrival-estimation"]], "Direction of Arrival Estimation Methods": [[195, "id1"]], "Least Squares based Position Estimator for DoA": [[196, "least-squares-based-position-estimator-for-doa"]], "Table-1: Angle od Departure and Arrival based Positioning in 5G Networks": [[196, "id4"]], "Gradient Descent based Position Estimator for DoA": [[196, "gradient-descent-based-position-estimator-for-doa"]], "Least Square based Position Estimator for Hybrid ToA/mRTT and DoA": [[197, "least-square-based-position-estimator-for-hybrid-toa-mrtt-and-doa"]], "Least Square based Position Estimator for Hybrid TDoA and DoA": [[197, "least-square-based-position-estimator-for-hybrid-tdoa-and-doa"]], "Least Squares based Position Estimator for TDoA": [[198, "least-squares-based-position-estimator-for-tdoa"]], "Table-1: TDoA in 4G and 5G Networks": [[198, "id6"]], "Gradient Descent based Position Estimator for TDoA": [[198, "gradient-descent-based-position-estimator-for-tdoa"]], "Newton Raphson based Position Estimator for TDoA": [[198, "newton-raphson-based-position-estimator-for-tdoa"]], "Least Squares based Position Estimator for ToA/mRTT": [[199, "least-squares-based-position-estimator-for-toa-mrtt"]], "Optimization Algorithms": [[200, "optimization-algorithms"]], "DFT based Method": [[202, "dft-based-method"]], "ESPRIT based ToA Estimation": [[203, "esprit-based-toa-estimation"]], "MUSIC based ToA Estimation": [[204, "music-based-toa-estimation"]], "Time of Arrival (ToA)/Delay Estimation": [[205, "time-of-arrival-toa-delay-estimation"]], "Position Estimation": [[206, "position-estimation"], [206, "id1"]], "Positioning in 5G Networks": [[206, "id2"]], "Submodules": [[206, "submodules"]], "PUCCH Format 0 Resource De-Mapping": [[215, "pucch-format-0-resource-de-mapping"]], "PUCCH Format 0 Resource Mapping": [[216, "pucch-format-0-resource-mapping"]], "PUCCH Format-1 De-Spreading": [[217, "pucch-format-1-de-spreading"]], "PUCCH Format-1 Resource De-Mapping": [[218, "pucch-format-1-resource-de-mapping"]], "PUCCH Format-1 Resource Mapping": [[219, "pucch-format-1-resource-mapping"]], "PUCCH Format-1 Spreading": [[220, "pucch-format-1-spreading"]], "PUCCH Format-0": [[221, "pucch-format-0"]], "PUCCH Format-1": [[222, "pucch-format-1"]], "PUCCH Format-2": [[223, "pucch-format-2"]], "PUCCH Format-3": [[224, "pucch-format-3"]], "PUCCH Format-4": [[225, "pucch-format-4"]], "Control Resource Set": [[227, "control-resource-set"]], "Channel state Information reference signal (CSI-RS)": [[228, "channel-state-information-reference-signal-csi-rs"]], "Positioning Reference Signal (PRS)": [[231, "positioning-reference-signal-prs"]], "Physical Downlink Shared Channel-PTRS": [[233, "physical-downlink-shared-channel-ptrs"]], "Table-1: PUCCH Format in 5G-NR": [[234, "id1"]], "Sidelink Synchronization Signal Block (SSB) Grid Generation": [[235, "sidelink-synchronization-signal-block-ssb-grid-generation"]], "Table-1: Sizes of the components of SSBs": [[235, "id1"], [237, "id2"]], "Search Space Set": [[236, "search-space-set"]], "Synchronization Signal Block (SSB) Grid Generation": [[237, "synchronization-signal-block-ssb-grid-generation"]], "Synchronization Signal Block (SSB) Resource Mapping": [[238, "synchronization-signal-block-ssb-resource-mapping"]], "Table-1: Downlink Reference Signal and its utility": [[243, "id3"]], "Table-4: Sidelink Reference Signal and its utility": [[243, "id5"]], "Low PAPR Sequence Type 1": [[244, "low-papr-sequence-type-1"]], "Low PAPR Sequence Type 2": [[245, "low-papr-sequence-type-2"]], "PUCCH Format 0 Sequence": [[246, "pucch-format-0-sequence"]], "PUCCH Format 1 Sequence": [[247, "pucch-format-1-sequence"]], "Channel State Information Reference Sequence (CSI-RS)": [[248, "channel-state-information-reference-sequence-csi-rs"]], "Demodulation Reference Sequence (DMRS)": [[249, "demodulation-reference-sequence-dmrs"]], "Table-1: Parameters for generating DMRS for each channel.": [[249, "id3"]], "Pseudo Random (PN) Sequence": [[250, "pseudo-random-pn-sequence"]], "Positioning Reference Sequence (PRS)": [[251, "positioning-reference-sequence-prs"]], "Primary Synchronization Signal": [[252, "primary-synchronization-signal"]], "Primary Synchronization Signal for Sidelink (S-PSS)": [[253, "primary-synchronization-signal-for-sidelink-s-pss"]], "Sounding Reference Sequence (SRS)": [[254, "sounding-reference-sequence-srs"]], "Secondary Synchronization Signal": [[255, "secondary-synchronization-signal"]], "Secondary Synchronization Signal for Sidelink (S-SSS)": [[256, "secondary-synchronization-signal-for-sidelink-s-sss"]], "5G Configurations": [[260, "g-configurations"]], "Channel state information reference signal (CSI-RS) Configurations": [[261, "channel-state-information-reference-signal-csi-rs-configurations"]], "SSB/PBCH Configurations": [[262, "ssb-pbch-configurations"], [266, "ssb-pbch-configurations"]], "PDSCH Lower Physical Layer Configurations": [[263, "pdsch-lower-physical-layer-configurations"]], "PDSCH Upper Physical Layer Configurations": [[264, "pdsch-upper-physical-layer-configurations"]], "Sounding Reference Signal (SRS) Configurations": [[265, "sounding-reference-signal-srs-configurations"]], "Time-Frequency 5G-Configurations": [[267, "time-frequency-5g-configurations"]], "Carrier Frequency Offset (CFO) Estimation": [[268, "carrier-frequency-offset-cfo-estimation"]], "Channel Estimation and Symbol Equalization for PBCH": [[269, "channel-estimation-and-symbol-equalization-for-pbch"]], "Channel Estimation and Symbol Equalization for PDCCH": [[270, "channel-estimation-and-symbol-equalization-for-pdcch"]], "Channel Estimation and Symbol Equalization for PDSCH": [[271, "channel-estimation-and-symbol-equalization-for-pdsch"]], "SSB Parameters Estimation": [[272, "ssb-parameters-estimation"]], "Time Synchronization and PSS/Cell ID-2 Detection": [[273, "time-synchronization-and-pss-cell-id-2-detection"]], "SSS/Cell ID-1 Detection": [[274, "sss-cell-id-1-detection"]], "Downlink Channel Estimation using CSI-RS": [[275, "downlink-channel-estimation-using-csi-rs"], [337, "Downlink-Channel-Estimation-using-CSI-RS"]], "Uplink Channel Estimation using SRS for Positioning": [[276, "uplink-channel-estimation-using-srs-for-positioning"]], "Receiver Algorithms": [[277, "receiver-algorithms"]], "PDCCH Scheduler": [[278, "pdcch-scheduler"]], "Round Robin Scheduler": [[279, "round-robin-scheduler"]], "Link Adaptation": [[280, "link-adaptation"]], "Rank Adaptation": [[281, "rank-adaptation"]], "Resource Allocation": [[282, "resource-allocation"]], "Scheduler": [[283, "scheduler"]], "Research work carried out using 5G Toolkit": [[284, "research-work-carried-out-using-5g-toolkit"]], "Downlink Time/Frame Synchronization using PSS in 5G Networks": [[285, "Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "Import Libraries": [[285, "Import-Libraries"], [287, "Import-Libraries"], [288, "Import-Libraries"], [289, "Import-Libraries"], [291, "Import-Libraries"], [301, "Import-Libraries"], [301, "id1"], [302, "Import-Libraries"], [311, "Import-Libraries"], [314, "Import-Libraries"], [322, "Import-Libraries"], [323, "Import-Libraries"], [328, "Import-Libraries"], [329, "Import-Libraries"], [330, "Import-Libraries"], [331, "Import-Libraries"], [332, "Import-Libraries"], [334, "Import-Libraries"], [336, "Import-Libraries"], [339, "Import-Libraries"], [341, "Import-Libraries"], [342, "Import-Libraries"], [343, "Import-Libraries"], [344, "Import-Libraries"], [345, "Import-Libraries"], [346, "Import-Libraries"], [347, "Import-Libraries"], [349, "Import-Libraries"], [351, "Import-Libraries"], [352, "Import-Libraries"], [353, "import-libraries"]], "Import Some Basic Python Libraries": [[285, "Import-Some-Basic-Python-Libraries"], [287, "Import-Some-Basic-Python-Libraries"], [288, "Import-Some-Basic-Python-Libraries"]], "Import 5G Libraries": [[285, "Import-5G-Libraries"], [287, "Import-5G-Libraries"], [288, "Import-5G-Libraries"], [346, "Import-5G-Libraries"]], "Emulation Parameters": [[285, "Emulation-Parameters"], [287, "Emulation-Parameters"], [288, "Emulation-Parameters"]], "Generate SSB Parameters": [[285, "Generate-SSB-Parameters"], [287, "Generate-SSB-Parameters"]], "Construct Transmission Grid and Generate Time Domain Samples": [[285, "Construct-Transmission-Grid-and-Generate-Time-Domain-Samples"], [287, "Construct-Transmission-Grid-and-Generate-Time-Domain-Samples"]], "SDR-Setup Configurations": [[285, "SDR-Setup-Configurations"], [287, "SDR-Setup-Configurations"], [288, "SDR-Setup-Configurations"], [289, "SDR-Setup-Configurations"], [291, "SDR-Setup-Configurations"], [294, "SDR-Setup-Configurations"]], "Transmission: SDR RF Transmitter": [[285, "Transmission:-SDR-RF-Transmitter"], [287, "Transmission:-SDR-RF-Transmitter"], [289, "Transmission:-SDR-RF-Transmitter"], [291, "Transmission:-SDR-RF-Transmitter"], [294, "Transmission:-SDR-RF-Transmitter"]], "Reception: SDR RF Receiver": [[285, "Reception:-SDR-RF-Receiver"], [288, "Reception:-SDR-RF-Receiver"], [289, "Reception:-SDR-RF-Receiver"], [291, "Reception:-SDR-RF-Receiver"], [294, "Reception:-SDR-RF-Receiver"]], "Time Synchronization: Based on PSS Correlation": [[285, "Time-Synchronization:-Based-on-PSS-Correlation"], [288, "Time-Synchronization:-Based-on-PSS-Correlation"], [289, "Time-Synchronization:-Based-on-PSS-Correlation"], [291, "Time-Synchronization:-Based-on-PSS-Correlation"], [294, "Time-Synchronization:-Based-on-PSS-Correlation"]], "Frame Synchronization: Visualization": [[285, "Frame-Synchronization:-Visualization"]], "Saving Running frames": [[285, "Saving-Running-frames"]], "Time/OFDM Symbol Synchronization using PSS in 5G": [[286, "time-ofdm-symbol-synchronization-using-pss-in-5g"]], "[BS Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks": [[287, "[BS-Side-Implementation]-Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "[UE Side Implementation]-Downlink Time/Frame Synchronization using PSS in 5G Networks": [[288, "[UE-Side-Implementation]-Downlink-Time/Frame-Synchronization-using-PSS-in-5G-Networks"]], "Time Frequency Configurations": [[288, "Time-Frequency-Configurations"]], "Downlink Synchronization in 5G Networks: SSB": [[289, "Downlink-Synchronization-in-5G-Networks:-SSB"], [291, "Downlink-Synchronization-in-5G-Networks:-SSB"]], "Import Python and SDR Libraries": [[289, "Import-Python-and-SDR-Libraries"], [291, "Import-Python-and-SDR-Libraries"]], "Import 5G Toolkit Libraries": [[289, "Import-5G-Toolkit-Libraries"], [291, "Import-5G-Toolkit-Libraries"], [302, "Import-5G-Toolkit-Libraries"], [304, "Import-5G-Toolkit-Libraries"], [311, "Import-5G-Toolkit-Libraries"], [312, "Import-5G-Toolkit-Libraries"], [332, "Import-5G-Toolkit-Libraries"], [341, "Import-5G-Toolkit-Libraries"], [343, "Import-5G-Toolkit-Libraries"], [344, "Import-5G-Toolkit-Libraries"], [365, "Import-5G-Toolkit-Libraries"]], "Emulation Configurations": [[289, "Emulation-Configurations"], [291, "Emulation-Configurations"]], "Transmitter Implementation": [[289, "Transmitter-Implementation"], [291, "Transmitter-Implementation"]], "Generate the SSB Grid for synchronization": [[289, "Generate-the-SSB-Grid-for-synchronization"], [291, "Generate-the-SSB-Grid-for-synchronization"]], "Constellation Diagram": [[289, "Constellation-Diagram"], [291, "Constellation-Diagram"], [294, "Constellation-Diagram"], [365, "Constellation-Diagram"]], "OFDM Modulation: Tx": [[289, "OFDM-Modulation:-Tx"], [291, "OFDM-Modulation:-Tx"]], "Receiver Implementation": [[289, "Receiver-Implementation"], [291, "Receiver-Implementation"]], "Carrier Frequency Offset (CFO) Estimation and Correction in 5G Networks": [[290, "carrier-frequency-offset-cfo-estimation-and-correction-in-5g-networks"]], "OFDM Demodulation and SSB Extraction": [[291, "OFDM-Demodulation-and-SSB-Extraction"]], "SSB Grid: Transmitter and Receiver": [[291, "SSB-Grid:-Transmitter-and-Receiver"], [294, "SSB-Grid:-Transmitter-and-Receiver"]], "Spectrum: Transmitted Grid and Received Grid": [[291, "Spectrum:-Transmitted-Grid-and-Received-Grid"], [294, "Spectrum:-Transmitted-Grid-and-Received-Grid"]], "Parameter Estimation for SSB and PBCH": [[291, "Parameter-Estimation-for-SSB-and-PBCH"]], "Channel Estimation and PBCH Symbol Equalization": [[291, "Channel-Estimation-and-PBCH-Symbol-Equalization"], [351, "Channel-Estimation-and-PBCH-Symbol-Equalization"]], "PBCH Decoding and Constellation": [[291, "PBCH-Decoding-and-Constellation"], [294, "PBCH-Decoding-and-Constellation"]], "Performance Verification": [[291, "Performance-Verification"], [294, "Performance-Verification"]], "Downlink Synchronization using SSB in 5G Networks": [[292, "downlink-synchronization-using-ssb-in-5g-networks"]], "Downlink Data Communication using PDSCH in 5G Networks": [[293, "downlink-data-communication-using-pdsch-in-5g-networks"]], "Downlink Data Communication in 5G Networks": [[294, "Downlink-Data-Communication-in-5G-Networks"]], "5G Toolkit Libraries": [[294, "5G-Toolkit-Libraries"], [322, "5G-Toolkit-Libraries"], [328, "5G-Toolkit-Libraries"], [329, "5G-Toolkit-Libraries"], [330, "5G-Toolkit-Libraries"], [331, "5G-Toolkit-Libraries"], [333, "5G-Toolkit-Libraries"], [334, "5G-Toolkit-Libraries"], [335, "5G-Toolkit-Libraries"], [339, "5G-Toolkit-Libraries"], [345, "5G-Toolkit-Libraries"], [347, "5G-Toolkit-Libraries"]], "Simulation Parameters": [[294, "Simulation-Parameters"], [301, "Simulation-Parameters"], [302, "Simulation-Parameters"], [304, "Simulation-Parameters"], [305, "Simulation-Parameters"], [306, "Simulation-Parameters"], [307, "Simulation-Parameters"], [308, "Simulation-Parameters"], [309, "Simulation-Parameters"], [311, "Simulation-Parameters"], [312, "Simulation-Parameters"], [323, "Simulation-Parameters"], [325, "Simulation-Parameters"], [326, "Simulation-Parameters"], [327, "Simulation-Parameters"], [328, "Simulation-Parameters"], [329, "Simulation-Parameters"], [330, "Simulation-Parameters"], [331, "Simulation-Parameters"], [332, "Simulation-Parameters"], [333, "Simulation-Parameters"], [334, "Simulation-Parameters"], [335, "Simulation-Parameters"], [336, "Simulation-Parameters"], [337, "Simulation-Parameters"], [341, "Simulation-Parameters"], [342, "Simulation-Parameters"], [343, "Simulation-Parameters"], [344, "Simulation-Parameters"], [345, "Simulation-Parameters"], [346, "Simulation-Parameters"], [347, "Simulation-Parameters"], [348, "Simulation-Parameters"], [349, "Simulation-Parameters"], [352, "Simulation-Parameters"], [353, "simulation-parameters"], [354, "Simulation-Parameters"]], "PDSCH Transmitter Implementation": [[294, "PDSCH-Transmitter-Implementation"]], "Generate the PDSCH related parameters: Use PDSCH Configurations": [[294, "Generate-the-PDSCH-related-parameters:-Use-PDSCH-Configurations"]], "Generate the PDSCH Resource Grid": [[294, "Generate-the-PDSCH-Resource-Grid"]], "SSB Transmitter Implementation": [[294, "SSB-Transmitter-Implementation"]], "Generate the SSB Resource Grid": [[294, "Generate-the-SSB-Resource-Grid"]], "Receiver Implementation: SSB": [[294, "Receiver-Implementation:-SSB"]], "PDSCH Recourse Implementation": [[294, "PDSCH-Recourse-Implementation"]], "Extract PDSCH Resource Grid": [[294, "Extract-PDSCH-Resource-Grid"]], "Key Performance Indicators": [[294, "Key-Performance-Indicators"]], "Integration with SDRs": [[295, "integration-with-sdrs"]], "Introductory Course on 5G Standards": [[296, "introductory-course-on-5g-standards"]], "Learning Resources": [[297, "learning-resources"]], "License": [[298, "license"]], "Trademarks": [[298, "trademarks"]], "Source Code": [[298, "source-code"]], "Content": [[298, "content"]], "Tentetive list of Feature": [[299, "tentetive-list-of-feature"]], "In Progress (To be Released soon):": [[299, "in-progress-to-be-released-soon"]], "Next Quarter": [[299, "next-quarter"]], "Before September 2023": [[299, "before-september-2023"]], "Before March 2024": [[299, "before-march-2024"]], "Previous Versions": [[300, "previous-versions"]], "Learning to Demap: Database Generation, Preprocessing, Postprocessing, Training, Validation and Inferences from the LLRNet": [[301, "Learning-to-Demap:-Database-Generation,-Preprocessing,-Postprocessing,-Training,-Validation-and-Inferences-from-the-LLRNet"]], "Table of Contents": [[301, "Table-of-Contents"], [353, "table-of-contents"]], "Import 5G Toolkit Modules": [[301, "Import-5G-Toolkit-Modules"]], "Learning to Demap the Symbols": [[301, "Learning-to-Demap-the-Symbols"]], "Input Output Mapping for M = 4": [[301, "Input-Output-Mapping-for-M-=-4"]], "Input Output Mapping for M = 6": [[301, "Input-Output-Mapping-for-M-=-6"]], "Input Output Mapping for M = 8": [[301, "Input-Output-Mapping-for-M-=-8"]], "Throughput and BER Performance of LLRnet": [[301, "Throughput-and-BER-Performance-of-LLRnet"]], "PDSCH Parameters": [[301, "PDSCH-Parameters"], [311, "PDSCH-Parameters"]], "LLRnet Parameters": [[301, "LLRnet-Parameters"]], "Training Framework": [[301, "Training-Framework"]], "Deployment Framework": [[301, "Deployment-Framework"]], "Simulation Section": [[301, "Simulation-Section"]], "Performance Evaluation": [[301, "Performance-Evaluation"], [329, "Performance-Evaluation"], [353, "performance-evaluation"]], "Throughput vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Throughput-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Bit Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Bit-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Block Error Rate (BLER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM": [[301, "Block-Error-Rate-(BLER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM"]], "Performance Evaluation: 10000 batches and 64000 training samples for LLRNet": [[301, "Performance-Evaluation:-10000-batches-and-64000-training-samples-for-LLRNet"]], "Throughput vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Throughput-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Bit Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Bit-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Block Error rate (BER) vs SNR (dB) for 16-QAM, 64-QAM and, 256-QAM.": [[301, "Block-Error-rate-(BER)-vs-SNR-(dB)-for-16-QAM,-64-QAM-and,-256-QAM."]], "Complexity Analysis": [[301, "Complexity-Analysis"]], "Conclusion": [[301, "Conclusion"]], "Positives of the LLRnet:": [[301, "Positives-of-the-LLRnet:"]], "Limitations of the LLRnet:": [[301, "Limitations-of-the-LLRnet:"]], "References:": [[301, "References:"]], "Performance comparison between different Positioning Methods for millimeter wave 5G Networks": [[302, "Performance-comparison-between-different-Positioning-Methods-for-millimeter-wave-5G-Networks"]], "Generate Wireless Channels": [[302, "Generate-Wireless-Channels"], [332, "Generate-Wireless-Channels"], [333, "Generate-Wireless-Channels"], [335, "Generate-Wireless-Channels"]], "SRS Configurations": [[302, "SRS-Configurations"], [332, "SRS-Configurations"], [333, "SRS-Configurations"], [335, "SRS-Configurations"]], "Slot by Slot Simulation": [[302, "Slot-by-Slot-Simulation"], [332, "Slot-by-Slot-Simulation"], [333, "Slot-by-Slot-Simulation"], [335, "Slot-by-Slot-Simulation"]], "Position Estimation: Based on UL-ToA": [[302, "Position-Estimation:-Based-on-UL-ToA"], [332, "Position-Estimation:-Based-on-UL-ToA"], [333, "Position-Estimation:-Based-on-UL-ToA"], [335, "Position-Estimation:-Based-on-UL-ToA"]], "Visualization of Estimated Position": [[302, "Visualization-of-Estimated-Position"], [332, "Visualization-of-Estimated-Position"], [333, "Visualization-of-Estimated-Position"]], "Performance Analysis of Positioning Error for ToA based method": [[302, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [330, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [331, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [332, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"], [334, "Performance-Analysis-of-Positioning-Error-for-ToA-based-method"]], "Positioning Results Averaged over 2000 UEs": [[302, "Positioning-Results-Averaged-over-2000-UEs"]], "Physical downlink control Channel in 5G": [[303, "physical-downlink-control-channel-in-5g"]], "Analysis of Blocking Probability for different Coverage Conditions": [[304, "Analysis-of-Blocking-Probability-for-different-Coverage-Conditions"]], "PDCCH Scheduling Parameters": [[304, "PDCCH-Scheduling-Parameters"], [305, "PDCCH-Scheduling-Parameters"], [306, "PDCCH-Scheduling-Parameters"], [307, "PDCCH-Scheduling-Parameters"], [308, "PDCCH-Scheduling-Parameters"], [309, "PDCCH-Scheduling-Parameters"]], "PDCCH Scheduling for Good Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Good-Coverage-Scenarios"]], "PDCCH Scheduling for Medium Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Medium-Coverage-Scenarios"]], "PDCCH Scheduling for Extreme Coverage Scenarios": [[304, "PDCCH-Scheduling-for-Extreme-Coverage-Scenarios"]], "Plotting the results": [[304, "Plotting-the-results"]], "References": [[304, "References"], [305, "References"], [306, "References"], [307, "References"], [308, "References"], [309, "References"], [311, "References"], [318, "References"], [336, "References"]], "Variation in Blocking Probability with Different Aggregation Levels (ALs)": [[305, "Variation-in-Blocking-Probability-with-Different-Aggregation-Levels-(ALs)"]], "Python Libraries": [[305, "Python-Libraries"], [307, "Python-Libraries"], [308, "Python-Libraries"], [309, "Python-Libraries"], [322, "Python-Libraries"], [328, "Python-Libraries"], [329, "Python-Libraries"], [330, "Python-Libraries"], [331, "Python-Libraries"], [333, "Python-Libraries"], [334, "Python-Libraries"], [335, "Python-Libraries"], [338, "Python-Libraries"], [345, "Python-Libraries"], [347, "Python-Libraries"], [353, "python-libraries"]], "5G-Toolkit Libraries": [[305, "5G-Toolkit-Libraries"], [307, "5G-Toolkit-Libraries"], [308, "5G-Toolkit-Libraries"], [309, "5G-Toolkit-Libraries"]], "Impact of AL 1": [[305, "Impact-of-AL-1"]], "Impact of AL 2": [[305, "Impact-of-AL-2"]], "Impact of AL 4": [[305, "Impact-of-AL-4"]], "Impact of AL 8": [[305, "Impact-of-AL-8"]], "Impact of AL 16": [[305, "Impact-of-AL-16"]], "Plot the Variation in Blocking Probability with number of UEs for different Aggregation levels.": [[305, "Plot-the-Variation-in-Blocking-Probability-with-number-of-UEs-for-different-Aggregation-levels."]], "Analyzing the effect of Number of Candidates on Blocking Probability": [[306, "Analyzing-the-effect-of-Number-of-Candidates-on-Blocking-Probability"]], "Plot the Variation in Blocking Probability with number of PDCCH candidates": [[306, "Plot-the-Variation-in-Blocking-Probability-with-number-of-PDCCH-candidates"]], "Analyzing the Impact of Scheduling Strategy on Blocking Probability": [[307, "Analyzing-the-Impact-of-Scheduling-Strategy-on-Blocking-Probability"]], "Simulation for Scheduling Strategy-I": [[307, "Simulation-for-Scheduling-Strategy-I"]], "Blocking probability vs number of UEs to be scheduled.": [[307, "Blocking-probability-vs-number-of-UEs-to-be-scheduled."]], "Simulation for Scheduling Strategy-II": [[307, "Simulation-for-Scheduling-Strategy-II"]], "Plotting Blocking Probability vs Number of UEs for Scheduling Strategy": [[307, "Plotting-Blocking-Probability-vs-Number-of-UEs-for-Scheduling-Strategy"]], "Analyze the Impact of UE Capability on Blocking Probability": [[308, "Analyze-the-Impact-of-UE-Capability-on-Blocking-Probability"]], "Simulating the Reference Case": [[308, "Simulating-the-Reference-Case"]], "Plot Blocking Probability for Different CORESET Sizes for Different UEs": [[308, "Plot-Blocking-Probability-for-Different-CORESET-Sizes-for-Different-UEs"], [308, "id1"]], "Simulating Reduced Blind Decoding Case-A": [[308, "Simulating-Reduced-Blind-Decoding-Case-A"]], "Simulating Reduced Blind Decoding Case-B": [[308, "Simulating-Reduced-Blind-Decoding-Case-B"]], "Selection of minimum CORESET Size for a Given Target Block Probability": [[309, "Selection-of-minimum-CORESET-Size-for-a-Given-Target-Block-Probability"]], "Compute minimum coreset size for numUEs = 5.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-5."]], "Compute minimum coreset size for numUEs = 10.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-10."]], "Compute minimum coreset size for numUEs = 15.": [[309, "Compute-minimum-coreset-size-for-numUEs-=-15."]], "Display Minimum CORESET size required to meet the Target Blocking Probability for different number of UEs.": [[309, "Display-Minimum-CORESET-size-required-to-meet-the-Target-Blocking-Probability-for-different-number-of-UEs."]], "Blockage Probability Analysis for RedCap Devices in 5G Networks": [[310, "blockage-probability-analysis-for-redcap-devices-in-5g-networks"]], "CSI Compression and Reconstruction using CSINet for TDD Massive MIMO 5G Networks": [[311, "CSI-Compression-and-Reconstruction-using-CSINet-for-TDD-Massive-MIMO-5G-Networks"]], "Wireless Channel Generation: CDL-A": [[311, "Wireless-Channel-Generation:-CDL-A"]], "Reconstrunction Performance of CSI-Net": [[311, "Reconstrunction-Performance-of-CSI-Net"]], "PDSCH: Transmitter": [[311, "PDSCH:-Transmitter"]], "SVD Based Beamforming: Perfect CSI": [[311, "SVD-Based-Beamforming:-Perfect-CSI"]], "Pass through Channel": [[311, "Pass-through-Channel"]], "Link Level Simulation: SVD based Beamforming using Perfect CSI": [[311, "Link-Level-Simulation:-SVD-based-Beamforming-using-Perfect-CSI"]], "SVD Based Beamforming: CSI Reconstructed using CSINet": [[311, "SVD-Based-Beamforming:-CSI-Reconstructed-using-CSINet"]], "Pass through Wireless Channel": [[311, "Pass-through-Wireless-Channel"]], "Link Level Simulation: SVD based Beamforming using Imperfect CSI": [[311, "Link-Level-Simulation:-SVD-based-Beamforming-using-Imperfect-CSI"]], "Performance Evaluations": [[311, "Performance-Evaluations"], [338, "Performance-Evaluations"], [365, "Performance-Evaluations"]], "Throughput Evaluations": [[311, "Throughput-Evaluations"]], "BLER Evaluations": [[311, "BLER-Evaluations"]], "Wireless Channel Dataset Generation for Training the AI based Models": [[312, "Wireless-Channel-Dataset-Generation-for-Training-the-AI-based-Models"]], "Import Basic Python LIbraries": [[312, "Import-Basic-Python-LIbraries"]], "Set Channel Parameters and Generate Common Parameters": [[312, "Set-Channel-Parameters-and-Generate-Common-Parameters"]], "Generate the Wireless Channels Databases and Preprocess it before storage.": [[312, "Generate-the-Wireless-Channels-Databases-and-Preprocess-it-before-storage."]], "Aggregate all the Datasets into a single Dataset": [[312, "Aggregate-all-the-Datasets-into-a-single-Dataset"]], "Display Sparsity of Wireless Channels": [[312, "Display-Sparsity-of-Wireless-Channels"]], "Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks": [[313, "artificial-intelligence-and-machine-learning-ai-ml-for-csi-compression-and-reconstruction-in-5g-networks"]], "Training the CSINet": [[314, "Training-the-CSINet"]], "Important AI-ML Libraries": [[314, "Important-AI-ML-Libraries"]], "Load Datasets": [[314, "Load-Datasets"]], "Set Training Parameters": [[314, "Set-Training-Parameters"]], "Comparative Study of Reed Muller codes, Polar Codes and LDPC codes": [[315, "comparative-study-of-reed-muller-codes-polar-codes-and-ldpc-codes"]], "Channel Quality Estimation in 5G and Beyond Networks": [[316, "channel-quality-estimation-in-5g-and-beyond-networks"]], "Hybrid Automatic repeat Request in 5G and Beyond": [[317, "hybrid-automatic-repeat-request-in-5g-and-beyond"]], "Constellation Learning in an AWGN Channel": [[318, "Constellation-Learning-in-an-AWGN-Channel"]], "PHY layer as AutoEncoder": [[318, "PHY-layer-as-AutoEncoder"]], "Steps": [[318, "Steps"]], "Importing Libraries": [[318, "Importing-Libraries"]], "Parameters of AutoEncoder": [[318, "Parameters-of-AutoEncoder"]], "Training Data": [[318, "Training-Data"]], "Testing Data": [[318, "Testing-Data"]], "Normalization Functions": [[318, "Normalization-Functions"]], "Defining AutoEncoder Model": [[318, "Defining-AutoEncoder-Model"]], "Training AutoEncoder": [[318, "Training-AutoEncoder"]], "Defining Tx, Channel and Rx from Trained AutoEncoder": [[318, "Defining-Tx,-Channel-and-Rx-from-Trained-AutoEncoder"]], "Block Error Rate (BLER) performance": [[318, "Block-Error-Rate-(BLER)-performance"]], "Hamming Codes": [[318, "Hamming-Codes"], [322, "Hamming-Codes"]], "BLER plot : comparison of AutoEncoder BLER with base line (n,k) Hamming Code BLER": [[318, "BLER-plot-:-comparison-of-AutoEncoder-BLER-with-base-line-(n,k)-Hamming-Code-BLER"]], "Constellation Learning": [[318, "Constellation-Learning"]], "learned constellation plot": [[318, "learned-constellation-plot"]], "Downlink Synchronization using SSB in 5G systems": [[319, "downlink-synchronization-using-ssb-in-5g-systems"]], "Uplink Synchronization using PRACH in 5G systems": [[320, "uplink-synchronization-using-prach-in-5g-systems"]], "Projects": [[321, "projects"]], "Hamming Codes Parameters": [[322, "Hamming-Codes-Parameters"]], "Simulation Setup": [[322, "Simulation-Setup"], [365, "Simulation-Setup"]], "Performance Evaluation: SNR vs BER": [[322, "Performance-Evaluation:-SNR-vs-BER"]], "Performance Evaluation: SNR vs BLER": [[322, "Performance-Evaluation:-SNR-vs-BLER"]], "Conclusions": [[322, "Conclusions"]], "Link Level Simulation for Physical Downlink Control Channels": [[323, "Link-Level-Simulation-for-Physical-Downlink-Control-Channels"]], "Import Basic Python Libraries": [[323, "Import-Basic-Python-Libraries"], [332, "Import-Basic-Python-Libraries"]], "Import 5G-Toolkit Libraries": [[323, "Import-5G-Toolkit-Libraries"], [325, "Import-5G-Toolkit-Libraries"], [326, "Import-5G-Toolkit-Libraries"], [336, "Import-5G-Toolkit-Libraries"], [337, "Import-5G-Toolkit-Libraries"], [354, "Import-5G-Toolkit-Libraries"]], "CORESET Parameters": [[323, "CORESET-Parameters"]], "Generate Wireless Channel: CDL-A": [[323, "Generate-Wireless-Channel:-CDL-A"], [325, "Generate-Wireless-Channel:-CDL-A"], [326, "Generate-Wireless-Channel:-CDL-A"]], "Link level Simulation: For each Aggregation level and Each SNR value": [[323, "Link-level-Simulation:-For-each-Aggregation-level-and-Each-SNR-value"]], "Reliability Performance: BER/BLER vs SNR": [[323, "Reliability-Performance:-BER/BLER-vs-SNR"]], "Reliability Performance: BER/BLER vs SNR for 20000 Batches": [[323, "Reliability-Performance:-BER/BLER-vs-SNR-for-20000-Batches"]], "SVD based Downlink Precoding and Combining for Massive MIMO in 5G Networks": [[324, "svd-based-downlink-precoding-and-combining-for-massive-mimo-in-5g-networks"]], "SVD based Downlink Precoding and Combining for Massive MIMO 5G Networks": [[325, "SVD-based-Downlink-Precoding-and-Combining-for-Massive-MIMO-5G-Networks"]], "Link level simulation: BLER/BER/Throughput/SE vs SNR for different ranks": [[325, "Link-level-simulation:-BLER/BER/Throughput/SE-vs-SNR-for-different-ranks"], [326, "Link-level-simulation:-BLER/BER/Throughput/SE-vs-SNR-for-different-ranks"]], "Simulation Results": [[325, "Simulation-Results"], [326, "Simulation-Results"], [354, "Simulation-Results"]], "Simulation Results: Averaged over 10000 batches": [[325, "Simulation-Results:-Averaged-over-10000-batches"], [326, "Simulation-Results:-Averaged-over-10000-batches"], [354, "Simulation-Results:-Averaged-over-10000-batches"]], "Type-1 codebook based Downlink Precoding and Combining for Massive MIMO 5G Networks": [[326, "Type-1-codebook-based-Downlink-Precoding-and-Combining-for-Massive-MIMO-5G-Networks"]], "P1 Procedure: Beam management in 5G networks using SSB": [[327, "P1-Procedure:-Beam-management-in-5G-networks-using-SSB"]], "Import librariers": [[327, "Import-librariers"]], "Import Python libraries": [[327, "Import-Python-libraries"]], "Import 5G Toolkit libraries": [[327, "Import-5G-Toolkit-libraries"]], "Generate Wireless Channel": [[327, "Generate-Wireless-Channel"]], "Generate Time Frequency Parameters and MIB+ATI Parameters": [[327, "Generate-Time-Frequency-Parameters-and-MIB+ATI-Parameters"]], "Generate OFDM Resource/Transmission Grid": [[327, "Generate-OFDM-Resource/Transmission-Grid"]], "Pass through the Wireless Channel": [[327, "Pass-through-the-Wireless-Channel"], [352, "Pass-through-the-Wireless-Channel"], [354, "Pass-through-the-Wireless-Channel"]], "Power Heatmap of Received Grid": [[327, "Power-Heatmap-of-Received-Grid"]], "Add Noise": [[327, "Add-Noise"], [330, "Add-Noise"], [331, "Add-Noise"], [334, "Add-Noise"]], "RSRP Computation": [[327, "RSRP-Computation"]], "Visualization of All Beam RSRP": [[327, "Visualization-of-All-Beam-RSRP"]], "Selected Base-station and Beam": [[327, "Selected-Base-station-and-Beam"]], "Simulation Topology": [[327, "Simulation-Topology"]], "Search space, CORESET and blind decoding of PDCCH channels in 5G Networks": [[328, "Search-space,-CORESET-and-blind-decoding-of-PDCCH-channels-in-5G-Networks"]], "CORESET and Search Space Set Parameters": [[328, "CORESET-and-Search-Space-Set-Parameters"]], "Transmitter Side Processing": [[328, "Transmitter-Side-Processing"]], "Displaying Resource Grid": [[328, "Displaying-Resource-Grid"]], "Wireless Channel : CDL-A": [[328, "Wireless-Channel-:-CDL-A"]], "Receiver Side Processing and Blind Decoding of UE": [[328, "Receiver-Side-Processing-and-Blind-Decoding-of-UE"]], "Reed Muller Codes in 5G": [[329, "Reed-Muller-Codes-in-5G"]], "Table of content:": [[329, "Table-of-content:"], [338, "Table-of-content:"]], "Mapper and Demapper Parameters": [[329, "Mapper-and-Demapper-Parameters"]], "Simulation": [[329, "Simulation"], [353, "simulation"]], "Performance Plot: Averaged over 65 datasets of 5000 points each.": [[329, "Performance-Plot:-Averaged-over-65-datasets-of-5000-points-each."]], "Downlink TDoA Based Positioning for Industrial IoT Devices in Millimeter Wave 5G Networks": [[330, "Downlink-TDoA-Based-Positioning-for-Industrial-IoT-Devices-in-Millimeter-Wave-5G-Networks"]], "Channel Generation": [[330, "Channel-Generation"], [331, "Channel-Generation"], [334, "Channel-Generation"], [351, "Channel-Generation"]], "Channel Parameters:": [[330, "Channel-Parameters:"], [331, "Channel-Parameters:"], [334, "Channel-Parameters:"]], "Position Reference Signal": [[330, "Position-Reference-Signal"], [331, "Position-Reference-Signal"], [334, "Position-Reference-Signal"]], "OFDM Transmitter: Create Transmission Grid": [[330, "OFDM-Transmitter:-Create-Transmission-Grid"], [331, "OFDM-Transmitter:-Create-Transmission-Grid"], [334, "OFDM-Transmitter:-Create-Transmission-Grid"]], "Display Transmission Grid": [[330, "Display-Transmission-Grid"], [331, "Display-Transmission-Grid"]], "Transmit Beamforming": [[330, "Transmit-Beamforming"], [331, "Transmit-Beamforming"], [334, "Transmit-Beamforming"], [337, "Transmit-Beamforming"]], "Pass the Beamformed Grid Through Wireless Channel": [[330, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"], [331, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"], [334, "Pass-the-Beamformed-Grid-Through-Wireless-Channel"]], "Extracting the Resource Grid": [[330, "Extracting-the-Resource-Grid"], [331, "Extracting-the-Resource-Grid"]], "Channel Estimation + Interpolation": [[330, "Channel-Estimation-+-Interpolation"], [331, "Channel-Estimation-+-Interpolation"]], "Display the quality of Channel Estimates": [[330, "Display-the-quality-of-Channel-Estimates"], [331, "Display-the-quality-of-Channel-Estimates"]], "ToA Estimation": [[330, "ToA-Estimation"], [331, "ToA-Estimation"]], "Visualization: Time of Arrival locus Circles": [[330, "Visualization:-Time-of-Arrival-locus-Circles"], [331, "Visualization:-Time-of-Arrival-locus-Circles"]], "Position Estimation + K-Best Measurement Selection (Genie Aided)": [[330, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"], [331, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"], [334, "Position-Estimation-+-K-Best-Measurement-Selection-(Genie-Aided)"]], "Measurement Selection:": [[330, "Measurement-Selection:"], [331, "Measurement-Selection:"], [334, "Measurement-Selection:"]], "Visualization of Positioning": [[330, "Visualization-of-Positioning"], [331, "Visualization-of-Positioning"], [334, "Visualization-of-Positioning"]], "Performance Analysis: For 2000 UEs": [[330, "Performance-Analysis:-For-2000-UEs"], [331, "Performance-Analysis:-For-2000-UEs"], [332, "Performance-Analysis:-For-2000-UEs"], [333, "Performance-Analysis:-For-2000-UEs"]], "Further Study": [[330, "Further-Study"], [331, "Further-Study"], [334, "Further-Study"], [345, "Further-Study"]], "Downlink Time of Arrival based Positioning in 5G and Beyond Networks": [[331, "Downlink-Time-of-Arrival-based-Positioning-in-5G-and-Beyond-Networks"]], "Positioning Procedure": [[331, "Positioning-Procedure"], [334, "Positioning-Procedure"]], "Table of Content:": [[331, "Table-of-Content:"], [334, "Table-of-Content:"]], "Positioning the Outdoor UEs using 5G Urban Micro cell sites based Uplink Time Difference of Arrival (UL-TDoA) method": [[332, "Positioning-the-Outdoor-UEs-using-5G-Urban-Micro-cell-sites-based-Uplink-Time-Difference-of-Arrival-(UL-TDoA)-method"]], "Positioning the Indoor Open Office UEs using Uplink ToA method": [[333, "Positioning-the-Indoor-Open-Office-UEs-using-Uplink-ToA-method"]], "Performance Analysis of Positioning Error for Uplink-ToA based method": [[333, "Performance-Analysis-of-Positioning-Error-for-Uplink-ToA-based-method"]], "Downlink Angle of Departure based Positioning for Rural Macro Terrain in 5G and Beyond Network": [[334, "Downlink-Angle-of-Departure-based-Positioning-for-Rural-Macro-Terrain-in-5G-and-Beyond-Network"]], "Compute the Measurement Windows": [[334, "Compute-the-Measurement-Windows"]], "RSRP vs beam Index": [[334, "RSRP-vs-beam-Index"]], "AoD Estimation": [[334, "AoD-Estimation"]], "Performance Analysis for DL-AoD method: 2000 UEs": [[334, "Performance-Analysis-for-DL-AoD-method:-2000-UEs"]], "Uplink AoA (UL-AoA) based Localization of the Indoor Factory UEs using millimeter 5G Networks": [[335, "Uplink-AoA-(UL-AoA)-based-Localization-of-the-Indoor-Factory-UEs-using-millimeter-5G-Networks"]], "Visualization: Direction of Arrival Locus Lines": [[335, "Visualization:-Direction-of-Arrival-Locus-Lines"]], "Visualization of Estimated Position and its accuracy": [[335, "Visualization-of-Estimated-Position-and-its-accuracy"]], "Performance Analysis of Positioning Error for UL-AoA method": [[335, "Performance-Analysis-of-Positioning-Error-for-UL-AoA-method"]], "Performance Analysis for UL-AoA method: 1300 UEs": [[335, "Performance-Analysis-for-UL-AoA-method:-1300-UEs"]], "Performance comparison of OFDM and DFT-s-OFDM in 5G Networks": [[336, "Performance-comparison-of-OFDM-and-DFT-s-OFDM-in-5G-Networks"]], "Peak to Average Power Ratio (PAPR) Analysis": [[336, "Peak-to-Average-Power-Ratio-(PAPR)-Analysis"]], "PAPR Analysis: CP-OFDM": [[336, "PAPR-Analysis:-CP-OFDM"]], "PAPR Analysis: DFT-s-OFDM": [[336, "PAPR-Analysis:-DFT-s-OFDM"]], "PAPR Performance Comparison: CP-OFDM vs DFT-s-OFDM": [[336, "PAPR-Performance-Comparison:-CP-OFDM-vs-DFT-s-OFDM"]], "ACLR Analysis: CP-OFDM vs DFT-s-OFDM": [[336, "ACLR-Analysis:-CP-OFDM-vs-DFT-s-OFDM"]], "ACLR Comparison of OFDM and DFT-s-OFDM": [[336, "ACLR-Comparison-of-OFDM-and-DFT-s-OFDM"]], "Generate Channel": [[337, "Generate-Channel"], [354, "Generate-Channel"]], "CSI Configurations": [[337, "CSI-Configurations"]], "Generate CSI-RS Resource Grid": [[337, "Generate-CSI-RS-Resource-Grid"]], "Generate the Transmit Grid": [[337, "Generate-the-Transmit-Grid"]], "Pass through the Channel": [[337, "Pass-through-the-Channel"]], "Add noise at Receiver": [[337, "Add-noise-at-Receiver"]], "Extract the Resource Grid": [[337, "Extract-the-Resource-Grid"]], "Estimate the Channel using CSI-RS": [[337, "Estimate-the-Channel-using-CSI-RS"]], "Display the Estimated channel": [[337, "Display-the-Estimated-channel"]], "Estimate the Rank and Condition number": [[337, "Estimate-the-Rank-and-Condition-number"]], "SVD of Channel and Condition number": [[337, "SVD-of-Channel-and-Condition-number"]], "Estimate the Precoder: Type-I": [[337, "Estimate-the-Precoder:-Type-I"]], "Polar Codes in 5G": [[338, "Polar-Codes-in-5G"]], "Import libraries": [[338, "Import-libraries"]], "5G Toolkit libraries": [[338, "5G-Toolkit-libraries"]], "Symbol Mapping Configurations": [[338, "Symbol-Mapping-Configurations"], [339, "Symbol-Mapping-Configurations"]], "Polar Coder Configurations": [[338, "Polar-Coder-Configurations"]], "Simulation: AWGN Channel": [[338, "Simulation:-AWGN-Channel"]], "Performance Evaluations: Averaging over a 100 dataset of 100 points each": [[338, "Performance-Evaluations:-Averaging-over-a-100-dataset-of-100-points-each"]], "Low Density Parity Check (LDPC) Codes in 5G": [[339, "Low-Density-Parity-Check-(LDPC)-Codes-in-5G"]], "Python LIbraries": [[339, "Python-LIbraries"]], "Simulation: Variation in Reliability with code-rate for fixed block-length": [[339, "Simulation:-Variation-in-Reliability-with-code-rate-for-fixed-block-length"]], "LDPC Parameters": [[339, "LDPC-Parameters"]], "Simulation Procedure": [[339, "Simulation-Procedure"]], "Performance Evaluation: BER vs SNR for different code-rates": [[339, "Performance-Evaluation:-BER-vs-SNR-for-different-code-rates"]], "Simulation: Variation in Reliability with block-length for fixed coderate": [[339, "Simulation:-Variation-in-Reliability-with-block-length-for-fixed-coderate"]], "Performance Evaluation: BER vs SNR for different block lengths": [[339, "Performance-Evaluation:-BER-vs-SNR-for-different-block-lengths"]], "Following results are averaged over 100 results": [[339, "Following-results-are-averaged-over-100-results"]], "BER vs SNR": [[339, "BER-vs-SNR"]], "BER vs TB-size": [[339, "BER-vs-TB-size"]], "Wireless Channel Generation for Outdoor Terrains deployed in Hexagonal Geometry": [[341, "Wireless-Channel-Generation-for-Outdoor-Terrains-deployed-in-Hexagonal-Geometry"]], "Generate Antenna Arrays": [[341, "Generate-Antenna-Arrays"], [343, "Generate-Antenna-Arrays"], [344, "Generate-Antenna-Arrays"]], "Generate Simulation Layout": [[341, "Generate-Simulation-Layout"], [343, "Generate-Simulation-Layout"], [344, "Generate-Simulation-Layout"], [347, "Generate-Simulation-Layout"]], "Generate Channel Parameters": [[341, "Generate-Channel-Parameters"], [343, "Generate-Channel-Parameters"], [344, "Generate-Channel-Parameters"], [347, "Generate-Channel-Parameters"]], "Generate Channel Coefficients": [[341, "Generate-Channel-Coefficients"], [343, "Generate-Channel-Coefficients"], [344, "Generate-Channel-Coefficients"], [347, "Generate-Channel-Coefficients"]], "Generate OFDM Channel": [[341, "Generate-OFDM-Channel"], [343, "Generate-OFDM-Channel"], [344, "Generate-OFDM-Channel"], [347, "Generate-OFDM-Channel"]], "Frequency Domain : Magnitude Response Plot": [[341, "Frequency-Domain-:-Magnitude-Response-Plot"], [343, "Frequency-Domain-:-Magnitude-Response-Plot"], [344, "Frequency-Domain-:-Magnitude-Response-Plot"], [347, "Frequency-Domain-:-Magnitude-Response-Plot"]], "Time Domain Channel response": [[341, "Time-Domain-Channel-response"], [343, "Time-Domain-Channel-response"], [344, "Time-Domain-Channel-response"], [347, "Time-Domain-Channel-response"]], "Generate Spatially Consistent Statistical Channels for Realistic Simulations": [[342, "Generate-Spatially-Consistent-Statistical-Channels-for-Realistic-Simulations"]], "Import 5G Toolkit": [[342, "Import-5G-Toolkit"], [349, "Import-5G-Toolkit"]], "Antenna Arrays": [[342, "Antenna-Arrays"], [345, "Antenna-Arrays"], [348, "Antenna-Arrays"], [349, "Antenna-Arrays"]], "Antenna Array at Rx": [[342, "Antenna-Array-at-Rx"], [349, "Antenna-Array-at-Rx"]], "Antenna Array at Tx": [[342, "Antenna-Array-at-Tx"], [349, "Antenna-Array-at-Tx"]], "Channel Parameters, Channel Coefficients and OFDM Channel": [[342, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [345, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [346, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"], [349, "Channel-Parameters,-Channel-Coefficients-and-OFDM-Channel"]], "Frequency Domain Consistency": [[342, "Frequency-Domain-Consistency"]], "Amplitude Spectrum: Each subcarrier accross time": [[342, "Amplitude-Spectrum:-Each-subcarrier-accross-time"]], "Amplitude Spectrum: One subcarrier accross time": [[342, "Amplitude-Spectrum:-One-subcarrier-accross-time"]], "Amplitude Heatmap": [[342, "Amplitude-Heatmap"]], "Phase Spectrum": [[342, "Phase-Spectrum"]], "Doppler Domain Sparsity": [[342, "Doppler-Domain-Sparsity"]], "Delay/Time Domain: Sparsity": [[342, "Delay/Time-Domain:-Sparsity"]], "Wireless Channel Generation for a Dense High Indoor Factory Terrain Deployed at millimeter band.": [[343, "Wireless-Channel-Generation-for-a-Dense-High-Indoor-Factory-Terrain-Deployed-at-millimeter-band."]], "Genarating the Wireless Channel for Indoor Open Office Terrain": [[344, "Genarating-the-Wireless-Channel-for-Indoor-Open-Office-Terrain"]], "Wireless Channel Generation for Outdoor Mobile User Connected to Rural Macro Site": [[345, "Wireless-Channel-Generation-for-Outdoor-Mobile-User-Connected-to-Rural-Macro-Site"]], "Variation in Channel Power across Time": [[345, "Variation-in-Channel-Power-across-Time"], [346, "Variation-in-Channel-Power-across-Time"]], "Animation: Displaying the variation in receiver power of a UE time snapshots": [[345, "Animation:-Displaying-the-variation-in-receiver-power-of-a-UE-time-snapshots"]], "Functions to Animate the Plot": [[345, "Functions-to-Animate-the-Plot"]], "Simulation Animation": [[345, "Simulation-Animation"]], "Channel Generation for Dual Mobility Scenarios in 5G and Beyond": [[346, "Channel-Generation-for-Dual-Mobility-Scenarios-in-5G-and-Beyond"]], "Generate Antenna Array": [[346, "Generate-Antenna-Array"], [347, "Generate-Antenna-Array"]], "Generate Transmit Arrays": [[346, "Generate-Transmit-Arrays"]], "Generate Receiver Arrays": [[346, "Generate-Receiver-Arrays"]], "Generate the Routes": [[346, "Generate-the-Routes"]], "Generate the BS Routes": [[346, "Generate-the-BS-Routes"]], "Generate the UE Routes": [[346, "Generate-the-UE-Routes"]], "Wireless Channel Generation for Multiple Carrier Frequencies": [[347, "Wireless-Channel-Generation-for-Multiple-Carrier-Frequencies"]], "Propagation Characteristics of Outdoor Terrains": [[348, "Propagation-Characteristics-of-Outdoor-Terrains"]], "Compute the Rough estimate of the Probability of line of sight": [[348, "Compute-the-Rough-estimate-of-the-Probability-of-line-of-sight"]], "Parameter Generator": [[348, "Parameter-Generator"]], "Path-loss Characteristics": [[348, "Path-loss-Characteristics"]], "Distribution of Shadow fading": [[348, "Distribution-of-Shadow-fading"]], "Probability Distribution of Rician K factor": [[348, "Probability-Distribution-of-Rician-K-factor"]], "Delay Spread Charateristics": [[348, "Delay-Spread-Charateristics"]], "Angular Spread Characteristics": [[348, "Angular-Spread-Characteristics"]], "Probability distribution of Azimuth-AoA": [[348, "Probability-distribution-of-Azimuth-AoA"]], "Probability distribution of Azimuth-AoD": [[348, "Probability-distribution-of-Azimuth-AoD"]], "Probability distribution of Elevation-AoA": [[348, "Probability-distribution-of-Elevation-AoA"]], "Probability distribution of Elevation-AoD": [[348, "Probability-distribution-of-Elevation-AoD"]], "Beam Domain and Delay Domain Sparsity in Wireless Channel Models": [[349, "Beam-Domain-and-Delay-Domain-Sparsity-in-Wireless-Channel-Models"]], "Demonstrating the Beam Domain Sparsity": [[349, "Demonstrating-the-Beam-Domain-Sparsity"]], "Demonstrating the Delay Domain Sparsity": [[349, "Demonstrating-the-Delay-Domain-Sparsity"]], "Detailed Tutorials on 3GPP Channel Models": [[350, "detailed-tutorials-on-3gpp-channel-models"]], "Initial Access in 5G": [[351, "Initial-Access-in-5G"]], "External Libaries": [[351, "External-Libaries"]], "5G Toolkit Modules": [[351, "5G-Toolkit-Modules"]], "System Parameters": [[351, "System-Parameters"]], "PBCH Information": [[351, "PBCH-Information"]], "Transmission-side Processing": [[351, "Transmission-side-Processing"]], "Generate Primary Synchronization Sequence (PSS)": [[351, "Generate-Primary-Synchronization-Sequence-(PSS)"]], "Generate Secondary Synchronization Sequence (SSS)": [[351, "Generate-Secondary-Synchronization-Sequence-(SSS)"]], "Generate Demodulation Reference Sequence (DMRS)": [[351, "Generate-Demodulation-Reference-Sequence-(DMRS)"]], "Generate the PBCH Payload": [[351, "Generate-the-PBCH-Payload"]], "Constellation Diagram: Tx": [[351, "Constellation-Diagram:-Tx"]], "Construct SSB Grid": [[351, "Construct-SSB-Grid"]], "Mapping SSB to Transmission Grid for ODFM": [[351, "Mapping-SSB-to-Transmission-Grid-for-ODFM"]], "OFDM-Modulator": [[351, "OFDM-Modulator"]], "Analog Beamforming": [[351, "Analog-Beamforming"]], "Pass Tx signal through Wireless Channel": [[351, "Pass-Tx-signal-through-Wireless-Channel"]], "Noise addition at receiver": [[351, "Noise-addition-at-receiver"]], "SSB Receiver Side": [[351, "SSB-Receiver-Side"]], "Receiver combining": [[351, "Receiver-combining"]], "PSS Detection: largest peak": [[351, "PSS-Detection:-largest-peak"]], "Largest peak": [[351, "Largest-peak"]], "OFDM Demodulation: Resource Grid reconstruction": [[351, "OFDM-Demodulation:-Resource-Grid-reconstruction"]], "SSB Extaction from Resource Grid": [[351, "SSB-Extaction-from-Resource-Grid"]], "Comparing Transmitted and Received SSB Grid": [[351, "Comparing-Transmitted-and-Received-SSB-Grid"]], "Spectrum Analysis": [[351, "Spectrum-Analysis"]], "(SSS Detection: PSS channel assisted) + Cell-ID estimation": [[351, "(SSS-Detection:-PSS-channel-assisted)-+-Cell-ID-estimation"]], "DMRS Parameters Detection + DMRS Sequence Generation": [[351, "DMRS-Parameters-Detection-+-DMRS-Sequence-Generation"]], "Constellation Diagram: Rx": [[351, "Constellation-Diagram:-Rx"]], "PBCH Decoding": [[351, "PBCH-Decoding"]], "Information Aggregation": [[351, "Information-Aggregation"]], "Performance Evaluations: BER + Cell-IDs + DMRS Parameter Detection": [[351, "Performance-Evaluations:-BER-+-Cell-IDs-+-DMRS-Parameter-Detection"]], "Cell-IDs Detection": [[351, "Cell-IDs-Detection"]], "DMRS Parameter Detection": [[351, "DMRS-Parameter-Detection"]], "BER computation": [[351, "BER-computation"]], "Coverage Evaluation of Physical Broadcast Channels (PBCH) in 5G Networks": [[352, "Coverage-Evaluation-of-Physical-Broadcast-Channels-(PBCH)-in-5G-Networks"]], "Import 5G Toolkit Libraiers": [[352, "Import-5G-Toolkit-Libraiers"]], "Generate the Wireless Channel : CDL-A": [[352, "Generate-the-Wireless-Channel-:-CDL-A"]], "Set SSB and Time-Frequency OFDM Configurations/Parameters": [[352, "Set-SSB-and-Time-Frequency-OFDM-Configurations/Parameters"]], "Generate the Synchronization Signal Block (SSB) Grid": [[352, "Generate-the-Synchronization-Signal-Block-(SSB)-Grid"]], "Generate the Transmission Grid": [[352, "Generate-the-Transmission-Grid"]], "Display the Heatmap for the Received Grid": [[352, "Display-the-Heatmap-for-the-Received-Grid"]], "Link level Simulation: BLER for each SNR value": [[352, "Link-level-Simulation:-BLER-for-each-SNR-value"]], "Block Error Rate Performance": [[352, "Block-Error-Rate-Performance"]], "Block Error Rate: Averaged over a 10000 batches": [[352, "Block-Error-Rate:-Averaged-over-a-10000-batches"]], "BER Performance of PUCCH Format 0": [[353, "ber-performance-of-pucch-format-0"]], "5G ToolKit Libraries": [[353, "g-toolkit-libraries"]], "Format 0": [[353, "format-0"]], "Format 0 Decoder": [[353, "format-0-decoder"]], "M_CS Estimation": [[353, "m-cs-estimation"]], "Information content based on MCS value": [[353, "information-content-based-on-mcs-value"]], "Performance Plot": [[353, "performance-plot"]], "Link Level Simulation for Physical Downlink Shared Channel in 5G": [[354, "Link-Level-Simulation-for-Physical-Downlink-Shared-Channel-in-5G"]], "PDSCH Configurations": [[354, "PDSCH-Configurations"]], "PDSCH Implementation": [[354, "PDSCH-Implementation"]], "SVD based Precoding and Beamforming": [[354, "SVD-based-Precoding-and-Beamforming"]], "Recevier Side Processing": [[354, "Recevier-Side-Processing"]], "Save Results": [[354, "Save-Results"]], "Tutorials": [[355, "tutorials"]], "Challenge Of this Week": [[356, "challenge-of-this-week"]], "Arxiv-ed Challenges": [[357, "arxiv-ed-challenges"]], "Solution of this Months Problems": [[358, "solution-of-this-months-problems"]], "Install 5G Toolkit": [[359, "install-5g-toolkit"], [359, "id2"], [360, "install-5g-toolkit"], [360, "id1"], [360, "id5"], [362, "install-5g-toolkit"], [362, "id3"], [363, "install-5g-toolkit"]], "System Requirements:": [[359, "system-requirements"], [362, "system-requirements"], [363, "system-requirements"]], "Dependent Libraries:": [[359, "dependent-libraries"], [363, "dependent-libraries"]], "Install Miniconda": [[359, "install-miniconda"], [360, "install-miniconda"], [360, "id2"], [362, "install-miniconda"]], "Install Jupyter Notebook": [[359, "install-jupyter-notebook"], [360, "install-jupyter-notebook"], [360, "id4"], [362, "install-jupyter-notebook"]], "Final Confirmation": [[359, "final-confirmation"], [360, "final-confirmation"], [360, "id6"], [362, "final-confirmation"]], "License 5G Toolkit": [[359, "license-5g-toolkit"], [362, "license-5g-toolkit"], [363, "license-5g-toolkit"]], "Activate the 5G Toolkit License": [[359, "activate-the-5g-toolkit-license"], [362, "activate-the-5g-toolkit-license"], [363, "activate-the-5g-toolkit-license"]], "Installation Tutorial: Video": [[359, "installation-tutorial-video"], [362, "installation-tutorial-video"]], "Detailed Installation on Ubuntu": [[360, "detailed-installation-on-ubuntu"]], "Update Ubuntu system": [[360, "update-ubuntu-system"]], "Detailed Installation on Windows 10/11": [[360, "detailed-installation-on-windows-10-11"]], "Create an environment using Conda": [[360, "create-an-environment-using-conda"]], "5G Toolkit": [[361, "g-toolkit"]], "Salient Features": [[361, "salient-features"]], "Technical Features": [[361, "technical-features"]], "5G Toolkit R24a.0.3 Documentation": [[361, "g-toolkit-version-documentation"]], "How the documentation is organized": [[361, "how-the-documentation-is-organized"]], "Looking for Help": [[361, "looking-for-help"]], "More Information": [[361, "more-information"]], "5G Toolkit Features": [[361, "g-toolkit-features"]], "Dependent Libraries": [[362, "dependent-libraries"], [363, "id2"]], "How to install 5G Toolkit:": [[363, "how-to-install-5g-toolkit"]], "system Requirements": [[363, "id1"]], "Install 5G Toolkit on Ubuntu (20.04/22.04) and Windows (10/11)": [[363, "install-5g-toolkit-on-ubuntu-20-04-22-04-and-windows-10-11"]], "Library Dependencies": [[363, "id3"]], "Detailed Installation Procedure": [[363, "detailed-installation-procedure"]], "Release Notes": [[364, "release-notes"]], "Getting Started with 5G Toolkit": [[365, "Getting-Started-with-5G-Toolkit"]], "Create Objects": [[365, "Create-Objects"]], "Payload Bits Generation and Encoding": [[365, "Payload-Bits-Generation-and-Encoding"]], "Symbol Mapper": [[365, "Symbol-Mapper"]], "AWGN Channel": [[365, "AWGN-Channel"]], "CRC Decoder: Error Detection": [[365, "CRC-Decoder:-Error-Detection"]], "BER and Block Error Computation": [[365, "BER-and-Block-Error-Computation"]], "Display BER/BLER vs SNR.": [[365, "Display-BER/BLER-vs-SNR."]]}, "indexentries": {"crcdecoder (class in toolkit5g.crc)": [[3, "toolkit5G.CRC.CRCDecoder"]], "crcencoder (class in toolkit5g.crc)": [[4, "toolkit5G.CRC.CRCEncoder"]], "hammingdecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingDecoder"]], "hammingencoder (class in toolkit5g.channelcoder.hammingcoder.hammingencoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingEncoder.HammingEncoder"]], "hammingspheredecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingSphereDecoder"]], "hammingsyndromedecoder (class in toolkit5g.channelcoder.hammingcoder.hammingdecoder)": [[5, "toolkit5G.ChannelCoder.HammingCoder.hammingDecoder.HammingSyndromeDecoder"]], "ldpcdecoder5g (class in toolkit5g.channelcoder)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G"]], "ldpcencoder5g (class in toolkit5g.channelcoder)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G"]], "bm (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.bm"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.bm"]], "bm (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.bm"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.bm"]], "computeils() (toolkit5g.channelcoder.ldpcdecoder5g method)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.computeIls"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.computeIls"]], "computeils() (toolkit5g.channelcoder.ldpcencoder5g method)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.computeIls"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.computeIls"]], "i_ls (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.i_ls"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.i_ls"]], "i_ls (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.i_ls"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.i_ls"]], "k (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.k"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.k"]], "k_ldpc (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.k_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.k_ldpc"]], "llr_max (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.llr_max"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.llr_max"]], "n (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.n"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.n"]], "n (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.n"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.n"]], "n_ldpc (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.n_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.n_ldpc"]], "n_ldpc (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.n_ldpc"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.n_ldpc"]], "nb_pruned_nodes (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.nb_pruned_nodes"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.nb_pruned_nodes"]], "pcm (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.pcm"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.pcm"]], "prune_pcm (toolkit5g.channelcoder.ldpcdecoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCDecoder5G.prune_pcm"], [96, "toolkit5G.ChannelCoder.LDPCDecoder5G.prune_pcm"]], "z (toolkit5g.channelcoder.ldpcencoder5g property)": [[6, "toolkit5G.ChannelCoder.LDPCEncoder5G.z"], [96, "toolkit5G.ChannelCoder.LDPCEncoder5G.z"]], "c (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.C"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.C"]], "codeblockaggregation (class in toolkit5g.channelcoder.ldpc)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation"]], "codeblocksegregation (class in toolkit5g.channelcoder.ldpc)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegregation"], [92, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegregation"]], "kbar (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kbar"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kbar"]], "kcb (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kcb"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.Kcb"]], "basegraph (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.baseGraph"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.baseGraph"]], "coderate (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.codeRate"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.codeRate"]], "crctype (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.crcType"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.crcType"]], "tbsize (toolkit5g.channelcoder.ldpc.codeblockaggregation property)": [[7, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.tbSize"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockAggregation.tbSize"]], "b (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.B"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.B"]], "c (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.C"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.C"]], "codeblockconcatenation (class in toolkit5g.channelcoder.ldpc)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockConcatenation"], [92, "toolkit5G.ChannelCoder.LDPC.CodeBlockConcatenation"]], "codeblocksegmentation (class in toolkit5g.channelcoder.ldpc)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation"]], "k (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.K"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.K"]], "kb (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kb"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kb"]], "kbar (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kbar"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Kbar"]], "l (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.L"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.L"]], "zc (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Zc"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.Zc"]], "basegraph (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.baseGraph"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.baseGraph"]], "coderate (toolkit5g.channelcoder.ldpc.codeblocksegmentation property)": [[8, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.codeRate"], [93, "toolkit5G.ChannelCoder.LDPC.CodeBlockSegmentation.codeRate"]], "ldpcparameters (class in toolkit5g.channelcoder.ldpc)": [[9, "toolkit5G.ChannelCoder.LDPC.LDPCparameters"]], "e (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.E"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.E"]], "k (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.K"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.K"]], "n (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.N"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.N"]], "n (toolkit5g.channelcoder.polarencoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [55, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [74, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [117, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [142, "toolkit5G.ChannelCoder.PolarEncoder5G.N"], [146, "toolkit5G.ChannelCoder.PolarEncoder5G.N"]], "polardecoder5g (class in toolkit5g.channelcoder)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G"]], "polarencoder5g (class in toolkit5g.channelcoder)": [[10, "toolkit5G.ChannelCoder.PolarEncoder5G"], [55, "toolkit5G.ChannelCoder.PolarEncoder5G"], [74, "toolkit5G.ChannelCoder.PolarEncoder5G"], [117, "toolkit5G.ChannelCoder.PolarEncoder5G"], [142, "toolkit5G.ChannelCoder.PolarEncoder5G"], [146, "toolkit5G.ChannelCoder.PolarEncoder5G"]], "dec_type (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.dec_type"]], "llr_max (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.llr_max"]], "output_dtype (toolkit5g.channelcoder.polardecoder5g property)": [[10, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [55, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [74, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [117, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [142, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"], [146, "toolkit5G.ChannelCoder.PolarDecoder5G.output_dtype"]], "codeblockaggregation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"], [149, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockAggregation"]], "codeblockconcatenation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"], [148, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockConcatenation"]], "codeblocksegmentation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"], [149, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegmentation"]], "codeblocksegregation (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [44, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [69, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [112, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [143, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"], [148, "toolkit5G.ChannelCoder.PolarCoder.CodeBlockSegregation"]], "inputbitdeinterleaver (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [27, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [44, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [69, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [112, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"], [143, "toolkit5G.ChannelCoder.PolarCoder.InputBitDeInterleaver"]], "inputbitinterleaver (class in toolkit5g.channelcoder.polarcoder)": [[11, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [27, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [44, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [69, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [112, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"], [143, "toolkit5G.ChannelCoder.PolarCoder.InputBitInterleaver"]], "reedmullerdecoder5g (class in toolkit5g.channelcoder)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G"]], "reedmullerencoder5g (class in toolkit5g.channelcoder)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G"]], "dtype (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.dtype"]], "dtype (toolkit5g.channelcoder.reedmullerencoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G.dtype"]], "hardin (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.hardIn"]], "k (toolkit5g.channelcoder.reedmullerdecoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerDecoder5G.k"]], "k (toolkit5g.channelcoder.reedmullerencoder5g property)": [[12, "toolkit5G.ChannelCoder.ReedMullerEncoder5G.k"]], "antennaarrays (class in toolkit5g.channelmodels)": [[14, "toolkit5G.ChannelModels.AntennaArrays"]], "antenna_3gpp_38901 (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_3GPP_38901"]], "antenna_hertziandipole (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_HertzianDipole"]], "antenna_lineardipole (class in toolkit5g.channelmodels.antennaarrays)": [[14, "toolkit5G.ChannelModels.antennaArrays.Antenna_LinearDipole"]], "channelgenerator (class in toolkit5g.channelmodels)": [[15, "toolkit5G.ChannelModels.ChannelGenerator"]], "circularroute (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.CircularRoute"]], "dropvehicleshighway (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.DropVehiclesHighway"]], "nodemobility (class in toolkit5g.channelmodels)": [[17, "toolkit5G.ChannelModels.NodeMobility"]], "randomwalk (class in toolkit5g.channelmodels.nodemobility)": [[17, "toolkit5G.ChannelModels.nodeMobility.RandomWalk"]], "displayroute() (toolkit5g.channelmodels.nodemobility method)": [[17, "toolkit5G.ChannelModels.NodeMobility.displayRoute"]], "parametergenerator (class in toolkit5g.channelmodels)": [[18, "toolkit5G.ChannelModels.ParameterGenerator"]], "bslocations (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.BSLocations"]], "hexagonallayout (class in toolkit5g.channelmodels.simulationlayout)": [[19, "toolkit5G.ChannelModels.simulationLayout.HexagonalLayout"]], "isd (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ISD"]], "rectangularlayout (class in toolkit5g.channelmodels.simulationlayout)": [[19, "toolkit5G.ChannelModels.simulationLayout.RectangularLayout"]], "simulationlayout (class in toolkit5g.channelmodels)": [[19, "toolkit5G.ChannelModels.SimulationLayout"]], "uelocations (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UELocations"]], "uedistibution (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UEdistibution"]], "ueheightdistribution (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.UEheightDistribution"]], "bsantennaarray (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.bsAntennaArray"]], "bsroute (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.bsRoute"]], "carrierfrequency (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.carrierFrequency"]], "clutterdensity (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterDensity"]], "clutterheight (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterHeight"]], "cluttersize (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.clutterSize"]], "correlationdistanceindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationDistanceIndoor"]], "correlationdistancelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationDistanceLoS"]], "correlationtypeindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationTypeIndoor"]], "correlationtypelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.correlationTypeLoS"]], "enablespatialconsistencyindoor (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.enableSpatialConsistencyIndoor"]], "enablespatialconsistencylos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.enableSpatialConsistencyLoS"]], "force3gppspatialconsistencyparameters (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.force3GPPSpatialConsistencyParameters"]], "forcelos (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.forceLOS"]], "heightofbs (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfBS"]], "heightofroom (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfRoom"]], "heightofue (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.heightOfUE"]], "indooruefraction (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.indoorUEfraction"]], "layoutlength (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutLength"]], "layouttype (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutType"]], "layoutwidth (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.layoutWidth"]], "lengthofindoorobject (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.lengthOfIndoorObject"]], "maxnumberoffloors (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.maxNumberOfFloors"]], "memoryefficient (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.memoryEfficient"]], "minnumberoffloors (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.minNumberOfFloors"]], "minuebsdistance (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.minUEBSDistance"]], "numofbs (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfBS"]], "numofsectorspersite (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfSectorsPerSite"]], "numofsnapshots (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfSnapShots"]], "numofue (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.numOfUE"]], "radiusforcircularuedrop (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.radiusForCircularUEDrop"]], "routetype (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.routeType"]], "terrain (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.terrain"]], "ueantennaarray (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueAntennaArray"]], "uedropmethod (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueDropMethod"]], "ueroute (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.ueRoute"]], "widthofindoorobject (toolkit5g.channelmodels.simulationlayout property)": [[19, "toolkit5G.ChannelModels.SimulationLayout.widthOfIndoorObject"]], "addnoise (class in toolkit5g.channelprocessing)": [[21, "toolkit5G.ChannelProcessing.AddNoise"]], "applychannel (class in toolkit5g.channelprocessing)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel"]], "enableintertxinterference (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.enableInterTxInterference"]], "isfrequencydomain (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.isFrequencyDomain"]], "memoryconsumptionlevel (toolkit5g.channelprocessing.applychannel property)": [[22, "toolkit5G.ChannelProcessing.ApplyChannel.memoryConsumptionLevel"]], "bitdeinterleaver (class in toolkit5g.ratematcher.ldpc)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver"]], "bitinterleaver (class in toolkit5g.ratematcher.ldpc)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver"]], "modorder (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.modOrder"]], "modorder (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.modOrder"]], "numbits1 (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits1"]], "numbits1 (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits1"]], "numbits2 (toolkit5g.ratematcher.ldpc.bitdeinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"], [101, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"], [208, "toolkit5G.Ratematcher.LDPC.BitDeinterleaver.numBits2"]], "numbits2 (toolkit5g.ratematcher.ldpc.bitinterleaver property)": [[24, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"], [101, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"], [208, "toolkit5G.Ratematcher.LDPC.BitInterleaver.numBits2"]], "pbchdeinterleaver (class in toolkit5g.physicalchannels.pbch)": [[25, "toolkit5G.PhysicalChannels.PBCH.PBCHDeInterleaver"]], "pbchinterleaver (class in toolkit5g.physicalchannels.pbch)": [[25, "toolkit5G.PhysicalChannels.PBCH.PBCHInterleaver"]], "channeldeinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[26, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [58, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [77, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [120, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [153, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"], [211, "toolkit5G.Ratematcher.PolarCoder.ChannelDeInterleaver"]], "channelinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[26, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [58, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [77, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [120, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [153, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"], [211, "toolkit5G.Ratematcher.PolarCoder.ChannelInterleaver"]], "subblock_deinterleaver (class in toolkit5g.ratematcher.polarcoder)": [[28, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [59, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [78, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [121, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [154, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"], [212, "toolkit5G.Ratematcher.PolarCoder.Subblock_DeInterleaver"]], "subblock_interleaver (class in toolkit5g.ratematcher.polarcoder)": [[28, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [59, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [78, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [121, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [154, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [158, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"], [212, "toolkit5G.Ratematcher.PolarCoder.Subblock_Interleaver"]], "searchfree (class in toolkit5g.mimoprocessing)": [[29, "toolkit5G.MIMOProcessing.SearchFree"]], "typeicodebook (class in toolkit5g.mimoprocessing)": [[29, "toolkit5G.MIMOProcessing.TypeICodeBook"]], "ofdmdemodulator (class in toolkit5g.ofdm)": [[32, "toolkit5G.OFDM.OFDMDemodulator"]], "ofdmmodulator (class in toolkit5g.ofdm)": [[33, "toolkit5G.OFDM.OFDMModulator"]], "transformprecoding (class in toolkit5g.ofdm)": [[34, "toolkit5G.OFDM.TransformPrecoding"], [36, "toolkit5G.OFDM.TransformPrecoding"]], "transformdecoding5g (class in toolkit5g.ofdm)": [[35, "toolkit5G.OFDM.TransformDecoding5G"]], "transformprecoding5g (class in toolkit5g.ofdm)": [[37, "toolkit5G.OFDM.TransformPrecoding5G"]], "dciextraction (class in toolkit5g.payloadgeneration)": [[38, "toolkit5G.PayloadGeneration.DCIExtraction"]], "dcigeneration (class in toolkit5g.payloadgeneration)": [[38, "toolkit5G.PayloadGeneration.DCIGeneration"]], "mibextraction (class in toolkit5g.payloadgeneration)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction"], [46, "toolkit5G.PayloadGeneration.MIBExtraction"]], "mibgeneration (class in toolkit5g.payloadgeneration)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration"], [46, "toolkit5G.PayloadGeneration.MIBGeneration"]], "carrierfreq (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.carrierFreq"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.carrierFreq"]], "carrierfreq (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.carrierFreq"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.carrierFreq"]], "cellbarred (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.cellBarred"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.cellBarred"]], "cellbarred (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.cellBarred"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.cellBarred"]], "choicebit (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.choiceBit"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.choiceBit"]], "choicebit (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.choiceBit"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.choiceBit"]], "controlresourceset0 (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.controlResourceSet0"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.controlResourceSet0"]], "controlresourceset0 (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.controlResourceSet0"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.controlResourceSet0"]], "displayparameters() (toolkit5g.payloadgeneration.mibextraction method)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.displayParameters"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.displayParameters"]], "displayparameters() (toolkit5g.payloadgeneration.mibgeneration method)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.displayParameters"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.displayParameters"]], "dmrstypeaposition (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.dmrsTypeAPosition"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.dmrsTypeAPosition"]], "dmrstypeaposition (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.dmrsTypeAPosition"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.dmrsTypeAPosition"]], "hrfbit (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.hrfBit"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.hrfBit"]], "hrfbit (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.hrfBit"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.hrfBit"]], "intrafrequencyreselection (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.intraFrequencyReselection"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.intraFrequencyReselection"]], "intrafrequencyreselection (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.intraFrequencyReselection"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.intraFrequencyReselection"]], "nssbcandidatesinhrf (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.nssbCandidatesInHrf"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.nssbCandidatesInHrf"]], "nssbcandidatesinhrf (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.nssbCandidatesInHrf"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.nssbCandidatesInHrf"]], "searchspace0 (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.searchSpace0"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.searchSpace0"]], "searchspace0 (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.searchSpace0"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.searchSpace0"]], "ssbindex (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.ssbIndex"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.ssbIndex"]], "ssbindex (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.ssbIndex"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.ssbIndex"]], "ssbsubcarrieroffset (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.ssbSubCarrierOffset"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.ssbSubCarrierOffset"]], "ssbsubcarrieroffset (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.ssbSubCarrierOffset"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.ssbSubCarrierOffset"]], "subcarrierspacingcommon (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.subCarrierSpacingCommon"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.subCarrierSpacingCommon"]], "subcarrierspacingcommon (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.subCarrierSpacingCommon"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.subCarrierSpacingCommon"]], "systemframenumber (toolkit5g.payloadgeneration.mibextraction property)": [[39, "toolkit5G.PayloadGeneration.MIBExtraction.systemFrameNumber"], [46, "toolkit5G.PayloadGeneration.MIBExtraction.systemFrameNumber"]], "systemframenumber (toolkit5g.payloadgeneration.mibgeneration property)": [[39, "toolkit5G.PayloadGeneration.MIBGeneration.systemFrameNumber"], [46, "toolkit5G.PayloadGeneration.MIBGeneration.systemFrameNumber"]], "demapper (class in toolkit5g.symbolmapping)": [[48, "toolkit5G.SymbolMapping.Demapper"], [60, "toolkit5G.SymbolMapping.Demapper"], [71, "toolkit5G.SymbolMapping.Demapper"], [79, "toolkit5G.SymbolMapping.Demapper"], [98, "toolkit5G.SymbolMapping.Demapper"], [114, "toolkit5G.SymbolMapping.Demapper"], [122, "toolkit5G.SymbolMapping.Demapper"], [170, "toolkit5G.SymbolMapping.Demapper"], [173, "toolkit5G.SymbolMapping.Demapper"], [258, "toolkit5G.SymbolMapping.Demapper"]], "mapper (class in toolkit5g.symbolmapping)": [[49, "toolkit5G.SymbolMapping.Mapper"], [72, "toolkit5G.SymbolMapping.Mapper"], [99, "toolkit5G.SymbolMapping.Mapper"], [115, "toolkit5G.SymbolMapping.Mapper"], [171, "toolkit5G.SymbolMapping.Mapper"], [174, "toolkit5G.SymbolMapping.Mapper"], [259, "toolkit5G.SymbolMapping.Mapper"]], "bitdeselection (class in toolkit5g.ratematcher.polarcoder)": [[57, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [76, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [119, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [152, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [159, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"], [210, "toolkit5G.Ratematcher.PolarCoder.BitDeSelection"]], "bitselection (class in toolkit5g.ratematcher.polarcoder)": [[57, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [76, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [119, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [152, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [159, "toolkit5G.Ratematcher.PolarCoder.BitSelection"], [210, "toolkit5G.Ratematcher.PolarCoder.BitSelection"]], "rntimasking (class in toolkit5g.scrambler)": [[62, "toolkit5G.Scrambler.RNTImasking"], [81, "toolkit5G.Scrambler.RNTImasking"], [124, "toolkit5G.Scrambler.RNTImasking"], [164, "toolkit5G.Scrambler.RNTImasking"], [241, "toolkit5G.Scrambler.RNTImasking"]], "rnti (toolkit5g.scrambler.rntimasking property)": [[62, "toolkit5G.Scrambler.RNTImasking.rnti"], [81, "toolkit5G.Scrambler.RNTImasking.rnti"], [124, "toolkit5G.Scrambler.RNTImasking.rnti"], [164, "toolkit5G.Scrambler.RNTImasking.rnti"], [241, "toolkit5G.Scrambler.RNTImasking.rnti"]], "descrambler (class in toolkit5g.scrambler)": [[64, "toolkit5G.Scrambler.DeScrambler"], [83, "toolkit5G.Scrambler.DeScrambler"], [106, "toolkit5G.Scrambler.DeScrambler"], [126, "toolkit5G.Scrambler.DeScrambler"], [163, "toolkit5G.Scrambler.DeScrambler"], [167, "toolkit5G.Scrambler.DeScrambler"], [240, "toolkit5G.Scrambler.DeScrambler"]], "lmax (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.Lmax"], [83, "toolkit5G.Scrambler.DeScrambler.Lmax"], [106, "toolkit5G.Scrambler.DeScrambler.Lmax"], [126, "toolkit5G.Scrambler.DeScrambler.Lmax"], [163, "toolkit5G.Scrambler.DeScrambler.Lmax"], [167, "toolkit5G.Scrambler.DeScrambler.Lmax"], [240, "toolkit5G.Scrambler.DeScrambler.Lmax"]], "c_init (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.c_init"], [83, "toolkit5G.Scrambler.DeScrambler.c_init"], [106, "toolkit5G.Scrambler.DeScrambler.c_init"], [126, "toolkit5G.Scrambler.DeScrambler.c_init"], [163, "toolkit5G.Scrambler.DeScrambler.c_init"], [167, "toolkit5G.Scrambler.DeScrambler.c_init"], [240, "toolkit5G.Scrambler.DeScrambler.c_init"]], "id (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.id"], [83, "toolkit5G.Scrambler.DeScrambler.id"], [106, "toolkit5G.Scrambler.DeScrambler.id"], [126, "toolkit5G.Scrambler.DeScrambler.id"], [163, "toolkit5G.Scrambler.DeScrambler.id"], [167, "toolkit5G.Scrambler.DeScrambler.id"], [240, "toolkit5G.Scrambler.DeScrambler.id"]], "mu (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.mu"], [83, "toolkit5G.Scrambler.DeScrambler.mu"], [106, "toolkit5G.Scrambler.DeScrambler.mu"], [126, "toolkit5G.Scrambler.DeScrambler.mu"], [163, "toolkit5G.Scrambler.DeScrambler.mu"], [167, "toolkit5G.Scrambler.DeScrambler.mu"], [240, "toolkit5G.Scrambler.DeScrambler.mu"]], "nid (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.nID"], [83, "toolkit5G.Scrambler.DeScrambler.nID"], [106, "toolkit5G.Scrambler.DeScrambler.nID"], [126, "toolkit5G.Scrambler.DeScrambler.nID"], [163, "toolkit5G.Scrambler.DeScrambler.nID"], [167, "toolkit5G.Scrambler.DeScrambler.nID"], [240, "toolkit5G.Scrambler.DeScrambler.nID"]], "purpose (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.purpose"], [83, "toolkit5G.Scrambler.DeScrambler.purpose"], [106, "toolkit5G.Scrambler.DeScrambler.purpose"], [126, "toolkit5G.Scrambler.DeScrambler.purpose"], [163, "toolkit5G.Scrambler.DeScrambler.purpose"], [167, "toolkit5G.Scrambler.DeScrambler.purpose"], [240, "toolkit5G.Scrambler.DeScrambler.purpose"]], "q (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.q"], [83, "toolkit5G.Scrambler.DeScrambler.q"], [106, "toolkit5G.Scrambler.DeScrambler.q"], [126, "toolkit5G.Scrambler.DeScrambler.q"], [163, "toolkit5G.Scrambler.DeScrambler.q"], [167, "toolkit5G.Scrambler.DeScrambler.q"], [240, "toolkit5G.Scrambler.DeScrambler.q"]], "rnti (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.rnti"], [83, "toolkit5G.Scrambler.DeScrambler.rnti"], [106, "toolkit5G.Scrambler.DeScrambler.rnti"], [126, "toolkit5G.Scrambler.DeScrambler.rnti"], [163, "toolkit5G.Scrambler.DeScrambler.rnti"], [167, "toolkit5G.Scrambler.DeScrambler.rnti"], [240, "toolkit5G.Scrambler.DeScrambler.rnti"]], "ssbindex (toolkit5g.scrambler.descrambler property)": [[64, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [83, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [106, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [126, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [163, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [167, "toolkit5G.Scrambler.DeScrambler.ssbIndex"], [240, "toolkit5G.Scrambler.DeScrambler.ssbIndex"]], "lmax (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.Lmax"], [84, "toolkit5G.Scrambler.Scrambler.Lmax"], [107, "toolkit5G.Scrambler.Scrambler.Lmax"], [127, "toolkit5G.Scrambler.Scrambler.Lmax"], [165, "toolkit5G.Scrambler.Scrambler.Lmax"], [168, "toolkit5G.Scrambler.Scrambler.Lmax"], [242, "toolkit5G.Scrambler.Scrambler.Lmax"]], "scrambler (class in toolkit5g.scrambler)": [[65, "toolkit5G.Scrambler.Scrambler"], [84, "toolkit5G.Scrambler.Scrambler"], [107, "toolkit5G.Scrambler.Scrambler"], [127, "toolkit5G.Scrambler.Scrambler"], [165, "toolkit5G.Scrambler.Scrambler"], [168, "toolkit5G.Scrambler.Scrambler"], [242, "toolkit5G.Scrambler.Scrambler"]], "c_init (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.c_init"], [84, "toolkit5G.Scrambler.Scrambler.c_init"], [107, "toolkit5G.Scrambler.Scrambler.c_init"], [127, "toolkit5G.Scrambler.Scrambler.c_init"], [165, "toolkit5G.Scrambler.Scrambler.c_init"], [168, "toolkit5G.Scrambler.Scrambler.c_init"], [242, "toolkit5G.Scrambler.Scrambler.c_init"]], "id (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.id"], [84, "toolkit5G.Scrambler.Scrambler.id"], [107, "toolkit5G.Scrambler.Scrambler.id"], [127, "toolkit5G.Scrambler.Scrambler.id"], [165, "toolkit5G.Scrambler.Scrambler.id"], [168, "toolkit5G.Scrambler.Scrambler.id"], [242, "toolkit5G.Scrambler.Scrambler.id"]], "mu (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.mu"], [84, "toolkit5G.Scrambler.Scrambler.mu"], [107, "toolkit5G.Scrambler.Scrambler.mu"], [127, "toolkit5G.Scrambler.Scrambler.mu"], [165, "toolkit5G.Scrambler.Scrambler.mu"], [168, "toolkit5G.Scrambler.Scrambler.mu"], [242, "toolkit5G.Scrambler.Scrambler.mu"]], "nid (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.nID"], [84, "toolkit5G.Scrambler.Scrambler.nID"], [107, "toolkit5G.Scrambler.Scrambler.nID"], [127, "toolkit5G.Scrambler.Scrambler.nID"], [165, "toolkit5G.Scrambler.Scrambler.nID"], [168, "toolkit5G.Scrambler.Scrambler.nID"], [242, "toolkit5G.Scrambler.Scrambler.nID"]], "purpose (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.purpose"], [84, "toolkit5G.Scrambler.Scrambler.purpose"], [107, "toolkit5G.Scrambler.Scrambler.purpose"], [127, "toolkit5G.Scrambler.Scrambler.purpose"], [165, "toolkit5G.Scrambler.Scrambler.purpose"], [168, "toolkit5G.Scrambler.Scrambler.purpose"], [242, "toolkit5G.Scrambler.Scrambler.purpose"]], "q (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.q"], [84, "toolkit5G.Scrambler.Scrambler.q"], [107, "toolkit5G.Scrambler.Scrambler.q"], [127, "toolkit5G.Scrambler.Scrambler.q"], [165, "toolkit5G.Scrambler.Scrambler.q"], [168, "toolkit5G.Scrambler.Scrambler.q"], [242, "toolkit5G.Scrambler.Scrambler.q"]], "rnti (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.rnti"], [84, "toolkit5G.Scrambler.Scrambler.rnti"], [107, "toolkit5G.Scrambler.Scrambler.rnti"], [127, "toolkit5G.Scrambler.Scrambler.rnti"], [165, "toolkit5G.Scrambler.Scrambler.rnti"], [168, "toolkit5G.Scrambler.Scrambler.rnti"], [242, "toolkit5G.Scrambler.Scrambler.rnti"]], "ssbindex (toolkit5g.scrambler.scrambler property)": [[65, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [84, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [107, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [127, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [165, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [168, "toolkit5G.Scrambler.Scrambler.ssbIndex"], [242, "toolkit5G.Scrambler.Scrambler.ssbIndex"]], "pdschlowerphy (class in toolkit5g.physicalchannels)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy"]], "displaydmrsgrid() (toolkit5g.physicalchannels.pdschlowerphy method)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy.displayDMRSGrid"]], "displayresourcegrid() (toolkit5g.physicalchannels.pdschlowerphy method)": [[85, "toolkit5G.PhysicalChannels.PDSCHLowerPhy.displayResourceGrid"]], "pdschdecoderlowerphy (class in toolkit5g.physicalchannels)": [[86, "toolkit5G.PhysicalChannels.PDSCHDecoderLowerPhy"]], "pdschupperphy (class in toolkit5g.physicalchannels)": [[87, "toolkit5G.PhysicalChannels.PDSCHUpperPhy"]], "pdschdecoderupperphy (class in toolkit5g.physicalchannels)": [[88, "toolkit5G.PhysicalChannels.PDSCHDecoderUpperPhy"]], "computetransportblocksize (class in toolkit5g.physicalchannels.pdsch)": [[94, "toolkit5G.PhysicalChannels.PDSCH.ComputeTransportBlockSize"]], "layerdemapper (class in toolkit5g.physicalchannels.pdsch)": [[95, "toolkit5G.PhysicalChannels.PDSCH.LayerDemapper"]], "layermapper (class in toolkit5g.physicalchannels.pdsch)": [[95, "toolkit5G.PhysicalChannels.PDSCH.LayerMapper"]], "bitdeselection (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection"]], "bitselection (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection"]], "ncb (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.Ncb"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.Ncb"]], "ratematchparameters (class in toolkit5g.ratematcher.ldpc)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters"]], "basegraph (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.baseGraph"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.baseGraph"]], "basegraph (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.baseGraph"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.baseGraph"]], "basegraph (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.baseGraph"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.baseGraph"]], "enablelbrm (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.enableLBRM"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.enableLBRM"]], "enablelbrm (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.enableLBRM"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.enableLBRM"]], "enablelbrm (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.enableLBRM"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.enableLBRM"]], "k0 (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.k0"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.k0"]], "k0 (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.k0"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.k0"]], "k0 (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.k0"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.k0"]], "liftingfactor (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.liftingFactor"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.liftingFactor"]], "liftingfactor (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.liftingFactor"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.liftingFactor"]], "liftingfactor (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.liftingFactor"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.liftingFactor"]], "modorder (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.modOrder"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.modOrder"]], "modorder (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.modOrder"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.modOrder"]], "nldpc (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.nLDPC"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.nLDPC"]], "numcbs (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numCBs"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numCBs"]], "numcodeblocks (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodeBlocks"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodeBlocks"]], "numcodedbits (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numCodedBits"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numCodedBits"]], "numcodedbits (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodedBits"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numCodedBits"]], "numlayers (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.numLayers"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.numLayers"]], "numlayers (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numLayers"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.numLayers"]], "rvid (toolkit5g.ratematcher.ldpc.bitdeselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitDeselection.rvID"], [207, "toolkit5G.Ratematcher.LDPC.BitDeselection.rvID"]], "rvid (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.rvID"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.rvID"]], "rvid (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.rvID"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.rvID"]], "tbsize (toolkit5g.ratematcher.ldpc.bitselection property)": [[102, "toolkit5G.Ratematcher.LDPC.BitSelection.tbSize"], [207, "toolkit5G.Ratematcher.LDPC.BitSelection.tbSize"]], "tbsize (toolkit5g.ratematcher.ldpc.ratematchparameters property)": [[102, "toolkit5G.Ratematcher.LDPC.RatematchParameters.tbSize"], [209, "toolkit5G.Ratematcher.LDPC.RatematchParameters.tbSize"]], "resourcemapperdmrspdsch (class in toolkit5g.resourcemapping)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH"]], "displaycdmpattern() (toolkit5g.resourcemapping.resourcemapperdmrspdsch method)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayCDMPattern"]], "displayresourcegrid() (toolkit5g.resourcemapping.resourcemapperdmrspdsch method)": [[103, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"], [104, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"], [229, "toolkit5G.ResourceMapping.ResourceMapperDMRSPDSCH.displayResourceGrid"]], "transportblockrxprocessing (class in toolkit5g.physicalchannels.pdsch)": [[108, "toolkit5G.PhysicalChannels.PDSCH.TransportBlockRxProcessing"]], "transportblocktxprocessing (class in toolkit5g.physicalchannels.pdsch)": [[108, "toolkit5G.PhysicalChannels.PDSCH.TransportBlockTxProcessing"]], "resourcedemapperformat0 (class in toolkit5g.resourcemapping)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0"]], "formatpucch (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.formatPUCCH"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.formatPUCCH"]], "indexpucch (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.indexPUCCH"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_0"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_1"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.maxNumPRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numInterlacedRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numOfInterlaces"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numRBs"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numberOfSymb"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.offset"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.offset"]], "rg_size (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.rg_Size"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.secondHopPRB"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.seqLength"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.start_SymbIndex"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcedemapperformat0 property)": [[130, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.startingPRB"], [215, "toolkit5G.ResourceMapping.ResourceDeMapperFormat0.startingPRB"]], "resourcemapperformat0 (class in toolkit5g.resourcemapping)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0"]], "formatpucch (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.formatPUCCH"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.formatPUCCH"]], "indexpucch (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.indexPUCCH"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_0"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_1"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.maxNumPRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numInterlacedRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numOfInterlaces"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numRBs"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numberOfSymb"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.offset"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.offset"]], "rg_size (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.rg_Size"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.secondHopPRB"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.seqLength"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.start_SymbIndex"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcemapperformat0 property)": [[131, "toolkit5G.ResourceMapping.ResourceMapperFormat0.startingPRB"], [216, "toolkit5G.ResourceMapping.ResourceMapperFormat0.startingPRB"]], "pucchformat0sequence (class in toolkit5g.sequencegeneration)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence"]], "controlinfo (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.controlInfo"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.controlInfo"]], "indexpucch (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.indexPUCCH"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.indexPUCCH"]], "initial_cyclicshift (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.initial_CyclicShift"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.initial_CyclicShift"]], "m_cs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.m_CS"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.m_CS"]], "nid (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.nID"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.nID"]], "numbatches (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numBatches"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numBatches"]], "numinterlacedrbs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numInterlacedRBs"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numInterlacedRBs"]], "numrbs (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numRBs"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numRBs"]], "numberofsymb (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numberOfSymb"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.numberOfSymb"]], "pucch_grouphopping (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.pucch_GroupHopping"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.pucch_GroupHopping"]], "seqnumber (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.seqNumber"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.seqNumber"]], "slotnumber (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.slotNumber"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.slotNumber"]], "start_symbindex (toolkit5g.sequencegeneration.pucchformat0sequence property)": [[132, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.start_SymbIndex"], [246, "toolkit5G.SequenceGeneration.PUCCHFormat0Sequence.start_SymbIndex"]], "despreadingformat1 (class in toolkit5g.resourcemapping)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1"]], "spreadingfactor (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.SpreadingFactor"]], "indexpucch (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.indexPUCCH"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.indexPUCCH"]], "maxnumprbs (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.maxNumPRBs"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.maxNumPRBs"]], "numberofsymb (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.numberOfSymb"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.numberOfSymb"]], "start_symbindex (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.start_SymbIndex"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.start_SymbIndex"]], "timedomainocc (toolkit5g.resourcemapping.despreadingformat1 property)": [[134, "toolkit5G.ResourceMapping.DeSpreadingFormat1.timedomainOCC"], [217, "toolkit5G.ResourceMapping.DeSpreadingFormat1.timedomainOCC"]], "resourcedemapperformat1 (class in toolkit5g.resourcemapping)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1"]], "indexpucch (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.indexPUCCH"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_0"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_1"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.maxNumPRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numInterlacedRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numOfInterlaces"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numRBs"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numberOfSymb"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.offset"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.offset"]], "rg_size (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.rg_Size"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.secondHopPRB"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.seqLength"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.start_SymbIndex"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcedemapperformat1 property)": [[136, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.startingPRB"], [218, "toolkit5G.ResourceMapping.ResourceDeMapperFormat1.startingPRB"]], "resourcemapperformat1 (class in toolkit5g.resourcemapping)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1"]], "indexpucch (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.indexPUCCH"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.indexPUCCH"]], "interlaceindex_0 (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_0"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_0"]], "interlaceindex_1 (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_1"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.interlaceIndex_1"]], "maxnumprbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.maxNumPRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.maxNumPRBs"]], "numinterlacedrbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numInterlacedRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numInterlacedRBs"]], "numofinterlaces (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numOfInterlaces"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numOfInterlaces"]], "numrbs (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numRBs"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numberOfSymb"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.numberOfSymb"]], "offset (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.offset"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.offset"]], "rg_size (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.rg_Size"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.rg_Size"]], "secondhopprb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.secondHopPRB"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.secondHopPRB"]], "seqlength (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.seqLength"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.seqLength"]], "start_symbindex (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.start_SymbIndex"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.start_SymbIndex"]], "startingprb (toolkit5g.resourcemapping.resourcemapperformat1 property)": [[137, "toolkit5G.ResourceMapping.ResourceMapperFormat1.startingPRB"], [219, "toolkit5G.ResourceMapping.ResourceMapperFormat1.startingPRB"]], "pucchformat1sequence (class in toolkit5g.sequencegeneration)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence"]], "indexpucch (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.indexPUCCH"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.indexPUCCH"]], "initial_cyclicshift (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.initial_CyclicShift"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.initial_CyclicShift"]], "m_cs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.m_CS"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.m_CS"]], "maxnumprbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.maxNumPRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.maxNumPRBs"]], "nhop (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nHop"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nHop"]], "nid (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nID"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.nID"]], "numinterlacedrbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numInterlacedRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numInterlacedRBs"]], "numrbs (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numRBs"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numRBs"]], "numberofsymb (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numberOfSymb"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.numberOfSymb"]], "pucch_grouphopping (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.pucch_GroupHopping"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.pucch_GroupHopping"]], "slotnumber (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.slotNumber"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.slotNumber"]], "start_symbindex (toolkit5g.sequencegeneration.pucchformat1sequence property)": [[138, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.start_SymbIndex"], [247, "toolkit5G.SequenceGeneration.PUCCHFormat1Sequence.start_SymbIndex"]], "spreadingfactor (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.SpreadingFactor"]], "spreadingformat1 (class in toolkit5g.resourcemapping)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1"]], "indexpucch (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.indexPUCCH"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.indexPUCCH"]], "numrbs (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.numRBs"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.numRBs"]], "numberofsymb (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.numberOfSymb"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.numberOfSymb"]], "start_symbindex (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.start_SymbIndex"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.start_SymbIndex"]], "timedomainocc (toolkit5g.resourcemapping.spreadingformat1 property)": [[139, "toolkit5G.ResourceMapping.SpreadingFormat1.timedomainOCC"], [220, "toolkit5G.ResourceMapping.SpreadingFormat1.timedomainOCC"]], "puschdecoderupperphy (class in toolkit5g.physicalchannels)": [[181, "toolkit5G.PhysicalChannels.PUSCHDecoderUpperPhy"]], "puschupperphy (class in toolkit5g.physicalchannels)": [[182, "toolkit5G.PhysicalChannels.PUSCHUpperPhy"]], "pbch (class in toolkit5g.physicalchannels)": [[184, "toolkit5G.PhysicalChannels.PBCH"]], "pbchdecoder (class in toolkit5g.physicalchannels)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder"]], "chil_bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.chIL_bits"]], "channeldeinterleaverbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.channelDeInterleaverBits"]], "crccheck (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.crcCheck"]], "decrcbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.deCRCBits"]], "descrambledbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.deScrambledBits"]], "descrambled2llrs (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.descrambled2LLRs"]], "encbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.encBits"]], "iilbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.iILBits"]], "ilbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.ilBits"]], "inputdeinteleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.inputDeinteleavedBits"]], "llr (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.llr"]], "mib (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.mib"]], "mibrx (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.mibRx"]], "payloadcrc (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.payloadCRC"]], "payloadmib (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.payloadMIB"]], "pbchdeinterleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.pbchDeInterleavedBits"]], "polardecodedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.polarDecodedBits"]], "ratedematedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.rateDematedBits"]], "rmbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.rmBits"]], "sbil_bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.sBIL_bits"]], "scr2bits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.scr2bits"]], "scrbits (toolkit5g.physicalchannels.pbch property)": [[184, "toolkit5G.PhysicalChannels.PBCH.scrBits"]], "subblockdeinterleavedbits (toolkit5g.physicalchannels.pbchdecoder property)": [[184, "toolkit5G.PhysicalChannels.PBCHDecoder.subBlockDeinterleavedBits"]], "pdcch (class in toolkit5g.physicalchannels)": [[185, "toolkit5G.PhysicalChannels.PDCCH"]], "pdcchdecoder (class in toolkit5g.physicalchannels)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder"]], "check (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.check"]], "dcibil (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciBIL"]], "dcibits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.dciBits"]], "dcicrc (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciCRC"]], "dciibi (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciIBI"]], "dcirm (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciRM"]], "dcirnti (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciRNTI"]], "dciscr (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.dciSCR"]], "decodedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.decodedBits"]], "dematchedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.dematchedBits"]], "descrambledllrs (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.descrambledLLRs"]], "encbits (toolkit5g.physicalchannels.pdcch property)": [[185, "toolkit5G.PhysicalChannels.PDCCH.encBits"]], "ibdilbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.ibDILBits"]], "llr (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.llr"]], "sbdbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.sbdBits"]], "unmaskedbits (toolkit5g.physicalchannels.pdcchdecoder property)": [[185, "toolkit5G.PhysicalChannels.PDCCHDecoder.unmaskedBits"]], "psbch (class in toolkit5g.physicalchannels)": [[188, "toolkit5G.PhysicalChannels.PSBCH"]], "psbchdecoder (class in toolkit5g.physicalchannels)": [[188, "toolkit5G.PhysicalChannels.PSBCHDecoder"]], "pscchlowerphy (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHLowerPhy"]], "pscchlowerphydecoder (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHLowerPhyDecoder"]], "pscchupperphy (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHUpperPhy"]], "pscchupperphydecoder (class in toolkit5g.physicalchannels)": [[189, "toolkit5G.PhysicalChannels.PSCCHUpperPhyDecoder"]], "dft_doa (class in toolkit5g.positioning)": [[192, "toolkit5G.Positioning.DFT_DoA"]], "esprit_doa (class in toolkit5g.positioning)": [[193, "toolkit5G.Positioning.ESPRIT_DoA"]], "music_doa (class in toolkit5g.positioning)": [[194, "toolkit5G.Positioning.MUSIC_DoA"]], "doaestimation (class in toolkit5g.positioning)": [[195, "toolkit5G.Positioning.DoAEstimation"]], "gradientdescentdoa (class in toolkit5g.positioning)": [[196, "toolkit5G.Positioning.GradientDescentDoA"]], "leastsquaredoa (class in toolkit5g.positioning)": [[196, "toolkit5G.Positioning.LeastSquareDoA"]], "hybridtdoaaoa (class in toolkit5g.positioning)": [[197, "toolkit5G.Positioning.HybridTDoAAoA"]], "hybridtoaaoa (class in toolkit5g.positioning)": [[197, "toolkit5G.Positioning.HybridToAAoA"]], "gradientdescenttdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.GradientDescentTDoA"]], "leastsquaretdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.LeastSquareTDoA"]], "newtonraphsontdoa (class in toolkit5g.positioning)": [[198, "toolkit5G.Positioning.NewtonRaphsonTDoA"]], "leastsquaretoa (class in toolkit5g.positioning)": [[199, "toolkit5G.Positioning.LeastSquareToA"]], "dft_toa (class in toolkit5g.positioning)": [[202, "toolkit5G.Positioning.DFT_ToA"]], "esprit_toa (class in toolkit5g.positioning)": [[203, "toolkit5G.Positioning.ESPRIT_ToA"]], "music_toa (class in toolkit5g.positioning)": [[204, "toolkit5G.Positioning.MUSIC_ToA"]], "toaestimation (class in toolkit5g.positioning)": [[205, "toolkit5G.Positioning.ToAEstimation"]], "positionestimation (class in toolkit5g.positioning)": [[206, "toolkit5G.Positioning.PositionEstimation"]], "coreset (class in toolkit5g.resourcemapping)": [[227, "toolkit5G.ResourceMapping.CORESET"]], "displaycoresetreg_cce_mapping() (toolkit5g.resourcemapping.coreset method)": [[227, "toolkit5G.ResourceMapping.CORESET.displayCoresetREG_CCE_Mapping"]], "resourcemappercsirs (class in toolkit5g.resourcemapping)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS"]], "displaycdmpattern() (toolkit5g.resourcemapping.resourcemappercsirs method)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS.displayCDMPattern"]], "displayresourcegrid() (toolkit5g.resourcemapping.resourcemappercsirs method)": [[228, "toolkit5G.ResourceMapping.ResourceMapperCSIRS.displayResourceGrid"]], "resourcemappingpdcch (class in toolkit5g.resourcemapping)": [[230, "toolkit5G.ResourceMapping.ResourceMappingPDCCH"]], "resourcemapperprs (class in toolkit5g.resourcemapping)": [[231, "toolkit5G.ResourceMapping.ResourceMapperPRS"]], "resourcemappingpscch (class in toolkit5g.resourcemapping)": [[232, "toolkit5G.ResourceMapping.ResourceMappingPSCCH"]], "resourcemapperptrspdsch (class in toolkit5g.resourcemapping)": [[233, "toolkit5G.ResourceMapping.ResourceMapperPTRSPDSCH"]], "sssb_grid (class in toolkit5g.resourcemapping)": [[235, "toolkit5G.ResourceMapping.SSSB_Grid"]], "displaygrid() (toolkit5g.resourcemapping.sssb_grid method)": [[235, "toolkit5G.ResourceMapping.SSSB_Grid.displayGrid"]], "searchspaceset (class in toolkit5g.resourcemapping)": [[236, "toolkit5G.ResourceMapping.SearchSpaceSet"]], "ssb_grid (class in toolkit5g.resourcemapping)": [[237, "toolkit5G.ResourceMapping.SSB_Grid"]], "displaygrid() (toolkit5g.resourcemapping.ssb_grid method)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.displayGrid"]], "dmrsindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.dmrsIndices"]], "pbchindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.pbchIndices"]], "pssindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.pssIndices"]], "sssindices (toolkit5g.resourcemapping.ssb_grid property)": [[237, "toolkit5G.ResourceMapping.SSB_Grid.sssIndices"]], "resourcemapperssb (class in toolkit5g.resourcemapping)": [[238, "toolkit5G.ResourceMapping.ResourceMapperSSB"]], "lowpaprsequencetype1 (class in toolkit5g.sequencegeneration)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1"]], "basesequencenumber (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.baseSequenceNumber"]], "cyclicshift (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.cyclicShift"]], "delta (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.delta"]], "groupnumber (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.groupNumber"]], "lengthofsequence (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.lengthOfSequence"]], "numrbs (toolkit5g.sequencegeneration.lowpaprsequencetype1 property)": [[244, "toolkit5G.SequenceGeneration.LowPAPRSequenceType1.numRBs"]], "lowpaprsequencetype2 (class in toolkit5g.sequencegeneration)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2"]], "cinit (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.cinit"]], "delta (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.delta"]], "groupnumber (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.groupNumber"]], "groupnumber_or_cinit (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.groupNumber_Or_cinit"]], "lengthofsequence (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.lengthOfSequence"]], "numrbs (toolkit5g.sequencegeneration.lowpaprsequencetype2 property)": [[245, "toolkit5G.SequenceGeneration.LowPAPRSequenceType2.numRBs"]], "csirs (class in toolkit5g.sequencegeneration)": [[248, "toolkit5G.SequenceGeneration.CSIRS"]], "dmrs (class in toolkit5g.sequencegeneration)": [[249, "toolkit5G.SequenceGeneration.DMRS"]], "pnsequence (class in toolkit5g.sequencegeneration)": [[250, "toolkit5G.SequenceGeneration.PNSequence"]], "prs (class in toolkit5g.sequencegeneration)": [[251, "toolkit5G.SequenceGeneration.PRS"]], "pss (class in toolkit5g.sequencegeneration)": [[252, "toolkit5G.SequenceGeneration.PSS"]], "s_pss (class in toolkit5g.sequencegeneration)": [[253, "toolkit5G.SequenceGeneration.S_PSS"]], "srs (class in toolkit5g.sequencegeneration)": [[254, "toolkit5G.SequenceGeneration.SRS"]], "lengthofsequence (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.lengthOfSequence"]], "nrofcyclicshift (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.nrOfCyclicShift"]], "nrofsymbols (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.nrofSymbols"]], "sequenceid (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.sequenceId"]], "slotindex (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.slotIndex"]], "startposition (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.startPosition"]], "symbolindices (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.symbolIndices"]], "transmissioncomb (toolkit5g.sequencegeneration.srs property)": [[254, "toolkit5G.SequenceGeneration.SRS.transmissionComb"]], "sss (class in toolkit5g.sequencegeneration)": [[255, "toolkit5G.SequenceGeneration.SSS"]], "s_sss (class in toolkit5g.sequencegeneration)": [[256, "toolkit5G.SequenceGeneration.S_SSS"]], "csiconfiguration (class in toolkit5g.configurations)": [[261, "toolkit5G.Configurations.CSIConfiguration"]], "generatevalidssbparameters (class in toolkit5g.configurations)": [[262, "toolkit5G.Configurations.GenerateValidSSBParameters"]], "pdschlowerphyconfiguration (class in toolkit5g.configurations)": [[263, "toolkit5G.Configurations.PDSCHLowerPhyConfiguration"]], "pdschupperphyconfiguration (class in toolkit5g.configurations)": [[264, "toolkit5G.Configurations.PDSCHUpperPhyConfiguration"]], "srsconfiguration (class in toolkit5g.configurations)": [[265, "toolkit5G.Configurations.SRSConfiguration"]], "bhop (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.bHop"]], "bsrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.bSRS"]], "betasrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.betaSRS"]], "csrs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.cSRS"]], "comboffset (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.combOffset"]], "enablestartrbhopping (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.enableStartRBHopping"]], "freqdomainposition (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqDomainPosition"]], "freqdomainshift (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqDomainShift"]], "freqscalingfactor (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.freqScalingFactor"]], "grouporsequencehopping (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.groupOrSequenceHopping"]], "lengthofsequence (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.lengthOfSequence"]], "nrofcyclicshift (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrOfCyclicShift"]], "nrofsrs_ports (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrofSRS_Ports"]], "nrofsymbols (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.nrofSymbols"]], "offsetinslots (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.offsetInSlots"]], "periodicityinslots (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.periodicityInSlots"]], "purpose (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.purpose"]], "repetitionfactor (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.repetitionFactor"]], "resourcegridsizeinrbs (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.resourceGridSizeinRBs"]], "resourcetype (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.resourceType"]], "sequenceid (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.sequenceId"]], "slotindex (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.slotIndex"]], "startposition (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.startPosition"]], "startrbindex (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.startRBIndex"]], "symbolindices (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.symbolIndices"]], "systemframenumber (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.systemFrameNumber"]], "transmissioncomb (toolkit5g.configurations.srsconfiguration property)": [[265, "toolkit5G.Configurations.SRSConfiguration.transmissionComb"]], "ssbconfiguration (class in toolkit5g.configurations)": [[266, "toolkit5G.Configurations.SSBConfiguration"]], "timefrequency5gparameters (class in toolkit5g.configurations)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters"]], "getgaurdband_fr1() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getGaurdBand_FR1"]], "getgaurdband_fr2() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getGaurdBand_FR2"]], "getnumberrb_fr1() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getNumberRB_FR1"]], "getnumberrb_fr2() (toolkit5g.configurations.timefrequency5gparameters method)": [[267, "toolkit5G.Configurations.TimeFrequency5GParameters.getNumberRB_FR2"]], "carrierfrequencyoffsetestimation (class in toolkit5g.receiveralgorithms)": [[268, "toolkit5G.ReceiverAlgorithms.CarrierFrequencyOffsetEstimation"]], "channelestimationandequalizationpbch (class in toolkit5g.receiveralgorithms)": [[269, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPBCH"]], "channelestimationandequalizationpdcch (class in toolkit5g.receiveralgorithms)": [[270, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPDCCH"]], "channelestimationandequalizationpdsch (class in toolkit5g.receiveralgorithms)": [[271, "toolkit5G.ReceiverAlgorithms.ChannelEstimationAndEqualizationPDSCH"]], "dmrsparameterdetection (class in toolkit5g.receiveralgorithms)": [[272, "toolkit5G.ReceiverAlgorithms.DMRSParameterDetection"]], "pssdetection (class in toolkit5g.receiveralgorithms)": [[273, "toolkit5G.ReceiverAlgorithms.PSSDetection"]], "sssdetection (class in toolkit5g.receiveralgorithms)": [[274, "toolkit5G.ReceiverAlgorithms.SSSDetection"]], "channelestimationcsirs (class in toolkit5g.receiveralgorithms)": [[275, "toolkit5G.ReceiverAlgorithms.ChannelEstimationCSIRS"]], "channelestimationsrs (class in toolkit5g.receiveralgorithms)": [[276, "toolkit5G.ReceiverAlgorithms.ChannelEstimationSRS"]], "pdcchscheduler (class in toolkit5g.scheduler)": [[278, "toolkit5G.Scheduler.PDCCHScheduler"]], "roundrobinscheduler (class in toolkit5g.scheduler)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler"]], "firstacrosstime (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.firstAcrossTime"]], "numrb (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numRB"]], "numsymbol (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numSymbol"]], "numuescheduledacrossfreq (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numUEscheduledAcrossFreq"]], "numuescheduledacrosstime (toolkit5g.scheduler.roundrobinscheduler property)": [[279, "toolkit5G.Scheduler.RoundRobinScheduler.numUEscheduledAcrossTime"]], "linkadaptation (class in toolkit5g.scheduler)": [[280, "toolkit5G.Scheduler.LinkAdaptation"]], "selectmcs() (toolkit5g.scheduler.linkadaptation method)": [[280, "toolkit5G.Scheduler.LinkAdaptation.selectMCS"]], "rankadaptation (class in toolkit5g.scheduler)": [[281, "toolkit5G.Scheduler.RankAdaptation"]]}}) \ No newline at end of file diff --git a/test_GettingStarted.html b/test_GettingStarted.html index 452d9db2..3d85cc86 100644 --- a/test_GettingStarted.html +++ b/test_GettingStarted.html @@ -1750,7 +1750,57 @@ -
  • Channel Interpolation based on SRCNN and DnCNN
  • +
  • Artificial Intelligence and Machine Learning (AI-ML) for CSI Compression and Reconstruction in 5G Networks +
  • Comparative Study of Reed Muller codes, Polar Codes and LDPC codes
  • Channel Quality Estimation in 5G and Beyond Networks
  • Hybrid Automatic repeat Request in 5G and Beyond