【通信】基于Matlab模拟SCMA系统时延调度算法

简介: 【通信】基于Matlab模拟SCMA系统时延调度算法

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

稀疏码多址接入(Sparse Code Multiple Access,SCMA)技术是非正交多址接入技术的一种,该技术由低密度扩频技术衍生而来,SCMA通过码本的设计来获取额外的码本增益。此外由于综合了OFDMA和CDMA的思想,SCMA在大容量,低时延和高传输速率上有很大优势。针对于SCMA系统的一些关键技术,本文分为三个部分进行讨论。第一部分,主要对SCMA技术相关理论基础进行介绍并构建了典型的SCMA系统模型,首先介绍SCMA发射机设计和编码技术,包括SCMA编码两大模块:多维度调制和稀疏序列扩频,并对资源与用户之间的匹配关系进行了分析。然后介绍SCMA接收机设计和译码技术,包括基于最大似然算法的译码方案和基于消息传递算法的译码方案。通过对这些基础理论的分析为后续对SCMA技术的进一步研究奠定了基础。

⛄ 部分代码

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

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

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

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

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

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

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

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

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=10;%%系统中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=randperm(b-2);%随机顺序

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);

LTEconfig.UE.Number.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,LTEconfig.UE.Number.Final,6);

antenna = antennas.TS36942Antenna(LTEconfig.eNB_max_antenna_gain);

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

antenna_gain=zeros(LTEconfig.UE.Number.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:LTEconfig.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.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,LTEconfig.UE.Number.Final);

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

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

   end

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

end

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

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

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

interference_to_enbs=zeros(LTEconfig.UE.Number.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(LTEconfig.UE.Number.Final,1);

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

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

end

end

⛄ 运行结果

⛄ 参考文献

[1] 王显俊, 杜洋, 成聪,等. 基于EXIT图的SCMA通信系统多用户检测算法收敛性分析简[J]. 信号处理, 2016(12).

[2] 赵静, 张瑾, 高新科. 基于MATLAB的通信系统仿真[M]. 北京航空航天大学出版社, 2007.

[3] 万娇. 面向5G移动通信系统的MIMO-SCMA技术仿真研究[D]. 西南交通大学, 2017.

[4] 朱云骁. 基于CAN的HEV动力总成网络数据通信研究[D]. 合肥工业大学.

⛳️ 代码获取关注我

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


相关文章
|
5天前
|
机器学习/深度学习 数据采集 搜索推荐
机器学习在智能推荐系统中的个性化算法研究
机器学习在智能推荐系统中的个性化算法研究
|
1天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
16 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
1天前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。
|
4天前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
19 6
|
1天前
|
缓存 算法
基于机会网络编码(COPE)的卫星网络路由算法matlab仿真
**摘要:** 该程序实现了一个基于机会网络编码(COPE)的卫星网络路由算法,旨在提升无线网络的传输效率和吞吐量。在MATLAB2022a中测试,结果显示了不同数据流个数下的网络吞吐量。算法通过Dijkstra函数寻找路径,计算编码机会(Nab和Nx),并根据编码机会减少传输次数。当有编码机会时,中间节点执行编码和解码操作,优化传输路径。结果以图表形式展示,显示数据流与吞吐量的关系,并保存为`R0.mat`。COPE算法预测和利用编码机会,适应卫星网络的动态特性,提高数据传输的可靠性和效率。
|
4天前
|
算法 调度
基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图
**摘要:** 实现变异混合蛙跳算法的MATLAB2022a版车间调度优化程序,支持动态调整工件和机器数,输出甘特图。核心算法结合SFLA与变异策略,解决Job-Shop Scheduling Problem,最小化总完成时间。SFLA模拟蛙群行为,分组进行局部搜索和全局信息交换。变异策略增强全局探索,避免局部最优。程序初始化随机解,按规则更新,经多次迭代和信息交换后终止。
|
9天前
|
算法 JavaScript 决策智能
基于禁忌搜索算法的TSP路径规划matlab仿真
**摘要:** 使用禁忌搜索算法解决旅行商问题(TSP),在MATLAB2022a中实现路径规划,显示优化曲线与路线图。TSP寻找最短城市访问路径,算法通过避免局部最优,利用禁忌列表不断调整顺序。关键步骤包括初始路径选择、邻域搜索、解评估、选择及禁忌列表更新。过程示意图展示搜索效果。
|
9天前
|
机器学习/深度学习 算法
基于BP神经网络和小波变换特征提取的烟草香型分类算法matlab仿真,分为浓香型,清香型和中间香型
```markdown 探索烟草香型分类:使用Matlab2022a中的BP神经网络结合小波变换。小波分析揭示香气成分的局部特征,降低维度,PCA等用于特征选择。BP网络随后处理这些特征,以区分浓香、清香和中间香型。 ```
|
10天前
|
机器学习/深度学习 传感器 算法
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
基于Mediapipe深度学习算法的手势识别系统【含python源码+PyqtUI界面+原理详解】-python手势识别 深度学习实战项目
|
1天前
|
机器学习/深度学习 算法 数据可视化
基于BP神经网络的64QAM解调算法matlab性能仿真
**算法预览图省略** MATLAB 2022A版中,运用BP神经网络进行64QAM解调。64QAM通过6比特映射至64复数符号,提高数据速率。BP网络作为非线性解调器,学习失真信号到比特的映射,对抗信道噪声和多径效应。网络在处理非线性失真和复杂情况时展现高适应性和鲁棒性。核心代码部分未显示。

热门文章

最新文章