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


    目录

    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部分代码预览

    1. %移动设备必须经过的关键点
    2. VP_ms = [-600,300; %A
    3. -290,105; %B
    4. -20, 40; %C
    5. 0, 40; %D
    6. 20, 40; %E
    7. 250,120; %F
    8. 600,500] ;%G
    9. type = 1;%业务类型:1:语音业务,2:数据业务,3:视频模型
    10. %各个网络的接入,断开功率门限值
    11. Rss_tds_in = -55;%dbm
    12. Rss_tds_out = -70;%dbm
    13. Rss_tdl1_in = -50;%dbm
    14. Rss_tdl1_out = -65;%dbm
    15. Rss_tdl2_in = -50;%dbm
    16. Rss_tdl2_out = -65;%dbm
    17. %定义用户运动的距离
    18. Xp = 0;
    19. Yp = 0;
    20. %定义仿真时间参数
    21. delta = 0.01;
    22. Time = 300;
    23. t = 0;
    24. %数组计数器
    25. Ind = 0;
    26. Ind2 = 0;
    27. %接收功率、最大的传输速率、时延、费用价格
    28. %其中接收功率为实测
    29. POW_tds = 0;
    30. Rb_tds = 1.28;
    31. DLY_tds = 20;
    32. MNY_tds = 0.3;
    33. POW_tdl1 = 0;
    34. Rb_tdl1 = 8;
    35. DLY_tdl1 = 40;
    36. MNY_tdl1 = 0.2;
    37. POW_tdl2 = 0;
    38. Rb_tdl2 = 8;
    39. DLY_tdl2 = 45;
    40. MNY_tdl2 = 0.1;
    41. %接收功率、最大的传输速率、时延、费用价格
    42. % w1 = 0.2;
    43. % w2 = 0.3;
    44. % w3 = 0.3;
    45. % w4 = 0.2;
    46. ViewS = 20;%减小消耗内存,采样显示结果
    47. %定义分层矩阵
    48. C = zeros(4,4);
    49. %%
    50. %场景的初始化
    51. %X,Y为MB移动的路径,随着时间的变化而X,Y的变化值,用于循环仿真使用
    52. [X,Y] = func_Simu_Scene(P_tds,P_tdl1,P_tdl2,VP_ms,R_tds,R_tdl);
    53. save My_Result\Simu_Scene.mat
    54. %%
    55. %主循环
    56. %定义变量
    57. Len = min(Time/delta,floor((length(X)-Sp_ms)/Sp_ms));
    58. %定义网络ID变量
    59. ClK = zeros(Len,1);
    60. IDs = zeros(Len,3);
    61. RSS_tdss = zeros(Len,1);
    62. RSS_tdl1s = zeros(Len,1);
    63. RSS_tdl2s = zeros(Len,1);
    64. Networkcontribution_tdss = zeros(Len,1);
    65. Networkcontribution_tdl1s = zeros(Len,1);
    66. Networkcontribution_tdl2s = zeros(Len,1);
    67. IDs2 = zeros(Len,1);
    68. while (t < Time & Ind < length(X)-Sp_ms)
    69. %计算时间
    70. t
    71. t = t + delta;
    72. Ind = Ind + Sp_ms;
    73. Ind2 = Ind2 + 1;
    74. %根据坐标位置,得到MB的当前区域
    75. Xp = X(Ind);
    76. Yp = Y(Ind);
    77. %根据不同的区域,确定有几个网络
    78. ID = func_NET_ID(Xp,Yp,P_tds,P_tdl1,P_tdl2,R_tds,R_tdl);
    79. %计算RSS值
    80. RSS_tds = func_Rss_cal(Xp,Yp,Sp_ms,P_tds ,F_tds,t,Pow_tds,ISFAST);
    81. RSS_tdl1 = func_Rss_cal(Xp,Yp,Sp_ms,P_tdl1,F_tdl,t,Pow_tdl,ISFAST);
    82. RSS_tdl2 = func_Rss_cal(Xp,Yp,Sp_ms,P_tdl2,F_tdl,t,Pow_tdl,ISFAST);
    83. %判断每一时刻的备选网络
    84. %进行分层计算,这个根据业务模型的不同,而不同
    85. %接收功率、最大的传输速率、时延、费用价格
    86. %正常情况下,我们假设接收功率时变,而其他三个参数固定,从而进行实时计算网络贡献值
    87. %这里,分层法的解W,我参考了另外一篇的做法,比较方便
    88. if type == 1%语音业务,我们认为时延最重要
    89. %接收功率、最大的传输速率、时延、费用价格
    90. C=[1 5 1/7 3;
    91. 1/5 1 1/3 1/2;
    92. 7 3 1 2;
    93. 1/3 2 1/2 1];
    94. end
    95. %计算权值W
    96. for i = 1:4
    97. w2(i) = (C(i,1)*C(i,2)* C(i,3)* C(i,4))^0.25;
    98. end
    99. for i = 1:4
    100. w(i) = w2(i)/sum(w2);
    101. end
    102. w1 = w(1);
    103. w2 = w(2);
    104. w3 = w(3);
    105. w4 = w(4);
    106. %注意,这里矩阵C的建立,具有一定的主观性,所以我就不设置了,你改下,就可以换别的业务模型进行仿真了
    107. %注意,这里矩阵C的建立,具有一定的主观性,所以我就不设置了,你改下,就可以换别的业务模型进行仿真了
    108. %计算网络贡献权值由上面的分层法计算得到
    109. %接收功率、最大的传输速率、时延、费用价格
    110. %将功率dbm转换为标准功率w
    111. PP_tds = 10^(RSS_tds/20);
    112. PP_tdl1 = 10^(RSS_tdl1/20);
    113. PP_tdl2 = 10^(RSS_tdl2/20);
    114. %构成矩阵,并规划化
    115. Rs = [PP_tds ,Rb_tds ,DLY_tds ,MNY_tds;
    116. PP_tdl1,Rb_tdl1,DLY_tdl1,MNY_tdl1;
    117. PP_tdl2,Rb_tdl2,DLY_tdl2,MNY_tdl2];
    118. [r,c] = size(Rs);
    119. for j = 1:c
    120. Mins = min(Rs(:,j));
    121. Maxs = max(Rs(:,j));
    122. for i = 1:r
    123. R(i,j) = (Rs(i,j)-Mins)/(Maxs);
    124. end
    125. end
    126. %表示一个网络
    127. if ID(2) == 0 & ID(3) == 0
    128. Networkcontribution_tds = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
    129. Networkcontribution_tdl1 = 0;
    130. Networkcontribution_tdl2 = 0;
    131. end
    132. %表示2个网络
    133. if ID(2) == 0 & ID(3) > 0
    134. Networkcontribution_tds = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
    135. Networkcontribution_tdl1 = 0;
    136. Networkcontribution_tdl2 = w1*R(3,1) +w2*R(3,2) +w3*R(3,3) +w4*R(3,4);
    137. end
    138. if ID(3) == 0 & ID(2) > 0
    139. Networkcontribution_tds = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
    140. Networkcontribution_tdl1 = w1*R(2,1) +w2*R(2,2) +w3*R(2,3) +w4*R(2,4);
    141. Networkcontribution_tdl2 = 0;
    142. end
    143. %备选集为三个网络
    144. if ID(1) > 0 & ID(2) > 0 & ID(3) > 0
    145. Networkcontribution_tds = w1*R(1,1) +w2*R(1,2) +w3*R(1,3) +w4*R(1,4);
    146. Networkcontribution_tdl1 = w1*R(2,1) +w2*R(2,2) +w3*R(2,3) +w4*R(2,4);
    147. Networkcontribution_tdl2 = w1*R(3,1) +w2*R(3,2) +w3*R(3,3) +w4*R(3,4);
    148. end
    149. %根据网络贡献值,来选择网络
    150. [V,I] = max([Networkcontribution_tds,Networkcontribution_tdl1,Networkcontribution_tdl2]);
    151. %将每次循环的结果进行保存
    152. ClK(Ind2) = t-delta;
    153. IDs(Ind2,1) = ID(1);
    154. IDs(Ind2,2) = ID(2);
    155. IDs(Ind2,3) = ID(3);
    156. RSS_tdss(Ind2) = RSS_tds;
    157. RSS_tdl1s(Ind2) = RSS_tdl1;
    158. RSS_tdl2s(Ind2) = RSS_tdl2;
    159. Networkcontribution_tdss(Ind2) = Networkcontribution_tds;
    160. Networkcontribution_tdl1s(Ind2) = Networkcontribution_tdl1;
    161. Networkcontribution_tdl2s(Ind2) = Networkcontribution_tdl2;
    162. IDs2(Ind2) = I;
    163. end
    164. 01_059_m

    4.完整MATLAB程序

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

    V

  • 相关阅读:
    SQL中for xml path 的用法
    GANs生成对抗网络的学习
    5分钟上手Shiro认证功能与注解式开发
    springboot启动打印controller映射url
    vscode使用docker 简介、步骤
    Nginx modules build fail:field ‘pkt6’ has incomplete type
    【数据挖掘】分类与回归预测
    弘辽科技:淘宝店铺扣多少分会影响淘宝活动报名?
    【C++数据结构】程序性能分析
    红队技术笔记
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/128019895