Simulación de ecualización de ruptura cero ZF en el sistema MIMO

% ------------------------------------------------- -------------------------
% Autor: Le Phu Thanh [email protected]%
------------- -------------------------------------------------- -----------
% Referencias:
% - Jing Liu, Jian-Kang Zhang y Kon Max Wong, sobre el diseño de
códigos de bloque de espacio-tiempo lineal de% de BER mínimo para sistemas MIMO equipados con MMSE
% Receptores "IEEE TRANS. Sinal Processing, VOL.54, NO.8, AGOSTO 2006

% ------------------------------------------------- -------------------------
% NOTA:

% ------------------------------------------------- -------------------------
borrar todo;
tic
mTx = 2; % Número de antenas transmisoras
nRx = 2; % Número de antenas receptoras
T = 1; % Número de intervalos de tiempo
N = 500; % Número de ensayos a un nivel de ruido dado
L = mTx * T;
nsymb = L * N; % Número de flujo de símbolos
No_uncode = T * N;

% 4QAM Modulación
Mary = 4;
partición = [0];
xcodebook = [-1,1];
% María = 16;
% partición = [-2,0,2];
% xcodebook = [- 3, -1,1,3];
ycodebook = xcodebook;
% Finish 4QAM modulación
Es = 2 * suma (xcodebook * xcodebook ') / tamaño (xcodebook, 2); % de energía de símbolo promedio por antena
snr = 0: 2: 20;
para bi = 1: longitud (snr)
  errZF = 0;
  errZF_DFE = 0;
  ro = 10 ^ (snr (bi) / 10);
  para n = 1: No_uncode
       S_out = []; % Secuencia de
       símbolos output_estimate S_in = randsrc (mTx, 1, xcodebook) + i * (randsrc (mTx, 1, ycodebook)); % Entrada de flujo de símbolos
       S_in1 = S_in / sqrt (Es);
       ruido = (randn (nRx, 1) + i * randn (nRx, 1)) / sqrt (2);% Obtener ruido
       % ruido = (randn (nRx, 1) + i * randn (nRx, 1)) * sqrt (Es / 2); 
       uncode_H = (randn (nRx, mTx) + i * randn (nRx, mTx)) / sqrt (2);% Obtener canal de Rayleigh
             
       y = sqrt (ro / mTx) * uncode_H * S_in1 + ruido; % En el receptor
     
% Demodular a través del ecualizador ZF
       G_ZF = sqrt (mTx / ro) * pinv (uncode_H);
       S_out = sqrt (Es) * G_ZF * y; % Símbolo fuera del ecualizador
      % Decodificador
         para ii = 1: mTx% detector 
            [o, a (ii)] = cuantiz (real (S_out (ii)), partición, xcodebook);
            [o, b (ii)] = quantiz (imag (S_out (ii)), partición, ycodebook);
         end
        S_out_dec = a + i * b;
        err_real = suma (real (S_out_dec) ~ = real (S_in. '));
        err_imag = sum (imag (S_out_dec) ~ = imag (S_in. '));
        errZF = errZF + err_real + err_imag;
% Fin ZF solamente

% ZF-DFE o V-Blast ------------------------------------------ ----------------------
        H = descodificar_H;
        r = raíz cuadrada (Es) * y;
        G = raíz cuadrada (mTx / ro) * pinv (H);
        para j = 1: mTx% i bucle
            para J = 1: mTx
                n (J) = (norm (G (J, :) )) ^ 2;
            final
            para t = 1: j-1
                n (k (t)) = Inf;
            fin
            [Y, I] = min (n);
            k (j) = yo;
            w = G (yo, :);
            yy = w * r;
            [o, n1] = quantiz (real (yy), partición, xcodebook);
            [o, n2] = quantiz (imag (yy), partición, ycodebook);
            b (I) = n1 + i * n2;
            r = r-sqrt (ro / mTx) * H (:, I) * b (I);
            H (:, I) = 0;
          G = raíz cuadrada (mTx / ro) * pinv (H);

..............................

B-0063

Supongo que te gusta

Origin blog.csdn.net/ccsss22/article/details/114744013
Recomendado
Clasificación