Documente Academic
Documente Profesional
Documente Cultură
Introduccin
II. Problema
De una fraccin de una cancin, los dos canales estero deben estar
desfasados en el tiempo. La tarea ser restaurar el archivo original. Se debe
imprimir los dos diferentes espectros, uno para cada canal. La longitud de
los datos debe ser 1024 muestras, se debe utilizar el archivo corregido de
modo que los espectros sean del mismo intervalo de tiempo en la meloda.
Comente los resultados.
Informacin til
El archivo es de extensin .wav
La tasa de muestreo es 44100Hz
El desfase en el tiempo puede ser de 10Kmuestras
Comandos tiles en MATLAB
Wavread
: Lee archivos .wav
Wavwrite
: Escribe archivos .wav
Wavplay
: Reproduce archivos .wav
III. Mtodo de Solucin
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 cdigo 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 cdigo se tiene
y3 =718480x2 (estreo)
fs = 44100Hz
Luego se separa los canales con el siguiente cdigo
Y1=x(:,1);
Y2=x(:,2);
solo canal 1
solo canal 2
xlim([0 td])
xlabel('Tiempo(seg)')
ylabel('amplitud(v)')
Donde:
t = tiempo
fs = frecuencia de muestreo
Entonces tenemos:
Para el canal 1
Para el canal 2
Apndice A
Cdigo 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 seales desfasadas en el tiempo
%==========================================================
muestras=length(y3);
%cantidad de muestras tomadas
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('Seal Canal 1')
xlim([0 td])
xlabel('Tiempo(seg)')
ylabel('amplitud(v)')
subplot(2,1,2),plot(t,y2),grid on,title('Seal 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('Seal Canal 1 Corregido')
xlim([0 Ctd])
xlabel('Tiempo(seg)')
ylabel('amplitud(v)')
subplot(2,1,2),plot(Ct,Co2),grid on,title('Seal Canal 2 Corregido')
xlim([0 Ctd])
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)')