Sei sulla pagina 1di 12

Comandos Bsicos Para el Manejo de Seales en Matlab

Efecto Clipping
El Clipping ocurre cuando una seal excede los lmites del diseo, causando distorsin por sus altos componentes de frecuencia.

Onda seno dentro del rango [-1 1]En la anterior grfica se puede apreciar que la seal no excede los lmites de una seal sinusoidal, definida en el rango [-1,1]. En este caso la seal es exactamente una replica de la seal de entrada.

Onda seno con valores fuera del rango [-1 1]En la anterior grfica se puede apreciar cmo la onda sobrepasa los niveles para los cuales est definida una onda senosoidal. En este caso la seal sobrepaso los niveles de la seal de entrada ocurriendo el efecto de Clipping.

Onda seno corregidaEn esta grfica se puede ver cmo la seal se corrige, eliminando los componentes altos de frecuencia, razn por la cual los componentes que estn por encima de 1 y por debajo de -1 se pierden.

Manejo de archivos de sonido


Para capturar una seal por la entrada auxiliar de la tarjeta de sonido del computador, MATLAB cuenta con la funcin wavrecord(t*Fs,Fs,Ch) cuyos parmetros corresponden al tiempo en segundos de captura de la

seal, frecuencia de muestreo (admite 8000, 11025, 22050 y 44100), el tipo de canal (1 para mono y 2 para stereo). Si se desea capturar una seal en stereo con 5 segundos de duracin, con una frecuencia de muestreo de 11.025 podemos emplear las siguients funciones: Fs = 11025; y = wavrecord(5*Fs, Fs, 2); Para guardar una seal capturada en formato wav se puede hacer uso de la funcin wavwrite(y,Fs,NBits,'Nombre.wav') cuyos parmetros corresponden a la seal grabada, la frecuencia de muestreo, el nmero de bits (puede ser 8, 16, 24 o 32) y el nombre del archivo en el cual se grabar el sonido. Hay que tener en cuenta que los valores de amplitud que estn fuera del rango [-1,+1] son clipeados. Si no se especifican los NBits el programa asume por defecto 16 Bits. Si no se determina una Fs, el programa asume por defecto 8000 Hz. Por ejemplo, para guardar el sonido capturado anteriormente se emplear el siguiente comando: wavwrite(y,Fs,16,'sonido_uno.wav') Para escuchar o manipular vectorialmente un sonido

almacenado en formato wav se utilizan dos comandos. wavread('File.wav') sound(Var) Para el ejemplo anterior File es el nombre del archivo que se desea escuchar, los valores de amplitud deben estar en el rango [-1,+1]. La variable Var corresponde al vector que se desea escuchar cuya frecuencia de muestreo por defecto ser de 8192 Hz. Si se utiliza sound(var,Fs) el resultado ser un sonido con una frecuencia de muestreo definida por el usuario. Se asume que los valores estn dentro del rango [-1,1] ya que los valores que estn fuera del rango son clipeados. Si se emplea sound(var,Fs,Bits) sonar con una frecuencia de muestreo definida por el usuario y determinados nmero de Bits por muestra. Por ejemplo, para escuchar la seal guardada anteriormente como sonido_uno, se asigna a una variable s el comando wavread y luego se escucha con el comando sound. s= wavread('sonido_uno.wav'); sound(s,44100) Si se desean conocer los datos de un archivo en

formato wav, como los valores del vector, su frecuencia de muestreo o el nmero de bits NBits por muestra, se emplea la siguientes sintaxis: [y,Fs,NBits]=wavread('file.wav') En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de muestreo y en la variable Nbits se almacena el nmero de bits por muestra del archivo con formato wav. Si se desea saber la dimensin de los canales del archivo en formato wav, se utiliza el siguiente comando: siz=wavread('file.wav','size') En la variable siz se almacena la dimensin del archivo en formato wav. Si se desean leer las primeras N muestras del archivo en formato wav se emplea el siguiente comando: =wavread('file.wav',Num) En donde la variable Num corresponde a la cantidad de muestras que se desean tomar del archivo. Si se desea obtener la informacin adicional contenida en un archivo de formato wav, como el copyright o el ttulo, se emplea el siguiente

comando [y,Fs,NBits,Opts]=wavread('file.wav') En la variable y se almacenan los valores del vector, en la variable Fs se almacena la frecuencia de muestreo, en la variable Nbits se almacena el nmero de bits por muestra y en la variable Opts se almacena el resto de la informacin.

Transformada Rpida de Fourier [FFT]


Si se desea obtener la transformada rpida de Fourier, se utiliza la sentencia x=abs(fft(vector a trabajar)) en donde abs se refiere al valor absoluto o a la magnitud. Por su parte fft(x) es la transformada discreta de Fourier de un vector x. Los archivos violin.wav y flauta.wav se almacenaron anteriormente con el comando wavwrite. Se necesita hacer una grfica espectral de sus seales, adems se desea saber cul fue el tamao de las muestras y si las seales capturadas tienen uno o dos canales (Dimensin Vectorial). v=wavread('violin.wav'); f=wavread('flauta.wav');

sound(v) sound(f) espv=abs(fft(v)); espf=abs(fft(f)); subplot(2,1,1),plot(espv),grid on,zoom,title('Espectro de un violin') subplot(2,1,2),plot(espf),grid on,zoom,title('Espectro de una flauta')

Espectros de las ondas de violn y flautaEn las grficas se pueden observar la cantidad de componentes armnicas para estos dos instrumentos.

Tamao de cada muestra length(v) retorna 42860 length(f) retorna 97064 Dimensin vectorial size(v) retorna 42860X1, lo que indica que es una seal monofnica. size(f) retorna 97064X1, lo que indica que es una seal monofnica

Convolucin
Si se desea obtener la Convolucin entre dos vectores (seales) se utiliza la funcin conv(Vector1, vector2). Los archivos chivo.wav y shamen.wav se almacenaron anteriormente con un editor de ondas. Se necesita hacer una grfica de la convolucin de estas dos seales. chivo=wavread('chivo.wav'); shamen=wavread('shamen.wav'); convolucion=conv(chivo,shamen); subplot(3,1,1),plot(chivo),title('chivo.wav'),grid on, zoom

on subplot(3,1,2),plot(shamen),title('shamen.wav'),grid on, zoom on subplot(3,1,3),plot(convolucion),title('convolucion.wav'), grid on, zoom on

Espectros de las ondas chivo, shamen y su convolucin Se deja al estudiante la grabacin del resultado de la convolucin en un archivo de sonido. Puede descargar el archivo de muestra. Otro Ejemplo:

Los archivos voice.wav y take.wav se almacenaron anteriormente con un editor de ondas. Se necesita hacer una grfica de la convolucin de estas dos seales. voice=wavread('voice.wav'); take=wavread('take.wav'); convolucion=conv(voice,take); subplot(3,1,1),plot(voice),title('Voice.wav'),grid on, zoom on subplot(3,1,2),plot(take),title('Take.wav'),grid on, zoom on subplot(3,1,3),plot(Convolucion),title('convolucion.wav') ,grid on, zoom on

Espectros de las ondas voice, take y su convolucin Se deja al estudiante la grabacin del resultado de la

Potrebbero piacerti anche