Está en la página 1de 17

INGENIERIA ELECTRNICA

Nombre: ALEX MAURICIOSANTANA GALLO


Nivel:

Quinto A
LABORATORIO II

PROCESAMIENTO DIGITAL DE SEALES


INFORMACIN TERICA
Ecuacin en diferencias.- Un sistema discreto se define como aquel que responde con
una seal discreta ante una excitacin discreta. Se puede esquematizar de la siguiente
manera:

Donde la salida y[n] es el resultado de aplicar el operador h[n] sobre x[n].


La forma ms general de expresar la respuesta de un sistema discreto es el producto de
convolucin:

y(n) =x(k).h(n k) =x(n) * h(n) =h(n) * x(n)


Donde h(n) representa la respuesta impulsiva del sistema discreto y x(n) la seal de entrada.
La expresin del producto de convolucin anterior no es computacionalmente operativa, dado
que la sumatoria se extiende desde i=0 hasta sistema suele hacerse a travs de la ecuacin de diferencias:

y(n) =

.y(nk )+ b .x(nk )
k

Donde se puede fijar a0=1. A partir de esta expresin cabe definir dos tipos de sistemas
discretos:
1. Sistemas de respuesta impulsiva infinita (IIR): los vectores de parmetros a y b son no
nulos, por lo que la respuesta impulsiva del sistema puede tener una duracin infinita.
2. Sistemas de respuesta impulsiva finita (FIR): el vector a es nulo, por lo que se tiene que
la respuesta impulsiva es h(k)=bk, es decir, tiene una duracin finita.
Filtros IIR.- Se utilizar como ejemplo un sistema IIR con la siguiente ecuacin en diferencia:

y(n) +0.9 y(n 2) =0.3x(n) +0.6x(n 1) +0.3x(n 2)


1. Vamos a obtener las 30 primeras muestras de la respuesta impulsiva del sistema. La
operacin de filtrado se implementa en forma vectorial:

y(n) =ayn t +bxn t

y x
(
Donde n y n son vectores que contienen la muestra actual en la primera dimensin
yn (1) =0)

, la anterior en la segunda, etc.

clc
clear
x=[1 zeros(1,29)];
a=[1. 0. 0.9];
b=[0.3 0.6 0.3]
xn=[0. 0. 0.]
yn=[0. 0. 0.]
for n=1:length(x)
hold on

xn(3)=xn(2);xn(2)=xn(1);xn(1)=x(n);
yn(3)=yn(2);yn(2)=yn(1);yn(1)=0;
y(n)=a*yn'+b*xn'
yn(1)=y(n)
stem(n,yn(1),'r')
hold off
end

Dibujar el resultado haciendo uso de la funcin stem en Matlab

2. Comprobar el resultado haciendo uso de la funcin filter.

x=[1 zeros(1,29)];
a=[1. 0. 0.9];

b=[0.3 0.6
xn=[0. 0. 0.]
yn=[0. 0. 0.]
y=filter(b,a,x)
stem(0:29,abs(y),'r')

0.3]

3. Obtener la respuesta del sistema a un escaln unitario.

clc
clear
x=[1 zeros(1,29)];
a=[1. 0. 0.9];
b=[0.3 0.6 0.3]
xn=[0. 0. 0.]
yn=[0. 0. 0.]
y=impz(b,a,100)
stem (y, 'r')

grid on

4. Es estable el sistema anterior? La condicin para comprobar la estabilidad del


sistema es:

|[ ]| <

fprintf('\t COMPROBACIN
SISTEMA ESTABLE:);
fprintf('\n \t y(n)-2.5y(n1)+y(n-2)=4x(n)');
a=[1. 0. 0.9];
b=[0.3 0.6 0.3];
[b,a]=eqtflength(b,a)
[z,p,k]= tf2zp(b,a)
for i=1:length(k)
if (k(i)<1)
estabilidad=0;
else
estabilidad=1;
end
end
if (estabilidad==0)
fprintf('Estable') ;
else fprintf('Inestable')
;
end

Esta condicin puede comprobarse estudiando grficamente la convergencia de la serie


anterior.
5. Determinar la estabilidad de un sistema con la siguiente ecuacin en diferencias:
(). ( )+ ( )= ()

Usar el mtodo descrito anteriormente.

fprintf('\t COMPROBACIN SISTEMA ESTABLE:


');
fprintf('\n
\t
y(n)-2.5y(n-1)+y(n2)=4x(n)'); a=[1. 2.5 1.0];
b=[4. 0. 0.];

[b,a]=eqtflength(b,a)
[z,p,k]= tf2zp(b,a)
for i=1:length(k)
if (k(i)<1)
estabilidad=0;

else
estabilidad=1;
end
end
if (estabilidad==0)
fprintf('Estable') ;
else fprintf('Inestable')
;
end

Filtros FIR: Considerar el filtro FIR que proporciona como salida la media de las 10 ltimas
muestras de entrada (incluyendo la muestra de entrada actual).
1. Obtener y dibujar la respuesta impulsiva del sistema (30 muestras).

2. Haciendo uso de la funcin filter, obtener y dibujar la respuesta a un escaln unitario


(30 muestras).

3. Cul es el retardo introducido por el filtro? Realizar tambin el filtrado con la funcin
de convolucin conv y sealar la diferencia en el resultado respecto a filter.

Convolucin Circular: La operacin de filtrado puede implementarse como producto de DFTs.


Sin embargo, y como ya se ha visto anteriormente, la DFT no es computacionalmente

operativa, por lo que se usa un muestreo de la misma, la DFT. Por tanto, sera deseable que el
filtrado sea implementable como producto de DFTs.
Desafortunadamente, el producto de DFTs no se corresponde con la operacin de convolucin
lineal en el dominio temporal, sino con otro tipo de convolucin conocida como convolucin
circular, definida como:
( ) ( ) = ( ). (( )

(( )

) = ( )
( + )

= , + 1, , 1

= 0, 1, 2, . , 1

Donde N es la longitud de la convolucin.


La convolucin circular de por si no tiene un gran inters, ya que la operacin de filtrado
corresponde a una convolucin lineal. Sin embargo, su cmputo es eficiente si se realiza a
travs de algoritmos FFT, por lo que es til como medio para obtener la convolucin lineal.
1. Escribir una funcin MatLab que implemente la convolucin circular de longitud N de
dos seales haciendo uso de la expresin anterior (Nota: si las seales de longitud
inferior a N, se rellena con ceros, mientras que en caso contrario se recorta la seal
hasta N. Usar el filtro de media y la seal escaln unitario del apartado anterior. Usar
N = 100.
x=[1 zeros(1,29)];
a=[1. 0. 0.9];
b=[0.3 0.6 0.3]
xn=[0. 0. 0.]
yn=[0. 0. 0.]
for n=1:length(x)
hold on

xn(3)=xn(2);xn(2)=xn(1);xn(1)=x(n);
yn(3)=yn(2);yn(2)=yn(1);yn(1)=0;
y(n)=a*yn'+b*xn'
yn(1)=y(n)
p=cconv(x,y,50)
stem(p,'r')
hold off
end

2. Comprobar el funcionamiento de la funcin anterior construyendo otra funcin que


haga la misma convolucin, pero haciendo uso de la FFT. Comparar la velocidad de
ejecucin de ambas funciones MatLab.

x=[1 zeros(1,29)];
a=[1. 0. 0.9];
b=[0.3 0.6 0.3]
xn=[0. 0. 0.]
yn=[0. 0. 0.]
for n=1:length(x)
hold on

xn(3)=xn(2);xn(2)=xn(1);xn(1)=x(n);
yn(3)=yn(2);yn(2)=yn(1);yn(1)=0;
y(n)=a*yn'+b*xn'
yn(1)=y(n)
hold off
end
n=length(x)+length(y)-1
d=fft(x,n); %FFT filtro de media

e=fft(y,n); %FFT de la seal escalon unitario


z=d .*e; % multiplicacin de espectros (elemento a elemento)

w=ifft(z); % Dominio del


tiempo stem(w,'b')
grid on

La convolucin lineal de dos seales x(n) y h(n), de longitudes Nx y Nh, respectivamente,


da como resultado una seal de longitud Nx + Nh - 1. Comprobar que la convolucin
circular de longitud Nx + Nh = 1 de las dos seales (filtro de media y escaln unitario
anteriores) coincide con su convolucin lineal. Esta propiedad permite realizar
eficientemente la operacin de filtrado mediante convolucin circular usando FFT.
x=[1 zeros(1,29)];
a=[1. 0. 0.9];
b=[0.3 0.6 0.3]
xn=[0. 0. 0.]
yn=[0. 0. 0.]
for n=1:length(x)
hold on

xn(3)=xn(2);xn(2)=xn(1);xn(1)=x(n);
yn(3)=yn(2);yn(2)=yn(1);yn(1)=0;
y(n)=a*yn'+b*xn'
yn(1)=y(n)
hold off
end
n=length(x)+length(y)1 d=fft(x,n)
e=fft(y,n)
z=d.*e
w=ifft(z)
v=conv(x,y)
subplot(2,1,1);
stem(w,'b') grid on
subplot(2,1,2);
stem(v,'r') grid on

Al realizar una operacin de filtrado de una seal en tiempo real, normalmente se desconoce a
priori la longitud de la seal a filtrar, es decir, su longitud es indefinida. Para poder realizar su
filtrado, es necesario dividir la seal de entrada al filtro en bloques cortos xk(n) de longitud L,
sobre los que se va realizando sucesivamente el filtrado, como se resume en las siguientes
expresiones:

()=()

< ( + 1)
0

()= ()

( ) = ( ) ( ) = ( ) ( )

Cada trmino parcial xk(n) * h(n) es de longitud m + Nh - 1, por lo que es computado mediante
una convolucin circular de longitud m + Nh - 1. El resultado final x * h se obtiene sumando los
resultados parciales,cada resultado parcial queda solapado en Nh - 1 muestras con los
resultados parciales anterior y posterior. En cada zona de superposicin, la seal de salida se
obtiene como suma de las dos superpuestas. Se denomina de solapamiento-suma.

También podría gustarte