m基于matlab的软件无线电注水功率分配算法性能仿真,对比C-PF,C-CUBP,C-DUBP等

简介: m基于matlab的软件无线电注水功率分配算法性能仿真,对比C-PF,C-CUBP,C-DUBP等

1.算法描述

   注水算法是根据某种准则,并根据信道状况对发送功率进行自适 应分配,通常是信道状 况好的时刻,多分配功率,信道差的时候, 少分配功率,从而最大化传输速率。注水算法是根据某种准则,并根据信道状况对发送功率进行自适应分配,通常是信道状况好的时刻,多分配功率,信道差的时候,少分配功率,从而最大化传输速率。实现功率的注水分配,发送端必须知道CSI。当接收端完全知道信道而发送端不知道信号时,发送天线阵列中的功率平均分配是合理的。当发送端知道信道,可以增加信道容量。

    信道功率的注水分配 [1] 是一种形象的说法——假设要为几个信噪比(γ)各不相同的子信道分配功率。曲线1/γ 代表碗底;而功率被注入这只碗,直到恒定的水面线1/γ0(γ0是参考信噪比)为止。对于某个给定信噪比为γ的子信道,注入的功率量是1/γ0− 1/γ,即碗底(1/γ)和水面(1/γ0)之间的水量。

   注水原理背后的思路是充分利用信道的良好状况:信道状况好的时刻(γ大),多分配功率,即提高数据传输速率;信道状况差的时候(γ小),少分配功率,即降低数据传输速率;如果信道状况低于某个阀值(比如γ<γ0),就不分配功率。运用注水分配,可以最大化传输速率。

1.png
2.png
3.png
4.png

Step3:若分配到最小增益的信道能量为负值,即设,p=p+1,转至 Step1;

若任意非负,即得到最佳注水功率分配策略。

2.仿真效果预览
matlab2022a仿真如下:

5.png
6.png
7.png
8.png

   分布式算法,主要是降低算法的资源消耗,但是性能不如集中式算法。降低资源消耗,集中性非常耗资源,而分布式则可以大大降低资源消耗,但性能只是略低于集中式,所以选择分布式。

3.MATLAB核心程序

Parts               = 5;
Ts                  = 5;
Steps               = 5;
End_Times           = 10000;
Factor              = zeros(2,KK);
Rm                  = zeros(1,1);
Qm                  = zeros(1,1);
Alloc               = zeros(1,KK);
T_users             = T_users;
 
dr                  = 0;
or                  = 0;
ind                 = 0;
ino                 = 0;
rhoBE               = 0.5;
 
for schedule_time = 1:Steps:End_Times%for each time slot
    t = schedule_time;
    if  schedule_time <= 2*Steps
        M  = randperm(length(T_users));
        M1 = M(1:floor(length(T_users)/2));
        M2 = M(floor(length(T_users)/2)+1:end);
        PI1= zeros(1,length(M1));
        PI2= zeros(1,length(M2));
        ind0 = find(T_users <= mean(T_users));
        ind1 = find(T_users >  mean(T_users));
        for j = 1:KK
            for k = 1:length(M1)
                PI1(k) = T_users(M1(k));
            end
            for k = 1:length(M2)
                PI2(k) = T_users(M2(k));
            end    
            Len     = min(length(M1),length(M2));
            PIs     = PI1(1:Len) + PI2(1:Len);
           [V,I]    = max(PIs); 
           Xmax(j)  = V;
        end
        SK =[];
        for j1 = 1:length(ind0)
            for j2 = 1:length(ind1)
                if Xmax(ind0(j1)) >= Xmax(ind1(j2))
                   SK = [SK,j1]; 
                end
            end
        end
        SK    = unique(SK);
        if isempty(SK) == 1
           SK = 1;
        end
        tmps  = log2(1 + beta*abs(SNIR));
        Rm    = mean(Xmax(SK))*mean(mean(tmps));
        Qm    = 100;
        tmpsR1= Rm;
        tmpsR2= tmpsR1;
        tmpsQ = Qm;
    else
        M  = randperm(length(T_users));
        M1 = M(1:floor(length(T_users)/2));
        M2 = M(floor(length(T_users)/2)+1:end);
        PI1= zeros(1,length(M1));
        PI2= zeros(1,length(M2));
        ind0 = find(T_users <= mean(T_users));
        ind1 = find(T_users >  mean(T_users));
        for j = 1:KK
            for k = 1:length(M1)
                PI1(k) = T_users(M1(k));
            end
            for k = 1:length(M2)
                PI2(k) = T_users(M2(k));
            end    
            Len     = min(length(M1),length(M2));
            PIs     = PI1(1:Len) + PI2(1:Len);
           [V,I]    = max(PIs); 
           Xmax(j)  = V;
        end
        SK =[];
        for j1 = 1:length(ind0)
            for j2 = 1:length(ind1)
                if Xmax(ind0(j1)) >= Xmax(ind1(j2))
                   SK = [SK,j1]; 
                end
            end
        end
        SK     = unique(SK);
        if isempty(SK) == 1
           SK = 1;
        end
        Rm     = (1-rhoBE)*tmpsR1 + rhoBE*tmpsR2; 
        Qm     =  tmpsQ - Rm*Ts*sum(T_users(SK));
        tmpsR1 =  Rm;
        tmpsR2 =  tmpsR1;
        tmpsQ  =  Qm;
    end
    p = rand;
    if p <= 0.3;
       ino = ino + KK;
       p2 = rand;
       if p2 <= 0.5;
          ind = ind + KK;
       end
    end
end
 
SU = Rm/1e2;
Rms= Rm/KK/3;
dr = ind/End_Times;
or = ino/End_Times;
01_098m
相关文章
|
11天前
|
算法
基于MPPT算法的光伏并网发电系统simulink建模与仿真
本课题基于MATLAB/Simulink搭建光伏并网发电系统模型,集成PV模块、MPPT算法、PWM控制与并网电路,实现最大功率跟踪与电能高效并网。通过仿真验证系统在不同环境下的动态响应与稳定性,采用SVPWM与电流闭环控制,确保输出电流与电网同频同相,满足并网电能质量要求。
|
17天前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
127 3
|
11天前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
11天前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
17天前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
|
17天前
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
|
17天前
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
|
17天前
|
机器学习/深度学习 边缘计算 算法
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
【无人机】无人机群在三维环境中的碰撞和静态避障仿真(Matlab代码实现)
107 0
|
22天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
22天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
139 14

热门文章

最新文章

下一篇
oss教程