funciones de matlab para tratamiento de señales

28
Apéndice D FUNCIONES ESPECIALES DE MATLAB En este apéndice se presenta una descripción detallada de las funciones especiales que fueron desarrolladas para facilitar la interpretación de algunos conceptos y como apoyo en la implementación de procedimientos específicos presentados en los ejemplos de cada capítulo del libro. La descripción de cada función especial incluye el propósito, sintaxis, algoritmo utilizado en su implementación y un ejemplo de aplicación. D - 1

Upload: carlos-alberto-rey-soto

Post on 09-Dec-2015

51 views

Category:

Documents


6 download

DESCRIPTION

SE trata de un apéndice que describe las funciones especiales, desarrolladas por el usuario (Carlos Alberto Rey Soto), para el tratamiento analógico y digital de señales

TRANSCRIPT

Page 1: Funciones de MATLAB para tratamiento de señales

Apéndice D

FUNCIONES ESPECIALES DE MATLAB

En este apéndice se presenta una descripción detallada de las funciones especiales que fueron

desarrolladas para facilitar la interpretación de algunos conceptos y como apoyo en la

implementación de procedimientos específicos presentados en los ejemplos de cada capítulo del

libro. La descripción de cada función especial incluye el propósito, sintaxis, algoritmo utilizado

en su implementación y un ejemplo de aplicación.

D - 1

Page 2: Funciones de MATLAB para tratamiento de señales

D - 2 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

Page 3: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 3

aproxcero

Propósito:

Anular valores de un arreglo inferiores al valor mínimo especificado.

Sintaxis:

xa = aproxcero(xo,xmin)

Descripción:

La función devuelve en el arreglo xa, los elementos del arreglo xo, cuyo valor absoluto es inferior a xmin.

Algoritmo:

Esta función utiliza la expresión lógica (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 eliminación.

Ejemplo de aplicación:

EDU» xk=[1 -2 3 0.0000005 2 -6];EDU» xkm=aproxcero(xk,0.00001)

xkm =

1 -2 3 0 2 -6

Page 4: Funciones de MATLAB para tratamiento de señales

D - 4 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

escaud

Propósito:

Generar la señal escalón unitario discreta.

Sintaxis:

unT = escaud(nT)

Descripción:

Esta función genera los valores de la señal escalón unitaria muestreada, de acuerdo con la base de tiempo nT. Sin embargo, si T=1, es posible generar la señal escalón discreta. Es posible obtener los valores de la señal en adelanto o en atraso, aplicando el desplazamiento a la base de tiempo.

Algoritmo:

Esta función utiliza la expresión lógica (nT<0) para hacer unT=0, para valores negativos de la base de tiempo y la expresión lógica (nT>=0) para hacer unT=1, para valores positivos de la base de tiempo, incluyendo nT=0.

Ejemplos de aplicación:

Para simular la señal escalón discreta:

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

Page 5: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 5

escau

Propósito:

Generar la señal escalón unitario contiuna.

Sintaxis:

ut = escau(t)

Descripción:

Esta función genera los valores de la señal escalón unitaria continua, de acuerdo con la base de tiempo t. Para lograr un buen efecto visual, es necesario utilizar un intervalo pequeño en la definición de la base de tiempo t. Es posible obtener los valores de la señal en adelanto o en atraso, aplicando el desplazamiento a la base de tiempo.

Algoritmo:

Esta función utiliza la expresión lógica (t<0) para hacer ut=0, para valores negativos de la base de tiempo y la expresión lógica (t>0) para hacer ut=1, para valores positivos de la base de tiempo.

Ejemplos de aplicación:Para simular la señal escalón 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])

Page 6: Funciones de MATLAB para tratamiento de señales

D - 6 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

ftpuls

Propósito:

Calcular la función de transferencia equivalente discreta de un sistema de datos muestreados, a partir del modelo continuo , precedido por un retensor de orden-0.

Sintaxis:

[nGz,dGz] = ftpuls(nGs,dGs,T)

Descripción:

Esta función devuelve en numerador nGz y denominador dGz del modelo equivalente discreto , de un sistema de datos muestreados, a partir del modelo continuo , incluyendo el efecto del muestreador con período T y del retensor de orden-0 (ZOH). El modelo continuo se define a través del numerador nGs y del denominador dGs.

Algoritmo:

Esta función utiliza el concepto de función de transferencia de pulsos (FTP) presentado en la sección 10.4 para implementar numéricamente la ecuación (10.55), utilizando comandos estándar de MATLAB®. La función asume que y corresponden a la forma estándar (potencias positivas descendentes de s y z respectivamente).

Ejemplos de aplicación:

Obtener el modelo discreto equivalente del proceso

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

EDU» nGs=4; dGs=poly([0 -2]);EDU» T=0.1; [nGz,dGz]=ftpuls(nGs,dGs,T)

nGz = 0.0187 0.0175 dGz = 1.0000 -1.8187 0.8187

EDU» [z,p,k]=tf2zp(nGz,dGz) % valores para forma factorizada

z = -0.9355 p = 1.0000 k = 0.0187 0.8187

Interpretando el resultado anterior, el modelo discreto equivalente es

Ver además: resimod y hs2hz.

Page 7: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 7

hs2hz

Propósito:

Obtener el modelo equivalente discreto de un modelo continuo , utilizando una regla de transformación arbitraria.

Sintaxis:

[nHz,dHz] = hs2hz(nHs,dHs,T,nFz,dFz)

Descripción:

Esta función permite obtener el modelo discreto equivalente , de un sistema continuo , utilizando métodos de transformación o de discretización, en función de una regla de transformación arbitraria

Algoritmo:

Esta función implementa numéricamente la ecuación de síntesis de (9.37), utilizando las expresiones matriciales (9.39) y (9.40).

Ejemplos de aplicación:

Calcular las muestras de la componente fundamental de una señal discreta y periódica , si los coeficientes de la serie de Fourier son

EDU» ck = EDU» xnm=isftd(ck,N) ; xn=real(xn)

Ver además: ftpuls y resimod.

Page 8: Funciones de MATLAB para tratamiento de señales

D - 8 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

impud

Propósito:

Generar la señal escalón unitario continua o discreta.

Sintaxis:

dn = impud(n)

Descripción:

Esta función genera los valores de la señal impulso unitaria discreta (delta de Kronecker), de acuerdo con la base de tiempo n. Es posible obtener los valores de la señal en adelanto o en atraso, aplicando el desplazamiento a la base de tiempo.

Algoritmo:

La función utiliza la expresión lógica (n~=0) para hacer dn=0, para valores de la base de tiempo diferentes de cero y la expresión lógica (n>==0) para hacer dn=1, para n=0.

Ejemplos de aplicación:

Generar las señales y en el intervalo

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

Page 9: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 9

Page 10: Funciones de MATLAB para tratamiento de señales

D - 10 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

isftd

Propósito:

Sintetizar la componente fundamental de una señal discreta y periódica con período N, a partir de los coeficientes de la serie de Fourier.

Sintaxis:

x0n = isftd(ck,N)

Descripción:

Esta función sintetiza la componente fundamental de una señal discreta y periódica , con período N, partir de los coeficientes de la serie de Fourier .En el vector fila

ck se incluyen los coeficientes de la serie de Fourier y en el escalar N el período fundamental de la señal periódica. Las muestras de son devueltos en el vector fila x0n. Esta función efectúa la operación inversa de la función sftd().

Algoritmo:

Esta función implementa numéricamente la ecuación de síntesis de (9.37), utilizando las expresiones matriciales (9.39) y (9.40).

Ejemplos de aplicación:

Calcular las muestras de la componente fundamental de una señal discreta y periódica , si los coeficientes de la serie de Fourier son

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 señal discreta utilizada en el ejemplo de aplicación de la función sftd().

Page 11: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 11

linea

Propósito:

Dibujar una línea entre dos puntos, controlando su tipo y espesor.

Sintaxis:

dummy = linea(p1,p2,tipoL,anchoL)

Descripción:

Esta función dibuja una línea entre los puntos p1(x1,y1) y p2(x2,y2), de acuerdo con el tipo de línea indicado en la cadena de caracteres tipoL, con las mismas opciones de la función polt(). Opcionalmente se puede indicar en anchoL el ancho de línea como un valor numérico en puntos. Si no se indica la función asume un ancho de 0.5 puntos.

Algoritmo:

Esta función utiliza comandos estándar y la función básica plot() para dibujar la línea. El ancho de la línea se modifica utilizando la función básica set().

Ejemplos de aplicación:

Dibujar un triángulo cuyos vértices 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 onEDU» linea(p2,p3,'b-',1.5); linea(p1,p3,'b-',1.5)

Page 12: Funciones de MATLAB para tratamiento de señales

D - 12 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

plotm

Propósito:

Versión mejorada de la función plot() para modificar el tipo y de línea de datos, con la opción de incluir título y rótulo de los ejes.

Sintaxis:

plotm(t,x,tipoL)plotm(t,x,tipoL,anchoL,titulo,Rx,Ry)

Descripción:

plotm(t,x,tipoL) genera la gráfica 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 línea. En la segunda opción es posible especificar en anchoL el ancho de línea en puntos (por defecto 0.5 puntos), el título de la gráfica como una cadena de caracteres en titulo, el rótulo del eje-x en Rx y el rótulo del eje-y en Ry. Si se desea omitir un argumento de entrada en cualquiera de las dos opciones, se debe introducir una cadena vacía ('').

Algoritmo:

Esta función utiliza comandos estándar de MATLAB y la función básica plot() para desplegar el gráfico. El ancho de la línea se ajusta utilizando la función básica set().

Ejemplos de aplicación:

Obtener la gráfica de las funciones x(t)=5sen(t) y y(t)=5cos(t).

EDU» Tp=2; w=2*pi/Tp; A=5;EDU» t=0:0.001:2*Tp; xt=A*sin(w*t);EDU» subplot(2,1,1), plot(t,xt,'k:') % forma estándarEDU» yt=A*cos(w*t); hold onEDU» plotm(t,yt,'k:',1.5,'Ejemplo de uso de plotm()','tiempo [s]','')EDU» hold off

Page 13: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 13

rec2pol

Propósito:

Convertir un arreglo complejo expresado en forma rectangular a la forma polar.

Sintaxis:

[mag,fase]=rec2pol(si)

Descripción:

La función 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 función utiliza la funciones básicas abs() y angle() para calcular la magnitud y el ángulo de cada elemento expresado en forma rectangular.

Ejemplos de aplicación:

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.4000 + 0.3000i -0.3000 + 0.4000i -0.3000 - 0.4000i -0.4000 + 0.3000i -0.4000 - 0.3000i -0.6000 + 0.8000i 0.6000 + 0.8000i -0.6000 - 0.8000i

EDU» [magA,faseA]=rec2pol(A)

magA = 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 1.0000 1.0000 1.0000

faseA =

53.1301 36.8699 126.8699 -126.8699 143.1301 -143.1301 126.8699 53.1301 -126.8699

Page 14: Funciones de MATLAB para tratamiento de señales

D - 14 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

resimod

Propósito:

Calcular el modelo equivalente discreto de una señal muestreada , a partir del

modelo de la señal continua , utilizando el método de residuos modificado.

Sintaxis:

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

Descripción:

La función determina el numerador nXz y el denominador dXz del modelo equivalente discreto de una señal muestreada, a partir del modelo de la señal continua , utilizando el método de residuos modificado o método de la transformada Z .

Algoritmo:

Esta función utiliza la función impinvar() del Toolbox de Señales de MATLAB® 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 estándar de MATLAB® se se ajusta la ganancia del modelo y se transforman los polinomios a la forma estándar (potencias positivas descendentes de z). Por lo tanto, la función asume

y se expresan en la forma estándar.

Ejemplos de aplicación:

Obtener el modelo equivalente discreto de la señal continua , que ha sido muestreada con un valor de :

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 5 dXs = 1 2 5

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

nXz = 5.0000 -4.4340 0 dXz = 1.0000 -1.7736 0.8187

Interpretando este resultado, el modelo discreto es

Ver además: ftpuls y hs2hz.

Page 15: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 15

sftd

Propósito:

Evaluar numéricamente los coeficientes de la serie de Fourier de una señal discreta y periódica , a partir de sus muestras.

Sintaxis:

ck = sftd(x0n,N)

Descripción:

Esta función calcula los coeficientes de la serie de Fourier de la señal periódica , a partir de las muestras de la componente fundamental . En el vector fila x0n incluye las muestras de y el escalar N su período fundamental, que en este caso debe corresponder al número de muestras de . Los coeficientes de la serie de Fourier son devueltos en el vector fila ck.

Algoritmo:

Esta función implementa numéricamente la ecuación de análisis de (9.37), utilizando las expresiones matriciales (9.39) y (9.40).

Ejemplos de aplicación:

Calcular los coeficientes de la serie de Fourier de la señal discreta .

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 opción punto y apóstrofe para evitar el transpuesto conjugado. Otra opción válida es usar la notación dos puntos: ck(:).

Page 16: Funciones de MATLAB para tratamiento de señales

D - 16 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

stemm

Propósito:

Versión mejorada de la función stem(), para generar el gráfico de una señal discreta, con la posibilidad de modificar el ancho de la línea de datos y de incluir título de la gráfica y rótulos de los ejes.

Sintaxis:

dummy = stemm(k,x,rotulo,tipoL,anchoL,titulo,Rx,Ry)

Descripción:

Esta función genera, a partir de la función básica stem() de MATLAB®, la gráfica de una señal discreta cuyos valores están almacenados en el vector fila x y su base de tiempo en el vector fila k, dibujando una línea horizontal para k=0 cuando es necesario. La función permite ingresar a rotulo como cadena de caracteres para indicar el tipo de marca de cada muestra. Usando 'filled' se obtiene un círculo relleno como marca. La cadena tipoL de 1,2 o 3 caracteres, es similar a la utilizada en plot, para definir el tipo de línea a utilizar. También es posible modificar el ancho de la línea de datos a través del valor numérico definido en anchoL (por defecto 0.5p) e ingresar cadenas de caracteres para el título de la gráfica y los rótulos de los ejes horizontal y vertical.

Cuando no se definen el ancho de línea, el título y los rótulos de los ejes, los argumentos rotulo y tipoL son opcionales. En cualquier otro caso, si no se desea declarar un argumento adicional, deberán introducirse como cadenas vacías ('').

Algoritmo:

Esta función utiliza comandos estándar de MATLAB y la función básica stem().

Ejemplos de aplicación:

Obtener la gráfica de la señal discreta x(k) usando stem() y stemm().

EDU» k=0:6; xk=[1 1.5 1.3 -0.5 0 -0.2 1.4];EDU» subplot (2,1,1)EDU» stem(k,xk,'filled')EDU» title('Grafica usando stem()');EDU» subplot(2,1,2)EDU» stemm(k,xk,'filled','',1.5,'Grafica usando stemm()','k','');

La figura de la página siguiente muestra la comparación entre el uso de las funciones stem() y stemm().

Page 17: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 17

stemm

Page 18: Funciones de MATLAB para tratamiento de señales

D - 18 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

tftd

Propósito:

Evaluar numéricamente la TFTD a partir de las muestras de una señal discreta aperiódica

Sintaxis:

[XjW,W] = tftd(xn,n,M,DW)

Descripción:

Esta función genera puntos equidistantes de la TFTD, para una señal discreta aperiódica . Los valores de las muestras de y su base de tiempo se introducen en los vectores xn y n, respectivamente. En el vector XjW se devuelven los valores complejos de y en el vector W los valores de la frecuencia digital () en el intervalo definido por el argumento de entrada DW, para puntos.

Algoritmo:

La función implementa la ecuación (9.17) como producto matricial para evaluar numéricamente la TFTD en el intervalo definido por el arreglo DW. Por ejemplo, si se desea la TFTD en el intervalo , DW = [-1,2]. Todos los arreglos se organizan como vectores fila. El algoritmo no es numéricamente eficiente y debe tenerse precaución en el tamaño de los vectores xn, n y el número de puntos M, en razón de la limitación de la versión de Estudiante de MATLAB® a un máximo de 16.384 elementos por arreglo.

Ejemplos de aplicación:

Evaluar numéricamente la TFTD de la siguiente señal discreta, para

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

La figura de la siguiente página muestra el resultado.

Page 19: Funciones de MATLAB para tratamiento de señales

Apéndice B - FUNCIONES ESPECIALES DE MATLAB® B - 19

tftd

Page 20: Funciones de MATLAB para tratamiento de señales

D - 20 SEÑALES Y SISTEMAS EN TIEMPO CONTINUO Y TIEMPO DISCRETO

tzserie

Propósito:

Calcular la transformada Z como serie de potencias negativas de z.

Sintaxis:

Yzs=tzserie(nYz,dYz,N)

Descripción:

La función devuelve en Yzs los primeros N términos del desarrollo en serie de potencias negativas de z de una función discreta Y(z). Los coeficientes del numerador y denominador de Y(z) se introducen en nYz y dYz como vectores.

Algoritmo:

Esta función utiliza comandos y funciones estándar de MATLAB.

Ejemplos de aplicación:

Obtener el desarrollo en serie de potencias de Y(z) dada por

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