• m基于中继协助的认知无线电频谱切换机制的matlab仿真分析


    目录

    1.算法描述

    2.仿真效果预览

    3.MATLAB部分代码预览

    4.完整MATLAB程序


    1.算法描述

           认知无线电网络在进行频谱切换的时候,最为重要的问题是如何以最少的频谱切换次数实现频谱切换,同时保证较好的服务质量,这里,服务质量不仅是授权用户的服务质量,同时也要保证次用户的服务质量。所谓频谱切换,主要在在认知无线电网络中,当授权用户出现的时候,为了防止对授权用户服务质量的影响,次用户必须选择其他可选信道,此时,次用户就需要进行切换。

            目前为止,关于这方面的研究总结起来,主要有如下几个方面。

           通过使用能量检测、匹配过滤、循环侦测等技术来提高感知函数的过程增益,从而改善无线频谱感知的性能。

          通过在同一个频段范围内共存两个移动无线系统来提高频谱的使用效率。

            由于认知无线电是机会式地使用授权频谱,就会造成很多次用户在整个通信过程中频繁的进行切换,每进行一次切换就需要诸如频谱感知,切换请求,频谱分配,执行切换等过程,这些势必带来大量的时间开销。

           因此,保证次用户服务质量的一个最有效最直接的方法就是在传输过程中尽量减少切换次数。从服务质量角度考虑为次用户分配频谱空洞时间最长、带宽最宽的频谱无疑是最好的;然而从无线频谱资源的利用角度考虑,如果一个对服务质量要求不高的用户分配一个空洞时间长带宽较宽的频谱势必会造成资源的浪费,从频谱有效管理来说这种方法也是不可取的。  

            我们将主要研究基于切换概率的频谱分配算法,在保证服务质量的同时,减少频谱切换次数。这里,我们介绍了一种基于频谱空洞预留算法的频谱匹配算法。
     

     

           第7步:判断参加竞价的次用户数或者参加拍卖的授权频谱是否为零,如果都不为零,算法返回到 Step 2,继续执行下面步骤;如果二者之一为零,那么该算法结束。

    2.仿真效果预览

    matlab2022a仿真结果如下:

    3.MATLAB部分代码预览

    1. clc;
    2. clear;
    3. warning off;
    4. %
    5. addpath 'My_Function\' %自定义函数路径
    6. addpath 'My_Figure\' %仿真结果图保存路径
    7. addpath 'My_Result\' %仿真结果及仿真中间结果数值保存路径
    8. %参数化
    9. lemda = 0.2;
    10. M = 50;%用户数量
    11. %信道数目
    12. N = 10;
    13. lemda = 1/2000 + (1/200-1/2000)*rand(N,1);%1/2000 ~ 1/200的均匀分布
    14. % p:次用户传输功率;
    15. % N0 :信道的噪声功率;
    16. % hi :用户i的发射机和接收机之间的信道系数。
    17. p = 10;
    18. No = 1;
    19. for nn = 1:M
    20. nn
    21. TIME = 1000;
    22. NUM = 0;
    23. %中继信道lemda
    24. lemda2 = 1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均匀分布
    25. hi = zeros(nn,1);
    26. for t = 1:TIME
    27. %Step 1,算法执行的开始,对参加竞价的次用户数等进行初始化。
    28. hi = rand(nn,1);
    29. hicr = rand(nn,1);
    30. IIs = [];
    31. for i = 1:nn
    32. fail = 1;
    33. %首先判断是否存在中继用户
    34. %授权用户出现的概率
    35. P = rand;
    36. P2 = rand;
    37. while fail == 1
    38. if P2 < 0.01%有认知用户
    39. %Step 2,计算出次用户 i 对频谱 j 的估价vi
    40. for j =1:N
    41. Vi1(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No));
    42. Vi2(j) = 1 - lemda2(j)/(log2(1+hicr(i)*p/No));
    43. end
    44. %Step 3,计算出每个次用户最终提交的竞标价格bi
    45. for mm1 =1:N
    46. bi1(j) = Vi1(j) - randn(1);
    47. bi2(j) = Vi2(j) - randn(1);
    48. end
    49. %Step 4,比较每个次用户的估价价格和自己提交的竞价价格的大小,如果估价
    50. %价格小于竞标价格,说明频谱 j 不适合次用户 i,返回到 Step 2,否则
    51. %直接执行下一步。
    52. for mm1 =1:N
    53. Vi_bi1(j) = Vi1(j) - bi1(j);
    54. Vi_bi2(j) = Vi2(j) - bi2(j);
    55. end
    56. Vi_bi = [Vi_bi1,Vi_bi2];
    57. else%无认知用户
    58. %Step 2,计算出次用户 i 对频谱 j 的估价vi
    59. for j =1:N
    60. Vi(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No));
    61. end
    62. %Step 3,计算出每个次用户最终提交的竞标价格bi
    63. for mm1 =1:N
    64. bi(j) = Vi(j) - randn(1);
    65. end
    66. %Step 4,比较每个次用户的估价价格和自己提交的竞价价格的大小,如果估价
    67. %价格小于竞标价格,说明频谱 j 不适合次用户 i,返回到 Step 2,否则
    68. %直接执行下一步。
    69. for mm1 =1:N
    70. Vi_bi(j) = Vi(j) - bi(j);
    71. end
    72. end
    73. %去掉小于0
    74. Ind1 = find(Vi_bi>0);
    75. if isempty(Ind1)==1
    76. fail = 1;
    77. else%没有中断,则选择%Step 5,找出最大的竞标价格及对应的次用户 i。
    78. [VV,II] = max(Vi_bi);
    79. fail = 0;
    80. end
    81. end
    82. IIs=[IIs,II];
    83. end
    84. %如果IIs前后不同,则说明成功,进行一次切换
    85. for iis = 1:length(IIs)-1
    86. if IIs(iis+1)~=IIs(iis)
    87. NUM = NUM+1;
    88. end
    89. end
    90. end
    91. PRO(nn) = NUM/TIME;
    92. end
    93. figure;
    94. plot(1:M,PRO,'b','Linewidth',2);
    95. xlabel('次用户个数');
    96. ylabel('切换次数');
    97. legend('基于竞价机制的中继协作频谱切换');
    98. 01_084_m

    4.完整MATLAB程序

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

    V

  • 相关阅读:
    2022年天猫双11购物节,10月24日晚8点预售来袭
    vue-quill-editor 上传图片 先传到服务器 在显示出来
    工欲善其事,必先利其器-使用vscode搭建go语言开发环境
    RabbitMQ常见命令总结
    FPGA信号处理系列文章——码元同步
    注解@PostConstruct分析
    南卡和益博思哪个电容笔比较好?国产电容笔全方位对比
    51单片机外设篇:ADC
    pca绘图
    YOLOv5项目实战(4)— 简单三步,教你按比例划分数据集
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/128038140