Está en la página 1de 18

Práctica 4: Transmisión estéreo

Estudiante: Oscar Torres

Grupo: Jueves

Fecha: 28/04/2021

1. Introducción

1.1. Multiplexión por división de frecuencia

Del estudio de la modulación de amplitud, se vió que es posible enviar varias señales en forma
simultanea eligiendo una frecuencia portadora diferente para cada una. Estas frecuencias se seleccionan
de manera que los espectros de las señales no se traslapen. Este modo se llama multiplexión por división
de frecuencia. (FDM, frecuency división multiplexing) y consiste en situar los espectros de las señales en
frecuencia de manera que cada uno pueda separarse de los demás por filtración [1].

En principio se usan 2 micrófonos, en cambio en AM es necesario únicamente 1, estos se encargan de


recibir los sonidos que se transmitirán al espacio y recibidos por el receptor (también se usar los mismos
2 micrófonos para grabar), estos se separan uno del otro y por lo mismo reciben las ondas sonoras de
forma diferente. En la figura 1 se muestra un diagrama en bloques de la muliplexión en frecuencia. Para
lograrlo, a cada señal se la multiplica por una portadora distanciada correctamente de las demás
portadoras, se debe considerar el ancho de banda de las señales a transmitir, para poder asignar un buen
distanciamiento entre las portadoras y evitar solapamientos.

Fig. 1. Multiplexión por división de frecuencia de 3 señales.

1.2. FM estereo

La transmisión FM estéreo se trata de una modulación en FM sobre una señal con dos señales mescladas
y multiplexadas en frecuencia, este tipo de transmisión se usa en radios comerciales y es de especial
interés en transmisión de señales audibles, como música.

El siguiente esquema representa el proceso para obtener la señal que se transmitirá mediante modulación
FM.
Fig. 2. Multiplex estéreo de FM.

Como se puede observar se tiene dos señales de entrada que corresponden a los canales izquierdo y
derecho. EL primer paso en el proceso es obtener una señal suma de los canales y otra señal resta de los
canales, la señal suma se mantiene en su banda base, mientras que a la resta se la modula para desplazarla
a una frecuencia central de 38KHz, esta portadora de 38KHz es obtenida a partir de una portadora de 19
KHz llamada subportadora piloto. Finalmente la señal stereo esta compuesta por la suma de la señal L+R
(suma de los canales izquierdo y derecho), la señal L-R en 38 KHz (resta de los canales y desplazadas a
los 38 KHz) y la portadora piloto de 19KHz.

La subportadora de 38 KHz se obtiene heterodinizando la subportadora de 19 KHz. Una vez que se tiene
la señal completa, se modula mediante FM de banda ancha [1].

La ventaja de este proceso, es que en el receptor se puede discrimar los canales únicamente realizando
una operación de suma y resta.

En la ecuación 1 se resume este proceso:

φ FM =[ ( L+ R ) + ( L−R ) cos ( 2∗π∗f sc∗t ) + cos ( π∗f sc∗t ) ]∗ cos ( 2∗π∗f c∗t ) (1)

Y su espectro es como se vé en la siguiente figura.

Fig. 3. Espectro de la señal multiplex estéreo de FM.

El demodulador sigue un proceso similar. El primer paso es realizar la demodulación FM, tal como se vió en
la práctica pasada, luego de eso se deben obtener las señales L+R y L-R, L+R se obtiene fácilmente con un
filtro, ya que con la demodulación, esta se encuentra en banda base, el filtro debe pasabajo hasta 15 KHz. Para
la señal L-R se debe realizar una demodulación DSB SC para bajarla en frecuencia y aplicar un filtro
pasabajos hasta 15 KHz igualmente, La forma en la que se realiza esta demodulación es con la portadora
piloto que se encuentra en la señal recibida de 19 KHz y para obtener la de 38 KHz el proceso es el mismo
que en el transmisor. La figura 4 es un esquema del demodulador.

Fig. 4. Demodulador multiplex estéreo para FM

2. Desarrollo

Antes de realizar cualquier punto se establecen las variables que se utilizarán a lo largo de la práctica.

clc
clear
fs = 705600; % frecuencia de muestreo
upsamp = 8; % factor de upsampling
Asc = .02; % Factor de subcarrier

2.1. Cargue en el workspace de Matlab los archivos de audio proporcionados


‘ImperialMarch60.wav’ y ‘PinkPanther30.wav’, cárguelos como canales 𝑅 y 𝐿,
respectivamente; para este propósito utilice la función audioread.

Para cargar los audios se utiliza la función audioread de Matlab, esta función devuelve un vector
columna con los valores de amplitud de la señal y la frecuencia de muestreo del audio. Para trabajar se
convierte al vector columna de los audios en un vector en fila con la función reshape.

[canalL,fsL] = audioread('PinkPanther30.wav');
canalL = reshape(canalL,1,[]);
[canalR,fsR] = audioread('ImperialMarch60.wav');
canalR = reshape(canalR,1,[]);

2.2. Del archivo 𝐿 tome 61351 muestras iniciando en la muestra 22350.

Se obtienen 61351 muestras del audio como subvetor, para los canales izquierdo y derecho.

muestrasL = canalL(22350:83700); % se toma solo un rango de muestras


de la señal leida
2.3. Del archivo 𝑅 tome 61351 muestras iniciando en la muestra 5418

El canal derecho también toma un subconjunto de muestras, pero empezando desde otro indice.

muestrasR = canalR(5418:66768); % la cantidad de muestras es de


61351

2.4. Aplique subremuestreo (upsampling) con un factor dado por upsamp. Analice el
funcionamiento de las funciones upsample y interp de Matlab y escoja la más apropiada
(indique las razones de su selección).

Para poder determinar cuál es la mejor opción a utilizar, se realizan pruebas con las dos funciones.

submRup = upsample(muestrasR,upsamp); % El submuestreo con


upsample,coloca a las muestras de relleno en cero
submLup = upsample(muestrasL,upsamp); % Submuestreo con upsamp
del canal izquierdo
submR = interp(muestrasR,upsamp); % Submuestreo con interp
submR_fft = abs(fftshift(fft(submR))); % Espectro se la señal en el
canal derecho (Right)
submL = interp(muestrasL,upsamp);
submL_fft = abs(fftshift(fft(submL))); % Espectro se la señal en el
canal izquierdo (Left)

La figura 5 muestra la señal en tiempo remuestrada con upsamp (azul) y con interp (roja).

Fig. 5. Canal derecho (rigth) remuestreado con las funciones upsample e interp, con un factor de 8.

La función upsample agrega ceros entre las muestras, por eso se puede ver que la señal oscila a mucho
mayor frecuencia que la señal remuestrada con interp, por otro lado la función interp realiza una función
de interpolación entre las muestras, por eso la curva es suave y no tiene esos cambios bruscos a cero que
se tiene con upsample, ahora se observa cual es el efecto en el espectro debido a estas funciones de
remuestreo (Ver figura 6).
Fig. 6. Espectro de las señales remuestradas con upsample (azul) y con interp (roja) con un factor de 8.

La diferencia de usar upsample o interp es más notoria en el espectro de las señales, la señal
remuestrada con upsample contiene muchas replicas, que son generadas por los cambios abruptos cuando
se insertan ceros entre las muestras, aunque estas se pudieran filtrar, existe una disminución en la
amplitud del espectro que se debe a que la densidad espectral se ha esparcido, interp por su parte no
altera mayormente a la señal que se remuestrea y devuelve a la señal muy aproximada a la señal original,
y se dice que aproximadamente ya que las muestras que se intercalaron en el remuestreo no son
justamente las misma que se tiene en la señal original, pero gracias a la interpolación, ese error es menor.

2.5. La longitud de las nuevas señales 𝐿 y 𝑅 (luego del proceso de upsampling) será nuestro número
de muestras n.

El número de muestras de los audios remuestreados son iguales para el canal R y para el L.

n = length(submR); % Longitud de las submuestras del canal R, que


son iguales a las del canal L

2.6. Genere un vector t del tiempo en base al número de muestras y la frecuencia de muestreo

Se genera el vector de tiempo tomando como paso el periodo de muestreo y el tiempo total como la
multiplicación de la cantidad de muestras n y la frecuencia de muestreo, también se genera el vector de
frecuencias para poder realizar la gráfica de los espectros.

t=0:(1/fs):((n-1)/fs); % Vector de tiempo


freq = (-n/2:n/2-1)*(fs/n); % Vector de frecuencias

2.7. Genere una subportadora de 19kHz.

La subportadora consiste en una señal senoidal de 19 KHz, también se obtiene el espectro.


fc = 19e3; % frecuencia de la subportadora de 19Khz
subcarrier = cos(2*pi*fc*t); % Subportadora de 19 KHz
subcarrier_fft = abs(fftshift(fft(subcarrier))); % Espectro de
la subportadora

2.8. Mediante el uso de una función cuadrática y un filtrado en paso alto (use highpass) obtenga
una señal senoidal de 38kHz a partir de la subportadora de 19kHz. Ajuste la amplitud de tal
manera que las amplitudes de las dos senoidales sea la misma, grafique su resultado.

Para el filtrado de la señal se ha creado una función, que toma la magnitud de la fft y le aplica una
máscara de 1, que se encuentran dentro de los índices de frecuencia indicados en la función.

subc2 = subcarrier.^2; % Señal subportadora al cuadrado


subc2_fft = fftshift(fft(subc2)); % Espectro de la subcarrier de
38 KHz
subc2_angulos = angle(subc2_fft); % Ángulos de las componentes
subc2_fft_abs = abs(subc2_fft); % Magnitud de los componentes
fint = 36e3; % Limite inferior para el filtrado
fext = 40e3; % Limite superior
subc2_fft_bpf = bpf(subc2_fft_abs,freq,fint,fext);
subc2_fft_bpf = 2*subc2_fft_bpf; % Amplificación del
espectro para que tenga una amplitud similar a la de 19 KHz
subc2_fft_bpf = subc2_fft_bpf.*(cos(subc2_angulos)
+1i*sin(subc2_angulos));
senoidal38 = ifft(ifftshift(subc2_fft_bpf)); % transformada
inversa de la señal filtrada.

El hecho de utilizar esta forma de filtrado, conlleva varios pasos adicionales, ya que la máscara se debe
aplicar al vector de magnitud de la fft de la señal, pero para realizar la transformada inversa, esta se debe
aplicar a las componentes complejas, por lo que es necesario obtener los ángulos de los valores
complejos antes del filtrado para finalmente, con las magnitudes de la señal filtrada, obtener nuevamente
las componentes complejas y así poder realizar la transformada inversa.

El proceso para obtener la subportadora de 38 KHz es básicamente una modulación, para poder obtener
replicas en 38 KHz a partir de la de 19 KHz. Como es de esperarse, esta nueva portadora se debe filtrar
para obtener nuevamente una señal senoidal y a esta señal filtrada se la debe amplificar, ya que la
densidad espectral de potencia se distribuye en sus nuevas componentes. En la figura 7 aparecen las
subportadoras graficadas en tiempo.

Las marcas del cursor muestran las amplitudes máximas se las dos señales, la subportadora de 19 KHz
tiene una amplitud de 1 y la de 38 KHz tiene una amplitud de 0.5, para poder realizar una demodulación
correcta e implementar el sistema FM multiplex, se ajusta la amplitud de la subportadora de 38 KHz para
que sea igual a la de 19 KHz, esto es, multiplicarla por un factor de 2.
Fig. 7. Subportadoras de 19 KHz (roja) y de 38 KHz (azul). La subportadora de 19 KHz se genera a partir de
la de 19 KHz.

2.9. Usando las señales hasta el momento generadas obtenga la señal φ FM de la ecuación 1

En esta sección se aplica directamente la ecuación descrita, utilizando las señales de los canales L y R
remuestreadas y las Subportadoras de 19 KHz y 18 KHz.

FI_st = ((submL+submR)+(2*(submL-submR).*senoidal38)+(Asc.*subcarrier));
FI_st_fft = fftshift(fft(FI_st)); % Espectro de la señal stereo
FI_st_angulos = angle(FI_st_fft); % Angulos de los coeficientes
complejos fr FI
FI_st_fft_abs = abs(FI_st_fft);

Los ángulos que se obtienen son para poder filtrar la señal y poder volverlas a su forma compleja
rectangular.

2.10. Grafique el espectro de la señal φ ST , explique lo obtenido y compare con la Figura 8.

Fig. 8. Espectro de la señal estéreo.

La figura 8 es similar a la figura 3 descrita en la introducción, representa el espectro de la señal estéreo.


La siguiente gráfica corresponde con la de la señal estéreo de los audios cargados.
Fig. 9. Espectro de la señal estéreo de los audios cargados y remuestreados.

El espectro de la figura 9 sigue una forma similar a la de la figura 8, alrededor de los 0 Hz se encuentra la
señal L+R, es decir, la suma de los canales, en 19 KHz está la componente espectral positiva de la
portadora piloto u subportadora y en la parte exterior en ± 38 KHz está la señal L-R, la subportadora de
38 KHz se encarga de mover el espectro de L-R a esa separación en frecuencia para evitar que se solapen
con el espectro de 19 KHz, ya que se asume que las señales de audio están alrededor de los 15 KHz, por
lo que el ancho de banda de L-R se va a extender desde (38-15)KHz = 23 KHz hasta (38+15)KHz = 53
KHz, es decir, que no se mesclará con la suportadora de 19 KHz, que sirve para realizar una
demodulación asíncrona

2.11. Para la demodulación solo se podrá usar la señal 𝜑𝑆𝑇(𝑡), siga los siguientes pasos:
2.11.1. Mediante filtrado recupere la señal senoidal de 19kHz.

Para recuperar esta señal solo se filtra con un rengo de ± 100 Hz , la calidad de la imagen recuperada
depende del rango escogido, para este rango la señal recuperada no presentaba mucha distorsión. En la
figura 10 se presenta el espectro de la señal filtrada y en tiempo.

El espectro se recupera aplicando el filtro creado como función, este código se adjunta el final del
informe. En la señal en tiempo se puede notar que la señal tiene una amplitud casi constante a lo largo del
tiempo, esas variaciones se deben al hecho de que en la base se tienen componentes pertenecientes a las
señales que estaban presentes en la señal estéreo, pero esta señal es bastante buena para obtener la de 38
KHz y con ella bajar la señal L-R a banda base.
Fig. 10. Espectro de la señal de 19 KHz recuperada (arriba) y señal en tiempo.

2.11.2. Con la señal senoidal de 19kHz y siguiendo un proceso similar al usado en el Tx recupere
la señal senoidal de 38 kHz, la amplitud de esta señal deberá ser ajustada adecuadamente
con el objetivo de recuperar adecuadamente las señales 𝐿 y R.

La señal de 38 KHz y utiliza el mismo proceso, que básicamente consiste en un tipo de modulación, para
llevar a la señal de 19 KHz a los 38 KHz.
subcrec2 = subcrec.^2; % Señal subportadora de 19 KHz al cuadrado
subcrec2_fft = fftshift(fft(subcrec2)); % Componentes espectrales
subcrec2_angulos = angle(subcrec2_fft); % Ángulos de las
componentes de la subcarrier 2 de 38 KHz
subcrec2_fft_abs = abs(subcrec2_fft); % Magnitud del espectro
de la subcarrier recuperada y elevada al cuadrado
% Las frecuencia de corte para la senoidal de 38 KHz son las mismas
que se establecieron en el Transmisor, el vector de frecuencias
también.
subcrec2_fft_bpf_abs = bpf(subcrec2_fft_abs,freq,fint,fext); %
Espectro filtrado de la subcarrier recuperada alrededor de los 38
KHz

Nuevamente se obtienen los ángulos de las componentes complejas, luego se obtienen sus magnitudes, se
filtra y finalmente se obtienen las componentes complejas de la señal ya filtrada. La siguiente figura
muestra su espectro y la señal en tiempo.

Las amplitudes de las componentes espectrales se han reducido, como ya se mencionó en los puntos
anteriores, esto se debe a que la densidad espectral de potencia se distribuye en todas las réplicas que se
generan, pero como se nos interesa las componentes en ± 19 KHz la señal en tiempo tiene una amplitud
menor, pero esto se corrige fácilmente con un amplificador, y este factor de amplificaciones de 2.
Fig. 11. Espectro de la señal de subportadora de 38 KHz (arriba) y en tiempo (abajo).

2.11.3. Haciendo referencia a la Figura 3, recupere las señales 𝐿 + 𝑅 y 𝐿 −R

Recuperar la señal L+R es la más sencilla, ya que simplemente basta con aplicar un filtro pasa bajo con
frecuencia de corte en 15 KHz, ya que aproximadamente esta es la frecuencia máxima audible para el ser
humano, por lo que con todas las frecuencias de L+R que estén dentro de ese rango se obtendrá un audio
de buena calidad.

Para la señal L-R se adicionan un par de pasos más, el primer es multiplicar a la señal de entrada por la
subportadora de 38 KHz que se obtuvo a partir de la señal piloto de 19 KHz, con ello se lleva a la señal a
banda base y de ahí, filtrándola con el mismo filtro pasa bajo a 15 KHz, se tiene la señal L-R.

LRS_fft_abs = lpf(FI_st_fft_abs,freq,15e3); % Recuperación de la


señal L+R con un filtro pasa bajo con fc=15 KHz
LRS_fft = LRS_fft_abs.*(cos(FI_st_angulos)+1i*sin(FI_st_angulos)); %
Pasar magnitud a complejo
LRS = real(ifft(ifftshift(LRS_fft)));
LRR = FI_st.*senoidalrec38; % Se manda a banda base la señal L-R,
que se encuentra centrada en 38 KHz
LRR_fft = fftshift(fft(LRR));
LRR_angulos = angle(LRR_fft); % Angulos de las componentes
espectrales de la señal L-R
LRR_fft_abs = abs(LRR_fft); % Obtiene la magnitud de las
compoentes espectrales de la LRR
LRR_fft_abs = lpf(LRR_fft_abs,freq,15e3); % Se filtra la señal L-R
que se mandó a banda base
%LRR_fft_abs = 1.9*LRR_fft_abs; % Amplificación del
espectro
LRR_fft = LRR_fft_abs.*(cos(LRR_angulos)+1i*sin(LRR_angulos)); %
Obtener las componentes de LRR complejas
LRR = real(ifft(ifftshift(LRR_fft)));
La señales en la gráfica 12, evidencian que la seña L-R tiene una amplitud menor, multiplicando por un
factor de 1.3, se logra obtener una amplitud promedio cercana a la señal L+R.

Fig. 12. Gráficas en tiempo de las señales L+R y L-R.

2.11.4. Obtengas las señales 𝐿 y 𝑅 y escúchelas mediante la función soundsc. Si no se tiene una
buena discriminación entre los dos canales revise el ajuste de amplitudes a 𝐿 –R.

Finalmente, las señales L y R se recuperan fácilmente con la suma y resta de las señales L+R y L-R.

Ls = LRS+LRR; % Se obtiene el canal L con el doble de su amplitud


Rs = LRS-LRR; % Se obtiene el canal R con el doble de su amplitud
sound(Ls,8*fsL);

Esto se demuestra a continuación:

( L+ R ) + ( L−R )=L+ R+ L−R=2 L


( L+ R )− ( L−R )=L+ R−L+ R=2 R
Es decir que se recupera a cada canal con el doble de su amplitud original, una ventaja de la multiplex estéreo
en la época en la que se creó, fue que permitía a los equipos monoaurales funcionar correctamente con esta
señal, ya que simplemente filtraban a la señal L+R con un pasa bajo con frecuencia de corte de 15 KHz y con
ello se podía escuchar ambos canales sin ningún problema.

Con los valores asignados tanto en la ecuación de la señal estéreo con en la compensación de las subportadora
de 38 KHz, los audios se han recuperado con un mínimo de interferencia del otro canal, casi imperceptible.

La razón de porque se multiplica por 8 a la frecuencia de muestreo que se obtuvo en el audioread es debido a
remuestreo que se realizó, aumentando 8 muestras entre las muestras de la señal leída originalmente, es decir,
al aumentar ocho veces la cantidad de muestras obtenidas sin alterar el tiempo, la frecuencia de muestreo
también incrementó ocho veces.
2.12. Responda de manera justificada las siguientes preguntas:
2.12.1. ¿Por qué se usó una frecuencia de muestreo tan alta?

Existen diversas razones para aplicar un sobremuestreo a una señal, 1) permite la realización de filtros
antialiasing analógicos que de otra manera serían difíciles de conseguir con un corte preciso que permita
maximizar el ancho de banda disponible, precisamente aquí, al tener 3 señales mescladas, es necesario
que las frecuencias las pendientes en las frecuencias de corte, sean lo más pronunciadas posibles, para
que las señales no se solapen. 2) Permite tener una mejor resolución de la señal, ya que mejora el
rendimiento de los convertidores analógico a digital, cuando se sobremuestrea por un factor N el rango
dinámico también aumenta por un factor N. 3) Ayuda a reducir el ruido ya que promediar N muestras que
contienen ruido no correlacionado reduce la potencia del ruido en un factor N

2.12.2. ¿Por qué necesitamos aplicar upsampling a las señales de audio?

La señal de audio leída con la función audioread indica que la misma fue leída con una frecuencia de
muestreo de 22050 muestras/segundo, para poder obtener una señal de mejor calidad se puede utilizar
funciones de interpolación que sigan de mejor manera a la curva de audio y con ello, obtener una señal
con la calidad como si se tratara de una muestreada con una tasa mucho mayor a la original.

2.12.3. ¿Cómo cree que se obtuvo el valor del factor de upsampling?

La frecuencia de muestreo establecida fue de 705600 muestras por segundo, mientras que la tasa de
muestreo que indicaba la función audioread fue de 22050 muestras por segundo. El vector de audio tenía
una longitud inicialmente de 61351 muestras y luego del sobre muestreo se obtuvieron 490808 muestras
luego de realizar el sobremuestreo, con esto, al determinar al tener un factor de 8 para el upsampling, la
nueva tasade muestreo es de 705600, que es justamente la que se indica al inicio:

length ( submR )−1 490808−1


f s nueva= = =705600muestras /seg
t (end ) 0.6959
2.12.4. ¿Cuáles serían los problemas que encontraríamos si tratamos de implementar la parte del
modulador FM con la señal estéreo como señal de información?, para esto puede suponer
una frecuencia portadora y un índice de modulación de FM de banda ancha para realizar
los cálculos

Uno de los primero inconvenientes que se puede encontrar es la realización de filtros que tengan una
buena discriminación para poder reconstruir las señales sin que interfieran entre sí.

Se sabe que para una Fm de banda ancha del índice de modulación es mayor a 0.3, por lo general es
mucho mayor a ese valor, por ejemplo para un β=15 , la desviación de frecuencia pico es
∆ f =β∗fm=15∗(53 KHz )=795 KHz , ya que la máxima frecuencia de la señal estéreo es de 53
KHz, esto indica que el ancho de banda es bastante grande debido a que la banda negativa también pasa
al lado positivo, con lo que el ancho de banda total aplicando Carson es:

W =( 53 KHz )∗( 1+15 )=848 KHz


Esto implicaría que las estaciones de radio estén bastantes separadas.

3. Conclusiones
 La técnica de transmisión estéreo permite recuperar dos señales totalmente distintas en una
misma transmisión FM, una ventaja principal de esta transmisión en la época en la que se
implementó, fue que permitía a los equipos monoaurales poder demodular esta señal sin ninguna
distorsión, esto se debe a que la señal mono L+R se podía filtrar directamente luego de la
demodulación tomando las frecuencias menores a 15 KHz, así que se podría escuchar los dos
canales mesclados, mientras que los equipos estéreo podían diferenciar los canales para poder
escucharlos por altavoces separados.
 La transmisión estéreo es una aplicación de la muliplexión en frecuencia de señales, ya que en el
transmisor, se modulan 3 señales que se encuentran en rangos de frecuencia diferentes, la señal
monoaural L+R se encuentra hasta los 15 KHz, la portadora piloto en 19 KHz y la señal L-R
está centrada en los 38 KHz.
 La portadora piloto se ubica en los 19 KHz para que no interfiera con los espectros de las
señales L+R y L-R y que se pueda filtrar fácilmente, con ella poder generar una subportadora de
38 KHz y finalmente con esta última, demodular la señal L-R.
 La ventaja de poder enviar la portadora pilotó está en que se evita la necesidad de tener los
osciladores sincronizados. Conociendo que la subportadora piloto está en 19 KHz, está se puede
recuperar para genera la subportadora de 38 KHz.

4. Referencias

[1] F. G. Stremler. Introducción a los sistemas de comunicación. 3th ed, Massachusetts: Addison-Wesley IberoAmericana, 1990.
[2] S. Haykin. Communication systems. 4th ed. New York: Jhon Wiley & Sons. 2001.

5. Anexos

Practica4.m Coding principal


clc
clear
fs = 705600; % frecuencia de muestreo
upsamp = 8; % factor de upsampling
Asc = .02; % Factor de subcarrier

a = get(gca,'XTickLabel'); % Objetos de las etiquetas


b = get(gca,'YTickLabel');
zl = 12; % Valor del tamaño de las marcas de los ejes

%% 1. Cargue en el workspace de Matlab los archivos de audio


proporcionados ‘ImperialMarch60.wav’ y
%'PinkPanther30.wav’, cárguelos como canales ? y ?, respectivamente; para
este propósito utilice la
%función audioread.
[canalL,fsL] = audioread('PinkPanther30.wav');
canalL = reshape(canalL,1,[]);
[canalR,fsR] = audioread('ImperialMarch60.wav');
canalR = reshape(canalR,1,[]);

%% 2. Del archivo L tome 61351 muestras iniciando en la muestra 22350

muestrasL = canalL(22350:83700); % se toma solo un rango de muestras de


la señal leida

%% 3. Del archivo R tome 61351 muestras iniciando en la muestra 5418


muestrasR = canalR(5418:66768); % la cantidad de muestras es de 61351
%sound(muestrasR,fsR);

%% 4. Aplique subremuestreo (upsampling) con un factor dado por upsamp.


Analice el funcionamiento de las
% funciones upsample y interp de Matlab y escoja la más apropiada
(indique las razones de su selección).

submRup = upsample(muestrasR,upsamp); % El submuestreo con


upsample,coloca a las muestras de relleno en cero
submRup_fft = abs(fftshift(fft(submRup)));
submLup = upsample(muestrasL,upsamp); % Submuestreo con upsamp del
canal izquierdo
submLup_fft = abs(fftshift(fft(submLup)));
submR = interp(muestrasR,upsamp); % Submuestreo con interp
submR_fft = abs(fftshift(fft(submR))); % Espectro se la señal en el
canal derecho (Right)
submL = interp(muestrasL,upsamp);
submL_fft = abs(fftshift(fft(submL))); % Espectro se la señal en el
canal izquierdo (Left)

%% 5. La longitud de las nuevas señales L y R (luego del proceso de


upsampling) será nuestro número de
% muestras n

n = length(submR); % Longitud de las submuestras del canal R, que son


iguales a las del canal L

%% 6. Genere un vector t del tiempo en base al número de muestras y la


frecuencia de muestreo

t=0:(1/fs):((n-1)/fs); % Vector de tiempo


freq = (-n/2:n/2-1)*(fs/n); % Vector de frecuencias

%plot(freq, submRup_fft);
%hold on
%plot(freq, submR_fft,'color','red');
%title('Espectro se las señales remuestradas')
%legend('Remuestreo con upsample','Remuestreo con interp');
%ylabel('Amplitud','FontSize', 15),xlabel('f (Hz)','FontSize', 15)
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%set(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje y
%% 7. Genere una subportadora de 19kHz.

fc = 19e3; % frecuencia de la subportadora de 19Khz


subcarrier = cos(2*pi*fc*t); % Subportadora de 19 KHz
subcarrier_fft = abs(fftshift(fft(subcarrier))); % Espectro de la
subportadora
%plot(freq,subcarrier_fft)
%% 8. Mediante el uso de una función cuadrática y un filtrado en paso
alto (use highpass) obtenga una señal
% senoidal de 38kHz a partir de la subportadora de 19kHz. Ajuste la
amplitud de tal manera que las
% amplitudes de las dos senoidales sea la misma, grafique su resultado
subc2 = subcarrier.^2; % Señal subportadora al cuadrado
subc2_fft = fftshift(fft(subc2)); % Espectro de la subcarrier de 38 KHz
subc2_angulos = angle(subc2_fft); % Ángulos de las componentes
subc2_fft_abs = abs(subc2_fft); % Magnitud de los componentes
fint = 36e3; % Limite inferior para el filtrado
fext = 40e3; % Limite superior
subc2_fft_bpf = bpf(subc2_fft_abs,freq,fint,fext);
subc2_fft_bpf = 2*subc2_fft_bpf; % Amplificación del espectro
para que tenga una amplitud similar a la de 19 KHz
subc2_fft_bpf = subc2_fft_bpf.*(cos(subc2_angulos)
+1i*sin(subc2_angulos));
senoidal38 = ifft(ifftshift(subc2_fft_bpf)); % transformada inversa de
la señal filtrada. Se obitne una senoidal de 38 KHz
%senoidal38 = cos(2*pi*(38e3)*t); % Subportadora de 38 KHz de
prueba

%plot(t,subcarrier,'color','red');
%hold on;
%plot(t,senoidal38);
%legend('subportadora de 19 KHz','subportadora de 38 KHz');
%title('Subportadoras','FontSize',15)
%ylim([-1.2 1.2]);
%ylabel('Amplitud','FontSize', 15),xlabel('t (s)','FontSize', 15)
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%set(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje y
%% 9. Usando las señales hasta el momento generadas obtenga la señal
FI_st(t)
% EL primer término (submL+submR) es la señal combinada en banda base.
% (submL-submR) se modula como DSB a 38 KHz y Asc.*subcarrier es el tono
% piloto en 19 KHz
FI_st = ((submL+submR)+(2*(submL-submR).*senoidal38)+(Asc.*subcarrier));
% Amplitudes de prueba 2.41, el mejor valor es 2
FI_st_fft = fftshift(fft(FI_st)); % Espectro de la señal stereo
FI_st_angulos = angle(FI_st_fft); % Angulos de los coeficientes
complejos fr FI
FI_st_fft_abs = abs(FI_st_fft);

%plot(freq,FI_st_fft_abs);
%ylabel('Amplitud','FontSize', 15),xlabel('f (Hz)','FontSize', 15)
%title('Espectro de la señal estéreo');
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%set(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje y
%% 10. Grafique el espectro de la señal FI_st, explique lo obtenido y
compare con la Figura 2.

%plot(freq,FI_st_fft); % Gráfica del espectro de la señal a transmitir

%% ************************************ DEMODULACIÓN
**********************************************
%
*************************************************************************
************************
% 11. Para la demodulación solo se podrá usar la señal FI_st, siga los
siguientes pasos:
%% 11.1. Mediante filtrado recupere la señal senoidal de 19kHz

subcrec_fft_abs = bpf(FI_st_fft_abs, freq,18900,19100); % Señal


recuperada (espectro) de 19 KHz (Sus valores absolutos)
subcrec_fft_abs = 50*subcrec_fft_abs; % Amplificación del
espectro
subcrec_fft = subcrec_fft_abs.*(cos(FI_st_angulos)
+1i*sin(FI_st_angulos)); % Pasar los valores absolutos a complejos
subcrec = ifft(ifftshift(subcrec_fft)); % Es la subcarrier recuperada
mediante filtrado

%subplot(2,1,1);
%plot(freq,subcrec_fft_abs);
%title('Espectro de la señal de 19 KHz','FontSize',15)
%ylabel('Amplitud','FontSize', 15),xlabel('f (Hz)','FontSize', 15)
%hold on;
%subplot(2,1,2);
%plot(t,subcrec);
%title('Subportadora de 19 KHz ','FontSize',15)
%ylabel('Amplitud','FontSize', 15),xlabel('t (s)','FontSize', 15)
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%et(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las marcas
del eje y

%subcrec = subcarrier; % Subcarrier de prueba en demodulador


%% 11.2. Con la señal senoidal de 19kHz y siguiendo un proceso
similar al usado en el Tx recupere la señal
% senoidal de 38kHz, la amplitud de esta señal deberá ser ajustada
adecuadamente con el objetivo de
% recuperar adecuadamente las señales ? y ?

subcrec2 = subcrec.^2; % Señal subportadora de 19 KHz recuperada al


cuadrado
subcrec2_fft = fftshift(fft(subcrec2)); % Componentes espectrales de
la fft de 38 KHz
subcrec2_angulos = angle(subcrec2_fft); % Ángulos de las componentes
de la subcarrier 2 de 38 KHz
subcrec2_fft_abs = abs(subcrec2_fft); % Magnitud del espectro de la
subcarrier recuperada y elevada al cuadrado
% Las frecuencia de corte para la senoidal de 38 KHz son las mismas que
% se establecieron en el Transmisor, el vector de frecuencias tambien.
subcrec2_fft_bpf_abs = bpf(subcrec2_fft_abs,freq,fint,fext); % Espectro
filtrado de la subcarrier recuperada alrededor de los 38 KHz
subcrec2_fft_bpf_abs = 2*subcrec2_fft_bpf_abs; % Amplifiación del
espectro de la carrier de 38 KHz | x85
subcrec2_fft_bpf = subcrec2_fft_bpf_abs.*(cos(subcrec2_angulos)
+1i*sin(subcrec2_angulos)); % Componentes complejos
senoidalrec38 = real(ifft(ifftshift(subcrec2_fft_bpf))); %
transformada inversa de la señal filtrada. Se obitne una senoidal de 38
KHz

%subplot(2,1,1);
%plot(freq,subcrec2_fft_bpf_abs);
%title('Espectro de la señal de 38 KHz','FontSize',15)
%ylabel('Amplitud','FontSize', 15),xlabel('f (Hz)','FontSize', 15)
%hold on;
%subplot(2,1,2);
%plot(t,senoidalrec38);
%title('Subportadora de 38 KHz ','FontSize',15)
%ylabel('Amplitud','FontSize', 15),xlabel('t (s)','FontSize', 15)
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%set(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje y

%% 11.3 Haciendo referencia a la Figura 3, recupere las señales L+R


y L-R
% La señal en banda base se recupera con un filtro pasabajo hasta
los 15 KHz
LRS_fft_abs = lpf(FI_st_fft_abs,freq,15e3); % Recuperación de la
señal L+R con un filtro pasa bajo con fc=15 KHz
LRS_fft = LRS_fft_abs.*(cos(FI_st_angulos)+1i*sin(FI_st_angulos)); %
Pasar magnitud a complejo
LRS = real(ifft(ifftshift(LRS_fft))); % Esta función está devolviendo
numeros con imaginarios con cero ej. (2+i0), por eso se usa la función
real
%sound(LRS,8*fsR);
%plot(freq,abs(FI_st_fft),'color','red');
%hold on
%plot(freq,abs(LRS_fft))

%LRS = LRS;
% Recuperación de la señal L-R, se demodula como a una DSB
LRR = FI_st.*senoidalrec38; % Se manda a banda base la señal L-R, que
se encuentra centrada en 38 KHz
LRR_fft = fftshift(fft(LRR));
LRR_angulos = angle(LRR_fft); % Angulos de las componentes espectrales
de la señal L-R
LRR_fft_abs = abs(LRR_fft); % Obtiene la magnitud de las compoentes
espectrales de la LRR
LRR_fft_abs = lpf(LRR_fft_abs,freq,15e3); % Se filtra la señal L-R que
se mandó a banda base
%LRR_fft_abs = 1.9*LRR_fft_abs; % Amplificación del espectro
LRR_fft = LRR_fft_abs.*(cos(LRR_angulos)+1i*sin(LRR_angulos)); % Obtener
las componentes de LRR complejas
LRR = real(ifft(ifftshift(LRR_fft)));
%sound(LRR,8*fsL);
%plot(t,LRS);
%hold on;
%plot(t,LRR,'color','red');
%title('Señales L+R y L-R ','FontSize',15)
%legend('Sñela L+R','Señal L-R');
%ylabel('Amplitud','FontSize', 15),xlabel('t (s)','FontSize', 15)
%set(gca,'XTickLabel',a,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje x
%set(gca,'YTickLabel',b,'fontsize',zl) % Cambiar el tamaño de las
marcas del eje y
Ls = LRS+LRR; % Se obtiene el canal L con el doble de su amplitud
Rs = LRS-LRR; % Se obtiene el canal R con el doble de su amplitud
sound(Ls,8*fsL);
lpf.m Función para el filtro pasa bajo
% Filtro pasa banda
% Parametros de entrada: la señal (x), el vector de frecuencias (freq),
la frecuencia de corte inferior
% (finf) y la frecuencia de corte superior.
function [ y ] = lpf( x,freq, fc)
ind_frec = find((freq>=-fc & freq<fc)); % Indices de frecuencia del
pasabanda
lowpf = 0*freq; % Filtro pasabanda
lowpf(ind_frec) = 1; % Filtro de 1 en las frecuencias que deben
pasar
y = lowpf.*x; % Filtrado de la señal, enmascaramiento

end

bpf.m Función para el filtro pasa banda


% Filtro pasa banda
% Parametros de entrada: la señal (x), el vector de frecuencias (freq),
la frecuencia de corte inferior
% (finf) y la frecuencia de corte superior.
function [ y ] = bpf( x,freq, finf, fsup )
ind_frec = find((freq>=-fsup & freq<-finf) | (freq>=finf & freq<fsup));
% Indices de frecuencia del pasabanda
bandpf = 0*freq; % Filtro pasabanda
bandpf(ind_frec) = 1; % Filtro de 1 en las frecuencias que deben
pasar
y = bandpf.*x; % Filtrado de la señal, enmascaramiento

end

También podría gustarte