基于MATLAB的LTEA载波聚合算法仿真

目录

一、理论基础

二、案例背景

1.问题描述

2.思路流程

三、部分MATLAB仿真

四、仿真结论分析

五、参考文献


一、理论基础

       在非连续载波聚合( 高频+低频) 场景下,载波衰减特性不同,聚合的载波有不同的覆盖范围,使得不同用户可调度的载波数量不同,若使用传统比例公平( PF) 算法会导致小区不同位置用户资源配置的不公平性。

       提出了一种分组权重 PF 调度算法( GWPF) ,根据用户可调度的载波数量,将用户和载波分组,并引入加权因子对原比例公平算法进行加权处理,从而提高用户公平性。
GWPF 调度算法的核心思想是先根据用户可调度的载波数量,将用户和载波分组,并引入加权因子对原比例公平算法进行加权处理,从而提高用户公平性。

扫描二维码关注公众号,回复: 14503109 查看本文章

 

二、案例背景

1.问题描述

       现阶段,无线通信技术发展迅速,移动用户数量逐年增加,用户对通信业务中的带宽和速率的要求也越来越高,新的多媒体业务和传统的语音业务比较发展更为迅速。上世纪,蜂窝网的概念首次被提出,然后提出了第一代移动通信系统AMPS,第一代移动电话系统又称为l G系统,主要采用的技术是模拟调制,提供的业务主要是语音服务,因而第一代通信系统的标准常被称为模拟标准。由于模拟系统有很多的不足之处,例如存在频率利用率低、容量不足、不能支持速率变化的数据业务和安全性差等问题,在这种情况下第二的移动通信系统(2G)出现,与第一代系统相比,最突出的变化就是数字化,二代系统采用的标准是GSM(Global System for Mobile Communications),能够提供语音电话业务,并可以实现网络覆盖的国家之间的漫游功能,增加了短信等文本业务。基于2G的演进系统是2.5G,这个系统的增强之处是在语音业务基础上加入分组交换业务,2.5G系统的是2G到3G的一个过渡系统。

2.思路流程

       使用 Matlab 系统级仿真,来评估 GWPF 调度算法在 LTEA 非连续载波聚合场景下的性能。首先给出相应的仿真参数配置及性能评估指标,最后给出仿真结果和相应的分析。

三、部分MATLAB仿真

顶层程序如下:

clc;
clear;
close all;
warning off;
rng('default');

Nums = [4:30];
f1   = 860;
f2   = 2300;
f3   = 3400;
B    = 20;
Twind= 100;
Tmax = 2;
dist = 500;
v    = 3;
power= 40;
%边缘用户和中心用户的比例因子
ker  = 0.2;


for i = 1:length(Nums)
    i
    PF_times = 100;%m为调度次数
    G        = Nums(i);%为UE个数
    CC       = 3; %个数
    T        = Twind;
    Rbs      = zeros(G,CC,PF_times);   %矩阵s为每次调度RB所分配的UE
    Rates    = zeros(G,G);            %整个调度过程每个UE所获得的速率
    Avg_rate = ones(1,G,PF_times+1);  %每个UE所获得的平均速率
    Rand_rate= [];
    Sum_rate = [];

    %根据用户在CC上的路径损耗进行分组
    %我们建设CC坐标为,用户坐标随时产生
    XY1      = [100,200];
    XY2      = [300,100];
    XY3      = [200,400];
    XY       = 1000*rand(2,G);
    SET      = [];
    %定义权重因子
    L        = CC;
    for j=1:G
        dist1 = sqrt((XY(1,j)-XY1(1))^2 + (XY(2,j)-XY1(2))^2); 
        dist2 = sqrt((XY(1,j)-XY2(1))^2 + (XY(2,j)-XY2(2))^2);
        dist3 = sqrt((XY(1,j)-XY3(1))^2 + (XY(2,j)-XY3(2))^2);
        dist  = [dist1,dist2,dist3];
        %不同载波频率衰减不一样
        PL1(j)   = 58.83+37.6*log(10*dist1/1e3) + 21*log(10*f1);
        PL2(j)   = 58.83+37.6*log(10*dist2/1e3) + 21*log(10*f2);
        PL3(j)   = 58.83+37.6*log(10*dist3/1e3) + 21*log(10*f3);
        [V,I]    = min([PL1(j),PL2(j),PL3(j)]);
        SET(j)   = I;%分组号
        Wk(j)    = L/G*dist(I)/Avg_rate(1,j,end);
        distt(j) = min(dist);
    end
    Wk = Wk/max(Wk);
    %距离较大的定义为郊区
    [VV,II] = sort(distt);
    Ijiq    = II(round((1-ker)*G):G);
    Izx     = II(1:round((1-ker)*G)-1);
    
    for n=1:PF_times;  %调度次数
        rng(n);
        %初始化alpha
        alpha            = zeros(1,G);%侵略因子
        %生成随机速率信息
        Rand_rate(:,:,n) = randint(G,CC,[0 500]);  
        %pf调度
        %每个RB开始分配
        for jq = 1:CC;  
            t  = 1;
            if jq == 1;PL=PL1;end;
            if jq == 2;PL=PL2;end;
            if jq == 3;PL=PL3;end;
            for jG = 2:G; 
                if Rand_rate(jG,jq,n)/Avg_rate(1,jG,n)>Rand_rate(t,jq,n)/Avg_rate(1,t,n) & PL>=300+50*rand;
                   t = jG;
                end
            end
            Rbs(t,jq,n) = G*rand;
        end 
        %获得的速率
        Sum_rate(:,:,n) = Rbs(:,:,n)*Rand_rate(:,:,n)';   
        %整个调度过程每个UE所获得的速率
        Rates(:,:)  = Sum_rate(:,:,n)+Rates(:,:); 
        %更新平均速率
        for k2=1:G;              
            if rand>0.2%得到服务
               Avg_rate(1,k2,n+1)=(1-1/T).*Avg_rate(1,k2,n); 
            else
               Avg_rate(1,k2,n+1)=(1-1/T).*Avg_rate(1,k2,n)+(1/T).*Sum_rate(k2,k2,n);
            end
        end
    end
    Rates_=Wk*Rates;
    speed1(i) = sum(sum(Rates_(:,Ijiq)))/1e6;
    speed2(i) = sum(sum(Rates_(:,Izx)))/1e6;
    speed(i)  = speed1(i)+speed2(i);
end

figure;
bar([speed(end),speed1(end),speed2(end)]);
ylabel('吞吐量/Mbps');

save R1.mat speed speed1 speed2

PF顶层如下所示:

clc;
clear;
close all;
warning off;
rng('default');

Nums = [4:30];
f1   = 860;
f2   = 2300;
f3   = 3400;
B    = 20;
Twind= 100;
Tmax = 2;
dist = 500;
v    = 3;
power= 40;
%边缘用户和中心用户的比例因子
ker  = 0.2;


for i = 1:length(Nums)
    i
    PF_times = 100;%m为调度次数
    G        = Nums(i);%为UE个数
    CC       = 3; %个数
    T        = Twind;
    Rbs      = zeros(G,CC,PF_times);   %矩阵s为每次调度RB所分配的UE
    Rates    = zeros(G,G);            %整个调度过程每个UE所获得的速率
    Avg_rate = ones(1,G,PF_times+1);  %每个UE所获得的平均速率
    Rand_rate= [];
    Sum_rate = [];
    %不同载波频率衰减不一样
    PL1      = 58.83+37.6*log(10*dist/1e3) + 21*log(10*f1);
    PL2      = 58.83+37.6*log(10*dist/1e3) + 21*log(10*f2);
    PL3      = 58.83+37.6*log(10*dist/1e3) + 21*log(10*f3);
    
    for n=1:PF_times;  %调度次数
        rng(n);
        %初始化alpha
        alpha            = zeros(1,G);%侵略因子
        %生成随机速率信息
        Rand_rate(:,:,n) = randint(G,CC,[0 500]);  
        %pf调度
        %每个RB开始分配
        for jq = 1:CC;  
            t  = 1;
            if jq == 1;PL=PL1;end;
            if jq == 2;PL=PL2;end;
            if jq == 3;PL=PL3;end;
            for jG = 2:G; 
                if Rand_rate(jG,jq,n)/Avg_rate(1,jG,n)>Rand_rate(t,jq,n)/Avg_rate(1,t,n) & PL>=300+50*rand;
                   t = jG;
                end
            end
            Rbs(t,jq,n) = G*rand;
        end 
        %获得的速率
        Sum_rate(:,:,n) = Rbs(:,:,n)*Rand_rate(:,:,n)';   
        %整个调度过程每个UE所获得的速率
        Rates(:,:)  = Sum_rate(:,:,n)+Rates(:,:); 
        %更新平均速率
        for k2=1:G;                 
            Avg_rate(1,k2,n+1)=(1-1/T).*Avg_rate(1,k2,n)+(1/T).*Sum_rate(k2,k2,n);
        end
    end
    
    speed(i)  = sum(sum(Rates))/1e6;
    speed1(i) = ker*speed(i);
    speed2(i) = speed(i)-ker*speed(i);
end

figure;
bar([speed(end),speed1(end),speed2(end)]);
ylabel('吞吐量/Mbps');

save R1.mat speed speed1 speed2

四、仿真结论分析

 

 

五、参考文献

[1]邵琪萍, 葛万成. LTE-A系统中比例公平调度算法的改进[J]. 通信技术, 2014, 47(11):4.A01-181

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/126496166