AWGN 和衰落通道上 16-QAM 的“联合绑定”、“联合-巴塔查里亚绑定”和“最小欧几里得距离绑定”研究(Matlab代码实现)

?????个人主页:研学社的博客     

????????欢迎来到本博客????????

??博主优势:??????博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

??座右铭:行百里者,半于九十。

??????本文目录如下:??????

目录

??1 概述

??2 运行结果

??3 参考文献

??4 Matlab代码实现


??1 概述

AWGN 和衰落通道上 16-QAM 的“联合绑定”、“联合-巴塔查里亚绑定”和“最小欧几里得距离绑定”研究(Matlab代码实现)

??2 运行结果

 

部分代码:

%% Generatig Constellation symbol
Ts=2;        % symbol time
A=1;
As=A.*sqrt(Ts/2);
Dmin=2*As;
S=As.*qammod([0:15], 16, 0, 'gray');             % Generated defaultly (+,- 1 and +,-3)
Es=sum(((real(S)).^2)+((imag(S)).^2))./length(S); % Average symbol Energy
%% Defining  Energy and SNR
EB=Es/N;                                 % Energy of Bit
EBN0dB=0:10;                             % EB/N0 in dB
ESN0dB=EBN0dB+10*log10(N);               % ES/N0 in dB
EBN0=10.^(EBN0dB/10);                    % EB/N0
ESN0=10.^(ESN0dB/10);                    % ES/N0
N0=Es./ESN0;                             % Noise Density                     
Variance=N0./2;                          % Variance of Noise
StandardD=sqrt(Variance);                % Standard deviation of Noise 
Mean=0;                                  % Mean of Noise
BER_Sim=[];                                  % Simulated BER will be stored in this empty matrix
for gg=1:length(EBN0)
    %% Generating random Bit Stream and converting it into symbol Stream
    Bits=randi([0 1],1,LB);                   % Random Stream of Bits
    Bits_Parallel=reshape(Bits,N,L);          % Parallel bits to be programmed
    De_Numbers=(bi2de(Bits_Parallel',2)')+1;  % Location for symmbols
    Symbols=S(De_Numbers);                    % Stream of symbols that is going to be sent
    %% Adding Gaussina noise to transmitted signal
    Noise=sqrt(N0(gg)/2).*(randn(1,L)+1j*(randn(1,L))); 
    Y=Symbols+Noise;

    %% Decision 

    Loc=[];
    for kk=1:L
        D=abs(Y(kk)-S);    % Distances between R and all symbols
        MinD=min(D);             % min Distance
        LminD=find(D==MinD);     % Location of minimum Distance
        Loc=[Loc LminD];         % Location of all symbol stream
    end

    RB=reshape(de2bi(Loc-1,N)',1,LB);  % Received Bits
    BER_Sim=[BER_Sim (sum(abs(RB-Bits)))/LB];  % Bit Error rate
end

%% Union Bound Error Probability
% Symbol Error  Rate
sq2N0=sqrt(2.*N0);
Dmi_sq2N0=Dmin./sq2N0;

SER_Union_Bound= ((3/1).*qfunc((1.*sqrt(1 )).*Dmi_sq2N0))...
    +((2/1).*qfunc((2.*sqrt(1 )).*Dmi_sq2N0))...
    +((1/1).*qfunc((3.*sqrt(1 )).*Dmi_sq2N0))...
    +((9/4).*qfunc((1.*sqrt(2 )).*Dmi_sq2N0))...
    +((2/2).*qfunc((2.*sqrt(2 )).*Dmi_sq2N0))...
    +((1/4).*qfunc((3.*sqrt(2 )).*Dmi_sq2N0))...
    +((3/1).*qfunc((1.*sqrt(5 )).*Dmi_sq2N0))...
    +((3/2).*qfunc((1.*sqrt(10)).*Dmi_sq2N0))...
    +((1/1).*qfunc((1.*sqrt(13)).*Dmi_sq2N0));
%     +((1/2).*qfunc((1.*sqrt(8 )).*Dmi_sq2N0));
BER_Union_Bound=SER_Union_Bound/N;

%% Union Bhattacharyya Bound Error Probability
% Symbol Error  Rate
sqDmi_sq2N02=(-1).*(Dmi_sq2N0.^2)./2;
SER_Bhattacharyya_Bound= ((3/1).*exp((1.*sqrt(1 )).*sqDmi_sq2N02))...
     +((2/1).*exp((2.*sqrt(1 )).*sqDmi_sq2N02))...
     +((1/1).*exp((3.*sqrt(1 )).*sqDmi_sq2N02))...
     +((9/4).*exp((1.*sqrt(2 )).*sqDmi_sq2N02))...
     +((2/2).*exp((2.*sqrt(2 )).*sqDmi_sq2N02))...
     +((1/4).*exp((3.*sqrt(2 )).*sqDmi_sq2N02))...
     +((3/1).*exp((1.*sqrt(5 )).*sqDmi_sq2N02))...
     +((3/2).*exp((1.*sqrt(10)).*sqDmi_sq2N02))...
     +((1/1).*exp((1.*sqrt(13)).*sqDmi_sq2N02));
%      +((1/2).*exp((1.*sqrt(8 )).*sqDmi_sq2N02));

BER_Bhattacharyya_Bound=SER_Bhattacharyya_Bound/N;

??3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]于洋. 高效率水声扩频通信技术研究[D].哈尔滨工程大学,2014.

[2]杨汨,柴金川,李毅,高闯.地铁地下人行通道场景无线信道大尺度衰落特性研究[J].铁道技术标准(中英文),2022,4(08):26-31.

??4 Matlab代码实现