1.算法描述
在单用户MIMO场景中,空间复用技术能够带来高数据速率的传输,但是也需要一些前提条件,比如发射端的预编码或者接收端的信道估计与信号检测。然而,在大多数的通信系统中,不只是有单个用户在进行通信,而是需要大量用户共享资源与基站去进行通信。
算法的主要流程根据提供的参考文献论文可知:
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB核心程序
clc; 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://www.cnblogs.com/51matlab/p/17133949.html