Señales Continuas y Discretas en Octave
Señales Continuas y Discretas en Octave
2.1 OBJETIVO
Una señal es un fenómeno variable que puede ser medida para luego extraer información.
Frecuentemente está relacionado con una cantidad física que varía con el tiempo, sin embargo
podría variar con otros parámetros, tales como la distancia. Como ejemplo se puede considerar el
sonido producido por la voz al generar presión acústica a través del aire, un voltaje eléctrico
producido por un micrófono cerámico al sensar la presión acústica recibido, e imágenes
transmitidas por una cámara de video. La temperatura es otro ejemplo de una señal. Medida cada
hora, la temperatura fluctúa, típicamente desde valores fríos en horas de la mañana a cálidos al
medio día, muy cálido en horas de la tarde y fresco al anochecer, y finalmente valores fríos en la
noche. Con frecuencia también es importante examinar la señal sobre un periodo de tiempo Por
ejemplo si una persona está planeando viajar a una ciudad distante, la temperatura promedio de
dicha ciudad puede darle una idea de que ropa tendrá que llevar. Pero si tiene datos de cómo
cambia la temperatura en un día, le permitirá saber si necesita o no llevar su saco.
Las señales pueden incluir error debido a las limitaciones del dispositivo de medición, o debido
al medio ambiente. Por ejemplo, un sensor de temperatura puede ser afectado por vientos fríos.
La mejor representación de una señal por un computador es una buena aproximación del proceso
físico original.
Algunas señales reales pueden ser medidas en forma continua, tal como la temperatura.
Independientemente del instante que nos fijemos en un termómetro, este nos dará una lectura,
aunque el tiempo entre lecturas es arbitrariamente pequeño. Podemos registrar estas mediciones
en intervalos de tiempo en segundos, minutos, horas, etc. Una vez que hemos registrado estas
mediciones, entenderemos intuitivamente que la temperatura tiene valores entre lecturas, y no
sabremos que valores podrían ser. Por ejemplo, supongamos que vamos a medir la temperatura
cada hora. Haciendo esto, hemos seleccionado ignorar la temperatura durante todo el tiempo
excepto para las lecturas de cada hora. Esta es una idea importante. La señal puede variar con el
tiempo, pero cuando tomamos lecturas periódicamente de la señal, quedamos con una
representación de la señal solamente.
Una señal puede también ser pensado como una secuencia de valores. Es decir, una señal continua
puede tener valores en cualquier índice arbitrario. Una señal discreta, sin embargo, tiene
restricciones sobre los índices, en forma típica estos deben ser enteros. Por ejemplo, la carga de
los vehículos de una empresa de transporte puede ser registrado, numerando cada uno de los
vehículos de acuerdo a su posición relativa en el trayecto. Por simplicidad, se asume una señal
discreta para tener un índice entero, y las relaciones deben darse entre los índices y el tiempo.
En el presente laboratorio, nos concentraremos sobre señales continuas (que tienen índice
continuo y valores continuos) y señales discretas (con índice entero y valor discreto). Muchas de
las señales de la naturaleza son continuas, pero las representadas dentro del computador son
discretas. Una señal discreta es con frecuencia una aproximación de una señal continua. Una
notación convencional que adoptaremos en este curso de laboratorio es utilizar x[n] para una señal
discreta y x(t) para una señal continua.
En la Tabla 2.1 se muestra un ejemplo de tipos de señales, con tiempo continuo y discreto y la
cantidad de medida.
Variación en
Tipo de Señal
Tiempo Amplitud
Para efectos de utilizar los resultados de la transformación que producen los sistemas ya sean
continuos o discretos sobre la variable independiente, primero generaremos una señal de prueba
que será utilizada en los experimentos de laboratorio que siguen. Nuestra señal de prueba será
FLAVIO N. CARRILLO GOMERO - 2020
16
como la mostrada en la Fig. 2.1, cuyo script se muestra en el Ejemplo 2.1, la misma que contiene
diferentes segmentos lineales, que vamos a generar por partes uno por uno y luego combinarlos
para obtener la totalidad de la señal deseada.
Ejercicio 2.1
Generaremos los segmentos de los ejes de tiempo y luego utilizar el comando linspace para
crear los segmentos de señal correspondiente. Como se utilizó en Laboratorio N° 1, este comando
es útil para generar cambios lineales o puntos igualmente espaciados entre dos límites. Los dos
límites pueden ser lo mismo, en cuyo caso el comando linspace produce vectores llenos de
dicho límite igual o constante.
clear;clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.1 - Generación de una señal de
# prueba
# -------------------------------------------------------------
#Intervalo de extensión de los datos
t1=-2:0.05:0;
# Generación del primer segmento de la señal
x1=linspace(0,0,length(t1)); #length(t1): longitud de datos de x1
# Generación del segmento x2,
t2=0.05:0.05:1;
x2=linspace(1,1,length(t2));
# Generación del segmento x3,
t3=1.05:0.05:2;
x3=linspace(1,0,length(t3));
# Generación del segmento x4,
t4=2.05:0.05:3;
x4=linspace(0,0,length(t4));
# Combinación de los tiempos y segmentos consecutivos generados
t=[t1 t2 t3 t4];
x=[x1 x2 x3 x4];
# Gráfica resultado de color rojo
plot(t,x,'r');grid;
# Uso del comando axis para adaptar la gráfica a una escala deseada
axis ([-2 3 -0.5 1.5])
xlabel ("t (seg)");
ylabel ("y(t) (voltios)");
title ("Gráfica de una señal eléctrica 1-D");
De esta forma obtenemos la Fig. 2.2, la gráfica de nuestra señal con otra escala diferente del eje.
Fig. 2.2 Señal de prueba con las escalas de los ejes mejorados.
Ejercicio 2.2
Hasta aquí hemos realizado lo necesario para crear nuestra señal de prueba, pero el resto es
relativamente fácil. Vamos a ver seguidamente el efecto del desplazamiento de la señal en el
tiempo. Por ejemplo, averiguaremos cómo se verá x(t +1) en función de t. Sabemos que x(t +1)
debe ser similar a x(t) desplazada hacia la izquierda en 1 unidad de tiempo.
Veamos a través del script del Ejercicio 2.2, la construcción de la función de desplazamiento en
el tiempo cuyo resultado se muestra en la Fig. 2.3.
clear;clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.2 - Generación de una señal de prueba
# x(t) desplazada en una unidad de tiempo x(t+1)
# -------------------------------------------------------------------
# Intervalo de extensión de los datos
t1=-2:0.05:0;
# Generación del primer segmento de la señal
x1=linspace(0,0,length(t1)); # length(t1): longitud de datos de x1
# Generación de los segmentos x2,
t2=0.05:0.05:1;
x2=linspace(1,1,length(t2));
# Generación de los segmentos x3,
t3=1.05:0.05:2;
x3=linspace(1,0,length(t3));
# Generación de los segmentos x4,
t4=2.05:0.05:3;
x4=linspace(0,0,length(t4));
# Combinación de los tiempos y segmentos consecutivos generados
t=[t1 t2 t3 t4];
x=[x1 x2 x3 x4];
# Gráfica resultado de color rojo
subplot(2,1,1);plot(t,x,'r');
axis([-3 4 -0.5 1.5]); grid on;
xlabel('t');ylabel('x(t)');title('x(t) versus t');
subplot(2,1,2);
plot(t-1,x,'r');
axis([-3 4 -0.5 1.5]); grid on;
xlabel('t');ylabel('x(t+1)');title('x(t+1) versus t');
Se observa, que hemos utilizado el comando subplot para ver las gráficas de x(t) y x(t +1) al
mismo tiempo, es decir, en la misma ventana se muestran ambas figuras. El resultado que se
presenta en la Fig.2.3 y como se esperaba x(t +1) es igual a x(t) desplazada hacia la izquierda en
FLAVIO N. CARRILLO GOMERO - 2020
18
Fig 2.3 Gráfico de x(t) versus t (gráfico superior) y x(t+1) versus t (gráfico inferior).
Ejercicio 2.3
Ahora, por medio del Ejercicio 2.3 realizaremos la representación de x(-2t) en función de t para
estudiar los efectos de la función espejo temporal y escalamiento en el tiempo. Lo que se espera
es que x(-2t) sea de tiempo invertido y versión comprimida de x(t). La gráfica de x(-2t) en función
de t es equivalente a la gráfica de x(t) versus -t/2. El siguiente código mostrado en el Ejemplo 2.3
graficará x(t) y x(-2t). El resultado se muestra en la Fig. 2.4.
clear;clc;clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.3 - Generación de una señal de prueba
# x(t) y su espejo comprimido x(-2t)
# ---------------------------------------------------------------
# Intervalo de extensión de los datos
t1=-2:0.05:0;
# Generación del primer segmento de la señal
x1=linspace(0,0,length(t1)); # length(t1): longitud de datos de x1
# Generación de los segmentos x2,
t2=0.05:0.05:1;
x2=linspace(1,1,length(t2));
# Generación de los segmentos x3,
t3=1.05:0.05:2;
x3=linspace(1,0,length(t3));
# Generación de los segmentos x4,
t4=2.05:0.05:3;
x4=linspace(0,0,length(t4));
# Combinación de los tiempos y segmentos consecutivos generados
t=[t1 t2 t3 t4];
x=[x1 x2 x3 x4];
# Gráfica de x(t) y x(-2t) de color azul
subplot(2,1,1);plot(t,x,'b');axis([-3 4 -0.5 1.5])
xlabel('t');ylabel('x(t)');title('x(t) versus t');grid on;
subplot(2,1,2);plot(-t/2,x,'b');axis([-3 4 -0.5 1.5])
xlabel('t');ylabel('x(-2t)');title('x(-2t) versus t');grid on;
Fig. 2.4 Gráfica de x(t) versus t (gráfico superior) y x(–2t) versus t (gráfico inferior).
Ejercicio 2.4
En este ejercicio, graficaremos x((t / 3) -1) en función de t. Este ejemplo se refiere al escalamiento
y desplazamiento en el tiempo de x(t). Para ello, vamos a utilizar el mismo enfoque nuevamente,
donde encontraremos la nueva señal y(t) = x((t / 3) -1), que toma los valores de la señal original
x(t).
El resultado se muestra en la Fig 2.5 y como vemos x((t / 3) -1) es x(t) expandido y se desplaza a
la derecha (3 unidades en el tiempo) de la versión de x(t).
clear;clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.4 - Generación de una señal de prueba
# x(t) y su correspondiente desplazamiento y escalamiento en el tiempo
# x((t/3)-1)
# -------------------------------------------------------------------
# Intervalo de extensión de los datos
t1=-2:0.005:0;
# Generación del primer segmento de la señal
x1=linspace(0,0,length(t1)); # length(t1): longitud de datos de x1
# Generación de los segmentos x2,
t2=0.005:0.005:1;
x2=linspace(1,1,length(t2));
# Generación de los segmentos x3,
t3=1.005:0.005:2;
x3=linspace(1,0,length(t3));
# Generación de los segmentos x4,
t4=2.005:0.005:3;
x4=linspace(0,0,length(t4));
# Combinación de los tiempos y segmentos consecutivos generados
t=[t1 t2 t3 t4];
x=[x1 x2 x3 x4];
# Gráfica de x(t) y x((t/3) -1)
subplot(2,1,1);plot(t,x,'r');axis([-4 14 -0.5 1.5]);grid on;
xlabel('t');ylabel('x(t)'); title('x(t) versus t')
tn=3*(t+1); #escalamiento y desplazamiento temporal
subplot(2,1,2);plot(tn,x,'r');axis([-4 14 -0.5 1.5]);grid on;
xlabel('t');ylabel('x((t/3)-1)');title('x((t/3)-1)versus t')
Fig. 2.5 Gráfico de x(t) versus t (gráfico superior) y x(t / 3) 1versus t (gráfico inferior)
Una secuencia es la representación de una señal discreta generada a partir del muestreo de la señal
analógica cuya variable independiente es continua. Por ejemplo, para el procesamiento discreto
de una señal electrocardiográfica se necesita una secuencia donde esté almacenado el valor que
toma en los instantes temporales equiespaciados.
Ejercicio 2.5
Como ejercicio generaremos una secuencia de prueba y en él observar cómo las diferentes
transformaciones de la variable independiente (la variable discreta n, esta vez) afectan o
transforman a la secuencia base. Desarrollaremos la secuencia de prueba triángulo discreto, cuya
longitud de muestras sea de 21 muestras, mostrando en la Fig. 2.6 los resultados.
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.5 - Generación de señal discreta
# triangulo discreto de 21 muestras
# -----------------------------------------------------------------
# Intervalo de tiempo discreto
n=0:20;
# Valor de cada una de las 21 muestras
xn=[0:1:10 9:-1:0];
# Gráfica de x[n]
subplot(2,1,1);stem(n,xn,'b');axis([-1 26 0 11]);grid on;
xlabel('n');ylabel('x[n]');title('x[n] versus n')
# Gráfica de x[n - 5]
subplot(2,1,2);stem(n+5,xn,'b');axis([-1 26 0 11]);grid on;
xlabel('n');ylabel('x[n-5]');title('x[n-5] versus n')
Por otro lado, para ver los primeros valores de la secuencia x[n]. Podemos pensar que la emisión
de la siguiente línea de código nos dará los valores de x[n] para n = 0,1,2, al aplicar la siguiente
instrucción:
xn(0:2)
Pero obtenemos un mensaje de error diciendo que "el índice de la matriz debe ser ya sea de 1 a
231-1 o valores lógicos". Esto significa simplemente que los índices de los vectores o matrices en
Octave empiezan con 1. La Tabla 2.1 muestra como nuestra variable se almacena o se mantiene
en el área de trabajo de Octave, es decir, el espacio de memoria ocupada y / o utilizada por Octave.
Por lo tanto, la forma correcta de ver las primeras muestras o puntos del índice n y la secuencia
xn es:
n(1:3), xn(1:3)
Tener en cuenta que se utiliza una coma (en vez de un punto y coma, que suprime la salida) para
separar los dos comandos de Octave para que podamos ver la salida. Del mismo modo, podemos
explorar los últimos puntos de n y xn:
n(19:21), xn(19:21)
Fig. 2.6 Gráfico de x[n] versus n (gráfico superior) y x[n–5] versus n (gráfico inferior).
Ejercicio 2.6
Acabamos de ver un ejemplo de desplazamiento en el tiempo, veamos ahora como graficar x[n/2]
versus n, como un ejemplo de escalamiento en el tiempo. Sea y[n] = x[n/2], inmediatamente notar
que y[n] no está definida cuando n no es divisible por dos, es decir, cuando n es impar. Una forma
de superar esta dificultad es redefinir y[n] de la siguiente manera:
Por lo tanto, podemos generar y[n] con las siguientes líneas de código:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.6 - Generación de señal discreta
# triangulo discreto desplazado 5 unidades de tiempo x[n-5] de 40
# muestras
# ---------------------------------------------------------------
# Intervalo de tiempo discreto
n=0:20; # Intervalo de extensión de x[n]
nn=0:40; # Intervalo de extensión de x[n/2]
# Valor de las muestras
xn=[0:1:10 9:-1:0];
yn=zeros(1,41);
yn(1:2:41)=xn;
# Gráfica de x[n]
subplot(2,1,1);stem(n,xn,’r’);axis([-2 42 -1 11]);grid on;
xlabel('n');ylabel('x[n]');
# Gráfica de x[n/2]
subplot(2,1,2);stem(nn,yn,’b’);axis([-2 42 -1 11]);grid on;
xlabel('n');ylabel('y[n]=x[n/2]')
En consecuencia, como 2n tramos de 0 a 40, el eje x se vuelve a escalar en ambas gráficas para
cubrir este rango, para ver el efecto de la transformación con claridad. El resultado se muestra a
continuación en la Fig. 2.7.
Fig. 2.7 Gráfico de x[n] versus n (gráfico superior) y x[n/2] versus n (gráfico inferior).
La función impulso unidad t es una de las más importantes funciones en el estudio de las
señales y sistemas. Esta función fue definida por Dirac, de allí el nombre de función delta Dirac
y su importancia radica en permitir el modelamiento de varios fenómenos físicos como funciones
delta, por ejemplo, impulsos de carga eléctrica, voltaje o corriente actuando por un tiempo muy
corto.
0 → ∞
t = 0, para t ≠ 0
t dt 1
x t t1 t t2
x t t t dt 0
t2
0
0
t1 otros
δ(t) 1/τ
0 t - τ/2 τ/2 t
(a) (b)
x t t t0 x t0 t t0
x t t dt x 0
t dt x 0
x t x t
Ejercicio 2.7
La señal Impulso Unitario en el dominio del tiempo continuo pueden ser generadas en Octave
utilizando la variable tiempo t y como señal el vector x de ancho w, siendo esta una aproximación.
El siguiente código de programa representa en forma aproximada a la función Impulso Unitario
y se muestra el resultado en la Fig.2.9:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.7 - Generación de señal Impulso
# Unitario Continuo:
# x(t)=d(t)
# ---------------------------------------------------------------
fs = 20; # velocidad de repetición de las muestras
tmax=10; # límite superior de la escala de tiempo
tmin=-10; # límite inferior de la escala de tiempo
w = (1/fs); # ancho del pulso aproximado
ts = [tmin:1/fs:-w 0 w:1/fs:tmax]; # rango de la escala de #tiempo
# número de muestras en el tiempo
x =[zeros(1,(abs(tmin)*fs)) 1 zeros(1,(abs(tmax)*fs))];
# Gráfica de la función impulso unitario
plot(ts,x,'r'); xlabel('t (Seg)'); ylabel('Amplitud');
title('Función Impulso Unitario δ(t) ');grid on;
Ejercicio 2.8
Genere el código de programa para cada una de las funciones definidas a continuación y
represéntelo gráficamente dentro de los intervalos especificados:
x1 t t -30 t 30
x2 t 4.5 t 90 -100 t 100
x3 t 0.8 6 t -35 t 35
x4 t 0.8 [6 t ] -35 t 35
x5 t 0.8 [t 6] -35 t 35
x6 t x1 t +x3 t +x4 t +x5 t 100 t 150
1 n 0
[n]
0 n 0
donde n pertenece al dominio de los números enteros y δ[n] al dominio de los números reales.
y la secuencia impulso unidad desplazada definida como:
1 n n0
[ n n0 ]
0 n n0
Ejercicio 2.9
Cuando se crea la secuencia impulso unitario debemos decidir que intervalo de la secuencia nos
interesa. Si [n] se utiliza para excitar un sistema discreto lineal e invariante en el tiempo, causal
y suponiendo que se necesita analizar podemos crear esta función con el siguiente código:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.9 - Generación de señal Impulso
# Unitario discreto:
# x[n]=d[n]
# para 21 muestras
# ---------------------------------------------------------------
nmax=+10; # límite superior de la escala de tiempo
nmin=-10; # límite inferior de la escala de tiempo
nn =nmin:nmax; # Rango de tiempo discreto
# valor de cada muestra en el tiempo discreto
x = [zeros(1, abs(nmin)) 1 zeros(1,abs(nmax))];
stem(nn,x,'r');
xlabel('n (Seg)');ylabel('Amplitud');
title('Impulso Unitario Discreto d[n]');grid on;
Observe que, para la primera muestra, le corresponde el valor n = -10 y la última para n = 10, tal
como se muestra en la Fig. 2.10.
La propiedad más importante de la secuencia impulso unidad, se debe a que cualquier secuencia
arbitraria x[n] puede ser expresada como la suma de impulsos discretos desplazados:
x n x k n k
k
donde los x[k] son considerados como coeficientes de ponderación que representan la amplitud
de la secuencia impulso unitario en ese instante de secuencia. Este aspecto es de interés cuando
se toma en cuenta al considerar un sistema lineal discreto.
Ejercicio 2.10
En cada caso el eje horizontal de las secuencias (n) debe extenderse solamente sobre el intervalo
indicado y numerarse de manera adecuada.
Ejercicio 2.11
Una secuencia impulso desplazada [n-n0], puede utilizarse para construir un tren de impulsos
discretos ponderados, con periodo T y longitud total finita MT descrita por:
M 1
x[n] x k n kT
k 0
(a) Genere y represente gráficamente un tren de impulsos discretos periódicos, cuyo periodo
sea T= 4 y longitud total de las muestras de x[n] sea 40. Tener presente que la señal debe
comenzar en n = -10. ¿Cuántos impulsos contiene esta señal discreta de longitud finita?
(b) Realice (a) nuevamente, pero para x[k] = cos((π/8) k), donde k = 0, 1, 2, ……, M-1.
La función escalón unitario está definida por la siguiente expresión en el modo continuo y
mostrada en forma gráfica en la Fig. 2.11:
1 t 0
u t
0 t 0
u(t)
0 t
Fig. 2.11. Gráfica del Escalón Unitario continuo.
Observar que el área bajo la curva desde -∞ hasta t para la función δ(t) es cero si t < 0 y unitario
si t ≥ 0. Por consiguiente, u(t) es la integral del impulso unitario:
1 t 0
d u t
t
0 t 0
Ejercicio 2.12
Vamos a visualizar mediante Octave un intervalo del escalón unitario en tiempo continuo entre
los instantes −10 ≤ t ≤ +10, tal como se muestra en la Fig. 2.12 (a) y (b), donde un posible código
de programa será:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.12 - Generación de señal Escalón
# Unitario Continuo:
# x(t)=u(t)
# ---------------------------------------------------------------
fs = 20; # velocidad de repetición de las muestras
tmax=+10; # límite superior de la escala de tiempo
tmin=-10; # límite inferior de la escala de tiempo
w = (1/fs); # ancho del pulso aproximado
ts = [tmin:1/fs:-w w:1/fs:tmax]; # rango de la escala de tiempo
# número de muestras en el tiempo
x =[zeros(1,(abs(tmin)*fs)) ones(1,(abs(tmax)*fs))];
# Gráfica de la función impulso unitario
figure(1)
stairs(ts,x,'r');
xlabel('t (Seg)'); ylabel('Amplitud'); grid on;
title('Función Escalón Unitario - con el comando "stairs"');
figure(2)
plot(ts,x,'r');
xlabel('t (Seg)'); ylabel('Amplitud'); grid on;
title('Función Escalón Unitario - con el comando "plot"');
(a) (b)
Fig. 2.12 Gráfica de la función Escalón Unitario. (a) Con “plot”. (b) Con “stairs”
Ejercicio 2.13
Genere y visualice las siguientes secuencias:
x1(t) = 2u(t), - 10 ≤ t ≤ 30
FLAVIO N. CARRILLO GOMERO - 2020
28
En el modo discreto la secuencia del Escalón Unitario como la mostrada en la gráfica 2.13, y está
definida de la siguiente forma:
1 n 0
u[ n]
0 n 0
Las relaciones más importantes entre la secuencia impulso unidad y la secuencia escalón unitario
vienen dadas a través de:
n
u n k n k y n u n u n k
k k 0
Ejercicio 2.14
Si deseamos visualizar mediante Octave un intervalo de la secuencia escalón unitario entre los
instantes −10 ≤ n ≤ 10, como la presentada en la Fig. 2.13, un código de programa posible será:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.14 - Generación de una señal Escalón
# Unitario Discreto:
# x[n]=u[n]
# ---------------------------------------------------------------
fs = 1; # velocidad de repetición de las muestras
nmax=+10; # límite superior de la escala de tiempo
nmin=-10; # límite inferior de la escala de tiempo
ns = [nmin:1/fs:nmax]; # rango de la escala de tiempo
# número de muestras en el tiempo
x =[zeros(1,(abs(nmin)*fs)) ones(1,(abs(nmax)*fs)+1)];
# Gráfica de la función impulso unitario
stem(ns,x,'r');
xlabel('n (Seg)'); ylabel('u[n]');grid on;
title('Función Escalón Unitario Discreto u[n]');
El estudio de las funciones senoidales (seno y coseno) es debido a que ellas son funciones de
interés que frecuentemente aparecen en el mundo analógico. Examinar una sola función coseno
es fácil de realizar, y lo que aplica a una función coseno también se aplica a una señal compuesta
de varias sinusoides. El formato a utilizar es el siguiente:
x t A cos 2 ft
donde la amplitud A, la frecuencia f, y la fase θ son conocidos, tal que con esta información ahora lo que tenemos
que encontrar es el valor de la sinusoide para cualquier instante de tiempo (t). Esta constituye una forma compacta
de representar una señal. Si la señal es muy compleja, es decir que está compuesta por dos sinusoides o más,
necesitamos la información de amplitud, frecuencia y fase de todas ellas, para reconstruir la señal original a partir
de esta información.
De lo tratado hasta aquí, se deduce que las señales sinusoidales tanto en la teoría como en la
práctica son muy importantes. Cualquier función que no sea aleatoria puede ser aproximada con
una suma de sinusoides. En otras palabras, una señal puede ser compuesta con una combinación
de señales simples. Los ejemplos siguientes nos ilustraran estas características para visualizar
mediante Octave un intervalo de las señales sinusoidales.
Ejercicio 2.16
Para el caso de una señal coseno, el siguiente código de programa nos muestra en la Fig.2.14 dos
periodos de la función coseno y sus características:
clear;clc;clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.16
# SEÑAL COSENO
# x(t)=A*cos(2*pi*t/T)
# -------------------------------------------------------------
T=0.001; # T: Periodo del coseno
A=1; # A: Amplitud del coseno.
N= 3; # n: Número de periodos a mostrar
w=T./100; # w: distancia entre muestra y muestra de la gráfica.
t = 0 : w : N*T; # Vector Tiempo
x = A*cos(2*pi*t/T); # Vector Señal
plot(t,x,'r'), # Gráfica de la señal x(t)
grid on ;
ylabel('x(t) Amplitud'); xlabel('t Seg');
title('Señal Coseno')
Ejercicio 2.17
clear;clc;clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.17
# SEÑAL SUMA DE TRES FUNCIONES COSENO
# x(t)=A*cos(2*pi*f1*t)+B*cos(2*pi*f2*t)+C*cos(2*pi*f2*t)
# -----------------------------------------------------------------
f1=1000; # f1:Frec. analógica del coseno x1(t)en Hz.
f2=2000; # f2:Frec. analógica del coseno x2(t)en Hz.
f3=4000; # f3:Frec. analógica del coseno x3(t)en Hz.
A=1; # A: Amplitud del coseno x1(t).
B=1/2; # B: Amplitud del coseno x2(t).
C=1/8; # C: Amplitud del coseno x3(t).
N=2; # N: Número de periodos a mostrar de x1(t)
w=(1/f1)./100; # w: distancia entre muestra y muestra.
t = 0: w: N*(1/f1); # Vector Tiempo
x1 = A*cos(2*pi*f1*t); # Vector Señal x1(t)
x2 = B*cos(2*pi*f2*t); # Vector Señal x2(t)
x3 = C*cos(2*pi*f3*t); # Vector Señal x3(t)
x=x1+x2+x3;
plot(t,x,'r'), # Gráfica de la señal x(t)
hold on;
plot(t, x1,'-b'), # Gráfica de la señal x1(t)
plot(t, x2,'.-g'), # Gráfica de la señal x2(t)
plot(t, x3,'bk'), # Gráfica de la señal x3(t)
hold off; grid on ;
ylabel('x(t) Amplitud'); xlabel('t Seg');
title('x(t)=A*cos(2*pi*f1*t)+B*cos(2*pi*f2*t)+C*cos(2*pi*f2*t)')
Ejercicio 2.18
2. Sea x2(t) = 3cos(2π3000t) + cos (2π1000t + π/3) + 4cos (2π5000t - π/3), y ajustar t lo
necesario. Graficar x2(t). Nuevamente, a partir de la gráfica: ¿Cuáles son los valores mínimo
y máximo?
3. Escribir un código de programa en Octave para determinar los valores máximo y mínimo de
x1(t) y x2(t). Compruebe la validez de los valores hallados.
Las señales discretas senoidales son otra clase de secuencias de utilidad que se deriva a partir de
una sinusoide continua.
Sea:
t = n.Tm
reordenando:
donde:
Ω = 2πfTm
Ejercicio 2.19
Ejercicio 2.20
(a) Asumiendo que se muestrea la señal x(t) siguiente, con una frecuencia de muestreo fm=10,000
muestras/segundo.
(b) Genere el código que corresponda y represente gráficamente a cada una de las siguientes
secuencias mostradas. En cada caso el eje horizontal n deberá extenderse sobre el intervalo
indicado y deberá ser etiquetado apropiadamente y asignarle la escala de tiempos en seg.
x1[n] 2sen n -20 n 40
25
x2 [n] 3cos n 20 n 50
5 4
x3 [n] sen 3 n 10 n 10
2
x4 [n] cos n 0 n 50
25
n n
x5 [n] cos cos 25 n 25
4 4
Para x3[n] obtenga una expresión más simple sin hacer uso de funciones trigonométricas.
Luego observe x4[n] y x5[n], donde estas tienen alguna característica que llama su atención.
Justifique su respuesta.
Caso continuo
El exponencial creciente o decreciente es una señal básica en el procesamiento de señales porque
aparecen como solución para las ecuaciones de diferenciales con coeficientes constantes, que son
de la forma:
x(t) =A αt , donde A y α son reales.
La exponencial será decreciente en amplitud a lo largo del tiempo siempre que |α|<1 , mientras
que será creciente cuando |α| > 1. Para el caso en que α = 1 tenemos una secuencia constante para
todo n., tal como se ilustra en la Fig.2.17 para α < 1.
Ejercicio 2.21
clear; clc; clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.21
# Exponencial real decreciente
# t
# x(t)= Aα
# -------------------------------------------------------------
alfa= 0.2; # alfa: base de la exponencial real
A=1; # A: Amplitud
T=5; # T: Tiempo de duración de x(t).
t = 0:0.001:T; # Vector Tiempo Continuo
xt = A*(alfa).**t; # Vector Señal x(t)
plot(t,xt,'r'), # Gráfica de x(t)
grid on ;
ylabel('x(t)Amplitud');
xlabel('t Seg');
title('Exponencial real decreciente')
FLAVIO N. CARRILLO GOMERO - 2020
34
α<1
Fig. 2.17 Función exponencial real
Observe el uso del operador “.” para efectuar la elevación del valor de alfa= 0.2 a cada uno
de los elementos del vector t que contiene el índice de tiempo.
Caso discreto
En este caso la secuencia exponencial real creciente o decreciente (ver Fig. 2.18 para diferentes
valores de α) es una señal similar al formato continuo, con la diferencia que el caso discreto el
tiempo de muestra a muestra es controlada por el periodo de muestreo que se utilice. Así mismo,
este tipo de secuencias son utilizadas en la solución de las ecuaciones en diferencias con
coeficientes constantes, cuyo formato es:
Ejercicio 2.22
(a) Con la siguiente secuencia de comandos, genere y visualice en el intervalo de -10 a 30 de una
exponencial real decreciente:
α<1 α>1
(b) En la mayoría de las situaciones reales, hay que sumar los valores de la secuencia
exponencial αnu[n]. Para un intervalo finito, esta suma tiene una expresión compacta conocida.
L 1
1 L
n 0
n
1
para α 1
Utilizando el código de programa propuesta en (a), genere una señal discreta exponencial
x[n]=(0.9) n u[n], en el intervalo n = 0,1,2,3, .......30, luego obtener la suma de todos los valores
generados por la secuencia x[n], seguidamente compare el resultado obtenido con el que obtuvo
al aplicar la fórmula.
(c) Siendo α una constante real sin ninguna restricción, evalué las siguientes expresiones,
considerando |α| < 1:
- Evaluar
n0
n
- Evaluar
nk
n
(d) A continuación genere y visualice en el intervalo de tiempos −10 < n ≤ 20, exponenciales
reales considerando α = ±0.5; ±0.8; ±0.95.
(e) Luego, obtenga la suma de los elementos de la exponencial para α = 0.95 empleando los
resultados de la pregunta (c). Compruebe estos resultados desarrollando un código en Octave.
Si |α| ≠ 1, las partes real e imaginaria de x[n] serán secuencias senoidales que van decreciendo
(|α|<1) o creciendo (|α|>1) en el tiempo. Para el caso |α| = 1, la secuencia resultante se denomina
sinusoide compleja. En la Fig. 2.19 se muestran para ambos casos, para |α|<1 y |α|>1.
|α | < 1 |α | > 1
clear;clc;clf;
# ----------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.23
# (j*nn/4)
# Función exponencial compleja: x = Ae
# ----------------------------------------------------
nn = 0:25;
A=1;
xn = A*exp(j*nn/4);
subplot(211);
FLAVIO N. CARRILLO GOMERO - 2020
37
Ejercicio 2.24
(a) Genere señales exponenciales complejas donde el parámetro α puede tomarse como un
número complejo. Recuerde que la fórmula de Euler para la exponencial compleja aplicada a
una señal es:
donde z0 = rej. Utilizando esta relación genere una secuencia exponencial compleja con:
j n
x[n] 0.9 en 4
, 0 n 20
Luego represente las partes real e imaginaria de x[n] en el intervalo 0 n 20. Observar que
el ángulo de z0 controla la frecuencia de las sinusoides, tal como se muestra en la siguiente
expresión:
j n
x[n] ( z0 ) n 0.9n e 0.9n (cos( n) j sen( n))
4
4 4
Para observar gráficamente esta expresión compleja, hay que definir una nueva función. Luego
realizar el análisis de las gráficas obtenidas y ensayar con otros valores.
function [x,n]=genexponencial(modA,faseA,moda,fasea,n0,n1);
# Entradas:
# modA : |A|
# faseA : ϕ
# moda : |α|
# fasea : Ωo
# no : índice temporal de inicio de la secuencia.
# n1 : índice temporal de final de la secuencia.
# Salidas:
# x : la secuencia exponencial
# n : vector con los índices temporales
Ejercicio 2.26
Empleando la función implementada en el Ejercicio 2.25, represente para los siguientes valores:
|A| = 4, Ωo = π/15, ϕ = π/3, no = 9 y n1 = 40, dos exponenciales complejas, una creciente y otra
decreciente, luego una sinusoide compleja. Guarde los resultados de la exponencial decreciente
para ser utilizado más adelante.
2.6 SEÑALES PERIÓDICAS
Caso Continuo
Una señal continua es periódica con periodo T si esta se repite a si misma cada T segundos, y
cumple la siguiente condición:
2 2
x t Asen t , 0 , la frecuencia angular fundamental en rad/seg.
T T
2
Fig. 2.21 Señal senoidal x t Asen t
T
Ejercicio 2.27
Las señales periódicas pueden ser generadas en Octave utilizando la variable temporal, t y como
señal el vector x de acuerdo al periodo de la señal, T. Observe y analice el resultado del siguiente
código:
N=2;
T=1;
A=1;
t = 0:Incr:N*T; # Vector Tiempo
xt = A*sin(2*pi*t/T); # Vector Señal
plot(t, xt, 'r') ; ylabel('x(t)'); xlabel('t seg'); grid on;
Ejercicio 2.28
(a) Genere las siguientes señales continuas indicada en las siguientes ecuaciones:
x(t)=cos(2π/15t)
x(t)=sen(100t)
x(t)=sen[(5π + 1)t]
Caso Discreto
Una señal discreta es periódica con periodo N si esta se repite a si misma cada N muestras, y
cumple la siguiente condición:
Un ejemplo de estas señales es la sinusoide discreta con periodo N = 8, amplitud A=1, y Ωo=π/4
como la mostrada en la Fig. 2.22, y el formato de x[n] es:
Fig. 2.22 Señal senoidal discreta x n Asen n
4
Ejercicio 2.29
Las señales periódicas pueden ser generadas en Octave utilizando la variable temporal, t y como
señal el vector x de acuerdo al periodo de la señal, T. Observe y analice el resultado del siguiente
código:
Para las señales experimentadas en el Ejercicio 2.28 apartado (a) y (b) experimente ahora
transformando cada una de las señales continuas al caso discreto muestreando cada una de ellas,
tomando en cuenta que la frecuencia de muestreo es de 50 Hz. Muestre los resultados en la que
se demuestre y verifique si la secuencia obtenida es periódica o no de cada una de las funciones
bajo experimentación.
2.7 PREGUNTAS
1. ¿Cuáles han sido las principales dificultades que usted ha observado al utilizar Octave para
representar las diferentes actividades? ¿Cuáles serían las posibles soluciones? Muestre su
afirmación con ejemplos probados.
2. Considerando una secuencia exponencial real x n nu n y las siguientes definiciones:
1 N
Valor Medio de x[n]: x lim x n
N 2 N 1
n N
N 2
x1[n] = u [n – 12], 0 ≤ n ≤ 30
x2[n] = 0.90n, 0 ≤ n ≤ 30
x3[n] = x1[n] + x2[n], 0 ≤ n ≤ 30
5.- Para cada una de las secuencias probadas en cada uno de los ejercicios, encuentre usted dos
ejemplos de representación de la vida diaria y explíquelo mediante tablas de datos de
resultados, gráficos y un breve resumen.