Sei sulla pagina 1di 20

Apndice D

FUNCIONES ESPECIALES DE MATLAB


En este apndice se presenta una descripcin detallada de las funciones especiales que fueron
desarrolladas para facilitar la interpretacin de algunos conceptos y como apoyo en la
implementacin de procedimientos especficos presentados en los ejemplos de cada captulo del
libro. La descripcin de cada funcin especial incluye el propsito, sintaxis, algoritmo utilizado
en su implementacin y un ejemplo de aplicacin.

D-1

D-2

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B-3

aproxcero
Propsito:
Anular valores de un arreglo inferiores al valor mnimo especificado.
Sintaxis:
xa = aproxcero(xo,xmin)

Descripcin:
La funcin devuelve en el arreglo xa, los elementos del arreglo xo, cuyo valor absoluto es
inferior a xmin.
Algoritmo:
Esta funcin utiliza la expresin lgica (abs(xo)<=abs(xmin)&xo~=0) para determinar
los ndices del arreglo xo cuyo valor absoluto diferente de cero es menor o igual al valor
especificado xmin, especificado como base para la eliminacin.
Ejemplo de aplicacin:
EDU xk=[1 -2 3 0.0000005 2 -6];
EDU xkm=aproxcero(xk,0.00001)
xkm =
1

-2

-6

D-4

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

escaud
Propsito:
Generar la seal escaln unitario discreta.
Sintaxis:
unT = escaud(nT)

Descripcin:
Esta funcin genera los valores de la seal escaln unitaria muestreada, de acuerdo con la
base de tiempo nT. Sin embargo, si T=1, es posible generar la seal escaln discreta. Es
posible obtener los valores de la seal en adelanto o en atraso, aplicando el
desplazamiento a la base de tiempo.
Algoritmo:
Esta funcin utiliza la expresin lgica (nT<0) para hacer unT=0, para valores negativos
de la base de tiempo y la expresin lgica (nT>=0) para hacer unT=1, para valores
positivos de la base de tiempo, incluyendo nT=0.
Ejemplos de aplicacin:
Para simular la seal escaln discreta:
EDU
EDU
EDU
EDU

n=-2:10; yn=escaud(n);
subplot(2,1,1), stem(n,yn,'filled'), axis([-2,10,0,1.5])
ynm=escaud(n-2);
subplot(2,1,2), stem(n,ynm,'filled'), axis([-2,10,0,1.5])

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B-5

escau
Propsito:
Generar la seal escaln unitario contiuna.
Sintaxis:
ut = escau(t)

Descripcin:
Esta funcin genera los valores de la seal escaln unitaria continua, de acuerdo con la
base de tiempo t. Para lograr un buen efecto visual, es necesario utilizar un intervalo
pequeo en la definicin de la base de tiempo t. Es posible obtener los valores de la seal
en adelanto o en atraso, aplicando el desplazamiento a la base de tiempo.
Algoritmo:
Esta funcin utiliza la expresin lgica (t<0) para hacer ut=0, para valores negativos de
la base de tiempo y la expresin lgica (t>0) para hacer ut=1, para valores positivos de
la base de tiempo.
Ejemplos de aplicacin:
Para simular la seal escaln continua:
EDU t=-2:0.001:5; y=escau(t);
EDU subplot(2,1,1), plot(t,y), axis([-2,5,0,1.5])
EDU t0=-1.2; ym=escau(t-t0);
subplot(2,1,2), plot(t,ym), axis([-2,5,0,1.5])

D-6

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

ftpuls
Propsito:
Calcular la funcin de transferencia equivalente discreta G(z) de un sistema de datos
muestreados, a partir del modelo continuo G(s) , precedido por un retensor de orden-0.
Sintaxis:
[nGz,dGz] = ftpuls(nGs,dGs,T)

Descripcin:
Esta funcin devuelve en numerador nGz y denominador dGz del modelo equivalente
discreto G( z) , de un sistema de datos muestreados, a partir del modelo continuo G(s) ,
incluyendo el efecto del muestreador con perodo T y del retensor de orden-0 (ZOH). El
modelo continuo se define a travs del numerador nGs y del denominador dGs.
Algoritmo:
Esta funcin utiliza el concepto de funcin de transferencia de pulsos (FTP) presentado en
la seccin 10.4 para implementar numricamente la ecuacin (10.55), utilizando
comandos estndar de MATLAB. La funcin asume que G(s) y G(z) corresponden a la
forma estndar (potencias positivas descendentes de s y z respectivamente).
Ejemplos de aplicacin:
Obtener el modelo discreto equivalente del proceso
G( s)

4
s(s 2)

de un sistema de datos muestreados que utiliza un retensor de orden-0 (ZOH) y un


muestreador con T 0.1s .
EDU nGs=4; dGs=poly([0 -2]);
EDU T=0.1; [nGz,dGz]=ftpuls(nGs,dGs,T)
nGz = 0.0187
dGz = 1.0000

0.0175
-1.8187

EDU [z,p,k]=tf2zp(nGz,dGz)

0.8187

z = -0.9355

p = 1.0000
0.8187

% valores para forma factorizada


k = 0.0187

Interpretando el resultado anterior, el modelo discreto equivalente es


G( z)

0.0187z 0.0175
0.0187( z 0.9355)

z 1.8187z 0.8187 ( z 1)( z 0.8187)


2

Ver adems: resimod y hs2hz.

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B-7

hs2hz
Propsito:
Obtener el modelo equivalente discreto H ( z) de un modelo continuo H ( s) , utilizando
una regla de transformacin arbitraria.
Sintaxis:
[nHz,dHz] = hs2hz(nHs,dHs,T,nFz,dFz)

Descripcin:
Esta funcin permite obtener el modelo discreto equivalente H ( z) , de un sistema
continuo H ( s) , utilizando mtodos de transformacin o de discretizacin, en funcin de
una regla de transformacin arbitraria RT (z)
Algoritmo:
Esta funcin implementa numricamente la ecuacin de sntesis de (9.37), utilizando las
expresiones matriciales (9.39) y (9.40).
Ejemplos de aplicacin:
Calcular las muestras de la componente fundamental x0[ n] de una seal discreta y
peridica xp[ n] , si los coeficientes de la serie de Fourier son
c[ k] {1, 0.25 j0.75, 0.5, 0.5, 0.25 j0.75}
EDU ck =
EDU xnm=isftd(ck,N) ; xn=real(xn)

Ver adems: ftpuls y resimod.

D-8

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

impud
Propsito:
Generar la seal escaln unitario continua o discreta.
Sintaxis:
dn = impud(n)

Descripcin:
Esta funcin genera los valores de la seal impulso unitaria discreta (delta de Kronecker),
de acuerdo con la base de tiempo n. Es posible obtener los valores de la seal en adelanto
o en atraso, aplicando el desplazamiento a la base de tiempo.
Algoritmo:
La funcin utiliza la expresin lgica (n~=0) para hacer dn=0, para valores de la base de
tiempo diferentes de cero y la expresin lgica (n>==0) para hacer dn=1, para n=0.
Ejemplos de aplicacin:
Generar las seales [n] y [n 2] en el intervalo n [2,10]
EDU
EDU
EDU
EDU

n=-2:10; yn=impud(n);
subplot(2,1,1), stem(n,yn,'filled'), axis([-2,10,0,1.5])
ynm=impud(n-2);
subplot(2,1,2), stem(n,ynm,'filled'), axis([-2,10,0,1.5])

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B-9

D - 10

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

isftd
Propsito:
Sintetizar la componente fundamental x0[ n] de una seal discreta y peridica xp[ n] con
perodo N, a partir de los coeficientes ck de la serie de Fourier.
Sintaxis:
x0n = isftd(ck,N)

Descripcin:
Esta funcin sintetiza la componente fundamental x0[ n] de una seal discreta y peridica
xp[ n] , con perodo N, partir de los coeficientes de la serie de Fourier ck .En el vector fila
se incluyen los coeficientes de la serie de Fourier y en el escalar N el perodo
fundamental de la seal peridica. Las muestras de x0[ n] son devueltos en el vector fila
x0n. Esta funcin efecta la operacin inversa de la funcin sftd().
ck

Algoritmo:
Esta funcin implementa numricamente la ecuacin de sntesis de (9.37), utilizando las
expresiones matriciales (9.39) y (9.40).
Ejemplos de aplicacin:
Calcular las muestras de la componente fundamental x0[ n] de una seal discreta y
peridica xp[ n] , si los coeficientes de la serie de Fourier son
c[k] {1, 0.25 j0.75, 0.5, 0.5, 0.25 j0.75}
EDU ck =
EDU xnm=isftd(ck,N) ; xn=real(xn)
xn = 2.0000

-1.0000

1.0000

2.0000

Que corresponde a las muestras de la seal discreta utilizada en el ejemplo de aplicacin


de la funcin sftd().

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B - 11

linea
Propsito:
Dibujar una lnea entre dos puntos, controlando su tipo y espesor.
Sintaxis:
dummy = linea(p1,p2,tipoL,anchoL)

Descripcin:
Esta funcin dibuja una lnea entre los puntos p1(x1,y1) y p2(x2,y2), de acuerdo con el
tipo de lnea indicado en la cadena de caracteres tipoL, con las mismas opciones de la
funcin polt(). Opcionalmente se puede indicar en anchoL el ancho de lnea como un
valor numrico en puntos. Si no se indica la funcin asume un ancho de 0.5 puntos.
Algoritmo:
Esta funcin utiliza comandos estndar y la funcin bsica plot() para dibujar la lnea.
El ancho de la lnea se modifica utilizando la funcin bsica set().
Ejemplos de aplicacin:
Dibujar un tringulo cuyos vrtices son (1,1), (5,1) y (3,4).
EDU p1=[1,1]; p2=[5,1]; p3=[3,4];
EDU linea(p1,p2,'b-',1.5); hold on
EDU linea(p2,p3,'b-',1.5); linea(p1,p3,'b-',1.5)

D - 12

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

plotm
Propsito:
Versin mejorada de la funcin plot() para modificar el tipo y de lnea de datos, con la
opcin de incluir ttulo y rtulo de los ejes.
Sintaxis:
plotm(t,x,tipoL)
plotm(t,x,tipoL,anchoL,titulo,Rx,Ry)

Descripcin:
genera la grfica de los valores almacenados en el vector x, respecto
de los valores indicados en la base de tiempo t, utilizando la cadena de caracteres tipoL
para especificar el tipo y color de lnea. En la segunda opcin es posible especificar en
anchoL el ancho de lnea en puntos (por defecto 0.5 puntos), el ttulo de la grfica como
una cadena de caracteres en titulo, el rtulo del eje-x en Rx y el rtulo del eje-y en Ry.
Si se desea omitir un argumento de entrada en cualquiera de las dos opciones, se debe
introducir una cadena vaca ('').
plotm(t,x,tipoL)

Algoritmo:
Esta funcin utiliza comandos estndar de MATLAB y la funcin bsica plot() para
desplegar el grfico. El ancho de la lnea se ajusta utilizando la funcin bsica set().
Ejemplos de aplicacin:
Obtener la grfica de las funciones x(t)=5sen(t) y y(t)=5cos(t).
EDU
EDU
EDU
EDU
EDU
EDU

Tp=2; w=2*pi/Tp; A=5;


t=0:0.001:2*Tp; xt=A*sin(w*t);
subplot(2,1,1), plot(t,xt,'k:')
% forma estndar
yt=A*cos(w*t); hold on
plotm(t,yt,'k:',1.5,'Ejemplo de uso de plotm()','tiempo [s]','')
hold off

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B - 13

rec2pol
Propsito:
Convertir un arreglo complejo expresado en forma rectangular a la forma polar.
Sintaxis:
[mag,fase]=rec2pol(si)

Descripcin:
La funcin convierte cada elemento de arreglo si, expresados en forma rectangular a la
forma polar. El arreglo mag contiene la magnitud y el arreglo fase la fase en grados.
Algoritmo:
Esta funcin utiliza la funciones bsicas abs() y angle() para calcular la magnitud y el
ngulo de cada elemento expresado en forma rectangular.
Ejemplos de aplicacin:
Obtener los componentes de la matriz compleja A en la forma polar:
EDU A=[0.3+j*0.4,0.4+j*0.3,-0.3+j*0.4;...
-0.3-j*0.4,-0.4+j*0.3,-0.4-j*0.3;...
-0.6+j*0.8,0.6+j*0.8,-0.6-j*0.8]
A =
0.3000 + 0.4000i
-0.3000 - 0.4000i
-0.6000 + 0.8000i

0.4000 + 0.3000i
-0.4000 + 0.3000i
0.6000 + 0.8000i

EDU [magA,faseA]=rec2pol(A)
magA =
0.5000
0.5000
1.0000

0.5000
0.5000
1.0000

0.5000
0.5000
1.0000

faseA =
53.1301
-126.8699
126.8699

36.8699 126.8699
143.1301 -143.1301
53.1301 -126.8699

-0.3000 + 0.4000i
-0.4000 - 0.3000i
-0.6000 - 0.8000i

D - 14

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

resimod
Propsito:
Calcular el modelo equivalente discreto X( z) de una seal muestreada x( nT ) , a partir del
modelo X( s) de la seal continua x(t) , utilizando el mtodo de residuos modificado.
Sintaxis:
[nXz,dXz]=resimod(nXs,dXs,T)

Descripcin:
La funcin determina el numerador nXz y el denominador dXz del modelo equivalente
discreto X( z) de una seal muestreada, a partir del modelo X( s) de la seal continua x(t)
, utilizando el mtodo de residuos modificado o mtodo de la transformada Z .
Algoritmo:
Esta funcin utiliza la funcin impinvar() del Toolbox de Seales de M ATLAB para
evaluar el numerador y denominador del modelo discreto compensado en ganancia en la
forma DSP (potencias negativas ascendentes de z). Con el apoyo de comandos estndar
de MATLAB se se ajusta la ganancia del modelo y se transforman los polinomios a la
forma estndar (potencias positivas descendentes de z). Por lo tanto, la funcin asume
X(s) y X( z) se expresan en la forma estndar.
Ejemplos de aplicacin:
t
Obtener el modelo equivalente discreto X( z) de la seal continua x(t) 5e cos(2t) , que
ha sido muestreada con un valor de T 0.1s :

EDU syms t, xt=5*exp(-t)*cos(2*t);


EDU Xs=laplace(xt), [nXs,dXs]=numden(Xs);
EDU nXs=sym2poly(nXs), dXs=sym2poly(dXs)
nXs = 5

dXs = 1

EDU T=0.1; [nXz,dXz]=resimod(nXs,dXs,T)


nXz = 5.0000
dXz = 1.0000

-4.4340
-1.7736

0
0.8187

Interpretando este resultado, el modelo discreto es


X( z)
Ver adems: ftpuls y hs2hz.

5z2 4.4340z
z2 1.7736z 0.8187

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B - 15

sftd
Propsito:
Evaluar numricamente los coeficientes de la serie de Fourier de una seal discreta y
peridica xp[ n] , a partir de sus muestras.
Sintaxis:
ck = sftd(x0n,N)

Descripcin:
Esta funcin calcula los coeficientes de la serie de Fourier de la seal peridica xp[ n] , a
partir de las muestras de la componente fundamental x0[ n] . En el vector fila x0n incluye
las muestras de x0[ n] y el escalar N su perodo fundamental, que en este caso debe
corresponder al nmero de muestras de x0[ n] . Los coeficientes de la serie de Fourier son
devueltos en el vector fila ck.
Algoritmo:
Esta funcin implementa numricamente la ecuacin de anlisis de (9.37), utilizando las
expresiones matriciales (9.39) y (9.40).
Ejemplos de aplicacin:
Calcular los coeficientes de la serie de Fourier de la seal discreta x[ n] {2, 1, 1, 2}.
EDU xn=[2,-1,1,2]; N=4; n=0:N-1;
EDU k=0:N-1; ck=sftd(xn,N); ck(:)
ck = 1.0000
0.2500 + 0.7500i
0.5000 - 0.0000i
0.2500 - 0.7500i

Se ha utilizado al opcin punto y apstrofe para evitar el transpuesto conjugado. Otra


opcin vlida es usar la notacin dos puntos: ck(:).

D - 16

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

stemm
Propsito:
Versin mejorada de la funcin stem(), para generar el grfico de una seal discreta, con
la posibilidad de modificar el ancho de la lnea de datos y de incluir ttulo de la grfica y
rtulos de los ejes.
Sintaxis:
dummy = stemm(k,x,rotulo,tipoL,anchoL,titulo,Rx,Ry)

Descripcin:
Esta funcin genera, a partir de la funcin bsica stem() de MATLAB, la grfica de una
seal discreta cuyos valores estn almacenados en el vector fila x y su base de tiempo en
el vector fila k, dibujando una lnea horizontal para k=0 cuando es necesario. La funcin
permite ingresar a rotulo como cadena de caracteres para indicar el tipo de marca de
cada muestra. Usando 'filled' se obtiene un crculo relleno como marca. La cadena
tipoL de 1,2 o 3 caracteres, es similar a la utilizada en plot, para definir el tipo de lnea a
utilizar. Tambin es posible modificar el ancho de la lnea de datos a travs del valor
numrico definido en anchoL (por defecto 0.5p) e ingresar cadenas de caracteres para el
ttulo de la grfica y los rtulos de los ejes horizontal y vertical.
Cuando no se definen el ancho de lnea, el ttulo y los rtulos de los ejes, los argumentos
rotulo y tipoL son opcionales. En cualquier otro caso, si no se desea declarar un
argumento adicional, debern introducirse como cadenas vacas ('').
Algoritmo:
Esta funcin utiliza comandos estndar de MATLAB y la funcin bsica stem().
Ejemplos de aplicacin:
Obtener la grfica de la seal discreta x(k) usando stem() y stemm().
EDU
EDU
EDU
EDU
EDU
EDU

k=0:6; xk=[1 1.5 1.3 -0.5 0 -0.2 1.4];


subplot (2,1,1)
stem(k,xk,'filled')
title('Grafica usando stem()');
subplot(2,1,2)
stemm(k,xk,'filled','',1.5,'Grafica usando stemm()','k','');

La figura de la pgina siguiente muestra la comparacin entre el uso de las funciones


stem() y stemm().

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B - 17

stemm

D - 18

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

tftd
Propsito:
Evaluar numricamente la TFTD a partir de las muestras de una seal discreta aperidica
Sintaxis:
[XjW,W] = tftd(xn,n,M,DW)

Descripcin:
Esta funcin genera M 1 puntos equidistantes de la TFTD, para una seal discreta
aperidica x[ n] . Los valores de las muestras de x[ n] y su base de tiempo se introducen
en los vectores xn y n, respectivamente. En el vector XjW se devuelven los valores
j
complejos de X e y en el vector W los valores de la frecuencia digital () en el
intervalo definido por el argumento de entrada DW, para M 1 puntos.
Algoritmo:
La funcin implementa la ecuacin (9.17) como producto matricial para evaluar
numricamente la TFTD en el intervalo definido por el arreglo DW. Por ejemplo, si se
desea la TFTD en el intervalo [,2] , DW = [-1,2]. Todos los arreglos se
organizan como vectores fila. El algoritmo no es numricamente eficiente y debe tenerse
precaucin en el tamao de los vectores xn, n y el nmero de puntos M, en razn de la
limitacin de la versin de Estudiante de M ATLAB a un mximo de 16.384 elementos por
arreglo.
Ejemplos de aplicacin:
6, 7}
Evaluar numricamente la TFTD de la siguiente seal discreta, para x[ n] {3, 4, 5,

EDU
EDU
EDU
EDU
EDU
EDU

xn=[3,4,5,6,7]; n=-2:2;
M=500; DX=[-1,1]; [XjW,W]=tftd(xn,n,M,DX);
[mag,fase]=rec2pol(XjW);
subplot(2,1,1)
plotm(W,mag,'b-',1.5,'TFTD de x[n]','','magniud')
plotm(W,fase,'b-',1.5,'','frecuencia digital [rad]','fase []')

La figura de la siguiente pgina muestra el resultado.

Apndice B - FUNCIONES ESPECIALES DE MATLAB

B - 19

tftd

D - 20

SEALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

tzserie
Propsito:
Calcular la transformada Z como serie de potencias negativas de z.
Sintaxis:
Yzs=tzserie(nYz,dYz,N)

Descripcin:
La funcin devuelve en Yzs los primeros N trminos del desarrollo en serie de potencias
negativas de z de una funcin discreta Y(z). Los coeficientes del numerador y
denominador de Y(z) se introducen en nYz y dYz como vectores.
Algoritmo:
Esta funcin utiliza comandos y funciones estndar de MATLAB.
Ejemplos de aplicacin:
Obtener el desarrollo en serie de potencias de Y(z) dada por
Y(z)

z(z 0.7)
( z 1)(z 0.6)

EDU nYz=poly([0 0.7]); dYz=poly([1 0.6]);


EDU Yzser=tzserie(nYz,dYz,5)
Yzser =
(1)z^0 + (0.9)z^-1 + (0.84)z^-2 + (0.804)z^-3 + (0.7824)z^-4

Potrebbero piacerti anche