{ "cells": [ { "cell_type": "markdown", "id": "e298fec6", "metadata": {}, "source": [ "# Creating temporally and spatially consistent sequences of channel matrices" ] }, { "cell_type": "code", "execution_count": 7, "id": "5f66e9e7", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from neoradium import DeepMimoData, TrjChannel, Carrier, AntennaPanel, random" ] }, { "cell_type": "code", "execution_count": 8, "id": "249b4e11-b76f-4923-96cd-f2630e56136e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "DeepMimoData Properties:\n", " Scenario: asu_campus_3p5\n", " Version: 4.0.0a3\n", " UE Grid: rx_grid\n", " Grid Size: 411 x 321\n", " Base Station: BS (at [166. 104. 22.])\n", " Total Grid Points: 131,931\n", " UE Spacing: [1. 1.]\n", " UE bounds (xyMin, xyMax) [-225.55 -160.17], [184.45 159.83]\n", " UE Height: 1.50\n", " Carrier Frequency: 3.5 GHz\n", " Num. paths (Min, Avg, Max): 0, 6.21, 10\n", " Num. total blockage: 46774\n", " LOS percentage: 19.71%\n", "\n" ] } ], "source": [ "# Replace this with the folder on your computer where you store DeepMIMO scenarios\n", "dataFolder = \"/data/RayTracing/DeepMIMO/Scenarios/V4/\"\n", "DeepMimoData.setScenariosPath(dataFolder)\n", "\n", "# Create a DeepMimoData object\n", "deepMimoData = DeepMimoData(\"asu_campus_3p5\")\n", "deepMimoData.print()" ] }, { "cell_type": "code", "execution_count": 9, "id": "2b1f9c5c-a538-4b29-a955-019c2df856c3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Trajectory Properties:\n", " start (x,y,z): (-164.55, 39.83, 1.50)\n", " No. of points: 201752\n", " curIdx: 0 (0.00%)\n", " curSpeed: [0.85 0.85 0. ]\n", " Total distance: 242.08 meters\n", " Total time: 201.751 seconds\n", " Average Speed: 1.200 mps\n", " Carrier Frequency: 3.5 GHz\n", " Paths (Min, Avg, Max): 1, 8.97, 10\n", " Totally blocked: 0\n", " LOS percentage: 32.84%\n", "\n" ] }, { "data": { "text/plain": [ "(
,\n", " )" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "random.setSeed(123) # Make results reproducible\n", "\n", "# Create the carrier:\n", "carrier = Carrier(startRb=0, numRbs=25, spacing=15) # Carrier with 25 Resource Blocks, 15KHz subcarrier spacing\n", "bwp = carrier.curBwp # The only bandwidth part in the carrier\n", "\n", "# Create a random trajectory at waking speed.\n", "trajectory = deepMimoData.getRandomTrajectory(xyBounds=np.array([[-210, 40], [-120, 100]]), # Traj. bounds\n", " segLen=5, # Num grid points on shortest segment\n", " bwp=bwp, # The bandwidth part\n", " trajLen=200, # Number of grid points on trajectory\n", " speedMps=1.2) # Speed in mps (Walking)\n", "\n", "trajectory.print() # Print the trajectory information\n", "deepMimoData.drawMap(\"LOS-NLOS\", trajectory) # Draw the Map with the trajectory" ] }, { "cell_type": "code", "execution_count": 10, "id": "f681eaeb-557a-4578-87dc-a235b463f294", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "TrjChannel Properties:\n", " carrierFreq: 3.5 GHz\n", " normalizeGains: True\n", " normalizeOutput: True\n", " normalizeDelays: True\n", " xPolPower: 10.00 (db)\n", " filterLen: 16 samples\n", " delayQuantSize: 64\n", " stopBandAtten: 80 db\n", " dopplerShift: 14.015298117569412 Hz\n", " coherenceTime: 0.030191451092315417 Sec.\n", " TX Antenna:\n", " Total Elements: 16\n", " spacing: 0.5𝜆, 0.5𝜆\n", " shape: 2 rows x 4 columns\n", " polarization: x\n", " RX Antenna:\n", " Total Elements: 4\n", " spacing: 0.5𝜆, 0.5𝜆\n", " shape: 1 rows x 2 columns\n", " polarization: x\n", " Orientation (𝛼,𝛃,𝛄): 0° 0° 0°\n", " Trajectory:\n", " start (x,y,z): (-164.55, 39.83, 1.50)\n", " No. of points: 201752\n", " curIdx: 0 (0.00%)\n", " curSpeed: [0.85 0.85 0. ]\n", " Total distance: 242.08 meters\n", " Total time: 201.751 seconds\n", " Average Speed: 1.200 mps\n", " Carrier Frequency: 3.5 GHz\n", " Paths (Min, Avg, Max): 1, 8.97, 10\n", " Totally blocked: 0\n", " LOS percentage: 32.84%\n", "\n" ] } ], "source": [ "# Create a MIMO channel model based on our trajectory.\n", "channel = TrjChannel(bwp, trajectory,\n", " txAntenna = AntennaPanel([2,4], polarization=\"x\"), # 8 TX antenna\n", " txOrientation = [180,0,0], # Facing to the left\n", " rxAntenna = AntennaPanel([1,2], polarization=\"x\")) # 2 RX antenna\n", "print(channel)" ] }, { "cell_type": "code", "execution_count": 11, "id": "464acb0f-5969-4967-b3c1-5947f2ad8f72", "metadata": {}, "outputs": [], "source": [ "# Now create a sequence generator that generates up to 20 sequences with sequences\n", "# of length 10, containing every other slot.\n", "\n", "# Trajectory Points: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...\n", "# Channels in the sequence: 0 1 2 3 4 5 6 7 8 9 0 1 ...\n", "# Sequence Number: 0 0 0 0 0 0 0 0 0 0 1 1 ...\n", "chanSeqGen = channel.getChanSeqGen(seqPeriod=2, seqLen=10, maxNumSeq=20)\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "712c6b11-cb2b-4e28-99d2-1ce842fa5a9f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape of Sequence 0: (10, 14, 300, 4, 16)\n", "Shape of Sequence 1: (10, 14, 300, 4, 16)\n", "Shape of Sequence 2: (10, 14, 300, 4, 16)\n", "Shape of Sequence 3: (10, 14, 300, 4, 16)\n", "Shape of Sequence 4: (10, 14, 300, 4, 16)\n", "Shape of Sequence 5: (10, 14, 300, 4, 16)\n", "Shape of Sequence 6: (10, 14, 300, 4, 16)\n", "Shape of Sequence 7: (10, 14, 300, 4, 16)\n", "Shape of Sequence 8: (10, 14, 300, 4, 16)\n", "Shape of Sequence 9: (10, 14, 300, 4, 16)\n", "Shape of Sequence 10: (10, 14, 300, 4, 16)\n", "Shape of Sequence 11: (10, 14, 300, 4, 16)\n", "Shape of Sequence 12: (10, 14, 300, 4, 16)\n", "Shape of Sequence 13: (10, 14, 300, 4, 16)\n", "Shape of Sequence 14: (10, 14, 300, 4, 16)\n", "Shape of Sequence 15: (10, 14, 300, 4, 16)\n", "Shape of Sequence 16: (10, 14, 300, 4, 16)\n", "Shape of Sequence 17: (10, 14, 300, 4, 16)\n", "Shape of Sequence 18: (10, 14, 300, 4, 16)\n", "Shape of Sequence 19: (10, 14, 300, 4, 16)\n" ] } ], "source": [ "chanSeqGen.reset()\n", "for i, chanSeq in enumerate(chanSeqGen):\n", " print(f\"Shape of Sequence {i}: {chanSeq.shape}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "0963723b-1106-4588-b3f7-88fb41eb1278", "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.9.6" } }, "nbformat": 4, "nbformat_minor": 5 }