![MONSTeR](https://raw.githubusercontent.com/Sonohi/monster/master/monster.png)
# Introduction
MONSTeR (MObile Networks SimulaToR) is a framework built around the LTE system toolbox available in MATLAB.
It uses functions from the toolbox to perform complete DL and UL processing of the main data channel.
It also simulates a multi-UE and multi-eNodeB scenario.
Contributors are welcome and encouraged!
We have an always-growing number of feature requests, so feel free to pick or just go ahead with your own, following the style and philosophy of the existing modules.
# Environment requirements
MATLAB and included [LTE system toolbox](https://se.mathworks.com/products/lte-system.html).
Tested versions of MATLAB are:
* 2017b
* 2018a
* 2019a
# Getting started
When starting off with the project, it's important to navigate to the correct project folder in MATLAB and add the project folder and its sub folders to the path.
This can also be achieved by running the `install.m` script at the root of the project.
The project changelog is available in the `CHANGELOG.md` file at the root of the project.
It is based on the project [Keep a changelog](https://github.com/olivierlacan/keep-a-changelog) and follows [Semantic versioning](https://semver.org/).
# Overall logic and organisation
MONSTeR relies heavily on the usage of classes in MATLAB.
These are fairly similar to those one would typically find in other object-oriented frameworks in other languages.
The project `main.m` file is the one that starts off a simulation process.
It creates an instance of the overall system configuration from the class `MonsterConfig` and a simulation logger from the `Logger` class.
Such objects can then be passed as parameters to the constructor of the main simulation object, that is an instance of the class `Monster`.
The instance of the `Monster` class created is used in the main simulation loop, which has a granularity of 2 LTE resource blocks, e.g. one scheduling round.
For each round of the simulation, 4 top methods are called to execute a simulation step.
These are:
1. `setupRound` sets values for the current simulation round, such as scheduling round, time elapsed, etc.
2. `run` executes the core of the simulation round, calling the private methods of the class to perform the following:
* `moveUsers` updates the position of the UEs in the scenario, based on the mobility pattern assigned (from the `Mobility` class).
* `associateUsers` evaluates periodically the UE-eNodeB associations to potentially performs re-attachments or initiate handovers.
* `updateUsersQueues` based on the traffic generation selected in the class `TrafficGenerator`, it updates the transmission queues for the UEs.
* `schedule` performs the (multi) user scheduling for the downlink. Various scheduling policies/algorithms can be supported, provided the interfaces are respected.
The current implementation supports a _weighted round robin_.
* `setupEnbTransmitters` takes the scheduling decisions performed at the eNodeB to run the relevant processing for Transport Blocks, Codewords and waveforms for the downlink in the class `enbTransmitterModule`.
* `downlinkTraverse` performs the downlink traversal with the waveforms generated through an instance of the `MonsterChannel` class.
* `downlinkUeReception` handles the reception of the waveforms at the UE side and processes results for lower-layer performance metrics, in case the demodulation of the received waveform is successful. This is handled by the `ueReceiverModule`.
* `downlinkUeDataDecoding` uses the processing of the previous step to attempt the decoding of the codeword received. In case enabled, this is also the point where retransmission conditions are evaluated from the classes `HarqRx` and `ArqRx`.
* `setupUeTransmitters` based on the feedback the UE needs to send in the UL, the UE transmitters (from the class `ueTransmitterModule`) are setup to construct the relevant waveform that can contain CQI and/or retransmission feedback values.
* `uplinkTraverse` performs the traversal in uplink of the `MonsterChannel` instance for the UE-generated waveforms.
* `uplinkEnbReception` performs similarly to its downlink counterpart in demodulating and decoding the received waveforms at the eNodeb. If retransmissions are enabled, the content is also used to process relevant steps for the `HarqTx` and `ArqTx` instances at the eNodeB.
3. `collectResults` processes and records all the results for the simulation round using an instance of the `MetricRecorder` class.
4. `clean` performs the relevant resets and cleanup of the variables used in the round and prepares the various object instances for the next round. Relevant variable values that should be used for a time evolution of the simulation nodes are not reset at this stage.
The simulation is then completed for the number of rounds configured and the results are made available as part of the `Monster` object created in the attribute `Results`.
# Common terminology
Some confusion might arise when implementing a model of a mobile networks in relation to what is actually meant with e.g. a cell or the likes.
MONSTeR strives to keep a simple set of definitions of the models to reduce the chances of confusion.
Thus some key concepts are specified here in relation to their usage in the project for class names, variable names, etc.
1. **eNodeB** an eNodeB is considered as a logical entity that terminates the air interface in the Radio Access Network.
In MONSTeR an eNodeB is modelled with the `EvolvedNodeB` class.
This class further requires instances of the `enbTransmitterModule`, `enbReceiverModule` and `AntennaArray` classes to complete the transmission chain.
2. **cell** in MONSTeR the concept of a cell is modelled and implemented with the `EvolvedNodeB` class mentioned above.
Broadly speaking then, the term *cell* and *eNodeB* can be used somewhat interchangeably in the context of the framework.
3. **site** a site is a collective term for one or more cells. In MONSTeR this is implemented by the `Site` class.
# Performance metrics
The framework uses a class for taking care of recording performance metrics from the simulations.
The details of this class can be found in `/results/MetricRecorder.m`.
The key concepts are that one defines a class property for each of the metrics that are deemed interesting to record throughout the simulations (e.g. *powerConsumed* for the power consumed by an eNodeB).
In additions to this, one has also to define a method with which such metric is recorded.
See for example the method *recordPower* that takes care of recording the power consumed by the eNodeB.
Finally, a metric is typically a UE-side metric or an eNodeB-side metric.
To ease the code and make it more scalable, there are 2 wrapper methods that are the only ones called from the main simulation loop.
These are `recordEnbMetrics` and `recordUeMetrics`. When a new metric is added, the metric-recording method should be called from inside one of these 2 directly.
As regards the structure of the data produced, they are normally recorded once per scheduling round, thus rows represent the time evolution of the metric in the simulation. Columns on the other hand. represent either the number of UEs, or those of the eNodeBs, depending on the metric.
# Scenarios
The number of parameters available in an instance of `MonsterConfig` is large.
For most users, only a fraction of these parameters will ever be relevant, while some others will become more interesting to modify while developing.
The recommended approach is to create a new subfolder in `scenarios/`, where the relevant setup of the scenario configuration can be carried out by changing only the relevant parameters.
For example in `scenarios/maritime/` an example is provided in `maritimeSweep.m` that substitutes the `main.m` script of the default simulation.
In it, it's possible to notice that, once an instance of `MonsterConfig` is initialised, some of
没有合适的资源?快使用搜索试试~ 我知道了~
MONSTeR是基于Matlab中提供的LTE系统工具箱构建的框架(95分以上课程大作业).zip
共202个文件
m:110个
mat:36个
png:24个
需积分: 3 0 下载量 79 浏览量
2024-03-09
14:59:02
上传
评论
收藏 10.08MB ZIP 举报
温馨提示
matlab算法,工具源码,适合毕业设计、课程设计作业,所有源码均经过严格测试,可以直接运行,可以放心下载使用。 Matlab(Matrix Laboratory)是一种专为数值计算和科学与工程应用而设计的高级编程语言和环境。在算法开发和实现方面,Matlab具有以下一些好处: 1. 丰富的数学和科学函数库:Matlab提供了广泛的数学、信号处理、图像处理、优化、统计等领域的函数库,这些函数库可以帮助开发者快速实现各种复杂的数值计算算法。这些函数库提供了许多常用的算法和工具,可以大大简化算法开发的过程。 2. 易于学习和使用:Matlab具有简单易用的语法和直观的编程环境,使得算法开发者可以更快速地实现和测试他们的算法。Matlab的语法与数学表达式和矩阵操作非常相似,这使得算法的表达更加简洁、清晰。 3. 快速原型开发:Matlab提供了一个交互式的开发环境,可以快速进行算法的原型开发和测试。开发者可以实时查看和修改变量、绘制图形、调试代码等,从而加快了算法的迭代和优化过程。这种快速原型开发的特性使得算法开发者可以更快地验证和修改他们的想法。 4. 可视化和绘图功能:Matlab具有强大的可视化和绘图功能,可以帮助开发者直观地展示和分析算法的结果。开发者可以使用Matlab绘制各种图形、曲线、图像,以及创建动画和交互式界面,从而更好地理解和传达算法的工作原理和效果。 5. 并行计算和加速:Matlab提供了并行计算和加速工具,如并行计算工具箱和GPU计算功能。这些工具可以帮助开发者利用多核处理器和图形处理器(GPU)来加速算法的计算过程,提高算法的性能和效率
资源推荐
资源详情
资源评论
收起资源包目录
MONSTeR是基于Matlab中提供的LTE系统工具箱构建的框架(95分以上课程大作业).zip (202个子文件)
_empty_ 0B
videoStreaming.csv 5.05MB
webBrowsing.csv 526KB
fullBuffer.csv 86KB
RadiationPattern850MHz.csv 2KB
RadiationPattern1800MHz.csv 2KB
RadiationPattern2600MHz.csv 2KB
RadiationPattern2100MHz.csv 2KB
RadiationPattern2400MHz.csv 2KB
.editorconfig 85B
channelSweep.fig 24KB
.gitignore 183B
.gitignore 6B
.gitignore 6B
bunnyDump.info 1KB
results_plot.ipynb 2KB
results_plot-checkpoint.ipynb 72B
Licence 1KB
Monster3GPP38901.m 31KB
Mobility.m 26KB
cprintf.m 24KB
EvolvedNodeB.m 17KB
MonsterChannel.m 16KB
NetworkLayout.m 16KB
ueReceiverModule.m 15KB
Scheduler.m 14KB
Monster.m 13KB
ChannelAPITest.m 13KB
enbReceiverModule.m 10KB
UserEquipment.m 9KB
MonsterConfig.m 9KB
enbTransmitterModule.m 9KB
ueTransmitterModule.m 9KB
HarqTx.m 8KB
basicScenarioTest.m 8KB
AntennaArray.m 8KB
MetricRecorder.m 8KB
loadGeoTerrain.m 7KB
performAntennaSweep.m 7KB
hRSMeasurements.m 7KB
refMeasurements.m 7KB
backhaulTests.m 6KB
loss3gpp38901.m 6KB
simulationTest.m 5KB
MonsterLog.m 5KB
TrafficGenerator.m 5KB
processUeResults.m 5KB
ueTransmitterModuleTest.m 5KB
ueReceiverModuleTest.m 4KB
applyBackhaulDelay.m 4KB
ArqTx.m 4KB
batchSimulation.m 4KB
handleHangover.m 4KB
enbTransmitterModuleTest.m 3KB
ueBatchSimulation.m 3KB
enbReceiverModuleTest.m 3KB
UESummaryPlot.m 3KB
setupNetworkLayout.m 3KB
ITU-R_M2412-0_5BC.m 3KB
importPattern.m 3KB
schedulerTest.m 3KB
AntennaElement.m 3KB
ASMrun.m 3KB
MetricRecorderTest.m 3KB
plotLogicLayout.m 3KB
HarqRx.m 3KB
ArqRx.m 3KB
SINRBLER.m 3KB
ENBsummaryPlot.m 3KB
mimoTest.m 3KB
loadVideoStreamingTraffic.m 3KB
getElevationProfile.m 3KB
maritimeSweep.m 2KB
setupTraffic.m 2KB
otaTransmit.m 2KB
ITU-R_M2412-0_5BB.m 2KB
generateSweepParameters.m 2KB
processResults.m 2KB
VivaldiAntenna.m 2KB
ThreeGPP_TR_38901_UMa.m 2KB
plotAssociationTable.m 2KB
loadFullBufferTraffic.m 2KB
ITU-R_M2412-0_5BA.m 2KB
loadWebBrowsingTraffic.m 2KB
losProb3gpp38901.m 2KB
plotLinks.m 2KB
ueThroughputExample.m 1KB
install.m 1KB
createPHYplot.m 1KB
plotConstDiagramDL.m 1KB
main.m 1KB
MacroCell.m 1KB
Site.m 1KB
createLayoutPlot.m 1KB
plotSpectrums.m 1KB
generateManhattanGrid.m 1KB
refreshUsersAssociation.m 1KB
buildingloss3gpp38901.m 1KB
loadConfig.m 1KB
updateTrQueue.m 1KB
共 202 条
- 1
- 2
- 3
资源评论
若明天不见
- 粉丝: 1w+
- 资源: 272
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 计组 8.1 cpu.docx
- 基于.NET平台的IFoxCAD Cad二次开发设计源码
- 计组 7.2 指令系统.docx
- 计组 5.5 浮点加减运算 7.1 指令系统.docx
- 计组 5.4 定点乘法运算.docx
- 基于嵌入式应用的C语言常用代码模块库设计源码
- 计组一二章习题.docx
- 计组 5.1 定点数据表示.docx
- 计组存储器习题 1.docx
- 基于CSS、Java、JavaScript、HTML的2022年Internet Cafe MVC设计源码
- 基于Vue框架的智能粮食检测仓移动端H5设计源码
- 基于Python与Shell语言优化的yolo改进与陆小马公众号设计源码
- OpenWrt软件编译构建系统详解及自定义模块构建实践
- 考到 3.7 死锁的检测与解除.docx
- 基于Java语言的江山市房产信息网站设计源码
- os 存储器管理.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功