m虚拟MIMO系统的配对调度算法的matlab仿真,对比Random配对,Orthogonal配对以及Deteminant配对

news2024/10/7 16:23:51

目录

1.算法概述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法概述

       利用多输入多输出(MIMO,Multiple InputMultiple Output)技术通过空间复用能够显著的提高通信系统的容量,并可以很好的缓解时/频资源日益紧张的现状。

       该技术在 LTE标准中被列为必选项,并在下行链路上得以使用。同时,与之相对应的用于上行链路的虚拟 MIMO(Virtual MIMO)系统也得到了广泛的关注。其中,针对 Virtual MIMO系统中的关键技术-用户配对机制,国内外的研究人员更是进行了大量研究工作,并提出了许多新的算法或改进。  

        Virtual MIM0技术是指通过特定的选择算法将符合标准的用户分成一组,利用相同的时/频资源来传输数据的技术。由于组内的用户同时通过各自的天线发送数据也就在上行方向上构成了类似于传统MIMO技术中的多天线发射阵列。

        但在具体的实现上,各终端用户仍然采用单天线配置,仅是通过特定的调度算法实现了采用相同无线资源的联合发送。由于该技术可以在没有增加用户终端设备的成本和发射功率的情况下,在上行传输方向构成类似于 MIMO的传输系统。因此,对于提高无线资源的利用率、改善上行链路传输容量具有积极的作用。

2.仿真效果预览

matlab2022a仿真

 

 

 

        从上面的仿真结果可知,采用全配对的方法,可以获得较大,但是其数据丢失率也较大,所以设计了基于SINR的配对算法,这样可以根据实际的噪声等干扰因素的影响来进行合理的配对。

3.MATLAB部分代码预览

M               = 2;
N               = 2;
% Pt              = 14;%发射功率
% Gt              = 64;%发送天线的增益
% Gr              = 64;%接收天线的增益
% R               = 0.6;%小区半径
% Phatloss        = 128.1 + 37.6*log10(R);%路径损耗
% Shadowfading    = 8;%阴影衰落
% PN              = 5;%噪声功率
% SNRs            = Pt + Gt + Gr - Phatloss - Shadowfading - PN;
SNRs            = 10;%定义SNR值
tc              = 10;%采样率
Num_user        = 24;%用户的个数
sel             = 1;%1,2,3,4,选择四种不同的方法进行仿真
sel2            = 0;%0直接出图,1进行逐个仿真
 
if sel2 == 1
    for j=1:Num_user
        j
        %计算第一个用户的相关值
        In_index         = zeros(1,10*j);
        though_Output    = zeros(1,10*j);
        though_Input     = zeros(1,10*j);
        SNR              = SNRs*rand(1,10*j);
        %调用调度函数
        if sel == 1%如果选择1
          [H,number]     = func_No_Scheduling(10*j,M,N);%不进行pairing
        end
        if sel == 2%如果选择2
          [H,number]     = func_Random_Paring_Scheduling(10*j,M,N);%随机Pairing
        end   
        if sel == 3%如果选择3
          [H,number]     = func_Orthogonal_Paring_Scheduling(10*j,M,N);%正交Pairing
        end  
        if sel == 4%如果选择4
          [H,number]     = func_Determinant_Paring_Scheduling(10*j,M,N);%行列式Pairing
        end  
        %基于MMSE的接收   
       [M,Nes]           = func_MMSE_receiver(H,SNR(number));%对数据进行MMSE原则的接收
        sirer            = zeros(1,10*j);
        sirer(number)    = log2(1+Nes);
       [though_Output,indexout,uenow]=func_calc(sirer,though_Input,tc,In_index,number);%计算得到最后的输出信息量 
        though_Input     = though_Output;
        In_index         = indexout;
        S(1)             = sum(log2(1+Nes));
        %计算其余用户的相关值
        %以下是对其余用户做同样的运算
        for k=2:10*j
            M = 2;
            H = zeros();
            %调用调度函数  
            if sel == 1
              [H,number]  = func_No_Scheduling(10*j,M,N);%不进行pairing
            end
            if sel == 2
              [H,number]  = func_Random_Paring_Scheduling(10*j,M,N);%随机Pairing
            end   
            if sel == 3
              [H,number]  = func_Orthogonal_Paring_Scheduling(10*j,M,N);%正交Pairing
            end  
            if sel == 4
              [H,number]  = func_Determinant_Paring_Scheduling(10*j,M,N);%行列式Pairing
            end 
           %基于MMSE的接收  
           [M,Nes]        = func_MMSE_receiver(H,SNR(number));
            sirer            = zeros(1,10*j);
            sirer(number) = log2(1+Nes);
           [though_Output,indexout,uenow]=func_calc(sirer,though_Input,tc,In_index,number);%计算得到最后的输出信息量 
            though_Input  = though_Output;
            In_index      = indexout;
            S(k)          = sum(log2(1+Nes));
        end
        %计算信道容量
        fair(j)       = sum(though_Output)^2/(length(though_Output)*sum(though_Output.^2));
        SNR_Linear    = 10^(SNRs/10);
        Capacity(j)   = 0.5 * log10(1 + (SNR_Linear * sum(abs(fair(j)))));   
    end
    %根据信道容量计算CDF值
    CDFs=func_CDF(Capacity,Num_user);
    if sel == 1
      save data0.mat CDFs%保存CDF数据
    end
    if sel == 2
      save data1.mat CDFs%保存CDF数据
    end   
    if sel == 3
      save data2.mat CDFs%保存CDF数据
    end  
    if sel == 4
      save data3.mat CDFs%保存CDF数据
    end 
else
    load data0.mat
    figure
    plot(1:0.5:12,CDFs,'k','LineWidth',2);grid on%使用plot进行画图
    hold on;
    load data1.mat
    plot(1:0.5:12,CDFs,'b','LineWidth',2);grid on%使用plot进行画图
    hold on;
    load data2.mat
    plot(1:0.5:12,CDFs,'r','LineWidth',2);grid on%使用plot进行画图
    hold on;
    load data3.mat
    plot(1:0.5:12,CDFs,'g','LineWidth',2);grid on%使用plot进行画图
    hold on;
    axis([1,12,0,1]);
    legend('Receive Diverse','Random Pairing','Orthogonal Pairing','Determinant Pairing');%不同的标志
    xlabel('Thoughout');%X坐标
    ylabel('CDF');%Y坐标
end
01_039_m

4.完整MATLAB程序

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

V

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

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

相关文章

BCN衍生物:endo-BCN-PEG4-TAMRA/Palmitic/DSPE

凯新生物公司小编分享:endo-BCN-PEG4-TAMRA ,endo-BCN-PEG4-Palmitic,endo-BCN-PEG4-DSPE这几种的物理相关数据。 1、endo-BCN-PEG4-TAMRA 四甲基罗丹明(TAMRA)-叠氮化物是一种化学探针,用于直接在活细胞中…

食品连锁企业怎样结合快解析打造智能安全管理系统

食品质量安全是食品类企业的生命线,对产品质量的安全管控必须十分严苛。A企业是全国知名的一家大型食品连锁企业,为了做好质量监控,A企业研发了一套智能安全管理预警系统,可以从多维度对生产一线的违规事件进行预警记录&#xff0…

MCE | 细胞实验——多溶剂集合

■ 不到不得已,谁也不想现用现配细胞实验的工作浓度通常在 μM 级别,有的还是 nM 和 pM,要做到现用现配,难度系数有点高,好比让一个日均不到 1000 步的人去爬 5000 米的山峰,这难度,你细品&…

Bot代码的执行(微服务)

负责接收一段代码,把代码扔到我们的队列当中、每一次我们去运行一段代码 运行结束之后、把我们的结果返回给我们的服务器 先把依赖复制过来、我们需要动态的把用户传过来的Java代码编译然后执行 需要加入依赖joor-java-8、用Java的代码的写法举例子 未来自己实现的时…

阿里云无影研发负责人任晋奎:端云技术创新,打造全新用户体验

11 月 4 日,阿里云无影研发负责人任晋奎在 2022 云栖大会“无影技术创新与应用实践”论坛上,发表了题为《端云技术创新,打造全新用户体验》的演讲,对无影端云开放架构的技术能力做了深入浅出的分享,解读了无影如何以技…

实现制作动漫版的你---动漫风格迁移网络AnimeGANv2

AI依然火 最近居家太无聊了,无意见逛到了AI社区,发现最近AI算法热度还是很高,什么AI绘画,还有什么AI作诗,写歌。可以说,人工智能领域在一步步挑战人类的高度,从循规蹈矩的简单工作,…

【笔试强训】Day1

🌈欢迎来到笔试强训专栏 (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一句鸡汤&#x…

阿里云云数据库Redis的核心概念以及正确购买姿势(十五)

文章目录1.云数据库Redis基本介绍1.1.什么是云数据库Redis1.2.Redis标准版单副本架构1.3.Redis标准版双副本架构1.4.Redis集群版单副本架构1.5.Redis集群双副本架构1.6.Redis集群的直连架构1.7.Redis集群读写分离架构2.购买云数据库Redis2.1.创建Redis实例2.2.配置商品类型及可…

WPF 控件专题 TreeView控件详解

1、TreeView介绍 命名空间:System.Windows.Controls TreeView 表示一个控件,该控件在树结构(其中的项可以展开和折叠)中显示分层数据。 TreeView 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (&a…

进程的通信 - WM_COPYDATA

在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。其中使用SendMessage向另一进程发送WM_COPYDATA消息是一种比较经济实惠的方法。 WM_COPYDATA通信需要将传递的消息封装在COPYDATASTRUCT结构体中,在SendMessage消息传递函数时作…

[附源码]java毕业设计校园超市进销存管理系统

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

基于PETALINUX的以太网调试

1、建立工程 2、编译工程,导出xsa文件 3、建立petalinux工程 4、生成boot和image.ub文件,将文件复制到系统为fat32的sd卡中。 5、插上串口,插上网线 6、vm中需要桥接网络,有正确的IP地址 7、通过串口,配置板卡的以太…

前端面试题(JS部分)

目录一, 数据类型1,什么是引用类型,值类型?2,哪些值类型3,哪些引用类型4,判断数据类型5,typeof判断6,instanceof7,construtor二,浅拷贝 / 深拷贝1…

好物推荐:文字转语音朗读软件哪个好?

不知道大家有没有像我一样的,对“语音播放”、“语音朗读”是又爱又恨的。有时工作繁忙,而同事或客户发来语音资料需要整理时,就会很烦躁,因为语音的整理起来比文字的繁琐一些。而像有时在家休息,还得看一些资料时&…

亚马逊鲲鹏系统之亚马逊买家号养号时需要注意哪些?

经常做亚马逊测评的朋友应该都清楚,亚马逊买家号养号是很有必要的,如果一个新买家号没有养过号就进行刷单测评,那么是很容易就死号了的。但是想要养好号也不是那么容易的,需要注意好多问题。 第一:养号的重点是号&…

Linux 软连接与硬链接

文件链接概念介绍: 软连接文件: 概念介绍:用于存放指向源文件的路径信息(文件快捷方式) 应用场景:对于要操作文件数据提供方便 硬链接介绍 硬链接不能跨分区创建 补充: 1.目录硬链接数代…

k8s-List机制及resourceVersion语义

kube-apiserver 核心职责 提供Restful API;代理集群组件,如dashboard、流式日志、kubectl exec 会话;缓存全量的etcd 数据且无状态服务可水平扩展。 kube-List操作 绝大部分情况下,kube-apiserver 都会直接从本地缓存提供服务&…

MybatisX插件 逆向工程

MybatisX插件 逆向工程 目录MybatisX插件 逆向工程安装插件使用插件安装插件 File->Settings->Plugins 使用插件 点击DataSource->点击“” 点击DataSource->点击MySQL 驱动选择MySQL for 5.1 输入主机IP、端口号、数据库的用户名和密码->点击Test Connec…

浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

我们工作中一直强调要做架构设计、系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计、前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享&#…

【机器学习】SVM入门-硬间隔模型

本站原创文章,转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com 目录 一. SVM的目标和思想 1.1 SVM硬间隔模型的原始目的 1.2 SVM的直接目标 1.3 什么是支持向量 二. SVM的支持平面的表示方式 2.1 支持面表示方式的初步思路 2.2 初步思路的缺陷与改进 2…