【多天线传输技术】BPSK调制信号在复高斯瑞利信道下Alamouti的误码率分析

%% [预处理]
clc;
clear;
close all;

%% [配置参数]
N=3000000;             %数据点数(个)
SNR_dB=0:1:45;         %信噪比(dB形式)
SNR=10.^(SNR_dB/10);   %信噪比(一般形式,Eb/N0)
Ps=1;                  %信号功率,功率为1时其dB形式为0。
Pn=Ps./SNR;            %噪声功率

Error_Count_1T1R=zeros(1,length(SNR_dB));  %码元错误个数(11收)
Error_Count_2T1R=zeros(1,length(SNR_dB));  %码元错误个数(21收)
Error_Count_1T2R=zeros(1,length(SNR_dB));  %码元错误个数(12收)

SER_1T1R=zeros(1,length(SNR_dB));          %仿真误码率(11收)
SER_2T1R=zeros(1,length(SNR_dB));          %仿真误码率(21收)
SER_1T2R=zeros(1,length(SNR_dB));          %仿真误码率(12收)

Demod_1T1R=zeros(1,N);                     %解调信号(11收)
Demod_2T1R=zeros(2,N);                     %解调信号(21收)
Demod_1T2R=zeros(1,N);                     %解调信号(12收)

yn_1T1R=zeros(1,N);                        %接收信号(11收)
yn_2T1R=zeros(2,N);                        %接收信号(21收)
yn_1T2R=zeros(1,N);                        %接收信号(12收)

h_1T1R=(randn(1,N) +1i*randn(1,N));        %复高斯瑞利信道,均值为0+0i,方差为211收)
h_2T1R=(randn(2,N) +1i*randn(2,N));        %复高斯瑞利信道,均值为0+0i,方差为221收)
h_1T2R=(randn(2,N) +1i*randn(2,N));        %复高斯瑞利信道,均值为0+0i,方差为212收)

h_2T1R=h_2T1R./sqrt(2);                    %信道能量归一化,方差为121收) 
h_1T2R=h_1T2R./sqrt(2);                    %信道能量归一化,方差为112收) 
h_1T1R=h_1T1R./sqrt(2);                    %信道能量归一化,方差为111收) 

%% 111收】
sn_1T1R=round(rand(1,N));              % 原信号: 0,1序列sn
sn1_1T1R=round((sn_1T1R-1/2)*2);       % 原信号:-1,1序列sn1
for i=1:length(SNR_dB)
    noise_1T1R = sqrt(Pn(i)/2)*(randn(1,N)+1i*randn(1,N)); %高斯白噪声
%     yn_1T1R=sn1_1T1R+noise_1T1R./h_1T1R; 
    r_1T1R=h_1T1R.*sn1_1T1R+noise_1T1R; %接收
    yn_1T1R=r_1T1R./h_1T1R;  %判决变量
    %%% 解码
    for j=1:N
         if (yn_1T1R(j)>0)
             Demod_1T1R(j)=1;         %接收信号大于0,则判1
         else
             Demod_1T1R(j)=0;         %接收信号小于0,则判0
         end
    end
     %%% 计算错误比特个数
     for j=1:N
         if(Demod_1T1R(j)~=sn_1T1R(j))
              Error_Count_1T1R(i)=Error_Count_1T1R(i)+1;
         end
     end
     %%% 计算误码率
     SER_1T1R(i)=Error_Count_1T1R(i)/N;           % 仿真误码率
end
%% 221收 空时码】
sn_2T1R=round(rand(2,N));                           % 原信号: 0,1序列sn
sn1_2T1R=(1/sqrt(2)).*round((sn_2T1R-1/2)*2);       % 原信号

for i=1:length(SNR_dB)
    %%% 生成信号
    noise_1= sqrt(Pn(i)/2)*(randn(1,N)+1i*randn(1,N)); %第一个信道上的噪声
    noise_2= sqrt(Pn(i)/2)*(randn(1,N)+1i*randn(1,N)); %第二个信道上的噪声
%     noise_2T1R(1,:)= (conj(h_2T1R(1,:)).*noise_1+h_2T1R(2,:).*conj(noise_2))./(sum(abs(h_2T1R).^2)); %(h1*n1+h2n2*)/(||h||)             
%     noise_2T1R(2,:)= (conj(h_2T1R(2,:)).*noise_1-h_2T1R(1,:).*conj(noise_2))./(sum(abs(h_2T1R).^2)); %(h2*n1-h1n2*)/(||h||)
%     yn_2T1R=sn1_2T1R+noise_2T1R; 
    r1_2T1R=h_2T1R(1,:).*sn1_2T1R(1,:)+h_2T1R(2,:).*sn1_2T1R(2,:)+noise_1; %t1时刻接收
    r2_2T1R=-h_2T1R(1,:).*conj(sn1_2T1R(2,:))+h_2T1R(2,:).*conj(sn1_2T1R(1,:))+noise_2; %t2时刻接收
    yn_2T1R(1,:)=( conj(h_2T1R(1,:)).*r1_2T1R+h_2T1R(2,:).*conj(r2_2T1R) )./(sum(abs(h_2T1R).^2)); %判决变量
    yn_2T1R(2,:)=( conj(h_2T1R(2,:)).*r1_2T1R-h_2T1R(1,:).*conj(r2_2T1R) )./(sum(abs(h_2T1R).^2));
    %%% 解码
    for j=1:2
        for k=1:N
           if (yn_2T1R(j,k)>0)
             Demod_2T1R(j,k)=1;       %接收信号大于0,则判1
           else
             Demod_2T1R(j,k)=0;       %接收信号小于0,则判0
           end
        end
    end
    %%% 计算错误比特个数
    for j=1:2
        for k=1:N
          if(Demod_2T1R(j,k)~=sn_2T1R(j,k))
              Error_Count_2T1R(i)=Error_Count_2T1R(i)+1;
          end
        end
    end
    %%% 计算误码率
    SER_2T1R(i)=Error_Count_2T1R(i)/N/2;           % 仿真误码率
end

%% 312收】
sn_1T2R=round(rand(1,N));                                       % 原信号: 0,1序列sn
sn1_1T2R=[round((sn_1T2R-1/2)*2);round((sn_1T2R-1/2)*2)];       % 原信号:-1,1序列sn1
for i=1:length(SNR_dB)
    %%% 生成信号
    noise_1T2R=sqrt(Pn(i)/2)*(randn(2,N)+1i*randn(2,N));
    r_1T2R=h_1T2R.*sn1_1T2R+noise_1T2R;  %接收信号
%     yn_1T2R=(conj(h_1T2R(1,:)).*(h_1T2R(1,:).*sn1_1T2R(1,:)+noise_1T2R(1,:))+... %y=[h1*(h1x1+n1)+h2*(h2x2+n2)]/(h1^2+h2^2)
%              conj(h_1T2R(2,:)).*(h_1T2R(2,:).*sn1_1T2R(2,:)+noise_1T2R(2,:)))./...
%              (abs(h_1T2R(1,:)).^2+abs(h_1T2R(2,:)).^2);
    yn_1T2R=(conj(h_1T2R(1,:)).*r_1T2R(1,:)+conj(h_1T2R(2,:)).*r_1T2R(2,:))./(sum(abs(h_1T2R).^2));
    %%% 解码
    for j=1:N
        if (yn_1T2R(j)>0)
             Demod_1T2R(j)=1;       %接收信号大于0,则判1
        else
             Demod_1T2R(j)=0;       %接收信号小于0,则判0
        end
    end
    %%% 计算错误比特个数
    for j=1:N
       if(Demod_1T2R(j)~=sn_1T2R(j))
           Error_Count_1T2R(i)=Error_Count_1T2R(i)+1;
       end
    end
    %%% 计算误码率
    SER_1T2R(i)=Error_Count_1T2R(i)/N;           % 仿真误码率
end

%% [4、显示结果]
semilogy(SNR_dB,SER_1T1R,'go-',SNR_dB,SER_2T1R,'r*-',SNR_dB,SER_1T2R,'k*-');     
axis([0 45 10^-5 10^0]);     
legend("1发1收","2发1收","1发2收");
xlabel('信噪比SNR/dB');  %横轴坐标
ylabel('误码率BER');     %纵轴坐标
title("BPSK调制信号在复高斯瑞利信道下Alamouti的误码率分析");
grid on;                    %显示表格线
%     yn_1T2R=( r_1T2R*conj(h_1T2R'))./(sum(abs(h_1T2R).^2)); %判决变量./(sum(abs(h_1T2R).^2))

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Promethus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值