m虚拟MIMO系统的配对调度算法的matlab仿真,对比Random配对,Orthogonal配对以及Deteminant配对
2023-09-14 09:06:07 时间
目录
1.算法概述
利用多输入多输出(MIMO,Multiple InputMultiple Output)技术通过空间复用能够显著的提高通信系统的容量,并可以很好的缓解时/频资源日益紧张的现状。
该技术在 LTE标准中被列为必选项,并在下行链路上得以使用。同时,与之相对应的用于上行链路的虚拟 MIMO(Virtual MIMO)系统也得到了广泛的关注。其中,针对 Virtual MIMO系统中的关键技术-用户配对机制,国内外的研究人员更是进行了大量研究工作,并提出了许多新的算法或改进。
Virtual MIM0技术是指通过特定的选择算法将符合标准的用户分成一组,利用相同的时/频资源来传输数据的技术。由于组内的用户同时通过各自的天线发送数据也就在上行方向上构成了类似于传统MIMO技术中的多天线发射阵列。
但在具体的实现上,各终端用户仍然采用单天线配置,仅是通过特定的调度算法实现了采用相同无线资源的联合发送。由于该技术可以在没有增加用户终端设备的成本和发射功率的情况下,在上行传输方向构成类似于 MIMO的传输系统。因此,对于提高无线资源的利用率、改善上行链路传输容量具有积极的作用。
2.仿真效果预览
matlab2022a仿真
从上面的仿真结果可知,采用全配对的方法,可以获得较大,但是其数据丢失率也较大,所以设计了基于SINR的配对算法,这样可以根据实际的噪声等干扰因素的影响来进行合理的配对。
3.MATLAB部分代码预览
M = 2;
N = 2;
% Pt = 14;%发射功率
% Gt = 64;%发送天线的增益
% Gr = 64;%接收天线的增益
% R = 0.6;%小区半径
% Phatloss = 128.1 + 37.6*log10(R);%路径损耗
% Shadowfading = 8;%阴影衰落
% PN = 5;%噪声功率
% SNRs = Pt + Gt + Gr - Phatloss - Shadowfading - PN;
SNRs = 10;%定义SNR值
tc = 10;%采样率
Num_user = 24;%用户的个数
sel = 1;%1,2,3,4,选择四种不同的方法进行仿真
sel2 = 0;%0直接出图,1进行逐个仿真
if sel2 == 1
for j=1:Num_user
j
%计算第一个用户的相关值
In_index = zeros(1,10*j);
though_Output = zeros(1,10*j);
though_Input = zeros(1,10*j);
SNR = SNRs*rand(1,10*j);
%调用调度函数
if sel == 1%如果选择1
[H,number] = func_No_Scheduling(10*j,M,N);%不进行pairing
end
if sel == 2%如果选择2
[H,number] = func_Random_Paring_Scheduling(10*j,M,N);%随机Pairing
end
if sel == 3%如果选择3
[H,number] = func_Orthogonal_Paring_Scheduling(10*j,M,N);%正交Pairing
end
if sel == 4%如果选择4
[H,number] = func_Determinant_Paring_Scheduling(10*j,M,N);%行列式Pairing
end
%基于MMSE的接收
[M,Nes] = func_MMSE_receiver(H,SNR(number));%对数据进行MMSE原则的接收
sirer = zeros(1,10*j);
sirer(number) = log2(1+Nes);
[though_Output,indexout,uenow]=func_calc(sirer,though_Input,tc,In_index,number);%计算得到最后的输出信息量
though_Input = though_Output;
In_index = indexout;
S(1) = sum(log2(1+Nes));
%计算其余用户的相关值
%以下是对其余用户做同样的运算
for k=2:10*j
M = 2;
H = zeros();
%调用调度函数
if sel == 1
[H,number] = func_No_Scheduling(10*j,M,N);%不进行pairing
end
if sel == 2
[H,number] = func_Random_Paring_Scheduling(10*j,M,N);%随机Pairing
end
if sel == 3
[H,number] = func_Orthogonal_Paring_Scheduling(10*j,M,N);%正交Pairing
end
if sel == 4
[H,number] = func_Determinant_Paring_Scheduling(10*j,M,N);%行列式Pairing
end
%基于MMSE的接收
[M,Nes] = func_MMSE_receiver(H,SNR(number));
sirer = zeros(1,10*j);
sirer(number) = log2(1+Nes);
[though_Output,indexout,uenow]=func_calc(sirer,though_Input,tc,In_index,number);%计算得到最后的输出信息量
though_Input = though_Output;
In_index = indexout;
S(k) = sum(log2(1+Nes));
end
%计算信道容量
fair(j) = sum(though_Output)^2/(length(though_Output)*sum(though_Output.^2));
SNR_Linear = 10^(SNRs/10);
Capacity(j) = 0.5 * log10(1 + (SNR_Linear * sum(abs(fair(j)))));
end
%根据信道容量计算CDF值
CDFs=func_CDF(Capacity,Num_user);
if sel == 1
save data0.mat CDFs%保存CDF数据
end
if sel == 2
save data1.mat CDFs%保存CDF数据
end
if sel == 3
save data2.mat CDFs%保存CDF数据
end
if sel == 4
save data3.mat CDFs%保存CDF数据
end
else
load data0.mat
figure
plot(1:0.5:12,CDFs,'k','LineWidth',2);grid on%使用plot进行画图
hold on;
load data1.mat
plot(1:0.5:12,CDFs,'b','LineWidth',2);grid on%使用plot进行画图
hold on;
load data2.mat
plot(1:0.5:12,CDFs,'r','LineWidth',2);grid on%使用plot进行画图
hold on;
load data3.mat
plot(1:0.5:12,CDFs,'g','LineWidth',2);grid on%使用plot进行画图
hold on;
axis([1,12,0,1]);
legend('Receive Diverse','Random Pairing','Orthogonal Pairing','Determinant Pairing');%不同的标志
xlabel('Thoughout');%X坐标
ylabel('CDF');%Y坐标
end
01_039_m
4.完整MATLAB程序
V
相关文章
- matlab图像处理初步,MATLAB数字图像处理初步「建议收藏」
- matlab griddata nan,请教Matlab的griddata的用法
- NSGA2 算法MATLAB完整代码 中文注释详解
- 【嵌入式案例分享】使用Matlab生成可供TMS320C6748开发板使用的算法
- nsga2 matlab,NSGA2算法特征选择MATLAB实现(多目标)
- NSGA2 算法Matlab实现「建议收藏」
- matlab逆变器仿真程序,PWM逆变器Matlab仿真「建议收藏」
- Matlab粒子群算法(PSO)优化程序——经典实例
- bm3d算法matlab,BM3D算法实现图像降噪.doc[通俗易懂]
- matlab 插值出错,MATLAB插值问题
- matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现
- MATLAB中meshgrid函数用法
- matlab fopen fread_matlab中prctile函数
- 遗传算法经典实例matlab代码_退火算法与遗传算法
- matlab保存所有图,Matlab中图片保存的5种方法
- matlab 行 读取文件 跳过_Matlab读取TXT文件并跳过中间几行的问题!!
- matlab ga算法_基因算法和遗传算法
- matlab plot函数详解_MATLAB的plot
- matlab绘制三维图形的步骤_matlab绘制三维图形的步骤
- Matlab赋值_matlab二维数组赋值
- Matlab循环语句_matlab中if语句的用法
- MATLAB笔记—绘制三维图像「建议收藏」
- Matlab实现小波变换
- matlab最新保姆级安装教程【博主亲测】
- 【MATLAB】数据类型 ( 执行代码 | 清空命令 | 注释 | 数字 | 字符 | 字符串 )
- 【MATLAB】数据类型 ( 元胞数组 | 单位阵 | 幻方 | 结构体 | 元胞数组值获取 )
- 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )