⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdma_blocking.asv

📁 无线多址技术SDMA的MATLAB仿真及其相关知识讲解!!!!
💻 ASV
字号:
text_num=100000;%%%%the text num。
channelnum1=5;  %%%the num  of   channel
block_num=0;%%%用the num which is blocking
p1=0;    %%%to catch the probability of the blocking instance
ps=0.6;  %%%the probability of successful spatial allocation
%%%%%%%%%%%%%%%%Fd Blocking probability%%%%%%%%%%%%%%%
  for A=1:9;          %%%%%%%%%%%这里我们做个近似,因为MATLAB不识别以p(0)这样的数,所以这里我们从1开始取
     lambda1=40;   
       lambda2=A/ lambda1;  %%%%%%%%%A是话务量, lambda1是一个用户服务时间,lambda2是单位时间接入次数
       ichnum=1;           %%%%%%%%%主信道附1,次信道为0,这也符合事实。
       qchnum=0;
       block_num=0;        %%%%%%记录发生阻塞的次数
       n=0;
    for i=2:text_num;      %%%%%%循环text_num次
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  

         if ichnum<=channelnum1;     %%%%%%%%%%如果主信道未满,继续判断!!
        comeint(i)=exprnd(1/lambda2);
        sevint(i)=exprnd(lambda1);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
    %%%%%%%%%%程序的核心算法:在一个用户到来的时间间隔内,判断系统中的用户是否有服务完离开的情况,即用下面的循环实现。
    %%%%%%%%5%比较系统系统中每个用户的服务时间和下一个用户到来的时间,系统中所以用户的服务时间均超过下个用户到来间隔
    %%%%%%%%%%则系统人数加1,但是要加给主信道还是副信道还要通过Ps的值来判决。如果有任一用户服务时间小于时间间隔。则
    %%%%%%%%%%系统人数减1;
        for j=i:(-1):(i-ichnum-qchnum);%%%%%%%%%%这个循环即用来实现判断系统增减人数的情况。
         ltime(j)=sevint(j)-comeint(i); 
         sevint(j)=ltime(j);
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%
   if  ltime(j)<=0;               %%%%%%%%%%%这种情况即有任一用户服务时间小于时间间隔
           if ichnum>qchnum       %%%%%%%%%%如主信道人数多,则主信道减一,因为系统中副信道人数大于主信道的情况不存在
           ichnum=ichnum-1;       
           else if ichnum==qchnum
               qchnum=qchnum-1;
                  end
           end
         end 
                if qchnum<0;      %%%%%%%%%%%%主副信道人数恒正
                  qchnum=0;             
                  if ichnum<0;
                  ichnum=0;
         end   
                end
        end
     
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       if  all(ltime(j))>0;     %%%%%%%%%%%%统中所以用户的服务时间均超过下个用户到来间隔
                                  %%%%%%%%%%则系统人数加1
              temp=rand; 
           if ichnum>qchnum && temp<ps                      
                  qchnum=qchnum+1;
           else    ichnum=ichnum+1;
            end
        end  
        end;
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
        
        if(ichnum==channelnum1 && qchnum==channelnum1)%%%%%%%%%如果主副信道人数都达到系统容量,就
           block_num=block_num+1;
            ichnum=1;
           qchnum=0;  
    
      else   if  ichnum>channelnum1;  
            block_num=block_num+1;
          ichnum=1;
          qchnum=0;
      
          end
    end
           end 
p1(A)=block_num/text_num
  end
%%%%%%%%%%%%%%%%DL Blocking probability%%%%%%%%%%%%%%%
 for A=1:9;

     channelnum2=10;  %%%the num  of   channel
       lambda2=A/ lambda1;
       ichnum=1;
       qchnum=0;
       block_num=0;
       n=0;
    for i=2:text_num; 
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
     
         if ichnum<=channelnum2;     
        comeint(i)=exprnd(1/lambda2);
        sevint(i)=exprnd(lambda1);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
        for j=i:(-1):(i-ichnum-qchnum);
         ltime(j)=sevint(j)-comeint(i); 
         sevint(j)=ltime(j);
     %%%%%%%%%%%%%%%%%%%%%%%%%%%%
   if  ltime(j)<=0;
           ichnum=ichnum-1;       
                
                  if ichnum<0;
                  ichnum=0;
         end   
                end
        end
     
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       if  all(ltime(j))>0;
                          
               
         ichnum=ichnum+1;
            end
        end  
        
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%555555
     
    
      if  ichnum>channelnum2;  
            block_num=block_num+1;
          ichnum=1;
          qchnum=0;
      
          end

           end 
p2(A)=block_num/text_num
  end
   %%%%%%%%%%%%理论值计算 
 for A=1:9;    
      a1=0;
      s1=5;
for n=0:s1
    
  a1=a1+(A)^n/factorial(n);
 end
c1=1/a1;
  p=c1*((A)^s1)/factorial(s1);
d1(A)=p
 end
 for A=1:9;    
      a2=0;
      s2=10;
for n=0:s2
    
  a2=a2+(A)^n/factorial(n);
 end
c2=1/a2;
  p=c2*((A)^s2)/factorial(s2);
d2(A)=p
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55555
SNRindB=0:8;
semilogy(SNRindB,p2,'o');
hold
semilogy(SNRindB,p1,'*');
semilogy(SNRindB,d1,'-');
semilogy(SNRindB,d2,'b');
xlabel('traffic');
ylabel('blocking probability');
title('blocking probability of FD ,DL and the Theoretical(ps=0.6,n=1000000)');
legend( 'Fd','DL','Erlang-B(5ch)','Erlang-B(10ch)');

        
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -