您现在的位置:首页 >> 通信 >> 内容

m蜂窝移动通信系统中越区切换的matlab仿真分析

时间:2022/12/10 19:29:42 点击:

  核心提示:01-125m,含matlab程序,操作录像和12000字word论文...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5mXlJ1w

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览








3.算法概述

         用Matlab仿真一个蜂窝模型,用户在打电话时产生切换的过程。建立蜂窝越区切换,假设有16个蜂窝,实现两个小区之间的硬切换,每个小区假设能容纳30个用户,第31个用户就会产生切换,到另一个小区. 或是根据用户移动产生的切换。

       切换的目的有两种可能,一种是实现漫游,另一种是提高服务质量,即降低掉话率,降低拥塞率。移动设备与对端通信点之间的通信会因切换有一定的时延, 这可能造成数据丢失问题,或是通信连接中断,影响我们的正常通话。研究切换的目的就是减少切换过程的时延和丢包率,这样我们才能更好的通话。切换是数字蜂窝通信的一个特点,它保证用户从一个小区到移动到另一个小区通话的可靠性。在任何移动网中,切换是相当重要的,这是因为在蜂窝系统中,最大限度地使用频谱利用率。

       切换的最主要功能就是保证用户通信的连续性,当用户发生越区的时候,将用户当前的通信链路转移到其它小区。切换技术直接影响着整个蜂窝网络的性能好坏,其影响着整个网络的响应速度,通话质量等指标。此外,蜂窝系统拥有一个重要的优势,由于其拥有较宽的的带宽,所以由多径效应引起的信号衰落比较小,因此可以对信号进行解调,使其大幅度提高链路容量。考虑到上述这些影响,切换技术在现代通信系统中有着越来越重要的作用。因此,研究蜂窝系统的切换技术具有十分重要的意义。  

        无中继的蜂窝网的小区功耗主要来自于基站(BS)的功耗,这里假设单位覆盖区域都是正六边形,每个小区内有一个基站(BS)和若干个移动站(MS),且每个基站(BS)的最大覆盖区域是有限的。

4.部分源码

clc;

clear;

close all;

warning off;

rng('default')

%切换条件

CutOff= 30;

%仿真时间

TIMES = 100

%定义小区半径为2km

r     = 2; 

dx    = 3;         %定义在x轴上的平移间隔

dy    = 2*sqrt(3); %定义在y轴上的平移间隔

%在整个空间区域产生随机的用户

N     = 500;

Xuser =-13*rand(1,N)+4;

Yuser =-15*rand(1,N)+3;

axis([-12,6,-13,5]);  

%根据某个用户的切换情况

Uidx  = 471;%注意这个变量需要凑一下,使得用户刚好在16个区域之一中

%用户硬切换情况

TRAN1      = zeros(1,TIMES);

TRAN2      = zeros(1,TIMES);

User_Cell2 = zeros(1,TIMES);%保存指定用户标号变化

for jj = 1:TIMES

    jj

    figure(1);

    ind = 0;

    Xc = [];

    Yc = [];

    for yk=[-15:dy:15];    

        f = inline(['sqrt(3)*x/3+',num2str(yk)]);

        for xk=[-13:dx:8];   

            x = xk;

            y = f(x);

            if -13<x<13&-13<y&13

                ind = ind + 1;

                a   = pi/3*[1:7];

                %绘制正六边形的六条边

                if ind == 39 | ind == 31 | ind == 23 | ind == 15 |...

                   ind == 32 | ind == 24 | ind == 16 | ind ==  8 |...

                   ind == 33 | ind == 25 | ind == 17 | ind ==  9 |...

                   ind == 26 | ind == 18 | ind == 10 | ind ==  4

                plot([x+i*y]+r*exp(i*a),'r','linewidth',1);hold on

                %中心点用“*”代表基站

                plot(x,y,'rs','markersize',6);hold on

                Xc = [Xc,x];

                Yc = [Yc,y];

                else

                plot([x+i*y]+r*exp(i*a),'b','linewidth',1);hold on    

                %中心点用“*”代表基站

                plot(x,y,'bs','markersize',6);hold on

                end

            end

        end

    end

    title('16X16蜂窝小区模型(单位:km)');

    axis square;

    hold on

    %用户随机运动

    Tmps = randperm(N);

    for j = 1:N

        if Tmps(j) <= 0.7*N

           Xuser(j) =  Xuser(j) + randn/5;

           Yuser(j) =  Yuser(j) + randn/5;

        else

           Xuser(j) =  Xuser(j) + rand/5;

           Yuser(j) =  Yuser(j) + rand/5;  

        end

        if j == Uidx

           Xuser(j) =  Xuser(j) + rand/8;

           Yuser(j) =  Yuser(j) + randn/20;

        end

    end

    for j = 1:N

        if j == Uidx

           plot(Xuser(j),Yuser(j),'bo','markersize',6); hold on   

           plot(Xuser(j),Yuser(j),'r*','markersize',6);    

        else

           plot(Xuser(j),Yuser(j),'k.');

        end

        hold on

    end

    axis([-12,6,-13,5]);      

    hold off

    %统计每个小区内的用户的数目

    User_Cell      = func_cellNum(Xuser,Yuser,Xc,Yc,N,r);

    User_Cell2(jj) = User_Cell(Uidx);

    %分析切换情况

    %第一种情况,用户跨区域了,需要切换,对比前后时刻的区域标号是否相同

    if jj == 1

       TRAN1(jj) = 0;%表示不切换   

    else

       if User_Cell2(jj) == User_Cell2(jj-1)  

          TRAN1(jj) = 0;

       else

          TRAN1(jj) = 1;%1表示跨小区切换 

       end

    end

    %第二种情况,区域用户超过30,则进行临近切换

    NUM = length(find(User_Cell == User_Cell(Uidx)));

    NUM

    if NUM <= CutOff

       if jj == 1

          TRAN2(jj) = 0;%0表示不切换   

       else

          TRAN2(jj) = 0;%0表示不切换   

       end

    else

       if jj == 1

          TRAN2(jj) = 0;%0表示不切换   

       else

          TRAN2(jj) = 1;%2表示用户过多的切换   

       end 

    end

    figure(2);

    plot(TRAN1,'b','linewidth',2);

    hold on

    plot(TRAN2+2,'r','linewidth',2);

    hold on  

    legend('跨小区切换','用户大于30切换');

    axis([0,TIMES,-2,6]);

end

01-125m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168