您现在的位置:首页 >> 通信 >> 内容

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

时间:2022/12/11 21:28:44 点击:

  核心提示:01-130m含参考文献,仿真操作录像和说明文档...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168