⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 alamouti2xnr.m

📁 some code in mimo ofdm
💻 M
字号:

%************************************************************************
%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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -