MIMO通信系统中对比Alamouti和MRC的误码率性能matlab仿真

发布时间 2023-04-22 23:45:34作者: 我爱C编程

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

2.算法涉及理论知识概要

       MIMO(Multiple-Input Multiple-Out-put)系统是一项运用于802.11n的核心技术。802.11nIEEE802.11bag后全新的无线局域网技术,速度可达600Mbps。同时,专有MIMO技术可改进已有802.11a/b/g网络的性能。该技术最早是由Marconi1908年提出的,它利用多天线来抑制信道衰落。根据收发两端天线数量,相对于普通的SISO(Single-Input Single-Output)系统,MIMO还可以包括SIMO(Single-Input Multi-ple-Output)系统和MISO(Multiple-Input Single-Output)系统。

 

  MIMO 表示多输入多输出。读/maimo//mimo/,通常美国人前者,英国人读后者,国际上研究这一领域的专家较多的都读读/maimo/。通常用于 IEEE 802.11n,但也可以用于其他 802.11 技术。MIMO 有时被称作空间多样,因为它使用多空间通道传送和接收数据。只有站点(移动设备)或接入点(AP)支持 MIMO 时才能部署 MIMO

 

2.1Alamouti

        Alamouti编码的基础场景是两根发射天线,一根接收天线,并且发射机不知道信道,那么该如何发射。实现方式:一次性发送两个数据。因为只有一根接收天线,所以要再发送一次,接收端才能正常接收。

 

 

 

两个信号都分别经过了两个信道,获得了分集的效果。方程改写为:

 

 

Alamouti编码的巧妙之处在于不知道信道的情况下,将信道矩阵正交化。下面再解方程:

 

 

 

 

Alamouti编码在空时编码STC领域广泛应用,Alamouti编码也叫做STBC(空时块码)

 

2.2MRC

       最大比合并(Maximal Ratio CombiningMRC)是分集合并技术中的最优选择,相对于选择合并和等增益合并可以获得最好的性能,其性能提升是由阵列增益( 阵列增益即发射的信号的功率增益,是通过发送机和/或接收机的多个天线而实现功率增益的,一般在LTE中,增加一个天线会有3db的增益)带来的更高的信噪比,进而带来更好的误码率特性。

 

3.MATLAB核心程序

 

snr21=0:2:20;
 
Nr=2;
p=1;
for i=1:length(snr21)
    ber_m1_mrc21(i)=MRRC1xNr_Cor(snr21(i),Nr,p);
end
semilogy(snr21,ber_m1_mrc21,'-ro',...
    'LineWidth',2,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
hold on
 
Nr=2;
p=0.95;
for i=1:length(snr21)
    ber_m1_mrc21(i)=MRRC1xNr_Cor(snr21(i),Nr,p);
end
semilogy(snr21,ber_m1_mrc21,'-bs',...
    'LineWidth',2,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.2,0.0]);
hold on
 
Nr=2;
p=0.8;
for i=1:length(snr21)
    ber_m1_mrc21(i)=MRRC1xNr_Cor(snr21(i),Nr,p);
end
semilogy(snr21,ber_m1_mrc21,'-m^',...
    'LineWidth',2,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.0,0.9,0.0]);
hold on
 
Nr=2;
p=0.6;
for i=1:length(snr21)
    ber_m1_mrc21(i)=MRRC1xNr_Cor(snr21(i),Nr,p);
end
semilogy(snr21,ber_m1_mrc21,'-gx',...
    'LineWidth',2,...
    'MarkerSize',7,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.5,0.0]);
 
xlabel('SNR(dB)');
ylabel('BER');
legend('Nr=2 p=1','Nr=2 p=0.95','Nr=2 p=0.8','Nr=2 p=0.6');
hold off