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

news2025/7/29 14:13:24

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

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

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

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

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

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

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

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

 

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

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB部分代码预览

clc;
clear;
warning off;
% 
addpath 'My_Function\' %自定义函数路径
addpath 'My_Figure\'   %仿真结果图保存路径
addpath 'My_Result\'   %仿真结果及仿真中间结果数值保存路径
%参数化
lemda   = 0.2;
M       = 50;%用户数量
%信道数目
N       = 10;
lemda   = 1/2000 + (1/200-1/2000)*rand(N,1);%1/2000 ~ 1/200的均匀分布
 
% p:次用户传输功率; 
% N0 :信道的噪声功率;
% hi :用户i的发射机和接收机之间的信道系数。 
p  = 10;
No = 1;
 
 
for nn = 1:M
    nn
    TIME    = 1000;
    NUM     = 0;
    %中继信道lemda
    lemda2  =  1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均匀分布
    hi      = zeros(nn,1);
    for t = 1:TIME
        %Step 1,算法执行的开始,对参加竞价的次用户数等进行初始化。
        hi   = rand(nn,1);
        hicr = rand(nn,1);
        IIs = [];
        for i = 1:nn
            fail = 1;
            %首先判断是否存在中继用户
            %授权用户出现的概率
            P   = rand;
            P2  = rand;
            
            while fail == 1
                if P2 < 0.01%有认知用户
                    %Step 2,计算出次用户 i 对频谱 j 的估价vi
                    for j =1:N
                        Vi1(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No));
                        Vi2(j) = 1 - lemda2(j)/(log2(1+hicr(i)*p/No));
                    end
                    %Step 3,计算出每个次用户最终提交的竞标价格bi
                    for mm1 =1:N
                        bi1(j) = Vi1(j) - randn(1);
                        bi2(j) = Vi2(j) - randn(1);
                    end
                    %Step 4,比较每个次用户的估价价格和自己提交的竞价价格的大小,如果估价
                    %价格小于竞标价格,说明频谱 j 不适合次用户 i,返回到 Step 2,否则
                    %直接执行下一步。
                    for mm1 =1:N
                        Vi_bi1(j) = Vi1(j) - bi1(j);
                        Vi_bi2(j) = Vi2(j) - bi2(j);
                    end
                    Vi_bi = [Vi_bi1,Vi_bi2]; 
                else%无认知用户
                    %Step 2,计算出次用户 i 对频谱 j 的估价vi
                    for j =1:N
                        Vi(j) = 1 - lemda(j)/(log2(1+hi(i)*p/No));
                    end
                    %Step 3,计算出每个次用户最终提交的竞标价格bi
                    for mm1 =1:N
                        bi(j) = Vi(j) - randn(1);
                    end
                    %Step 4,比较每个次用户的估价价格和自己提交的竞价价格的大小,如果估价
                    %价格小于竞标价格,说明频谱 j 不适合次用户 i,返回到 Step 2,否则
                    %直接执行下一步。
                    for mm1 =1:N
                        Vi_bi(j) = Vi(j) - bi(j);
                    end
                end
                %去掉小于0的
                Ind1 = find(Vi_bi>0);
                if isempty(Ind1)==1
                   fail = 1;
                else%没有中断,则选择%Step 5,找出最大的竞标价格及对应的次用户 i。
                   [VV,II] = max(Vi_bi);  
                   fail = 0;
                end 
            end
            IIs=[IIs,II];
        end
        %如果IIs前后不同,则说明成功,进行一次切换
        for iis = 1:length(IIs)-1
            if IIs(iis+1)~=IIs(iis)
               NUM = NUM+1;
            end
        end
    end
    PRO(nn) = NUM/TIME;
end
 
figure;
plot(1:M,PRO,'b','Linewidth',2);
xlabel('次用户个数');
ylabel('切换次数');
legend('基于竞价机制的中继协作频谱切换');
01_084_m

4.完整MATLAB程序

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

V

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

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

相关文章

植入“人工心脏”助患者重获“心”生

【同期】人工心脏移植患者 刘女士这要是在过去的时候也就放弃了&#xff0c;我再活20年&#xff0c;我还能看着我大孙子成家&#xff0c;这就是我最大的希望。【解说】11月22日&#xff0c;人工心脏移植患者和心脏移植患者在即将康复出院前&#xff0c;互相握手庆贺。据了解&am…

【UDS】ISO14229之0x3E服务

文章目录前言一、理论描述二、使用步骤1.请求2.响应总结->返回总目录<- 前言 简称&#xff1a; “TesterPresent”&#xff0c;测试工具保持连接服务 功能&#xff1a; 此服务用于告知电控单元测试工具仍在线。该服务需周期性发送&#xff0c;用于重置 S3server 计时器…

SQL语句练习

1. 创建学生表 S(命名格式“姓名拼音_三位学号_s”&#xff0c;如 LBJ_023_s)并插入数据 2. 创建课程表 C(命名格式“姓名拼音_三位学号_c”&#xff0c;如 LBJ_023_c) 并插入数据 3. 创建选课表 SC(命名格式“姓名拼音_三位学号_sc”&#xff0c;如 LBJ_023_sc) 并插入数据 …

寻找链表相交结点问题

寻找链表相交结点问题 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;寻找链表相交结点问题 CSDN&#xff1a;寻找链表相交结点问题 题目描述 给定两个可能有环也可能无环的单链表&#xff0c;头节点head1和head2。请实现一个函数&#xff0c;如果两个链表…

Vue3路由守卫、vuex的使用、vuex模块化拆分、vite中自动导入模块文件

文章目录1. 路由守卫2. vuex的使用2.1 基本使用2.2 模块化拆分方式一方式二方式三3. 在vite中自动导入模块文件1. 路由守卫 vue3 中的导航守卫与 vue2 中的基本一致&#xff0c;不同的地方在于&#xff0c;vue3 中导航守卫取消了 next 参数&#xff0c;而是通过返回 false 来取…

【Silvaco example】GaN diode, Reverse-bias leakage current vs temperature

1、例子讲解 该示例演示了&#xff0c;GaN肖特基二极管中&#xff0c;因声子辅助隧穿&#xff08; phonon-assisted tunneling &#xff09;的反向偏置漏电流的温度依赖性建模。 例子参考以下论文&#xff1a; Pipinys P., and V. Lapeika, "Temperature dependence of …

Android入门第36天-以一个小动画说一下Android里的Handler的使用

简介 我们在前面的Android教程中已经提到过这么一件事&#xff1a;Android在启动后会有一个主线程。它不允许任何子线程去改变主UI线程里的内容。 这么做是为了妨止&#xff0c;万一有一个带有大事务的线程导致了渲染组件时间过长最终导致Android UI出现“闪退”、“崩溃”的…

突遇暴雨,怎样远程连接服务器

“我被封印在家里了&#xff0c;去不了单位&#xff0c;电脑关机了&#xff0c;用来远程开机远控&#xff0c;没想到遇到了大风暴雨&#xff0c;结果非常尴尬&#xff01;”最近收到好几个这样的粉丝留言。突遇暴雨&#xff0c;虽然准备了远程办公工具&#xff0c;但还没来得及…

引擎入门 | Unity UI简介–第1部分(10)

本期我们继续为大家进行Unity UI简介&#xff08;第一部分&#xff09;的后续教程 本篇内容 23.创建UI Manager 24.点击按钮时调用StartGame 文章末尾可免费获取教程源代码 本篇Unity UI简介&#xff08;第一部分&#xff09;篇幅较长&#xff0c;分为十篇&#xff0c;本篇…

vs调试技巧(详细)

调试技巧一.简介1.调试是什么2.调试的基本动作3.Debug和Rlease的介绍二.调试介绍1.调试环境准备2.快捷键的使用三.调试时看当前信息1.查看临时变量的值2.查看内存四.多多动手调试一.简介 1.调试是什么 调试本身是一个动作&#xff0c;是用来除去错误的动作 2.调试的基本动作 …

【前端】JavaScript-PC端网页特效

目录 一、元素偏移量offset系列 1.1offset概述 1.2offset与style区别 二、元素可视区client系列 立即执行函数 三、元素滚动scroll系列 三大系列总结 mouseenter和mouseover的区别 一、元素偏移量offset系列 1.1offset概述 offset系列相关属性可以动态的得到该元素的位置…

三十四、Java Iterator(迭代器)

Java Iterator&#xff08;迭代器&#xff09; Java Iterator&#xff08;迭代器&#xff09;不是一个集合&#xff0c;它是一种用于访问集合的方法&#xff0c;可用于迭代 ArrayList 和 HashSet 等集合。 Iterator 是 Java 迭代器最简单的实现&#xff0c;ListIterator 是 Co…

使用Emscripten编译Eigen算法模块为WebAssembly

前言 最近大降温&#xff0c;才意识到秋天是真的来了。古人有诗云&#xff1a;“眉如青山黛&#xff0c;眼似秋波横。”这足以说明秋天的水是多么的浪漫、多情、温柔。 秋天都懂得浪漫&#xff0c;你天天被人说木讷&#xff0c;何不做点改变&#xff1f;今天我来教大家属于程…

Android 开发音频录播中媒体录制器MediaRecorder和媒体播放器MediaPlayer的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、媒体录制器MediaRecorder MediaRecorder是Android自带的音视频录制工具&#xff0c;它通过操纵摄像头和麦克风完成媒体录制&#xff0c;既可录制视频又可以单独录制音频 下面是它的常用方法 reset 重置录制资源 prepare 准备录制…

C/C++语言 3 —— 输入输出

C语言的io函数&#xff1a; printf 输出 和 scanf输入 是 C语言的标准IO函数的一部分&#xff1a; scanf函数会将屏幕上输入的字符&#xff0c;根据格式的要求转化为对应的数据&#xff1a; scanf 需要提供内存地址代码&#xff1a; #include <iostream> using nam…

【数字电路基础】进制转换:二进制、十进制、八进制、十六进制、反码、补码、原码

文章目录 一、无符号数进制转换1.1、十进制转二、八、十六1.1.1、 十进制转二进制1.1.2、 十进制转八进制1.1.2、 十进制转十六进制1.2、二、八、十六转十进制1.3 二进制转八、十六1.4 八、十六转二进制1.4 八转十六二、有符号数进制转换2.1 正数进制转换2.2 负数进制转换一、无…

Linux安装Tomcat详细教程(图文)

1、下载Linux版本****的Tomcat 下载地址 2、在usr目录下新建tomcat目录&#xff0c;然后将下载的tomcat拷贝到新建的tomcat目录中 创建目录命令&#xff1a;mkdir /usr/tomcat 3、进入到tomcat目录中解压下载的tomcat安装包 解压命令&#xff1a;tar -zxvf apache-tomcat-8…

自动驾驶感知算法实战13——自动驾驶感知未来发展方向分享

自动驾驶感知算法实战专栏:https://blog.csdn.net/charmve/category_12097938.html目录 发展方向:分享:自动驾驶3.0未来需要解决的问题发展方向: 多模态感知 多任务处理 大模型(通用智能) 分享: 自动驾驶3.0 第一,自动驾驶3.0是数据驱动,更是“真实场景下的海量大数据…

底物多肽Phe-Gly-His-Phe(NO2)-Phe-Ala-Phe-OMe、50572-79-7

胃蛋白酶的良好底物&#xff0c;也被组织蛋白酶 D 切割。 A good substrate for pepsin which is also cleaved by cathepsin D.编号: 402332 中文名称: Phe-Gly-His-Phe(NO2)-Phe-Ala-Phe-OMe CAS号: 50572-79-7 单字母: H2N-FGH-F(4NO2)-FAF-OMe 三字母: H2N-Phe-Gly-His-Phe…

企业信息化的供给侧改革

企业信息化建设供给侧改革的新思路 传统的企业信息化建设思路是什么呢&#xff1f;它是从需求侧的规划跟实施入手的&#xff0c;然后解决做哪些和怎么做业务信息化的问题&#xff0c;用不着关注承担这个项目建设的供给体系的质量、效率、结构问题。这就会导致在项目建设过程中…