Está en la página 1de 5

Señales

Ejercicios para resolver


14 de agosto de 2018

Resumen
Las señales básicas utilizadas frecuentemente en procesamiento digital de señales son la señal impulso
unitario δ[n], exponenciales de la forma an u[n], ondas sinusoidales y su generalización a exponenciales
complejas. Los siguientes proyectos están dirigidos a la generación y representación de estas señales en
Matlab. Puesto que el único tipo de datos numéricos en Matlab es la matriz de M × N , las señales deben
ser represntadas como vectores: o matrices de M × 1 si son vectores columna o matrices de 1 × N si son
vectores fila. En Matlab todas las señales deben ser de longitud finita. Esto contrasta fuertemente con la
solución de problemas analı́ticos, donde una fórmula matemática puede ser utilizada para representar una
señal de longitud infinita (p.e., una exponencial decreciente, an u[n]).
Una segunda cuestión es el dominio de indexación asociado con el vector de la señal. Matlab asume
por defecto que un vector es indexado desde 1 hasta N , la longitud del vector. Por el contrario, un vector
de señal es con frecuencia el resultado de muestrear una señal sobre algún dominio donde la indexación va
de 0 a N − 1; o, quizás, el muestreo comienza en algún ı́ndice arbitrario que es negativo, por ejemplo, en
−N . La información acerca del dominio del muestreo no puede ser ligada al vector de la señal que contiene
los valores de la señal. En lugar de esto, el usuario se ve forzado a mantener la pista de esta información
separadamente. Usualmente, esto no es un problema hasta que viene el momento de dibujar la señal, en
cuyo caso el eje horizontal debe ser rotulado apropiadamente.
Un punto final es el uso de la notación de vectores de Matlab para generar señales. Una potencia
significativa del ambiente de Matlab es su notación de alto nivel para la manipulación de vectores; los
lazos for son casi siempre innecesarios. Cuando se crean señales como una onda seno, es mejor aplicar la
función sin a un argumento vector consistente de todas las muestras de tiempo. En los siguientes proyectos,
tratamos las señales comunes que se encuentran en procesamiento digital de señales: impulsos, trenes de
impulsos, exponenciales y sinusoides.
Palabras clave: señales básicas, impulso unitario, exponencial, sinusoide, vector.

1
1. Señales Básicas los L puntos desde n = 0 hasta n = L − 1. Si escogemos
L = 31, el siguiente código de Matlab creará un “impulso”:
Este proyecto se concentra en las cuestiones que se involu-
L = 31;
cran con la generación de algunas señales de tiempo discreto
nn = 0:(L-1);
básicas en Matlab. Mucho del trabajo se centra en el uso
imp = zeros(L,1);
de rutinas de vectores de Matlab internas para la genera-
imp(1) = 1;
ción de señales. Además, será implementada una muestra
de función de Matlab. Note que el ı́ndice n = 0 debe ser referido como imp(1),
debido al esquema de indexación de Matlab.
Sugerencias Dibujar señales de tiempo discreto se ha-
ce con la función stem en Matlab. El siguiente código de a. Genere y grafique las siguientes secuencias. En cada caso
Matlab creará una sinusoide de tiempo discreto de 31 pun- el eje horizontal n debe extenderse únicamente sobre el
tos: rango indicado y debe ser rotulado de acuerdo con este
rango. Cada secuencia debe ser mostrada como una señal
nn = 0:30; %-- vector de ı́ndices de tiempo de tiempo discreto utilizando stem.
sinus = sin(nn/2+1);
Note que el ı́ndice n = 0 debe ser referido como nn(1), x1 [n] = 0,9 δ[n − 5] 1 ≤ n ≤ 20 (2)
debido al esquema de indexación de Matlab; igualmen-
te, sinus(1) es el primer valor de la sinusoide. Cuando se
dibuja la onda seno, usarı́amos la función stem, la cual pro- x2 [n] = 0,8 δ[n] − 15 ≤ n ≤ 15 (3)
duce el dibujo de la señal de tiempo discreto que vemos
comúnmente en los libros de DSP (vea la Figura 1): x3 [n] = 1,5 δ[n − 333] 300 ≤ n ≤ 350 (4)
stem( nn, sinus );
El argumento del primer vector debe ser dado para obtener x4 [n] = 4,5 δ[n + 7] − 10 ≤ n ≤ 0 (5)
el eje n correcto. Para comparar, trate con stem(sinus)
para ver la rotulación por defecto. b. Los impulsos desplazados, δ[n − n0 ], pueden ser utiliza-
dos para construir un tren de impulsos ponderados, con
Onda Seno
perı́odo P y longitud total M P :
1
M
X −1
s[n] = Al δ[n − lP ] (6)
l=0
0.5

Los pesos son Al ; si ellos son todos el mismo, el tren


de impulsos es periódico con perı́odo P . Genere y dibuje
0
un tren de impulsos periódico cuyo perı́odo sea P = 5 y
cuya longitud sea 50. Comience la señal en n = 0. Trate
de utilizar una o dos operaciones entre vectores en lugar
-0.5
del lazo for para colocar las posiciones de los impulsos.
¿Cuántos impulsos están contenidos dentro de la señal
de longitud finita?
-1

c. El siguiente código de Matlab producirá una señal re-


0 5 10 15 20 25 30
índice de tiempo, n petitiva en el vector x:
Figura 1: Dibujo de una señal de tiempo discreto con stem. x = [0;1;1;0;0;0] * ones(1,7);
x = x(:);
size(x) %<--- retorna longitud de la se~
nal

1.1. Impulsos Dibuje x para visualizar su forma; luego suministre una


fórmula matemática similar a (??) que describa esta señal.
La señal más sencilla es la señal impulso unitario (despla-
zado): ( 1.2. Sinusoides
1, n = n0 ,
δ[n − n0 ] = (1) Otra señal muy básica es la onda coseno. En general, se
0, n 6= n0 .
toman tres parámetros para describir completamente una
Para crear un impulso en Matlab, debemos decidir cuánto señal sinusoidal real: Amplitud (A), frecuencia (ω0 ) y fase
de la señal es de interés. Si el impulso δ[n] va a ser utilizado (φ).
para manejar un sistema LTI causal, podrı́amos desear ver x[n] = A cos(ω0 n + φ) (7)

2
a. Genere y dibuje cada una de las siguientes secuencias. a. De la fórmula (12) para la sinusoide de tiempo continuo,
Use la capacidad vectorial de Matlab para hacer esto escriba una función que genere muestras de s(t) para
con una llamada de la función que toma el coseno (o seno) crear una señal de tiempo discreto y de longitud fini-
de un argumento vector. En cada caso, el eje horizontal ta. Esta función requerirá de seis entradas: tres para los
n debe extenderse únicamente sobre el rango indicado y parámetros de la señal, dos para los tiempos de inicio
debe estar rotulado de acuerdo con esto. Cada secuencia y final y una para la frecuencia de muestreo (en Hertz).
debe ser mostrada como una secuencia que usa stem. Puede llamar a la función de Matlab escrita previamen-
te para la sinusoide de tiempo discreto. Para hacer que
π
x1 [n] = sen 17 n

0 ≤ n ≤ 25 (8) la función de Matlab corresponda a la definición de la
señal de tiempo continuo, haga las unidades de segundos
de tiempos de inicio y final, no números de ı́ndice. Use
π

x2 [n] = sen 17 n − 15 ≤ n ≤ 25 (9) esta función para generar una sinusoide muestreada con
la siguiente definición:
π

x3 [n] = sen 3πn + 2 − 10 ≤ n ≤ 10 (10) Frecuencia de la se~ nal = 1200 Hz
Fase inicial = 45◦
Amplitud = 50
√π n

x4 [n] = cos 23
0 ≤ n ≤ 50 (11)
Frecuencia de muestreo = 8 kHz
b. Escriba una función de Matlab que genere una sinusoide Tiempo de inicio = 0 s
de longitud finita. La función necesitará un total de cinco Tiempo final = 7 ms
argumentos de entrada: tres para los parámetros y dos Haga dos gráficas de la señal resultante: una como fun-
más para especificar el primero y el último ı́ndice n. La ción del tiempo t (en milisegundos) y la otra como fun-
función deberá retornar un vector columna que contiene ción del ı́ndice de muestra n utilizado en tn = nT . Deter-
los valores de la sinusoide. Pruebe esta función dibujando mine la longitud de la señal de tiempo discreto resultante
los resultados para varias selecciones de los parámetros y el número de perı́odos de la sinusoide incluidos en el
de entrada. En particular, muestre cómo genera la señal vector.
2 sin(πn/11) para −20 ≤ n ≤ 20.
c. Modificación: Reescriba la función de la parte (b) para b. Demuestre por medio de manipulaciones matemáticas
que retorne dos argumentos: un vector de ı́ndices sobre que muestrear un coseno en los tiempos tn = n + 34 T
el rango de n y los valores de la señal. resultará en una señal de tiempo discreto que aparenta
ser una onda seno cuando f0 = 1/T . Use la función de la
parte (a) para generar una onda seno de tiempo discreto
1.3. Sinusoides Muestreadas cambiando los tiempos de inicio y final del muestreo.
Frecuentemente una señal de tiempo discreto es producida
por muestreo de una señal de tiempo continuo tal como
1.4. Exponenciales
una onda seno de frecuencia constante. La relación entre la
frecuencia de tiempo continuo y la frecuencia de muestreo La exponencial decreciente es una señal básica en DSP por-
es el principal punto del teorema de muestreo de Nyquist- que aparece como la solución a las ecuaciones en diferencias
Shannon, el cual requiere que la frecuencia de muestreo sea lineales con coeficientes constantes.
al menos dos veces la frecuencia más alta en la señal para
reconstrucción perfecta. a. Estudie la siguiente función de Matlab para ver cómo
En general, una sinusoide de tiempo continuo está dada genera una señal exponencial de tiempo discreto. Lue-
por la siguiente fórmula matemática: go utilice la función para dibujar la exponencial x[n] =
(0,9)n sobre el rango n = 0, 1, 2, . . . , 20.
s(t) = A cos(2πf0 t + φ) (12)
donde A es la amplitud, f0 es la frecuencia en Hertz y φ es function y = genexp( b, n0, L )
la fase inicial. Si una señal de tiempo discreto es producida % GENEXP genera una se~
nal exponencial: b^n
por medio de muestreo regular de s(t) a una frecuencia de % uso: Y = genexp( B, N0, L )
fs = 1/T , obtenemos % B escalar de entrada
% N0 ı́ndice de inicio (entero)
s[n] = s(t) = A cos(2πf0 T n + φ) % L longitud de la se~
nal generada

t=nT % Y se~nal de salida Y(1:L)
= A cos 2π ff0s n + φ

(13) if( L <= 0 )
error(’GENEXP: longitud no positiva’)
Comparando con la fórmula (7) para una sinusoide de end
tiempo discreto, x[n] = A cos(ω0 n + φ), muestra que la fre- nn = n0 + [1:L]’ - 1; % vector de ı́ndices
cuencia normalizada en radianes es ahora una versión esca- y = b .^ nn;
lada de f0 , ω0 = 2π(f0 T ). end

3
b. En muchas derivaciones, la secuencia exponencial an u[n] estudiantes de ingenierı́a eléctrica están familiarizados con
debe ser sumada sobre un rango finito. Esta suma es fasores en conexión con los circuitos ac o sistemas de poten-
conocida en forma cerrada: cia, pero su uso en radar, propagación de ondas y análisis de
L−1
Fourier es del mismo modo significativo (aunque el término
1 − aL
(14) fasor no siempre se utiliza).
X
n
a = para a 6= 1
n=0
1 − a
Sugerencias En Matlab, las funciones real e imag ex-
Utilice la función de la parte (a) para generar una ex- traerán las partes real e imaginaria de un número com-
ponencial y luego súmela; compare el resultado con la plejo. Cuando se dibuja un vector complejo, plot y stem
fórmula (14) por defecto pueden confundir. Si z es complejo, entonces
plot(z) dibujará la parte imaginaria versus la parte real;
c. Una razón para que la secuencia exponencial ocurra tan y plot(n,z) dibujará la parte real de z versus n. Sin em-
frecuentemente en DSP es que el desplazamiento de tiem- bargo, stem(z) justamente dibujará la parte real. Si usted
po no cambia el carácter de la señal. Demuestre que la desea ver dibujos simultáneos de las partes real e imagina-
señal exponencial de longitud finita satisface la relación ria, los comandos subplot(211) y subplot(212) antes de
de desplazamiento: cada comando stem forzarán a que sean colocados los dos
dibujos sobre la misma pantalla, uno encima del otro. Vea
y[n] = a y[n − 1] sobre el rango 1 ≤ n ≤ L − 1 (15) la Figura 2, la cual fue creada utilizando el siguiente código:

comparando los vectores y(2:L) y a*y(1:L-1). Cuando nn = 0:25;


se desplazan señales de longitud finita en Matlab, debe- xx = exp(j*nn/3); %--- exponencial compleja
subplot(211)
mos tener cuidado en los puntos extremos debido a que
stem(nn,real(xx))
no hay relleno de ceros automático. title(’PARTE REAL’), xlabel(’INDICE (n)’)
d. Otra forma para generar una señal exponencial es utili- subplot(212)
stem(nn,imag(xx))
zando una fórmula recursiva dada por una ecuación de
title(’PARTE IMAGINARIA’), xlabel(’INDICE (n)’)
diferencias. La señal y[n] = an u[n] es la solución a la si-
guiente ecuación de diferencias cuando la entrada, x[n], PARTE REAL
es un impulso: 1

y[n] − a y[n − 1] = x[n] (16) 0.5

con condición inicial y[−1] = 0. Cuando la ecuación de di- -0.5

ferencias se asume que recurra de manera causal (es decir, -1


por incremento de n), la condición inicial en n = −1 es 0 5 10 15 20 25
INDICE (n)
necesaria. En Matlab la función filter implementará
PARTE IMAGINARIA
una ecuación de diferencias. Utilice filter para generar
1
la misma señal de la parte (a) (es decir, a = 0,9).
0.5

0
2. Señales de Valor Complejo -0.5

Este proyecto se centra en las cuestiones involucradas con -1

la representación y generación de señales de valor complejo. 0 5 10


INDICE (n)
15 20 25

Aunque en el el mundo real, las señales deben tener va-


lores reales, es con frecuencia extremadamente útil gene- Figura 2: Dibujos de las partes real e imaginaria de una señal de tiempo
discreto con subplot.
rar, procesar e interpretar pares de señales de valor real
como señales de valor complejo. Esto se hace combinando
las señales en un par, como las partes real e imaginaria de
un número complejo y procesando este par con otras señales 2.1. Exponenciales Complejas
de valor complejo utilizando las reglas de la aritmética com- La notación de exponencial real puede ser extendida a las
pleja. El uso de pares de señales de esta forma es una parte señales exponenciales de valor complejo que encierran las
importante de muchos sistemas de procesamiento de señales, señales seno y coseno. Estas señales forman la base de la
especialmente aquellos involucrados en modulación. transformación de Fourier.
Las exponenciales complejas son una clase de señales
complejas que es extremadamente importante debido a que a. En Matlab una señal compleja es una extensión natural
la amplitud compleja (notación de fasor) provee una forma de la notación en el Ejercicio 1.4. Entonces, el paráme-
concisa para describir señales sinusoidales. La mayorı́a de tro a puede ser tomado como un número complejo para

4
generar estas señales. Recuerde la fórmula de Euler para El coeficiente del filtro, z0 = r ejθ , es un número comple-
la exponencial compleja (en la forma que da una señal): jo. La relación entre términos sucesivos en la secuencia
se ve fácilmente que es z0 ; pero la amplitud y fase correc-
x[n] = (z0 )n = e(ln z0 +j∠z0 )n = rn ejθn tas deben ser puestas escogiendo una amplitud compleja
= rn cos(θn) + j sen(θn) para el impulso el cual maneja la ecuación de diferen-

(17)
cias (es decir, x[n] = G δ[n]). Utilice filter para crear
las mismas señales de la parte (c). Verifı́quelas dibujando
donde z0 = rejθ = r∠θ. Use esta relación para generar
las partes real e imaginaria de y[n] y compárelas con las
una exponencial compleja con z0 = 0,9∠45◦ . Dibuje las
señales generadas a través de exp.
partes real e imaginaria de x[n] sobre el rango 0 ≤ n ≤
20. Note que el ángulo de z0 controla la frecuencia de las e. En la ecuación de diferencias de primer orden (20), deje
sinusoides. que yR [n] y yI [n] denoten las partes real e imaginaria de
y[n]. Escriba un par de ecuaciones de diferencias de valor
b. Para la señal de la parte (a), haga un dibujo de la parte
real que expresen yR [n] y yI [n] en términos de yR [n − 1],
imaginaria versus la parte real. El resultado debe ser una
yI [n − 1], x[n] y r, cos θ y sen θ.
espiral. Experimente con diferentes ángulos para θ —un
valor más pequeño debe producir una mejor visión de f. Escriba un programa de Matlab para implementar es-
una espiral. te par de ecuaciones reales y utilice este programa para
generar la respuesta al impulso de la ecuación (20) para
c. La ecuación (17) no es suficientemente general para pro-
r = 12 y θ = 0 y θ = π/4. Para estos dos casos, dibuje la
ducir todas las exponenciales complejas. Lo que se pierde
parte real de las respuestas al impulso obtenidas. Com-
es una constante compleja para escalar la ampliud y la
pare la parte real de la salida de la recursión compleja
fase de las sinusoides. Esto es la ası́ llamada notación
(20).
fasorial :

G · z0n = A ejφ rn ejθn


= Arn ej(θn+φ)
= Arn cos(θn + φ) + j sen(θn + φ)
 
(18)

donde G = Aejφ = A∠φ es la amplitud compleja de la


exponencial compleja. Genere y dibuje cada una de las
siguientes secuencias. Convierta las sinusoides a notación
compleja; luego cree el vector de la señal utilizando exp.
Si la señal es puramente real, debe ser generada tomando
la parte real de una señal compleja. En cada dibujo, el eje
horizontal [n] debe extenderse únicamente sobre el rango
indicado y debe ser rotulado en concordancia.
Para cada señal, determine los valores constantes de am-
plitud y fase que han sido utilizados en G; también el
ángulo y la magnitud de z0 .

π π
 
x1 [n] = 3 sen 7n + j4 cos 7n (19)

 
π
x2 [n] = sen 17 n − 15 ≤ n ≤ 25

 
x3 [n] = (1,1)n cos π
11 n + π
4 0 ≤ n ≤ 50

 
x4 [n] = (0,9)n cos π
11 n − 10 ≤ n ≤ 20

d. Estas mismas exponenciales complejas se pueden gene-


rar por medio de las ecuaciones de diferencias de primer
orden (usando filter):

y[n] = z0 y[n − 1] + x[n] (20)

También podría gustarte