Documente Academic
Documente Profesional
Documente Cultură
.::FILTRADODEAUDIOENMATLAB::.
MATPIC.COM
MATLABFILTRADODEAUDIOENMATLAB
ManejaconUber
Stupropiojefe,establecetuhorarioymanejacuandoquierasIrauber.com
FILTRADODEAUDIOENMATLAB
Presentaciones
beamer
Sistema
vehicular
de
Unfiltrodigitalesunsistemaque,dependiendo
delasvariacionesdelassealesdeentradaenel
tiempoyamplitud,serealizaunprocesamiento
matemticosobredichasealgeneralmente
medianteelusodelaTransformadarpidade
Fourierobtenindoseenlasalidaelresultado
delprocesamientomatemticoolasealde
salida.
VHDL
conteo
Sistema de calificacin
automtica de exmenes
deopcinmltiple
Chat va comunicacin rs
232
Seguimiento de color con
envodedatosvars232
Medicindedistanciascon
una cmara web y un
punterolser
Seguir rostro usando una
webcamenMATLAB
Reconocimientodegnero
porvozusandoMATLAB
MATLAB reconoce forma y
color
Ecualizador de Audio con
MATLABSIMULINK
Losfiltrosdigitalestienencomoentradauna
sealanalgicaodigitalyensusalidatienenotrasealanalgicaodigital,pudiendo
habercambiadoenamplitud,frecuenciaofasedependiendodelascaractersticasdel
filtrodigital.
Elfiltradodigitalespartedelprocesadodesealdigital.Seledaladenominacinde
digitalmsporsufuncionamientointernoqueporsudependenciadeltipodeseala
filtrar,aspodramosllamarfiltrodigitaltantoaunfiltroquerealizaelprocesadode
sealesdigitalescomoaotroquelohagadesealesanalgicas.
Comunmenteseusaparaatenuaroamplificaralgunasfrecuencias,porejemplose
puedeimplementarunsistemaparacontrolarlostonosgravesyagudosdelaudiodel
estreodelauto.
Lagranventajadelosfiltrosdigitalessobrelosanalgicosesquepresentanunagran
estabilidaddefuncionamientoeneltiempo.
Elfiltradodigitalconsisteenlarealizacininternadeunprocesadodedatosde
entrada.
Engeneralelprocesodefiltradoconsisteenelmuestreodigitaldelasealdeentrada,
elprocesamientoconsiderandoelvaloractualdeentradayconsiderandolasentradas
anteriores.Elltimopasoeslareconstruccindelasealdesalida.
Sistema
de
seguridad
SPYCAMconMATLAB
Engenerallamecnicadelprocesamientoes:
1.Tomarlasmuestrasactualesyalgunasmuestrasanteriores(quepreviamentehaban
sidoalmacenadas)paramultiplicadasporunoscoeficientesdefinidos.
Seguimientodeobjetocon
MATLAB
Reconocimientodeformas
conMATLAB
Simulinkmodulacionesy
demodulacionesdigitales
GUI para procesamiento
deimgenes
2.Tambinsepodratomarvaloresdelasalidaeninstantespasadosymultiplicarlos
porotroscoeficientes.
3.Finalmentetodoslosresultadosdetodasestasmultiplicacionessonsumados,dando
unasalidaparaelinstanteactual.
Elprocesamientointernoylaentradadelfiltroserndigitales,porloquepuedeser
necesariounaconversinanalgicadigitalodigitalanalgicaparausodefiltros
http://www.matpic.com/esp/matlab/filtros_audio.html
1/12
21/10/2016
Adquisicin
ECG
.::FILTRADODEAUDIOENMATLAB::.
de
seales
Restauracin de imgenes
degradadasporruido
digitalesconsealesanalgicas.
Untemamuyimportanteesconsiderarlaslimitacionesdelfiltrodeentradadebidoa
TeoremademuestreodeNyquistShannonqueenpocaspalabrassiquieroprocesar
hastaunafrecuenciade10KHz,debomuestrearaporlomenos20KHz.
Losfiltrosdigitalesseusanfrecuentementeparatratamientodigitaldelaimagenopara
tratamientodelsonidodigital.[1]
Pulsaelbotndescargarparabajarlosprogramas:
Advertencia:losscriptsreproducenelaudio.MantenerbajoelvolumendelPC.
%%ProcesamientodeunasealdeaudiousandoMATLAB
%%Crearsealdeaudio
%Frecuenciafundamental
f0=1e3%1KHz
%Amplitud
a=4%V=4
%Frecuenciademuestreo
fs=44.1e3%Frecuenciadeunasealdeaudio
%Tiempodeduracinensegundos
T=1.5
L=round(T*fs)%Nmerodemuestras
%Frecuencianormalizada
fn=f0/fs
y=a*sin(2*pi*fn*(0:L1))+0.5*a*sin(2*pi*2*fn*(0:L1))
%Graficarlasealoriginal
subplot(411)
plot((0:L1)/fs,y)
title('SEALORIGINAL')%Ttulo
xlabel('Tiempo(s)')%EtiquetadelejeX
ylabel('Amplitud(V)')%EtiquetadelejeY
xlim([010/1000])%Lmitedelaseal
%%Grabaryreproducirlasealdeaudio
%wavwrite(y,fs,'audio')
%wavplay(y,fs)
%%FFTdelaseal
subplot(412)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y,fs)title('ESPECTRODELASEALORIGINAL')
xlim([02500])
%%Filtradodelaseal
%Frecuencianormalizada
fNorm=1500/(fs/2)
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
[b,a]=butter(10,fNorm,'low')
%Filtradodelaseal
y_Low=filtfilt(b,a,y)
%Graficacindelasealeneltiempo
subplot(413)
plot((0:L1)/fs,y_Low)
title('SEALFILTRADA')
http://www.matpic.com/esp/matlab/filtros_audio.html
2/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
title('SEALFILTRADA')
xlabel('Tiempo(s)')
ylabel('Amplitud(V)')
xlim([010/1000])
%Graficacindelasealenfrecuencia
subplot(414)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y_Low,fs)title('ESPECTRODELASEALFILTRADA')
xlim([02500])
%%Grficasdelfiltro
%Respuestaenfrecuenciadelfiltro
[H,w]=freqz(b,a,512,1)
figure(2)
%TrazadodelarespuestaenMagnitud
subplot(221)
plot(w,20*log10(abs(H)))
gridon
title('Filtropasaaltos,Respuestaenmagnitud')
xlabel('frecuencia')
ylabel('H(f)db')
xlim([00.4])
%Respuestaenfase
subplot(222)
plot(w,angle(H))
gridon
title('Filtropasaaltos,Respuestaenfase')
xlabel('frecuencia')
ylabel('ngulodeHrad')
xlim([00.4])
%Respuestaalimpulso
subplot(223)
[y_eje,t]=impz(b,a,60)
stem(t,y_eje)
title('Filtropasaaltos,Respuestaalimpulso')
%Ploteodelospolosyceros
z=roots(b)%Ceros
p=roots(a)%Polos
subplot(224)
zplane(z,p)
title('Polosyceros')
legend('Ceros','Polos')
%%Reproduccindeaudiodeentradaysalida
pause(2)
disp('Audiodeentrada')
wavplay(0.5*y,fs)
disp('Audiodesalida(sealfiltrada)')
wavplay(0.5*y_Low,fs)
http://www.matpic.com/esp/matlab/filtros_audio.html
3/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
%%ProcesamientodeunasealdeaudiousandoMATLAB
%%Seleccindeltipodefiltrado
%1>Pasabajo
%2>Pasaalto
%3>Pasabanda
tipo=3
%%Crearsealdeaudio
%Frecuenciafundamental
f0=1e3%1KHz
%Amplitud
a=2%V=4
%Frecuenciademuestreo
fs=44.1e3%FrecuenciadeunasealdeaudioCD
%Tiempodeduracinensegundos
T=2
%Vectordetiempo
t=linspace(0,T,T*fs)
%Creacindelaseal
%Primerseal(tono1)
s1=a*sin(2*pi*f0*t)
%Segundaseal(tono2)
s2=0.75*a*sin(2*pi*(1.5*f0)*t)
%Terceraseal(tono3)
s3=0.5*a*sin(2*pi*(2*f0)*t)
%Sealcompuesta(sumadedostonos)
y=s1+s2+s3
%Graficarlasealoriginal
subplot(411)
plot(t,y)
title('SEALORIGINAL')%Ttulo
xlabel('Tiempo(s)')%EtiquetadelejeX
http://www.matpic.com/esp/matlab/filtros_audio.html
4/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
ylabel('Amplitud(V)')%EtiquetadelejeY
xlim([020/1000])%Lmitedelaseal
%%Grabaryreproducirlasealdeaudio
%wavwrite(0.1*y,fs,'audio')
%wavplay(0.1*y,fs)
%%FFTdelaseal
subplot(412)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y,fs)title('ESPECTRODELASEALORIGINAL')
xlim([02500])
%%Filtradodelaseal
switchtipo
case1
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
%Estefiltradodejasololasealde1000Hz
%Frecuencianormalizada
titutlo='FILTROPASABAJAS'
fNorm=1200/(fs/2)
[b,a]=butter(10,fNorm,'low')
case2
%
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
%Estefiltradodejasololasealde2000Hz
%Frecuencianormalizada
titutlo='FILTROPASAALTAS'
fNorm=1900/(fs/2)
[b,a]=butter(10,fNorm,'high')
otherwise
%
%Clculodeloscoeficientesdelfiltro(filtropasabanda)
%Estefiltradodejasololasealde1500Hz
%Frecuenciasnormalizadas
titutlo='FILTROPASABANDA'
fNorm_1=1000/(fs/2)%1250
fNorm_2=2000/(fs/2)%1700
[b_alta,a_alta]=butter(10,fNorm_1,'high')
[b,a]=butter(10,fNorm_2,'low')
y_alta=filtfilt(b_alta,a_alta,y)
y=y_alta
%Wp=[14901510]/(fs/2)Ws=[14101560]/(fs/2)
%Rp=3Rs=40
%[n,Wn]=buttord(Wp,Ws,Rp,Rs)
%[b,a]=butter(n,Wn)
%y_Low=filtfilt(b,a,y)
%
end
%Filtradodelaseal
y_Low=filtfilt(b,a,y)
%Graficacindelasealeneltiempo
subplot(413)
plot(t,y_Low)
title('SEALFILTRADA')
xlabel('Tiempo(s)')
http://www.matpic.com/esp/matlab/filtros_audio.html
5/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
ylabel('Amplitud(V)')
xlim([020/1000])
%Graficacindelasealenfrecuencia
subplot(414)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y_Low,fs)title('ESPECTRODELASEALFILTRADA')
xlim([02500])
%%Grficasdelfiltro
%Respuestaenfrecuenciadelfiltro
[H,w]=freqz(b,a,512,fs)
figure(2)
%TrazadodelarespuestaenMagnitud
subplot(221)
plot(w,20*log10(abs(H)))
gridon
title([titutlo,'Respuestaenmagnitud'])
xlabel('Frecuencia(Hz)')
ylabel('H(f)db')
%xlim([00.4])
%Respuestaenfase
subplot(222)
plot(w,angle(H))
gridon
title([titutlo,'Respuestaenfase'])
xlabel('Frecuencia(Hz)')
ylabel('ngulodeHrad')
%xlim([00.4])
%Respuestaalimpulso
subplot(223)
[y_eje,tt]=impz(b,a,60)
stem(tt,y_eje)
title([titutlo,'Respuestaalimpulso'])
%Ploteodelospolosyceros
z=roots(b)%Ceros
p=roots(a)%Polos
subplot(224)
zplane(z,p)
title('Polosyceros')
legend('Ceros','Polos')
%%Reproduccindeaudiodeentradaysalida
pause(2)
disp('Audiodeentrada')
%Semultiplicapor0.1paraatenuarlasalidadeltonoporlabocina
wavplay(0.1*y,fs)
disp('Audiodesalida(sealfiltrada)')
%Semultiplicapor0.1paraatenuarlasalidadeltonoporlabocina
wavplay(0.1*y_Low,fs)
http://www.matpic.com/esp/matlab/filtros_audio.html
6/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
%%ProcesamientodeunasealdeaudiousandoMATLAB
%%Seleccindeltipodefiltrado
%1>Pasabajo
%2>Pasaalto
%3>Pasabanda
tipo=1
%%Crearsealdeaudio
%Frecuenciafundamental
f0=8e3%8KHz
%Amplitud
a=3%V=4
%Frecuenciademuestreo
fs=44.1e3%FrecuenciadeunasealdeaudioCD
%Tiempodeduracinensegundos
T=1.5
%Vectordetiempo
t=linspace(0,T,T*fs)
%Creacindelaseal
%Primerseal(tono1)
s1=a*sin(2*pi*f0*t)
%Segundaseal(tono2)
s2=0.75*a*sin(2*pi*(1.5*f0)*t)
%Terceraseal(tono3)
s3=0.5*a*sin(2*pi*(2*f0)*t)
%Sealcompuesta(sumadedostonos)
y=s1+s2+s3
%Graficarlasealoriginal
subplot(411)
plot(t,y)
title('SEALORIGINAL')%Ttulo
xlabel('Tiempo(s)')%EtiquetadelejeX
http://www.matpic.com/esp/matlab/filtros_audio.html
7/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
ylabel('Amplitud(V)')%EtiquetadelejeY
xlim([020/f0])%Lmitedelaseal
%%Grabaryreproducirlasealdeaudio
%wavwrite(0.1*y,fs,'audio')
%wavplay(0.1*y,fs)
%%FFTdelaseal
subplot(412)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y,fs)title('ESPECTRODELASEALORIGINAL')
xlim([0f0*3])
%%Filtradodelaseal
switchtipo
case1
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
%Estefiltradodejasololasealde1000Hz
%Frecuencianormalizada
titutlo='FILTROPASABAJAS'
fNorm=8.5e3/(fs/2)
[b,a]=butter(10,fNorm,'low')
case2
%
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
%Estefiltradodejasololasealde2000Hz
%Frecuencianormalizada
titutlo='FILTROPASAALTAS'
fNorm=15e3/(fs/2)
[b,a]=butter(10,fNorm,'high')
otherwise
%
%Clculodeloscoeficientesdelfiltro(filtropasabanda)
%Estefiltradodejasololasealde1500Hz
%Frecuenciasnormalizadas
titutlo='FILTROPASABANDA'
Wp=[11.5e312.5e3]/(fs/2)Ws=[11e313e3]/(fs/2)
Rp=3Rs=40
[n,Wn]=buttord(Wp,Ws,Rp,Rs)
[b,a]=butter(n,Wn)
%
end
%Filtradodelaseal
y_Low=filtfilt(b,a,y)
%Graficacindelasealeneltiempo
subplot(413)
plot(t,y_Low)
title('SEALFILTRADA')
xlabel('Tiempo(s)')
ylabel('Amplitud(V)')
xlim([020/f0])
%Graficacindelasealenfrecuencia
subplot(414)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y_Low,fs)title('ESPECTRODELASEALFILTRADA')
xlim([03*f0])
http://www.matpic.com/esp/matlab/filtros_audio.html
8/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
%%Grficasdelfiltro
%Respuestaenfrecuenciadelfiltro
[H,w]=freqz(b,a,512,fs)
figure(2)
%TrazadodelarespuestaenMagnitud
subplot(221)
plot(w,20*log10(abs(H)))
gridon
title([titutlo,'Respuestaenmagnitud'])
xlabel('Frecuencia(Hz)')
ylabel('H(f)db')
%xlim([00.4])
%Respuestaenfase
subplot(222)
plot(w,angle(H))
gridon
title([titutlo,'Respuestaenfase'])
xlabel('Frecuencia(Hz)')
ylabel('ngulodeHrad')
%xlim([00.4])
%Respuestaalimpulso
subplot(223)
[y_eje,tt]=impz(b,a,60)
stem(tt,y_eje)
title([titutlo,'Respuestaalimpulso'])
%Ploteodelospolosyceros
z=roots(b)%Ceros
p=roots(a)%Polos
subplot(224)
zplane(z,p)
title('Polosyceros')
legend('Ceros','Polos')
%%Reproduccindeaudiodeentradaysalida
pause(2)
disp('Audiodeentrada')
%Semultiplicapor0.1paraatenuarlasalidadeltonoporlabocina
wavplay(0.1*y,fs)
disp('Audiodesalida(sealfiltrada)')
%Semultiplicapor0.1paraatenuarlasalidadeltonoporlabocina
wavplay(0.1*y_Low,fs)
%%ProcesamientodeunasealdeaudiousandoMATLAB
%%Seleccindeltipodefiltrado
%1>Pasabajo
%2>Pasaalto
%3>Pasabanda
tipo=3
%%Leerlasealdeaudio
[y,fs]=wavread('Yabu_mono')
%y>muestrasdelaseal
http://www.matpic.com/esp/matlab/filtros_audio.html
9/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
%fs>frecuenciademuestreo
%Graficarlasealoriginal
subplot(411)
T=length(y)/fs
t=linspace(0,T,T*fs)
plot(t,y)
title('SEALORIGINAL')%Ttulo
xlabel('Tiempo(s)')%EtiquetadelejeX
ylabel('Amplitud(V)')%EtiquetadelejeY
%xlim([020/])%Lmitedelaseal
%%Reproducirlasealdeaudio
%wavplay(0.1*y,fs)
%%FFTdelaseal
subplot(412)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y,fs)title('ESPECTRODELASEALORIGINAL')
xlim([04e3])
%%Filtradodelaseal
switchtipo
case1
%Clculodeloscoeficientesdelfiltro(filtropasabajas)
%Estefiltradodejasololasealpordebajode500Hz
titulo='FILTROPASABAJAS'
%Frecuencianormalizada
fNorm=1000/(fs/2)
[b,a]=butter(10,fNorm,'low')
case2
%
%Clculodeloscoeficientesdelfiltro(filtropasaaltas)
%Estefiltradodejasololasealporencimade500Hz
titulo='FILTROPASAALTAS'
%Frecuencianormalizada
fNorm=1000/(fs/2)
[b,a]=butter(10,fNorm,'high')
otherwise
%
%Clculodeloscoeficientesdelfiltro(filtropasabanda)
%Estefiltradodejasololasealde2KHza3KHz
%Frecuenciasnormalizadas
titulo='FILTROPASABANDA'
Wp=[2e33e3]/(fs/2)Ws=[1.5e33.5e3]/(fs/2)
Rp=3Rs=40%Rizadodelabandadepasoydeparada(s)
[n,Wn]=buttord(Wp,Ws,Rp,Rs)%Ordendelfiltroyfrecuenciadecorteptima
[b,a]=butter(n,Wn)%Coeficientesdelfiltro
%
end
%Filtradodelaseal
y_Low=filtfilt(b,a,y)
%Graficacindelasealeneltiempo
subplot(413)
plot(t,y_Low)
title('SEALFILTRADA')
xlabel('Tiempo(s)')
http://www.matpic.com/esp/matlab/filtros_audio.html
10/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
ylabel('Amplitud(V)')
%xlim([020/f0])
%Graficacindelasealenfrecuencia
subplot(414)
%LlamadoalafuncinquecalculalaFFT
fft_signal(y_Low,fs)title('ESPECTRODELASEALFILTRADA')
xlim([04e3])
%%Grficasdelfiltro
%Respuestaenfrecuenciadelfiltro
[H,w]=freqz(b,a,512,fs)
figure(2)
%TrazadodelarespuestaenMagnitud
subplot(221)
plot(w,20*log10(abs(H)))
gridon
title([titulo,'Respuestaenmagnitud'])
xlabel('Frecuencia(Hz)')
ylabel('H(f)db')
xlim([05e3])
%Respuestaenfase
subplot(222)
plot(w,angle(H))
gridon
title([titulo,'Respuestaenfase'])
xlabel('Frecuencia(Hz)')
ylabel('ngulodeHrad')
xlim([05e3])
%Respuestaalimpulso
subplot(223)
[y_eje,tt]=impz(b,a,60)
stem(tt,y_eje)
title([titulo,'Respuestaalimpulso'])
xlabel('n')
ylabel('h[n]')
%Ploteodelospolosyceros
z=roots(b)%Ceros
p=roots(a)%Polos
subplot(224)
zplane(z,p)
title('Polosyceros')
legend('Ceros','Polos')
%%Reproduccindeaudiodeentradaysalida
pause(2)
disp('Audiodeentrada')
%Semultiplicapor0.2paraatenuarlasalidadeltonoporlabocina
%wavplay(0.2*y,fs)
disp('Audiodesalida(sealfiltrada)')
%Semultiplicapor0.2paraatenuarlasalidadeltonoporlabocina
%wavplay(0.2*y_Low,fs)
http://www.matpic.com/esp/matlab/filtros_audio.html
11/12
21/10/2016
.::FILTRADODEAUDIOENMATLAB::.
Referencias
[1].hp://es.wikipedia.org/wiki/Filtro_digital
2015MATPIC
Prohibidacualquiercopiaparcialototaldelcontenidodeestaweb
http://www.matpic.com/esp/matlab/filtros_audio.html
12/12