Limpiar una señal con Matlab

Páginas: 5 (1146 palabras) Publicado: 18 de agosto de 2015
Caso práctico: diseño de un filtro desde cero con Audacity y con Matlab

Caso 1. Filtrado de una señal de audio utilizando Audacity
Audacity es un programa libre y de código abierto que permite grabar y editar
sonidos. En esta asignatura lo utilizaremos en diferentes módulos.
Así, como ejemplo de aplicación abriremos Audacity y elegiremos una canción
que tengamos en formato .MP3, por ejemplo.Para ello, haced clic en Abrir
y buscad la canción que os apetezca editar. Una vez abierta, seleccionad con
el ratón el fragmento que queréis editar. Después, haced clic en Efecto y a FiltroFFT. Especificad el filtro que queréis probar y haced clic en Aplica.

Figura 19. Visualización de Audacity haciendo filtrado

Caso 2. Filtrado de una señal de audio utilizando Matlab
Matlab permite jugar con másparámetros que Audacity.
Para empezar, leeremos el fichero de sonido en formato .wav, que es el formato
de sonido que lee Matlab por defecto.

Diseño y análisis de filtros en procesamiento de audio

[Y,Fs]=wavread(‘file.wav’)

Si queremos comprobar que el sonido se ha codificado correctamente, lo tenemos que escuchar de la manera siguiente:

sound(Y,Fs)

Ahora diseñamos un filtro comoqueramos, utilizando la herramienta FDAtool. En este punto se trata que penséis qué especificaciones queréis. Por poner
un ejemplo, nosotros definiremos el filtro siguiente:

Figura 20. Filtrado con Matlab utilizando la FDAtool

A continuación, hacemos FileGenerate M-File y lo ponemos en la línea de órdenes.

Fs = 44100;

% Sampling Frequency

Fpass = 4000;

% Passband Frequency

Fstop = 6000;

%Stopband Frequency

Apass = 1;

% Passband Ripple (dB)

Astop = 80;

% Stopband Attenuation (dB)

match = 'both'; % Band to match exactly
% Construct an FDESIGN object and call its ELLIP method
h = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'ellip', 'MatchExactly', match);

Lectura de la línea de
código
Y es el sonido codificado de
manera digital, con frecuencia
de muestreoFs.
El fichero file.wav puede ser
cualquiera que tengáis en
vuestro ordenador.

38

Para utilizar este filtro lo que hacemos es:

X=filter(Hd,Y)

Escuchamos la nueva señal filtrada:

sound(X, 44100)

Diseño y análisis de filtros en procesamiento de audio

39

Diseño y análisis de filtros en procesamiento de audio

Anexo

Filtro�de�Butterworth:�butter_ana_ex.m

%% Ejemplo de filtro paso bajo deButterworth analógico
clear all;
fp=20e3;wp= 2*pi*fp;
Ap=0.5;
fs=90e3;ws= 2*pi*fs;
As=50;
% Cálculo de e2
e2 = 10^(0.1*Ap)-1;
% Orden del filtro
n = log(sqrt((10^(0.1*As)-1)/e2))/log(fs/fp);
n = ceil(n);
% Frecuencia de corte
wc = wp/(e2^(1/(2*n)));
% Parámetros para calcular los polos del filtro
k=1:n;
alpha = (2*k-1)*pi/(2*n);
% Determinación de los polos en el prototipo
pk = -sin(alpha)+j*cos(alpha);
[B,A]=zp2tf([],pk,1);
[B1,A1] = lp2lp(B,A,wc);
N=500;
wf=2*pi*100e3;
W=0:wf/N:wf;
H=freqs(B1,A1,W);
subplot(1,2,1); plot(W/(2*pi),20*log10(abs(H)));grid;
ylabel(['|H(w)|']);
xlabel(['Frecuencia (Hz)']);
subplot(1,2,2); plot(W/(2*pi),20*log10(abs(H)));grid;

Dirección web
Podéis consultar la página
de la Escuela de Ingenieros
de la Universidad de Navarra
(TECNUM)

40

ylabel(['|H(w)|']);xlabel(['Frecuencia (Hz)']);
axis([0 1.1*fp -Ap-0.1 0.1]);
print -depsc2 butter_ej
pause;close;
% Retardo de grupo
dW=W(2)-W(1);
phase=unwrap(angle(H));
dphase = -diff(phase)/dW;
plot(W(1:length(W)-1)/(2*pi),dphase);grid;
ylabel(['Retardo de grupo (s)']);
xlabel(['Frecuencia (Hz)']);
print -depsc2 butter_groupdelay_ej
pause;close;

Txebychef:�txeby_ana_ex.m

%% Ejemplo de filtro paso bajo deTxebyxev-I analógico
clear all;
fp=20e3;wp=2*pi*fp;
Ap=0.5;
fs=90e3;ws=2*pi*fs;
As=50;
% Cálculo de e2
e2 = 10^(0.1*Ap)-1;
% Orden del filtro
n = acosh(sqrt((10^(0.1*As)-1)/e2))/acosh(fs/fp);
n = ceil(n);
% Parámetros para calcular los polos y ceros del filtro
theta = (1/n)*asinh(1/sqrt(e2));
k=1:n;
alpha = (2*k-1)*pi/(2*n);
% Determinación de los polos en el prototipo
pk = -sinh(theta)*sin(alpha)...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Señales Matlab
  • Señales En Matlab
  • Señales en matlab
  • Analisis de señales matlab
  • Graficador de señales discretas en MatLab
  • derivadas de señales en Matlab
  • señales básicas en matlab
  • Generación de señales en Matlab

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS