Sei sulla pagina 1di 15

Transformada Z.

 
Para  el  cálculo  de  la  transformada  Z,  para  obtener  una  expresión  en  el  dominio  z  de  una 
secuencia de datos discretos, se realiza por: 

Al utilizar Matlab, esta transformación se obtiene mediante el comando ztrans. Al igual que en 
la  transformación  de  Laplace,  la  variable  z  se  debe  definirse  como  símbolo  para  obtener  su 
transformada. 

escalon_z=sym('1') 

ztrans(escalon_z) %obtención de la transformadad Z 

syms n T 

rampa_z=n*T  

ztrans(rampa_z) %obtención de la transformada Z 

x1=5^n*n*T  %creación de la secuencia discreta  

X1=ztrans(x1) %obtención de la transformada z 

pretty(X1) 

El cálculo de la transformada inversa, que permite obtener la secuencia discreta a partir de la 
expresión racional en Z, se realiza mediante el comando iztrans. 

>> syms z 

>> Y5=z/(z‐0.5)/(z‐0.8) 

>> pretty(Y5) 

 >> y5=iztrans(Y5) %obtención de la transformada Z inversa 

>> pretty(y5)  

Por  ejemplo.  Definir  y  representar  la  secuencia  discreta  de  la  señal  seno  amortiguado, 
empleando un tiempo de muestreo T de 0.5 segundos. 

T=0.5; %definición tiempo de muestreo 

n=0:T:20; % secuancia discreta n 

yn=sin(n*T).*exp(‐n*T); %definción de la señal 

plot(n,yn,'*') 
 xlabel(' Amplitud') 

title('función sen') 

grid 

Por  ejemplo  Obtener    la  transformada  Z  de  la  función  discreta  seno  amortiguado  dada  a 
continuación: 

syms n T  %definición de variables simbólicas 

yn=sin(n*T).*exp(‐n*T); % definición de la función  

yn=ztrans(yn); % cálculo de la transformada 

pretty(yn) 

Para    crear  funciones  de  transferencia  de  sistemas  discretos,  hay  que  tener  en  cuenta  el 
tiempo  de  muestreo  T  empleado  en  la  conversión  de  la  señal  continua  en  una  secuencia 
discreta; para ello bastará con añadir el tiempo de muestreo T al comando tf o zpk. En el caso 
de un sistema discreto con el tiempo de muestreo indeterminado, se deberá asignar un valor 
de T=1. 

>> T=0.1; %tiempo de muestreo de valor 0.1 segundos 

>> G1z=tf(2,[1 2],T) %construcción de G1(z) 

>> G2z=zpk([‐1‐1],[0 3],10,0.5)  %construcción de G1(z) con T=0.5 

 
Conversión entre sistemas continuos y discretos 
La  conversión  de  sistemas  continuos  a  discretos  se  realiza  con  el  comando  c2d.  A  este 
comando se le pasan como argumentos la función  de transferencia  del sistema continuo, el 
tiempo  de  muestreo  T  y  el  método  de  conversión  a  emplear.  Algunos  de  los  métodos  de 
conversión implementados en comandos son: 

a) Bloqueador de orden cero(´zoh´) 

La conversión se obtiene mediante la ecuación: 

1  

Y que corresponde con el diagrama de bloques mostrado a continuación: 

 
b) Bloqueador de orden uno (´foh´) 

La conversión se obtiene mediante la ecuación: 

1
1  

Y que corresponde con el diagrama de bloques mostrados a continuación: 

c) También se tiene el método Tustin(‘tustin’) 
La conversión se realiza mediante el cambio de variable. 
 

 
 
d) Equivalencia polo‐cero(‘matched’) 
La conversión se realiza cambiando la posición del polo en z mediante la relación: 

 
 

 
Comente los siguientes resultados. 

>> G6s=tf(9,[1 1.5 9]) 

>> G6z1=c2d(G6s,T,'zoh') %tiempo de muestreo T=0.2 segundos 

>> G6z2=c2d(G6s,T,'foh') %tiempo de muestreo T=0.2 segundos 

>> G6z3=c2d(G6s,T,'tustin') %tiempo de muestreo T=0.2 segundos 

>> G6z3=c2d(G6s,T,'matched') ) %tiempo de muestreo T=0.2 segundos 

La conversión de sistemas discretos a continuos se realiza con d2c .A este comando se le pasa 
la  función  de  transferencia  discreta  y  el  método  de  conversión  deseado.  Los  métodos 
implementados son el bloqueador de orden cero, tustin y equivalencia polo‐cero. 

>> G6z1; 

>> G6s=d2c(G6z1,'zoh') %conversión al sistema continuo original 

Para obtener la nueva función de transferencia de un sistema discreto  cuando se varía el 
tiempo de muestreo, se empleará el comando d2d. A este comando se le pasa la función de 
transferencia discreta y el nuevo tiempo de muestreo. 

>> G6z1; 

>> G6z1=d2d(G6s,1.2,'zoh') % discretiza con un Nuevo T=1.2 

1‐Por ejemplo , Matlab nos puede devolver el resultado dado por: 

 
0.56 z 0.145 z 0.5
; ;H z 2  
0.1 0.8

Obtener la función de transferencia equivalente. 

Usar por ejemplo >> Rz=zpk([0.145],[0],0.56,0.1) y Mz=feedback(Rz*Gz,Hz). 

 
2.‐ Obtener la función de transferencia discreta del sistema híbrido mostrado en la figura, para 
un  tiempo  de  muestreo  de  T=0.25  seg;  el  bloqueador  es  de  orden  0  y  la  función  de 
transferencia del sistema es continuo. 

s 1
 
4

Sol. 

T=9.25; 

G=zpk([‐1],[‐4 4],1); 

BOG=c2d(G,T, 'zoh'); 

BOG=tf(BOG) 

3.‐Para  el  sistema  discreto,  utilizar  el  comando  rlocus  para  determinar  el  límite  de  la 
estabilidad,  en  donde  se  pide  el  valor  máximo  de  K  que  se  puede  añadir  al  sistema  sin 
inestabilizarlo (Tiempo de muestreo igual a 0.1 segundos). 

Sol. 

>> Gz=zpk([‐0.5],[0.1 0.8],1,0.1); 

>> Rz=zpk([0.145 ],[0],0.56,0.1); 

>> rlocus(Rz*Gz*2) 

>> axis([‐1.5 1.2 ‐1.2 1.2]) 
La intersección con el círculo unidad de las ramas que arrancan en los polos z=0.1 y z=0, se 
produce en el punto ‐0.6547 + ‐0.7599i, en el cual el valor de K es aproximadamente 1.83 (ver 
figura) 

La comprobación de que un valor de K igual a 1.83 está en el límite de la estabilidad se puede 
realizar obteniendo la respuesta del sistema realimentado o consultando la nueva posición de 
los polos en lazo cerrado. 

>> p_nuevo=pole(feedback(1.84*Rz*Gz,2))  %nueva posición de los polos  

p_nuevo = 

   0.1485           

  ‐0.6547 + 0.7599i 

  ‐0.6547 ‐ 0.7599i 

>> abs(p_nuevo(2)) 

ans = 

    1.0030 

>> step(feedback(1.84*Rz*Gz,2),1200)   
 

Por lo tanto al añadir un valor de K=1.84, la respuesta es inestable y el módulo de los polos 
complejos conjugados indican que su posición está fuera del circulo unidad. 

 
4.‐En el sistema de la figura, en el que el tiempo de muestreo es de 1 segundo y la función de 
transferencia continua es: 

2
 
1

Se pide. 

a) Obtener el valor final de la salida en régimen permanente. 
b) Obtener los polos de lazo cerrado. 
c) Representar la respuesta al escalón unitario. 
d) Obtener la secuencia de salida si la entrada se aplica la secuencia. 
{Xx}={ 0 1 0.5 0.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  
 

Sol.‐ 

>> T=1;   %tiempo de muestreo 

>> G=tf(2,[1 1 0]); %definición del sistema continuo 

>> BOG=c2d(G,T,'zoh');  %discretizacion de G(s) 

>> Mz=feedback(BOG,1) %obtención del sistema realimentado 

>> y=dcgain(Mz) % valor de la salida en régimen permanente (respuesta a) 

>> polos_z=pole(Mz)  %polos del sistema realimentado (respuesta b) 

polos_z = 

   0.3161 + 0.8925i 

   0.3161 ‐ 0.8925i 

>> step(Mz)  %respuesta al escalón unitario 

>> xlabel('k*T') 

>> ylabel('Amplitud') 
>> title('respuesta escalón unitario') 

(Respuesta c) 

>> [nz dz]=tfdata(Mz,'V'); % numerador/denominador de Mz 

>> k=0:19; % índice k 

>> xk=[ 0 1 0.5 0.1 zeros(1,16)]; %secuencia de xk 

>> yk=filter(nz,dz,xk) %secuencia yk 

yk = 

  Columns 1 through 16 

         0         0    0.7358    1.3614    0.5389   ‐0.8268   ‐1.0057    0.1054    0.9681    0.5175   ‐0.5407   
‐0.8056   ‐0.0246    0.7066    0.4687   ‐0.3371 

  Columns 17 through 20 

   ‐0.6332   ‐0.0981    0.5056    0.4075 

>> stem(k,yk) %representación de la salida yk 
 

5.‐  Analizar  la  estabilidad  del  sistema  discreto  de  la  figura  (tiempo  de  muestreo 
indeterminado). 

>> Gz=tf([1 0.8],[1 0  0.25],‐1); % definición bloque directo 

>> Hz=tf(1,[1 0.3],‐1); % definición bloque realimentado 

>> rlocus(Gz*Hz) % obtención del lugar geométrico de las raices 

>> xlabel('Eje real') 

>> ylabel('eje imaginario') 

>> title('Lugar de las raices') 

>> axis([‐1.5 1.5 ‐1.5 1.5]) %escalado de ejes 
 

A la vista del lugar geométrico se observa que, con un valor aproximado de K igual a 0.594, el 
sistema realimentado sitúa dos polos sobre el círculo unidad, por lo tanto será inestable. En 
esta situación, habría que escoger una K inferior para que todos sus polos quedaran dentro del 
circulo unidad. 

>> Mz=feedback(Gz,Hz); %sistema realimentado 

>> polos=pole(Mz)  %comprobación estabilidad 

polos = 

   0.1543 + 1.1891i            %dos polos inestables 

   0.1543 ‐ 1.1891i 

  ‐0.6086           

>> abs(polos)   %comprobación módulos mayor igual a 1 

ans = 

    1.1991        %comprobación módulos mayor igual a 1 

    1.1991 

    0.6086 

>> figure  % nueva figura 

>> pzmap(Mz) % plano de polos y ceros 

>> axis([‐1.5 1.5 ‐1.5 1.5]) %escalado de ejes 
 

>> figure %nueva figura 

>> step(Mz) % comprobación respuesta inestable. 

>> xlabel('k*T') 

>> ylabel('amplitud') 

>> title('respuesta escalon unitario') 

 
 

 
6.‐ En el sistema realimentado, donde todos sus bloques son discretos, se desea conocer el 
valor de la salida y del error en régimen permanente. La entrada  X(z) es un escalón unitario y 
la perturbación P(z) es también un escalón unitario, pero retrasado 4 instantes de tiempo. 

>> z=tf('z',‐1);                                %z como objeto tf(T indefinido) 

>> Gz=1/((z‐0.15)*(z‐0.3));          %definición del sistema G(z) 

>> Rz=0.1/(z‐0.25);                           %definición del sistema R(z) 

>> M1z=feedback(Rz*Gz,1);         %obtención de M1z con P(z)=0 

>> M2z=feedback(Gz,Rz);              %obtención de M2z con X(z)=0 

>> [y1z k]=step(M1z);                   %respuesta al escalón con índice K 

>> n=length(k);                             %tamaño del vector k 

>> pz=[0 0 0 0 ones(1,n‐4)];        %definición entrada perturbación 

>> y2z=lsim(M2z,pz,k);               respuesta a la perturbación 

>> yz=y1z+y2z;                              %salida global por superposición 

>> yz_f=yz(n)                               %valor de la salida en régimen permanente 

yz_f = 

    1.5559 

>> ez=1‐yz_f 

ez = 

   ‐0.5559                      %valor del error en régimen permanente. 

Potrebbero piacerti anche