• 通信网实验


    D

    G=[0,inf,inf,1.2,9.2,inf,0.5; 
        inf,0,inf,5,inf,3.1,2
        inf,inf,0,inf,inf,4,1.5
        1.2,5,inf,0,6.7,inf,inf
        9.2,inf,inf,6.7,0,15.6,inf
        inf,3.1,4,inf,15.6,0,inf
        0.5,2,1.5,inf,inf,inf,0];
    length_G = length(G);
    d=[inf,inf,inf,inf,inf,inf,inf];
    visited=[0,0,0,0,0,0,0];
    path=[1,2,3,4,5,6,7];%路径矩阵
    s=5;%源点
    visited(s)=1;
    for i=1:length_G
        if G(s,i)~=inf
            d(i)=G(s,i);
        end
    end
    %dijkstra
    for i=1:length_G
        min = inf;
        for j=1:length_G
            if visited(j)==0 && d(j)<min
                min = d(j);
                k = j;
            end
        end
        visited(k)=1;
        for l=1:length_G
            if visited(l)==0 && d(k)+G(k,l) < d(1,l)
                 d(l) = d(k)+G(k,l);
                 path(l)=k;
            end
        end
    end
    
    disp('length');
    disp(d);
    %print routes
    p = zeros(length_G);
    for dest=1:length_G
        tmpd=dest;
        r=1;
        p(dest,r)=tmpd;
        r=r+1;
     %  disp(dest);
        for j=1:length_G       
            if tmpd==path(tmpd)
                break;
            else
                %disp(path(dest));
                p(dest,r)=path(tmpd);
                tmpd=path(tmpd);
                r=r+1;
            end
        end
        p(dest,r)=s;
        r=r+1;
        %disp(s);
    end
    %swap p
    for i=1:length_G
        j=1;
        while p(i,j)~=0
            j = j+1;
        end
        dec=1;
        for g=1:j-1
            tmp = p(i,g);
            p(i,g)=p(i,j-dec);
            p(i,j-dec)=tmp;
            dec = dec+1;
            g=g+1;
            if j-dec <= g
                break;
            end
        end
    end
            
    disp("routes:");
    disp(p);
    
     figure(1);
    %hold off;
    clf;
    axis([1,10,0,5]);
    for k=1:10
       b(1,k)=k;
    end
    
    b(2,:)=rand(1,10)*5;
    for i=1:length_G
        txt=['min(v',num2str(s),',','v1)=',num2str(d(i))];
        text(i,b(2,i)+0.1,txt);     
    end
    hold on;                         
    for i=1:length_G
       idage=p(i,:);
       c=1;
       while c<length_G&&idage(c)~=0&&idage(c+1)~=0
          f=idage(c);
          g=idage(c+1);
          s=[b(1,f),b(1,g)];
          t=[b(2,f),b(2,g)];
          lenx=(b(1,f)+b(1,g))/2;
          leny=(b(2,f)+b(2,g))/2;
          plot(s,t);
          txt = ['(v',num2str(f),',','v',num2str(g),')=',num2str(G(f,g))];
          text(lenx,leny,txt);       
          hold on;
          c=c+1;
       end
    end
    for e=1:length_G
       plot(b(1,e)-0.01,b(2,e),'bd');
    end
    title('D算法')
    %end

    F

    G=[0,inf,inf,1.2,9.2,inf,0.5; 
        inf,0,inf,5,inf,3.1,2
        inf,inf,0,inf,inf,4,1.5
        1.2,5,inf,0,6.7,inf,inf
        9.2,inf,inf,6.7,0,15.6,inf
        inf,3.1,4,inf,15.6,0,inf
        0.5,2,1.5,inf,inf,inf,0];
    length_G = length(G);
    dis=G;%最短距离矩阵dis
    visited=zeros(length_G);
    r=zeros(length_G);%route
    for i=1:length_G%初始化r
        for j=1:length_G
            if(i~=j)
                r(i,j)=j;
            else
                r(i,j)=0;
            end           
        end
    end
    
    for k=1:length_G
       for i=1:length_G
          for j=1:length_G
            if dis(i,k)+dis(k,j) < dis(i,j)
                dis(i,j) = dis(i,k)+dis(k,j);
                r(i,j)=k;
            end
          end
       end
    end
    disp('dis:');
    disp(dis);
    disp('route:');
    disp(r);

    B

    function ErlangB 
    clc;
    pn=[];            
    s=[];
    x=0.1:0.1:100;                                                      %横坐标范围
    m=[4 5 8 10 15 20 25 30 40 50 60 75 90 100];                          %交换机出线容量
    L=length(m);
    for i=1:L
    
        for a=0.1:0.1:100                                                %流入话务量强度               
            for k=0:m(i)
                s=[s,a.^k/factorial(k)];
                add=sum(s);
            end
            pn0=(a.^m(i)/factorial(m(i)))./add;
            pn=[pn,pn0];               %顾客被拒绝的概率
            s=[];           
        end
           
        loglog(x,pn);
        %plot(x,pn);                  %对数坐标
        set(gca,'Xlim',[1 100]);      %限定横坐标的取值范围
        set(gca,'XGrid','on');         %画网格线
        set(gca,'XMinorTick','off');
        set(gca,'XTick',[1 2 4 6 8 10 20 40 60 80 100]);           %x坐标轴刻度设置
        %set(gca,'XMinorGrid','off');   
        
        set(gca,'Ylim',[0.001 1]);      %限定纵坐标的取值范围
        set(gca,'YGrid','on');   
        set(gca,'YMinorTick','off');
        set(gca,'YTick',[0.001 0.002 0.004 0.006 0.008 0.01 0.02 0.04 0.06 0.08 0.1 0.2 0.4 0.6 0.8 1]); 
        %set(gca,'YMinorGrid','off');
       
        hold on
        pn=[];
    
    end
    xlabel('话务量强度α(erl)','fontsize',8);
    ylabel('呼损率Pc','fontsize',8);
    hold off
    
    for i=1:L
        txt = ['m=',int2str(m(i))];
        gtext(txt,'fontsize',10);
    end

    C

    function ErlangC 
    clc;
    pc=[];            
    s=[];                                                    
    m=[4 5 8 10 15 20 25 30 40 50 60 75 90 100];                           %交换机出线容量
    L=length(m);
    
    for i=1:L
        for a=1:100                                                %流入话务量强度    
            if a<=m(i)
                  for k=0:(m(i)-1)           
                      s=[s,a.^k/factorial(k)];
                      add=sum(s);
                  end
                  pc0=a.^m(i)/(a.^m(i)+factorial(m(i))*(1-a/m(i))*add);
                  pc=[pc,pc0];               %呼叫等待概率
                  s=[];   
            end
        end
        x=1:length(pc);              %横坐标范围   
        loglog(x,pc);                  %对数坐标
        set(gca,'XGrid','on');         %画网格线
        set(gca,'XMinorTick','off');
        set(gca,'Xlim',[1 100]);      %限定横坐标的取值范围
        set(gca,'XTick',[1 2 4 6 8 10 20 40 60 80 100]); 
        %set(gca,'XTick',[0.1 0.2 0.5 1 2 5 10 20 50 100]);           %x坐标轴刻度设置
        %set(gca,'XMinorGrid','off');    
        set(gca,'Ylim',[0.001 1]);      %限定纵坐标的取值范围
        set(gca,'YGrid','on');   
        set(gca,'YTick',[0.001 0.002 0.004 0.006 0.008 0.01 0.02 0.04 0.06 0.08 0.1 0.2 0.4 0.6 0.8 1]); 
        %set(gca,'YMinorTick','off');
        hold on
        pc=[];
    end
    xlabel('话务量强度α(erl)','fontsize',8);
    ylabel('呼叫等待概率Pw','fontsize',8);
    
    for i=1:L
        txt = ['m=',int2str(m(i))];
        gtext(txt,'fontsize',10);
    end

     G L

    t=2005:0.01:2020;
    g_=120./(1+2.861.*exp(-0.341*(t-2004)));
    l_ = 120*exp(-1.554*exp(-0.275*(t-2004)));
    avg = (g_+l_)/2;
    xlabel('年份');
    ylabel('部/百人');
    set(gca,'xTick',[2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020]); 
    hold on;
    plot(t,g_);
    plot(t,l_,'-.');
    plot(t,avg,'--');
    gtext('Gompertz','fontsize',10);
    gtext('Logistic','fontsize',10);
    gtext('Average','fontsize',10);
    legend('Gompertz模型预测的移动电话普及率','Logistic模型预测的移动电话普及率','平均法预测的移动电话普及率');
    %title('2015~2020年移动电话普及率');
    title('2005~2020年移动电话普及率及率预测曲线');
  • 相关阅读:
    第六次实验报告
    第三次实验报告
    第五张循环语句总结
    第二次实验报告
    第一次实验报告
    第一次作业
    第九章 结构体与共用体
    第八章 指针实验
    第七章数组实验
    第六章实验报告(2)
  • 原文地址:https://www.cnblogs.com/2020R/p/14029787.html
Copyright © 2020-2023  润新知