Anda di halaman 1dari 10

Proyectofinalparte2 ParaestaparteveremoslatransformadadeFourier(discreta)medianteMatLab,conel comandoFFT. Comovamosatrabajarconfrecuencias,podremosahoraanalizarlossistemasparafiltros. Estapartedelproyectoconstadedossecciones(Tericayprctica) Selespidecontestarestaspreguntas. 1. QuesFFTenmatlabycmofuncionadeformaprctica? Practica1:Realiceunprogramaenmatlabdeunsenoaunafrecuenciade300hz,1000hzy 5000hz,graficarentiempo,aplicarelFFTygraficar. 2. QueesunfiltroButterworthycomoseutilizaenmatlab(butter)? Practica2:Realiceunprogramaenmatlabparagraficarelfiltro,multipliqueporunsenoy grafiquelasealdesalida;elfiltrodebeserpasabajas,pasaaltas,pasamedias. 3. Porqulavozesunasealaleatoria?(grabatresvecestuvozdiciendoalgunavocal, duranteuntiempo,Ej.aaaaaaaaychecaparacadavezquegrabastelasgraficasen tiempoyenfrecuenciayrespondesisononoigualeslasgraficasyespectros.

os.) Practica3.grabe,reproduzcaygrafiqueentiempoyenfrecuencia,tupropiavoz;siguiendoel programadematlabdado. 4. Escuchelassealessenoidalesdelapractica1. 5. Sumeunadelassealessenoidalesdelpunto1,conlassealesdelpunto3(tuvoz), unaauna.(3sumas) 6. Apliquelostresfiltrosdepunto2alpunto5unaauna.Conelpunto5.(9 combinaciones) 7. Presenteconclusionesdequehizoyparaquesehizo. 8. Problema1:SupongaunlocutorgrabandoconunruidoGIS (frec.Aguda=suponga15000hz),debemoslimpiarlaseal. 9. Problema2:Supongaquesegrabunacancin(puedegrabarunamsicaque contengaplatillos(agudos),tambores(grave)),congis.Limpieseal. 10. Problema3:SupongaLocutorgrabadoconruidoblanco(apareceentodoelespectro defrecuencias).Limpielomejorposiblelaseal 11. Problema4:Supongacancinconruidoblanco.Limpielomejorposiblelaseal. 12. Enviaramailprofesora_elizabeth@yahoo.com.mx,hastaellunes18demayo.

LaboratoriosdesealesysistemasEFCH %Lab.1.Desplejandosenoidalycosenoidaleneldominiodeltiempo
clear all clc A=4; f=1; %frecuencia fundamental hz w0=2*pi*f; t=0:.001:1; fase=pi/6; senoidal=A*sin(w0*t+fase); figure(1) plot(t,senoidal) cosenoidal= A*cos(w0*t+fase); figure(2) plot(t,cosenoidal)

%Lab.2Desplegandounasealsenoidaleneldominiodeltiempoydelafrecuencia.
clear all clc A=4; f=100; %hz T=1/f; %Periodo de seal Tm=3*T; %Duracin de muestra w0=2*pi*f; N=50; %Num muestras tao=Tm/N; %intervalo muestreo t=0:tao:Tm; fs=1/tao; %frecuencia muestreo df=fs/N; fref=-fs/2:df:fs/2; fase=pi/6; senoidal=A*sin(w0*t+fase); figure(1) plot(t,senoidal) figure(2) simple=fft(senoidal) %No da como debera stem(fref,simple) figure(3) tfsin=abs(fftshift(fft(senoidal/length(senoidal))));% desplazamos stem(fref,tfsin) figure(4) %para frecuencias positivas stem(fref,2*tfsin) %multiplico por 2 y obtengo lo que debe aparecer

axis([0,1000,0,4])

%debeaparecerunaespigagrandedemagnitudA=4;exactamentealafrecuenciapedida f=100hzahorallamadafrecuenciafundamental,ylodemssonarmnicosofrecuencias mltiplosconmagnitudpequea.

%lab3 Sumando dos seales clear all clc A=4; f1=100; %hz f2=300; T1=1/f1; %Periodo de seal T2=1/f2; Tm=3*T2;%Duracin de muestra de la frec mas grande w01=2*pi*f1; w02=2*pi*f2; N=256; %Num muestras, potencia de dos grande tao=Tm/N; %intervalo muestreo t=0:tao:Tm; fs=1/tao; %frecuencia muestreo df=fs/N; fref=-fs/2:df:fs/2; fase=pi/16; senoidal1=A*sin(w01*t+fase); senoidal2=A*sin(w02*t+fase); senoidal=senoidal1+senoidal2;%finalmente las sumo. %plot(senoidal) figure(1) plot(t,senoidal1) hold on plot(t,senoidal2,'r') figure(3) tfsin=abs(fftshift(fft(senoidal)/length(senoidal)));% desplazamos stem(fref,tfsin) figure(4) %para frecuencias positivas stem(fref,2*tfsin) %multiplico por 2 axis([0,1000,0,2.2*max(tfsin)])%controlando ejes x y y

%lab4Escuchandounasenoidal

clear all clc A=2; f=1000; %frecuencia fundamental hz %Datos de entrada fs=8000; %Dato de entrada N=24000; %Dato de entrada ts=1/fs; T=N*ts; %Duracin de la seal stopTime=T*(1-1/N); t=0:ts:stopTime; w0=2*pi*f; fase=pi/6; senoidal=A*sin(w0*t+fase); figure(1) plot(t,senoidal) axis([0,0.003,-1.2*A,1.2*A]) wavplay ( senoidal,fs)

Frecuencias de las notas musicales La: 55_110_220_440 / Mi: 165_330_660 / Do: 275_550 Sol: 385_770 / Si: 495 / Re: 605 / Fa: 715

%Lab5. Comentarios. De manera general este programa graba voz o algn ruido por micrfono, despus se escucha la voz en una bocina, despus se le suma un ruido(sinoidal), despus se filtra ese ruido con el butter, y se escuchara la voz sin ruido. Pasos para grabar, almacenar y escuchar una voz en matlab. 1) Grabar voz signal = wavrecord (samples,fs,1,double); 2) escuchar lo grabado wavplay ( signal,fs) 3) grabar a un archivo [fid,message] = fopen (voz.dat,'wt); fprintf(fid,%f\n,signal); fclose(fid); 4) cargar el archivo grabado

load voz.dat %Crea la variable vozQ12 signal=voz; clear voz; 5) observar el oscilograma del espectro plot(signal); %Lab. 5. Programa completo que graba una voz en matlab, y la mezcla con un tono, luego %con un filtro le quita el ruido y queda la voz limpia. %Este programa servir como base para que el alumno lo modifique y realice su %proyecto final. tiempoReg = 5; %-Periodo de la grabacin fs = 44100; %-Frecuencia de muestreo NO MODIFICAR farm = 200; %-Frecuencia fundamental samples = fs*tiempoReg; %-Num de muestras display(****MENU DE OPCIONES DE SEAL****); display(.'); display( a) Muestreo de voz); display( b) Recuperar una muestra de voz ya grabada); display(.'); opcion=input(Elija una opcin ,s); %debes oprimir tecla s if (opcion==a'||opcion==A') display(.'); display(Se muestrear a 44100Hz por 5 segundos); input(Presiona cualquier tecla para empezar a grabar); signal = wavrecord (samples,fs,1,double); display(.'); input(Presiona cualquier tecla para reproducir lo grabado); wavplay ( signal,fs) %Para escuchar lo grabado display(.'); display(El registro de voz quedar en un archivo de disco: voz.dat); [fid,message] = fopen (voz.dat,'wt); fprintf(fid,%f\n,signal); fclose(fid); elseif (opcion==b'||opcion==B') %debers oprimir b o B display(.'); display(Se tomar una frase ya grabada en disco) load voz.dat %Crea la variable vozQ12 signal=voz; clear voz; opcion=input(Desea escuchar el archivo? ,s); if (opcion==s||opcion==S') wavplay ( signal,fs) %Para escuchar lo grabado end end %******************************************************** % seal: oscilograma y espectro % % variables

% signal : contiene oscilograma % signalw : contiene espectro % frecDomain : contiene dominio frecuencia %******************************************************** display(.'); display(********************************************************); display( seal: oscilograma y espectro); display(********************************************************); display(.'); display(Presione una tecla para observar el oscilograma y el espectro); input(de la seal de voz); figure(1); plot(signal); title(Oscilograma de la seal de voz); ylabel(Amplitud); signalw=fft(signal,samples); %Clculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(2);plot(frecDomain(400:44100),abs(signalw(400:44100)));%exhibicindel espectro title(Espectro de la seal de voz); display(.'); display(********************************************************); display( seal + ruido: oscilograma y espectro); display(********************************************************); display(.'); display(Presione una tecla para observar el oscilograma y el espectro); input(de la seal + ruido); t=(0:1/fs:tiempoReg); t=t(1:samples); noisySignal = signal + 0.01*sin(2*pi*farm*t); figure(3);plot(noisySignal(1:samples)); title(Oscilograma de la seal + ruido); ylabel(Amplitud); noisySignalw=fft(noisySignal,samples); %Clculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(4);plot(frecDomain(400:44100),abs(noisySignalw(400:44100))); %exhibicin del espectro title(Espectro de la seal + ruido); ylabel(Amplitud); xlabel(Frecuencia en Hz); opcion=input(Desea escuchar el archivo? ,s); if (opcion==s|| opcion==S') wavplay ( noisySignal,fs) %Para escuchar lo grabado end %******************************************************** % filtrado( seal + ruido): oscilograma y espectro %******************************************************** display(.'); display(********************************************************); display( filtrado( seal + ruido): oscilograma y espectro); display(********************************************************);

display(.'); display(Presione una tecla para observar el oscilograma y el espectro); input(de la seal + ruido); %%%%%%%%%%%%%%%%%%%%%%Filtro supresor de banda orden=3; [b,a] = butter(orden,[(farm-30)*2/fs,(farm+30)*2/fs],stop); filteredSignal=filter(b,a,noisySignal); figure(5);plot(filteredSignal(1:samples)); title(Osilograma de la seal + ruido fitlrada); ylabel(Amplitud); filteredSignalw=fft(filteredSignal,samples); %Clculo de la DFT frecDomain=fs*(0:samples-1)/samples; %Dominio de la frecuencia en Hz figure(6);plot(frecDomain(400:44100),abs(filteredSignalw(400:44100))); %exhibicin del espectro title(Espectro de la filtro seal + ruido); ylabel(Amplitud); xlabel(Frecuencia en Hz); opcion=input(Desea escuhcar el archivo? ,s); if (opcion==s||opcion==S') wavplay ( filteredSignal,fs) %Para escuchar lo grabado end %******************************************************** display(.'); display(Presione una tecla para observar la respuesta); input(en frecuencia del filtro); [H,W]=freqz(b,a,256); %256 muestras W=W*fs/(2*pi); figure(7);plot(W(1:128),abs(H(1:128))); %para producir ruido blanco es con randn(); o wgn. % http://www.it.uniovi.es/old/material/telematica/ftd/Practica2.pdf

clear all clc %filtro pasaaltas [b,a]=butter(9,0.7,'high') %[b,a]=butter(n,Wn,'Tipo') figure(1) Freqz(b,a,128,1000) %similar a bode. Freqz es lineal. Bode logaritmico %freqz(num, den,w) se puede sust en los prog. %anteriores

%filtro pasabajas de 5 orden que corte en 300hz [b,a]=butter(5,300/500,'low'); %Se establece los parmetros del filtro figure(2) Freqz(b,a,128,1000); %Grfica de la frecuencia en decibeles y defazamiento de ngulo.

%respuesta al impulso de un filtro pasabandas de 100 a 200hz de 5orden. n=5;Wn=[100 200]/500; %parmetros del filtro [b,a]=butter(n,Wn); %comando para un filtro butterworth [y,t]=impz(b,a,101); %cambio de dominio figure(3) stem(t,y) %otro filtro pasobajos [n,Wn]=buttord(2*pi*1000,2*pi*2000,1,30,'s') [nu,de]=butter(n,Wn,'s') [z,p,k]=buttap(n) H=tf(nu,de) figure(4) bodemag(H)

Ejemplosdevaloresbutterparamoverlafrecuenciadecorte.Elvaloresentre0y1encada extremo,alcentro.5masaladerecha0.7,omsalaizquierda.3,porejemplo. Estemtodoesparaevitarutilizarlafrecuenciademuestreoquevernenlasprximas materiasysabrnutilizar.


%INFORMACION SACADA DE PDF TUTORIALCONTROLTOOLBOX %ADICIONALMENTE PARA ENCONTRAR LAS RAICES EN CAP3 DE EBOOK MATLAB Y SIST t = [0:0.2:20]';%no comentar wn = 1; % no comentar num = [wn^2];

%SISTEMA ESTABLE. d = 2; %descomentar parte e den = [1,2*d*wn,wn^2]; %fin de descomentar parte e %SISTEMA OSCILATORIO % d = 0; %descomentar parte o % den = [1,2*d*wn,wn^2]; %descomentar parte i %SISTEMA INESTABLE % d = -0.1; %descomentar parte i % den = [1,2*d*wn,wn^2]; %descomentar parte i

ye = step (num,den,t); figure (1) plot (t,ye); title ('Respuesta a un escalon unitario'); xlabel ('tiempo(seg)'); grid; figure(2) impulse (num,den,t); ramp = t; y = lsim (num,den,ramp,t); figure(3) plot (t,y,t,ramp); title ('Respuesta a una rampa'); xlabel ('tiempo(seg)'); noise = rand (size(t)); y = lsim (num,den,noise,t); figure(4) plot (t,y,t,noise); title ('Respuesta a un ruido aleatorio'); xlabel ('tiempo(seg)'); figure(5) pzmap(num,den) figure(6) bode(num,den) figure(7) freqz(num, den, 128, 1000)

Anda mungkin juga menyukai