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

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

1.算法概述
1.png

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

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

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

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

2.仿真效果预览
matlab2022a仿真

2.png
3.png
4.png
5.png

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

3.MATLAB部分代码预览

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月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
271 0
|
4月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
4月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
4月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
432 0
|
4月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
243 0
|
4月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
156 0
|
4月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
159 0
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
230 8
|
4月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
240 8

热门文章

最新文章