alamouti2xnr.m

来自「some code in mimo ofdm」· M 代码 · 共 73 行

M
73
字号

%************************************************************************
%Alamouti Coding with 2xNr antenna configuration
%
%Num_RxAnt: the number of receive antenna
%M: M-ary digital modulation
%
%
%************************************************************************

clc;
clear all;
%repeat for different receive antennas
for w = 1: 4
    if w == 4
        Num_RxAnt = 6;
    else 
        Num_RxAnt = 2^(w - 1);
    end
    M = 4; %QPSK Modulation Scheme
    SNR_max = 10;
    N = 2000; %the pair number of symbol will being transmitted
    randn('state',0); %Remove it if you want a random start of the randn generator
    randn('state',0); %Remove it if you want a random start of the randn generator
    z = 1;
    for k = 1:2:SNR_max
        A = floor(M*rand(2,N)); %transmitted alphabet
        Str = exp(j*2*pi/M*A)/sqrt(2); %transmitted symbols
        %Str=2xN matrix, the block of input is going to be transmitted with constant SNR
        for i = 1:N
            S = [Str(1,i);Str(2,i)]; %making STC matrix
            snr = 10.^(k/10);
            sig = 0.5/snr;
            Ns = sqrt(sig).*(rand(2.*Num_RxAnt,1) + j*(rand(2.*Num_RxAnt,1)));
            H = [];
            for p = 1:Num_RxAnt
                h = (rand(1,2) + j*(rand(1,2)))/sqrt(2);
                H = [H;h(1) h(2);h(2)' -h(1)']; %channel matrix
            end
            p = 0;
            r = H*S + Ns; %receive signal on the receiver
            S_ = H'*r;
            ang = angle(S_); %receive angles
            B = mod(round(ang/(2*pi/M)),M); %receive alphabet, its another
        end
        %overal output for the all of the transmission symbol
        Ses(:,i) = [B(1);B(2)];
        %Str = transmitted symbols
        %Ses = received symbols
        %calculating bit error rate
        BER = 0;
        ERROR = 0;
        for p = 1:2
            for i = 1:N
                if A(p,i) ~= Ses(p,i)
                    ERROR = ERROR + 1;
                end
            end
        end
        ber(z) = ERROR/(2*N);
        z = z + 1;
    end
    Snr = 1:2:SNR_max;
    ber;
    Ber(:,w) = ber;
end
%plot the bit error rate
semilogy(Snr,Ber(:,1),'b*-',Snr,Ber(:,2),'g+-',Snr,Ber(:,3),'ro-',Snr,Ber(:,4),'m^-','LineWidth',2.0);
xlabel('SNR [dB]');
ylabel('BER');
title('Bit Error Rate Evaluation for MIMO Alamouti coding, QPSK Modulation');
legend('2Tx & 1 Rx antennas','2Tx & 2 Rx antennas','2Tx & 4 Rx antennas','2Tx & 6 Rx antennas');
grid on;

⌨️ 快捷键说明

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