m基于3GPP-LTE通信网络的认知家庭网络Cognitive-femtocell性能matlab仿真_2g/3g/lte网络的性能 matlab仿真-程序员宅基地

技术标签: matlab  matlab程序设计  3GPP-LTE  认知家庭网络  Matlab通信和信号  matlab源码设计  

目录

1.算法概述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法概述

本系统所涉及到的几个主要模块,具体有如下几个模块:

A. Simulation Flow:仿真流程

B. Initialization:初始化

C. Mobility Model:移动模型

D. Traffic Model:流量模型

E. Propagation Model:信号传输模型

F. Multipath Model:多径模型

G. SINR Calculation:SINR值计算模型

H. Link Level Quality Estimation:链路级质量评价

I. Scheduling:系统调度

根据Path Loss Model: The path loss between a macro BS and a MS is characterized can be calculated as follows:

      这里,R的值表示发送到接收的距离,单位为“米”,Low是表示户外墙壁的衰减,通常这个值为10dB或者20dB。

2.仿真效果预览

matlab2022a仿真

 

 

基于Femtocell的频谱感知算法的仿真

3.MATLAB部分代码预览

Pd01         = zeros(1,length(SNR));%自适应双阈值
Pd02         = zeros(1,length(SNR));%自适应单阈值
Pd03         = zeros(1,length(SNR));%固定阈值
%虚警概率  
Pf01         = zeros(1,length(SNR));%自适应双阈值
Pf02         = zeros(1,length(SNR));%自适应单阈值
Pf03         = zeros(1,length(SNR));%固定阈值
%漏检概率  
Pm01         = zeros(1,length(SNR));%自适应双阈值
Pm02         = zeros(1,length(SNR));%自适应单阈值
Pm03         = zeros(1,length(SNR));%固定阈值

%通过蒙特卡洛仿真思想,对每组噪声情况的数据仿真多次
Stimes       = 20;
%模拟实际中的频谱感知信号    
Per_signal   = func_Signal_gen(); 

Len_Per_sig  = length(Per_signal);
%信号功率 
signal_power = 6225.6;
%定义信号长度
Signal_Len   = 2048;
%检测周期
Check_cycle  = 40;
Scycle       = 8;
%虚警概率        
Pfa          = 0.3;   
 
for i = 1 : length(SNR)
    index = index + 1;
    
    %通过蒙特卡洛仿真
    for m=1:1:Stimes
        i
        m
        
        %模拟实际中的频谱感知信号    
        Per_signal   = func_Signal_gen(); 
        %产生噪声
        noise = func_noise_gen(signal_power,SNR(i),Signal_Len);                      
        %随机占用信道   
        %改变伪随机序列长度,随机改变主用户的占用情况
        %在一般情况下,假设每个被占用的信道,所传送的是没有衰减的信号
        %在考虑femto的时候,考虑femto和macro之间的衰落,每个被占用的信道的衰减也是不同的
        %所以在被占用的信道之前乘以一个随机的衰减系数
        for m1=1:Scycle                                                       
            for n1=1:Scycle                                
                if (scrambler(m1,n1)==1)                         
                    %伪随机码为1,占用信道;
                    Per_signal_noise(1,(Len_Per_sig*(n1-1)+1):Len_Per_sig*n1) =rand(1,1)*Per_signal + noise;        
                else   
                    %伪随机码为0,未占用信道
                    Per_signal_noise(1,(Len_Per_sig*(n1-1)+1):Len_Per_sig*n1) = noise;           
                end
            end
        end
        
        %检测出哪些信道被干扰范围之内的宏系统用户所应用,从而避开这些信道。
        noise_under_check      = noise(1,1:Signal_Len);
        Per_signal_under_check = Per_signal(1,1:Signal_Len);
        %下面开始检测是否收到干扰
        %噪声检测
        [Check_noise,threshold]  = func_check(noise_under_check,Check_cycle);
        Check_noise=abs(Check_noise);   
           
        
        %进行信号检测                                                
        for j=1:Scycle
            %检测被干扰的信道是否被用户所用
            Per_signal_under_check(1,1:Signal_Len)= Per_signal_noise(1,(Signal_Len*(j-1)+1):Signal_Len*j);             
            [check_signal,threshold]=func_check(Per_signal_under_check,Check_cycle);
            check_signal_abs(j,m)=abs(check_signal);  
        end  
                
        %自适应门限计算                                    
        adap_thres(m)        = Check_noise*sqrt(2*log10(1./Pfa));
        %自适应双门限                                              
        adap_thres_double(m) = 0.2*Check_noise(1,:)/sqrt(2*log10(1./Pfa));
        %固定门限
        thresholds(m)        = threshold;
    end  
 
   


    %进行判决
    [Num_Pd_01,Num_Pm_01,Num_Pf_01] = func_check_level(check_signal_abs,mean(adap_thres_double),scrambler);  % 自适应双阈值的判决 
    [Num_Pd_02,Num_Pm_02,Num_Pf_02] = func_check_level(check_signal_abs,mean(adap_thres)       ,scrambler);  % 自适应单阈值的判决 
    [Num_Pd_03,Num_Pm_03,Num_Pf_03] = func_check_level(check_signal_abs,mean(thresholds)       ,scrambler);  % 固定阈值的判决  
 
     
    %判决统计
    %检测概率   
    Pd01(index)=Num_Pd_01/(20);   % 自适应双阈值 
    Pd02(index)=Num_Pd_02/(20);   % 自适应单阈值 
    Pd03(index)=Num_Pd_03/(20);   % 固定阈值  
    
    %漏检概率
    Pm01(index)=Num_Pm_01/(20);  % 自适应双阈值
    Pm02(index)=Num_Pm_02/(20);  % 自适应单阈值    
    Pm03(index)=Num_Pm_03/(20);  % 固定阈值         

    %虚警概率
    Pf01(index)=Num_Pf_01/(20);   % 自适应双阈值
    Pf02(index)=Num_Pf_02/(20);   % 自适应单阈值
    Pf03(index)=Num_Pf_03/(20);   % 固定阈值   
end

%检测概率  
Pd11=sort(averge(Pd01,length(SNR)));
Pd12=sort(averge(Pd02,length(SNR)));
Pd13=sort(averge(Pd03,length(SNR)));
%虚警概率
Pf11=(sort(averge(Pf01,length(SNR))));
Pf12=(sort(averge(Pf02,length(SNR))));
Pf13=(sort(averge(Pf03,length(SNR))));
%漏检概率
Pm11=fliplr(sort(averge(Pm01,length(SNR))));
Pm12=fliplr(sort(averge(Pm02,length(SNR))));
Pm13=fliplr(sort(averge(Pm03,length(SNR))));


%正确的检测概率
figure;
plot(SNR,Pd11,'r-*',SNR,Pd12,'b-^',SNR,Pd13,'k-o')
legend('自适应双门限','自适应单门限','固定门限')
xlabel('SNR')                
ylabel('Pd')  
title('正确检测概率图');
grid on;  

%虚警概率
figure;
plot(SNR,Pf11,'r-*',SNR,Pf12,'b-^',SNR,Pf13,'k-o')
legend('自适应双门限','自适应单门限','固定门限')
xlabel('SNR')                
ylabel('Pf')  
title('虚警概率图');
grid on 

%漏检概率
figure;
plot(SNR,Pm11,'r-*',SNR,Pm12,'b-^',SNR,Pm13,'k-o')
legend('自适应双门限','自适应单门限','固定门限')
xlabel('SNR')                
ylabel('Pm')  
title('漏检概率图');
grid on 

%ROC
figure;
plot(Pf11,Pd11,'r-*')
 
xlabel('Pf')                
ylabel('Pd')  
title('ROC');
grid on 
01-42m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-程序员宅基地

V

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hlayumi1234567/article/details/127968395

智能推荐

MyBatis框架-程序员宅基地

文章浏览阅读136次。学习主题:mybatis学习目标:1 掌握框架的概念2 掌握mybatis环境搭建3 掌握mybatis处理查询4 掌握mybatis核心配置文件5 掌握mybatis的多种查询方式6 掌握Log4j的使用7 掌握mybatis集成log4j1.框架是什么_为什么框架都要有配置文件(1)什么是框架? 常用的框架有哪些?1、框架是偷懒的程序员将代码进行封装,之后进行重复使用的过...

spring mvc自定义过滤器filter实现对request预处理和response响应_springmvc 自定义filter 导包-程序员宅基地

文章浏览阅读1.9w次,点赞3次,收藏10次。 过滤器的作用拦截请求,提取公用的代码,在请求访问action之前先处理一段代码,在action处理之后,在处理一段代码;基于这样的作用,我们就可以在请求访问action之前先处理一些整个项目共用的代码片段,比如,域名,,请求的url信息,以及基于域名拓展的自定义信息,比如用户数据等等基础数据,获取到这些基础数据之后,将这些数据保存在请求的上下文,这样在所有action请求就可以通用;..._springmvc 自定义filter 导包

Angular父组件调用子组件的方法【以弹出对话框为例】_angular组件调用组件方法-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏4次。脚手架生成ng new modal-appnpm icd modal-app/ng g c modal文件结构为:导入佐罗(ant design)样式npm install ng-zorro-antd --save在angular.json中引入:"styles": [ "node_modules/ng-zorro-antd/ng-zorro-antd.min.css" ]在style.css中引入:@import "~ng-zorro-antd/ng-zo._angular组件调用组件方法

MyBatis排序失效问题_desc mybatis 失效-程序员宅基地

文章浏览阅读797次。情景:将数据库里边的“新闻资讯”信息按照特定字段的升序/降序进行分页显示。   前端发送数据:newType(新闻类型,包括公司动态、行业资讯等类型)、orderBy(指定按照哪一个字段进行排序)、orderType(指定按照哪一种排序顺序进行排序,包括升序、降序)、start(开始查询的记录位置)、pageSize(本次查询的记录条数)。   MyBatis语句:    &l..._desc mybatis 失效

IDEA创建SpringBoot项目,前后端分离_在idea中用springboot构建后台项目(前后端分离)-程序员宅基地

文章浏览阅读4.7k次,点赞4次,收藏22次。IDEA创建SpringBoot项目,前后端分离1、创建项目2、点击next,进入选择springboot组件阶段4、点击finish即可完成创建springboot项目5、启动项目:创建成功后进入启动类,启动application类有如下输出即代表创建成功![,](https://img-blog.csdnimg.cn/20200716220241414.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aH_在idea中用springboot构建后台项目(前后端分离)

a-switch的几种简单应用-程序员宅基地

文章浏览阅读3.5k次。a-switch的几种简单应用_a-switch

随便推点

python的os.walk()函数的使用及对于root,dirs,files的理解_for root, dirs, files in os.walk-程序员宅基地

文章浏览阅读1.3w次,点赞15次,收藏55次。版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/90072063关于此函数的详情可移步:https://www.runoob.com/python3/python3-os-walk.html# -*- coding: utf-8 -*-import ..._for root, dirs, files in os.walk

Apache HTTPD 换行解析漏洞(CVE-2017-15715) 漏洞复现_一、apache httpd 换行解析漏洞(cve-2017-15715)-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏6次。前言Apache在2.4.0-2.4.29版本中存在一个解析漏洞。程序在解析PHP时,如果文件名最后有一个换行符x0A,apache依然会将其当成php解析,但是在上传文件时可以成功的绕过黑名单。如果上传文件的php程序是设置的白名单,那么这个漏洞将无法利用。漏洞环境该环境使用vulhub搭建,该漏洞路径为 vulhub/httpd/CVE-2017-15715。进入该漏洞路径后执行一下命令:docker-compose up -d-d 表示后台运行。注意:该命令必须在漏洞目录下执行,_一、apache httpd 换行解析漏洞(cve-2017-15715)

【实时日志分析系列之】-------- 技术选型篇_日志系统分析的项目背景及技术选型-程序员宅基地

文章浏览阅读1.4k次。前言大概是节前到节后的小2个月时间,已经把实时日志分析这一套小架子搭了起来,并且已经可以看到成果,现在继续利用业余时间把这个系列总结记录一下。逻辑架构图逻辑架构图如下:一图胜过千言万语,来看下实时日志分析的技术选型以及整个流程。其实这一套大部分都是组件,而整套组件中用到的都是Elastic Stack中的组件。首先采用了filebeat ( elastic st..._日志系统分析的项目背景及技术选型

Android 中如何使用CountDownTimer进行倒计时_new countdowntimer(20000, 1000)-程序员宅基地

文章浏览阅读542次。android中有倒计时控件Chronometer,但是该控件的一个特点是,如果所在页面不可见时,会暂停计时,如果你不希望计时暂停,则该控件不适用。CountDownTimer也提供了倒计时功能,而且页面不可见时会继续计时。用法如下:timeticker = new CountDownTimer(20000, 1000) {//毫秒数,前为总时间,后为间隔时间_new countdowntimer(20000, 1000)

sqlalchemy查询使用和遇到的问题_sqlalchemy 不查询id-程序员宅基地

文章浏览阅读2.5k次。sqlalchemy查询使用1.带条件查询查询是最常用的,对于各种查询我们必须要十分清楚,首先是带条件的查询#带条件查询rows = session.query(User).filter_by(username='jingqi').all()print(rows)rows1 = session.query(User).filter(User.username=='jingqi..._sqlalchemy 不查询id

H5页面加载页效果_resloader.js-程序员宅基地

文章浏览阅读1w次。使用resLoader.js引入resLoader.js文件 ,下载地址:点击此处直接下载在js里面写入下面代码 var loader = new resLoader({ resources: [ 'img/2.png', 'img/4.png' ], onStart: function(total) {}, on_resloader.js

推荐文章

热门文章

相关标签