0% encontró este documento útil (0 votos)
65 vistas4 páginas

Procesamiento Digital de Señales

Este documento presenta las pruebas y resultados obtenidos en la práctica de laboratorio de procesamiento digital de señales en la cual se estudian comandos de Matlab, análisis de frecuencia de señales discretas e implementación de filtros digitales FIR e IIR.

Cargado por

Eder Casttro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
65 vistas4 páginas

Procesamiento Digital de Señales

Este documento presenta las pruebas y resultados obtenidos en la práctica de laboratorio de procesamiento digital de señales en la cual se estudian comandos de Matlab, análisis de frecuencia de señales discretas e implementación de filtros digitales FIR e IIR.

Cargado por

Eder Casttro
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Procesamiento Digital de Señales

Practica 5: Filtros Digitales


Eder Flórez Castro, Iván Velasco
Cali – Valle Del Cauca
Institución Universitaria Antonio José Camacho
[email protected], [email protected]
Lo cual para el punto A. da como resultado la siguiente
Abstract- this document presents the tests and the results gráfica:
obtained in the DSP laboratory practice are presented in which
the different commands and forms of programming of the
computer tool called Matlab were studied in a practical way, in
addition to deepening the study of the analysis. frequency of a
signal in discrete time and implement digital FIR and IRR
filters.

Palabras clave- Matlab, señales discretas, Convolucion, filtros.

INTRODUCCIÓN

A continuación, se presenta las pruebas realizadas y los


resultados obtenidos en la práctica de laboratorio de DSP en
el cual se estudiaron de forma práctica los diferentes
comandos y formas de programación de la herramienta de
cómputo llamada Matlab, además de profundizar en el
estudio del análisis frecuencia de una señal en tiempo
discreto e implementar filtros digitales FIR e IRR. El equipo
experimental utilizado para la práctica es un computador el Fig. 1. Grafica punto A.
cual tiene instalado el programa Matlab
Se generó, visualizo y analizo los distintos tipos de señales Los valores de la fig.1 para las condiciones iniciales fueron:
en tiempo discreto que se usan con frecuencia. A0 = 5, A1 = 5, A2 = 2.5, A3 = 10, f1 = 10, f2 = 100, f3 =
1000 y fs = 4000.

PROCEDIMIENTO Y ANÁLISIS DE LOS RESULTADOS


A. Señal de Prueba.

1. Se ingresaron los siguientes datos:

function
[x]=generar(A0,A1,A2,A3,f1,f2,f3,fs)
N=5*floor(fs/f1);
n=(0:N);
T=1/fs;
W1=2*pi*f1; W2=2*pi*f2; W3=2*pi*f3;
x=A0+A1*sin(W1*n*T)+A2*cos(W2*n*T)-
A3*sin(W3*n*T);
plot(n,x)
end

Este programa está diseñado para ajustar el valor de muestras


N a una cantidad equivalente a 5 periodos de la señal con Fig. 2. Grafica punto B.
menor frecuencia.
Los valores de la fig.2 para las condiciones iniciales fueron:
2. Para el procedimiento número 2 se ingresa el código A0 = 10, A1 = 15, A2 = 30, A3 = 15, f1 = 100, f2 = 2000, f3
anterior y en la command window se le da valores a las = 5000 y fs = 20000.
condiciones iniciales (A0,A1,A2,A3,f1,f2,f3,fs).
Fig. 4. Grafica del FFT y la señal original del punto 2.B.
Fig. 3. Grafica del punto C.
En la anterior grafica los valores para las condiciones
Los valores de la fig.3 para las condiciones iniciales fueron: iniciales utilizados de punto 2.1 fueron: A0 = 10, A1 = 15, A2
A0 = 100, A1 = 30, A2 = 30, A3 = 150, f1 = 2500, f2 = = 30, A3 = 15, f1 = 100, f2 = 2000, f3 = 5000 y fs = 20000.
3500, f3 = 5000 y fs = 40000.

3. Se realiza una función visualizar.m para realizar la


transformada rápida de Fourier (FFT) y así hallar los
componentes frecuencia les dé una señal discreta, utilizando
los valores de las condiciones iniciales del punto 2.

function visualizar(x)
four = fft(x);
plot(0:length(x)-1,x);
xlabel(’n’);
ylabel(’x(n)’);

frec = (0:length(x)-1)./length(x);
plot(frec,abs(four));
ylabel(’|fft(x)|’);

Fig. 4. Grafica del FFT y la señal original del punto 2.C.

En la anterior grafica los valores para las condiciones


iniciales utilizados de punto 2.1 fueron: A0 = 100, A1 = 30,
A2 = 30, A3 = 150, f1 = 2500, f2 = 3500, f3 = 5000 y fs =
40000.

B. Filtro FIR.

1. Se escribe un programa llamado ventana.m que permita


calcular la respuesta al impulso finito h(n) de un filtro paso
bajo con frecuencias de corte y de muestreo especificadas por
el usuario. Los parámetros de llamado de la función son los
siguientes: Frecuencia de corte del filtro en Hertz, Frecuencia
de muestreo de la señal en Hertz, Tamaño de la ventana
Fig. 4. Grafica del FFT y la señal original del punto 2.A. (número de muestras)

En la anterior grafica los valores para las condiciones function [h]=ventana(fc,fs,M);


iniciales utilizados de punto 2.1 fueron: A0 = 5, A1 = 5, A2 = wc=2*fc/fs;
2.5, A3 = 10, f1 = 10, f2 = 100, f3 = 1000 y fs = 4000. n=3; %orden del filtro
[b,a]=butter(n,wc); %filtro Butter
hi=impz(b,a,M); -0.0001
w=hamming(M); %ventana Hamming -0.0000
h=hi.*w; 0.0000
2. Para el procedimiento número dos se ingresa el código 0.0000
anterior y en el comman window se le da valores a las -0.0000
condiciones iniciales (fc,fs,M) En los anteriores puntos (A y B) se aprecia el funcionamiento
de un filtro FIR con una variación en una de sus condiciones
Se tiene dos casos distintos los cuales son el caso A y el B iniciales, para el caso B se aumenta la fc lo cual causa que la
frecuencia de corte sea mayor por lo tanto el filtro llegue más
Para el punto A en la comman window se da los siguientes rápido a cero.
valores iniciales fc=2000, fs=10000, M=100.
3. En este punto se escribe una función llamada rif.m que
ventana(2000,10000,100) permite obtener la respuesta de los filtros obtenidos en
numerales anteriores ante cualquier secuencia de entrada x.
ans = Los parámetros de entrada del filtro son la secuencia de
entrada x y la secuencia h que representa la respuesta al
0.0079 impulso finito.
0.0285
0.0383 Se crea un scrip con el siguiente código.
0.0194
-0.0044 function [y] = rif(x,h);
-0.0096 y = conv(x,h);
-0.0025 f1 = (0:length(x)-1)./length(x);
0.0030 Y1 = abs(fft(x));
0.0025 f2 = (0:length(y)-1)./length(y);
-0.0002 Y2 = abs(fft(y));
-0.0012
-0.0005 plot(x);
0.0003 ylabel('x(n)');
0.0003 plot(f1(1:floor(length(x)/2)), Y1(1:floor(length(x)/2)));
0.0000 ylabel('|X(f)|');
-0.0001 plot(y(1:length(x)));
-0.0001 ylabel('y(n)');
0.0000 xlabel('n');
0.0000
0.0000 plot(f2(1:floor(length(y)/2)), Y2(1:floor(length(y)/2)));
-0.0000 ylabel('|Y(f)|');
xlabel('f');
Para el punto B en la comman window se da los siguientes
valores iniciales fc=2500, fs=10000, M=100.

ventana(2500,10000,100) C. Filtro IIR.


ans = 1. Se escribe un programa llamado bilineal.m que permite
diseñar filtros IIR por medio de la transformación bilineal. La
0.0133 función recibe dos parámetros: fc que corresponde a la
0.0405 frecuencia de corte del filtro en Hertz y fs que es la frecuencia
0.0372 de muestreo del mismo.
0.0000
-0.0140 function [b,a] = bilineal(fc,fs)
-0.0000 wc=2*pi*fc; n=3; %orden del filtro
0.0056 [bc,ac] = butter(n,wc,'s');
0.0000 [b,a]=bilinear(bc,ac,fs);
-0.0023
-0.0000 En la primer línea se defines los valores iniciales los cuales
0.0009 son fc y fs para la segunda línea se le da valor a la frecuencia
0.0000 angular (wc) la cual es de 2*pi*fc y el orden del filtro el cual
-0.0004 es de orden 3, para la línea tres se menciona el tipo de filtro
-0.0000 que es en este caso es de tipo Butter y en la línea cuatro se
0.0002 nombra el tipo de transformada por el cual será diseñado el
0.0000 filtro en este caso es por medio de una transformada bilineal.
OBSERVACIONES
2. Para el procedimiento número dos se ingresa el código
anterior y en el command window se le da valores a las Para observar mejor la gráfica de una señal discreta la forma
condiciones iniciales (fc,fs) más práctica es utilizar la función stem() ya que esta traza la
secuencia de datos del eje Y como tallos que se extienden
Se tiene dos casos distintos los cuales son el caso A y el B desde una línea de base a lo largo del eje x, los valores de los
datos se indican mediante círculos que terminan cada tallo,
Para el punto A en la comman window se da los siguientes algo ideal para representar este tipo de señales.
valores iniciales fc=2000, fs=10000.
CONCLUSIONES
>> bilineal(2000,10000)
De acuerdo a la practica realizada se puede concluir que sea
ha conseguido el objetivo principal de este laboratorio el cual
ans =
es conocer los filtros digitales ya que estos juegan un papel de
muy importante en el procesamiento digital de señales.
0.0753 0.2259 0.2259 0.0753
Dado a las herramientas que nos presenta este programa
Para el punto B en la comman window se da los siguientes
podemos analizar y generar señales en tiempo discreto el cual
valores iniciales fc=2500, fs=10000.
su dominio está especificado para ciertos valores finitos del
tiempo.
>> bilineal(2500,10000)
Se alcanzó otro nivel de conocimiento con los filtros ya que
ans =
su estabilidad depende totalmente de la función de
transferencia, por lo que habrá de utilizar procedimientos
0.1130 0.3389 0.3389 0.1130
algebraicos, para analizar su estabilidad. cualquier filtro
recursivo puede ser reemplazado por otro no recursivo con
A comparación con los filtros tipo FIR los de tipo IIR son
infinitos coeficientes, sus valores vendrán dados por la
filtros lo cuales en caso de que tengan a la entrada una señal
secuencia de ponderación del IIR.
impulso este no tendera a llevar su respuesta a cero si no al
contrario su salida tendrá un número infinito de números no
REFERENCIAS
nulos.
[1] Introducción General a Matlab – Generación de Scripts – Señales Básicas
3. Se escribió una función llamada rii.m que permita obtener y Convolución – Interfaz gráfica, Universidad del Valle.
la respuesta de los filtros obtenidos en numerales anteriores
ante cualquier secuencia de entrada x. La función recibe tres
parámetros de entrada. La secuencia x de entrada y los
crecientes del numerador y del denominador en los vectores b
y a obtenidos por la función bilineal.

function [y] = rii(x,b,a);


y = filter(b,a,x);
X = fft(x);
Y = fft(y);

frec = (0:(length(X)/2)-1)./length(X);

plot(x);
ylabel('x(n)');

plot(frec,abs(X(1:length(X)/2)));
ylabel('|X(w)|');

plot(y);
ylabel('y(n)');

plot(frec,abs(Y(1:length(X)/2)));
ylabel('|Y(w)|');

También podría gustarte