m分集2跳OFDM系统中基于功率分配和子载波配对算法的信道容量matlab仿真

news2025/8/11 16:37:12

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

       随着当代无线通信事业的迅猛发展,无线频谱资源已显得越来越匮乏,传统固定静态的无线频谱分配模式和策略,很难为未来的无线通信事业的进一步发展提供更多可利用的无线频谱带宽和更高的频谱利用率。认知无线电技术是实现动态频谱机会接入并有效解决无线频谱资源匮乏问题的关键技术之一;正交频分复用技术具有抗多径干扰与抗频率选择性衰落能力强,以及频谱利用率高等优点,使其成为实现认知无线电系统的理想备选方案之一。功率分配不但是传统正交频分复用系统中的关键核心技术,而且还是认知无线电系统中频谱分析与判决的重要手段。在认知无线电系统中,认知用户通信链路信道容量的最大化,同样也需要深化对功率分配的研究。本文针对正交频分复用调制子载波的IEEE802.11a下行链路的认知无线电系统,进行了发射功率分配算法研究。

       本课题,我们参考文献《Power Allocation and Subcarrier Pairing Algorithm
for Regenerative OFDM Relay System》对OFDM的功率分配和子载波配对算法的信道容量进行matlab仿真分析研究。

        随着无线通信的飞速发展,所需要的无线频谱资源越来越多,当前频谱资源已显得越来越缺乏。认知无线电提供了一种按伺机的方式共享和利用频谱的手段,可以有效地解决这一问题。认知无线电技术通过智能感知通信环境中未使用的频谱,并加以利用来提高频谱的利用效率。OFDM的频谱利用效率高,并且抗频率选择性衰落特性强,已成为4G的主要应用技术。随着人们对通讯业务和质量的要求不断提高,OFDM技术的应用也越来越广泛。OFDM系统为了实现系统容量最大化通常会对系统用户进行合理的功率分配,因此功率分配是OFDM系统的关建技术之一。 

       在基于OFDM的认知无线电系统中,授权用户会受到认知用户带内子载波带外旁瓣泄漏功率的干扰。这里引入了功率控制参数来调整授权用户的干扰功率约束值,提出了一种认知用户子载波间的最优功率分配算法,通过求解一个凸优化问题来获得最优的功率分配方案。仿真结果表明:与其他算法相比,采用该方法获得的功率分配方案,在满足授权用户干扰功率约束值的条件下,可以使认知用户的信道容量最大化。

       为了使N路子信道信号在接收时能够完全分离,需要满足在每个码元持续时间Ts内,任意两个载波相互正交。三角函数系{1,sint,cost,...,sinnt,cosnt,...}满足任意两个不同函数之间相互正交(在[−π,π]内两个不同函数乘积积分为0),利用这一性质,可以得到彼此相互正交的载波。从时域上来看,发送端信号在空间中的叠加可以写作:

       从复数形式上可以看出,当对时间t进行离散化,OFDM其实就是对各路子载波上的传输信号(Bi)进行了求傅里叶反变换的操作,OFDM在进行调制时也是利用IFFT模块实现的。  

       从频域上来看OFDM。调制时,时域上是一个正弦载波和一个码元波形(门函数)的乘积,频域上体现的是对门函数频谱的搬移(门函数的频谱为sinc函数),OFDM为了保证载波的正交性,最小子载频间隔Δf=1Ts。  

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB部分代码预览

%%
%不分集OFDM的功率分配不带子载波配对算法下的信道容量;
%PA without pairing without diversity
C1  = 0;
C1s = 0;
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        for Ts = 1:Time_Slot
            Cha      = 0.5e-1*random('rayleigh',1,N_hop/Time_Slot,Num_sc);
            Sub      = zeros(N_hop/Time_Slot,Num_sc);%每跳的子载波分布向量
            Capacity = zeros(1,N_hop/Time_Slot);     %定义容量向量
            for i=1:N_hop/Time_Slot
                %每一跳噪声设定
                n0        = randn(1,10000)*sqrt(SCB*0.5e-10);      
                N0        = std(n0,1,2)^2/SCB;
                %选择其中的min值
                [a,ind]   = min(Cha(:,Time_Slot));   
                %将选中的载波的信道因子赋值给该跳的子载波分布向量
                Sub(i,ind)= a;                      
                %进行注水功率分配
                [Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar); 
                %载波被某一跳占用,将所有跳上的该载波信道因子设为0
                Cha(:,ind)             = 0;     
            end
            while max(Cha(:))> 0               %判断是否有未分配的载波,有的话继续分配
                [b,indexmin] = min(Capacity1);  %找出速率最小的跳
                i            = indexmin;
                [c,indexmax] = max(Cha(i,:)); %给最小的跳分配载波
                k            = indexmax;
                Sub(i,k)     = c;
                [Capacity1(i),Powers1] = pwrallo(SP,Sub(i,:),SCB,N0,gammar);
                Cha(:,k)     = 0;
            end     
        end
        for kk = 1:length(Powers1)
            h1k    = func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),kk);
            h2k    = func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),kk);
            delta  = (SNR)^2/2;
            a1k    = (abs(h1k))^2/delta;
            a2k    = (abs(h2k))^2/delta;
            Pk     = Powers1(kk)+1/((a1k*a2k)/(a1k+a2k));
            C1(kk) = log2(1 + (a1k*a2k)/(a1k+a2k)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    PA_Wo_P(Ss) = mean(C1s)/1e6;
end
%**************************************************************************
%**************************************************************************
%**************************************************************************
%************************************************************************** 
 
 
 
%%
%不分集OFDM的均匀功率分配带子载波配对算法下的信道容量;
%uniform PA without pairing without diversity
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        %通过注水法得到的每个Powers1,然后进行sub_carrier pairing
        %通过注水法得到的每个Powers1,然后进行sub_carrier pairing
        Num_sc1 = randperm(Num_sc);
        Num_sc2 = randperm(Num_sc);        
        for kk = 1:length(Num_sc2)
            h1k(kk)= func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));
            h2k(kk)= func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));
            hk(kk) = h1k(kk)*h2k(kk)/(h1k(kk) + h2k(kk));
            delta  = (SNR)^2/2;
            a1k(kk)= (abs(h1k(kk)))^2/delta;
            a2k(kk)= (abs(h2k(kk)))^2/delta;
        end
        %排序
        A1k = sort(a1k);
        A2k = sort(a2k);
        for kk = 1:Num_sc
            %均匀分配
            Pk      = SP/Num_sc;
            tmp1(kk)=(A1k(kk)*A2k(kk))/(A1k(kk)+A2k(kk));
            C1(kk)  = log2(1 + tmp1(kk)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    uPA_W_P(Ss) = mean(C1s)/1e6;
end
%**************************************************************************
%**************************************************************************
%**************************************************************************
%**************************************************************************
 
 
 
%%
%不分集OFDM的均匀功率分配不带子载波配对算法下的信道容量;
%uniform PA without pairing without diversity
for Ss = 1:length(Dist_Tx_Rn)
    Ss
    %利用蒙特卡洛算法思想,进行多次的循环,再计算平均
    for q=1:Simu_Times
        Num_sc1 = randperm(Num_sc);
        Num_sc2 = randperm(Num_sc);
        for kk = 1:Num_sc
            h1k(kk)    = func_h1(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(2),Num_sc1(kk));
            h2k(kk)    = func_h2(Delay,Gain,Num_sc,SB,Dist_Tx_Rn(Ss),Path_loss_factor(3),Num_sc2(kk));
            delta      = (SNR)^2/2;
            a1k(kk)    = (abs(h1k(kk)))^2/delta;
            a2k(kk)    = (abs(h2k(kk)))^2/delta;
            %均匀分配
            Pk         = SP/Num_sc;
            tmp2(kk)   =(a1k(kk)*a2k(kk))/(a1k(kk)+a2k(kk));
            C1(kk)     = log2(1 + tmp2(kk)*Pk); 
        end
        C1s(q) = SB/(2*Num_sc)*sum(C1); 
    end
    uPA_Wo_P(Ss) = mean(C1s)/1e6;
end
01_064_m

4.完整MATLAB程序

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

V

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

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

相关文章

源码分析 Laravel 重复执行同一个队列任务的原因

发现问题 在 Laravel 中使用 Redis 处理队列任务,框架提供的功能非常强大,但是最近遇到一个问题,就是发现一个任务被多次执行,这是为什么呢? 先说原因: 因为在 Laravel 中如果一个队列(任务&a…

Java项目:JSP民宿预订网站信息管理平台

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台,包括管理员与普通用户两种角色; 管理员角色包含以下功能: 管理员登录,用户管理,会员管理,…

高斯消元总结

A-Matrix Equation_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(重现赛) 自己写一个2维矩阵或者3维矩阵就可以发现对于每一列来说都是独立的,每一列的n个Cij都是都关系的&#xff0c…

Sentinel熔断降级

Sentinel熔断降级 1、介绍 官网地址:https://github.com/alibaba/Sentinel/wiki/熔断降级 Sentinel 提供以下几种熔断策略: 慢调用比例 (SLOW_REQUEST_RATIO):选择以慢调用比例作为阈值,需要设置允许的慢调用 RT(即最…

cesium for ue5中actor的cesium georeference组件的改变

今天,重新回顾下cesium for ue的教程,actor添加cesium georeference组件 发现在ue5中,没有这个组件了, 忍住卸载ue5,重新安装ue4.27的冲动,cesium的组件数量增多了,反而功能减少了&#xff…

hive的安装配置及使用

hive需要MySQL和hadoop的支持 文章目录hive需要MySQL和hadoop的支持安装完毕MySQL之后下载并解压hive添加系统环境变量配置hive修改 vim hive-env.sh修改hive-site.xml(1、简化配置(推荐))修改hive-site.xml(2、在简化的基础上添加了部分配置)下载一个my…

Java项目:JSP药店药品商城管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台,分为管理员与普通用户两种角色,管理员登录后台,普通用户登录前台; 管理员角色…

VMware使用教程

文章目录下载软件安装软件新建虚拟机自定义安装下载软件 下载VMware软件(应该是需要许可证/密钥的,时间长有点忘了,当然建议买,拒绝白嫖,保护产权(可以直接百度搜doge))。 安装软件…

Sentinel流控规则

Sentinel流控规则 1、基本介绍 资源名:唯一名称,默认请求路径(如:http://localhost:8089/testA) 针对来源:Sentinel可以针对调用者进行限流,填写微服务名,指定对哪个微服务进行限流 ,默认defa…

Bioinformatics2021 | FraGAT+:基于分子原始片段的多尺度图注意力机制的分子性质预测模型

原文标题:FraGAT: a fragment-oriented multi-scale graph attention model for molecular property prediction 论文地址:FraGAT: a fragment-oriented multi-scale graph attention model for molecular property prediction | Bioinformatics | Oxfo…

Windows OpenGL ES 图像阴影

目录 一.OpenGL ES 图像阴影 1.原始图片2.效果演示 二.OpenGL ES 图像阴影源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

SuperMap 云原生动态伸缩不可用该如何解决

最近碰到个别用户在ARM环境国产化操作系统中使用SuperMap iManager for K8S的时候出现服务节点伸缩不生效的问题。今天咱们就以此例来给大家讲解下如何解决该问题。 问题现象:在云套件服务节点管理中,设置伸缩为动态伸缩,设置阈值条件后&…

web前端-javascript-自增++和自减--(a++和++a,都在自身基础上+1,a--和--a都在自增基础上-1,自增和自减的练习)

文章目录自增和自减--1. 自增 1.1 通过自增可以使变量在自身的基础上增加1.2 对一个变量自增以后,原变量的值会立即自增 11.3 自增分为两种,:后(a) 和 前(a)2. 自减 --2.1 通过自减可以使变量在自身的基础上减 12.2 自减分成两种,…

(热门)智慧社区助力实现社区数字化转型

社区是人们生活的重要场所,传统社区的运营及管理方式已经无法满足人们日益增长的物质和文化生活需要。社区的通讯、安全和社区居民信息的收集、处理及共享等问题都成为阻碍社区服务进一步发展的瓶颈。 智慧社区是利用物联网、云计算、移动互联网、信息智能终端等新…

前后端分离项目,vue+uni-app+php+mysql订座预约系统设计与实现(H5移动项目)

功能介绍 【后台功能】 广告管理:设置小程序首页轮播图广告和链接 留言列表:所有用户留言信息列表,支持删除 会员列表:查看所有注册会员信息,支持删除 录入资讯:录入资讯标题、内容等信息 管理资讯&#x…

电力电子元器件行业研究:市场规模持续增长

电力电子元器件制造是指用于电能变换和控制(从而实现运动控制)的电子产品的制造。 电力电子器件具有以下特征 1)其处理电功率的能力较强;(2)其主要工作在开关状态;(3)电…

前后端分离项目,vue+uni-app+php+mysql电影院售票系统设计与实现(H5移动项目)

功能介绍 【后台功能】 会员列表:查看所有注册会员信息,支持删除 录入资讯:录入资讯标题、内容等信息 管理资讯:查看已录入资讯列表,支持删除和修改 广告设置:上传图片和设置小程序首页轮播图广告地址 留言…

Java项目:JSP网上在线酒类商城系统网站

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为前后台项目,分为普通用户与管理员两种角色,普通用户登录前台,管理员登录后台; 管理员角…

[附源码]java毕业设计医院疫情疾控管理系统

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

Android入门第34天-Android的Menu组件使用大全

简介 Android有不同的菜单: 系统菜单弹出菜单(可自定义样式)Context Menu;子菜单; 菜单的使用和我们前面说的AlertDialog很像。它可以支持自定义样式、也可以对菜单的点击事件进行绑定。 Android里有几个MainActivit…