首页 > 编程语言 >m基于多用户MIMO系统的分布式可重构注水算法的matlab仿真

m基于多用户MIMO系统的分布式可重构注水算法的matlab仿真

时间:2023-02-18 23:31:43浏览次数:44  
标签:qpsk 多用户 Frame length matlab func Nrr Tc MIMO

1.算法描述 在单用户MIMO场景中,空间复用技术能够带来高数据速率的传输,但是也需要一些前提条件,比如发射端的预编码或者接收端的信道估计与信号检测。然而,在大多数的通信系统中,不只是有单个用户在进行通信,而是需要大量用户共享资源与基站去进行通信。

   算法的主要流程根据提供的参考文献论文可知:

image.png 2.仿真效果预览 matlab2022a仿真结果如下:

28.png27.png26.png24.png25.png 3.MATLAB核心程序

clear;
close all;
addpath 'func\'
addpath 'func\cvx\'
addpath 'func\cvx\structures\'
addpath 'func\cvx\lib\'
addpath 'func\cvx\functions\'
addpath 'func\cvx\commands\'
addpath 'func\cvx\builtins\'
%调用cvx工具箱
cvx_setup;
clc;
 
 
Ntr          = 4;
Nrr          = 4;
Tc           = 200;
Frame_length = 40;
SNR          = [-10:1:1];
LoopNum      = 2000;
 
Rate1        = zeros(1,length(SNR)); 
Rate2        = zeros(1,length(SNR));
Rate3        = zeros(1,length(SNR));
 
BER1         = zeros(1,length(SNR));
BER2         = zeros(1,length(SNR));
BER3         = zeros(1,length(SNR));
 
 
for snr_j=1:length(SNR)
    snr_j
    sigma    = 1/(10.^(SNR(snr_j)/10));
    Rate1tmp = 0;
    Rate2tmp = 0;
    Rate3tmp = 0;
 
    count1   = 0;
    count2   = 0;
    count3   = 0;
    NUM      = LoopNum*Nrr*Frame_length*Tc;
    for mtkl=1:LoopNum
        qpsk_1          = zeros(Frame_length,2*Tc);
        qpsk_2          = zeros(Frame_length,Tc);
        %调制
        [qpsk_1,qpsk_2] = func_QPSK(Frame_length,Tc);       
        %产生信道
        H_real          = randn(Frame_length,Ntr);
        H_imag          = randn(Frame_length,Ntr);
        H               = complex(H_real,H_imag);
        w_real          = sqrt(sigma/2)*randn(Frame_length,Tc);
        w_imag          = sqrt(sigma/2)*randn(Frame_length,Tc);
        w               = complex(w_real,w_imag);
        %Reconfigurable
        [Sh_tmp1,u1]    = func_Reconfigurable(Ntr,Frame_length,Nrr,H,sigma,1);
        [CNT1]          = func_rec1(Ntr,Nrr,[1:Nrr],Tc,qpsk_1,qpsk_2,H,sigma,w,u1,ones(1,Nrr),Sh_tmp1,NUM);      
        count1          = count1 + CNT1;
        %Optimized Subspaece IA
        [Sh_tmp2,u2]    = func_Optimized_Subspaece_IA(Ntr,Frame_length,Nrr,H,sigma);
        [CNT2]          = func_rec2(Ntr,Nrr,Sh_tmp2,Tc,qpsk_1,qpsk_2,H,sigma,w,u2,ones(1,Nrr),NUM);
        count2          = count2 + CNT2;
        %MaxSLNR
        [Sh_tmp3,u3]    = func_MaxSLNR(Ntr,Frame_length,Nrr,H,sigma);
        [CNT3]          = func_rec3(Ntr,Nrr,Sh_tmp3,Tc,qpsk_1,qpsk_2,H,sigma,w,u3,ones(1,Nrr),NUM);
        count3          = count3 + CNT3;
    end
 
    BER1(snr_j)=count1/(NUM);
    BER2(snr_j)=count2/(NUM);
    BER3(snr_j)=count3/(NUM);
end

标签:qpsk,多用户,Frame,length,matlab,func,Nrr,Tc,MIMO
From: https://blog.51cto.com/matworld/6065720

相关文章

  • 基于kmeans算法的数据聚类matlab仿真
    1.算法描述       聚类算法也许是机器学习中“新算法”出现最多、最快的领域,一个重要的原因是聚类不存在客观标准,给定数据集总能从某个角度找到以往算法未覆盖的某......
  • MIMO雷达和相控阵雷达基础知识
    这篇主要是学习一下MIMO雷达的基础知识和相控阵的部分基础知识,因为二者其实是有部分连续的,所以将MIMO雷达和相控阵雷达放在了一起,便于自己的学习和理解。另外本篇文章......
  • matlab练习程序(泽尼克多项式拟合)
    泽尼克多项式是一个正交多项式,分为奇偶两类。奇多项式:偶多项式:其中:这里fai为方位角,范围[0-2pi];p为径向距离,范围[0,1];n-m大于等于0;如果n-m=0,则R=0。根据不同的m和n......
  • Ubuntu环境下安装MATLAB
    在Linux下安装MATLAB,当以root权限安装时,可能会出现运行安装文件但无响应的情况,则按以下步骤安装即可解决此问题:键入命令xhost+SI:localuser:root进入安装文件夹......
  • 基于扩展卡尔曼滤波的自适应智能无人车辆行驶matlab仿真,输出三维动态行驶动画
    1.算法描述        EKF扩展卡尔曼滤波要解决的是卡尔曼滤波不适用于非线性模型的问题。其和卡尔曼滤波算法结构相同,只是将非线性模型线性化,然后再应用卡尔曼滤波......
  • 基于蚁群算法的二维路径规划matlab仿真
    1.算法描述蚁群算法是一种用来寻找优化路径的概率型算法。它由MarcoDorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。这种算法具有......
  • 基于平均不同分辨率的共振峰跟踪算法matlab仿真
    1.算法描述共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨迹.算法由三个层......
  • 基于平均不同分辨率的共振峰跟踪算法matlab仿真
    1.算法描述       共振峰轨迹的自动跟踪算法,其特点是不借助于其它的信息来源,仅仅是基于语谱图信息,来确定语谱图上前四个共振峰频率的位置和它们关于时间轴的轨......
  • 【MATLAB】绘图
    1绘图命令Matlab提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号。这些选项如表所示:线型颜色标记符号- 实线b蓝色.  点s方块: 虚线g绿色o圆圈......
  • SFTP多用户不同权限目录
    SFTP多用户不同权限目录1.创建新的组和用户2.创建SFTP访问目录3.修改用户的home4.目录授权5.修改SFTP配置6.重启SFTP服务器7.验证SFTPSFTP多用户不同权......