Está en la página 1de 26

Juvenal Tordocillo Puchuc

CURSO: Modelaje Ambiental


Profesor: Juvenal Tordocillo Puchuc

PROCESAMIENTO DE DATOS CON MATLAB

EJERCICIO 1:

GENERACION DE SEÑALES MUESTREADAS

1. Como paso inicial se ha generado algunos datos para la función


f (t )  sin(2 * pi * f0 * t ) ; f 0  1Hz
TABLA 1
nº t f (t ) n º t f (t ) n º t f (t ) nº t f (t )
1 0 0 9 0,24 0,998 17 0,56 -0,368 25 0,88 -0,685
2 0,02 0,125 10 0,26 0,998 18 0,6 -0,588 26 0,92 -0,482
3 0,06 0,368 11 0,3 0,951 19 0,64 -0,77 27 0,96 -0,249
4 0,1 0,588 12 0,32 0,905 20 0,68 -0,905 28 1 0
5 0,12 0,685 13 0,38 0,685 21 0,72 -0,982 29 1,04 0,249
6 0,14 0,77 14 0,4 0,588 22 0,76 -0,998 30 1,08 0,482
7 0,18 0,905 15 0,44 0,368 23 0,8 -0,951 31
8 0,2 0,951 16 0,5 0 24 0,84 -0,844 32

El gráfico correspondiente a la tabla anterior es:

GRAFICO 1
EJERCICIO 2:
2. La función anterior con MATLAB, nos muestra lo siguiente.

>> t=0:0.05:1; >> plot(t,f);


>> f=sin(2*pi*t);

-1-
Juvenal Tordocillo Puchuc

>> plot(t,f);
>> title('Funcion senoidal')
>> xlabel('Tiempo (Segundos)')
>> ylabel('Amplitud (Voltios)')
>>grid

GRAFICO 2
GRAFICO 3

>> t=0:0.05:1;
>> f=sin(2*pi*t);

¿Qué ocurrió en el primer comando?


En el primer comando se ordenó iterar el tiempo de 0 a 1 con un incremento de 0.05 y
luego se digitó la función y se ordenó graficar con el comando plot. Como se puede
apreciar se obtiene el mismo grafico obtenido de forma manual.

¿Qué ocurrió en el segundo ejemplo?


Luego de agregar los otros comandos se obtuvo el gráfico 3, básicamente esos
comandos son para definir los títulos, y los nombres en las coordenadas
correspondientes y el grid nos muestra las grillas de tal forma podemos hacer una
comparación adecuada con lo realizado de forma manual.

¿Qué ocurrió en el tercer ejemplo?

>> plot(f,t) : Al graficar en el orden de los parámetros el eje x del grafico se traslada
en forma vertical.
>> plot(f) : Los valores en el eje “y” no sufren variación pero en el eje “x” MATLAB
asigna valores arbitrarios con un incremento de 5.
>> plot(t) : En este caso es similar al anterior pero como el incremento de “t” es
proporcional entonces el grafico es lineal con el incremento en el eje “x” de 5.
>> plot(t,f,'*') : Esta opción nos muestra el grafico con puntos en forma discreta y en
este caso esta tomando puntos en 0.1 , 0.2, sucesivamente y puntos intermedios entre
esos números y el símbolo es el asterisco.
>> plot(t,f,'b*') : Es similar que el anterior .
>> plot(t,f,'.') : En este caso el símbolo son puntos.
>> plot(t,f,'c.') : Cambia el color de los puntos en color cyan.
>> plot(t,f,'-') : Muestra los puntos en forma continua.
>> plot(t,f,'y-') : Cambia el color en amarillo.
En conclusión la primera letra de los colores antepuesta a un signo sea asterisco, guión
o punto me indica el color de los puntos del grafico.

-2-
Juvenal Tordocillo Puchuc

Al digitar la opción grid muestra el fondo cos cuadrantes en forma de puntos, si la


opción grid minor muestra los cuadrantes en menor escala, y grid off nos muestra el
fondo en blanco.

Ahora generamos otra función llamado f 2  sin(2 * pi * 2 * t )

>> f2=sin(2*pi*2*t); >> plot(t,f,'k*',t,f2,'r-.');


>> plot(t,f,t,f2);

GRAFICO 5
GRAFICO 4

Se observa que el grafico 4, que la función f y función f2 son graficados en un mismo


gráfico, y en grafico 5 se ha indicado que f debe ser de color negro y con asterisco y la
función f2 debe ser rojo con rayas y puntos, estas opciones son de importancia para
poder diferenciar adecuadamente cada función.
Debe observarse además que el orden de las ordenadas y las abscisas sobre todo en la
segunda función es importante porque debe seguirse la lógica de la primera función, de
lo contrario se invertirá la segunda función.

Al digitar la opción: Es una opción para mostrar en forma discreta la función

>> stem(t,f2,'r*')
>> stem(t,f)

GRAFICO 7
GRAFICO 6

GENERACION DE SEÑALES MÁS COMPLEJAS

Sean los vectores

-3-
Juvenal Tordocillo Puchuc

>> A=[0 1 2 3 4 5 6 ];
>> B=[0 2 4 6 8 10 12];
>> C=A.*B
MATLAB muestra el siguiente resultado:
C=
Columns 1 through 6
0 2 8 18 32 50
Column 7
72
Comentario: Matlab no realiza ninguna operación cuando se digita >> C=A*B, porque
lo interpreta un vector como matriz por tanto es necesario digitar >> C=A.*B

EJERCICIO 3:
3. Graficar la siguiente función en el intervalo 0  x  4:
y( x)  ( x  1)( x  2)
En MATLAB
>> x=0:0.05:4; >> x=0:0.05:4;
>> y=(x-1).*(x-2); >> y=x.^3-6*x.^2+11*x-6;
>> plot(x,y) >> plot(x,y)

GRAFICO 8 GRAFICO 9

Comentario: Se nota en las graficas que las operaciones de los vectores realizadas en
Matlab asume de forma matricial al realizar la operación x.^2 toma dos matrices
unidimensionales del mismo tipo cabe indicar lo que realiza es el producto escalar.

PROBLEMAS 1

-4-
Juvenal Tordocillo Puchuc

1.- Genere una grafica la función f (t )  e t sin(2 * 5 * pi * t ) en el intervalo 0  x  6 .


Escoja el incremento que mejor muestre la grafica.

>> t=0:0.03:6; >> t=0:0.005:6;


>> f=exp(-t).*(sin(2*5*pi*t)); >> f=exp(-t).*(sin(2*5*pi*t));
>> plot(t,f) >> plot(t,f)

GRAFICO 10 GRAFICO 11

2. Halle gráficamente las raíces de la función y  x3  2 x 2  x  1

>> x=-10:0.5:10; >> x=-2.6:0.0005:-2.5;


>> f=x.^3+2*x.^2-x+1; >> f=x.^3+2*x.^2-x+1;
>> plot(x,f) >> plot(x,f)
>> grid >> grid minor

GRAFICO 13
GRAFICO 12

-5-
Juvenal Tordocillo Puchuc

>> f=[1 +2 -1 +1];


>> p=roots(f)
p=

-2.5468
0.2734 + 0.5638i
0.2734 - 0.5638i
Solamente hay una raíz y el valor de la raíz real es aproximadamente -2.55

sin( x) cos(2 x)
3. Grafique la siguiente función: y  , escoger los valores del eje “x”
2  sin( x)
adecuados
>> x=-10:0.002:10;
>> f= sin(x).*cos(2*x)./(2+sin(x));
>> plot(x,f)
>> gris

GRAFICO 14

4. Genere la función f (t )  sin(2 * pi * t ) , en el intervalo 0  x  1 . ¿Cuál es la


frecuencia de este sinusoide?, luego use las frecuencias de muestreo:
5Hz,10Hz , 20Hz, 40Hz y 200Hz usar la función ítem y observar el efecto.
>> x=0:0.001:1;
>> f=sin(2*pi*10*x);
>> x=0:0.01:1;
>> plot(x,f) >> f=sin(2*pi*5*x);
>> grid >> plot(x,f)
>> grid

GRAFICO 15 GRAFICO 16

-6-
Juvenal Tordocillo Puchuc

>> x=0:0.01:1;
>> x=0:0.01:1; >> f=sin(2*pi*200*x);
>> f=sin(2*pi*20*x); >> plot(x,f)
>> plot(x,f) >> grid
>> grid

GRAFICO 18
GRAFICO 17

5. Genere la función f (t )  et sin(2 * 5 * pi * t ) , después grafique un histograma,


ayuda: use la función intro, y el uso de la función bar. En seguida digite help bar para
analizar la función.

>> f=exp(-t).*(sin(2*5*pi*t));
>> plot(x,f)
>> bar(f)

GRAFICO 19

-7-
Juvenal Tordocillo Puchuc

EJERCICIOS CON MATLAB

EJERCICIO 1.

>> t=0:0.01:pi;
>> y=2*sin(5*t);
>> figure(GCF)
>> plot(t,y)
>> pause
>> ruido =randn(1,length(t));
>> plot(t,ruido)
>> pause
>> y_ruido=y+ruido;
>>plot(t,y_ruido)
G

GRAFICO 20

Ahora aplicamos un ruido

GRAFICO 21 GRAFICO 22

Comentario: Se tiene una función como descrito en el grafico 20, el periodo es de


1.25segundos entonces la frecuencia es de 0.8Hz, luego se genera un ruido de la forma
aleatoria como tantos números conforman la longitud del vector como muestra el
grafico 21, finalmente el grafico 22, se tiene la función con el ruido incorporado.

EJERCICIO 2.

Aquí tenemos las matrices:

-8-
Juvenal Tordocillo Puchuc

 3 4 1 2 3  5 6 
1 2 3      
A  ; B   3 6  ; C   4 5 6  ; D  7 8 
 4 5 6  7 8  7 8 9 9 10
Código en Matlab
.
>> A=[1 2 3; 4 5 6 ];
>> B=[3 4;3 6; 7 8 ];
>> C=[1 2 3;4 5 6; 7 8 9 ];
>> D=[5 6;7 8;9 10];
>> pause
>> size(A);
>> size(B);
>> pause
>> length(A);
>> length(B);

OPERACIÓN EN FORMA MANUAL

 3 4
1 2 3  
A* B    =  3  6  21 4  12  24  30 40
  3 6    
4 5 6 7 8 12  15  42 16  30  48 69 94
 

MATLAB

>> R=A*B

R=

30 40
69 94

OPERACIÓN EN FORMA MANUAL

 3 4  3  16 6  20 9  24  19 26 33
  1 2 3 
B * A  3 6   = 3  24 6  30 9  36   27 36 45
7 8 
4 5 6
7  32 14  40 21  48 39 54 69

MATLAB

>> R=B*A

R=

19 26 33

-9-
Juvenal Tordocillo Puchuc

27 36 45
39 54 69

OPERACIÓN EN FORMA MANUAL

 1 2 3
1 2 3 
A*C    =  9  21 12  24 15  27  = 30 36 42
 4 5 6     
4 5 6 7 8 9 24  42 33  48 42  54 66 81 96
 

MATLAB

> R=A*C

R=

30 36 42
66 81 96

MATLAB
>> R=A^2
??? Error using ==> mpower
Matrix must be square.
Aquí muestra un error porque la operación matemática no es posible porque
A2,3 * A23 y matlab muestra como error.

OPERACIÓN EN FORMA MANUAL

2
1 2 3 1 4 9 
A.^ 2     16 25 36
 4 5 6  

MATLAB

>> R=A.^2

R=

1 4 9
16 25 36

OPERACIÓN EN FORMA MANUAL

- 10 -
Juvenal Tordocillo Puchuc

1 2 3 1 2 3  9  21 12  24 15  27   30 36 42 
C * C  4 5 6 4 5 6 = 24  42 33  48 42  54 =  66 81 96 
7 8 9 7 8 9 39  63 54  72 69  81 102 126 150

MATLAB
> R=C^2

R=

30 36 42
66 81 96
102 126 150

OPERACIÓN EN FORMA MANUAL

' 1 4
1 2 3
A.'    2 5
 4 5 6 3 6
MATLAB

>> R=A'

R=

1 4
2 5
3 6

>> R=[B B B]

R=

3 4 3 4 3 4
3 6 3 6 3 6
7 8 7 8 7 8

>> R=[A; A; A]

R=

1 2 3
4 5 6
1 2 3

- 11 -
Juvenal Tordocillo Puchuc

4 5 6
1 2 3
4 5 6

ALGUNOS COMANDOS ESTADISTICOS

>> A=[1 2 3 4 5 6 7];


>> B=mean(A)
B = 4 Es el promedio
>> C=std(A)
C = 2.1602 Es la desviación Standart
>> pause
>> ruidoso =randn(1,5000);
>> figure(gcf);
>> plot(ruidoso);

GRAFICO 23
>> title('señal ruidoso');
>> pause
>> media_ruidoso=mean(ruidoso)

media_ruidoso = 0.0091

>> dp_ruidoso=std(ruidoso)

dp_ruidoso = 1.0038

>> pause
>> masruido=5*randn(1,5000);

- 12 -
Juvenal Tordocillo Puchuc

>> media=mean(masruido

media =0.0249

>> dp=std(masruido)

dp = 5.0130

EJERCICIOS

1. Utilizando el comando ayuda, hacer uso de los comandos max, min, mean, median,
sort.
Sea el vector >> A=[5 6 7 8 9 3 2 3 1];

>> B=max(A)  B= 9

>> B=min(A)  B= 1

>> B=median(A)  B= 5

>> B=sort(A)  B = 1 2 3 3 5 6 7 8 9

2. Utilizando el comando ayuda, hacer uso de los comandos fix, floor, ceil, round ,
mod, rem, sign.

>> A=[3.4 6.7 1.5 3.4+4.1i];

>> B=fix(A)  B = 3.0000 6.0000 1.0000 3.0000 + 4.0000i

>> B=floor(A)  B = 3.0000 6.0000 1.0000 3.0000 + 4.0000i

>> B=ceil(A)  B = 4.0000 7.0000 2.0000 4.0000 + 5.0000i

>> B=round(A)  B = 3.0000 7.0000 2.0000 3.0000 + 4.0000i

>> A=[5 6 7 8 9 3 2 3 1];

>> B=mod(A,7)  B=5 6 0 1 2 3 2 3 1

>> C=rem(A,7)  C= 5 6 0 1 2 3 2 3 1

> A=[5 -6 7 -8 9 0 2 3 1];


>> C=sign(A)  C = 1 -1 1 -1 1 0 1 1 1

3. Genera un senoide con una frecuencia de 50Hz y la amplitud de 3V, mediante


muestreo en una frecuencia de muestreo de 1kHz. Añadir a este senoide ruido gaussiano
con desviación Standard de 2V. Graficar la señal resultante. Determinar los valores
máximos y mínimos de la señal. Asegurase de incluir el titulo de las unidades. Busque
graficar la señal de manera que sus características queden claras al lector.

- 13 -
Juvenal Tordocillo Puchuc

>> t=0:0.001:0.1;
>> y=3*sin(2*pi*50*t);
>> plot(t,y)
>> ylabel('V (Voltaje)');
>> xlabel('Tiempo (Segundos)');
>> y1=wgn(1,length(t),1);
>> y1=2*wgn(1,length(t),1);
>> plot(t,y1)

GRAFICO 24 GRAFICO 25

>> t=0:0.0005:0.1;
>> y=3*sin(2*pi*50*t);
>> y1=wgn(1,length(t),1);
>> yr=y+y1;
>> plot(t,yr)

GRAFICO 26
4. Usando el comando help square, generar una onda cuadrada de 10Hz, con una
frecuencia de muestreo de 1KHz.
>> t = 0:.0001:.0625;
>> y = square(2*pi*30*t);, plot(t,y)

- 14 -
Juvenal Tordocillo Puchuc

GRAFICO 27
EJERCICIOS 1 :
Considere los siguientes números:
A  1 2 j ; B  2  3 j ; C  4  j ; D  2  2 j

1. Graficar manualmente cada uno de los números y representar en que cuadrante se


encuentra cada uno.

A : Se encuentra en el primer cuadrante


B : Se encuentra en el segundo cuadrante
C : Se encuentra en el cuarto cuadrante
D : Se encuentra en el tercer cuadrante

2. Para cada numero calcule manualmente el modulo M y luego comparar con Matlab.
(Comando abs(A)).
A  x 2  y 2  12  22  5  2.23

>> abs(A)  ans = 2.2361

- 15 -
Juvenal Tordocillo Puchuc

B  x 2  y 2   22  32  13  3.605
>> abs(B)  ans = 3.6056
C  x 2  y 2  42  (1)2  17  4.12

>> abs(C)  ans = 4.1231

D  x 2  y 2  (2)2  (2)2  8  2.82


>> abs(A)  ans = 2.8284

3. Calcular de forma manual los ángulos según los cuadrantes que corresponda y
verificar con Matlab. (atan(y/x))

EJERCICIO 3
1. Defina una variable de tiempo con 0  t  5 , con intervalo de muestreo de 0.01
segundo, y calcule la función.
>> t=0:0.01:5;
>> f=exp(2*pi*t*j);
>> partereal=real(f);
>> parteimag=imag(f);
>> subplot(2,1,1);
>> plot(t,partereal);
>> subplot(2,1,2),
>> plot(,parteimag)

GRAFICO 28

- 16 -
Juvenal Tordocillo Puchuc

2. la función también puede ser dividida una parte la función modulo y otra la fase. Use
matlab para graficar dichos parámetros.

>> module=abs(f);
>> fase=atan2(imag(f),real(f));
>> subplot(2,1,1)
>> plot(t,module)
>> subplot(2,1,2)
>> plot(fase)
>> xlabel('tiempo (seg.)');
>> ylabel('fase');

GRAFICO 29
3. Multiplique la función compleja f, calculada en el ejercicio anterior, por un numero
complejo 1  j y hacer un esquema de f2. Graficar la partes real en un mismo gráfico.
Observe el efecto que produce la multiplicación a un número complejo. ¿Por qué
ocurre este efecto?

>> t=0:0.01:5;
>> f1=exp(2*pi*t*j);
>> f2=exp(2*pi*t*j)*(1+j);
>> partereal1=real(f1);
>> partereal2=real(f2);
>> plot(t,partereal1,'-r',t,partereal2,'-.b')
>> h=legend('Real(f1)','Real(f2)',2);
>> ylabel('Parte Real');
>> xlabel('Tiempo');

- 17 -
Juvenal Tordocillo Puchuc

>> grid

GRAFICO 30
COMENTARIO: se ha graficado en un mismo grafico la parte real de ambas funciones
y se observa con relación al grafico f1 el grafico f2 tiene un desfase y un incremento de
la amplitud, la razón se explica al multiplicar por 1+j, entonces la parte real de la nueva
función es en realidad coseno menos seno cuyo grafico es tal como se puede mostrar en
líneas puntadas.

4. Genere una función f (t )  sin(2t ) . Multiplicar esta función por 1  j , generando


f 2 . En el mismo grafico graficar las partes imaginarias de f y f 2 . Notar los efectos y
explique.

GRAFICO 31

- 18 -
Juvenal Tordocillo Puchuc

y = ifft(X) returns the inverse


discrete Fourier transform (DFT) of vector X, computed
with a fast Fourier transform (FFT) algorithm. If X is
a matrix, ifft returns the inverse DFT of each column
of the matrix.

Considerando el siguiente ejemplo:

>> t=0:.01:.99;
>> f=sin(2*pi*2*t);
>> F=fft(f);
>> subplot(2,1,1);
>> plot(t,abs(F),'ko');
>> subplot(2,1,2);
>> plot(t,angle(F), 'ko')

La función abs. Tiene la posibilidad de devolver un número en valor absoluto.

- 19 -
Juvenal Tordocillo Puchuc

Ahora realizar un ejemplo para calcular DFT de 1 segundo de de un senoide de 2Hz. Y


notar que el resultado de la fase es un poco extraño. La razón es que la fase es el
resultado de de la división por números pequeños resultado un valor nada significativo.
Ahora se sustituye por la primera línea por

>> t=0:.01:1.33;
>> f=sin(2*pi*2*t);
>> F=fft(f);
>> subplot(2,1,1);
>> plot(t,abs(F),'ko');
>> subplot(2,1,2);
>> plot(t,angle(F), 'ko')

>> clear
>> clf
>> t=0:.01:.99;
>> fs=100;
>> N=length(t);
>> f=1+sin(2*pi*10*t);
>> F=fft(f);
>> Fesc=F/N;
>> freq=(0:N-1)*fs/N;
>> plot(freq,abs(Fesc),'ko');

- 20 -
Juvenal Tordocillo Puchuc

>> xlabel('frecuencia')
>> ylabel('amplitud')
>> plot(t,freq,abs(Fesc),'ko');

FILTROS DIGITALES

Los cuatro filtros básicos, desde el punto de vista ideal del comportamiento del módulo
de la respuesta frecuencial, según sea la posición relativa de bandas de paso y bandas
atenuadas, reciben el nombre de paso bajo, paso alto, paso banda y elimina banda,
dependiendo de la parte del espectro de frecuencias en la que se centra la banda de paso.
Por ejemplo, el paso bajo se caracteriza porque deja pasar todas las componentes
frecuenciales de la señal en el rango bajo de las frecuencias, por debajo de una
determinada frecuencia de corte, siendo el resto de componentes atenuadas por el filtro.
Es el típico filtro que en amplificación se emplea enuna etapa previa al amplificador
para que el ruido no se amplifique y llegue a saturar al mismo. El filtro paso alto
presenta el comportamiento complementario al paso bajo; el filtro paso banda cancela
las bajas y las altas frecuencias (bandas atenuadas inferior y superior), y conserva una
banda determinada de frecuencias; el último, presenta bandas de paso en baja y alta
frecuencia, y una banda atenuada en un margen de frecuencias intermedio.
La opción indicada utilizada se explica cada uno de los términos como sigue:
coeficientes del filtro:

- 21 -
Juvenal Tordocillo Puchuc

>> [B,A] = butter(N,Wn)

B y A son los coeficientes del numerador y del denominador respectivamente, en orden


decreciente de un filtro de Butterworth digital. N es el orden del filtro (calculado
previamente) y Wn es la frecuencia de corte. El valor de Wn debe estar normalizado con
la frecuencia de Nyquist. Para diseñar un filtro pasobajo Wn es un escalar entre (0,1).
La pasabanda es (0,Wn) y la parabanda es (Wn,1). Para diseñar un filtro de pasoalto, el
comando a escribir es:
>> [B,A] = butter(N,Wn,’high’)
donde Wn es un escalar.
Un filtro Parabanda se determina de la siguiente forma:
>> [B,A] = butter(N,[W1 W2])
Es decir, Wn es en este caso un vector que especifica las frecuencias de pasabanda.
Finalmente, para un filtro Parabanda:
>> [B,A] = butter(N,[W1 W2],’stop’)
[W1 W2] son las frecuencias
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs)
Calcula el orden de un filtro pasobajo digital de Butterworth, con Ws la frecuencia de
pasabanda, Wp la parabanda, y Rp y Rs las atenuaciones respectivas de pasabanda y
parabanda en decibelios. Wp y Ws deben ser entre (0,1), siendo 1 la frecuencia de
Nyquist (fs/2). N es el orden del filtro y Wn la frecuencia de 3db.
>> [N, Wn] = buttord(Wp, Ws, Rp, Rs,'s')

Lo mismo que antes, pero para un filtro pasobajo analógico. Aquí

los valores de Wp y Ws pueden tomar cualquier valor en radianes. Para calcular el


orden de otros tipos de filtro (pasoalto, parabanda o pasabanda) deberemos aplicar
primero las transformaciones al prototipo de filtro pasobajo.

>> [N, Wn] = cheb1ord(Wp, Ws, Rp, Rs)


Cálculo del orden necesario para un filtro digital pasobajo de Chebyshev I, con las
especificaciones dadas. Las mismas consideraciones que en el caso del filtro de
Butterworth.
>> [N, Wn] = cheb1ord(Wp, Ws, Rp, Rs, 's')
Lo mismo pero para el filtro analógico

- 22 -
Juvenal Tordocillo Puchuc

>> [N, Wn] = cheb2ord(Wp, Ws, Rp, Rs)


Filtro digital de Chebyshev II
>> [N, Wn] = cheb2ord(Wp, Ws, Rp, Rs, 's')
Filtro analógico de Chebyshev II
>> [N, Wn] = ellipord(Wp, Ws, Rp, Rs)
Filtro digital elíptico
>> [N, Wn] = ellipord(Wp, Ws, Rp, Rs, 's')

Como ejemplo sera filtrada un senoide de 5Hz, frecuencia de muestreo de 100Hz, por
un flitro com fc=10Hz.
>> clear
>> clf
>> t=0:.01:1;
>> f=sin(2*pi*5*t);
>> subplot(2,1,1);
>> plot(t,f);
>> [B,A]=butter(1,0.1);
>> salida=filter(B,A,f);
>> subplot(2,1,2);
>> plot(t,salida)
>> grid

EXPLICACION:
Entendemos que el comando buttord sugiere que a partir de las especificaciones de
Matlab y el diseño de filtros digitales las atenuación máxima en la banda de paso y
mínima en la de rechazo así como de las respectivas frecuencias de corte de cada una de
las bandas, nos da el orden del filtro y la frecuencia natural del filtro. Por otro lado, a

- 23 -
Juvenal Tordocillo Puchuc

partir del orden del filtro y de la frecuencia natural, la función butter nos da los
polinomios correspondientes al numerador y al numerador de la frecuencia de
transferencia. En la figura se observa una disminución en la amplitud la señal a sido
filtrado en un factor y también en la frecuencia.

EJERCICIOS

1. Generar una señal f  1  sin(2100 * t ) , con frecuencia de salida 1Kz.


2. Pasar una señal por un filtro pasa bajo Butterworth con frecuencia de corte
f c  50Hz
En se tiene la señal y aplicando el filtro correspondiente.
Entonces el código en el archivo es:
clear
clf
t=0:.01:1;
f= 1+sin(2100*t);
subplot(2,1,1);
plot(t,f);
[B,A]=butter(1,0.1);
salida=filter(B,A,f);
subplot(2,1,2);
plot(t,salida)
grid

3. Pasar una señal por un filtro pasa bajo Butterworth con frecuencia de corte
f c  5Hz

clear
clf
t=0:.01:1;
f= 1+sin(2100*t);
subplot(2,1,1);
plot(t,f);
grid
[B,A]=butter(1,0.01);
salida=filter(B,A,f);
subplot(2,1,2);
plot(t,salida)
grid

- 24 -
Juvenal Tordocillo Puchuc

4. En matlab, se posee una función freqz, que permite graficar la respuesta de


frecuencia de filtros digitales. Examine con help esta opción. Use para graficar la
respuesta en la frecuencia de filtro de este ultimo ejemplo.

Al examinar se tiene los a respuesta frecuencial del filtro diseñado para los filtros
analógicos

>> H = freqs(B,A,W)
Devuelve el vector H de números complejos, que es la respuesta frecuencial al filtro
cuya función de transferencia en s viene dada por B y A. La respuesta frecuencial se
evalúa en los puntos especificados por el vector W en radianes. Más opciones en el
Help de MATLAB.

>> plot(W,abs(H))

Dibuja la magnitud de la respuesta frecuencial del filtro.


>> plot(W,unwrap(angle(H)))
Dibuja la fase de la respuesta frecuencial del filtro. La función unwrap hace que no
haya discontinuidad en la fase por el paso de +p a -p.Filtro analógico.

Para los filtros digitales


>> H = freqz(B,A,F,Fs)
Devuelve el vector H de números complejos, que es la respuesta frecuencial al filtro
cuya función de transferencia en z viene dada por B y A. La respuesta frecuencial se
evalúa en los puntos especificados por el vector F en Hz, siendo la frecuencia de
mustreo Fs Hz. Más opciones en el Help de MATLAB.
>> gd = grpdelay(B,A,F,Fs)
Calcula retraso de grupo (-dF/dt) de la función de Transferencia formada por los
polinomios B y A. Se evalúa en los puntos especificados por W en radianes. Para más
opciones de esta función ver el Help de MATLAB.
>> plot(F,abs(H))
Dibuja la magnitud de la respuesta frecuencial del filtro.
>> plot(F,unwrap(angle(H)))
Dibuja la fase de la respuesta frecuencial del filtro.

- 25 -
Juvenal Tordocillo Puchuc

>> plot(F,gd)
Dibuja el retraso de grupo de la función de Transferencia.

Para el ejemplo anterior tenemos el código es:


clear
clf
t=0:.01:1;
x= 1+sin(2100*t);
[B,A]=butter(1,0.01);
salida=filter(B,A,x);
y = fft(x);
f = (0:length(y)-1)'/length(y)*100; % Frequency vector
H = freqz(B,A,f,0.1);
p = unwrap(angle(y)); % Phase
subplot(2,1,1);
plot(f,abs(H))
ylabel('vector frecuencia');
xlabel('abs(H)');
grid
subplot(2,1,2);
plot(f,p);
ylabel('vector frecuencia');
xlabel('fase(H)');
grid

- 26 -

También podría gustarte