1. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
UNIVERSIDAD DE LAS FUERZAS ARMADAS “ESPEL”
DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
CARRERA DE ING. EN ELECTRÓNICA E INSTRUMENTACIÓN
ASIGNATURA: PROCESAMIENTO DIGITAL DE SEÑALES
DOCENTE: Ing. Armando Álvarez
NOMBRE: ALEX PAUL PORRAS ROBALINO
Fecha: 24/ 02/2016
PRÁCTICAS EN MATLAB CAPITULO 4
4.56 Programe la realización del sistema digital cuya ecuación en diferencias es:
𝑦( 𝑛) = 𝑥( 𝑛) − √2𝑟(𝑛 − 1) + 𝑥(𝑛 − 2) + 𝑦(𝑛 − 1) − 1/4𝑦(𝑛 − 2) − 1/4𝑦(𝑛 − 3) +
1/8𝑦(𝑛 − 4)
Según las estructuras directa II y cascada. Observe y comente las diferencias.
Resolución
De la ecuación en diferencias del sistema podemos obtener que la función de transferencia
a realizar es:
𝐻( 𝑧) =
1 − √2𝑧−1 + 𝑧−2
1 − 𝑧−1 +
1
4𝑧−2 +
1
4𝑧−3 −
1
8𝑧−4
=
1
1 − 1/4𝑧−2 ∗
1 − √2𝑧−1 + 𝑧−2
1 − 𝑧−1 + 1/2𝑧−2
La estructura de la Figura 4.52(a) es una implementación en forma directa II y la estructura
Figura 4.52 (b) es una implementación en cascada. De la Expresión (4.28) se desprende que
los coeficientes son 𝑎1 = −1, 𝑎2 =
1
4
, 𝑎3 =
1
4
, 𝑎4 = −
1
8
, 𝑏0 = 1, 𝑏1 = −√2, 𝑏2 = 1 para la
estructura IIR directa II y 𝑑1 = −1, 𝑑2 =
1
2
, 𝑒0 = 1, 𝑒1 = −√2, 𝑒2 = 1, 𝑐2 = −
1
4
para la
estructura en cascada.
Ambos diagramas de bloques consideran una realización o estructura para la realización
del sistema. Cada realización o estructura define un procedimiento computacional o
algoritmo para implementar el sistema. Si el sistema va a ser implementado en software, la
conversión en un programa que funcione en un ordenador. La realización en MATLAB de la
forma directa de la Figura 4.52(a) sería:
2. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Figura 4.52 (a) Realización en forma directa y (b) realización en cascada.
tmp1= -a1*u1(n)-a2*u2(n)-a3*u3(n)-a4*u4(n);
tmp2= b1*u1(n)+b2*u2(n);
y(n)= ( tmp1+x(n) )*b0 + tmp2;
Donde u1(n) a u4(n) describen las salidas de los bloques de retardo. Para mayor claridad se
han usado dos variables temporales, tmp1 es el resultado de la suma de los productos
a1*u1(n) a a4*u4(n), mientras que tmp2 es el resultado de la suma de los productos
b1*u1(n) y b2*u2(n).
Por otro lado, la realización de la Figura 4.52(b) sería:
y1(n)=-c2*y1(n-2)+x(n);
tmp1=-d1*w1(n)-d2*w2(n);
tmp2= e1*w1(n)+e2*w2(n);
y(n)=(y1(n)+tmp1)* e0 + tmp2;
Donde, como podemos observar, se ha calculado previamente y1(n), salida de la primera
etapa de la cascada, para ser tomada como entrada de la segunda etapa.
3. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Ambas realizaciones o estructuras equivalen a la misma ecuación en diferencias y, si los
cálculos se realizaran con elementos aritméticos ideales, ambas estructuras darían lugar al
mismo resultado.
Dado que se está realizando el mismo sistema de formas diferentes, surgen diferentes
preguntas como ¿Por qué se considera esta diferenciación? ¿Porque no implementar de
forma directa?, o ¿Cuáles son los beneficios de poder utilizar diferentes realizaciones?
Algunos de los factores importantes que influyen es la complejidad computacional y los
requisitos de memoria. Como podemos observar, la forma en cascada necesita una suma
menos y un producto menos que la estructura directa tipo II, y por lo tanto su realización
finalizará antes. Otras realizaciones presentan menores requisitos de memoria, ya que cada
retardo está implementado por una posición de memoria.
Los factores más importantes que influyen en la elección de una realización específica son
los efectos en los cálculos por la utilización de palabra de longitud finita, como se verá en
el Capítulo 5, ya que la realización de los cálculos por procesadores de punto fijo implica la
aparición de errores aritméticos que se acarrean a la salida, siendo considerables cuando
estos resultados se realimentan y pudiendo incluso llegar a transformar un sistema estable
en inestable.
Existen otras razones para seleccionar estructuras específicas, como la sensibilidad de los
coeficientes, obtener rápidamente una implementación a partir de un determinado
conjunto inicial de datos, etc.
Si bien, los segmentos de código ofrecidos anteriormente sirven para calcular la salida a
partir de la entrada en el momento n(x(n)), los coeficientes y los valores retardados, es
necesario, tras el cálculo la salida, calcular el valor retardado que será usado para el cálculo
de la siguiente salida, es decir, las variables u1(n+1) en la Figura 4.52(a) y w1(n+1) en la
Figura 4.52 (b). Para la implementación en software de la realización de la Figura 4.52(a)
seria:
u1(n+1)=tmp1+x(n);
u2(n+1)=u1(n);
u3(n+1)=u2(n);
u4(n+1)=u3(n);
y para la implementación en software de la realización la Figura 4.52(b) sería:
u1(n+1)= tmp1+y1(n);
u2(n+1)=w1(n);
4. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Vamos a suponer que se pretende obtener la salida del sistema ante la entrada rampa
𝑥( 𝑛) = {1,2,3,4,5,6,7,8}
El sistema se realizaría mediante un bucle. Para cada iteración del bucle se calcula la salida
y los nuevos valores que contendrán los bloques de retardo en la siguiente iteración, que
es el estado del sistema, y serán utilizados para el cálculo de la siguiente salida. Para un
sistema L.I.T. causal se supone 𝑦(𝑛) = 0 para 𝑛 < 0, por lo que para el cálculo de 𝑦(0)
todos los bloques de retardo poseen valor a cero.
Antes de pasar al código en MATLAB, cabe remarcar que existe una objeción en la
programación de esto en MATLAB; este entorno no permite utilizar el índice 0 (al contrario
que C), por lo que se asumirá que 𝑦(𝑛) = 0, 𝑥(𝑛) = 0 para 𝑛 ≤ 0. Así, la realización de la
forma directa II queda:
x=[1 2 3 4 5 6 7 8];
u1(1)=0;
u2(1)=0;
u3(1)=0;
u4(1) =0;
for n=1:10
tmp1=-a1*u1(n)-a2*u2(n)-a3*u3(n)-a4*u4(n);
tmp2= b1*u1(n)+b2*u2(n);
y(n)=(tmp1+x(n))*b0 + tmp2;
u1(n+1)=tmp1+x(n);
u2(n+1)=u1(n);
u3(n+1)=u2(n);
u4(n+1)=u3(n);
end
plot(y)
5. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Vemos que las partes en que podemos dividir la realización son:
A. Inicialmente se define la entrada, vector x como rampa en este caso.
B. Se inicializan las variables que representan los bloques de retardo de u1 a u4.
C. El bucle itera 10 veces, una para cada uno de los elementos de la entrada,
calculando la salida del sistema para cada iteración.
D. Finalmente se realiza la visualización de los datos de salida.
El código completo para la realización de Figura 4.52(b) se obtiene mediante un
procedimiento análogo.
4.57. Programe la realización del sistema que se muestra en la Figura 4.53 a partir
de su ecuación en diferencias
Figura 4.53 Diagrama de bloques del sistema propuesto.
Resolución
Para obtener la ecuación en diferencias del sistema, partimos del siguiente sistema de
ecuaciones en diferencias:
6. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
𝑣( 𝑛 + 1) = 𝑥( 𝑛) +
1
2
𝑣( 𝑛)
𝑦( 𝑛) = 2𝑥( 𝑛) + 3( 𝑥( 𝑛) +
1
2
𝑣( 𝑛)) + 4𝑣(𝑛)
Pasando ambas al dominio Z, podemos obtener la función de transferencia
𝐻( 𝑧) =
𝑌(𝑧)
𝑋(𝑧)
=
5 + 3𝑧−1
1 −
1
2
𝑧−1
por lo que la ecuación en diferencias del sistema es:
𝑦( 𝑛) = 5𝑥( 𝑛) + 3𝑥( 𝑛 − 1) +
1
2
𝑦( 𝑛 − 1)
Ésta se puede usar para realizar el sistema sin utilizar variables internas, únicamente
mediante entradas y salidas presentes y anteriores. En este caso, la programación de la
realización es parecida a la del códigodel Ejercicio 4.56. Consideraremos la entrada 𝑥(𝑛) =
2 ∗ 𝑛. Cabe recordar la limitación de MATLAB de no poder utilizar índices nulos en los
vectores.
x=[2 4 6 8 10 12 14 16 18 20];
y(1)=5*x(1);
for n=2:10
y(n)=5*x(n)-2*x(n-1)+0.5*y(n-1);
end
plot(y)
7. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Como vemos, el código resulta sencillo. Sin embargo, existen sensibles diferencias con
respecto al ejercicio anterior ya que no se utilizan los valores de los bloques de retardo, es
decir, el estado del sistema. La estructura de la programación es:
1. Definición del vector que contiene la entrada.
2. Inicialización.
3. Iteración para obtener salidas mediante un bucle.
4. Visualización de la salida.
Comentaremos a continuación ciertas peculiaridades de interés:
En la inicialización se define 𝒚(𝟏) = 𝟓 ∗ 𝒙(𝟏), es decir, la salida para 𝒏 = 𝟏. El bucle
se utiliza para calcular las salidas y (2) a y (10). Esto se hace así para evitar errores
en MATLAB. Si eliminamos la línea de inicialización y forzamos el cálculo de y(1) en
el bucle, en la primera iteración tendríamos y(1)=5*x(1)-2*x(0)+0.5*y(0). Nótese que
la definición de x(0) e y(0) no está permitida en MATLAB (índice nulo), por lo que se
produciría un error. Por ello, como conocemos las condiciones iniciales de entrada
y salida, forzamos a x(0)=y(0)=0 y calculamos y(1) antes del bucle como y(1)=5*x(1).
Nótese que la primera iteración del bucle calcula y(2) mediante y(2)=5*x(2)-2*x
(1)+0.5*y(1). En general, para orden N, tendríamos que calcular inicialmente antes
del bucle las salidas desde y(1) hasta y(N) para evitar errores con los índices.
Cabe destacar que realizar directamente el sistema a partir de la ecuación en
diferencias equivale a una realización en forma directa. Este tipo de realización es
8. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
permisible en un entorno como MATLAB. con gran cantidad de memoria disponible
y aritmética de gran precisión. Sin embargo, debe evitarse, en general, en
realizaciones reales mediante procesadores con aritmética en punto fija.
4.58 Dado el sistema IIR representado por la función de transferencia:
𝐻( 𝑧) =
2 + 12𝑧−1 + 24𝑧−2 + 34𝑧−3 + 31𝑧−4 + 14𝑧−5 + 4𝑧−6
16 + 20𝑧−1 + 24𝑧−2 + 24𝑧−3 + 14𝑧−4 + 5𝑧−5 + 𝑧−6
Obtenga, mediante el entorno MATLAB:
a) Los coeficientes para la realización en cascada de H(z).
b) Los coeficientes de la realización paralela de H(z).
c) Los coeficientes de reflexión [Ki] y de escalera (vi) de la realización en celosía
escalonada.
Resolución
La función de transferencia dada proporciona los coeficientes para la realización en forma
directa. Mediante MATLAB podemos obtener fácilmente los coeficientes para otras
realizaciones.
a) Para realizar el sistema en cascada se ha de representar la función de transferencia
H(z) factorizada, formada generalmente por etapas de segundo orden. Para ello
utilizamos el siguiente código:
num=[2 12 24 34 31 14 4];
den=[16 20 24 24 14 5 1];
[z,p,k]=tf2zp(num,den);
[sos,G]=zp2sos(z,p,k);
La función zp2sos agrupa los polos y los ceros complejos conjugados para crear las
secciones de segundo orden. Cada fila de la matriz sos resultante representa una etapa de
la cascada. Por defecto, la función zp2sos ordena las secciones por orden ascendente de la
distancia de los polos al cero. Es decir, la primera fila corresponde a aquella etapa que
contiene los polos más cercanos al origen. Así,
sos = [
0.13 4.87 4.20
1.00 0.57 0.28
1.00 0.57 1.68
1.00 0.39 0.20
1.00 1.12 0.34
1.00 −0.26 0.92
]
9. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
donde los elementos se han redondeado a dos cifras decimales. Además, mediante el uso
del resto de parámetros disponibles, zpsos permite ordenar las secciones para minimizar la
posibilidad de overflow en la realización, minimizar el ruido de redondeo a la salida, etc.
Los coeficientes de la realización son los de la siguiente representación factorizada de
𝑯(𝒛):
𝐻( 𝑧) =
0.13 + 4.87𝑧−1 + 4.20𝑧−2
1 + 0.39𝑧−1 + 0.20𝑧−2 ∗
1 + 0.57𝑧−1 + 0.28𝑧−2
1 + 1.12𝑧−1 + 0.34𝑧−2 ∗
1 + 0.57𝑧−1 + 1.68𝑧−2
1 − 0.26𝑧−1 + 0.92𝑧−2
b) Para obtener los coeficientes de la realización en paralelo, utilizamos la función
residuez, que proporciona los residuos, polos y términos directos de la expansión
en fracciones parciales. El código que se debe utilizar es sencillamente:
[r,p,k]-residuez(num,den);
Esta sentencia asigna al vector r los residuos, al vector p los polos y ni k los términos
directos.
La función de transferencia H(z), desarrollada en fracciones parciales, queda:
𝑟(1) = −0.3712 + 0.1173𝑗 𝑝(1) = 0.1321 + 0.9526𝑗
𝑟(2) = −0.9902 + 2.2059𝑗 𝑝(2) = −0.5623 + 0.2393𝑗
𝑟(3) = −0.5761 + 0.1071𝑗 𝑝(3) = −0.1948 + 0.4043𝑗
𝐻( 𝑧) = 4 +
𝑟(1)
1 − 𝑝(1) 𝑧−1 +
𝑟(1)∗
1 − 𝑟(1)∗ 𝑧−1 +
𝑟(2)
1 − 𝑝(2) 𝑧−1 +
𝑟(2)∗
1 − 𝑟(2)∗ 𝑧−1 +
𝑟(3)
1 − 𝑝(3) 𝑧−1
+
𝑟(3)∗
1 − 𝑟(3)∗ 𝑧−1
Podemos, por otro lado, utilizar la función residuez en la forma inversa, [𝑛𝑢𝑚, 𝑑𝑒𝑛] =
𝑟𝑒𝑠𝑖𝑑𝑢𝑒𝑧(𝑟, 𝑝, 𝑘), para convertir de nuevo la expansión en fracciones parciales a la forma
num/den.
Para eliminar los coeficientes complejos agruparemos en etapas de segundo orden las
fracciones de polos complejos conjugados. Para realizar las sumas de dichas fracciones,
podemos hacerlo, como hemos descrito, mediante la función residuez.
[n1,d1]=residuez(r(1:2),p(1:2),0);
[n2,d2]=residuez(r(3:4),p(3:4),0);
[n3,d3]=residuez(r(5:6),p(5:6),0);
10. PROCESAMIENTO DIGITAL DE SEÑALES CARRERA DE ING ENELECTRÓNICA E INSTRUMENTACIÓN
Así, obtenemos finalmente los coeficientes de la realización en paralelo con:
𝐻( 𝑧) = 4 +
−0.74 − 0.13𝑧−1
1 − 0.26𝑧−1 + 0.92𝑧−2 +
−1.98 − 1.45𝑧−1
1 − 1.12𝑧−1 + 0.34𝑧−2 +
−1.15 − 0.13𝑧−1
1 + 0.39𝑧−1 + 0.20𝑧−2
Donde los coeficientes han sido redondeados a dos cifras decimales.
c) Finalmente, los coeficientes para la realización en celosía escalonada se obtienen
directamente mediante la función tf2latc de la siguiente manera:
[𝒌, 𝒗] = 𝒕𝒇𝟐𝟏𝒂𝒕𝒄(𝒏𝒖𝒎,𝒅𝒆𝒏);
Ésta proporciona los coeficientes de reflexión:
𝐾1 = 0,1901, 𝐾2 = 0,5537,
𝐾3 = 0,7591, 𝐾4 = 0,5226,
𝐾5 = 0,2353, 𝐾6 = 0,0625
y los coeficientes de escalera:
𝑉0 = −0,4518, 𝑉1 = −4,6006, 𝑉2 = −4,1447, 𝑉3 = −0,2503,
𝑉4 = 6.9412, 𝑉5 = 4,5, 𝑉6 = 2.