Beruflich Dokumente
Kultur Dokumente
1
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.1 los resultados.
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.1 - Generación de señal discreta
# triangulo discreto de 21 muestras
# -----------------------------------------------------------------
# Intervalo de tiempo discreto
n=0:23;
# 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')
Observar cómo se ha formado el incremento y la disminución de la secuencia x[n], en un solo vector
(xn=[0:1:10 9:-1:0]).
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.2 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.
TABLA 2.2 LOS ÍNDICES EN OCTAVE SE INICIAN EN 1.
Índice en Octave 1 2 3 … 10 11 12 … 19 20 21
n 0 1 2 … 9 10 12 … 18 19 20
xn 0 1 2 … 9 10 9 … 2 1 0
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)
Ejercicio 2.2
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.2 - 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);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);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 i 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.2.
Ejercicio 2.3
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.3 - 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('Secuencia Impulso Unitario d[n]');grid on;
Ejercicio 2.4
Generar y representar gráficamente las siguientes secuencias dentro de los intervalos especificados:
En cada caso el eje horizontal de las secuencias (n) debe extenderse solamente sobre el intervalo
indicado y numerarse de manera adecuada.
Ejercicio 2.5
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:
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?
a. Realice (a) nuevamente, pero para x[k] = cos((π/8) k), donde k = 0, 1, 2, ……, M-1.
Ejercicio 2.6
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.4, un código de programa posible será:
clear; clc;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.6 - 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]');
Ejercicio 2.7
Genere y visualice las siguientes secuencias:
x1[n] = 2u[n], −10 ≤ n ≤ 30
x2[n] = u[n − 5], 0 ≤ n ≤ 20
x3[n] = −3u[n + 10], −20 ≤ n < −20
x4[n] = x1[n]+ x2[n]+ x3[n] −30 ≤ n < −30
Ejercicio 2.8
Para el caso de una señal coseno, el siguiente código de programa nos muestra en la Fig.2.5 dos
periodos de la función coseno y sus características:
clear;clc;clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.8
# 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.9
En este ejercicio se muestra la composición de dos señales coseno mostrada en la gráfica de la Fig.
2.6 y desarrollada por el código de programa siguiente:
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,'y'), # 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)')
Resultado:
1. La grafica de las cuatro funciones coseno:
Ejercicio 2.10
Código OCTAVE:
clear;clc;clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.10
# SEÑALES TRIGONOMETRICAS
# x1(t)=3*cos(2*pi*100*t+pi/6)
# x2(t)=3*cos(2*pi*3000*t)+cos(2*pi*1000*t+pi/3)+4*cos(2*pi*5000*t-pi/3)
# -----------------------------------------------------------------
f1=3000; # f1:Frec. analógica del coseno xa2(t)en Hz.
f2=1000; # f2:Frec. analógica del coseno xb2(t)en Hz.
f3=5000; # f3:Frec. analógica del coseno xc2(t)en Hz.
f4=100; # f4:Frec. analógica del coseno x1(t)en Hz.
plot(t,x2,"-r;X2;","linewidth",1,t1,max_x2,"dg;Max X2;","markersize",3,t1,min_x2,"dy;Min
X2;","markersize",3), # Gráfica de la señal x2(t)
hold;
plot(t,x1,"-k;X1;","linewidth",1,t1,max_x1,"dm;Max X1;","markersize",3,t1,min_x1,"dc;Min
X1;","markersize",3), # Gráfica de la señal x1(t)
hold off; grid on ;
1. Grafica de X1(t):
2. Grafica de X2(t):
Ejercicio 2.11
En este ejercicio se muestra los resultados de representar la secuencia coseno mostrado en la gráfica
de la Fig. 2.7, desarrollada por el código de programa siguiente:
clear; clc; clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.11
# SECUENCIA COSENO
# x[n]=A*cos(2*pi*f*Ts*n)
# -----------------------------------------------------------------
f=5; # f: Frec. analógica del coseno en Hz.
Ts= 0.01; # Ts: Periodo de muestreo en segundos
A=1; # A: Amplitud del coseno x[n].
N=50; # N: Número de muestras de x[n].
n = 0 : N; # Vector Tiempo Discreto
x = A*cos(2*pi*f*Ts*n); # Vector Señal x[n]
stem(n,x,'r'), # Gráfica de la secuencia x[n]
grid on ;
ylabel('x[n] Amplitud');
xlabel('n Seg');
title('Secuencia Coseno')
Ejercicio 2.12
(a) Asumiendo que se muestrea la señal x(t) siguiente, con una frecuencia de muestreo fm=10,000
muestras/segundo.
Fig. 2.7 Gráfica de la secuencia x[n] = A cos(Ωn + ϕ)
x(t) = 3cos(2π500t – π/5) + 6cos(2π700t + π/5) + 4cos(2π600t – 2π/7)
¿Cuantas muestras habrá en 16 milisegundos?
¿Cuál es la ecuación para la secuencia x[n]?
Grafique x[n] para fm= 10KHz, 5KHz, 2.5KHz, 1.25KHz, y 1KHz. Compare la gráfica de cada uno de
los casos y analice sus resultados con el fundamento teórico correspondiente.
(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.
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.
Ejercicio 2.13
(a) Con la siguiente secuencia de comandos, genere y visualice en el intervalo de -10 a 30 de una
exponencial real decreciente:
clear; clc; clf;
# -------------------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.11
# Secuencia Exponencial Real
# n
# x[n]= Aα
# -------------------------------------------------------------
alfa= 0.9; # alfa: base de la exponencial real
A=2; # A: Amplitud
n = -10:30; # Vector Tiempo Discreto
xn = A*(alfa).**n; # Vector Señal x[n]
stem(n,xn,'r'), # Gráfica de x[n]
grid on ;
ylabel('x[n]Amplitud');
xlabel('n Seg');
title('Exponencial real decreciente')
α < 1 α > 1
-1 < α < 0 α < -1
Fig. 2.8 Secuencias exponenciales reales
(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.
Evaluar
Evaluar
Demuestre la siguiente igualdad:
(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.
Ejercicio 2.14
Implemente el siguiente código y analice. Luego compare lo obtenido con lo mostrado en la Fig.
2.10.
clear;clc;
# ----------------------------------------------------
# Laboratorio N° 2: Ejercicio 2.12
# (j*nn/4)
# Función exponencial compleja: x = Ae
# ----------------------------------------------------
nn = 0:25;
A=1;
xn = A*exp(j*nn/4);
subplot(211);
stem(nn, real(xn),'r');grid on;
title('Parte Real de x[n]'), xlabel(' n ');
subplot (212);
stem (nn, imag(xn),'b');grid on;
title ('Parte Imaginaria de x[n]'), xlabel ('n');
Fig. 2.10.- Gráfica de la secuencia exponencial compleja utilizando subplot
Ejercicio 2.15
(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:
Luego represente las partes real e imaginaria de x[n] en el intervalo 0 ≤
n ≤ 20. Observar que el ángulo de z 0 controla la frecuencia de las sinusoides, tal como se
muestra en la siguiente expresión:
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.
(b) Para la señal experimentada en el apartado (a) ejecute la representación de la parte imaginaria en
función de la parte real en función de n. El resultado deberá ser una espiral. Experimente con
diferentes valores del ángulo θ. Un valor pequeño conducirá a una representación más optimizada de
la espiral. Finalmente, realice la gráfica de la parte real e imaginaria de la función bajo
experimentación.
Ejercicio 2.16
Desarrolle el código de programa de una función en Octave, llamada genexponencial.m cuyo
objetivo sea la de generar exponenciales complejas. La cabecera de la función deberá tener la
siguiente estructura:
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.16
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:
x(t) = x(t + T), donde T es real.
Un ejemplo de estas señales es la sinusoide con periodo T y amplitud A, como la mostrada en la Fig.
2.11, y el formato de x(t) es:
Demuestra y prueba si son periódicas o no. Calcula y verifica el periodo, si es periódica.
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:
x[n] = x[n + N], donde N es un entero.
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.12, y el formato de x[n] es:
frecuencia digital en rad.