目录
1.算法描述
2.仿真效果预览
3.MATLAB核心程序
4.完整MATLAB
1.算法描述
用Matlab仿真一个蜂窝模型,用户在打电话时产生切换的过程。建立蜂窝越区切换,假设有16个蜂窝,实现两个小区之间的硬切换,每个小区假设能容纳30个用户,第31个用户就会产生切换,到另一个小区. 或是根据用户移动产生的切换。
切换的目的有两种可能,一种是实现漫游,另一种是提高服务质量,即降低掉话率,降低拥塞率。移动设备与对端通信点之间的通信会因切换有一定的时延, 这可能造成数据丢失问题,或是通信连接中断,影响我们的正常通话。研究切换的目的就是减少切换过程的时延和丢包率,这样我们才能更好的通话。切换是数字蜂窝通信的一个特点,它保证用户从一个小区到移动到另一个小区通话的可靠性。在任何移动网中,切换是相当重要的,这是因为在蜂窝系统中,最大限度地使用频谱利用率。
切换的最主要功能就是保证用户通信的连续性,当用户发生越区的时候,将用户当前的通信链路转移到其它小区。切换技术直接影响着整个蜂窝网络的性能好坏,其影响着整个网络的响应速度,通话质量等指标。此外,蜂窝系统拥有一个重要的优势,由于其拥有较宽的的带宽,所以由多径效应引起的信号衰落比较小,因此可以对信号进行解调,使其大幅度提高链路容量。考虑到上述这些影响,切换技术在现代通信系统中有着越来越重要的作用。因此,研究蜂窝系统的切换技术具有十分重要的意义。
无中继的蜂窝网的小区功耗主要来自于基站(BS)的功耗,这里假设单位覆盖区域都是正六边形,每个小区内有一个基站(BS)和若干个移动站(MS),且每个基站(BS)的最大覆盖区域是有限的。
蜂窝网为传统的蜂窝网络,其主要包括一个基站。在此基础之上,通过引入一个或者多个中继基站(中继节点),是的基站发送的信号能够通过各个中继节点转发出去,从而实现避开障碍物,克服大尺度衰落,提高通信质量的功能。通过加入中继点,可以有效改善通信信号质量,提高蜂窝网络的容量,增加小区覆盖范围[15]。在移动蜂窝中继通信网络中,基站是唯一一个通过有线线路和骨干网络相连接的设备。一般情况下,无线通信的下行链路传播总是起始于基站,同时上行无线链路的结束也为基站。中继蜂窝的基本构架如下图所示:
从图1可知,中继节点是蜂窝中继网络相对于传统蜂窝网引入的一个新的节点,其与基站及移动节点问的链路均是无线链路。中继节点是位于某一基站覆盖范围内附属于基站的设备,它的功能是接收来自于基站的下行链路数据,然后将这些数据转发给移动节点,或者接收来自于移动节点的上行链路数据再转发给基站。
中继节点本身不产生它们自己的数据业务,但中继节点可以产生相关的控制信令以完成相关数据业务的传输。中继节点设备功能要比基站简单很多,因此复杂度就比较小,成本相对于基站也少很多。
在实际应用中,中继节点的部署主要有两种方式,一是将中继节点部署在的覆盖范围内,这种部署方式的主要功能就是改善小区内用户数据信号质量,提高数据传输速率。因此,这种部署方式一般部署在覆盖小区的边缘或者是阴影衰落效应严重的区域。第二种部署方式为 将中继节点部署在的覆盖范围外,将来自基站的信号放大,从而扩大小区的覆盖范围。由于中继节点的成本通常比基站成本低很多,这是一种低成本的覆盖范围扩展的方式。两种部署方法的结构如下图所示:
切换处理在蜂窝移动通信系统是一项非常重要的技术任务,切换操作的主要目的,不仅要去识别一个新的基站,而且要求将信号转移到新基站的信道上。由于蜂窝移动通信系统采用的复用方式是频率复用,而且采用的是分集接收技术,因此,其允许移动台同时和两个或者两个以上的小区基站进行通信,这大大的改善了切换的性能,实现了系统的无缝覆盖,提供高质量的服务[07~10]。
·硬切换
硬切换,顾名思义,就是强制切换,其最大的特点是:“先断后连”;主要是指移动电台在载波频率不同的基站小区之间信道的切换。在硬切换过程中,用户移动设备仅仅保持与一个基站链接,一旦切换操作被激活,其马上会切断缘原有的连接,然后再与新的基站建立连接。从一个基站切换到另个基站的过程中,通信链路有短暂的中断。图3就是硬切换的物理结构:
硬切换的测量对移动台设备的要求比较高。如果进行不同频率的硬切换操作,需要首先在切换前测量多个小区的导频信号强度。这也是硬切换存在的另一个缺陷。硬切换的基本原理如图3.3所示:
如上图所示,当一个移动用户从小区1向小区2移动时,由于移动台和小区1的基站之间距离逐渐增大,移动用户接收到的信号将逐渐减弱,当这个信号减弱到一定程度的时候,便会启动硬切换。切断移动用户与基站1的连接,启动与基站2的无线连接,完成硬切换操作过程。
·软切换
软切换,指的是用户的移动设备在载波频率相同的小区之间进行信道的切换。在软切换的过程中,用户完全有可能同时和两个或更多的基站进行通信,在切换过程中,软切换不需要改变设备的频率,也不会出现信号中断的情况,通常情况下,软切换进一步能分为软切换和更软切换两种类型。软切换:在这种切换过程中,当移动台开始与一个新的基站联系时,并不立即中断与原来基站之间的通信,即“先连后断”。
软切换过程和硬切换相似,就是在区域边界出会频繁的出现反复切换的现象,这也是所谓的乒乓效应。但由于软切换过程是先连后断进行,所以一般不会出现硬切换中频繁掉话的现象。而更软切换则是软切换的一种特殊情况。这种切换形式发生在同一基站的具有相同频率的不同扇区之间。
·更软切换
更软切换是软切换的一种特殊情况。这种切换方式发生在同一基站具有相同频率的不同扇区之间。更软切换是CDMA的特色,在基站扇区间同频工作时可以方便地进行。软切换和更软切换的区别在于:更软切换发生在同一个Node-B范围内,分集信号在Node-B中做最大的增益组合,而软切换发生在两个Node-B之间,分集信号在RNC中进行合并处理。图3.5为两种切换方法的比较。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
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
4.完整MATLAB
V