• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: CDMA  

资源简介

该代码可以满足基本的CDMA仿真,读者可以根据具体问题进行修改代码

资源截图

代码片段和文件信息

s=zeros(1100);
for M =1:1:100%M工作站数目
    H=0;
    for N=1:100
ChannelBusy = 0;   %信道忙闲标志
Start = 0; %有无数据开始发送标志
Collision = 0;%有无冲突标志
DeferenceTime = 0; %发送期
Throughput = 0;%吞吐量
ArrivalTime = zeros(1M );  %到达时间
PacketLength = zeros(1M) ; %帧长
HasPacket = zeros(1M);%有无缓存标志
CW = zeros(1M);%争用窗口
BackoffTimer = zeros(1M);%回退时间
PacketBuff = zeros(M1501);  %缓存器
CollisionStations = zeros(1M+1);    %冲突站记录
PhyRate = 2*10^6 ;           %物理层数据率
SlotTime = 20*10^(-6);       %时隙间隔
TotalTime = 2000;    %观测总时隙个数
SIFS = 0.5;        %SIFS相当于0.5个时隙
DIFS = 3;        %DIFS相当于2.5个时隙
ACK = 0.5; %ACK 转化成时隙个数
AverageArrivalTime = 11;    %平均到达时间
AveragePacketLength = 5;    %平均帧长


for i = 1:M
    ArrivalTime(i) = ProPossion(AverageArrivalTime); %初始化到达时间  
    PacketLength(i) =ProPossion(AveragePacketLength);%初始化分组长度
    CW(i) = 32; %初始化竞争窗口
    BackoffTimer(i) = 255; %初始化退避时间 255 
end

for t = 1:TotalTime
    for i = 1:M
        if t == ArrivalTime(i)
            %目前不能发送,push分组进PackeBuff,修改退避计数器
                PacketBuff = Push(PacketBuffiPacketLength(i));
                HasPacket(i) = 1;
                if BackoffTimer(i) == 255
                    BackoffTimer(i) = ReSet(CW(i));%退避计数器达到最大255时,重置退避计数器
                end
          %  end
            %更新到达时间和帧长
            ArrivalTime(i) = ProPossion(AverageArrivalTime) + PacketLength(i) + t;
            PacketLength(i) = ProPossion(AveragePacketLength);
        end
    end

    for i = 1:M
        if M~=1
        if HasPacket(i) == 1 && ChannelBusy == 0 %PackeBuff中有数据包发送并且信道空闲
            if BackoffTimer(i) == 0 %退避时间=0 -> 发送
                CollisionStations = Add(CollisionStationsi);%加入冲突站点序列中
                Start = 1;
            else
                BackoffTimer(i) = BackoffTimer(i

评论

共有 条评论