1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y5mYl5lx
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
在单用户MIMO场景中,空间复用技术能够带来高数据速率的传输,但是也需要一些前提条件,比如发射端的预编码或者接收端的信道估计与信号检测。然而,在大多数的通信系统中,不只是有单个用户在进行通信,而是需要大量用户共享资源与基站去进行通信。
4.部分源码
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
figure
semilogy(SNR,BER1,'k-o');
hold on;
semilogy(SNR,BER2,'k-s');
hold on;
semilogy(SNR,BER3,'k-^');
hold on;
xlabel('Transmit SNR per Tx,P(dB)');
ylabel('error');
legend('Reconfigurable','Optimized Subspaece IA','MaxSLNR');
grid on
01-130m