www.gusucode.com > 基于可移动边界动态信道分配策略的TD-SCDMA系统业务进行性能分析 > code4/基于可移动边界动态信道分配策略的TD-SCDMA系统业务进行性能分析/MakovChainSolver.m

    function [PAI] = MakovChainSolver(Z)
%This function is used to solve the markov chain.
%Input z for the transition probability of the chain.
%Output PAI is the probability distribution.
%Size of the input matrix.
[dx,dy] = size(Z);
if (dx~=dy)
    error('The input matrix should be a square matrix!');
end

%Find the minimum element of the matrix on the i,i position
min_ii=Z(1,1);
for i=1:dx
    if (Z(i,i)<min_ii)
        min_ii=Z(i,i);
    end
end

%Difine matrix R
R=eye(dx)+Z/min_ii;

% U is the arbitrary row of matrix R
U=R(1,:);%%

temp=(eye(dx)-R+ones(dx,1)*U)^-1;

% using the equation, get probability distribution PAI
PAI=U*temp;

%语音业务参数
a1=[0,60/3600,120/3600,180/3600,240/3600,300/3600];
a2=[0,60,120,180,240,300];
u1=1/120;
%数据业务参数
b1=[20,40,60,80,100,120];
u2=1/0.0267;
h1=100;%数据业务缓冲区大小
for m=1:6
    a=a1(m);
    for n=1:6
        b=b1(n);
        A0=matrix_A0(a,u1,b);
        A1=b*eye(17);
        A2=u2*eye(17);
        A3=matrix_A3(a,u1,b,u2);
        A4=matrix_A4(u2);
        A5=matrix_A5(a,u1,b,u2);
        A6=matrix_A6(u2);
        A7=matrix_A7(a,u1,b,u2);
        A8=matrix_A8(a,u1,u2);
        Z=cell(h1+1,h1+1);%细胞矩阵
        Z{1,1}=A0;
        Z{1,2}=A1;
        Z{2,1}=A2;
        Z{2,2}=A3;
        Z{3,2}=A4;
        Z{3,3}=A5;
        
        for i=4:1:h1+1%填A1,A6,A7
            Z{i,i-1}=A6;
        end
        for i=2:1:h1
            Z{i,i+1}=A1;
        end
        for i=4:1:h1
            Z{i,i}=A7;
        end
        Z{h1+1,h1+1}=A8;
        
        for i=1:h1+1%为了把空白的地方全填上0
            for j=1:h1+1
                if isempty(Z{i,j})
                    Z{i,j}=zeros(17,17);
                end
            end
        end
        Z1=cell2mat(Z);%将细胞矩阵转化为矩阵
        
        PAI = MakovChainSolver(Z1);%求解稳态概率
        Sum(m,n)=0;
        for i=1:1:(h1+1)*17%验证矩阵是否正确,sum=1正确
            Sum(m,n)=Sum(m,n)+PAI(1,i);
        end
        
        %性能指标
        %语音业务阻塞概率
        sumv=0;
        for i=17:17:(h1+1)*17
            sumv=sumv+PAI(i);
        end
        PLv(m,n)=sumv;
        
        %数据业务阻塞概率
        sumd=0;
        for i=h1*17+1:(h1+1)*17
            sumd=sumd+PAI(i);
        end
        PLd(m,n)=sumd;
        
        %系统总的信道利用率
        av=a/u1;ad=b/u2;
        yita(m,n)=(2*av*(1-sumv)/16+ad*(1-sumd))/3;
        
        %数据包平均等待时间
        %由于服务速率是可变的,借助于吞吐量和平均队长来求
        %数据业务
        k=1;
        for i=1:17:h1*17+1
            result(k)=0;
            for j=0:16
                result(k)=result(k)+PAI(i+j);
            end
            k=k+1;
        end
        Ld=0;
        for i=1:h1+1
            Ld=Ld+(i-1)*result(i);
        end
        %吞吐量
        T1=result(2)*u2;
        T2=sum(PAI(18:26))*2*u2+sum(PAI(27:30))*u2+sum(PAI(31:34))*u2;
        T3=sum(PAI(35:17:(h1+1)*17))*3*u2+sum(PAI(36:17:(h1+1)*17))*2*u2+sum(PAI(37:17:(h1+1)*17))*2*u2+sum(PAI(38:17:(h1+1)*17))*2*u2+sum(PAI(39:17:(h1+1)*17))*2*u2+sum(PAI(40:17:(h1+1)*17))*2*u2+sum(PAI(41:17:(h1+1)*17))*2*u2+sum(PAI(42:17:(h1+1)*17))*2*u2+sum(PAI(43:17:(h1+1)*17))*2*u2+sum(PAI(44:17:(h1+1)*17))*1*u2+sum(PAI(45:17:(h1+1)*17))*1*u2+sum(PAI(46:17:(h1+1)*17))*1*u2+sum(PAI(47:17:(h1+1)*17))*1*u2+sum(PAI(48:17:(h1+1)*17))*u2+sum(PAI(49:17:(h1+1)*17))*u2+sum(PAI(50:17:(h1+1)*17))*u2+sum(PAI(51:17:(h1+1)*17))*u2;
        T=T1+T2+T3;
        Wd(m,n)=Ld/T;
        n=n+1;
    end
    
    m=m+1;
end