mTD-SCDMA与TD-LTE双网络垂直切换matlab仿真

news2024/9/26 3:30:19

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

TD-SCDMA与TD-LTE共覆盖的范围内覆盖半径1000m;

TD-SCDMA中心坐标(0,0),覆盖半径1000m;

两个TD-LTE基站的中心坐标为(150,0)(-150,0)覆盖半径为170m;

       用户在这个范围内一以0-15m/s 的速度随机游走,行走路线可固定(必须要经过两个LTE基站重叠区域)也可随机无方向(这里,为了验证一般性验证,采用匀速运动和指定方向进行移动,但是用户始终在小区覆盖范围之内)

移动终端初始在场景中接入的网络为TD-SCDMA网络,相关的网络参数。

定义终端移动速度

定义3个网络的移入和移出门限功率门限 

定义不同的类型的业务权重

       切换判决模块:切换判决模块主要是测量3个网络的接收信号迁都,判断是否满足硬性接入条件,在满足硬性接入条件后再调度其他判决参数。这里的判决策略采用二维收益加权法其他的判决参数包括:接收功率、切换时延、最大传输速率、价格。

       ·得到语音业务、数据业务在判决策略时的网络收益,以及在时间段该接入哪个网络,结果分析出来合理

       ·得到语音业务、数据业务在RSS判决的条件下和在加入了切换判决策略的条件下切换次数的对比图,结果分析出来合理

       在RSS两个网络的都满足的情况下,再根据切换判决网络参数(用接收功率、最大的传输速率、时延、费用价格),以及结合切换判决的网络参数的相对权重(相对权重的分析我想采用层次分析法出来不是固定不变的某个参数。最后根据不同的业务类型(语音业务/数据业务/视频业务)依据二维代价(或收益)函数加权法来判决接入哪一个网络最合适。

2.仿真效果预览

 

3.MATLAB部分代码预览

 
%移动设备必须经过的关键点
VP_ms  = [-600,300;   %A
          -290,105;   %B
           -20, 40;   %C
             0, 40;   %D
            20, 40;   %E
           250,120;   %F
           600,500]  ;%G
 
type   = 1;%业务类型:1:语音业务,2:数据业务,3:视频模型
 
%各个网络的接入,断开功率门限值
Rss_tds_in   = -55;%dbm
Rss_tds_out  = -70;%dbm
 
Rss_tdl1_in  = -50;%dbm
Rss_tdl1_out = -65;%dbm
 
Rss_tdl2_in  = -50;%dbm
Rss_tdl2_out = -65;%dbm
 
%定义用户运动的距离 
Xp           = 0;
Yp           = 0;
%定义仿真时间参数
delta        = 0.01;
Time         = 300;
t            = 0;
%数组计数器
Ind          = 0;
Ind2         = 0;
 
 
%接收功率、最大的传输速率、时延、费用价格
%其中接收功率为实测
POW_tds  = 0;
Rb_tds   = 1.28;
DLY_tds  = 20;
MNY_tds  = 0.3;
 
POW_tdl1 = 0;
Rb_tdl1  = 8;
DLY_tdl1 = 40;
MNY_tdl1 = 0.2;
 
POW_tdl2 = 0;
Rb_tdl2  = 8;
DLY_tdl2 = 45;
MNY_tdl2 = 0.1;
%接收功率、最大的传输速率、时延、费用价格 
% w1       = 0.2; 
% w2       = 0.3;
% w3       = 0.3;
% w4       = 0.2;
 
ViewS    = 20;%减小消耗内存,采样显示结果
 
%定义分层矩阵
C        = zeros(4,4);
 
 
%%
%场景的初始化
%X,Y为MB移动的路径,随着时间的变化而X,Y的变化值,用于循环仿真使用
[X,Y] = func_Simu_Scene(P_tds,P_tdl1,P_tdl2,VP_ms,R_tds,R_tdl);
save My_Result\Simu_Scene.mat 
 
%%
%主循环
%定义变量
Len       = min(Time/delta,floor((length(X)-Sp_ms)/Sp_ms));
%定义网络ID变量
ClK                       = zeros(Len,1); 
IDs                       = zeros(Len,3);
RSS_tdss                  = zeros(Len,1);
RSS_tdl1s                 = zeros(Len,1);
RSS_tdl2s                 = zeros(Len,1);
Networkcontribution_tdss  = zeros(Len,1);
Networkcontribution_tdl1s = zeros(Len,1);
Networkcontribution_tdl2s = zeros(Len,1);
IDs2                      = zeros(Len,1);
while (t < Time & Ind < length(X)-Sp_ms)
   %计算时间
   t
   t    = t    + delta;
   Ind  = Ind  + Sp_ms;
   Ind2 = Ind2 + 1;
   
   %根据坐标位置,得到MB的当前区域
   Xp  = X(Ind);
   Yp  = Y(Ind);
   %根据不同的区域,确定有几个网络
   ID = func_NET_ID(Xp,Yp,P_tds,P_tdl1,P_tdl2,R_tds,R_tdl);
   
   %计算RSS值
   RSS_tds  = func_Rss_cal(Xp,Yp,Sp_ms,P_tds ,F_tds,t,Pow_tds,ISFAST);
   RSS_tdl1 = func_Rss_cal(Xp,Yp,Sp_ms,P_tdl1,F_tdl,t,Pow_tdl,ISFAST);
   RSS_tdl2 = func_Rss_cal(Xp,Yp,Sp_ms,P_tdl2,F_tdl,t,Pow_tdl,ISFAST);
   
   
   %判断每一时刻的备选网络
   %进行分层计算,这个根据业务模型的不同,而不同
   %接收功率、最大的传输速率、时延、费用价格
   %正常情况下,我们假设接收功率时变,而其他三个参数固定,从而进行实时计算网络贡献值
   %这里,分层法的解W,我参考了另外一篇的做法,比较方便
   if type == 1%语音业务,我们认为时延最重要
       %接收功率、最大的传输速率、时延、费用价格
       C=[1      5       1/7   3;
          1/5    1       1/3   1/2;
          7      3       1     2;
          1/3    2       1/2   1];
   end 
   %计算权值W
   for i = 1:4
       w2(i) = (C(i,1)*C(i,2)* C(i,3)* C(i,4))^0.25;  
   end
   for i = 1:4
       w(i)  = w2(i)/sum(w2);  
   end   
   w1 = w(1);
   w2 = w(2);
   w3 = w(3);
   w4 = w(4);
   
   %注意,这里矩阵C的建立,具有一定的主观性,所以我就不设置了,你改下,就可以换别的业务模型进行仿真了  
   %注意,这里矩阵C的建立,具有一定的主观性,所以我就不设置了,你改下,就可以换别的业务模型进行仿真了      
 
    %计算网络贡献权值由上面的分层法计算得到
    %接收功率、最大的传输速率、时延、费用价格 
    %将功率dbm转换为标准功率w
    PP_tds  = 10^(RSS_tds/20);
    PP_tdl1 = 10^(RSS_tdl1/20);
    PP_tdl2 = 10^(RSS_tdl2/20);
    
    %构成矩阵,并规划化
    Rs = [PP_tds ,Rb_tds ,DLY_tds ,MNY_tds;
          PP_tdl1,Rb_tdl1,DLY_tdl1,MNY_tdl1;
          PP_tdl2,Rb_tdl2,DLY_tdl2,MNY_tdl2];
    
    [r,c] = size(Rs);
    for j = 1:c
        Mins = min(Rs(:,j));   
        Maxs = max(Rs(:,j)); 
        for i = 1:r
            R(i,j) = (Rs(i,j)-Mins)/(Maxs); 
        end
    end
 
    %表示一个网络
    if ID(2) == 0 & ID(3) == 0
       Networkcontribution_tds  = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
       Networkcontribution_tdl1 = 0;
       Networkcontribution_tdl2 = 0;
    end
    
    %表示2个网络
    if ID(2) == 0 & ID(3) > 0
       Networkcontribution_tds  = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
       Networkcontribution_tdl1 = 0;
       Networkcontribution_tdl2 = w1*R(3,1) +w2*R(3,2) +w3*R(3,3) +w4*R(3,4);
    end    
    if ID(3) == 0 & ID(2) > 0
       Networkcontribution_tds  = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
       Networkcontribution_tdl1 = w1*R(2,1) +w2*R(2,2) +w3*R(2,3) +w4*R(2,4);
       Networkcontribution_tdl2 = 0;
    end      
    
    %备选集为三个网络
    if ID(1) > 0 & ID(2) > 0 & ID(3) > 0
       Networkcontribution_tds  = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
       Networkcontribution_tdl1 = w1*R(2,1) +w2*R(2,2) +w3*R(2,3) +w4*R(2,4);
       Networkcontribution_tdl2 = w1*R(3,1) +w2*R(3,2) +w3*R(3,3) +w4*R(3,4);
    end        
 
    %根据网络贡献值,来选择网络
    [V,I] = max([Networkcontribution_tds,Networkcontribution_tdl1,Networkcontribution_tdl2]);
 
   %将每次循环的结果进行保存
   ClK(Ind2)       = t-delta;
   IDs(Ind2,1)     = ID(1);
   IDs(Ind2,2)     = ID(2);
   IDs(Ind2,3)     = ID(3);
   RSS_tdss(Ind2)  = RSS_tds;
   RSS_tdl1s(Ind2) = RSS_tdl1;
   RSS_tdl2s(Ind2) = RSS_tdl2;
   Networkcontribution_tdss(Ind2)  = Networkcontribution_tds;
   Networkcontribution_tdl1s(Ind2) = Networkcontribution_tdl1;
   Networkcontribution_tdl2s(Ind2) = Networkcontribution_tdl2;
   IDs2(Ind2)                      = I;
end
01_059_m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31689.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刚毕业被骗去了小公司,天天“取数做表”,后悔没早点用上这工具

经常看到年轻人提问“究竟是去大公司打杂好&#xff0c;还是去小公司磨练好&#xff1f;”这个问题我年轻的时候也想过&#xff0c;当时觉得去大公司只能当螺丝钉&#xff0c;做按部就班的工作&#xff0c;于是毅然决然放弃了大厂offer去了一家IT部门只有3个人的公司。当时我在…

通过电子文档管理改善患者体验和办公效率

通过电子文档管理改善患者体验和办公效率 在不远的过去&#xff0c;手动输入医疗信息和物理归档系统是所有医疗办公室的标准操作程序。医生和工作人员别无选择&#xff0c;只能写下信息&#xff0c;然后手动将数据输入办公系统。 当要求所有从业者使用电子病历的授权作为“患…

亚马逊买家号造成被封的原因有哪些?

现在很多人反馈说亚马逊买家号太容易被封了&#xff0c;去下单时都不知道什么情况都就砍单&#xff0c;账号登录不上了&#xff0c;而关于亚马逊买家号被封这个问题&#xff0c;不是一两个因素就能决定的&#xff0c;那么亚马逊买家号造成被封的原因有哪些&#xff1f; 1、账号…

虚拟机三种网络模式

基本知识 ipconfig查看信息。 网关(Gateway)又称网间连接器、协议转换器。是你连接到的上层节点的地址。 ip地址是你本身的地址&#xff08;如果是路由器分配的 那么是路由器所构建的内网地址&#xff09; 网卡&#xff1a;需要网卡才能连接其他设备 是设备端的 交换机&#x…

[附源码]SSM计算机毕业设计教师业绩考核系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Mybatis-Plus条件构造器学习and方法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Mybatis-Plus条件构造器学习and方法一、代码1.Controller2、Service3、效果一、代码 1.Controller GetMapping("/queryProductList1")public List<ProductDTO&…

panads基础入门

目录 一、查看数据 二、选择数据 1、选择单列 2、 用 [ ] 切片行&#xff1a; 3、标签选择 1、选择某列的某一行&#xff0c;如下是 A 列 第 51 行的值 2、B列与A列的数据相互替换 3、用标签选取多列 4、用标签切片&#xff0c;包含行与列结束点&#xff1a; 5、提取标…

传奇列表格式怎么上传以及公告小窗口皮肤如何设置

相信各位新手小白GM在架设传奇配置登录器的时候都会遇到列表格式的问题&#xff0c;接下来我来教各位登录器的这个列表格式该怎么上传&#xff0c;列表上传地址&#xff1a;传奇常用引擎免费单机列表格式-传奇入门GOM-GEE引擎教学 我们版本是什么引擎我们就用什么引擎的列表格式…

基于Zookeeper实现高可用架构

Zookeeper高可用相关特性 Zookeeper介绍 ZooKeeper is a distributed, open-source coordination service for distributed applications It exposes a simple set of primitives that distributed applications can build upon to implement higher level services for sync…

分布式协调系统ZooKeeper实践与原理剖析

基础的一些知识&#xff0c;高阶知识后续看看补充 第一章 ZooKeeper概述 1.1 介绍 What is ZooKeeper&#xff1f; Apache ZooKeeper is an effort to develop and maintain an open-source server which enables highly reliable distributed coordination ZooKeeper is…

EasyX图形库的下载安装与Dev-C++配置

1.下载Dev-Cpp 6.3版本&#xff08;红色logo&#xff09; 下载地址&#xff1a;Download Dev-C for Windows 10/8/7 from SourceForge.netA fast, portable, simple, and free C/C IDEhttps://sourceforge.net/projects/embarcadero-devcpp/files/v6.3/Embarcadero_Dev-Cpp_6.3…

详细介绍百度ERNIE 2.0:A Continual Pre-Training Framework for Language Understanding

阅读更多&#xff1a;详细介绍百度ERNIE&#xff1a;Enhanced Representation through Knowledge Integration 文章目录ERNIE 2.0简介相关工作语言表征的无监督学习持续学习ERNIE2.0 框架持续的预训练预训练任务的构建持续的多任务学习针对应用任务的微调ERNIE 2.0模型模型结构…

【Java八股文总结】之消息队列

文章目录消息队列一、消息队列常见面试题1、什么是消息队列&#xff1f;2、为什么要用消息队列&#xff1f;3、使用消息队列存在的问题4、JMS vs AMQP&#xff08;一&#xff09;JMSQ&#xff1a;什么是JMS&#xff1f;Q&#xff1a;JMS两种消息模型Q&#xff1a;JMS五种不同消…

Lucid EDI需求分析及项目注意事项

Lucid Motors路西德汽车&#xff0c;是一家美国电动汽车制造商&#xff0c;总部位于美国加利福尼亚州纽瓦克。除了电动汽车&#xff0c;Lucid还有储能技术和代工生产等业务。公司成立于2007年。 截至2021年9月&#xff0c;其第一辆汽车Lucid Air已投入生产&#xff0c;于2021年…

使用arduino编写mqtt客户端连接emqx服务器

摘要&#xff1a;mqtt客户端可以有很多种&#xff0c;本文介绍一种使用arduino d1&#xff08;esp8266&#xff09;制作的客户端&#xff0c;连接emqx服务器的方法。 首先需要配置开发环境&#xff0c;配置方法可以参考文章 (1条消息) 使用arduino开发esp8266和esp32时首选项设…

美容美发店会员管理系统开发_分享美容美发店做会员管理系统的好处

为什么都在做美容美发店会员管理系统&#xff1f; 最主要的目的就是将新客留住&#xff0c;并通过各种会员福利发展成愿意多次消费的长期会员。 美容美发店作为服务类行业&#xff0c;吃的大部分都是回头客的盈利&#xff0c;而回头客的消费意愿&#xff0c;也普遍会比新客要…

Executor接口实现线程池管理

从JDK5开始&#xff0c;在java.util.concurrent包下增加了Executor接口及其子类&#xff0c;允许使用线程池技术来管理线程并发问题。Executor接口提供了一个常用的ExecutorService子接口&#xff0c;通过该子接口可以很方便地进行线程池管理。 通过Executor接口实现线程池管理…

LeetCode 0529. 扫雷游戏

【LetMeFly】529.扫雷游戏 力扣题目链接&#xff1a;https://leetcode.cn/problems/minesweeper/ 让我们一起来玩扫雷游戏&#xff01; 给你一个大小为 m x n 二维字符矩阵 board &#xff0c;表示扫雷游戏的盘面&#xff0c;其中&#xff1a; M 代表一个 未挖出的 地雷&am…

【前端】博客系统——简单的页面设计

前端 传送门【前端】HTML入门 —— HTML的常见标签 【前端】CSS(1) —— CSS的基本语法和一些简单的选择器 博客系统 (简单的页面设计)目录页面介绍效果预览代码实现实现博客列表页实现导航栏 版心实现导航栏 部分版心样式实现列表页版心样式实现博客正文页实现导航栏 版心…

基于ghOSt用户调度器的环境搭建

文章目录ghOSt环境搭建编译安装ghOSt内核使用ghOSt用户空间组件ghOSt环境搭建 资源: ghOSt-kernel:https://github.com/google/ghost-kernelghOSt-userspace:https://github.com/google/ghost-userspace论文原文&#xff1a;https://dl.acm.org/doi/abs/10.1145/3477132.348354…