✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
1引言
OFDMA系统能够允许多个用户同时传输每个OFDM符号的不同子载波。由于概率,所有用户在特定子载波中经历深度衰落非常低,可以确保子载波被分配给那些收益很好的用户。分配子载波问题已经成为OFDMA系统中的重要环节。为了最大限度地提高总容量,每个副载波应尽可能分配给用户获得利益。
2 OFDMA系统资源分配原则
为了充分的利用系统里的各种资源,就必须采用联合的分配算法。基于不同的优化目的,OFDMA系统的资源分配策略可以分为以下几类:吞吐量最大化原则、OFDMA系统的资源分配发送功率最小化原则和公平性原则。
(1)吞吐量最大化原则吞吐量最大化原则 在给定发射功率和传输质量即误码率的约束下,使系统中所有用户、所有子信道上的数据速率之和最大。通常采用注水算法以及在其基础上增强的自适应算法。
(2)发送功率最小化原则 发送功率最小化原则就是在给定传输速率和传输质量即误码率的约束下,使系统中所有用户、所有子信道上的发射功率之和最小。
(3)公平性准则 基于公平性准则的分配算法就是在给定发射功率和传输质量即误码率的约束下,使系统中每个用户获得最公平的数据速率。具体如何定义公平性,现在没有一个统一的概念,但比较完备的公平性准则应该至少包括用户的速率要求和时延要求。OFDMA系统作为一个多用户的系统,应该为每位用户保证其资源分配的公平性,如果单纯考虑提高系统的吞吐量的话,会导致低性能的用户有可能一直分配不到资源,影响到该用户的通信。为了增加用户公平性,会以牺牲吞吐量为代价,所以权衡吞吐量和公平性的算法才是好的分配算法。
3子载波分配方案
在基站发射机上,K个用户的位被分配给N个子载波,用户k(1≤k≤K)的n(1≤n≤N)个子载波被分配一个功率p。假设那些子载波不被不同的用户共享。然后,将每一个用户的比特调制成M级的QAM符号,随后使用IFFT组合成为OFDMA符号,通过它传输一个缓慢时变的频率选择性瑞利通道,使得子载波分配通过控制通道向所有用户传递,因此每个用户仅需要对其分配的子载波上的比特进行解码。假设每个用户经历独立的衰落并且表示用户k在子载波n中的信道增益,假设每个用户能够完美地估计频道,然后将这些通道估计值用作输入资源分配算法。
子载波分配允许每个确定的用户轮流为它选择最佳副载波,具有最小比例容量的用户容易优先选择他最好的副载波。
📣 部分代码
<span style="color:#333333"><span style="background-color:#fafafa"><code></code><code>% This program is free software; you can redistribute it <span style="color:#ca7d37">and</span>/<span style="color:#ca7d37">or</span></code><code>% modify it under the terms of the GNU General Public License</code><code>% as published by the Free Software Foundation; either version <span style="color:#0e9ce5">2</span></code><code>% of the License, <span style="color:#ca7d37">or</span> (at your option) any later version.</code><code>% </code><code>% This program is distributed in the hope that it will be useful,</code><code>% but WITHOUT ANY WARRANTY; without even the implied warranty of</code><code>% MERCHANTABILITY <span style="color:#ca7d37">or</span> FITNESS FOR A PARTICULAR PURPOSE. See the</code><code>% GNU General Public License <span style="color:#ca7d37">for</span> more details.</code><code>% </code><code>% You should have received a copy of the GNU General Public License</code><code>% along with this program; <span style="color:#ca7d37">if</span> <span style="color:#ca7d37">not</span>, <span style="color:#ca7d37">write</span> to the Free Software</code><code>% Foundation, Inc., <span style="color:#0e9ce5">59</span> Temple Place - Suite <span style="color:#0e9ce5">330</span>, Boston, MA <span style="color:#0e9ce5">02111</span>-<span style="color:#0e9ce5">1307</span>, USA.</code><code>% </code><code>% You may reach the author at wongic@mail.utexas.edu.</code><code>% Or visit his website at www.ece.utexas.edu/~iwong</code><code></code><code>function [capacity] = waterfilling(Ptot,eigenVec)</code><code>eigenVec=eigenVec+<span style="color:#0e9ce5">1</span>e-<span style="color:#0e9ce5">10</span>;</code><code>eigenVec=eigenVec(:);</code><code>sortedEigVec=<span style="color:#ca7d37">sort</span>(eigenVec);</code><code></code><code>EigVecTemp=sortedEigVec;</code><code></code><code></code><code>single = <span style="color:#0e9ce5">0</span>;</code><code><span style="color:#ca7d37">while</span> sum((EigVecTemp-EigVecTemp(<span style="color:#0e9ce5">1</span>)*ones(<span style="color:#ca7d37">length</span>(EigVecTemp),<span style="color:#0e9ce5">1</span>))./(EigVecTemp*EigVecTemp(<span style="color:#0e9ce5">1</span>)))>Ptot</code><code> EigVecTemp=EigVecTemp(<span style="color:#0e9ce5">2</span>:<span style="color:#ca7d37">length</span>(EigVecTemp));</code><code> <span style="color:#ca7d37">if</span> <span style="color:#ca7d37">length</span>(EigVecTemp) < <span style="color:#0e9ce5">2</span>,</code><code> single = <span style="color:#0e9ce5">1</span>;</code><code> <span style="color:#ca7d37">break</span>;</code><code> end; </code><code>end;</code><code><span style="color:#ca7d37">if</span> single == <span style="color:#0e9ce5">1</span>,</code><code> capacity = log2(Ptot*EigVecTemp);</code><code><span style="color:#ca7d37">else</span>,</code><code> P1=(Ptot-sum((EigVecTemp-EigVecTemp(<span style="color:#0e9ce5">1</span>)*ones(<span style="color:#ca7d37">length</span>(EigVecTemp),<span style="color:#0e9ce5">1</span>))./(EigVecTemp*EigVecTemp(<span style="color:#0e9ce5">1</span>))))/<span style="color:#ca7d37">length</span>(EigVecTemp);</code><code> mu=P1+<span style="color:#0e9ce5">1</span>/EigVecTemp(<span style="color:#0e9ce5">1</span>);</code><code> capacity=sum(log2(mu*EigVecTemp));</code><code>end;</code><code></code></span></span>
⛳️ 运行结果
🔗 参考文献
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类