updatequeue-bakup.m
来自「ofdm系统当中的接纳控制技术 程序当中有三种接纳控制算法的对比 都是基于ofd」· M 代码 · 共 49 行
M
49 行
function [TotalPacketNum,QueueLength,QueueEnd,FrameIntervalTimer,PacketIntervalTimer,PacketNumInCurrentFrame] = ...UpdateQueue(ATTotalPacketNum,ATPacketNumInCurrentFrame,ATFrameIntervalTimer,ATPacketIntervalTimer,ATTrafficType,Slot,SlotTime,N,ATDataArriveRate,ATQueueLength,End,ATActive)global ATQueue;QueueLength = ATQueueLength;QueueEnd = End;FrameIntervalTimer = ATFrameIntervalTimer;PacketIntervalTimer = ATPacketIntervalTimer;PacketNumInCurrentFrame = ATPacketNumInCurrentFrame;TotalPacketNum = ATTotalPacketNum;MaxArrayLength = 5000;queueIndex = mod(Slot-1,MaxArrayLength)+1;for a = 1:N if ATActive(1,a) == 1 if ATTrafficType(a) == 4 %video traffic,不同业务产生packet方式不一样 if FrameIntervalTimer(a) > 0 %当前frame还没有结束 FrameIntervalTimer(a) = FrameIntervalTimer(a) - 1; if PacketNumInCurrentFrame(a) < 8 % 当前frame还需要产生packet if PacketIntervalTimer(a) == 0 %generate a new packet and set the next packet arrival interval ATQueue(queueIndex,a) = floor(8*pareto(1.2,20,125)); QueueLength(a) = QueueLength(a) + ATQueue(queueIndex,a); QueueEnd(a) = Slot; PacketIntervalTimer(a) = floor(1e-3 * pareto(1.2,2.5,12.5)/SlotTime); PacketNumInCurrentFrame(a) = PacketNumInCurrentFrame(a) + 1; TotalPacketNum(a) = TotalPacketNum(a) + 1; else PacketIntervalTimer(a) = PacketIntervalTimer(a) - 1; end end else %当前frame结束 FrameIntervalTimer(a) = floor(100 * 1e-3 / SlotTime); PacketNumInCurrentFrame(a) = 1; ATQueue(queueIndex,a) = floor(8*pareto(1.2,20,125)); QueueLength(a) = QueueLength(a) + ATQueue(queueIndex,a); QueueEnd(a) = Slot; PacketIntervalTimer(a) = floor(1e-3 * pareto(1.2,2.5,12.5)/SlotTime); TotalPacketNum(a) = TotalPacketNum(a) + 1; end end if ATTrafficType(a) == 2 NumOfBit = floor(ATDataArriveRate(a) * SlotTime); ATQueue(queueIndex,a) = NumOfBit; QueueLength(a) = ATQueueLength(a) + NumOfBit; End(a) = Slot; end endend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?