examen dsp

8
  I. Método de Solución Para poder procesar y reconstruir el archivo es necesario primero cargar el archivo en MATLAB, para lo cual se escribe los siguientes comandos: [y3 fs]=wavread( 'Desfase'); Este código lo nos da a conocer los valores del archivo Desfase.wav, como son los valores del vector almacenada en y3, y su frecuencia de muestreo fs. Del anterior código se tiene y3 =718480x2 (estéreo) fs = 44100Hz Luego se separa los canales con el siguiente código Y1=x(:,1); solo canal 1 Y2=x(:,2); solo canal 2 Después se procede a graficar los dos canales como sigue muestras=length(y3); %cantidad de muestras tomadas  td=muestras*1/fs; %tiempo de duración  t=1/fs:1/fs:td; %vector de tiempos para la gráfica  figure(1) subplot(2,1,1),plot(t,y1),grid on,title('Señal Canal 1' ) xlim([0 td]) xlabel('Tiempo(seg)' ) ylabel('amplitud(v)' ) subplot(2,1,2),plot(t,y2),grid on,title('Señal Canal 2' ) xlim([0 td]) xlabel('Tiempo(seg)' ) ylabel('amplitud(v)' )

Upload: steven-soto

Post on 20-Jul-2015

41 views

Category:

Documents


0 download

TRANSCRIPT

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 1/8

 

I.  Método de Solución

Para poder procesar y reconstruir el archivo es necesario primero cargar el

archivo en MATLAB, para lo cual se escribe los siguientes comandos:

[y3 fs]=wavread('Desfase');

Este código lo nos da a conocer los valores del archivo Desfase.wav, comoson los valores del vector almacenada en y3, y su frecuencia de muestreo fs.

Del anterior código se tiene y3 =718480x2 (estéreo)

fs = 44100Hz

Luego se separa los canales con el siguiente código

Y1=x(:,1); solo canal 1

Y2=x(:,2); solo canal 2

Después se procede a graficar los dos canales como sigue

muestras=length(y3); %cantidad de muestras tomadas 

td=muestras*1/fs; %tiempo de duración 

t=1/fs:1/fs:td; %vector de tiempos para la gráfica 

figure(1)

subplot(2,1,1),plot(t,y1),grid on,title('Señal Canal 1')

xlim([0 td])

xlabel('Tiempo(seg)')ylabel('amplitud(v)')

subplot(2,1,2),plot(t,y2),grid on,title('Señal Canal 2')

xlim([0 td])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 2/8

Figura 1: Desfase de los canales 1 y

2

 Figura 2: Espectro de frecuencias Canales 1 y 2 en desfase 

De la Figura 1, se observa que tiene un tiempo de duración de 16.2921segundos, además el camal 2 se retrasa un periodo de tiempo.

Si observamos mas de cerca, y ampliamos la imagen, se tiene que: Respecto

al canal 1 el tiempo en que permanece en 0 (cero) es de 0.22 segundos

después antes de finalizar su reproducción. Y en el canal 2 se observa que

permanece en cero 0.25 segundos al inicio de la reproducción, tal como se

muestra en la figura 3.

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 3/8

 Figura 3: Tiempo de desfase de los canales 1 y 2

Para corregir el desfase de los canales 1 y 2, procederemos a eliminar una

parte de la señal, más concretamente el periodo de tiempo en el quepermanecen en cero, es decir la parte final del canal 1 y el inicio del canal 2.

Para tal proceso es necesario saber cuántas muestras necesitamos quitar a

ambos canales, para que queden en el mismo intervalo de tiempo.

Para ambos canales se tiene la siguiente formula:

Donde: t = tiempo

fs = frecuencia de muestreoEntonces tenemos:

Para el canal 1 Para el canal 2

Podremos escoger el #muestras entre 9702 y 11025, e ir probando, para el

ejercicio escogeremos el #muestras igual a 10000 por estar entre los dos

rangos.

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 4/8

Para los vectores del canal 1, tendremos que eliminar las ultimas 10000

muestras y para el canal 2 las primeras 10000 muestras, mediante el

siguiente código en Matlab.

K=10000

[y3 fs]=wavread('Desfase');b1=y3(1:length(y3)-k,1);

b2=y3(k+1:length(y3),2);

C=[b1 b2];

wavwrite(C,fs,16,'Corregido')

La señal en estéreo se guardara en la variable C, además en el archivo

Corregido.wav

II.  Resultados

Para poder analizar los resultados obtenidos cargamos en el archivo

Corregido.wav, al Matlab, luego graficamos como sigue:

[Co,fs]=wavread('Corregido');

Co1=Co(:,1);

Co2=Co(:,2);

Cmuestras=length(Co); %cantidad de muestras tomadas 

Ctd=Cmuestras*1/fs; %tiempo de duracion 

Ct=1/fs:1/fs:Ctd; %vector de tiempos para lafrafica 

figure(2)

subplot(2,1,1),plot(Ct,Co1),grid on,title('Señal Canal 1 -

Corregido')

xlim([0 Ctd])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

subplot(2,1,2),plot(Ct,Co2),grid on,title('Señal Canal 2 -

Corregido')

xlim([0 Ctd])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

De la figura 4, se observa que ya no existe desfase entre ambos canales,

además el tiempo de reproducción de la señal se reduce de 16.2921

segundos, del archivo Desfase, a 16.0653 segundos.

El número de muestras también reduce, de 718480x2 en el archivo desfase, a

708480x2 en el archivo Corregido,

Esta reducción es obvio, debido a que se eliminaron 10000 muestras enambos canales, equivalentes a casi 0.2267 segundos.

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 5/8

 

Figura 4: Señal de canal 1 y 2 corregida 

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 6/8

Figura 5: Espectro de frecuencias Canales 1 y 2 corregidos 

III. Conclusiones

Al final observamos una mejoría notable, nulificamos el desfase de amboscanales, logramos balancear el sonido y así obtuvimos una mejoría en la

señal de salida, esto lo pudimos comprobar de forma empírica al escuchar

la grabación y en forma más formal al ver las gráficas de las señales,

notamos una disminución en el número de muestras y por ende el tiempo

de reproducción se redujo en igual intervalo en ambos canales obteniendo

una señal más clara y limpia.

Matlab, resulto ser una herramienta interesante, ya que nos permite

interactuar de distintas maneras, gracias a sus gráficas, matrices y vectores

resultantes se pudo resolver el problema, de forma sencilla, sin la necesidad

de diseñar algún tipo de filtro, solo con operaciones entre matrices y

vectores.

Matlab nos permite graficar en intervalos de tiempo exactos, para poder

conocer el número de muestras a procesar, además que la transformada

rápida de fourier permite analizar, las señales muestreadas, en el espectro

de frecuencias.Apéndice A

Código Matlab:

clear

clf

clc

%leendo el archivo original 

[x,fs]=wavread('Original');

%separamos los canales 

x1=x(:,1); %canal1 x2=x(:,2); %canal2 

%========================================================= 

%Creamos el desface entre ambos canales 

%========================================================= 

y1=[x1;zeros(10000,1)];

y2=[zeros(10000,1);x2];

y3=[y1 y2];

%wavplay(y3,fs) 

%se guarda el archivo con los dos canales 

wavwrite(y3,fs,16,'Desfase')

%========================================================== 

%grafica de las señales desfasadas en el tiempo %========================================================== 

muestras=length(y3); %cantidad de muestras tomadas 

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 7/8

td=muestras*1/fs; %tiempo de duracion 

t=1/fs:1/fs:td; %vector de tiempos para la frafica 

figure(1)

subplot(2,1,1),plot(t,y1),grid on,title('Señal Canal 1')

xlim([0 td])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')subplot(2,1,2),plot(t,y2),grid on,title('Señal Canal 2')

xlim([0 td])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

%analizando el espectro de frecuencias 

N=16384;

X=fft(y1,N); %transformada rapida de Fourier canal 1 

Z=fft(y2,N);

Xmodulo=abs(X); %vector modulo de los valores de FFT 

Zmodulo=abs(Z);

f=((fs)*(1:N))/N; %vectro de frecuencias para graficar

espectro 

figure(2)

subplot(2,1,1),plot(f,Xmodulo),grid on,title('Espectro Canal 1')

xlabel('frecuencia(Hz)')

ylabel('Amplitud(mv)')

subplot(2,1,2),plot(f,Zmodulo),grid on,title('Espectro Canal 2')

xlabel('frecuencia(Hz)')

ylabel('Amplitud(mv)')

%========================================================= 

%correccion del archivo 

%========================================================= 

K=10000; %#muestras a eliminar 

[y3 fs]=wavread('Desfase');

b1=y3(1:length(y3)-K,1);

b2=y3(K+1:length(y3),2);

C=[b1 b2];

%wavplay(C,fs) 

wavwrite(C,fs,16,'Corregido') %se guarda archivo corregido 

%=========================================================== 

%analizando graficas del archivo corregido 

%=========================================================== 

[Co,fs]=wavread('Corregido');Co1=Co(:,1);

Co2=Co(:,2);

Cmuestras=length(Co); %cantidad de muestras tomadas 

Ctd=Cmuestras*1/fs; %tiempo de duracion 

Ct=1/fs:1/fs:Ctd; %vector de tiempos para la frafica 

figure(3)

subplot(2,1,1),plot(Ct,Co1),grid on,title('Señal Canal 1 -

Corregido')

xlim([0 Ctd])

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

subplot(2,1,2),plot(Ct,Co2),grid on,title('Señal Canal 2 -Corregido')

xlim([0 Ctd])

5/17/2018 Examen DSP - slidepdf.com

http://slidepdf.com/reader/full/examen-dsp 8/8

xlabel('Tiempo(seg)')

ylabel('amplitud(v)')

%analizando el espectro de frecuencias 

N=16384;

CX=fft(Co1,N); %transformada rapida de Fourier canal 1 

CZ=fft(Co2,N);CXmodulo=abs(CX); %vector modulo de los valores de FFT 

CZmodulo=abs(CZ);

Cf=((fs)*(1:N))/N; %vectro de frecuencias para graficar

espectro 

figure(4)

subplot(2,1,1),plot(Cf,CXmodulo),grid on,title('Espectro Canal

1-Corregido')

xlabel('frecuencia(Hz)')

ylabel('Amplitud(mv)')

subplot(2,1,2),plot(Cf,CZmodulo),grid on,title('Espectro Canal

2-Corregido')

xlabel('frecuencia(Hz)')

ylabel('Amplitud(mv)')