simomrc.m

来自「with SIMO, this code is used by MRC rece」· M 代码 · 共 32 行

M
32
字号
% Receiver diversity - MRC
clear
clc
packets=4000;   frame=130;
BIT=2; % modulation 1/2/3/4 for BPSK/QPSK/16QAM/64QAM
NTx=1;  NRx=2;
EbN0=[0:2:20];  sq_NTx=sqrt(NTx);   sq2=sqrt(2);
for i_SNR=1:length(EbN0)
    SNR=EbN0(i_SNR);    sigma=0.5/(10^(SNR/10));    sq_sigma=sqrt(sigma);
    for p_count=1:packets
        symbol_data=randint(frame*BIT,NTx);
        [temp s P]=modulator(symbol_data.',BIT);
        X=temp.';   frlg=length(X); x0=X;
        H=(randn(frlg,NRx)+j*randn(frlg,NRx))/sq2;
        Habs=sum(abs(H).^2,2);  z1=0;
        for i=1:NRx
            r(:,i)=sum(H(:,i).*x0,2)/sq_NTx+sq_sigma*(randn(frlg,1)+j*randn(frlg,1));
            z1=z1+r(:,i).*conj(H(:,i));
        end
        for m=1:P
            d1(:,m)=abs(sum(z1,2)-s(m)).^2+(-1+sum(Habs,2))*abs(s(m))^2;
        end
        [y1,i1]=min((d1),[],2); s1d=s(i1).';    Xd=[s1d];
        temp1=X>0;  temp2=Xd>0;
        error(p_count)=sum(sum(temp1~=temp2));
    end
    BER(i_SNR)=sum(error)/(packets*frame*BIT);
end
figure(1), semilogy(EbN0,BER,'s'), axis([EbN0([1 end]) 1e-6 1e0]); grid on; hold on;
xlabel('Eb/No(dB)');    ylabel('BER');
semilogy(EbN0,BER,'b'), axis([EbN0([1 end]) 1e-6 1e0]); hold on;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?