Sunteți pe pagina 1din 12

21/10/2016

.::FILTRADODEAUDIOENMATLAB::.

MATPIC.COM

INICIO |MATLAB |VHDLFPGA |PYTHON |PICS |LINKSdeINTERS |TUTORIALES |AULAS |CONTACTO

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:

Seguimiento de color con


MATLAB

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

S-ar putea să vă placă și