【通信】基于最大能量效率的SCMA系统功率分配算法设计附matlab代码

简介: 【通信】基于最大能量效率的SCMA系统功率分配算法设计附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

⛄ 内容介绍

按照移动通信行业"使用一代,建设一代,研发一代"的发展节奏,业界预计2030年左右会商用第六代移动通信系统(Sixth Generation,6G).与现在的移动通信系统相比,未来的6G将更加的灵活,智能,安全和可靠.其更大的传输速率和容量将满足更多的应用场景.目前6G移动通信系统还没有统一的标准,根据国内外的研究情况,可以预见去蜂窝(Cell-Free,CF)大规模MIMO有望成为6G标准技术之一.在蜂窝网络中,设备到设备(Device-to-Device,D2D)通信技术通过使D2D用户复用蜂窝用户的频谱资源来有效提高系统的频谱效率.但是,频谱复用会造成蜂窝用户和D2D用户之间的干扰,影响整体的通信质量.在保证二者的用户服务质量的前提下,提出了一种以系统容量最大化为目标的资源分配方法.

⛄ 部分代码

function LTEconfig= lteparset2 %%系统仿真参数设置

LTEconfig.SubFrame.Number=50;%%系统仿真子帧数

LTEconfig.System.Bandwidth=625e3;%%系统总带宽(Hz)

LTEconfig.PRB.deta_bandwidth=0;%%系统物理资源块的间隔带宽(Hz)

LTEconfig.Subcarrier.bandwidth=156e3;%系统子载波带宽(Hz)

LTEconfig.Subcarrier.Number=4;%系统子载波数

LTEconfig.SpeedOfLight=3e8;%%光速(m/s)

LTEconfig.inter_bts_distance=250*sqrt(3);%%小区边长

LTEconfig.number_of_sectors=3;%六边形小区被划分为3个扇区

LTEconfig.eNB_max_antenna_gain=14;%基站的最大天线增益

LTEconfig.data_res=20;%网格边长

LTEconfig.antenna_azimuth_offset= 60;%天线方向的初始偏置角度

LTEconfig.SubFrame.Num_Symbol=14; %%%一个子帧的符号数

LTEconfig.SubFrame.Duration=1e-3;%%%一个子帧的周期(s)

%% 系统中UE的参数设计 %%

LTEconfig.UE.Num_TX=1;%%%UE的发送天线数目

LTEconfig.UE.Speed=2/3.6;%%%UE的移动速度

LTEconfig.UE.Number=6;%%系统中UE的数目

LTEconfig.UE.thermal_noise_density = -174;%温度为290K时,热噪声功率谱密度(dBm/Hz)

LTEconfig.UE.receiver_noise_figure = 9;    % Receiver noise figure in dB

LTEconfig.BS.Transmit_Power=40;%%%基站发射功率(W)

LTEconfig.BS.Transmit_Power_dB=16;%单位16dB

%data_res=LTEconfig.data_res;

%% 布置中心小区 六边形 %%

cell_side_length=LTEconfig.inter_bts_distance;

eNodeB = LTE_init_create_eNodeB(cell_side_length);

Neighborhood = zeros(6,2);%%六个顶点的位置坐标

Neighborhood(1,:) = eNodeB(1).pos;

Neighborhood(2,:) = eNodeB(2).pos;

Neighborhood(3,:) = eNodeB(3).pos;

Neighborhood(4,:) = eNodeB(6).pos;

Neighborhood(5,:) = eNodeB(7).pos;

Neighborhood(6,:) = eNodeB(4).pos;

LTEconfig.BS.Position_X=eNodeB(5).pos(1);

LTEconfig.BS.Position_Y=eNodeB(5).pos(2);

%% 布置中心小区用户 %%

LTEconfig.roi_x = [min(Neighborhood(:,1)),max(Neighborhood(:,1))];%%顶点横坐标的最小值和最大值 roi_x(1)是最小值,roi_x(2)是最大值

LTEconfig.roi_y = [min(Neighborhood(:,2)),max(Neighborhood(:,2))];%%顶点纵坐标的最大、小值

[roi_max_pixel roi_pixel_exact] = LTE_common_pos_to_pixel([LTEconfig.roi_x(2) LTEconfig.roi_y(2)],[LTEconfig.roi_x(1) LTEconfig.roi_y(1)],LTEconfig.data_res);%%横向纵向对应的网格数

roi_height_pixel = roi_max_pixel(2);%%纵向

roi_width_pixel  = roi_max_pixel(1);%%横向

pos_grid_pixel = zeros(roi_height_pixel*roi_width_pixel,2);%%网格坐标

pos_grid_pixel(:,1) = reshape(repmat(1:roi_width_pixel,roi_height_pixel,1),1,roi_width_pixel*roi_height_pixel);

pos_grid_pixel(:,2) = repmat(1:roi_height_pixel,1,roi_width_pixel);

pos_grid_meter(:,1) = pos_grid_pixel(:,1)*LTEconfig.data_res-LTEconfig.roi_x(2);

pos_grid_meter(:,2) = pos_grid_pixel(:,2)*LTEconfig.data_res-LTEconfig.roi_y(2);

Neighborhood = [Neighborhood;Neighborhood(1,:)];

in = inpolygon(pos_grid_meter(:,1),pos_grid_meter(:,2),Neighborhood(:,1),Neighborhood(:,2));%%规范区域:小区内

us_pos = zeros(sum(in),2);%%小区内用户数

b = 1;

for i = 1 : length(in)

    if in(i) > 0

        us_pos(b,:) = pos_grid_meter(i,:);%%小区内用户坐标

        b = b + 1;

    end    

end

figure(1);

plot(Neighborhood(:,1),Neighborhood(:,2),us_pos(:,1),us_pos(:,2),'.r');

% a=[59,79,100,288,310,332];%随机顺序

% a=[4,89,100,288,300,332];%随机顺序

a=[59,66,100,288,310,330];

ue_rand_pos=us_pos(a(1:LTEconfig.UE.Number),:);

distance=sqrt((ue_rand_pos(:,1)-LTEconfig.BS.Position_X).^2+(ue_rand_pos(:,2)-LTEconfig.BS.Position_Y).^2);

final=length(ue_rand_pos(:,1));

LTEconfig.UE.Position_X=ue_rand_pos(:,1);

LTEconfig.UE.Position_Y=ue_rand_pos(:,2);

figure(2);

plot(Neighborhood(:,1),Neighborhood(:,2),LTEconfig.UE.Position_X,LTEconfig.UE.Position_Y,'.r');

LTEconfig.UE.pixel(:,1) = round((ue_rand_pos(:,1) + LTEconfig.roi_x(2))./LTEconfig.data_res);%%无单位制

LTEconfig.UE.pixel(:,2) = round((ue_rand_pos(:,2) + LTEconfig.roi_y(2))./LTEconfig.data_res);

%% 布置七小区

eNodeBs_7cell=LTE_init_create_eNodeB_7cell;

tx_pos = zeros(6,2);

tx_pos(1,:)= eNodeBs_7cell(1).pos;

tx_pos(2,:)= eNodeBs_7cell(2).pos;

tx_pos(3,:)= eNodeBs_7cell(3).pos;

tx_pos(4,:)= eNodeBs_7cell(6).pos;

tx_pos(5,:)= eNodeBs_7cell(7).pos;

tx_pos(6,:)= eNodeBs_7cell(4).pos;

%% 计算邻小区基站对中心小区用户的天线增益 %%

angle=zeros(LTEconfig.number_of_sectors,final,6);

antenna = antennas.TS36942Antenna(LTEconfig.eNB_max_antenna_gain);

axis=zeros(3,2,6);%各基站天线参考坐标

antenna_gain=zeros(final,6);%用户到各基站的天线增益

% for s_ = 1:LTEconfig.number_of_sectors

%     azimuth = wrapTo360(LTEconfig.antenna_azimuth_offset+ 120*(s_-1));%小区天线角

% end

xy=[1,sqrt(3);-1,0;1,-sqrt(3)];

for i=1:6

   axis(:,1,i)=xy(:,1)+tx_pos(i,1);

   axis(:,2,i)=xy(:,2)+tx_pos(i,2);

end

for k=1:6

   for i=1:LTEconfig.number_of_sectors

       for j=1:final

   %根据acosd(dot([x1-x2,y1-y2],[x3-x2,y3-y2])/(norm([x1-x2,y1-y2])*norm([x3-x2,y3-y2])))

       angle(i,j,k)=acosd(dot([axis(i,1,k)-tx_pos(k,1),axis(i,2,k)-tx_pos(k,2)],[LTEconfig.UE.Position_X(j)-tx_pos(k,1),LTEconfig.UE.Position_Y(j)-tx_pos(k,2)])/(norm([axis(i,1,k)-tx_pos(k,1),axis(i,2,k)-tx_pos(k,2)])*norm([LTEconfig.UE.Position_X(j)-tx_pos(k,1),LTEconfig.UE.Position_Y(j)-tx_pos(k,2)])));

       end

   end

end

for k=1:6

   angle_min=zeros(1,final);

   for i=1:final

       angle_min(i)=min(angle(:,i,k));

   end

   antenna_gain(:,k)=antenna.gain(angle_min);

end

%% 计算用户收到基站的干扰,中心小区中继受到邻小区基站的干扰

distance_to_enbs=zeros(final,6);%用户到六个邻小区基站的距离

passloss_to_enbs=zeros(final,6);

interference_to_enbs=zeros(final,6);

for i=1:6

   distance_to_enbs(:,i)=sqrt((LTEconfig.UE.Position_X-tx_pos(i,1)).^2+(LTEconfig.UE.Position_Y-tx_pos(i,2)).^2);

   passloss_to_enbs(:,i)=LTE_pathloss_enb_to_ue(distance_to_enbs(:,i));%用户到邻小区基站的路径损耗

   interference_to_enbs(:,i)=10.^((LTEconfig.BS.Transmit_Power_dB+antenna_gain(:,i)-passloss_to_enbs(:,i))/10);%用户受到基站的干扰  

end

LTEconfig.ue_interference_enbs=zeros(final,1);

for ii=1:final

   LTEconfig.ue_interference_enbs(ii)=sum(interference_to_enbs(ii,:));

end

end

⛄ 运行结果

⛄ 参考文献

[1] 赵亚红, 张忠培, 吴伟陵. 一种基于最大容量的多载波系统自适应调制和功率分配算法[J]. 电子与信息学报, 2003, 25(7):5.

[2] 白学兵. 去蜂窝大规模MIMO系统功率分配方案研究.

[3] 刘占军, 朱志超, 邓欢,等. 一种基于RAN架构无线接入网系统容量最大化的功率分配算法[J]. 计算机应用研究, 2013, 30(5):3.

[4] 肖海林, 王鹏, 欧阳缮,等. 多基站协作通信系统容量最大化的功率分配方案[J]. 北京邮电大学学报, 2013, 36(6):5.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
|
11天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
143 55
|
2天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
103 80
|
2天前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
27 16
|
18天前
|
机器学习/深度学习 缓存 人工智能
【AI系统】QNNPack 算法
QNNPACK是Marat Dukhan开发的量化神经网络计算加速库,专为移动端优化,性能卓越。本文介绍QNNPACK的实现,包括间接卷积算法、内存重排和间接缓冲区等关键技术,有效解决了传统Im2Col+GEMM方法存在的空间消耗大、缓存效率低等问题,显著提升了量化神经网络的计算效率。
32 6
【AI系统】QNNPack 算法
|
18天前
|
存储 人工智能 缓存
【AI系统】Im2Col 算法
Caffe 作为早期的 AI 框架,采用 Im2Col 方法优化卷积计算。Im2Col 将卷积操作转换为矩阵乘法,通过将输入数据重排为连续内存中的矩阵,减少内存访问次数,提高计算效率。该方法首先将输入图像转换为矩阵,然后利用 GEMM 库加速计算,最后将结果转换回原格式。这种方式显著提升了卷积计算的速度,尤其适用于通道数较多的卷积层。
44 5
【AI系统】Im2Col 算法
|
18天前
|
存储 机器学习/深度学习 人工智能
【AI系统】Winograd 算法
本文详细介绍Winograd优化算法,该算法通过增加加法操作来减少乘法操作,从而加速卷积计算。文章首先回顾Im2Col技术和空间组合优化,然后深入讲解Winograd算法原理及其在一维和二维卷积中的应用,最后讨论算法的局限性和实现步骤。Winograd算法在特定卷积参数下表现优异,但其应用范围受限。
30 2
【AI系统】Winograd 算法
|
1天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
33 5
|
8天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
37 3
|
7天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
14天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。

热门文章

最新文章