You are on page 1of 39

1 SEALES Y SISTEMAS

EN TIEMPO DISCRETO

INTRODUCCION
Los conceptos de seales y sistemas se presentan en una gran variedad de aplicaciones de la
ciencia y la ingeniera, en particular en reas como los sistemas industriales de control, los
sistemas de comunicaciones, el diseo de circuitos electrnicos, la sismologa, la biomedicina, la
aeronutica, la astronutica, la generacin y distribucin de energa, el procesamiento de voz, el
procesamiento de imgenes, entre otros. Hace unas tres dcadas atrs, el procesamiento de las
seales utilizadas en estas y otras aplicaciones se haca en forma analgica, mediante
transductores y sistemas de medicin que manipulaban las seales en tiempo real. Sin embargo,
la evolucin tecnolgica en el desarrollo de hardware y software, as como de la tecnologa
electrnica, han permitido que el procesamiento de estas seales de campo se ejecute hoy en da
en forma digital, simplificando el anlisis, diseo y mantenimiento de estos sistemas, logrando
una reduccin considerable en costo, tamao y consumo de energa, as como una simplificacin
significativa en los componentes utilizados en su implementacin.

En este captulo se har una revisin de las herramientas necesarias para el anlisis de
seales y sistemas en tiempo discreto, que es el fundamento del procesamiento digital de seales,
considerando dos situaciones especficas: secuencias, que por naturaleza son arreglos discretos y
seales muestreadas, logradas mediante la observacin y medicin de una seal continua x( t ) .
En cualquiera de estos casos, el tratamiento ser similar cuando se haga referencia a los valores
de las muestras contenidas en cada seal.

En la primera parte se har un anlisis de la representacin algebraica y los valores


caractersticos de las secuencias y seales muestreadas tpicas, incluyendo operaciones de
transformacin. El anlisis de las seales senoidales muestreadas ser de particular inters, por su
comportamiento diferente respecto de sus homlogas continuas.

Utilizando seales elementales discretas se evaluar la respuesta impulso y la respuesta


escaln de un sistema en tiempo discreto representado por la ecuacin en diferencias (EED)
como modelo fundamental, que ser resuelta por mtodos clsicos para obtener las componentes
de la salida del sistema: la respuesta natural y la respuesta forzada del sistema.

1-1
1-2 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

1.1 FUNDAMENTOS DEL PROCESAMIENTO DE SEALES


En esta seccin se har una revisin breve de los conceptos, trminos y etapas asociadas
con el procesamiento digital de seales, que son fundamentales para comprender el proceso
de transformacin a que es sometida una seal continua en tiempo real, antes de convertirse
en una seal discreta o digital.

Componentes del procesamiento digital


Las seales que encontramos en las aplicaciones prcticas son en su mayora analgicas.
Estas seales que varan continuamente en amplitud y tiempo, pueden ser procesadas
utilizando redes elctricas que usan componentes activos y pasivos. Esta tcnica se
reconoce como procesamiento analgico de seales (ASP). Un ejemplo tpico es el caso de
los receptores de TV, algunos equipos de radio y los sistemas de control.

Figura 1.1 x(t) y(t)


Procesamiento ASP
analgico de
seales.

Esta tarea puede ser realizada tambin utilizando hardware digital, mediante compuertas
lgicas, sumadores, multiplicadores, registros de desplazamiento y otros dispositivos, o
travs de microprocesadores de propsito especial. Sin embargo, es necesario convertir la
seal analgica x( t ) en una forma que pueda adecuarse al hardware digital, reconocida
como seal digital. Estas seales toman valores discretos en instantes especficos de tiempo
y por lo tanto pueden ser representadas en forma de nmeros binarios o bits.

Esta tcnica se reconoce como procesamiento digital de seales (DSP). Los componentes
para el procesamiento de una seal analgica utilizando DSP, se muestran en la figura 1.2.

ASP

x(t) y(t)
Figura 1.2 PrF A/D DSP D/A PoF
Componentes del
procesamiento
digital de seales.

En la figura 1.2 se pueden reconocer las siguientes tareas asociadas con el DPS:
PrF: Pre-filtrado y acondicionamiento de la seal para conseguir una seal de banda
limitada y de nivel estandarizado, con el propsito de reducir el efecto de
solapamiento o aliasing y acondicionarla como entrada del convertidor A/D. Esta
etapa se realiza generalmente mediante un filtro pasa-bajo.
1.1 FUNDAMENTOS DEL PROCESAMINETO DE SEALES 7-3

A/D: Convertidor Anlogo-Digital, para generar una seal digital.


DSP: Microprocesador de propsito especial. Utilizando software puede modificar los
valores caractersticos de la seal de entrada.
D/A: Convertidor Digital-Analgico, que genera una seal continua por intervalos, tipo
escalera, a partir de una secuencia de nmeros binarios entregados por el DSP,
como primer paso para generar la seal analgica de salida.
PoF: Post-filtrado y acondicionamiento de la seal tipo escalera para obtener la seal
analgica de salida. Esta etapa se logra generalmente mediante filtro suavizador.

Caractersticas del procesamiento digital


La principal desventaja del sistema ASP es su limitacin para la ejecucin de tareas
complejas sobre una seal. Esto se traduce en poca flexibilidad en el procesamiento y
complejidad el diseo de sistemas; adems del elevado costo de los componentes
requeridos. Por otra parte, el sistema DSP ofrece, entre otras, las siguientes ventajas:

1. Desarrollo mediante software, que garantiza mayor flexibilidad, exactitud, posibilidad


de ajuste y transportabilidad.
2. Mayor estabilidad en el procesamiento. Las operaciones bsicas de un algoritmo, son
de suma y multiplicacin.
3. Facilidad de modificacin en tiempo real, mediante cambios simples en un programa
o por recarga de registros.
4. Bajo costo, debido al desarrollo de la tecnologa VLSI, que ha permitido reducir el
costo de componentes tales como: memorias, procesadores, dispositivos lgicos, etc.

La principal desventaja del DSP, es la velocidad de procesamiento, especialmente cuando


se trabaja con muy altas frecuencias. Sin embargo, las ventajas que ofrece, hacen que el
sistema DSP se prefiere cada da en un gran nmero de aplicaciones como: dispositivos
electrnicos, artefactos elctricos, equipos de sonido, televisin, comunicaciones, telfonos
inalmbricos, procesamiento de imgenes mdicas, etc.

Tareas tpicas en DSP


La mayora de las tareas realizadas en DSP corresponden a actividades relacionadas con el
anlisis o filtrado de seales:

Anlisis de seales: Se refiere a la identificacin y medicin de los valores caractersticos


de una seal, como respuesta de un sistema a una entrada conocida. Generalmente es una
operacin que se realiza en el dominio de la frecuencia. Algunas aplicaciones tpicas son:
1-4 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

- anlisis espectral: magnitud y fase v/s frecuencia


- reconocimiento de voz
- verificacin de seales de sonido
- deteccin de objetivos

Filtrado de seales: Esta tarea busca satisfacer una relacin entrada-salida de un sistema a
partir de seales conocidas. Los sistemas que logran este propsito se reconocen en
trminos generales como filtros. Es una operacin que se desarrolla generalmente (pero no
siempre) en el dominio de tiempo. Algunas aplicaciones tpicas son:

- eliminacin de ruido
- eliminacin de interferencia
- separacin de bandas de frecuencia
- modificacin del espectro de una seal

Operaciones en el procesamiento de seales


Varios tipos de operaciones caracterizan el procesamiento de seales. En el caso de seales
analgicas, la mayora de estas se realizan en el dominio del tiempo, mientras en el caso de
seales digitales, se desarrollan tanto en el dominio del tiempo, como en el dominio de la
frecuencia. En cada caso, las operaciones deseadas se implementan por combinacin de
operaciones elementales.

Algunas de estas operaciones elementales, pueden ser desarrolladas en tiempo real, cerca
del tiempo real o fuera de lnea, tanto en el dominio continuo como en el dominio discreto.
Las operaciones ms frecuentes, son:

- operaciones elementales en el dominio del tiempo: escalamiento (amplificacin o


atenuacin), integracin, diferenciacin, desplazamiento real, suma y producto.
- filtrado: filtro pasa-bajo, pasa-alto, pasa-banda, rechazo-banda y otros.
- generacin de seales: seales reales y seales complejas.
- modulacin, demodulacin, multiplexin y demultiplexin.

En el campo del Procesamiento Digital de Seales, MATLAB se ha convertido en la


herramienta de software preferida, no solo por su potencialidad de clculo sino por el gran
nmero de funciones desarrolladas en el Toolbox de Seales y su gran capacidad de
visualizacin, que permite con pocas instrucciones y casi instantneamente, visualizar los
resultados necesarios para el tratamiento de seales discretas. En el desarrollo de este
captulo y posteriores se utilizar la versin 5.3, suficiente para la comprobacin de las
caractersticas ms relevantes, asociadas con el procesamiento de seales.
1.2 EJEMPLOS TIPICOS Y CLASIFICACION DE SEALES 7-5

1.2 EJEMPLOS TPICOS Y CLASIFICACIN DE SEALES


Son mltiples los ejemplos que podran enumerarse en relacin con las seales tpicas que
se utilizan en el procesamiento de seales, que pueden ir desde las seales elementales que
se utilizan en el anlisis, hasta seales ms complejas como las imgenes que encontramos
en el campo de las comunicaciones digitales. Sin embargo, En esta seccin presentaremos
algunos ejemplos prcticos de lo que puede realizarse en el campo del procesamiento
digital de seales.

Ejemplos de seales procesadas en MATLAB


La figura 1.3 presenta un ejemplo de seales procesadas con la ayuda del programa
MATLAB, a partir de datos que fueron almacenados en archivos con formato binario. Las
grficas se generaron usando las funciones bsicas: fopen(), fread(), fclose(),
plot(), image(). En aplicaciones prcticas podemos encontrar seales tpicas asociadas
con: msica en formato MP3 y MP4, electrocardiogramas, electroencefalogramas,
reconocimiento de voz, comunicacin digital, etc.

Figura 1.3
Ejemplos tpicos
de seales
procesadas en
MATLAB.

Clasificacin de las seales


Desde el punto de vista del procesamiento, en las aplicaciones prcticas consideramos que
las seales son funcin del tiempo y pueden clasificarse en dos grandes categoras:
1-6 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

- seales analgicas
- seales digitales

Una seal analgica se caracteriza porque su magnitud y tiempo varan continuamente. Por
otra parte, en una seal digital su magnitud y tiempo varan en forma discreta.
Considerando la forma de representacin de la variable independiente (tiempo), se pueden
reconocer como:

- seales en tiempo continuo


- seales en tiempo discreto

Las seales en tiempo continuo o seales analgicas estn definidas para todos los valores
de tiempo en el intervalo < t < y se representan como x( t ) . Las seales en tiempo
discreto, estn definidas solo para valores discretos de tiempo y su magnitud puede tomar
cualquier valor. En las aplicaciones prcticas se refieren como seales discretas y pueden
ser el producto de:

- seales muestreadas: x( nT )
- secuencias: x[ n]

Una seal muestreada se obtiene por la observacin y medicin de una seal continua x( t ) ,
a intervalos definidos de tiempo y pueden ser igualmente espaciados o no. Este proceso se
reconoce como muestreo peridico o uniforme de la seal continua y para efectos prcticos
consideramos que se efecta a intervalos fijos de tiempo de T, reconocido como el perodo
o intervalo de muestreo. Su valor recproco 1/T se denomina velocidad o frecuencia de
muestreo ( Fm ) expresada en muestras/segundo o Hz.

Por otro lado, una secuencia es un conjunto de valores arbitrarios ordenados de acuerdo con
una base de tiempo discreta, representada por valores enteros, positivos o negativos.
Ejemplos de secuencias pueden ser: la cuota mensual de amortizacin de un prstamo, la
edad en aos de una persona, etc. Para representar una secuencia de duracin finita,
utilizamos la siguiente notacin:

x[ n] = {2,1, 1,0,1,4,3,7}

donde la flecha < > indica la muestra para el instante de tiempo n = 0 . En adelante,
considerando que el perodo de muestreo T es constante, se har referencia a una secuencia
o a una seal muestreada, como una seal en tiempo discreto, o simplemente como una
seal discreta.
1.3 SEALES EN TIEMPO DISCRETO 7-7

1.3 SEALES EN TIEMPO DISCRETO

Aunque las seales muestreadas tienen importancia prctica, en el sentido de que estas son
las que se generan como resultado del muestreo de una seal continua como fase previa a la
conversin en seal digital, para efecto de anlisis en los procesos DSP, es suficiente si se
considera que cada muestra ocurre para un valor entero de n, asumiendo que cuando nos
referimos a un valor particular de n = n1 , lo interpretamos como x[ n1 ] o x( n1T ) . Por lo
tanto, si el perodo de muestreo T es constante, se puede aceptar la siguiente equivalencia:

x[ n} x( nT ) x( t ) t = nT (1.1)

En MATLAB una secuencia finita se puede representar mediante un vector fila. Sin
embargo, esto no es suficiente para identificar la posicin de las muestras respecto de la
base de tiempo n. Por lo tanto la representacin completa debe incluir:

n=[3,2,1,0,1,2,3,4]; x=[2,1,1,0,1,4,3,7];


Ejemplo 1.1: Usando MATLAB representar grficamente las siguientes seales discretas:
Secuencia y a. x[ n] = 3(0.5)n en el intervalo [ 3,5] .
seal
muestreada b. x( t ) = 5 cos(3 t / 4 + / 6) , para T = 0.5 s

Solucin: El siguiente guin de MATLAB permite simular las seales anteriores:
n=-3:5; xn=3*(0.5).^n;
w0=3*pi/4; T0=2*pi/w0; t=-T0:0.01:2*T0; xt=5*cos(w0*t);
T=0.5; n=t(1)/T:t(end)/T; nT=n*T; xnT=5*cos(w0*nT);

Figura 1.4
Secuencia y seal
muestreada
usando MATLAB.
1-8 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Para de facilitar la presentacin de las grficas en la forma DSP, en este ejemplo se ha


utilizado la funcin especial stemm(), como una variante de stem() incluida en el Toolbox
de Seales de MATLAB. Su sintaxis es
dummy = stemm(k,xk,rotulo,tipoL,titulo,Rx,Ry)

Sugerencia: Compare este resultado si se utiliza nicamente el comando stem(xn).


Observe que en este caso es errnea la representacin de la base de tiempo.

Secuencias elementales
Para efecto de anlisis en DSP se utilizan secuencias elementales, que pueden ser
representadas en forma apropiada en MATLAB.

1. Secuencia impulso unitario


Se representa como [ n] y su definicin algebraica es:

1, n = 0
[ n] (1.2)
0, n 0
En MATLAB la funcin zeros(1,N) genera un vector fila de N ceros, que podra ser
utilizado para implementar la secuencia [ n] en un intervalo finito. Sin embargo la
relacin lgica n==0 es una forma ms elegante para realizar esta secuencia. Utilizando
esta estrategia se desarroll la funcin impud en MATLAB para simular la expresin
(1.2) que ser usada en ejemplos posteriores. Su sintaxis es:
xn = impud(n)

2. Secuencia escaln unitario


Se representa como u[ n] y su definicin algebraica es:

1, n 0
u[ n] (1.3)
0, n < 0
En MATLAB la funcin ones(1,N) permite generar un vector fila de N unos y podra
utilizarse para implementar esta secuencia. Una versin ms eficiente se puede lograr
utilizando la relacin lgica n>=0 para realizar la seal. Utilizando este comando bsico
se desarroll la funcin especial escad(), cuya sintaxis es:
xn = escad(n)

Una de las aplicaciones importantes de la secuencia escaln es en la limitacin de una


secuencia arbitraria x( n) en un intervalo [ n1 , n2 ] , que puede lograrse como

y[ n] = x[ n] ( u[ n n1 ] u[ n n2 ]) (1.4)
1.3 SEALES EN TIEMPO DISCRETO 7-9

Sin embargo, es necesario tener precaucin en la interpretacin final del intervalo, tal como
se muestra en el siguiente ejemplo.


Ejemplo 1.2: Usando MATLAB representar grficamente las siguientes secuencias:
Secuencias
finitas usando a. Pulso triangular de amplitud 4 e intervalo de duracin [ 5,5] .
escaln
b. Pulso rectangular de amplitud 4 e intervalo de duracin [ 5,5] .
unitario
Solucin: Usando la secuencia escaln unitaria, se puede lograr el pulso rectangular como

x1[ n] = 45 ( n + 5) ( u[ n + 5] u[ n]) 45 ( n 5) ( u[ n] u[ n 5])


Para el pulso rectangular tenemos
x2 [ n] = 4 ( u[ n + 5] u[ n 5])
El siguiente guin de MATLAB permite simular las secuencias anteriores:
n=-8:8;
x1n=(4/5)*(n+5).*(escad(n+5)-escad(n))-...
(4/5)*(n-5).*(escad(n)-escad(n-5));
x2n=4*(escad(n+5)-escad(n-5));
%comandos de graficacin...

El resultado se muestra en la figura 1.5, donde se observa la precaucin que


debe tenerse cuando al final de un intervalo de simulacin existe una
discontinuidad.

Figura 1.5
Secuencias finitas
usando la funcin
especial escad()
de MATLAB.
1 - 10 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Utilizando operaciones equivalentes entre el dominio del tiempo continuo y del tiempo
discreto es posible demostrar [ReySoto08] que la secuencia impulso puede obtenerse
como la primera diferencia anterior del escaln:

[ n] = u[ n] u[ n 1] (1.5)

De modo similar, la secuencia escaln puede lograrse como la suma de impulsos


discretos desplazados:
n
u[ n] = [ n k] (1.6)
k= 0

3. Secuencia rampa unitaria


Se representa como r[ n] y su definicin algebraica es:

n, n 0
r[ n] (1.7)
0, n < 0
A partir de la seal escaln u( n) se puede generar esta secuencia como:
r[ n] = n u[ n] (1.8)

Utilizando la funcin especial escad(), se puede simular como:


rn = n.*escad(n)

Se observa que es necesario recurrir al operador punto (.*) para que se efecte el
producto elemento a elemento de los dos vectores.

4. Secuencia exponencial real


Se puede definir algebraicamente como:

x[ n] = a n , n; a (1.9)

La implementacin de esta secuencia requiere nuevamente el operador punto (.^). Para


generar x[ n] = (0.9)n , 0 n 10 , se utilizan los siguientes comandos bsicos:
n=0:10; xn=(0.9).^n;

5. Secuencia exponencial compleja


Se puede definir algebraicamente como:

x[ n] = e( + j 0 ) , n (1.10)
donde es la atenuacin y 0 la frecuencia angular (digital) en radianes.

En MATLAB es posible generar esta secuencia utilizando la funcin exp(). Por


ejemplo, para lograr x[ n] = e(2+ j 3) n en el dominio [0,10]
1.3 SEALES EN TIEMPO DISCRETO 7 - 11

n=0:10; xn=exp((2+3j)*n);

6. Secuencia senoidal
Puede definirse algebraicamente como:
x[ n] = A cos( 0 n + ), n (1.11)

donde 0 es la frecuencia angular en radianes, A la amplitud y la fase en radianes.


Para generar esta secuencia en MATLAB, se pueden usar las funciones cos() o sin().

Ejemplo 1.3: Generar y dibujar las siguientes secuencias en los intervalos sealados:
Secuencias
arbitrarias a. x1[ n] = 3[ n + 4] 2[ n 4], 5 n 5
usando
b. x2 [ n] = 5 e( n10) ( u[ n 5] u[ n 15]) , 0 n 20
MATLAB
c. x3 [ n] = 5 cos( n / 5 + / 4), 20 n 20
d. x4 [ n] = 10(0.9)n cos( n / 5 + / 4), 20 n 20

Solucin: El siguiente guin de MATLAB permite generar las secuencias anteriores
n=-5:5; x1n=3*impud(n+4)-2*impud(n-4);
n=[-20:20];
x2n=5*exp(-0.2*(n-5)).*(escad(n-5)-escad(n-15));
n=-20:20; x3n=5*cos(pi*n/5+pi/4);
n=[-20:20]; x4n=-10*(0.9).^n.*cos(pi*n/5+pi/4);
%comandos de graficacin...

El resultado se presenta en la figura 1.6, donde se observa el cuidado que debe


tenerse al final del intervalo de simulacin, en la interpretacin del caso 1.3(c).

Figura 1.6
Secuencias
arbitrarias usando
MATLAB.
1 - 12 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Consideraciones especiales de la secuencia senoidal


Existe una forma alterna para representar una secuencia senoidal, expresando la frecuencia
angular 0 como 2 / N , siendo N un nmero entero, que representa el perodo de la seal:

2
x[ n] = cos( 0 n + ) = cos n + (1.12)
N
En la expresin anterior, 0=2/N se reconoce como la frecuencia fundamental. La
condicin para que la secuencia senoidal sea peridica [ReySoto08] es que N sea un
nmero un entero y pueda expresarse como:

2
N= k (1.13)
0

para un valor entero arbitrario de k. El mnimo valor de k que satisface la expresin (1.13)
se reconoce como el perodo fundamental N 0 de la secuencia discreta. Esta misma
condicin se aplica al caso de una secuencia exponencial compleja sin atenuacin ( = 0) .

Expresando 0 = 2 f0 , donde f0 es la frecuencia cclica fundamental en ciclos por


muestra, se pueden reconocer cuatro propiedades de una secuencia senoidal, que
establecen una diferencia substancial con su equivalente continua.

P1. Una secuencia senoidal x[ n] es peridica, solo si 2 / 0 o f0 es una fraccin racional.


P2. La combinacin lineal de dos secuencias senoidales es peridica si la relacin entre sus
perodos fundamentales N 1 y N 2 pueden expresarse como una fraccin racional:

N 1 k2
= (1.14)
N 2 k1

El mnimo valor de k2 / k1 establece el perodo de la combinacin lineal, como


N 0 = N 1 k1min = N 2 k2 min (1.15)

Se puede demostrar [ReySoto08] que (1.15) corresponde al mnimo comn mltiplo de


N1 y N2 .
P3. Dos secuencias senoidales cuyas frecuencias estn separadas por un mltiplo de 2
son idnticas. Esta propiedad implica que el espectro de frecuencia de una secuencia
aperidica x[ n] es peridico, con perodo 2 , tal como se demostrar en el captulo 3.
Por lo tanto el espectro puede evaluarse en el intervalo = [ , ] o f = [ ,] ,
conocido como rango fundamental de frecuencia de x[ n] [ReySoto08].
P4. La mxima tasa de oscilacin de una secuencia senoidal, se consigue cuando 0 =
o cuando f0 = . Lo anterior implica que la mxima frecuencia digital presente en el
1.3 SEALES EN TIEMPO DISCRETO 7 - 13

espectro de frecuencia de una secuencia aperidica x[ n] es de radianes. En


consecuencia, la ganancia en baja frecuencia (BF) de un filtro digital se consigue para
= 0 y la ganancia en alta frecuencia (AF) cuando = .

Ejemplo 1.4: Calcular el perodo fundamental de las siguientes secuencias senoidales:


Perodo
fundamental a. x1[ n] = 3 cos( n / 12) + 5 sen( n / 18)
de secuencias
b. x2 [ n] = 3 cos(5 n + / 3) + 5 sen(3 n / 2)
senoidales.
Solucin: Las frecuencias fundamentales de las componentes de la secuencia x1[ n] son
1 = / 12 y 2 = / 18 . Luego, segn (1.13) sus perodos fundamentales son:

2 2 24 2 2 36
N1 = = = N 1 = 24 N2 = = = N 2 = 36
1 / 12 1 2 / 18 1
Aplicando (1.14) y (1.15)
N 1 24 2
= = N 0 = 3 N 1 = 2 N 2 = 72
N 2 36 3

que es el mnimo comn mltiplo de 24 y 36. Repitiendo para la seal x2 [ n]


con frecuencias fundamentales 1 = 5 y 2 = 3 / 2 :

2 2 2 2 4
N1 = = N1 = ? N2 = = = N2 = 4
1 5 2 3 / 2 3
Como la primera componente no es peridica, x2 [ n] es aperidica.

Ejemplo 1.5: Generar y dibujar la secuencia x[ n] = 5 cos( 0 n) , para 20 n 20 y valores


Mxima tasa de = 0, / 4, / 2, .
0
de oscilacin
en secuencia
senoidal

Solucin: Utilizando la funcin bsica cos() de MATLAB para los diferentes valores de
frecuencia 0 en radianes, obtenemos:
n=[-10:10]; w0=0; xn=5*cos(w0*n); w0=pi/4; xn=5*cos(w0*n);
w0=pi/2; xn=5*cos(w0*n); w0=pi; xn=5*cos(w0*n);
% comandos de graficacin...

El resultado se muestra en la figura 1.7, donde se observa el comportamiento


especial que tiene una secuencia senoidal, en relacin con el valor de su
frecuencia digital angular 0 y el efecto en el perodo fundamental N 0 :

0 = / 4 N 0 = 8 0 = / 4 N 0 = 4 0 = N 0 = 2
1 - 14 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Figura 1.7
Propiedades de la
secuencia senoidal.

Secuencias peridicas
Generalizando el anlisis hecho en el caso de una secuencia senoidal, una secuencia se
considera peridica si para un valor entero de N:

x[ n] = x[ n + N ], n (1.16)

El valor ms pequeo N que satisface esta condicin, se reconoce como el perodo


fundamental. Si denominamos x[ n] como una secuencia peridica, es posible generarla
como la extensin peridica de su componente fundamental x[ n] aperidica:

x[ n] = x[ n k N ] (1.17)
k= 0
De modo similar,
x[ n], 0 n N 1
x[ n] = (1.18)
0 , otro valor
Para generar M perodos a partir de la componente fundamental x[ n] , definida en (1.18) se
podra usar concatenacin horizontal en MATLAB
xp=[xn,xn,xn,....,xn];

Sin embargo, se puede lograr una solucin ms elegante usando la capacidad de


vectorizacin del MATLAB. Primero generamos una matriz con M filas de x[ n] y
utilizamos la notacin (:) para convertirla en un vector columna. Finalmente trasponemos el
vector columna para convertirlo en la secuencia peridica deseada:
1.3 SEALES EN TIEMPO DISCRETO 7 - 15

xp=x'*ones(1,M); xp=xp(:); xp=xp.';

Secuencias aleatorias
Se utilizan en DSP para simular seales de ruido. En MATLAB existen dos funciones:
rand(M,N):genera una secuencia matricial aleatoria de MN muestras, distribuidas
uniformemente en el intervalo [0,1]
randn(M,N): genera una secuencia matricial aleatoria de MN muestras, utilizando
distribucin de Gauss, con media 0 y varianza 1

Ejemplo 1.6: Generar y dibujar las siguientes secuencias, en el intervalo indicado:


Secuencia
aleatoria y a. x[ n] = cos(0.04 n) + 0.2 w( n), 0 n 50 , donde w( n) es una secuencia
secuencia aleatoria Gaussiana con media 0 y varianza 1.
peridica
b. x[ n] = {, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1,5, 4, 3, 2, 1,}, 10 n 9 .

Solucin: Utilizando el siguiente guin de MATLAB se pueden simular x[ n] , como:
n=[0:50]; xn=cos(0.04*pi*n)+0.2*randn(size(n));

La seal peridica tiene perodo N = 5 y en el intervalo propuesto se pueden


simular 4 perodos:
n=[-10:9]; xn=[5,4,3,2,1]; xp=xn(:)*ones(1,4); xp=(xp(:))';
%comandos de graficacin

Las grficas se muestran en la figura 1.8

Figura 1.8
Secuencia
aperidica con
ruido y secuencia
peridica.
1 - 16 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Usando el algoritmo del ejemplo 1.5, se cre la funcin especial xpertd() cuya sintaxis es
[xp,np] = xpertd(xn,n,Np,n1)

Donde los arreglos xn y n incluyen las muestras y la base de tiempo de la componente


fundamental x[ n] , Np es el nmero de perodos a simular y n1 el valor inicial del intervalo
de simulacin de la seal discreta peridica x[ n] .

Operaciones con secuencias


El procesamiento digital seales implica un conjunto de operaciones para responder a los
requerimientos de una aplicacin especfica. La evaluacin numrica en MATLAB de estas
operaciones sobre una secuencia arbitraria puede realizarse de dos formas:

- simulacin directa: desarrollando x[ n] como una funcin externa.


- simulacin indirecta: representando x[ n] como un arreglo de muestras.

En la simulacin directa las operaciones de efectan en forma natural, tal como se mostr
en el ejemplo 1.3, en el que se utilizaron las funciones escad(), impud() y cos() para
generar seales discretas arbitraria usando operaciones algebraicas. La simulacin indirecta
exige el desarrollo de un algoritmo para realizar cada operacin y controlar aspectos
adicionales como la longitud y la base de tiempo de las secuencias a combinar.

1. Suma de secuencias. Definida como


x[ n] = x1[ n] + x2 [ n] = { x1[ n] + x2 [ n]} (1.19)

Se trata de obtener x[ n] como la suma muestra a muestra de x1[ n] y x2 [ n] . El


algoritmo para evaluar numricamente la suma, se basa en completar ceros para lograr
que las dos secuencias tengan la misma longitud y base de tiempo. Utilizando esta
estrategia y operaciones de indexacin de arreglos, se desarroll la funcin especial

sumasec() de MATLAB cuya sintaxis se muestra a continuacin:

[x,n]=sumasec(x1,n1,x2,n2)

donde x1, n1, x2, n2, son arreglos con las muestras y la base de tiempo de las secuencias
x1[ n] y x2 [ n] , respectivamente. Los argumentos de salida x, n guardan las muestras de
la suma y la base de tiempo resultante.

2. Multiplicacin de secuencias. Definida como:


x[ n] = x1[ n] x2 [ n] = { x1[ n] x2 [ n]} (1.20)

Se trata de construir x[ n] como el producto muestra a muestra de x1[ n] y x2 [ n] ,


ajustndolas previamente a la misma longitud y base de tiempo. Usando esta estrategia
se desarroll la funcin especial multsec(), cuya sintaxis es:
1.3 SEALES EN TIEMPO DISCRETO 7 - 17

[x,n] = multsec(x1,n1,x2,n2)
Los argumentos de entrada y salida son similares a la funcin especial sumasec().
3. Transformaciones en la base de tiempo. Definida en general como:

xm [ n] = x[ k] k= a n+ b = x[ an + b] (1.21)

Para reconocer las operaciones realizadas, se puede modificar la expresin anterior como
xm [ n] = x[ a( n + b / a )]
que permite identificar tres operaciones bsicas:
- escalamiento en tiempo por el factor a.
- desplazamiento en tiempo de b / a muestras hacia adelante.
- reflexin en tiempo, si a < 0 .

Como la variable de tiempo es entera, si a > 1 ocurre una compresin de la seal y en


consecuencia se pueden perder algunas de sus muestras. Por otro lado, si a < 1 se
origina una expansin, que resulta en muestras no definidas para algunos valores de la
base de tiempo original. Para facilitar la evaluacin numrica de esta operacin se
desarroll la funcin especial transtd() cuya sintaxis es
[xn,n] = transtd(xk,k,a,b)

Los argumentos de entrada y salida se ajustan a la definicin (1.21).

4. Transformaciones de amplitud. Definida como:

xm [ n] = A x[ n] + B (1.22)

Para evaluar numricamente (1.22) en MATLAB no se requiere de ningn algoritmo,


salvo el ajuste en la base de tiempo para efectos de simulacin.

Para facilitar la simulacin y garantizar un resultado adecuado, es conveniente evaluar el


dominio y rango de la secuencia modificada xm [ n] . Si Dx = [ D1 , D2 ] es el dominio de
x[ n] , aplicando (1.21) el dominio de xm [ n] debe ser

Dx b
Dxm = = [ D3 , D4 ] (1.23)
a
Si a < 0 existe reflexin en tiempo y debern intercambiarse los valores de D3 y D4 . De
modo similar, si Rx = [ R1 , R2 ] es el rango de x[ n] , segn (1.22) el rango de xm [ n] debe ser

Rxm = A Rx + B = [ R3 , R4 ] (1.24)
Si A < 0 existe reflexin de amplitud y debern intercambiarse los valores de R3 y R4 .
1 - 18 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Finalmente, es necesario ajustar el dominio de simulacin de x[ n] , de modo que garantice


los valores calculados a partir de (1.23). El valor ajustado es

Ds = [ min( D1 , D3 ), max( D2 , D4 )] (1.25)

Utilizando este algoritmo se desarroll la funcin especial xn2xm(), cuya sintaxis es:
[Dxm,Rxm,Ds] = xn2xm(Dxn,Rxn,a,b,A,B)

donde Dxn y Rxn son arreglos de dos elementos correspondientes al dominio y rango
originales de x[ n] . Los escalares a, b, A y B son los parmetros incluidos en (1.21) y (1.22).
Los argumentos de salida Dxm y Rxm son arreglos de dos elementos correspondientes al
dominio y rango de xm [ n] . El vector Ds contiene los dos elementos del dominio para la
simulacin de la seal original.

Ejemplo 1.7: Dada x[ n] = {1,2,3,4,5,6,7,6,5,4,3,2,1} , generar las siguientes secuencias:



Realizacin
directa e
indirecta de
a. x 1[ n] = x[ 2 n + 4] .
transforma- b. x 2 [ n] = 3 x[ n 2] + 4 .
ciones
Solucin: Utilizando el siguiente guin de MATLAB se pueden simular x[ n] , como:

n=-2:10; xn=[1:7,6:-1:1];
La grfica correspondiente se muestra en la figura 1.9.

Figura 1.9
Secuencia
original x[ n] del
ejemplo 1.7.

Definimos la funcin externa para obtener x1[ n] por simulacin directa:


function xn=xndspe1p7(n)
xn=(n+3).*(escad(n+2)-escad(n-4))-...
(n-11).*(escad(n-4)-escad(n-11));
return

Utilizando (1.23) y (1.25) o la funcin especial xn2xm() el dominio apropiado


para simular la secuencia original debe ser [ 3,10] . Luego
n=-3:10; x1n=xndspe1p7(-2*n+4);
%comandos de graficacin...
1.3 SEALES EN TIEMPO DISCRETO 7 - 19

La grfica se muestra en la parte superior de la figura 1.10, donde se puede


observar la reflexin, el desplazamiento de 2 muestras hacia atrs y el
escalamiento por un factor de 2. Esta ltima operacin produce la prdida de
muestras por efecto de la compresin que sufre la base de tiempo.

Figura 1.10
Secuencia
modificada
x[ 2 n + 4] del
ejemplo 1.7.

Para la simulacin indirecta utilizamos la funcin especial transtd():


a=-2, b=4, n=-2:10; xn=[1:7,6:-1:1];
[x1m,n1]=transtd(xn,n,a,b);
%comandos de graficacin...

La grfica se muestra en la parte inferior de la figura 1.10 y como era de


esperarse es igual al resultado que se obtuvo utilizando simulacin directa.

Para la simulacin directa de la secuencia x2 [ n] se puede verificar con ayuda


de (1.23) y (1.25) o xn2xm() que el dominio apropiado es [ 2,12] . Luego
n=-2:12; x2n=3*xndspe1p7(n-2)+4;
%comandos de simulacin...
La grfica correspondiente se muestra en la parte superior de la figura 1.11.
Utilizando simulacin indirecta:
a=1, b=-2, n=-2:10; xn=[1:7,6:-1:1];
[x2m,n2]=transtd(xn,n,a,b); x2m=3*x2m+4;
%comandos de simulacin...

La grfica se muestra en la parte inferior de la figura 1.11, la cual coincide con


el resultado de la simulacin directa.
1 - 20 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Figura 1.11
Secuencia
modificada
3 x[ n 2] + 4 del
ejemplo 1.7.

Ejemplo 1.8: Para la secuencia x[ n] del ejemplo 1.7, generar las siguientes secuencias:
Operaciones
con a. x1[ n] = 2 x[ n 5] 3 x[ n + 4] . b. x2 [ n] = x[3 2 n] + x[ n] x[ n 2] .
secuencias.
Solucin: Para la simulacin directa de x1[ n]

n=-6:15; x1n=2*xndspe1p7(n-5)-3*xndspe1p7(n+4);
%comandos de graficacin...

Figura 1.12
Secuencias
compuestas usando
simulacin directa.
1.3 SEALES EN TIEMPO DISCRETO 7 - 21

La grfica se muestra en la parte superior de la figura 1.12. Para la simulacin


directa de x2 [ n]
n=-3:12; x2n=xndspe1p7(3-2*n)+xndspe1p7(n).*xndspe1p7(n-2);
%comandos de graficacin...

La grfica correspondiente se muestra en la parte inferior de la figura 1.12.


Como las dos secuencias anteriores tienen dos componentes, es necesario
calcular el dominio de simulacin de cada una a partir de de (1.23) y (1.25) o
xn2xm() y luego tomar la unin de los dos.

Utilizando simulacin indirecta para x1[ n] , obtenemos


n=-2:10; xn=xndspe1p7(n); [x11,n11]=transtd(xn,n,1,-5);
[x12,n12]=transtd(xn,n,1,4);
[x1,n1]=sumasec(2*x11,n11,-3*x12,n12);
%comandos de graficacin...
Aplicando el mismo procedimiento para x2 [ n]
[x21,n21]=transtd(xn,n,-2,3);
[x22a,n22a]=transtd(xn,n,1,-2);
[x22,n22]=multsec(xn,n,x22a,n22a);
[x2,n2]=sumasec(x21,n21,x22,n22);
%comandos de greficacin...

La grfica correspondiente se muestra en la figura 1.13, que coincide con el


resultado de la figura 1.12.

Figura 1.13
Secuencias
compuestas usando
simulacin indirecta.
1 - 22 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

5. Suma de muestras. Definida como:


n2

x[ n] = x[ n ] +
n1
1 + x[ n2 ] (1.26)

Esta operacin difiere de la suma de secuencias. Se trata de obtener la suma de las


muestras en el intervalo [ n1 , n2 ] , que puede realizarse usando sum(x(n1:n2)).

6. Producto de muestras:
n2

x( n) = x[ n ]
n1
1 x[ n2 ] (1.27)

Esta operacin tambin difiere del producto de seales. Se trata de obtener el producto
de todas las muestras en el intervalo [ n1 , n2 ] , que puede lograrse usando la funcin
prod(x(n1:n2)).

7. Energa de un seal: Dada una secuencia aperidica x[ n] y compleja se define como


x[ n] x *[ n] = x[ n]
2
Ex (1.28)

Si x[ n] es una secuencia compleja, puede ser evaluada usando Ex=sum(x.*conj(x)) o


Ex=sum(abs(x).^2).

Si x[ n] es real, la expresin (1.28) se reduce a



Ex = x2 [ n] (1.29)

y puede evaluarse como Ex=sum(x.^2)


8. Potencia de una seal: Dada una secuencia peridica x[ n] y compleja se define como
N 1
1
x[ n]
2
Px = (1.30)
N 0

reconocida como la potencia media de una secuencia con perodo fundamental N . En en


MATLAB puede evaluarse como: x=xp(1:N); Px=sum(abs(x).^2)/N.

Si x[ n] es real, la expresin (1.30) se reduce a


N 1
1
Px =
N
x [ n]
0
2
(1.31)

y puede evaluarse como: Px=sum(x.^2)/N.


1.3 SEALES EN TIEMPO DISCRETO 7 - 23

Otros aspectos importantes


A continuacin se har un resumen de algunos aspectos adicionales que son importantes en el
procesamiento de seales discretas:

1. Sntesis de una secuencia arbitraria.


Cualquier secuencia arbitraria x[ n] puede ser sintetizada como una suma ponderada de
secuencias impulso desplazadas y escaladas de la forma:

x[ n] = x[ k] [ n k]
k =
(1.32)

2. Simetra par e impar de una seal: Una secuencia real x[ n] tiene simetra par si
x[ n] = x[ n] (1.33)
De manera similar, una secuencia real x[ n] tiene simetra impar si
x[ n] = x[ n] (1.34)

3. Componentes par e impar: Una secuencia real arbitraria x[ n] puede expresarse como la
suma de una componente par e impar

x[ n] = x p [ n] + xi [ n] (1.35)

donde
x p [ n] = ( x[ n] + x[ n]) xi [ n] = ( x[ n] x[ n]) (1.36)

Este concepto es importante en el estudio de mtodos de Transformacin de Fourier.


Utilizando (1.36) se desarroll la funcin especial parimpd() de MATLAB para obtener la
componente par e impar de una seal discreta finita. Su sintaxis es
[xp,xi,m] = parimpd(x,n)

Ejemplo 1.9: Dada x[ n] = u[ n] u[ n 10] , calcular sus componentes par e impar.


Componentes
par e impar.
Solucin: Asumiendo el intervalo [ 4,10] , la figura 1.14 muestra la secuencia x[ n] que
es reconocida como un pulso rectangular y tiene utilidad prctica en el anlisis
de seales. Utilizando la funciones especiales escad() y parimpd():
n=-4:12; xn=escad(n)-escad(n-10);
[xp,xi,m]=parimpd(xn,n);
comandos de graficacin...
La grfica correspondiente se muestra en la figura 1.14.
1 - 24 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Figura 1.14
Componentes par e
impar de un pulso
rectangular.

En la figura anterior se observa la precaucin que debe tenerse en el uso de la


funcin escaln discreta al simular el pulso rectangular. Adems se pueden
apreciar las propiedades de simetra para e impar.

4. Series geomtricas: Una secuencia exponencial unilateral de la forma n , n 0 donde


es una constante arbitraria, es reconocida como serie geomtrica. En DSP esta serie es
utilizada para evaluar problemas de convergencia. Pueden ocurrir 2 situaciones especiales:

1
Secuencia infinita
n=0
n
=
1
si < 1 (1.37)

N 1
1 N
Secuencia finita n =
n=0 1
, (1.38)

1.4 SISTEMAS DISCRETOS


Matemticamente, un sistema en tiempo discreto o simplemente sistema discreto, se
reconoce como un dispositivo que acta sobre una secuencia x[ n] , identificada como la
excitacin del sistema, para transformarla en otra secuencia y[ n] , conocida como la
respuesta del sistema. En otras palabras, la seal x[ n] es transformada por el sistema para
crear una nueva seal mejorada o para extraer cierta informacin de la seal original. La
transformacin puede expresarse simblicamente, como

y[ n] = T { x[ n]} o x[ n] y[ n] (1.39)
1.4 SISTEMAS DISCRETOS 7 - 25

En DSP se dice que el sistema procesa una seal de entrada en una seal de salida. Los
sistemas discretos pueden clasificarse globalmente en lineales y no lineales.

Respuesta impulso de un sistema lineal e invariante


Un sistema discreto es lineal si y solo si satisface el principio de superposicin. Asumiendo
que x1[ n] y1[ n] y x2 [ n] y2 [ n] , la prueba de linealidad se reduce a demostrar que

a1 x1[ n] + a2 x2 [ n] a1 y1[ n] + a2 y2 [ n] (1.40)

Utilizando la expresin de sntesis (1.32) de una seal discreta, es posible expresar la


respuesta del sistema utilizando la sumatoria de superposicin, como:

y[ n] = x[ k] h[ n, k] (1.41)
k =

donde h[ n, k] se reconoce como la funcin caracterstica o respuesta impulso del sistema.


La expresin anterior implica un sistema cuya respuesta impulso es variante en el tiempo.
Sin embargo, en adelante asumiremos un sistema lineal e invariante en el tiempo (LTI).

Un sistema se considera invariante en el tiempo, si al generar un desplazamiento de k


muestras en la entrada x[ n] o en la salida y[ n] , la relacin entrada salida sigue siendo

x[ n k] y[ n k] (1.42)

La figura 1.15 muestra la aplicacin de la prueba de invarianza de un sistema LIT


representado por el operador L[] .

x[ n] y [ n] y[ n k]
L[] Desplazar k
muestras
Figura 1.14
Prueba de
invarianza en un x[ n] Desplazar k x[ n k] y[ n k]
sistema LIT. L[]
muestras

De este modo, la expresin (1.41) se transforma en:



y[ n] = x[ k] h[ n k] (1.43)
k=

La ecuacin (1.43) se reconoce como la sumatoria de convolucin o convolucin lineal. En


esta expresin es posible desplazar la secuencia x[ n] y mantener fija a h[ n] , como una
expresin alterna para evaluar la convolucin:
1 - 26 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO


y[ n] = x[ n k] h[ k] (1.44)
k =

Luego, la convolucin lineal es conmutativa y puede expresarse simblicamente como


y[ n] = x[ n] h[ n] = h[ n] x[ n] (1.45)

Este razonamiento permite establecer que un sistema discreto LIT (en reposo), es
completamente caracterizado en el dominio del tiempo por su respuesta impulso h[ n] , tal
como se indica en la figura 1.15.

Figura 1.15
Respuesta x[ n] y[ n]
impulso como h[ n]
modelo de un
sistema LIT. (Reposo)

Propiedades de un sistema LIT


1. Estabilidad: Un sistema discreto LIT se dice que tiene estabilidad de entrada acotada y
salida acotada (BIBO) si:

x[ n] < y[ n] < (1.46)

En este sentido, un sistema discreto LIT se dice que tiene estabilidad acotada o BIBO si
su respuesta impulso es absolutamente sumable:

Estabilidad BIBO
n =
h[ n] < (1.47)

2. Causalidad: Un sistema discreto LIT se considera causal, si la salida no depende de


valores futuros de la entrada. El sistema es causal, si y solamente si:

h[ n] = 0, para n < 0 (1.48)

Una secuencia que satisface esta condicin, se reconoce como una secuencia causal y
se dice que es fsicamente realizable.

1.5 CONVOLUCIN LINEAL

En las ltimas lneas de la seccin anterior, se introdujo el concepto de convolucin. En


DSP la convolucin se utiliza para evaluar la respuesta forzada y[ n] de un sistema
discreto LIT a una entrada arbitraria x[ n] , asumiendo que el sistema est modelado por su
respuesta impulso h[ n] y se encuentra en reposo al aplicar x[ n] .
1.5 CONVOLUCION LINEAL 7 - 27

En DSP asumimos que los sistemas son causales, en cuyo caso h[ k] en la sumatoria (1.44)
solo existe para k 0 y se reduce a

y[ n] = x[ n k] h[ k] (1.49)
k=0

Si adems la entrada es causal, x[ n k] > 0 y solo existe para k < n y por lo tanto
n n
y[ n] = x[ n k] h[ k] = x[ k] h[ n k] (1.50)
k=0 k=0

Si x[ n] y h[ n] se expresan como funciones algebraicas (de duracin finita o infinita), es


posible evaluar analticamente (1.50). La interpretacin grfica del desplazamiento
x[ n k] o h[ n k] es fundamental para facilitar la solucin analtica de la convolucin.

Otro elemento importante en la evaluacin de la convolucin es el clculo del dominio de


y[ n] , a partir del dominio de las componentes. Si el dominio de x[ n] es Dx = [ n 1, n 2 ] y el
dominio de h[ n] es Dh = [ n 3, n 4 ] , es fcil comprobar que el dominio de y[ n] es

Dy = [ n1 + n3 , n1 + n4 , n2 + n3 , n2 + n4 ] (1.51)
Orden ascendente

En cualquier caso los valores extremos del dominio son n1 + n3 y n2 + n4 . Sin embargo, los
valores intermedios n1 + n4 y n2 + n3 pueden ser de utilidad cuando existen diferentes
expresiones algebraicas como solucin analtica de la convolucin.

Ejemplo 1.10: Obtener la respuesta forzada de un sistema LIT cuya entrada en el pulso
Respuesta rectangular x[ n] = u[ n] u[ n 10] del ejemplo 1.10, asumiendo que
forzada usando
convolucin
analtica. h[ n] = (0.9)n u[ n]

Solucin: La entrada x[ n] y la respuesta impulso h[ n] se muestran en la figura 1.16, que


se obtuvieron usando los siguientes comandos bsicos de MATLAB:
n=-5:40; xn=escad(n)-escad(n-10);
hn=(0.9).^n.*escad(n);
comandos de graficacin...
Aplicando (1.51), el dominio de la convolucin es
Dy = [0 + 0, 0 + 9, 0 + , 9 + ] = [0, 9, ]

Este resultado muestra que es necesario considerar 2 intervalos al evaluar la


convolucin: 0 n 9 y n 9 . Por conveniencia desplazamos x[ n] y como
x[ n] y h[ n] son causales, la sumatoria puede evaluarse entre [0,9] .
1 - 28 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Figura 1.16
Secuencia de
entrada y
respuesta
impulso de un
sistema LIT.

Utilizando la definicin de convolucin (1.50) obtenemos:


n
y[ n] = x[ n k](0.9)k u( k)
k= 0

La expresin anterior se reduce esencialmente a evaluar la suma de los trminos


de una serie geomtrica, con excepcin del trmino x[ n k] que puede tomar
valores diferentes, de acuerdo con el valor relativo de k y n. Para facilitar la
evaluacin de los 2 intervalos se har una interpretacin grfica de la posicin
de x[ n k] y h[ k] , a efecto de determinar el rango de valores de k en la
sumatoria.

Caso 1: 0 n 9
La secuencia x[ n k] solapa parcialmente a h[ k] y la sumatoria se debe
evaluar para 0 k n .

x[ n k] n
1 (0.9)n+ 1
h[ k] y 1[ n] = (1)(0.9) =k

k k= 0 1 0.9

n9 0 n 9 y1[ n] = 10 1 (0.9)n+ 1 , 0 n 9

Caso 2: n 9
La secuencia x[ n k] solapa totalmente a h[ k] y la sumatoria se debe evaluar
para n 9 k n .
1.5 CONVOLUCION LINEAL 7 - 29

x[ n k] n
h[ k]
k
y 2 [ n] = (1)(0.9)
k= n 9
k

0 n9 9 n (0.9)n9 (0.9)n+ 1
y 2 [ n] =
1 0.9
Esta expresin se obtiene aplicando una variante de la geomtrica (1.38)
N2
N1 N2 + 1
n =
n = N1 1
, 1

Evaluando el resultado, obtenemos


y[ n] = 6.5132(0.9)n9 , n 9
La solucin completa es
10 1 (0.9)n+ 1 , 0 n 9
y[ n] =
n9
6.5132(0.9) , n 9

Simulando las expresiones anteriores se obtuvo la figura 1.17, con el apoyo de los
siguientes comandos bsicos:
y0=0*(n<0);
y1=10*(1-(0.9).^(n+1)).*(0<=n & n<=9);
y2=6.5132*(0.9).^(n-9).*(n>9);
yn=y0+y1+y2;
comandos de graficacin...

Figura 1.17
Respuesta
forzada de un
sistema LIT
usando
convolucin.

La convolucin de seales discretas finitas experimentales (no determinsticas) se puede


evaluar numricamente. En este mtodo, h[ n k] es interpretada como reflexin y
desplazamiento de h[ k] . De este modo, la salida y[ n] se calcula como una simple suma de
las muestras solapadas entre h[ n k] y x[ k] , que pueden ser organizadas en un tabla, tal
como se muestra en el siguiente ejemplo y el mtodo se reconoce como evaluacin tabular.
1 - 30 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Ejemplo 1.11: Evaluar la convolucin lineal x[ n] = x1[ n] x2 [ n] de las siguientes


Convolucin secuencias, usando evaluacin tabular:
por el mtodo
tabular. x [ n] = {2,5,0,4}
1 x [ n] = {4,1,3}
2

Solucin: Aplicando (1.51) para los valores extremos de las 2 secuencias discretas:

Dx1 = [ 2, 1], Dx2 = [ 1, 1], Dx = [ 3, 2]

Asumiendo que se mantiene fija a x2 [ n] por tener el menor nmero de


muestras, obtenemos

n 3 2 1 0 1 2
x1[ n] 2 5 0 4
x2 [ n] 4 1 3
8 20 0 16
2 5 0 4
6 15 0 12
x[ n] 8 22 11 31 4 12

Implementacin de la convolucin en MATLAB


En el caso de secuencias arbitrarias de duracin infinita, no es posible aplicar directamente
MATLAB para evaluar la convolucin. El programa ofrece una funcin interna
denominada conv() que calcula la convolucin entre dos secuencias finitas. Esta funcin
asume que las dos secuencias involucradas son causales y se invoca como:

y = conv(x,h);
Aplicando al ejemplo 1.11, obtenemos:
x1=[2,5,0,4]; x2=[4,1,3]; x=conv(x1,x2)
x = 8 22 11 31 4 12

El resultado anterior es correcto, en lo que respecta a los valores de x[ n] . Sin embargo, no


suministra ninguna informacin relativa a la base de tiempo de x[ n] . El problema se puede
resolver si se desarrolla un algoritmo para determinar el dominio de la convolucin. La
clave est en la expresin (1.51), que fue aplicada al comienzo del ejemplo 1.11 y permiti
reconoce que Dx = [ 3, 2] . Utilizando esta estrategia se desarroll la funcin especial
convm() cuya sintaxis es
1.5 CONVOLUCION LINEAL 7 - 31

[y,n] = convm(x,nx,h,nh)
Aplicando al ejemplo 1.11, obtenemos
x1=[2,5,0,4]; n1=-2:1; x2=[4,1,3]; n2=-1:1;
[x,n]=convm(x1,n1,x2,n2)
x = 8 22 11 31 4 12
n = -3 -2 -1 0 1 2

Correlacin de seales
Es una operacin muy utilizada en aplicaciones DSP para medir el grado de similitud de
dos seales discretas y determinar informacin adicional basada en dicha similitud. Por
ejemplo en comunicaciones digitales, un conjunto de smbolos de datos se representa
mediante un grupo de secuencias nicas en tiempo discreto. Si una de estas secuencias se
transmite, el receptor debe identificarla, comparando la seal recibida con cada miembro de
las secuencias del grupo. De modo similar, en aplicaciones de radar y sonar, la seal
reflejada recibida desde el blanco o target es una versin atrasada de la seal transmitida
y midiendo el atraso es posible determinar la localizacin del objetivo. La deteccin se
complica en la prctica porque generalmente la seal recibida est contaminada con ruido.

Dadas dos secuencias reales de energa finita x[ n] y y[ n] , la correlacin cruzada es la


secuencia rxy [ ] , definida como:

rxy [l ] x[ n] y[ n l ]
n =
(1.52)

El parmetro = 0, 1, 2, , se reconoce como el ndice de desplazamiento o retardo.


En la expresin (1.52) x[ n] representa la secuencia de referencia que permanece fija en el
tiempo y y[ n] la secuencia que es desplazada respecto de x[ n] . El caso especial, cuando
y[ n] = x[ n] se identifica como la auto correlacin de una seal:

rxx (l ) x[ n]x[ n l ] = x[
n =
] x[ ] (1.53)

que permite medir la auto-similitud de diferentes alineaciones de la secuencia x[ n] .


Comparando (1.52) y (1.43) se puede observar la similitud entre la correlacin cruzada y
convolucin. De este modo, la correlacin cruzada y la auto correlacin pueden evaluar a
usando la convolucin lineal, como:

rxy [l ] = x[l ] y[ l ] rxx [l ] = x[l ] x[ l ] (1.54)

En MATLAB podemos utilizar las funciones conv() o convm() para resolver problemas de
correlacin de secuencias finitas.
1 - 32 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Ejemplo 1.12: Dada la secuencia finita x[ n] = {3, 11, 7, 0 , 1, 4, 2} y la secuencia



Correlacin
cruzada y[ n] = x[ n 2] + w[ n]
utilizando
convolucin que es una versin desplazada y contaminada de x[ n] , donde w[ n] es una
lineal.
secuencia de ruido Gausiano o ruido blanco. Evaluar la correlacin cruzada
entre x[ n] y y[ n] para demostrar su similitud.

Solucin: De la construccin de y[ n] se deduce que es similar a x[ n 2] y por lo tanto su


correlacin cruzada debera mostrar la similitud para = 2 . Para probar esto,
podemos evaluar la correlacin utilizando dos secuencias diferentes de ruido.
% secuencia de ruido 1
x=[3,11,7,0,-1,4,2]; nx=[-3:3];
[y,ny]=transtd(x,nx,1,-2); w=randn(1,length(ny)); nw=ny;
[y,ny]=sumasec(y,ny,w,nw); [x,nx]=transtd(x,nx,-1,0);
[rxy,nrxy]=convm(y,ny,x,nx);
% secuencia de ruido 2
x=[3,11,7,0,-1,4,2]; nx=[-3:3]; [y,ny]=transtd(x,nx,1,-2);
w=0.25*randn(1,length(ny))-0.5; nw=ny;
[y,ny]=sumasec(y,ny,w,nw); [x,nx]=transtd(x,nx,-1,0);
[rxy,nrxy]=convm(y,ny,x,nx);
comandos de graficacin...

Figura 1.18
Correlacin
cruzada
utilizando
involucin lineal.

El resultado se muestra en la figura 1.18, donde se observa que la correlacin


cruzada alcanza su mximo en = 2 , lo cual implica que y[ n] es similar a
x[ n] con un atraso 2 muestras.
1.6 ECUACIONES EN DIFERENCIAS 7 - 33

1.6 ECUACIONES EN DIFERENCIAS


Un sistema discreto LIT se puede describir a travs de una ecuacin en diferencias (EED)
de orden-N con coeficientes constantes de la forma:
N M
y[ n] + ak y[ n k] = bk x[ n k] (1.55)
k= 1 k= 0

Sujeta a las siguientes condiciones iniciales:


{ y[ n]: N n 1} {x[ n]: M n 1}

Despejando y[ n] se consigue un modelo recursivo para resolver numricamente la EDD


[ReySoto08], evaluando el valor actual de la salida del sistema a partir de los valores de la
entrada y los valores previos de la salida:
M N
y[ n] = bk x[ n k] ak y[ n k]
k=0 k= 1

La solucin analtica de la EED puede obtenerse usando el mtodo clsico, como:


y[ n ] = y H [ n ] + y P [ n ]
La solucin homognea y H [ n] se puede obtener como:
N
y H [ n[ = ck zkn (1.56)
k= 1

donde zk , k = 1, 2, , N las races o frecuencias naturales de la ecuacin caracterstica:


N

c z
k= 1
k
k
=0 (1.57)

Esta ecuacin es importante en la determinacin de la estabilidad de un sistema LIT. Se


puede demostrar [ReySoto08] que si las races zk satisfacen la condicin

zk < 1, k = 1, 2, , N (1.58)

el sistema descrito por la EED tiene estabilidad BIBO y por lo tanto es absolutamente
estable. La solucin particular, y P [ n] se determina a partir de la forma de la seal de
entrada x[ n] .

Ejemplo 1.13: Obtener la solucin completa para n 0 de la siguiente la siguiente EDD


Solucin y[ n] 1.5 y[ n 1] + 0.5 y[ n 2] = x[ n], n 0
completa de la
y[ 1] = 4 , y[ 2] = 10 y una entrada x[ n] = ( 0.25 ) u[ n] .
EED usando el asumiendo n

mtodo clsico.
1 - 34 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Solucin: Para la solucin homognea, obtenemos la EC, asumiendo y H [ n] = z n

1 1.5 z1 + 0.5 z2 = z2 ( z2 1.5 z + 0.5) = 0


cuyas races son z1 = 1 y z2 = 0.5 . Aplicando(1.56)

y H [ n] = C1 + C2 (0.5)n , n

Para la solucin particular asumimos y P [ n] = K 1(0.25)n u( n) . Sustituyendo en la


EED, obtenemos

K 1(0.25)n u[ n] 1.5 K 1(0.25)n1 u[ n 1] + 0.5 K 1(0.25)n2 u[ n 2] = (0.25)n u[ n]

El valor de K 1 se obtiene evaluando la identidad anterior para un valor


arbitrario de n que no anule ningn trmino, en este caso n 2 . Para n = 2

K 1(0.25)2 1.5 K 1(0.25) + 0.5 K 1 = (0.25)2

Resolviendo obtenemos K 1 = 1/ 3 . Por lo tanto, la solucin completa es

y[ n] = y H [ n] + y P [ n] = C1 + C2 (0.5)n + 31 (0.25)n , n 0

Para calcular C1 y C2 se requieren dos condiciones iniciales equivalentes para


n 0 : y[0] = 2 y y[1] = 1.25 . Estos valores se consiguen resolviendo en forma
recursiva la EED para n = 0 y n = 1 a partir de y[ 1] y y[ 2] . Evaluando la
solucin completa para estos valores

y[0] = C1 + C2 + 31 = 2 y[1] = C1 + 21 C2 + 12
1 = 5
4

Resolviendo simultneamente, obtenemos C1 = 2 / 3 y C2 = 1 . Luego,

y[ n] = 23 + ( 21 ) + 31 ( 41 ) , n 0
n n

Componentes de la solucin de la EED


En aplicaciones DSP una EED generalmente es resuelta a partir de n = 0 . Por lo tanto, tal
como se demostr en el ejemplo 1.13, es necesario evaluar las condiciones iniciales de
y[ n] y x[ n] para n 0 en la determinacin de la respuesta del sistema LIT.

La solucin de la EED (1.55), puede ser expresada como:


y[ n ] = y N [ n ] + y F [ n]

donde y N [ n] es reconocida como la respuesta natural o respuesta de entrada-cero, que es


la parte de la solucin debida solo a las condiciones iniciales del sistema.
1.6 ECUACIONES EN DIFERENCIAS 7 - 35

Por otro lado y F [ n] se conoce como la respuesta forzada o respuesta a estado-cero, que es
la parte de la solucin debida solo a la entrada (asumiendo condiciones iniciales cero o
reposo). Estos aspectos sern ampliados en el captulo 2, donde se demostrar que el uso de
la transformada Z, facilita considerablemente la solucin analtica de la EED.

Solucin numrica de la ED y estabilidad en MATLAB


Aunque la solucin analtica de una EED suministra informacin importante sobre el
sistema LIT, la solucin numrica es ms prctica. MATLAB dispone de la funcin
filter() para resolver numricamente una EDD, a partir de la entrada x[ n] y de los
coeficientes de la ecuacin. Su sintaxis es:
y = filter(b,a,x);

donde b y a son arreglos de los coeficientes del lado derecho e izquierdo de la EDD,
respectivamente; el vector x es la seal de entrada. Como en la expresin anterior no se
incluyen condiciones iniciales, el resultado numrico logrado en y corresponde a la
respuesta forzada. A continuacin ilustramos el uso de esta funcin.

Ejemplo 1.14: Dada la siguiente EED


Respuesta
forzada y y[ n] y[ n 1] + 0.9 y[ n 2] = x[ n]
estabilidad de
un sistema LIT Calcular y dibujar la respuesta impulso h[ n] y la respuesta escaln s[ n]
representado para n = [ 10,60] . Evaluar la estabilidad del sistema.
por su EED.

Solucin: El siguiente guin de MATLAB permite evaluar h[ n] y s[ n]
b=1; a=[1,-1,0.9];
n=-10:60; xn=impud(n); hn=filter(b,a,xn);
xn=escad(n); sn=filter(b,a,xn);
%comandos de graficacin

Las grficas correspondientes de muestran el la figura 1.19. Como en la


formulacin de la EED y en la evaluacin numrica no se han considerado
condiciones iniciales, los resultados anteriores corresponden a la respuesta
forzada del sistema LIT. De acuerdo con estas grficas, la funcin filter()
evala la respuesta para n 0 , asumiendo que se trata de un sistema causal.

En la figura 1.19 se observa que la respuesta impulso h[ n] es sumable,


cumpliendo con (1.47). Luego el sistema es absolutamente estable. En efecto
sumh=sum(abs(hn))
sumh = 14.3359
1 - 36 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Figura 1.19
Respuesta impulso
y respuesta
escaln usando
filter().

De modo similar, la figura 1.19 muestra que la respuesta escaln s[ n] es


acotada. Como la entrada u[ n] tambin es acotada, el sistema posee estabilidad
BIBO y por lo tanto es absolutamente estable.

Finalmente, evaluando las races de la ecuacin caracterstica (EC):


zk=roots(a), magzk=abs(zk)
Zk = 0.5000 + 0.8062i magzk = 0.9487
0.5000 - 0.8062i 0.9487
que satisface la condicin (1.58), luego el sistema es absolutamente estable.

Ejemplo 1.15: Consideremos la convolucin lineal del ejemplo 1.10 donde la secuencia de
Correlacin entrada es finita y definida como:
cruzada
utilizando
convolucin x[ n] = u[ n] u[ n 10]
lineal.
mientras que la respuesta impulso es infinita y representada por:
h[ n] = (0.9)n u[ n]
Calcular y dibujar la respuesta forzada y[ n] = h[ n] x[ n] .

Solucin: Como h[ n] es de duracin infinita, no podra utilizarse la funcin conv() para


evaluar numricamente la respuesta del sistema. Una alternativa es usar
filter() pero se requiere la EED. En este caso particular es fcil reconstruir la
EED de orden-1, usando el siguiente artificio algebraico:
1.6 ECUACIONES EN DIFERENCIAS 7 - 37

(0.9) h[ n 1] = (0.9)(0.9)n 1 u[ n 1] = (0.9)n u[ n 1]

h[ n] (0.9) h[ n 1] = (0.9)n u[ n] (0.9)n u[ n 1] = (0.9)n [ n]


Aplicando la propiedad de muestreo de la seal impulso
h[ n] (0.9) h[ n 1] = [ n]
Considerado que para x[ n] = [ n] y[ n] = h[ n] , la EED es
y[ n] (0.9) y[ n 1] = x[ n]
Aplicando filter() obtenemos
b=1; a=[1,-0.9]; n=[-5:40];
xn=escad(n)-escad(n-10);
yn=filter(b,a,xn);
comandos de graficacin...

La grfica se muestra en la parte superior de la figura 1.20, que coincide con la


evaluacin analtica del ejemplo 1.10, mostrada en la figura 1.17.

Figura 1.20
Convolucin
numrica usando
filter() y error
al usar convm().

La parte inferior de la figura 1.20 muestra la convolucin lineal evaluada


numricamente a travs de la funcin convm(), truncando la respuesta impulso
h[ n] al intervalo n = [ 5, 40] :
hn=(0.9).^n.*escad(n);
[ym,m]=convm(xn,n,hn,n);
comandos de graficacin...

Se observa que el resultado es errneo para n > 40 , como consecuencia del


truncamiento.
1 - 38 Captulo 1 SEALES Y SISTEMAS EN TIEMPO DISCRETO

Para lograr el mismo resultado habra limitar el vector ym al intervalo


n = [ 5, 40] , para lo cual se puede usar el siguiente algoritmo:
mm=find(m>=n(1) & m<=n(end));
m=m(mm); ym=ym(mm);
comandos de graficacin...
El resultado se muestra en la figura 1.21.

Figura 1.21
Convolucin
numrica ajustada
usando convm().

En el ejemplo anterior, la respuesta impulso es una funcin exponencial unilateral para la


cual fue posible construir una EED. Esto significa que no todas las respuestas impulsos
infinitas pueden ser convertidas en una EED utilizando este procedimiento algebraico. Sin
embargo, este mtodo podra ser extendido a la combinacin lineal de secuencias
exponenciales unilaterales, que resultaran en una EED de orden mayor. Como veremos en
el prximo captulo, el uso de la transformada Z facilita considerablemente este problema.

Sistemas recursivos y no recursivos


De acuerdo la forma general (1.55) de la EED, pueden ocurrir dos situaciones particulares
que condicionan la forma de evaluar numricamente la respuesta y[ n] . El primer caso se
presenta cuando solo existen diferencias en el lado derecho:
M
y[ n] = bk x[ n k] (1.59)
k=0

que corresponde a un sistema LIT, cuya respuesta no depende de los valores anteriores de
la salida, reconocido como un sistema no recursivo. El orden del sistema se acepta como el
nmero de atrasos M de la secuencia de entrada. Evaluando la respuesta impulso, para
x[ n] = [ n] y y[ n] = h[ n] , obtenemos
M
h[ n] = bk[ n k] (1.60)
k= 0

Luego h[ n] = {b0 , b1 , b2 , , bM } que implica una respuesta impulso finita y en aplicaciones


de DSP se reconoce como un sistema tipo FIR (Finite Impulse Response).
1.6 ECUACIONES EN DIFERENCIAS 7 - 39

El segundo caso ocurre cuando la EED se expresa como:


M N
y[ n] = bk x[ n k] ak y[ n k] (1.61)
k=0 k=1

donde la respuesta del sistema se expresa en funcin de valores anteriores de la salida. Esta
EED caracteriza a un sistema recursivo. Se puede demostrar [ReySoto08] que en este caso
la respuesta impulso es infinita, como en el caso del ejemplo 1.15. Para obtener la respuesta
y[ n] es necesario recurrir a mtodos de transformacin, que sern analizados en el
prximo captulo usando la Transformada Z. Un sistema con respuesta impulso infinita, se
reconoce en DSP como un sistema tipo IIR (Infinite Impulse Response).

You might also like