Creating Random CDL Channels for a Dataset

[1]:
import numpy as np
import scipy.io
import time

from neoradium import BandwidthPart, CdlChannel, AntennaPanel, random

Create 1000 MIMO CDL Channels

[2]:
# First, create a bandwidth part object with 24 PRBs and 15 kHz subcarrier spacing
bwp = BandwidthPart(numRbs=24, spacing=15)

# Now create the channel generator
chanGen = CdlChannel.getChanGen(1000, bwp,                  # Number of channels and bandwidth part
                                profiles="ABCDE",           # Randomly pick a CDL profile
                                delaySpread=(10,500),       # Uniformly sample between 10 and 500 ns
                                ueSpeed=(5,20),             # Uniformly sample between 5 and 20 mps
                                ueDir=[45, 135, 225, 315],  # Randomly pick one of these UE directions
                                carrierFreq=4e9,            # Carrier frequency
                                txAntenna=AntennaPanel([2,4], polarization="x"),  # 16 TX antennas
                                rxAntenna=AntennaPanel([1,2], polarization="x"),  # 4 RX antennas
                                seed=123)

# Generate the channel matrices
allChannels = np.stack([chan for chan in chanGen])
print(f"shape of 'allChannels': {allChannels.shape}")
shape of 'allChannels': (1000, 14, 288, 4, 16)
[ ]: