Bitácora · DCSS · Concepto

El algoritmo CMA

Unidad 6 · Ecualizadores adaptativos · ecualización ciega, criterio de módulo constante, fase y pasaje a DD

El LMS corrige los taps con el error entre la salida y el símbolo que se mandó, y eso supone que el receptor sabe qué símbolo se mandó. Al arrancar no lo sabe: no hay secuencia de entrenamiento y el ojo está cerrado, así que el slicer se equivoca casi siempre. El CMA cambia la pregunta. En vez de «¿qué símbolo era?», pregunta «¿la salida está a la distancia correcta del origen?», y eso se contesta sin conocer un solo símbolo. En la cadena canal → AGC → ecualizador → slicer ocupa el lugar del LMS y cambia una sola cosa: el error que vuelve a los taps.

01 · Ecualizar a ciegas

El ecualizador adaptativo necesita una referencia contra la cual medir su error. La filmina de modos de entrenamiento da tres. La secuencia de entrenamiento manda símbolos que el receptor conoce, y cuesta capacidad y coordinación. El modo dirigido por decisiones (DD) usa la salida del slicer, A^k, como si fuera el símbolo verdadero, y funciona mientras el slicer acierte. Las dos están en entrenamiento y modo dirigido por decisiones. La tercera es la ecualización ciega: adaptar usando sólo una propiedad estadística de la constelación, sin ver ningún símbolo. Godard la llamó self-recovering equalization: el receptor se recupera solo.

La DD sola no arranca con una QAM densa. Con la cadena del script de clase —64-QAM, Eb/N0=13 dB, ecualizador de 63 taps a T/2— y la DD encendida desde el primer símbolo, la SER del último tercio queda en 94,0 %. La salida apenas crece: arranca a 0,079 veces el tamaño de la constelación y termina a 0,19. La filmina lo deja como pregunta —«investigar qué ocurre con modulaciones de mayor orden»—, y ésa es la respuesta medida.

02 · El criterio de módulo constante

La idea de la filmina es «pensar en la magnitud del símbolo». Si la salida del ecualizador tuviera ISI, cada muestra sería el símbolo más pedazos de los vecinos, y su módulo se desparramaría. Un costo que mida ese desparramo alrededor de un radio fijo mide la ISI sin mirar los datos. La filmina da dos:

J1=E[(|Yk|−ρ1)2]J2=E[(|Yk|2−ρ2)2]

con los radios de referencia

ρ1=E|Ak|2E|Ak|ρ2=E|Ak|4E|Ak|2

Son los casos p=1 y p=2 de la dispersión de orden p del paper de Godard (el extra 6.1), D(p)=E[(|Yk|p−Rp)2],Rp=E|Ak|2p/E|Ak|p. De p=2 Godard dice que da un algoritmo «notablemente simple de implementar». En ninguno de los dos aparece Ak ni la fase de Yk: sólo la salida y una constante que se calcula una vez con la estadística de la constelación.

La constante es un cociente de momentos, y para las constelaciones cuadradas tiene forma cerrada. Con los niveles de qammod:

constelaciónE|A|²E|A|⁴ρ₂√ρ₂radios distintos
QPSK2421,4141
16-QAM1013213,23,6333
64-QAM422436587,6169

Con QPSK todos los símbolos están sobre el mismo círculo y, con ecualización perfecta, |Yk|2=ρ2 en cada símbolo: el costo vale cero. Con 64-QAM los símbolos viven en nueve anillos, de 2 a 98, y el costo no se anula ni con la salida perfecta. Por qué igual sirve es la sección 05.

03 · El gradiente, paso a paso

El ecualizador es un transversal (el FIR transversal): con los taps en el vector 𝒄k y las muestras de la línea de retardo en 𝒓k,

Yk=𝒄kT𝒓k

sin conjugar. Es el W.'*buffer del script, que avisa en un comentario: «' transpone y conjuga, usar .'».

Paso 1: el costo instantáneo. Igual que en el LMS, la esperanza no se conoce y se reemplaza por el valor de este símbolo: J2≈(|Yk|2−ρ2)2.

Paso 2: derivar el módulo al cuadrado. |Yk|2=YkYk*, con Yk*=𝒄kH𝒓k*. Tomando 𝒄 y 𝒄* como variables independientes, que es lo que se hace con taps complejos, Yk no depende de 𝒄* y Yk* depende linealmente:

∂|Yk|2∂𝒄*=Yk𝒓k*

Paso 3: la regla de la cadena. La derivada de (u−ρ2)2 respecto de u es 2(u−ρ2), así que

∇𝒄J2=2(|Yk|2−ρ2)Yk𝒓k*

Paso 4: bajar por el gradiente. Con la misma convención que la filmina usa para el LMS, 𝒄k+1=𝒄k−β2∇𝒄J, el 2 se cancela y el signo se mete adentro del paréntesis:

𝒄k+1=𝒄k+βEk𝒓k*,Ek(2)=Yk(ρ2−|Yk|2)

Es la ecuación (28) de Godard. La estructura es la del LMS de la filmina: el mismo buffer, el mismo multiplicador, el mismo paso β. Cambia sólo cómo se arma Ek, y por eso el diagrama «CMA + DD» de la filmina tiene los dos errores calculados a la vez y un selector SEL que elige cuál entra al LMS. Con p=1 sale Ek(1)=Yk|Yk|(ρ1−|Yk|).

El error tiene una lectura directa. Si |Yk|2<ρ2, Ek apunta en la dirección de Yk y la agranda; si |Yk|2>ρ2, apunta al revés y la achica. Nunca empuja de costado: el CMA mueve cada muestra hacia el anillo o desde el anillo, en la dirección radial, y nada más.

De dónde sale ρ₂. Supongamos la ISI ya eliminada y la salida escalada, Yk=gAk. Para que eso sea un punto de equilibrio, la corrección media en la dirección del símbolo tiene que ser cero:

E[EkAk*]=g(ρ2E|Ak|2−g2E|Ak|4)=0⇒g2=ρ2E|Ak|2E|Ak|4

Pedir g=1 da ρ2=E|Ak|4E|Ak|2, que es la ecuación (25) de Godard. O sea: ρ2 no decide la forma de la solución, decide su escala. Con cualquier otra constante el ecualizador converge igual, sólo que a una salida más grande o más chica.

El error del script es otro. La filmina lo marca como «usado en el script»:

EkCMA=−Yk(|Yk|−RCMA),RCMA=E|Ak|4E|Ak|2=ρ2

No es ni J1 ni J2: mezcla el módulo sin elevar de uno con la constante del otro. La misma cuenta de equilibrio da g=RCMAE|Ak|2/E|Ak|3, que para 64-QAM, con E|Ak|3=311,97, vale 1,0253: la salida queda un 2,5 % más grande que la constelación. El script, además, estima RCMA con los primeros mil símbolos transmitidos y obtiene 7,7193 en lugar de 58=7,6158, así que la predicción pasa a 1,0393. Medido al final del CMA: 1,0317. Con el error de Godard de la ecuación de arriba, en la misma cadena, 1,0042, contra 1 predicho. En los dos casos el ruido corre la escala menos de un 1 %. Para el script no importa, porque después la DD la lleva a 0,9875 igual.

04 · Por qué no ve la fase

El costo depende sólo de |Yk|. Si se giran todos los taps un mismo ángulo, 𝒄→𝒄ejθ, la salida gira θ y ningún módulo cambia: J2 es el mismo. El mínimo no es un punto sino un círculo entero de soluciones, una por ángulo, y el algoritmo no tiene ninguna razón para preferir una.

Con un error de fase de portadora pasa algo más fuerte. Si la señal recibida llega girada, 𝒓k→𝒓kejφ, los taps que salen del CMA son los mismos, no parecidos. Por inducción: si en el paso k los taps son iguales, la salida es Ykejφ, el módulo es el mismo, el error es Ekejφ, y la corrección vale

βEkejφ·𝒓k*e−jφ=βEk𝒓k*

que es la de antes. Los taps evolucionan idénticos y la salida sale girada exactamente φ. Medido en la cadena de clase, con la misma semilla y cuatro errores de fase:

φ, error de fasegiro al final del CMAescala |g|MSE sin el giroSER
0°−0,41°1,0317−19,09 dB9,5 %
10°9,59°1,0317−19,09 dB50,5 %
30°29,59°1,0317−19,09 dB94,2 %
90°89,59°1,0317−19,09 dB99,9 %

Últimos 20 000 símbolos antes del pasaje a DD. El giro, la escala y el MSE salen de ajustar una ganancia compleja g entre la salida y los símbolos transmitidos, alineados por correlación; el MSE es el que queda después de sacar g, normalizado a E|Ak|2. Tres columnas iguales en las cuatro filas: el CMA hizo el mismo trabajo. Sólo la SER cambia, porque el slicer sí mira la fase. El −0,41° de la primera fila es lo que la fase derivó durante la adaptación: nada la frena ni la empuja a cero.

La consecuencia es la que la filmina resume en el título del paper de Godard: equalization and carrier tracking, dos problemas. El CMA ecualiza y deja la constelación girada un ángulo arbitrario, y otro bloque, después del ecualizador, tiene que enderezarla. En el esquema de Godard (su figura 4) ese bloque es un lazo de fase dirigido por decisiones a la salida del ecualizador.

05 · Por qué funciona con QAM

Con una QAM el módulo no es constante, y el error no se anula ni con la salida perfecta. Un símbolo en 1+j tiene |Ak|2=2, y con ρ2=58 recibe una patada de 56Ak; uno en 7+7j recibe −40Ak. En promedio se cancelan, pero las patadas siguen: con el ecualizador ya convergido el CMA mueve los taps en cada símbolo. Por eso, en la cadena de clase, dejar el CMA hasta el final termina con un MSE de −19,07 dB y una SER de 8,9 %, y pasar a DD termina en −20,03 dB y 5,1 % (150 000 símbolos con RCMA exacta, medido sobre el último tercio).

Lo que hace que igual converja es la curtosis de la fuente, que el extra 6.2 (Johnson et al.) define como

κ=E|Ak|4(E|Ak|2)2

Mide cuánto varía el módulo: vale 1 si todos los símbolos están en el mismo círculo y 2 para una gaussiana compleja. Desarrollando el cuadrado, J2=E|Yk|4−2ρ2E|Yk|2+ρ22: a potencia de salida fija, minimizar J2 es minimizar el cuarto momento, o sea la curtosis de la salida. Y la ISI sube la curtosis, porque la salida con ISI es una suma de símbolos independientes, y una suma se parece más a una gaussiana que cada sumando. El CMA empuja la curtosis de la salida hacia abajo, y el punto más bajo que puede alcanzar es el de la fuente sola: la salida sin ISI.

momentoescala |g|MSE sin el girocurtosis de la salida
sin adaptar0,079−4,78 dB1,634
k = 5 0000,60−5,0 dB1,653
k = 10 0000,91−8,5 dB1,514
k = 20 0001,02−16,7 dB1,412
k = 50 0001,03−18,9 dB1,393
fin, en DD0,99−20,1 dB1,394

Cadena de clase, ventanas de mil símbolos que terminan en el símbolo k; «sin adaptar» son los símbolos 1 000 a 20 000 con los taps iniciales, y «fin» el último tercio. La fuente sola da κ=2436/422=1,381; con el ruido que queda a −20 dB la cuenta cerrada da 1,393, que es donde se clava la medición.

Eso explica la condición que pone Godard, su ecuación (35): E|Ak|4<2(E|Ak|2)2, que es exactamente κ<2. La fuente tiene que ser sub-gaussiana. Si fuera gaussiana, la salida con ISI sería otra gaussiana con la misma curtosis, y el costo no tendría cómo distinguirla de la buena. La tabla 2 de Johnson et al. ubica las QAM uniformes: 1,32 para 16-QAM, 1,381 para 64-QAM, 1,399 para 1024-QAM, contra 2 de la gaussiana. Cuanto más cerca de 2, más plana la superficie de costo y más lenta la convergencia; las constelaciones con shaping, que dan más probabilidad a los puntos internos, se acercan a 2 y ahí el CMA deja de servir. Cómo se arma la constelación está en la modulación QAM.

06 · Mínimos locales y el arranque

J2 no es convexo. Godard (sección V) encuentra una familia entera de puntos estacionarios: respuestas globales con M muestras no nulas, todas del mismo módulo. La de una sola muestra es la ecualización perfecta, y es el mínimo absoluto siempre que κ<2. Johnson et al. muestran superficies con varios mínimos: uno por cada retardo y cada fase cuando todo es ideal, todos de la misma profundidad, y de profundidades distintas cuando el ecualizador es más corto que el canal. A diferencia del MSE entrenado, que es un paraboloide con un solo fondo, acá el punto de partida decide adónde se llega.

El origen es el peor lugar para empezar. Con 𝒄=0 la salida es cero y el gradiente también; y a lo largo de cualquier dirección, escalando los taps por t, el costo es t4E|Yk|4−2t2ρ2E|Yk|2+ρ22, que baja al alejarse de t=0. El origen es un máximo. Por eso Godard inicializa todos los taps en cero salvo uno, el de referencia, con un valor mínimo —su ecuación (38)—, y en sus simulaciones con p=2 necesitó ese tap mayor que 1,3 en un canal y mayor que 2 en el otro. Johnson et al. lo llaman single spike y lo alinean con el centro de masa de la respuesta del canal.

El script arranca así: 63 taps en cero y el del medio, W(32), en 2,0. Con el AGC dejando la entrada a 0,3 de valor eficaz, la salida sin adaptar mide 0,079 veces la constelación, muy adentro del anillo de radio RCMA, y lo primero que hace el CMA es agrandarla. La condición (38) pide, en esas unidades, g2>κ/2=0,69, y el script arranca en 0,006: converge igual. Godard lo avisa, la condición es suficiente, no necesaria.

07 · CMA primero, DD después

El CMA arranca con el ojo cerrado pero deja dos cosas sin hacer: el ruido propio de la sección 05 y el giro de la sección 04. La DD hace bien justo esas dos, pero no arranca. La receta del script las encadena: el primer tercio de la simulación con el error CMA y paso β=2−11, el resto con el error DD, Ek=A^k−Yk, y paso 2−9. El último tercio se usa para medir la SER.

símbolo kmodoescala |g|MSE sin el giroSER
1 000CMA0,11−4,3 dB97,0 %
10 000CMA0,91−8,5 dB78,5 %
20 000CMA1,02−16,7 dB22,5 %
30 000CMA1,02−18,9 dB10,1 %
166 000CMA1,03−19,2 dB8,4 %
180 000DD0,99−20,0 dB4,1 %
450 000DD0,99−20,0 dB5,5 %

Ventanas de mil símbolos, así que cada SER lleva un par de puntos de ruido. El CMA abre el ojo en unos 30 000 símbolos y después se queda quieto; el pasaje a DD, en el símbolo 166 666, baja el MSE un decibel y la escala a 0,99. Sobre el último tercio entero la SER final es 4,96 %.

La DD también endereza el giro, pero sólo si es chico. Con el mismo CMA y distintos errores de fase de portadora, lo que queda al final:

φgiro al pasar a DDgiro al finalSER final
0° a 12°−0,41° a 11,59°0,00°4,96 %
14° a 24°13,59° a 23,59°12,3°77 %
30°29,59°23,8°91,9 %
40°39,59°37,7°95,9 %
60°59,59°65,6°98,7 %
80° a 100°79,59° a 99,59°90,00°99,92 %

Cadena de clase, 500 000 símbolos, barrido de 0° a 40° cada 2° más 60°, 80°, 90° y 100°; la SER es la del último tercio. Hasta unos 12° la DD lleva el giro a cero y la SER queda en la del caso sin error de fase. Más allá, la DD se engancha en un equilibrio falso —12,3° para todo el tramo de 14° a 24°— y la SER se dispara. La última fila es la trampa: a 90° la constelación girada es la misma constelación, la DD converge perfecto —escala 0,9875 y MSE −20,06 dB, idénticos al caso sin giro— y todas las decisiones están mal. Una QAM cuadrada no tiene manera de saber dónde está el cero de fase módulo 90°. Godard lo resuelve con codificación diferencial en el transmisor; con símbolos conocidos también se resuelve, y eso es de entrenamiento y DD. El script de clase no tiene error de fase, así que nada de esto aparece si no se lo agrega.

Simulación La constelación mientras el CMA adapta — la cadena del script de clase, 150 000 símbolos, CMA el primer tercio y DD después. Arriba, los últimos tres mil símbolos a la salida del ecualizador, con el anillo de radio R_CMA; abajo, el MSE a lo largo de la adaptación. Arranca antes de adaptar: movelo.
modo — escala |g| — giro — MSE con el giro — MSE sin el giro — curtosis — SER —

Sin adaptar, la salida es una mancha chica en el centro: el ojo está cerrado y además la escala está lejos. Al avanzar, primero la mancha crece hasta el anillo —el CMA arregla la escala antes que la forma—, después la curtosis baja y aparecen las 64 nubes, y aparecen giradas φ. La curva de abajo lo muestra con dos trazos: el MSE sin el giro baja con el ojo, y el MSE con el giro se frena cerca de −9 dB, porque un giro de 20° es por sí solo un error de |ejφ−1|2=4sen2(φ/2)=0,12 de la potencia, −9,2 dB, por más abierto que esté el ojo. Al cruzar el símbolo 50 000 entra la DD. Con φ=20° se engancha a unos 12° y la SER queda arriba del 75 %; bajando φ por debajo de unos 12° la endereza. Con 90° todo se ve perfecto y la SER llega casi al 100 %.

El simulador corre la misma cadena que el script, con tres diferencias: 150 000 símbolos en lugar de 500 000, RCMA exacta en lugar de estimada, y su propio generador de números al azar. Corrida en MATLAB con esos mismos parámetros, termina el CMA con escala 1,0115, MSE −18,91 dB y SER 9,8 %, y la DD con 0,9877, −20,03 dB y 5,1 %; el simulador da 1,015, −19,23 dB, 7,9 % y 0,988, −20,06 dB, 5,0 %. La DD endereza hasta un giro de 11,45° y se engancha desde 12,45° en MATLAB; en el simulador ya falla con 12,03°. El límite está ahí, en unos 12°.

08 · El análisis en MATLAB

El script basic_transceiver_CMA_equalizer.m de la clase corre tal cual, con los slicer*.m en la misma carpeta. Con rng(1) antes de llamarlo da SER = 0.04956 y ber_aprox = 0.0083, con RCMA = 7.7193. Lo que sigue es la misma cadena sin los gráficos, con un error de fase de portadora agregado y con las mediciones de esta nota. Lo que figura como comentario es la salida real de correrlo en R2026a.

%% El CMA del script de clase, medido: MSE y ángulo al final del CMA y de la DD
rng(1)
L = 0.5e6; M = 64; N = 2;
[I, Q] = meshgrid(-7:2:7); A = I(:) + 1j*Q(:);           % la 64-QAM de qammod
rho2 = mean(abs(A).^4) / mean(abs(A).^2);
kappa = mean(abs(A).^4) / mean(abs(A).^2)^2;
fprintf('rho2 = %.4f   R_CMA = sqrt(rho2) = %.4f   kappa = %.4f\n', rho2, sqrt(rho2), kappa)
% rho2 = 58.0000   R_CMA = sqrt(rho2) = 7.6158   kappa = 1.3810

for phi = [0 10 30 90]                                    % error de fase de portadora, en grados
    [x, yk, ak, K] = transceptor(L, phi);
    a = medir(yk, ak, x, K-20000, K-1);                   % los últimos 20 000 símbolos del CMA
    b = medir(yk, ak, x, fix(2*L/3), length(yk)-100);     % el último tercio, en DD
    fprintf('phi = %2d | fin CMA: ang %6.2f  |g| %.4f  MSE %6.2f dB  SER %.3f | fin DD: ang %6.2f  |g| %.4f  MSE %6.2f dB  SER %.4f\n', ...
        phi, a.ang, a.gan, a.mse, a.ser, b.ang, b.gan, b.mse, b.ser)
end
% phi =  0 | fin CMA: ang  -0.41  |g| 1.0317  MSE -19.09 dB  SER 0.095 | fin DD: ang  -0.00  |g| 0.9875  MSE -20.06 dB  SER 0.0496
% phi = 10 | fin CMA: ang   9.59  |g| 1.0317  MSE -19.09 dB  SER 0.505 | fin DD: ang  -0.00  |g| 0.9875  MSE -20.06 dB  SER 0.0496
% phi = 30 | fin CMA: ang  29.59  |g| 1.0317  MSE -19.09 dB  SER 0.942 | fin DD: ang  23.82  |g| 0.7379  MSE -17.38 dB  SER 0.9193
% phi = 90 | fin CMA: ang  89.59  |g| 1.0317  MSE -19.09 dB  SER 0.999 | fin DD: ang  90.00  |g| 0.9875  MSE -20.06 dB  SER 0.9992

function [x, yk, ak, K] = transceptor(L, phi)
% basic_transceiver_CMA_equalizer.m sin los gráficos, más un giro de portadora
rng(1)
BR = 128e9; N = 2; Nch = 8; EbNo = 13; M = 64; k = log2(M);
x = qammod(randi([0 M-1], L, 1), M);
RCMA = sqrt(mean(abs(x(1:1000)).^4)/mean(abs(x(1:1000)).^2));
hrc = rcosdesign(0.1, 10, Nch, "sqrt"); hrc = hrc./sum(hrc);
ych = filter(hrc, 1, upsample(x, Nch));
SNR = 10^((EbNo - 10*log10(Nch) + 10*log10(k))/10);
sigma = sqrt(var(ych)/SNR/2);
rx1 = (ych + sigma*(randn(size(ych)) + 1j*randn(size(ych)))) * exp(1j*phi*pi/180);
rx = filter(fir1(5, 0.9/Nch), 1, rx1);
rxch = rx(5:Nch/N:end);
i_equalizer = rxch(2:end) * 0.3/std(rxch);               % AGC
Lrx = length(i_equalizer);
NTAPS = 63; W = zeros(NTAPS,1); W((NTAPS+1)/2) = 2.0; buffer = zeros(NTAPS,1);
yk = zeros(fix(Lrx/N),1); ak = yk;
for m = 1:Lrx
    buffer(2:end) = buffer(1:end-1); buffer(1) = i_equalizer(m);
    yfilt = W.'*buffer;
    if mod(m,N) == 0
        yk(m/N) = yfilt; ak(m/N) = slicer(yfilt, M);
        if m < fix(Lrx/3)                                   % CMA el primer tercio
            Ek = -yfilt*(abs(yfilt) - RCMA); step = 2^-11;
        else                                                % DD después
            Ek = ak(m/N) - yfilt;           step = 2^-9;
        end
        W = W*(1 - step*1e-4) + step*Ek*conj(buffer);
    end
end
K = fix(fix(Lrx/3)/N);                                      % símbolo del cambio a DD
end

function r = medir(yk, ak, x, i0, i1)
% Alinea con el retardo de máxima correlación y ajusta una ganancia compleja g
Y = yk(i0:i1); c = zeros(81,1);
for d = 0:80, c(d+1) = abs(sum(Y .* conj(x((i0:i1)-d)))); end
[~, d] = max(c); d = d - 1;
A = x((i0:i1)-d);
g = sum(Y.*conj(A)) / sum(abs(A).^2);
r.ang = angle(g)*180/pi;                                    % el giro que quedó
r.gan = abs(g);                                             % la escala que quedó
r.mse = 10*log10(mean(abs(Y/g - A).^2) / mean(abs(A).^2));  % MSE sin el giro ni la escala
r.ser = mean(ak(i0:i1) ~= A);
end

Cinco detalles que muerden:

Para tener a mano

  1. Ecualización ciega: adaptar sin entrenamiento y sin decisiones confiables, con una sola estadística de la constelación.
  2. Criterio de Godard: J2=E[(|Yk|2−ρ2)2],ρ2=E|Ak|4E|Ak|2
  3. Actualización: 𝒄k+1=𝒄k+βEk𝒓k*, con Ek(2)=Yk(ρ2−|Yk|2). Es el LMS con otro error. El script usa EkCMA=−Yk(|Yk|−RCMA), con RCMA=ρ2.
  4. ρ2 fija la escala, no la forma. Con ρ2 la salida converge a g=1; con el error del script, a RCMAE|Ak|2/E|Ak|3, 1,025 para 64-QAM.
  5. El costo sólo mira |Yk|: con la entrada girada φ los taps salen idénticos y la constelación queda girada φ. Otro bloque la endereza.
  6. Con QAM el error no se anula nunca: queda más ruido que con DD. Funciona porque la fuente es sub-gaussiana, κ<2: 1,32 para 16-QAM, 1,381 para 64-QAM.
  7. El costo no es convexo y el origen es un máximo: se arranca con un solo tap distinto de cero en el centro.
  8. Receta: CMA para abrir el ojo, DD para afinar y enderezar. Con 64-QAM la DD endereza giros de hasta unos 12°, y a 90° converge perfecto con todas las decisiones mal.
← Anterior Siguiente → Inicio
Relacionados El algoritmo LMS Entrenamiento y modo DD El control automático de ganancia El ecualizador fraccionario La modulación QAM