Está en la página 1de 22

DANIEL GERMAN GMEZ GMEZ JAIME ANDRS SARMIENTO CORDERO

Taller 1 procesamiento de seales 1. El cdigo utilizado:


% pausar el inicio de la grabacin de audio: uiwait (msgbox('presione ACEPTAR PARA EMPEZAR','Grabar','modal')); % se grabara una seal de audio con Frecuencia de muestreo de 8000 Hz y duracin de 5 segundos: duracion = 5; Fs = 8000; x = wavrecord (duracion * Fs, Fs); % A continuacnion se reproduce la seal grabada: pause (2) wavplay (x, Fs); % se visualiza una representacion de la secuencia en el dominio del tiempo: t = (0:length (x)-1) ./ Fs; plot (t,x); xlabel ('t_{[segundos]}'); ylabel ('x(t)'); grid on; % se visualiza una representacion de la secuencia en el domino de la frecuencia: X = fft (x); F = (0:length(x)-1) ./ length(x); figure; plot (F,abs(X)); xlabel ('f'); ylabel ('|x(f)|'); grid on;

Se realiza la grabacin con un mismo sonido, para observar las variaciones en la seal muestreada correctamente para diferentes tiempos de grabacin y Frecuencia de muestreo. a) Tome nota de los parmetros importantes en el cdigo (Fs, duracion) y explique cul sera el efecto de provocar cambios en dichos valores.

Fs = 8000 Hz Duracin = 5 segundos Si se aumenta la Fs (frecuencia de muestro), en el mismo tiempo de grabacin se observa los picos en la magnitud de la seal muestreada son mayores; por otra parte, si se

disminuye Fs los picos en la magnitud de la seal muestreada son de menor valor. Lo que evidencia la perdida de informacin a menor seal de muestreo. Si se modifica la duracin de la grabacin solo varia este tiempo no tiene incidencia en otros factores de la seal. Ver figuras 1,2 y 3

Figura 1. Muestreo de la seal a Fs = 4000 Hz

Figura 2. Muestreo de la seal a Fs = 8000 Hz

Figura 3. Muestreo de la seal a Fs = 12000 Hz b) Explique adecuadamente las lneas ms importantes del cdigo mostrado. En particular:

Cules son los dos parmetros con los que se invoca a la funcin wavrecord? Los dos parmetros son: El tiempo en segundos de la captura de la seal y la frecuencia de muestreo. X = Wavrecord (t*Fs,Fs) Cules son los dos parmetros con los que se invoca a la funcin wavplay? Los dos parmetros son: El wavrecord y la frecuencia de muestreo. Wacplay (X,Fs) Por qu se usa la funcin plot para graficar una secuencia en tiempo discreto? Cul sera el efecto de usar la funcin stem en su lugar? Se usa la funcin plot en seales en tiempo discreto ya que realiza la interpolacin entre puntos del dominio y realiza el grafico del rango de la funcin tomando como dominio las posiciones de cada valor. Al cambiar por la funcin stem solamente se marcan aquellos puntos que tengan una relacin directa dominio-rango. Por esto, si se desea realizar la grafica con la funcin stem es conveniente utilizar tanto el dominio como el rango de una funcin al hacer una grfica.

Cul es el propsito de la funcin FFT? Qu relacin guarda dicha funcin con la transformada de Fourier? El clculo de la Transformada de Fourier de N puntos de una secuencia X (n) es:

[ ] Donde, Este clculo requiere: -

[ ]

La suma compleja de N multiplicaciones complejas para c/u de las salidas. En total, multiplicaciones complejas y N(N-1) sumas complejas para realizar un DFT de N puntos.

Con la FFT se consigue simplicar los clculos de la transformada de Fourier y reduce el nmero de operaciones aprovechando las propiedades de simetra y periocidad de los trminos W N. Adems la FFT nos entrega valores reales, la Transformada de Fourier nos puede arrojar valores complejos que nos complicara el anlisis de los resultados. Por qu es necesario el uso del valor absoluto (funcin abs en la lnea 33) para la visualizacin del espectro de la seal?

Normalmente con el valor absoluto es como hacer raz cuadrada de parte real + la parte compleja, y eso expresa el valor similar a la energa proporcionada por cada una de las frecuencias. c) Cambie los valores de Fs en el cdigo y discuta los resultados obtenidos a la luz del teorema del muestreo discutido en clase. Segn su criterio, cul puede ser el valor ms adecuado para este parmetro? La discusin de estos resultados se realizo en a) Segn el teorema de Nyquist la frecuencia de muestreo debe ser mayor o igual a 2 veces la frecuencia mxima de la seal. Si tenemos en cuenta que el rango de frecuencias de percepcin del odo humanos es entre 20Hz a 20kHz, la frecuencia mxima ser 20kHz entonces segn el teorema la frecuencia de muestreo ser de mnimo 40kHz. En la biografa se toma como frecuencia de muestreo de 44100 Hz.

d) Pruebe el efecto de reproducir la secuencia de audio con frecuencias de muestreo diferentes a la original (se recomiendan 6000 Hz y 12000 Hz). Reporte y discuta los resultados obtenidos.

Figura 4 seal muestreada a una Fs=6000 Hz

Figura 5 Seal muestreada a una Fs=12000 Hz.

A mayor frecuencia de muestreo, observamos que la magnitud de la seal muestreada presenta picos de magnitud superior a los obtenidos al muestrear la seal con una Fs menor. Esto implica que a mayor frecuencia de muestreo se obtienen ms datos. Ver figuras 4 y 5 e) Cules son los rangos de frecuencia en los cuales se visualiza el espectro de la seal? Qu implicaciones tiene esa visualizacin a la luz de la teora vista en

clase? Modifique el cdigo para que el espectro de la seal aparezca en el rango: 0.5 f 0.5. El rango de frecuencias inicial en el que se visualiza el espectro de la seal es [0 1], segn el rango de frecuencias de la seal discreta debe estar en el rango de: -0.5 f 0.5 para evitar que se produzcan los alias que son copias de la seal que muestras valores repetidos de la seal. Se realiz la modificacin del cdigo de la siguiente manera en la lnea 24 del cdigo, la modificacin es:
X = fft (x); X = [X(round(length(x)/2):length(x));X(1:round(length(x)/2)-1)]; F = -0.5:1/length(x):0.5-1/length(x);

Y los resultados de la modificacin se muestran en la figura 6.

Figura 6. Seal muestreada a una Fs=8000 Hz y con un rango de frecuencias de -0.5 f 0.5. 2. Escriba un programa en Matlab que permita calcular la convolucin en tiempo discreto entre dos seales de longitud finita. El programa no deber hacer uso de la funcin conv, ni de ninguna otra que resuelva el problema directamente. Para probar el programa aplique dos seales de entrada (cuya longitud no supere las 10 muestras) y grafquelas junto con el resultado obtenido usando la funcin stem. Compare la velocidad de ejecucin de su propia funcin con la de la funcin conv, para secuencias de tamao considerable Para la primera parte hemos tomado 2 vectores de un tamao cada uno de 10 muestras, el resultado grafico y el cdigo utilizado se muestra a continuacin:

% Convolucin mediante programacin %Ingresar vectores (2) para realizar convolucin: x = [1 3 5 7 9 11 13 15 17 21]; h = [4 8 12 16 24 28 32 36 40 44]; %Longitud de los vectores: nx = length(x); nh = length(h); %Se realiza la convolucin por medio de una matriz de ceros: R = zeros(nx,nh); S = zeros(nx,nx+nh-1); T = zeros(1,nx+nh-1); %Crear la matriz de convolucin: for j = 1:nx for i = 1:nh R(j,i) = h(i)*x(j); end S(j,j:j-1+nh) = R(j,:); end %Sumar: for k = 1:nx + nh - 1; T(k) = sum(S(:,k)); end %Matriz de resultados: T = [S;T]; %El vector del resultado de la convolucin es la ltima fila de la matriz: y = T(j+1,:); %Graficas: stem(x,'g','linewidth',2); grid on, hold on stem(h,'r','linewidth',2); grid on, hold on stem(y,'k'); grid on, hold on

Figura 7. Grafica de convolucin mediante programacin en matlab. Para la segunda parte, se usaran vectores de mayor longitud (50 muestras) y para la medicin del tiempo de ejecucin se usa las funciones tic para el inicio del proceso y toc para el fin del proceso, en el cdigo se ingresa: Despus de ingreso de los vectores:
%ON tiempo de ejecucin: tic; Antes de las graficas: %Fin ejecucion proceso: Tiempo = toc;

El cdigo de programacin de compara en tiempos con la funcin conv(x,h). Realizando la comparacin de tiempos de respuesta de los dos procesos para los mismos vectores encontramos que el tiempo que toma el proceso de convolucin mediante programacin (9.4723E-04 s) es mucho mayor al que toma la funcin conv (4.4235E-04 s). Estos tiempos eran de esperarse dado que la funcin programada tiene que realizar muchas ms operaciones que la funcin conv de matlab.

3. La siguiente figura muestra la representacin grfica de la respuesta al impulso de un sistema encargado de introducir eco a una seal de audio determinada.

Como puede verse, la respuesta al impulso del generador de eco solo tiene dos muestras no nulas: Una ubicada en n = 0 y la otra en n = D. Por medio de grabaciones de su propia voz y de la convolucin (puede usar la funcin desarrollada en el punto anterior) determine un valor adecuado de D para una secuencia de audio muestreada a 8000 Hz. El cdigo utilizado es el siguiente:
clear all; close all; clc; % Pausar el inicio de la grabacin de audio: uiwait(msgbox('Presione OK para empezar','Grabar','modal')); %Se especifica duracion de la grabacion y la frecuencia de muestreo duracion=5; Fs=8000; %se realiza la grabacion de audio y se toman solamente los valores positivo x=wavrecord(duracion*Fs, Fs);

%Se reproduce la seal grabada: wavplay(x, Fs); %Se genera el vector a convolucionar con la seal de voz l=length(x); h=zeros(1,l); h(1,1)=1; h(1,1500)=0.5; y=conv(x,h); pause(2); wavplay(y,8000);

%Se grafica la seal de audio y el eco subplot( 2,1,1); hold on; grid on; plot(x); plot(y,'g'); xlabel('Tiempo'); ylabel('Amplitud'); subplot(2,1,2); hold on; grid on; plot(x,'g'); plot(y,'k'); xlabel('Tiempo'); ylabel('Amplitud'); title('Zoom ')

Aunque los resultados de la convolucin entre la seal de voz y un vector de mltiples entradas nulas, necesariamente no indican dos muestras diferentes de cero, se puede percibir una diferencia en la magnitud de algunos vectores, como indica en la siguiente figura. Por tanteo de prueba y erro, se decidi tomar un D=1500 en el cual fue posible percibir eco.

Figura 8. Convolucin entre seal de audio y respuesta al impulso

Se obtiene la seal de salida debida al sistema, que produce eco, al aplicar convolucion sobre la respuesta al impulso del sistema dado y la seal de entrada obtenida al grabar audio. 4. La versin IIR del sistema generador de eco del punto anterior puede representarse de la siguiente manera: y(n) = x(n) + 0.5y(n-D) Implemente y pruebe esta versin del sistema, usando como secuencia de entrada x(n) las mismas seales con las que hizo pruebas en el punto anterior y el valor de D encontrado anteriormente. Qu diferencias percibe en el audio de salida generado por cada sistema? De qu manera se podra hacer que el sistema generador de eco FIR se parezca ms a su contraparte recursiva? Pruebe la modificacin propuesta y discuta los resultados. Hallado D, entonces remplazando en la ecuacin anterior tenemos: y(n) = x(n) + 0.5y(n-1500) Al aplicar a la seal de audio el filtro tal como se indica en el cdigo, tendremos una respuesta en frecuencia como se muestra en la figura 9.
%Se realiza la grabacion de audio, se especifica el tiempo de duracin y %la frecuencia de muestreo y se reproduce la seal. uiwait(msgbox('Presione OK para empezar','Grabar','modal')); duracion=5; Fs=44100;

x=wavrecord(duracion*Fs, Fs); wavplay(x, Fs); %Se aplica la FFT a la seal de audio y valor absoluto a FFT X=fft(x); X1=abs(x); %Por medio de la fucnion for, se realiza la recoleccion de las muestras %220500 en total y se reproduce la seal basados en y(w)= x(w)+0.5*y(w-1500) length(x) for k=1 : 1500 y(k)=x(k); end for w= 1501 : 220500 y(w)= x(w)+0.5*y(w-1500); end wavplay(y, Fs); %se grafican los resultados subplot(2,2,1) plot(X1) xlabel('f'); ylabel('|X(f)|'); subplot(2,2,2) plot(x) xlabel('tiempo'); ylabel('x(t)');

Figura 9. Respuesta de la seal ante aplicacin del filtro

Podemos concluir que la versin IIR del sistema reproduce la grabacin con un eco mayor y mejor definido, esto se aprecia en el audio. La explicacin de esto obedece a que la versin IIR es un sistema recursivo y esto ocasiona que la salida presente un eco mayor.

5. Se tiene un sistema FIR dado por la siguiente respuesta al impulso de longitud finita: h(n) = { 1, -0.8, 0.6, -0.4, 0.2, 0, -0.2, 0.4, -0.6, 0.8}

Por medio de grabaciones de su voz y de comparaciones del espectro de la seal antes y despus de la aplicacin del sistema, determine el tipo de filtrado que dicho sistema efecta a la seal de entrada (Paso bajo, paso alto, pasa banda, rechaza banda, etc). Tomamos una seal de audio, la cual pasamos al dominio de la frecuencia teniendo en cuenta la frecuencia de muestreo Fs como 44100 Hz y un tiempo de grabacin de 30 segundos, esto con el fin de recolectar mas informacin y tener una respuesta al impulso ms fiel a la muestra tomada. Para esto usamos el siguiente cdigo:
%Filtro para seal de audio

%Pausar el inicio de la grabacion de audio: uiwait(msgbox('Presionar OK para empezar','Grabar','modal')); %Grabacion de seal de audio de duracion 5 segundos y frecuencia de %muestreo 44100 Hz duracion=30; Fs=44100; x=wavrecord(duracion*Fs,Fs); %Reproduccion de la seal grabada pause(2); wavplay(x,Fs); %visualizacion de la seal en el dominio del tiempo t=(0:length(x)-1)./Fs; subplot(3,2,1); plot(t,x); xlabel('t_{[Segundos]}'); ylabel('x(t)'); grid on; hold on; %visualizacion de la seal en el dominio de la frecuencia: subplot(3,2,2); X = fft (x); F = (0:length(x)-1) ./ length(x)-0.5; plot (F,abs(X)); xlabel('f'); ylabel('|X(f)|'); title('Seal de entrada') grid on; %%%% Convolucion %%%% h=[1 -0.8 0.6 -0.4 0.2 0 -0.2 0.4 -0.6 0.8]; y = conv(X,h); t Y Y F = = = = (0:length(y)-1)./Fs; 2.*abs(fft(y))./length(y); Y(1:round(length(y)/2)); (Fs/2).*(0:length(Y)-1) ./ length(Y)-0.5;

subplot(3,2,3);

plot(F,Y,'linewidth',2); grid on; hold on; xlabel('F'); title('Espectro luego de aplicar h(n)')

En la figura 10. Se muestra la seal de audio obtenida, esta seal se pasa al dominio de la frecuencia utilizando la FFT y en un rango de frecuencias entre -0.5 a 0.5 que se muestra en la figura 11. Finalmente se muestra en la figura 12 el espectro de la seal despus de aplicarle la respuesta al impulso (convolucion), de aqu concluimos que se trata de un filtro pasa alta.

Figura 10. Seal de audio.

Figura 11. Seal muestreada.

Figura 12. Convolucion entre la seal muestreada y la respuesta al impulso.

6. Por medio del clculo de la autocorrelacin, determine el periodo fundamental del fenmeno de las manchas solares, para lo cual puede usar la siguiente tabla 1 que registra la cantidad de dichas manchas entre 1770 y 1869. Tabla 1. Numero de manchas solares segn el ao
AO NUMERO DE MANCHAS AO NUMERO DE MANCHAS AO NUMERO DE MANCHAS

1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803

101 82 66 35 31 7 20 92 154 125 85 68 38 23 10 24 83 132 131 118 90 67 60 47 41 21 16 6 4 7 14 34 45 43

1804 1805 1806 1807 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838

48 42 28 10 8 2 0 1 5 12 14 35 46 41 30 24 16 7 4 2 8 17 36 50 62 67 71 48 28 8 13 57 57 122

1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869

138 103 86 63 37 24 11 15 40 52 98 124 96 66 64 54 39 21 7 4 23 55 94 96 77 59 44 47 30 16 7 37 74

El cdigo utilizado para este punto es:


%Autocorrelacion %Ingreso los vectores

x = [101 41 21 16 17 36 50 66 64 54 y = [1770 1785 1786 1801 1802 1816 1817 1832 1833 1848 1849 1864 1865

82 66 6 4 7 62 67 39 21 1771 1787 1803 1818 1834 1850 1866

35 31 7 20 92 154 125 85 68 14 34 45 43 48 42 28 10 8 2 71 48 28 8 13 57 57 122 138 7 4 23 55 94 96 77 59 44 47 1772 1788 1804 1819 1835 1851 1867 1773 1789 1805 1820 1836 1852 1868 1774 1775 1790 1791 1806 1807 1821 1822 1837 1838 1853 1854 1869]; 1776 1792 1808 1823 1839 1855

38 23 10 24 83 132 131 118 90 67 60 47 0 1 5 12 14 35 46 41 30 24 16 7 4 2 8 103 86 63 37 24 11 15 40 52 98 124 96 30 16 7 37 74]; 1778 1794 1810 1825 1841 1857 1779 1795 1811 1826 1842 1858 1780 1796 1812 1827 1843 1859 1781 1797 1813 1828 1844 1860 1782 1798 1814 1829 1845 1861 1783 1799 1815 1830 1846 1862 1784 1800 1816 1831 1847 1863

1777 1793 1809 1824 1840 1856

%Grafica aos vs numero de manchas solares plot(y,x) xlabel('Aos'); ylabel('Manchas solares'); %funcion de auto correlacion rxx = xcorr(x); %grafica autocorrelacin vs desfase aos A=[-100:100]; plot(A,rxx); grid on, hold on Alabel('Desface aos'); ylabel('autocorrelacion');

Con el cdigo anterior se obtuvo inicialmente como resultado la grafica de manchas solares respecto a aos. Ver figura 13.

Figura 13. Relacin manchas solares vs aos. Posteriormente se calcula la autocorrelacion usando la funcin xcorr(x) y grafica desde 100 aos a 100 aos. Ver figura 14.

Figura 14. Autocorrelacion vs desfase en aos. De las graficas determinamos que el valor mximo donde de autocorrelacion que corresponde al periodo 101 y con un valor mximo obtenido de3.6057E+5. Este primer resultado se realizo el desfase de aos centrndolo en cero, al ampliar la grafica (ver figura 15.) y promediar entre los picos mximos de la autocorrelacion encontramos que el periodo en el que se repiten los mximos solares es de 10 aos. Si tomamos todos los picos mostrados en la figura 14 y sacamos un promedio, obtenemos que el periodo en que se repiten estos picos de manchas solares son cada 11 aos aproximadamente.

Figura 15. Mximos valores de autocorrelacion vs desfase en aos.

7. Escriba un programa que permita reproducir al revs secuencias de audio. Pruebe dicho programa usando algunos palndromos del idioma espaol. Qu diferencias se notan en el espectro de una seal al invertir su orden? El cdigo utilizado se muestra a continuacin:
% grabacion e inversion de seal de audio %pausar el inicio de la grabacion de audio; uiwait(msgbox('Presione ACEPTAR para empezar','grabar','modal')); %Se grabar una seal de audio con Fs=44100 Hz y duracin de 5s: duracion = 5; Fs = 44100; x = wavrecord(duracion * Fs, Fs); %se guarda el vector en un archivo .wav wavwrite(x,Fs,'m1.wav'); %se carga el archivo de voz capturado [y,fs]=wavread('m1.wav'); %A continuacin se reproduce la seal grabada: pause(2); wavplay(x, Fs); % se visualiza una representacion de la secuencia en el dominio del tiempo: t = (0:length (x)-1) ./ Fs; % se visualiza una representacion de la secuencia en el domino de la % frecuencia de la seal sin invertir

X = fft (x); F = (0:length(x)-1) ./ length(x)-0.5; subplot(2,2,3); plot (F,abs(X)); xlabel ('f'); ylabel ('|x(f)|'); grid on; %codigo para invertir y graficar las seales tanto original como invertida % lee y carga el archivo 1.wav en un vector x=wavread('m1.wav'); % Fs para convertir el vector de la seal invertida en un archivo .wav Fs=44100; % linea de codigo para invertir un vector z=x(end:-1:1); % crea el archivo de audio .wav de la seal invertida wavwrite(z,Fs,'inv1.wav'); % se carga el archivo de audio .wav de la seal invertida [l,Fs] = wavread('inv1.wav'); %reproduce el archivo .wav de la seal invertida sound(z,Fs); % muestra dos graficas en una misma figura, donde 1 es la fila, 2 el nmero de columnas y el ultimo numero indica la posicion subplot(2,2,1); plot(y); grid on; title('seal sin invertir'); xlabel('Tiempo') ylabel('Amplitud') subplot(2,2,2); plot(z,'r') grid on title('seal invertida'); xlabel('Tiempo') ylabel('Amplitud') % se visualiza una representacion de la secuencia en el domino de la % frecuencia de la seal invertida Y = fft (z); F = (0:length(z)-1) ./ length(z)-0.5; subplot(2,2,4); plot (F,abs(X),'r'); xlabel ('f'); ylabel ('|x(f)|'); grid on;

El palndromo usado para probar el cdigo fue: Anita lavo su tina y en la figura 16. Encontramos las graficas de las seales de audio sin invertir (superior izquierda azul), seal de audio invertida (superior derecha rojo), espectro de la seal sin invertir (inferior izquierda azul), espectro de la seal invertida (inferior derecha rojo). Encontramos que los espectros de las seales no varan al invertir las seales, esto se debe a que la frecuencia de muestreo se mantiene constante (44100 Hz)

Figura 16. Resultados grficos de grabacin de audio e inversin de este.

8. Investigue acerca de otros efectos comunes en el procesamiento de audio (fade in, fade out, reverberacin, suma, remuestreo). Implemente al menos dos de ellos usando Matlab. Pruebe y comente los resultados obtenidos.

Fade In: Este efecto es mayor mente utilizado cuando se tiene un archivo de audio que en su inicio es demasiado intempestivo o repentino, por lo cual se aplica un efecto de Fade In para incrementar progresivamente la amplificacin de menos a ms. En otras palabras, se hace una transicin en el aumento de la amplitud de la seal en forma progresiva menos abrupta al comienzo de la reproduccin del archivo de audio. Fade Out: Este efecto Fade Out la funcin contraria a la de Fade In, y por lo general se implementa al final de un archivo de audio cuyo final sea repentino, debido a que el archivo de audio est cortado o incompleto al final, para disminuir la sensacin de termino intempestivo, seco y repentino de un archivo de audio, se aplica un Fade Out, cuyo fin es ir disminuyendo el volumen de forma constante hasta llegar a cero. La reverberacin: El fenmeno en que el odo percibe un sonido prolongado como consecuencia en el tiempo de separacin entre un sonido emitido y el reflejado es menor a 0,1 s. La reverberacin se produce siempre y cuando el obstculo se encuentre situado a menos de 17 m; bajo esta condicin, el sonido inicial y el reflejado se solapan, evitando que se entienda el sonido emitido. Remuestreo: consiste en realizar, para un archivo de audio grabado, un duplicado o archivo editable aparte del original. Este archivo editable es manipulado y luego se

fusiona con el archivo original para otorgarle mayor calidad y profundidad al sonido, enriqueciendo as la experiencia sensorial del sonido. A continuacin se implementan los efectos de fade in, fade out, el cdigo utilizado es el siguiente:
%pausar el inicio de la grabacion de audio: uiwait(msgbox('Presione ACEPTAR PARA EMPEZAR','Grabar','modal')); x=wavrecord(t*Fs,Fs); %reproduccion de la seal grabada pause (2) wavplay (x, Fs); %El usuario escoge el tiempo de duracion de Fade in y Fade out uiwait(msgbox('Duracion de fade in')); m = input(''); uiwait(msgbox('Duracion de fade out')); n = input(''); %codigo para fade in %muestras a atenuar ma=m*Fs; %partir vector a=x'; %Muestra sobre la cual se trabajara b=a(1:ma); %muestra que se dejara intacta c=a(ma+1:length(x)); %aumentando d=(1:ma)*(1/ma); %Resultado g=d.*b; w=[g,c]; %Codigo para fade out %muestra atenuar na=length(x)-n*Fs; %la seal que se dejara intacta b=a(1:na); %la seal a atenuar c=a(na+1:length(x)); %el atenuador d=(1:length(x)-na); e=d(end:-1:1)*(1/(length(x)-na)); %multiplicamos el atenuador por el segmento de seal f=e.*c; %unimos la seal y=[b,f]; %se reproduce la seal t=a(ma+1:na); z=[g,t,f]; subplot (2,1,1); plot(x,'k') grid on;hold on xlabel('Tiempo');

ylabel('Amplitud'); subplot (2,1,2) plot(z,'r'); grid on,hold on xlabel('Tiempo'); ylabel('Amplitud'); wavplay(z,Fs)

El tiempo de grabacin para este ejercicio fue de 10 segundos, los tiempos del fade in y el fade out fueron de 3 segundos. Se espera que en el incio y el final de la grabacin se observen suavizaciones una disminucin de la seal. En la figura 17 se observan los efectos mencionados.

Figura 17. Efectos en la seal de audio del fade in (arriba) y fade out(abajo) En las graficas podemos observar como son suavizados tanto el comienzo como el final de las grabaciones, mejorando de esta forma la secuencia de la grabacin y otorgndole un mejor acabado al retirar los abruptos en la grabacin.