Main Content

Modulación de amplitud de banda lateral única

Este ejemplo muestra cómo utilizar la transformación Hilbert para llevar a cabo la modulación de amplitud (AM) de banda lateral única (SSB) de una señal. Las señales AM de banda lateral tienen menos ancho de banda que las señales AM normales.

Genere 512 muestras de una señal de banda ancha simulada utilizando la función.sinc Especifique un ancho de banda de

<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>4</mn>
</mrow>
</math>
rad/muestra.

N = 512; n = 0:N-1;  bw = 1/4; x = sinc((n-N/2)*bw);

Agregue el ruido gaussiano blanco de tal forma que la relación señal-ruido sea de 20 dB. Restablezca el generador de números aleatorios para obtener resultados reproducibles. Utilice la función para estimar la densidad espectral de potencia (PSD) de la señal.periodograma

rng default  SNR = 20; noise = randn(size(x))*std(x)/db2mag(SNR); x = x + noise;  periodogram(x)

Amplitud modular la señal utilizando un coseno de frecuencia portadora

<math display="block">
<mrow>
<msub>
<mrow>
<mi>ω</mi>
</mrow>
<mrow>
<mi>c</mi>
</mrow>
</msub>
<mo>=</mo>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
. Multiplicar por
<math display="block">
<mrow>
<msqrt>
<mrow>
<mn>2</mn>
</mrow>
</msqrt>
</mrow>
</math>
de modo que la potencia de la señal modulada sea igual a la potencia de la señal original. Estimar el PSD.

wc = pi/2;  x1 = x.*cos(wc*n)*sqrt(2);  periodogram(x1) legend('Modulated')

La modulación de amplitud SSB reduce el ancho de banda de la señal a la mitad. Para llevar a cabo la modulación de amplitud SSB, primero debe calcular la transformación Hilbert de la señal. Entonces, la amplitud modula la señal usando un seno con la misma frecuencia portadora,

<math display="block">
<mrow>
<msub>
<mrow>
<mi>ω</mi>
</mrow>
<mrow>
<mi>c</mi>
</mrow>
</msub>
</mrow>
</math>
, como antes, y agréguelo a la señal anterior.

Diseñe un transformador Hilbert utilizando la función.designfilt Especifique un orden de filtro de 64 y un ancho de transición de 0,1. Filtra la señal.

Hhilbert = designfilt('hilbertfir','FilterOrder',64, ...     'TransitionWidth',0.1);  xh = filter(Hhilbert,x);

Utilice la función para determinar el retardo, , introducido por el filtro.grpdelaygd Compense el retardo descartando los primeros puntos de la señal filtrada y rellenando con ceros al final.gd La amplitud modula el resultado y agréguelo al original. Compare los PSD.

gd = mean(grpdelay(Hhilbert)); xh = xh(gd+1:end); eh = zeros(size(x)); eh(1:length(xh)) = xh;  x2 = eh.*sin(wc*n)*sqrt(2);  y = x1+x2;  periodogram([x1;y]') legend('Modulated','SSB')

Hacia abajoconvierte la señal y estime el PSD.

ym = y.*cos(wc*n)*sqrt(2);  periodogram(ym) legend('Downconverted')

Filtro de paso bajo de la señal modulada para recuperar el original. Especifique un filtro DE paso bajo FIR de 64o orden con una frecuencia de corte de

<math display="block">
<mrow>
<mi>π</mi>
<mo>/</mo>
<mn>2</mn>
</mrow>
</math>
. Compensar el retardo introducido por el filtro.

d = designfilt('lowpassfir','FilterOrder',64, ...     'CutoffFrequency',0.5); dem = filter(d,ym);  gd = mean(grpdelay(d)); dem = dem(gd+1:end);  dm = zeros(size(x)); dm(1:length(dem)) = dem;

Calcule el PSD de la señal filtrada y compárelo con el original.

periodogram([x;dm]') legend('Original','Recovered')

Utilice la función para comparar las relaciones señal-ruido de las dos señales.snr Trazar las dos señales en el dominio del tiempo.

snrOrig = snr(x,noise)
snrOrig = 20.0259 
snrRecv = snr(dm,noise)
snrRecv = 20.1373 
 plot(n,[x;dm]') legend('Original','Recovered') axis tight

Referencias

Buck, John R., Michael M. Daniel y Andrew C. Singer. .Computer Explorations in Signals and Systems Using MATLAB 2a Edición. Upper Saddle River, NJ: Prentice Hall, 2002.

Consulte también

| |