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
相关文章
|
6天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
53 31
|
14小时前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
|
16小时前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
24 16
|
6天前
|
算法
基于Adaboost模型的数据预测和分类matlab仿真
AdaBoost(Adaptive Boosting)是一种由Yoav Freund和Robert Schapire于1995年提出的集成学习方法,旨在通过迭代训练多个弱分类器并赋予分类效果好的弱分类器更高权重,最终构建一个强分类器。该方法通过逐步调整样本权重,使算法更关注前一轮中被误分类的样本,从而逐步优化模型。示例代码在MATLAB 2022A版本中运行,展示了随着弱分类器数量增加,分类错误率的变化及测试数据的分类结果。
|
5天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
15天前
|
机器学习/深度学习 算法 Python
基于BP神经网络的金融序列预测matlab仿真
本项目基于BP神经网络实现金融序列预测,使用MATLAB2022A版本进行开发与测试。通过构建多层前馈神经网络模型,利用历史金融数据训练模型,实现对未来金融时间序列如股票价格、汇率等的预测,并展示了预测误差及训练曲线。
|
13天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
13天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如&quot;How are you&quot;、&quot;I am fine&quot;、&quot;I love you&quot;等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
17小时前
|
机器学习/深度学习 人工智能 算法
基于GRNN广义回归网络和MFCC的语音情绪识别matlab仿真,对比SVM和KNN
该语音情绪识别算法基于MATLAB 2022a开发,可识别如悲伤等情绪,置信度高达0.9559。核心程序含中文注释及操作视频。算法采用MFCC特征提取与GRNN广义回归网络,通过预加重、分帧、加窗、FFT、梅尔滤波器组、对数运算和DCT等步骤处理语音信号,实现高效的情绪分类。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
225 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码

热门文章

最新文章