• m基于STBC的MIMO通信系统性能仿真和信道容量仿真


    目录

    1.算法概述

    2.仿真效果预览

    3.核心MATLAB预览

    4.完整MATLAB程序


    1.算法概述

           空时分组编码STBC(Space Time Block Coding)用在无线通信中传输一个数据流的多个拷贝。通过许多天线来产生数据的多种接收版本,提高数据传输的可靠性。接收机接收到的数据拷贝中,存在一些比其它拷贝“更好”的拷贝。而这种冗余导致有更高机会使用一个或更多接收到数据拷贝来正确的解码接收到的数据。实际上,STBC联合所有接收到的信号的拷贝以一种最佳的方式从它们中尽可能地吸取更多有用的数据。

           空时编码在不同天线所发送的信号中引入时间和空间的相关性,从而不用牺牲带宽就可以为接收端提供不编码系统所没有的分集增益和编码增益。空时编码的基本工作原理如下:从信源给出的信息数据流,到达空时编码器后,形成同时从许多个发射天线上发射出去的矢量输出,称这些调制符号为空时符号(STS)或者空时矢量符(STVS)。与通常用一个复数表示调制符号类似(复的基带表示) ,一个空时矢量符STVS可以表示成为一个复数的矢量,矢量中数的个数等于发射天线的个数。

           MIMO技术实质上是为系统提供了空间复用增益和空间分集增益。
    空间复用就是在接收端和发射端使用多副天线,充分利用空间传播中的多径分量,在同一个频带上使用多个数据通道(MIMO子信道)发射信号,从而使得容量随着天线数量的增加而线性增加。这种信道容量的增加不需要占用额外的带宽,也不需要消耗额外的发射功率,因此是提高信道和系统容量一种非常有效的手段。

            利用 h (τk, t) 定义在时间 t 和时延 τk 处的信道脉冲响应,可以采用一个线性时变系统作为无线信道的模型,其中 k = 0,...,L-1,L 为多径编号。用 hi,j (τk, t) 表示第 j 个发射天线与第 i 个接收天线之间的脉冲响应,用 Nr x Nt 矩阵 h (τk,t) 表示具有 Nt 个发射天线和 Nr 个接收天线的 MIMO 信道:

    此外,假设信号 sj(t) 是从第 j 个发射天线发出,在第 i 个接收天线处接收的信号 yj(t) 给出如下: 

           对于一个理想的 MIMO 信道,每个 hi,j (为方便起见,省略 τk,t) 的性质都与 SISO 无线信道相同,其中,所有信道都相互独立而且不相关。在实际 MIMO 信道中,信道之间存在一定程度的相关性,因此,会直接影响 MIMO 系统能够实现的分集增益。

            MIMO信道的信道容量在很大程度上取决于天线之间的相关性和MIMO信道矩阵的满秩情况。如前所述,对于收发端都具有相关性的MIMO信道.为了分析和比较天线的相关性对信道容量的具体影响,这里以2*2的信道为例进行仿真,相关系数分别取为0,0.2,0.5,0.9,结果如图XX所示。从图中可以看出,天线的相关系数越大,对信道容量的影响越大,而且信噪比越大,造成的损失越大。

    2.仿真效果预览

    matlab2022a仿真结果如下:

     

    3.核心MATLAB预览

    1. ..........................................................
    2. for(k = 1 : 2)
    3. nt = nt_V(k);
    4. nr = nr_V(k);
    5. for(i = 1 : length(SNR_V))
    6. Pt = N0 * SNR_V(i);
    7. for(j = 1 : Iteration)
    8. H = random('rayleigh',1,nr,nt);
    9. [S V D] = svd(H);
    10. landas(:,j) = diag(V);
    11. [Capacity(i,j) PowerAllo] = WaterFilling_alg(Pt,landas(:,j),B,N0);
    12. end
    13. end
    14. f1 = figure(1);
    15. hold on
    16. plot(SNR_V_db,mean(Capacity'),notation(k,:),'color',color(k,:))
    17. hold on
    18. [y,x] = hist(reshape(landas,[1,min(nt,nr)*Iteration]),100);
    19. plot(x,y/Iteration,'color',color(k,:));
    20. clear landas
    21. end
    22. f1 = figure(1)
    23. legend_str = [];
    24. for( i = 1 : length(nt_V))
    25. legend_str =[ legend_str ;...
    26. {['nt = ',num2str(nt_V(i)),' , nr = ',num2str(nr_V(i))]}];
    27. end
    28. 01_005_m

    4.完整MATLAB程序

    matlab源码说明_我爱C编程的博客-CSDN博客

    V

  • 相关阅读:
    【python】使用python操作XML文件及JSON与XML互转
    【暑期每日一题】洛谷 P7398 [COCI2020-2021#5] Šifra~
    深度剖析 —— 预处理
    CVPR2022 | 弱监督多标签分类中的损失问题
    IDEA中使用注解Test
    EasyCode整合mybatis-plus的配置
    从0开始学云计算之服务器:服务的定义,特点,应用场景,分类
    IC工程师职场必备《经典Verilog100多个代码案例》(附下载)
    如何建立一个自己的网站?不懂代码搭建自己网站详细教程
    阿里双十一交易核心链路产品--RocketMQ 底层原理及性能调优实战
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/127869865