【OFDM通信】OFDM多用户资源分配仿真【含Matlab源码 1902期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、OFDM简介

为了缓解无线频谱日益紧张的局面,认知无线电技术受到了越来越广泛的关注.与传统传输技术相比,认知无线电技术有着更高的灵活性和智能性.其最大特点是可以感知周围的频谱环境(主要是频谱使用状况),找到可以使用的频谱空洞[1],利用在特定时间内和特定地理位置上的空闲频段,从而极大地提高了频谱利用效率和系统容量.

认知无线电技术是继软件无线电技术后通信技术的发展趋势,它体现了通信技术从网络化向智能化的发展.无线电技术经历了固定模式,自适应模式后发展到认知模式.认知无线电具有感知功能,并通过感知结果,选择传输方案,同时无线终端具有“学习”功能,并能产生新的可供选择的传输方案的能力.

OFDM技术相对于其他传输技术优势在于可以灵活地分配子载波,作为下一代通信标准中具有广泛应用前景的技术,同样在认知无线电中也具有广泛的应用前景.认知用户所使用的频带并不是固定分配的,是随机变化的,并可能是不连续的.OFDM可以通过自适应给个别子载波分配零功率来调整带宽,其优势在于可以灵活地分配子载波并控制其功率.笔者针对OFDM系统提出了一种多用户子载波及其功率分配算法.

1 认知无线电系统模型
认知无线电系统体现了更高的智能化,它可以主动地感知无线环境,感知周围频谱使用情况,因此认知无线电系统必须具有频谱分析和信道估计单元负责检测频谱,寻找可以使用的频谱空洞.认知无线电所使用的频谱空洞是指已经分配给授权用户的,而授权用户在特定时间内没有使用或者在较远的特定地理位置上使用的频段.
在这里插入图片描述
图1 认知环示意图

经典的认知无线电系统包括对无线环境的感知、频谱资源估计、资源分配算法,构成了一个闭环,如图1所示.

Simon Haykin提出了认知环的概念,在认知环中可以看出认知无线电系统需要考虑一个新的物理量——干扰温度.干扰温度限制了频谱上功率的分配,即限制了信道容量的上限.认知无线电系统可以根据检测到的频谱使用情况和相应频谱上的干扰温度,在多用户中动态地分配资源,达到充分利用频谱的目的.

如何使多个认知用户充分利用检测到的频谱空洞,就转化为如何在多个认知用户之间分配这些子载波,以及分配这些子载波上的发射功率.这正是本文中研究的重点.具有多用户自适应资源分配的发射机原理框图如图2所示.在传统的多用户OFDM系统的基础上增加了资源检测、功率分配算法和功率控制单元.

2 多用户资源分配算法
资源分配指在认知AP(Access Point)节点的下行链路上针对多种类型认知用户(类型可以是手机,车载电台,PDA或其他)的算法研究.认知AP节点高效地利用检测到的频谱空洞通过实时动态的分配下行链路中的频谱资源.资源分配算法主要考虑功率受限和设备类型两个因素.

认知AP节点在收到要求进行通信的认知用户请求信息后,首先对周围的频谱使用情况进行检测,找到可以使用的频谱空洞,同时要获得所有认知用户在可以使用的频谱空洞上所呈现的衰落特性,以及整个系统功率覆盖范围内的授权用户的信息.这些是认知AP节点进行资源分配算法的依据.

认知AP节点根据上述获得的信息要在下行链路中完成功率分配和子载波的指配,认知无线电的功率分配算法要考虑对授权用户的功率干扰.在进行资源分配时,功率受限子载波的分配功率不能超过各自的功率上限,这要求分配算法要给每个子载波分配一个预分配功率,以保证不干扰授权用户的正常通信.

在资源分配过程中遵循比例公平原则,防止信道特性比较好的用户占用了大部分频谱空洞,而其他用户尤其是信道特性比较差的用户不能保证正常通信.本文中只考虑认知用户对于授权用户的干扰.认知用户对授权用户的干扰集中体现在对授权用户信干比的干扰.

设RSI表示授权用户处的信干比,
在这里插入图片描述
可以看出这是一个非线性优化问题,最优值的求解很复杂,这里给出了一种首先分配子载波再分配功率的次优值二步求解算法.

⛄二、部分源代码

clear all;
worstpower=1.1565;
N0=worstpower1e-8;
Ptotal=1;
BER = 1e-3;
Gap = -log(5
BER)/1.6;

channelnum=10;
samplenum=10;
numuser = 8;

epsilong=1e-3;
maxNumOfNewton=0;
maxTotalNewtonIteNum=0;

avenonlintime = zeros(1,numuser);
aveshentime = zeros(1,numuser);
aveiantime = zeros(1,numuser);

diffuservector = [];
iancapamat = [];
shencapamat = [];

cc = 1;

clear shencapa iancapa
N=64; % 子载波数目
B=1000000; % 带宽是1MHz

noise=B*N0/N;
clear ch

%for different user number
for ii=1:numuser,
diffuser=2*ii;
diffuservector(ii)=diffuser;
K=diffuser;

totaliancapa=0;
totalshencapa=0;
totalnonlincapa = 0;

shencapavec = zeros(1,diffuser);
iancapavec = zeros(1,diffuser);

iannorm = 0;
shennorm = 0;
nonlinnorm = 0;


%for different channel
for chan=1:channelnum,
    chan
    [env,I,Q]=chtry(K,samplenum,30);
    h = rand(1,K);
    gamma = .064*(h < .5) + .128*((h >= .5) & (h < .8)) + .256*(h>.8);%%how to generate the coefficient

    %for diff samples
    for diffsamp=1:samplenum,
        diffsamp
        for i=1:K
            user=I(i,:,diffsamp)+sqrt(-1)*Q(i,:,diffsamp);
            ch(i,:)=abs(fft(user,N)).^2/Gap;%%channel in frequency domain
        end


        % Shen's subcarrier allocation
        [rheecapa,rheesuballo]=rheesub(Ptotal,ch, N, K, noise, gamma);

        % Shen's power allocation
        t=cputime;  shenp = shenpowerallo(ch,rheesuballo,N,K,Ptotal,noise,gamma); shentime = cputime-t;
        aveshentime(ii) = aveshentime(ii) + shentime;

        % Ian's subcarrier allocation
        [iancapa,iansuballo]=wongsuballo(Ptotal, ch, N, K, noise, gamma);

        % Ian's power allocation
        t=cputime; ianp = wongpowerallo(ch,iansuballo,N,K,Ptotal,noise,gamma); iantime = cputime-t;
        aveiantime(ii) = aveiantime(ii) + iantime;

        for i=1:K,
            shencapa(i) =  waterfilling(shenp(i),rheesuballo(i,:).*ch(i,:)/noise)/N;
            iancapa(i) = waterfilling(ianp(i),iansuballo(i,:).*ch(i,:)/noise)/N;
        end;

        totalshencapa=totalshencapa+sum(shencapa);
        totaliancapa=totaliancapa+sum(iancapa);

        if (chan == 1),
            shencapavec = shencapavec + shencapa;
            iancapavec = iancapavec + iancapa;
            if (chan ==  1 & diffsamp == 1),
                figure(2);
                bar([gamma/sum(gamma); iancapavec/sum(iancapavec); shencapavec/sum(shencapavec)]', 'grouped');%; nonlincapavec/sum(nonlincapavec)]', 'grouped');
                title('快照');
            end;
        end;
        iannorm = iannorm + norm(iancapa/sum(iancapa) - gamma/sum(gamma), inf);
        shennorm = shennorm + norm(shencapa/sum(shencapa) - gamma/sum(gamma), inf);
    end

    if (chan == 1),
        iancapavec = iancapavec/(channelnum*samplenum);
        shencapavec = shencapavec/(channelnum*samplenum);
        figure(5);
        bar([gamma/sum(gamma); iancapavec/sum(iancapavec); shencapavec/sum(shencapavec)]', 'grouped');
        legend('伽玛', '线性', '寻根');
    end;
    %end diff channel
end
maxNumOfNewton;
maxTotalNewtonIteNum;
totalshencapavec(ii)=totalshencapa/(channelnum*samplenum);
totaliancapavec(ii)=totaliancapa/(channelnum*samplenum);
iannormvec(ii) = iannorm/(channelnum*samplenum);
shennormvec(ii) = shennorm/(channelnum*samplenum);

end

% total capacities plot
figure(1)
plot(diffuservector,totaliancapavec, ‘ko–’, diffuservector, totalshencapavec, ‘b±.’);%, diffuservector, totalnonlincapavec, ‘rx-.’);
iansumcapa = sum(totaliancapavec)
shensumcapa = sum(totalshencapavec)

grid on
xlabel(‘用户数’)
ylabel(‘容量 (bit/s/Hz)’)
legend(‘线性’, ‘寻根’); %, ‘NONLIN’);
hold off

aveshentime = aveshentime/(channelnumsamplenum)
aveiantime = aveiantime/(channelnum
samplenum)

figure(3);
semilogy(diffuservector,aveiantime, ‘ko–’, diffuservector,aveshentime, ‘b±.’);%, diffuservector, avenonlintime, ‘rx-.’);
grid on
xlabel(‘用户数’)
ylabel(‘平均CPU时间(s)’)
legend(‘线性’, ‘寻根’); %, ‘NONLIN’);
title(‘平均CPU时间比较’);

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]李维英,陈东,邢成文,王宁.认知无线电系统中OFDM多用户资源分配算法[J].西安电子科技大学学报. 2007,(03)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值