Está en la página 1de 9

FIEE UNI

PROCESAMIENTO DIGITAL DE SEALES


LABORATORIO N 3

EE612

5.3. DESARROLLO PRCTICO


En esta unidad prctica, el trabajo con MATLAB se realizar directamente sobre
funciones del propio programa, por tanto para definir una seal de entrada al sistema
definido en ecuaciones, no ser necesario una dupla {x0,x}, bastar con una secuencia de
entrada x de la que se asumir que siempre comienza en 0.
5.3.1. CONDICIONES INICIALES PARA LAS ECUACIONES EN DIFERENCIAS

La funcin filtic genera las condiciones iniciales necesarias para la funcin


filter que implementar una ecuacin en diferencias.
La sintaxis de la funcin es la siguiente: zi=filtic(b,a,y,x)
Los parmetros de entrada son:
b: coeficientes bk de la ecuacin en diferencias genrica, se trata de un vector con
la siguiente estructura: b=[b0 b1 bQ].
a: coeficientes ak de la ecuacin en diferencias genrica, se trata de un vector con
la siguiente estructura: a=[a0 a1 aP].
y: condiciones iniciales de la salida del filtro y=[y(-1) y(-2) ].
x: condiciones iniciales de la entrada del filtro x=[x(-1) x(-2) ].
Los parmetros de salida sern:
zi: vector de condiciones iniciales que se deber introducir en la funcin filter
para establecer estas condiciones iniciales del filtrado (clculo de la salida del sistema definido en ecuaciones ante una entrada)
Por ejemplo, para calcular las condiciones iniciales en MATLAB de un sistema
dado por:
y [ n] + 0.5 y [ n 1] = x [ n] + 0.3 x [ n 1]

con las condiciones iniciales x[-1]=1, x[-2]=-2 e y[-1]=-1, y[-2]=2, se debern introducir los siguientes comandos de MATLAB:
>> b=[1 0.3];
>> a=[1 0.5];
>> zi=filtic(b,a,[1,-2],[-1,2])
zi =
-0.8000

almacenndose en zi las condiciones iniciales necesarias para el posterior filtrado.


5.3.2. FILTRADO DE SEALES

Como ya se ha comentado, filtrar una seal consiste en calcular la respuesta de un


sistema, cuya relacin entrada / salida viene definida por unas ecuaciones en diferencias,
cuando la entrada es la seal a filtrar
La funcin filter realiza el filtrado de la secuencia de entrada x con las
condiciones iniciales impuestas por zi de un filtro definido por los coeficientes de las
ecuaciones en diferencias bk y ak.
La sintaxis de la funcin es la siguiente: [y,zf]=filter(b,a,x,zi)
Los parmetros de entrada son:
b: coeficientes bk de la ecuacin en diferencias genrica, se trata de un vector con
la siguiente estructura: b=[b0 b1 bQ].
Ing. Armando Alberto Cajahuaringa Camaco

Pgina 1

a: coeficientes ak de la ecuacin en diferencias genrica, se trata de un vector con


la siguiente estructura: a=[a0 a1 aP].
x: secuencia de entrada al filtro suponiendo que x0=0.
zi: condiciones iniciales que se obtienen de la funcin filtic.
Los parmetros de salida sern:
y: secuencia de salida del filtro tras filtrar la secuencia de entrada x por el filtro
definido por los coeficientes de las ecuaciones en diferencias bk y ak, y suponiendo
que y0=0.
zf: vector de condiciones finales.
Como ejemplo, se seguir con el mismo sistema que en el apartado anterior,

y [n ] + 0.5 y [ n 1] = x [ n ] + 0.3x [ n 1]
y con las mismas condiciones iniciales x[-1]=1, x[-2]=-2 e y[-1]=-1, y[-2]=2, y se
calcular su respuesta impulsional. Para ello, en MATLAB:
>> N=10;
>> x=[1 zeros(1,N-1)];
>> [y,zf]=filter(b,a,x,zi);
>> stem(y)

0.25

0.2

0.15

0.1

0.05

-0.05

-0.1
0

Figura 5-8: Representacin grfica de la respuesta al impulso de un sistema IIR

Obsrvese que el impulso creado tiene 10 muestras, la misma cantidad que la


respuesta impulsional del sistema.
En caso de que un sistema no tenga condiciones inciales, la sintaxis de la funcin
filter ser: [y]=filter(B,A,x).

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 2

5.3.3. RESPUESTA IMPULSIONAL DE UN SISTEMA DEFINIDO EN ECUACIONES

La funcin impz calcula la respuesta al impulso del filtro definido por los coeficientes de las ecuaciones en diferencias bk y ak.
La sintaxis de la funcin es la siguiente: [h,t]=impz(b,a,N)
Los parmetros de entrada son:
b: coeficientes bk de la ecuacin en diferencias genrica, se trata de un vector con
la siguiente estructura: b=[b0 b1 bQ].
a: coeficientes ak de la ecuacin en diferencias genrica, se trata de un vector con
la siguiente estructura: a=[a0 a1 aP].
N: nmero de puntos donde calcular la respuesta al impulso, (parmetro opcional).
Los parmetros de salida sern:
h: respuesta al impulso del filtro definido por los coeficientes de las ecuaciones en
diferencias bk y ak.
t: vector de tiempos correspondiente a las muestras de h.
Para el mismo sistema que el utilizado en los dos apartados anteriores, el clculo y
representacin de la respuesta impulsional, sin considerar las condiciones iniciales, se
realizar del siguiente modo:
>> [h,t]=impz(b,a);
>> stem(t,h)

1.2

0.8

0.6

0.4

0.2

-0.2

10

12

14

Figura 5-9: Representacin grfica de la respuesta al impulso de un


sistema IIR en reposo inicial

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 3

5.4. EJERCICIOS PROPUESTOS


1. Calcular mediante filter la respuesta al impulso (utilizando un impulso de duracin
100) de los siguientes sistemas definidos en ecuaciones en diferencias, indicando a la
vista de los resultados cules de ellos son FIR y cules IIR (suponer condiciones
iniciales nulas):
a. y[n]=x[n]+x[n-1]+2x[n-5]

b. y[n]-y[n-1]=3x[n]-2x[n-2]

c. y[n]=x[n]-x[n-1]

Comprobar los resultados con impz, para 100 puntos.


2. Dados los siguientes sistemas:
a. y[n]+y[n-1]=x[n] con y[-1]=0

c. y[n]-2y[n-2]=x[n-1] con y[-1]=y[-2]=0

b. y[n]+y[n-1]-y[n-2]=x[n]+2x[n-1] con y[-1]=2, y[-2]=-1

d. y[n]=x[n]-x[n-3]

Calcular su respuesta a las siguientes secuencias de excitacin (todas ellas de


duracin 100):
ii. x2 [n]=2 [n]

i. x1 [n]=[n]

iii. x3 [n]=[n-3] (para obtener esta seal rellenar con los ceros necesarios en el inicio
del vector, puesto que en esta prctica x0=0)
Para el apartado b. utilizar filtic y filter.
Indicar, a la vista de los resultados, si se trata de sistemas lineales, invariantes y
causales.
3. Comprobar que para a=0.6, la respuesta impulsional de la ecuacin en diferencias:
y[n]-ay[n-1]=x[n]
n

es y[n]=a u[n].
4. En este ejercicio se estudiar la respuesta estacionaria y la respuesta transitoria del
siguiente sistema definido en ecuaciones en diferencias:

1

y[n ] 1.8cos y[ n 1] + 0.81 y[n 2] = x[n ] + x[n 1]
2
16
suponiendo condiciones de reposo inicial.
a. Calcular mediante filter la respuesta al impulso h[n] para el intervalo
0 n100 y representar grficamente mediante stem.
b. Calcular mediante filter la respuesta al escaln s[n] para el intervalo
0n100 y representar grficamente mediante stem. Cul es el valor de la
constante G que alcanza la salida cuando n (la salida se estabiliza a partir de la
muestra 80)? Este valor se denomina respuesta permanente o estacionaria.
c. Comprobar grficamente usando la funcin diff (vase help) que la derivada de
la respuesta a la funcin escaln es la respuesta al impulso unitario.
d. La parte variable de la respuesta se denomina respuesta transitoria yt [n]=y[n]-G.
Representar yt [n] para 0 n 50. Esta respuesta depende de las condiciones
iniciales.

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 4

Generacin de seales muestreadas


P1) a) Generar una seal muestrada a partir de una seal rectangular de frecuencia 250 Hz,
amplitud 2 y ciclo de trabajo de 50%; muestreada a la frecuencia de 8000Hz.
b) repita lo anterior para frecuencia de muestreo de 1000 Hz. Comente sus resultados.
P2) a) Generar unes seal escaln unitario discreto desde -2 hasta 10, que empiece en n=1
b) Genere una seal impulso unitario desde -2 hasta 10, que empiece en n=3.
P3) Muestre la grafica de las siguientes seales, todas juntas, para n variando entre -6 a 6.
a) y1[n]= cos((2pi/3)n) b) y2[n]= cos((8pi/3)n)
c) y3[n]= cos((4pi/3)n)
Comente sus resultados

Mtodos de anlisis de sistemas discretos


1
METODO RECURSIVO
1.1 Manual o analtico
P1) Para la siguiente ecuacin en diferencias, 0.8 [ 1] + [ ] = [ ],

[ ] = 0.5

[ ] y

[0] = 1, determinar la solucin en forma recursiva: a) la salida [ ] b) Salida para entrada


cero, [ ] c) salidas para estado cero, [ ].
Solucin
a) Para resolver recursivamente y de forma manual, despejamos y[n] de la ecuacin en
diferencias

[ ] = [ ] 0.8 [ 1] = 0.5

[ ] 0.8 [ 1]

Empezamos con el valor de la condicin inicial para la salida:

[0] = 1
[1] = 0.5

[1] 0.8 [0] = 0.5 0.8 (1) = 1.3

[2] = 0.5

[2] 0.8 [1] = 0.25 0.8 (1.3) = 0.7900

[3] = 0.5

[3] 0.8 [2] = 0.125 0.8 (0.79) = 0.7570

[4] = 0.5

[4] 0.8 [3] = 0.0625 0.8 (0.7570) = 0.5431

Graficamos en Matlab la secuencia


obtenida, para n entre 0 y 4:
n=0:4;
y=[-1 1.3 -0.7900 0.7570 -0.5431];
stem(n,y,'fill')

b) Para la salida de entrada cero,


[ ] = 0.
[0] = 1

[1] = 0.8 [0] = 0.8 (1) = 0.8


[2] = 0.8 [1] = 0.8 (0.8) = 0.8

[3] = 0.8 [2] = 0.8 (0.8) = 0.8


[4] = 0.8 [3] = 0.8 (0.8 ) = 0.8

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 5

c) Para la salida de estado cero,

[0] = 0.

[0] = 0
[1] = 0.5

[1] 0.8 [0] = 0.5 0.8 (0) = 0.5

[2] = 0.5

[2] 0.8 [1] = 0.25 0.8 (0.5) = 0.15

[3] = 0.5

[3] 0.8 [2] = 0.125 0.8 (0.15) = 0.245

[4] = 0.5

[4] 0.8 [3] = 0.0625 0.8 (0.245) = 0.1335

Ntese como la suma de las secuencias de (b) y (c) da como resultado la secuencia de (a).

1.2 Solucin numrica usando MatLab


Ahora usaremos Matlab para determinar las secuencias de (a), (b) y (c). Antes, debemos de
tomar en cuenta que en Matlab los ndices de los elementos de un vector o matriz, son
mayores o iguales a 1. En la pregunta, el sistema empieza en n=0 (como podra empezar en
un n=-3). Para remontar este inconveniente, trabajemos con los ndices de los elementos de n
y no con los valores de n. Usaremos n de 0 a 10; por lo que los ndices de sus elementos
varan de 1 a 11. Para obtener los ndices de un vector (o matriz) usaremos la funcin find
a) Solucin completa

b) Solucin de entrada cero

c) Solucin de estado cero

n=0:10;
k=find(0<=n);
x=(0.5).^n;
y(1)=-1;
for k=2:11
y(k)=x(k)-0.8*y(k-1);
end
% stem(n,y,'fill')
y

n=0:10;
k=find(0<=n);
% x=(0.5).^n;
y(1)=-1;
for k=2:11
y(k)=-0.8*y(k-1);
end
% stem(n,y,'fill')
y

n=0:10;
k=find(0<=n);
x=(0.5).^n;
y(1)=0;
for k=2:11
y(k)=x(k)-0.8*y(k-1);
end
% stem(n,y,'fill')
y

y=

y=

y=

Columns 1 through 10
-1.0000
1.3000 -0.7900
0.7570 -0.5431
0.4657
-0.3570
0.2934 -0.2308
0.1866
Column 11
-0.1483

2
2.1

Columns 1 through 10
-1.0000
0.8000 -0.6400
0.5120 -0.4096
0.3277
-0.2621
0.2097 -0.1678
0.1342
Column 11
-0.1074

Columns
0
0.2450
-0.0948
Columns
0.0524

1 through 9
0.5000 -0.1500
-0.1335
0.1381
0.0837 -0.0630
10 through 11
-0.0409

Mtodo de solucin de ecuacin en diferencias (ED)


Mtodo manual o analtico

2.1.1 Solucin de entrada cero, y1[n]


Debemos de determinar la solucin para [ ] = 0.

0.8 1[ 1] + 1[ ] = 0,

1[0] = 1

Se determina las races de su ecuacin caracterstica y luego su respectivo modo:

0.8

+1=0

= 0.8,

1[ ] = 1(0.8)

[ ] = (0.8)

[ ];

. .

2.1.2 Solucin de estado cero, y2[n] (C.I. cero o en reposo)


Debemos de determinar la solucin para [ ] 0.

0.8 2[ 1] + 2[ ] = [ ],

2[0] = 0

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 6

La solucin de entrada cero es la suma de la solucin homognea mas la solucin particular

2[ ] = 2[ ] + 2 [ ],

2[ ] = (0.8) ; 2 [ ] = (0.5)

2[0] = 0

Remplazando la solucin particular en la ecuacin en diferencias, se obtiene:

0.8

(0.5)

(0.5)

= (0.5)

13

2 [ ]=

5
(0.5) ,
13

Finalmente, aplicaremos la C.I. a la solucin 2[ ]:

2[0] = 0 =

(0.8) +

5
(0.5)
13

5
13

2[ ] =

5
5
(0.8) +
(0.5)
13
13

Calculando algunos valores:

[0] = 0
2[1] =

[0.5 (0.8) ] = 0.5

2[2] =

[0.5 (0.8) ] = 0.15

2[3] =

[0.5 (0.8) ] = 0.245

Se observa que los valores numricos, concuerdan con los resultados del mtodo recursivo.

2.2 Mtodo numrico usando Matlab


Para este mtodo, se requiere de la expresin de la funcin de transferencia del sistema
discreto. Para esto es necesario, primero, ordenar la ED en orden decreciente de sus
diferencias (a diferencia de las EDO en los que se ordena de mayor a menor orden), tanto para
la variable de salida como para la variable de entrada. As:

[ ] + 0.8 [ 1] = [ ]

Mtodo de solucin de ecuacin en diferencias (ED) usando las


funciones filtic y filter

P2) Para la siguiente ecuacin en diferencias, 0.8 [ 1] + [ ] = [ ],

[ ] = 0.5 [ ] y
[0] = 1, determinar la solucin en forma recursiva: a) la salida [ ] b) Salida para entrada
cero, [ ] c) salidas para estado cero, [ ].

P3) Un sistema se describe por medio de su ecuacin en diferencias

[ ] 1.143 [ 1] + 0.4128 [ 2] = 0.0675 [ ] + 0.1349 [ 1] + 0.0675 [ 2]


Determinamos la salida en respuesta a entra-da cero y condiciones iniciales [1] = 1, [2] = 2

empleando los comandos:

>>
>>
>>
>>
>>

a= [1, -1.143, 0.4128];


b= [0.0675, 0.1349, 0.0675];
x= zeros(1,50)
zi = filtic(b,a,[1,2]);
y =filter(b,a,x,zi);

>> stem(1:50,y);
El resultado se aprecia en la grfica adjunta:

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 7

Ahora haciendo la condiciones iniciales cero y la entrada x[n]=cos(0.1*pi*n), la grfica de


salida es:
>>
>>
>>
>>
>>
>>
>>

a=[1,-1.143,0.4128];
b=[0.0675,0.1349,0.0675];
n=0:100;
x=cos(0.1*pi*n);
zi=filtic(b,a,[0]);
y=filter(b,a,x,zi);
stem(1:101,y);

Haciendo las condiciones iniciales cero y la entrada


es:
>>
>>
>>
>>
>>
>>
>>

[ ]=

(0.2

), la grfica de salida

a=[1,-1.143,0.4128];
b=[0.0675,0.1349,0.0675];
n=0:100;
x=cos(0.1*pi*n);
zi=filtic(b,a,[0]);
y=filter(b,a,x,zi);
stem(1:101,y);

Ahora se resolver el siguiente ejercicio, analticamente y usando Matlab.


P4) Resolver la ecuacin en diferencias:

[ ] 0.25 [ 2] = 2 [ ] + [ 1], sujeta a condiciones iniciales cero y

[ ]= [ ].

SOLUCION:
Primero, la solucin homognea.
Haciendo la entrada cero y suponiendo una solucin

= ,

Segundo la solucin particular.

[ ].

Evaluando la solucin (recuerde [ ] = [ ] ).

[ ] 0.25

[ 2] = 2 [ ] + [ 1],

0.25 = 2 + 1,

= 2.

= 4;

La forma de la solucin es:

[ ]=

Evaluando en n=0 y n=1.

[0] =

1 + 2 + 4 = 2,

[1] =

1
+
2

1
+ 4 = 3,
2

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 8

Evaluando en la ecuacin original, se llega al sistema:

1+

2 = 2

2 = 2

El cual tiene por solucin: C1=-2 y C2=0.


Por lo tanto la solucin es:

[ ] = (2(0.5) + 4) [ ].

(la cual se puede comprobar introduciendo varios valores de prueba).

Usando Matlab:
>>
>>
>>
>>
>>
>>

a=[1,0,-0.25];
b=[2,1];
u=[1,ones(1,50)];
zi=filtic(b,a,[0]);
y=filter(b,a,u,zi);
stem(0:50,y);

La cual genera la grfica:

La cual es igual a

[ ] = (2(0.5) + 4) [ ].

Y se puede comprobar graficndola en Matlab.

>> n=0:50;
>> y=(-2*((0.5).^n)+4);
>> stem(0:50,y);

Ejercicios
De acuerdo a lo estudiado resuelva las siguientes ecuaciones en diferencias usando Matlab,
sino se especifican las condiciones iniciales asmalas cero.

( )

[ ] = 3 [ 1] + 4 [ 2] + [ ] + 2 [ 1]
Para la entrada: i) Impulso unitario ii) Escaln Unitario

( )

[ ] = 1/2 [ 1] + 2 [ ],

[1] = 3,

[ ] = 2(1/2)

( ) [ ] = 1/4 [ 1] + 1/8 [ 2] + [ ] + [ 1],

[ ]=4

[ ].
[ ]

(0.2

).

Sugerencia: Para una entrada escaln unitario, puede auxiliarse de


>> delta=[1,zeros(1,50)];

Adicionales
Para complementar los ejercicios
Investigue sobre los comandos filter y filtic.
Muestre todos los programas de la solucin de las ecuaciones con sus respectivas grficas.
Implemente diagrama de bloques para las ecuaciones.
Que pasa si los valores de lambda son complejos?

Ing. Armando Alberto Cajahuaringa Camaco

Pgina 9

También podría gustarte