0% encontró este documento útil (0 votos)
72 vistas15 páginas

Practica 2

Este documento describe el tratamiento y transmisión de señales en sistemas de tiempo discreto. Explica filtros IIR y FIR, incluyendo ejemplos de obtener la respuesta al impulso y escalón de diferentes sistemas, y comprobar su estabilidad. También muestra cómo decodificar audio analógico de TV de pago mediante filtrado, codificación y decodificación con un filtro h(n)=(-1)n.

Cargado por

amoreno150
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas15 páginas

Practica 2

Este documento describe el tratamiento y transmisión de señales en sistemas de tiempo discreto. Explica filtros IIR y FIR, incluyendo ejemplos de obtener la respuesta al impulso y escalón de diferentes sistemas, y comprobar su estabilidad. También muestra cómo decodificar audio analógico de TV de pago mediante filtrado, codificación y decodificación con un filtro h(n)=(-1)n.

Cargado por

amoreno150
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 PDF, TXT o lee en línea desde Scribd

Universidad de Granada

Ingeniería Electrónica Industrial

PRÁCTICA 2: SISTEMAS EN TIEMPO


DISCRETO

Tratamiento y Transmisión de Señales

Autor:
Antonio Domingo Moreno Crespo

Marzo 2022

0
Índice general

1. Introducción ........................................................... 2
2. Desarrollo de la práctica........................................ 2
2.1. Filtros IIR .................................................................... 2
2.2. Filtros FIR ................................................................... 7
2.3. Decodificación de audio analógica ........................... 12

1
1. Introducción
Un sistema discreto se define como aquel que responde con una señal discreta ante una
excitación discreta.

La respuesta de un sistema discreto se expresa mediante el producto de convolución:


𝑦(𝑛) = ∑ ℎ(𝑙)𝑥(𝑛 − 𝑙) = ℎ(𝑛) ∗ 𝑥(𝑛) = 𝑥(𝑛) ∗ ℎ(𝑛)


𝑙=0

Donde h(n) representa la respuesta impulsiva del sistema discreto y x(n) la señal de
entrada. Sin embargo, el producto de convolución no se puede implementar bien en un
ordenador, debido a que se extiende en el infinito, por lo que se calcula mediante la
ecuación en diferencias:
𝑁 𝑀
1
𝑦(𝑛) = − 𝑎 ∑ 𝑎𝑘𝑦(𝑛 − 𝑘) + ∑ 𝑏𝑙𝑥(𝑛 − 𝑙)
0
𝑘=𝑙 𝑙=0

A partir de esta expresión, podemos diferencias dos tipos de sistemas:


-Sistemas de Respuesta Impulsiva Infinita (IIR)
-Sistemas de Respuesta Impulsiva Finita (FIR)

2. Desarrollo de la práctica
2.1 Filtros IIR
Utilizamos la siguiente ecuación de un sistema IIR:
𝑦(𝑛) + 0.9𝑦(𝑛 − 2) = 0.3𝑥(𝑛) + 0.6𝑥(𝑛 − 1) + 0.3𝑥(𝑥 − 2)

1. Obtener las 30 primeras muestras de la respuesta impulsiva del sistema.


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)
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);
end
stem (y)

2
Respuesta del sistema

Podemos observar como la respuesta del sistema converge en 0.

También podemos ver la respuesta del sistema con la función plot.

2. Comprobar el resultado utilizando la función ‘filter’ de Matlab.

y1=filter(b,a,x);
stem(y1)

3
Como podemos observar, obtenemos el mismo resultado de las dos formas.

3. Obtener la respuesta del sistema a un escalón unitario.


x1=ones(1,30);
y2=filter(b,a,x1);
stem(y2)

Respuesta del sistema

4. ¿Es estable el sistema anterior?


Para que un sistema sea estable, la respuesta al impulso debe de converger y la
sumatoria de todos sus valores tienen que ser un término totalmente sumable.
Primero comprobamos si la salida converge:

4
x2=[1 zeros(1,499)];
y3=filter(b,a,x2);
stem (y3)

Como podemos observar, la salida converge a 0.


Ahora comprobamos si todos sus términos son totalmente sumables.
sumavalores=zeros(1,500);
for i=1:500;
sumavalores(i)=sum(abs(y3(1:i)));
end
plot(sumavalores)

A partir de 150, los valores se vuelven constantes, por lo que podemos decir que sus
terminos si son totalmente sumables, por lo que el sistema es estable.

5
5. Determinar la estabilidad del siguiente sistema IIR:
𝒚(𝒏) − 𝟐. 𝟓𝒚(𝒏 − 𝟏) + 𝒚(𝒏 − 𝟐) = 𝟒𝒙(𝒏)
a1=[1 -2.5 1];
b1=[4 0 0];
x3=[1 zeros(1,49)];
y4=filter(b1,a1,x3);
stem(y4)
sumavalores1=zeros(1,50);
for i=1:50;
sumavalores1(i)=sum(abs(y4(1:i)));
end
plot(sumavalores1)

Obtenemos los siguientes resutados:

Respuesta del sistema al impulso unitario

Sumatoria de sus valores

6
Como podemos observar, el sistema ni converge ni sus términos son totalmente
sumables ante un impulso. Por lo que podemos decir que este sistema no es estable.

2.2 Filtros FIR


Tenemos que utilizar un filtro FIR que nos proporcione como salida la media de las
10 últimas muestras de entrada, incluyendo la entra actual. Para ello utilizamos la
mediamóvil:
𝑀
1
𝑦(𝑛) = ∑ 𝑥(𝑛 − 𝑘)
𝑀+1
𝑘=0

1. Obtener y dibujar la respuesta impulsiva del sistema (30 muestras).

x=[1 zeros(1,29)];
a=[1 zeros(1,9)];
M=10;
b=1/M*ones(1,10);
y=filter(b,a,x);
stem(y)

Respuesta del sistema ante un impulso

7
2. Obtener la respuesta a un escalón unitario del sistema haciendo uso de la
función ‘filter’. ¿Cuál es el retardo del sistema? Realizar la misma operación, pero
con la función ‘conv’ y señalar la diferencia en el resultado respecto a ‘filter’.
x1=ones(1,30);
y2=filter(b,a,x1);
stem(y2)

Respuesta del sistema ante entrada escalón

%Calculamos el retardo del filtro utilizando grpdelay,


utilizando la respuesta ante el impulso
grpdelay(y);

8
Como podemos observar, el retardo introducido por el filtro tiene un valor de 4.5,
siendo el mismo valor para todos los componentes, por lo que es un retardo lineal.
Este es el retardo de grupo, que está asociado a las componentes frecuenciales.

%Calculamos la respuesta al escalón con conv


y3=conv(b,x1);
stem(y3)

Respuesta del sistema utilizando ‘conv’

Ahora vamos a ver la diferencia entre ‘filter’ y ‘conv’ comparado las dos gráficas.
stem (y3) %conv en azul
hold on
stem (y2) %filter en naranja
hold off

9
Como podemos ver, la diferencia entre ‘filter’ y ‘conv’ es que la función ‘conv’ nos da
todos los datos hasta que la entrada se vuelve cero, mientras que ‘filter’ solo nos
proporciona los datos de las 30 muestras.

3. Repetir el apartado anterior para el siguiente filtro:

𝒏 + 𝟏; 𝟎 ≤ 𝒏 ≤ 𝑵𝟎 = 𝟖
𝒉(𝒏) = {
𝟐𝑵𝟎 − 𝒏 + 𝟏; 𝑵𝟎 < 𝒏 ≤ 𝟐𝑵𝟎

%Calculamos la respuesta al impulso unitario


x=[1 zeros(1,29)];
a=[1 zeros(1,9)];
for n=0:8
b1(n+1)=n+1; %Ponemos b1(n+1) porque 'for' no nos deja empezar con
0, es decir, b1(0)
end
for n=9:16
b1(n+1)=2*8-n+1;
end
y7=filter(b1,a,x);
stem(y7)

Respuesta al escalón unitario

10
%Calculamos la respuesta al impulso unitario
x1=ones(1,30);
y4=filter(b1,a,x1);
stem(y4)

Respuesta del sistema ante escalón unitario con ‘filter’

%Calculamos el retardo con una entrada impulso


grpdelay(y7);

Retardo del filtro

11
El retardo tiene un valor de 8 para todos sus componentes, siendo este un retardo lineal.

%Utilizamos conv
y6=conv(b1,x1);
stem(y6)

Respuesta del sistema ante entrada escalón utilizando ‘conv’

2.3 Decodificación de audio de TV analógica de pago


%Cargamos el audio origal
[s,Fs]=audioread ('[Link]');
plot(s)

12
%Aplicamos el filtro FIR para quitar el ruido, eliminando
los componentes de alta frecuencia
a=[1 zeros(1,9)];
M=10;
b=1/M*ones(1,10);
y=filter(b,a,s);
plot(y)

%Codificamos la señal
y1=zeros(1,length(y))';
for n=1:length(y)
y1(n)=((-1)^n)*y(n);
end
plot(y1)

13
%Descodificamos la señal
y2=zeros(1,length(y1))';
for n=1:length(y1)
y2(n)=((-1)^n)*y1(n);
end
plot(y2)

Vemos como la señal filtrada y la señal codificada son iguales, ya que al aplicar el filtro
ℎ(𝑛) = (−1)𝑛 dos veces, podemos recuperar la señal original.

14

También podría gustarte