% ------------------------------------------------- -------------------------
% 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