Electrónica Industrial
Transformada Z inversa
Transformada Z inversa
Se debe observar que a partir de la transformada inversa sólo se
obtiene la secuencia de tiempo en los instantes de muestreo. Por lo
tanto, la transformada z inversa de X(z) da como resultado una
única x(kT), pero no una única x(t), ya que no dice nada de los
valores de x(t) en los instantes de tiempo no muestreados. Esto
significa que puede haber distintas funciones de tiempo xi(t) con
la misma x(kT) .
Dos funciones en tiempo continuo diferentes
que tienen los mismos valores en
t=0,T,2T,3T,4T,…
x1(k) = 0
x2(k) = sin(k π)
Transformada Z inversa
Permite volver a la representación en el dominio temporal.
{xk } Z 1{ X ( z )}
La recuperación de la señal continua original a partir de las
muestras no es posible con total exactitud.
Si el periodo de muestreo ha sido elegido adecuadamente, la
incertidumbre es menor.
Existen diferentes métodos para calcular la transformada z inversa.
Un método obvio es referirse a una tabla de transformadas z, pero
es laborioso (si se utiliza una tabla de transformadas z no muy
extensa, es necesario expresar una transformada z complicada
como una suma de transformadas z más sencillas).
Métodos
– División directa ó larga:
Cuando F(z) es un cociente de polinomios reales en z, puede
realizarse una “división larga”. Los coeficientes de dicha división
son los valores de la secuencia temporal {fk}. Se expresa la función
X(z) en potencias de z-1, se ordenan numerador y denominador de
menor a mayor potencia y se divide.
z 1 z z 2
F ( z) 2 2
( z 1) ( z 0.1) z 1.1z 0.1 z
1
Se debe reescribir la
z función como un
F ( z)
1 1.1z 1 0.1z 2 cociente de polinomios
en potencias crecientes
de z-1.
z 1 1 1.1z 1 0.1z 2
Este método se
z 1 1.1z 2 0.1z 3 1z 1
puede llevar a cabo
1.1z 2 0.1z 3 mediante cálculos
manuales si solo se
1.1z 2 0.1z 3 1 1.1z 1 0.1z 2 desean los
1.1z 2 1.21z 3 0.11 z 4 1.1z 2 primeros términos.
1.11 z 3 0.11 z 4
1.11 z 3 0.11 z 4 1 1.1z 1 0.1z 2
1.11 z 3 1.221z 4 0.111 z 5 1.11 z 3
1.111 z 4 0.111 z 5
F(z) = 1z-1 +1.1z-2 +1.11z-3 + 1.111z-4 +…
f(kT) = (0, 1, 1.1, 1.11, 1.111, …)
Ejemplo
1
F ( z)
1 az 1
F(z) = 1+az-1 +a2z-2 +a3z-3 +…
f(kT) = (1, a, a2, a3, …)
Ejemplo
Encuentre x(k) para k= 0,
1, 2 , 3, 4 cuando X(z) esta
dado por:
X(z) se escribe como un
cociente de potencias
crecientes de z-1.
F(z) = 0+10z-1 +17z-2 +18.4z-3 +18.68z-4 +… f(kT) = (0, 10, 17, 18.4, 18.68, …)
Métodos
– Método computacional: enfoque de Matlab
En este método, la transformada z inversa se obtiene utilizando la
función delta de Kronecker δ0(k T) , donde
1 k 0
0 kT
0 k 0
Suponiendo que x(k) , la entrada al sistema G(z) es la entrada
Delta de Kronecker, la transformada z de la entrada delta de
Kronecker es X(z) = 1.
Los polinomios de G(z) se deben escribir en potencias
decrecientes de z.
Ejemplo
x = [1 zeros(1,40)]; % para k = 40 muestras
num = [0 5 10]; % coeficientes del numerador
den = [1 -1 0.16]; % coeficientes del denominador
y = filter(num, den, x) % obtención de las 40 muestras
k = 0:40;
plot(k, y,'ro',k, y,'-') 5 z 10
F ( z) 2
xlabel('k') z z 0.16 ejercicio2.m
ylabel('y(k)')
Los 40 resultados obtenidos de x(0) hasta x(40) son:
0 5.0000 15.0000 14.2000 11.8000 9.5280 7.6400
6.1155 4.8931 3.9146 3.1317 2.5054 2.0043 1.6035
1.2828 1.0262 0.8210 0.6568 0.5254 0.4203 0.3363
0.2690 0.2152 0.1722 0.1377 0.1102 0.0882 0.0705
0.0564 0.0451 0.0361 0.0289 0.0231 0.0185 0.0148
0.0118 0.0095 0.0076 0.0061 0.0048 0.0039
Ejemplo
Y=filter(num,den,x) es un filtro digital que filtra los datos del
vector x (delta de kronecker) con el filtro descripto por los
vectores num y den creando el dato filtrado Y. Equivale a realizar
la convolución entre ambos obteniendo la respuesta Y.
Ejemplo
0.4673z 1 0.3393z 2 z 2
F ( z) 1 2
2
1 1.5327 z 0.6607 z z
ejercicio3.m
0.4673z 0.3393
F ( z)
z 2 1.5327 z 0.6607
num=[0 0.4673 -0.3393]; %numerador
den=[1 -1.5327 0.6607]; %denominador
dk=[1 zeros(1,50)]; %delta para 51 valores
x=filter(num,den,dk) % entrega la secuencia de 51 valores
k=0:50; % un vector de 0 hasta 50 en pasos de 1
figure(1); plot(k,x); % plotea el gráfico en pantalla
figure(2); stem(k,x);
Métodos
– Método computacional: enfoque de la ecuación en
diferencias
G(z) = X(z) = ( .4673 z − .3393 )
U(z) (z2 − 1.5327 z + .6607)
Dicha ecuación se puede escribir como
(z2 − 1.5327 z + .6607 ) X(z) = (.4673 z − .3393 ) U(z )
Esta ecuación se puede convertir en una ecuación en diferencias
como sigue:
x(k + 2) − 1.5327 x(k + 1) + .6607 x(k) = .4673 u(k + 1) − .3393 u(k)
Donde u(0) = 1 y u(k) = 0 para k ≠ 0, x(k) = 0 para k < 0. [u(k) es la
entrada Delta de Kronecker]. Encontrar la transformada z inversa se
convierte ahora en el problema de resolver la ecuación en diferencias
para u(k) .
Para hallar x(0) sustituimos k=-2 en la ecuación de diferencias
x(0) − 1.5327 x(-1) + .6607 x(-2) = .4673 u(-1) − .3393 u(-2)
0 0 0 0
x(0) =0
Para hallar x(1) sustituimos k=-1 en la ecuación de diferencias
x(1) − 1.5327 x(0) + .6607 x(-1) = .4673 u(0) − .3393 u(-1)
0 0 1 0
x(1) =0.4673
La ecuación se puede resolver fácilmente a mano o mediante
algún lenguaje de programación (lazo recursivo).
Ejemplo
Ejemplo
Ejemplo
Existen varias formas para implementar la ecuación de diferencias de un
controlador usando un computador digital; en todo caso, la ecuación se
implementa usando memorias para almacenar los valores anteriores de las
muestras de entrada y salida y usando convertidores analógico a digital para
tomar las muestras e(k) a intervalos regulares dados por el periodo T; y
convertidores de digital a analógico para la salida m(k).
Existen varios problemas en la implementación de la ecuación de
diferencias, se enumeran algunos de ellos a continuación:
• El ruido de cuantización debido a la cuantización de las muestras
• El ruido de redondeo debido al ancho de la palabra limitado en las
operaciones de cálculo (error de redondeo)
• Se requiere una potencia de cálculo lo suficientemente grande como para
que el tiempo requerido para el cálculo desde la toma de la muestra e(k)
hasta la salida de m(k) sea menor al periodo T.
Ejemplo
Para evitar problemas con el ruido de cuantización se debe de usar una
resolución del convertidor A/D lo suficientemente grande.
Para reducir los problemas con el redondeo se debe de realizar los cálculos
intermedios con una precisión mayor a la del resultado esperado. Esto es
por ejemplo, trabajar con doce bits y al final redondear a ocho bits el
resultado.
Finalmente, para lograr realizar los cálculos en el tiempo establecido se
debe de escoger un tiempo de muestreo adecuado a la dinámica del sistema
y lo suficientemente grande como para acomodar todos los cálculos
necesarios entre dos muestras consecutivas. Para lograr además que la
salida m(k) esté lista en el tiempo establecido.
Ejemplo
Inicio: Bucle:
m(k-1) = 0; in(e(k)); leo el dato por A/D
m(k-2) = 0; m(k) = - k1* m(k-1) - k2* m(k-2) +
e(k-1) = 0; kc*e(k-1) + k3*e(k-2);
e(k-2) = 0; out(m(k)); escribo el dato por D/A
k1 = a+b; m(k-2) = m(k-1);
k2 = a*b; m(k-1) = m(k);
k3 = c*kc; e(k-2) = e(k-1);
time = T; e(k-1) = e(k);
EnableTimer(time); end;
EnableInterruptTimer(proc);
Métodos
– Descomposición en fracciones simples
Dado que las expresiones de las transformadas Z elementales poseen
siempre una z en el numerador, se realiza la descomposición de
F(z)/z.
Cada fracción resultante se multiplica por z y se reemplaza por su
equivalente temporal.
La idea es que todos los términos de la expansión se puedan
reconocer fácilmente en la tabla de pares de transformadas z.
Es idéntico al que se utiliza en la transformada de Laplace.
Considérese una q( z ) b0 z m b1 z m1 .......... bm 1 z bm
F (z )
función p ( z ) a0 z n a1 z n 1 ........... an 1 z an
Factorizando el b0 z m b1 z m 1 .......... bm 1 z bm q( z )
F ( z) n
denominador ( z p1 )( z p2 )..........( z pn ) ( z pi )
i 1
Cuando todos los polos en la ecuación son diferentes y hay por lo
menos un cero en el origen (bm=0) consiste en dividir ambos
miembros por z y luego expandir en fracciones parciales.
El coeficiente ai se puede determinar multiplicando ambos
miembros por (z-pi) y haciendo z=pi, esto hará que todos los
términos del segundo miembro sean cero excepto el término ai.
Valido para polos simples
X(z) = ( a1 ) + ( a2 ) + … + ( an ) ai = (z – pi) . X(z)
z (z – p1) (z – p2) (z – pn) z z=pi
Si F(z) involucra un polo múltiple, por ejemplo un polo doble
en z=p1 y no tiene más polos entonces:
X(z) = ( c1 ) + ( c2 )
z (z – p1)² (z – p1)
Valido para polos múltiples
c1 = (z – p1)² . X(z)
z z=pi
c2 = d (z – p1)² . X(z)
dz z z=pi
Ejemplo
Tomando como periodo de muestreo T=10, obtener la transformada
inversa de:
1 Multiplicando ambos
F ( z)
( z 1)( z 0.1) miembros por z
F ( z) 1 a b c
z z ( z 1)( z 0.1) z z 1 z 0.1
1
a z 10
z ( z 1)( z 0.1) z 0
1 1
b ( z 1)
z 1 0.9
z ( z 1)( z 0. 1)
1 1
c ( z 0.1)
z ( z 1)( z 0.1) z 0.1 0.09
constante escalón
1 z 10 z exponencial
F ( z ) 10
0.9 z 1 0.9 z 0.1
Los dos primeros términos tienen antitransformadas inmediatas.
Para el tercero resulta:
ln 0.1
e aT e a10 0.1 a 0.23
10
La secuencia resultante es
1 10 0.23kT
f (kT ) 10 (kT ) us (kT ) e
0.9 0.9
O simplemente, prescindiendo de T
1 10
f ( k ) 10 (k ) us ( k ) 0.1k
0.9 0.9
Ejemplo
Multiplicando ambos
Obtener la transformada inversa de: miembros por z3
Los residuos
Ejemplo
Multiplicamos ambos lados por z
La transformada z inversa por tabla:
Por lo tanto, la secuencia en tiempo
discreto
Ejemplo
Obtener la transformada inversa de:
Dividiendo ambos miembros por z
Los residuos
Ejemplo
Multiplicamos ambos lados por z
La transformada z inversa por tabla:
Por lo tanto, la secuencia en tiempo
discreto
Métodos
– Descomposición en fracciones simples: método matlab
La solución por el método de expansión en fracciones parciales
cuando la función tiene polos simples es fácil pero aumenta el
grado de complejidad cuando no lo es. num y den son
En el Matlab existe la siguiente orden: polinomios en
potencias
[r, p, k] = residuez(num,den) crecientes de z-1.
Encuentra los valores del vector r (residuos), del vector p (polos)
y del término independiente k según la siguiente expresión:
r y p son vectores columnas. k contiene los términos directos en
un vector fila.
El número de polos es n=length(den)-1.
Si lenght(den) >lenght(num) devuelve un vector k vacio.
Si invocamos la orden:
[num,den] = residuez(r, p, k)
Convierte la expansión a la forma original num/den.
Ejemplo
Obtener la transformada Z Inversa de:
5 z 3 + 26 z 2 + 44 z + 29
X(z) = ------------------------------------ num = [5 26 44 29];
z 3 + 6 z 2 + 11 z + 6 den = [1 6 11 6];
[r, p, k] = residuez(num,den)
% Los resultados son:
Pasar a potencias crecientes de z-1 : r = [0.6667 2.5 -3], p = [-3 -2 -1],
k = 4.83
5 z 0 + 26 z -1 + 44 z-2 + 29 z-3
X(z) = ------------------------------------
z 0 + 6 z -1 + 11 z-2 + 6 z-3
Por tanto, las fracciones parciales quedan :
0.6667 2.5 3
F ( z) 1
1
1
4.83
1 3z 1 2z 1 z
x(k) = 0.6667(-3) k +2.5(-2)k -3(-1)k + 4.83δk
donde δk es el delta kronecker (delta de Dirac en control
continuo) cuya transformada Z es igual a 1.
xz=r(1)/(1-p(1)*z^-1)+r(2)/(1-p(2)*z^-1)+r(3)/(1-p(3)*z^-1)+k
pretty(xz)
xz1=iztrans(xz)
ejercicio4.m
pretty(xz1)