【通信】基于Matlab实现对时延不敏感的SCMA系统资源调度算法

简介: 【通信】基于Matlab实现对时延不敏感的SCMA系统资源调度算法

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

一种SCMA下行系统中基于能效的资源分配方法.在绿色通信的倡导下,保证用户传输质量,减少能量消耗和环境污染,来实现可持续发展,本发明所提供的能效优先的联合资源分配方法。

⛄ 部分代码

function LTEconfig_add=lteparset2

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

LTEconfig_add.System.Bandwidth=5e6;%%系统总带宽(Hz)

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

LTEconfig_add.Subcarrier.Number=300;%系统子载波数

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

LTEconfig_add.inter_bts_distance=500;%%小区边长

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

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

LTEconfig_add.data_res=20;%网格边长

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

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

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


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

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

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

LTEconfig_add.UE.Number=10;%%系统中UE的数目

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

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

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

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

%data_res=LTEconfig_add.data_res;

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

cell_side_length=LTEconfig_add.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_add.BS.Position_X=eNodeB(5).pos(1);

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

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

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

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

[roi_max_pixel roi_pixel_exact] = LTE_common_pos_to_pixel([LTEconfig_add.roi_x(2) LTEconfig_add.roi_y(2)],[LTEconfig_add.roi_x(1) LTEconfig_add.roi_y(1)],LTEconfig_add.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_add.data_res-LTEconfig_add.roi_x(2);

pos_grid_meter(:,2) = pos_grid_pixel(:,2)*LTEconfig_add.data_res-LTEconfig_add.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


a=randperm(b-2);%随机顺序

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

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

LTEconfig_add.UE.Number.Final=length(ue_rand_pos(:,1));

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

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

figure(2);

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

hold on;

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

LTEconfig_add.UE.pixel(:,2) = round((ue_rand_pos(:,2) + LTEconfig_add.roi_y(2))./LTEconfig_add.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_add.number_of_sectors,LTEconfig_add.UE.Number.Final,6);

antenna = antennas.TS36942Antenna(LTEconfig_add.eNB_max_antenna_gain);

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

antenna_gain=zeros(LTEconfig_add.UE.Number.Final,6);%用户到各基站的天线增益

% for s_ = 1:LTEconfig_add.number_of_sectors

%     azimuth = wrapTo360(LTEconfig_add.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_add.number_of_sectors

       for j=1:LTEconfig_add.UE.Number.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_add.UE.Position_X(j)-tx_pos(k,1),LTEconfig_add.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_add.UE.Position_X(j)-tx_pos(k,1),LTEconfig_add.UE.Position_Y(j)-tx_pos(k,2)])));

       end

   end

end

for k=1:6

   angle_min=zeros(1,LTEconfig_add.UE.Number.Final);

   for i=1:LTEconfig_add.UE.Number.Final

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

   end

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

end

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

distance_to_enbs=zeros(LTEconfig_add.UE.Number.Final,6);%用户到六个邻小区基站的距离

passloss_to_enbs=zeros(LTEconfig_add.UE.Number.Final,6);

interference_to_enbs=zeros(LTEconfig_add.UE.Number.Final,6);

for i=1:6

   distance_to_enbs(:,i)=sqrt((LTEconfig_add.UE.Position_X-tx_pos(i,1)).^2+(LTEconfig_add.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_add.BS.Transmit_Power_dB+antenna_gain(:,i)-passloss_to_enbs(:,i))/10);%用户受到基站的干扰  

end

LTEconfig_add.ue_interference_enbs=zeros(LTEconfig_add.UE.Number.Final,1);

for ii=1:LTEconfig_add.UE.Number.Final

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

end

end

⛄ 运行结果


⛄ 参考文献

[1] 陈小敏, 朱秋明, 徐大专,等. 基于MATLAB的MIMO通信系统教学平台的设计与实现[J]. 实验室科学, 2019, 22(5):4.

[2] 姚俊毅. 多径路由通信下网络化控制系统的协同设计与分析[D]. 浙江工业大学.

[3] 董平, 李明菊, 王鹏,等. 基于Matlab/VB混合编程的动力配煤优化系统设计[J]. 洁净煤技术, 2008, 14(4):5.

[4] 袁泉, 代云霞, 罗菊. 一种SCMA下行系统中基于能效的资源分配方法:, 2021.

⛳️ 完整代码

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



相关文章
|
17天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
76 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
1月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
294 55
|
9天前
|
算法 数据安全/隐私保护
基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计
### 简介 本项目基于DVB-T标准,实现COFDM+16QAM+LDPC码通信链路的MATLAB仿真。通过COFDM技术将数据分成多个子载波并行传输,结合16QAM调制和LDPC编码提高传输效率和可靠性。系统包括载波同步、定时同步和信道估计模块,确保信号的准确接收与解调。MATLAB 2022a仿真结果显示了良好的性能,完整代码无水印。仿真操作步骤配有视频教程,便于用户理解和使用。 核心程序涵盖导频插入、载波频率同步、信道估计及LDPC解码等关键环节。仿真结果展示了系统的误码率性能,并保存为R1.mat文件。
117 76
|
27天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
123 66
|
24天前
|
资源调度 监控 算法
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统主要用于高质量图像传输,如无人机、视频监控等场景。系统采用QPSK调制解调、扩频技术和LDPC译码,确保复杂电磁环境下的稳定性和清晰度。MATLAB仿真(2022a)验证了算法效果,核心程序包括信道编码、调制、扩频及解调等步骤,通过AWGN信道测试不同SNR下的性能表现。
53 6
基于扩频解扩+LDPC编译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
|
20天前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+LDPC编译码的16QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统主要用于高质量图像传输,适用于无人机、视频监控等场景。系统采用16QAM调制解调、扩频技术和LDPC译码,确保复杂电磁环境下的稳定性和清晰度。MATLAB 2022a仿真结果显示图像传输效果良好,附带的操作视频详细介绍了仿真步骤。核心代码实现了图像的二进制转换、矩阵重组及RGB合并,确保图像正确显示并保存为.mat文件。
40 20
|
29天前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置
该通信系统基于MATLAB 2022a仿真,适用于高要求的图像传输场景(如无人机、视频监控等),采用64QAM调制解调、扩频技术和Turbo译码提高抗干扰能力。发射端包括图像源、64QAM调制器、扩频器等;接收端则有解扩器、64QAM解调器和Turbo译码器等。核心程序实现图像传输的编码、调制、信道传输及解码,确保图像质量和传输可靠性。
52 16
|
20天前
|
算法
基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真
本课题基于爬山法MPPT算法,对光伏发电系统进行Simulink建模与仿真。使用MATLAB2022a版本,通过调整光伏电池的工作状态以实现最大功率输出。爬山法通过逐步优化工作点,确保光伏系统在不同条件下均能接近最大功率点。仿真结果显示该方法的有效性,验证了模型的正确性和可行性。
|
23天前
|
监控 算法 JavaScript
基于 Node.js Socket 算法搭建局域网屏幕监控系统
在数字化办公环境中,局域网屏幕监控系统至关重要。基于Node.js的Socket算法实现高效、稳定的实时屏幕数据传输,助力企业保障信息安全、监督工作状态和远程技术支持。通过Socket建立监控端与被监控端的数据桥梁,确保实时画面呈现。实际部署需合理分配带宽并加密传输,确保信息安全。企业在使用时应权衡利弊,遵循法规,保障员工权益。
37 7
|
29天前
|
存储 算法 Python
文件管理系统中基于 Python 语言的二叉树查找算法探秘
在数字化时代,文件管理系统至关重要。本文探讨了二叉树查找算法在文件管理中的应用,并通过Python代码展示了其实现过程。二叉树是一种非线性数据结构,每个节点最多有两个子节点。通过文件名的字典序构建和查找二叉树,能高效地管理和检索文件。相较于顺序查找,二叉树查找每次比较可排除一半子树,极大提升了查找效率,尤其适用于海量文件管理。Python代码示例包括定义节点类、插入和查找函数,展示了如何快速定位目标文件。二叉树查找算法为文件管理系统的优化提供了有效途径。
54 5

热门文章

最新文章