Está en la página 1de 23

PRACTICA # 1

ASIGNATURA: PROCESAMIENTO DIGITAL DE SEALES


TIEMPO PLANIFICADO EN EL SILABO: 4 HORAS
TIEMPO DE LA PRCTICA POR GRUPO: 2 HORAS
NUMERO DE ESTUDIANTES POR GRUPO: 1 ESTUDIANTES
NMERO DE EQUIPOS: 6
INTEGRANTES: PAUL ALVAREZ
1. TEMA: introduccin a MATLAB

2.- Objetivos. Que el alumno se familiarice con el entorno de trabajo de Matlab


Que el estudiante realice operaciones bsicas con Matlab
Que el alumno genere y grafique seales en tiempo continuo y discreto
3.- Materiales y Reactivos
Texto Gua de la asignatura
(Slicer_Digital_Signal_Processing_Using_MATLAB_3rd_Edition)
4.- Equipos y Herramientas
Computador con Paquete informtico Matlab
5.- Instrucciones

Colocar las mochilas en los casilleros


Prohibido consumo de alimentos
Prohibido equipo de diversin, celulares etc.
Prohibido jugar
Prohibido mover o intercambiar los equipos de los bancos de trabajo
Uso adecuado de equipos
6.- Actividades a Desarrollar

Generar en matlab escalares, vectores y matrices


Generar funciones de los ejemplos del texto de seales en tiempo continuo y
discreto
OPERACIONES CON MATRICES
>> A = rand(4)
A=
0.6596
0.5186
0.9730
0.6490
>> det(A)

0.8003
0.4538
0.4324
0.8253

0.0835
0.1332
0.1734
0.3909

0.8314
0.8034
0.0605
0.3993

ans =
-0.0782
>> inv(A)
ans =
-0.3222
2.4606
-4.1562
-0.4930

0.6116
-2.8609
3.0165
1.9659

1.4390
-0.6289
-0.5722
-0.4788

-0.7778
0.7281
2.6716
-0.3521

>> A = [ 1 2 3; 3 4 5; 6 7 8]
A=
1
3
6

2
4
7

3
5
8

>> B = [ [1 2 3]' [2 4 7]' [3 5 8]']


B=
1
2
3

2
4
7

3
5
8

>> A=zeros(5)
A=
0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

0
0
0
0
0

>> B=zeros(3,5)
B=
0
0
0

0
0
0

0
0
0

0
0
0

0
0
0

El siguiente conjunto de comandos crea una lista de puntos de muestra, evala la


funcin seno en esos puntos y, a continuacin, genera una trama de una de onda
sinusoidal simple, poniendo etiquetas de los ejes y el ttulo en la parcela.
Ejemplo 1

TIEMPO CONTINUO
%% GRAFICA DE LA SEAL SENO 2*PI EN FUNCION DEL TIEMPO
t = 0:0.01:2 %rango de separacion de escala entre cero y dos
x = sin(2*pi*t) % evaluando variable x (seno de 2pi)en t
plot(t,x,('r')) % graficar x en funcion de t
xlabel('tiempo en segundos') %nombre del eje de la x
ylabel ('x(t)');%nombre del eje de la y
title('Grafica de sen(2/PI en t)')% titulo de la grafica

Ejemplo 2
TIEMPO DISCRETO
%% Graficar la seal seno discretizada
n = 0:1:40; %rango de 0 a 4 de uno en uno
x = sin(0.1*pi*n); % seal a graficar en funcion de n
Hs = stem(n,x,('b')); % grafica discreta de la seal n,x
set(Hs,'markersize',10); %grafica de la marca de cada seal discreta
xlabel ('n');%nombre del eje de la x
ylabel('x(n)');% nombre del eje de la y
title('Grafica de seal discreta sin (0.2*pi n)')% Titulo de la
grafica

Ejemplo 3
Comando trama secundaria
t = 0:0.01:2 %rango de separacion de escala entre cero y dos
x = sin(2*pi*t) % evaluando variable x (seno de 2pi)en t
plot(t,x,('r'))% graficar x en funcion de t
hold on;
% mantener esta figura
xlabel('tiempo en segundos') %nombre del eje de la x
ylabel ('x(t)');%nombre del eje de la y
title('Grafica de sen(2/PI en t)')% titulo de la grafica
%% Graficar la seal seno discretizada
n = 0:1:40; %rango de 0 a 4 de uno en uno
xt = sin(0.1*pi*n); % seal a graficar en funcion de n
Hs = stem(n*0.05,xt,('b'),'filled'); % grafica discreta de la seal
n,x
set(Hs,'markersize',4); %grafica de la marca de cada seal discreta
hold off % soltar esta figura
xlabel ('n');%nombre del eje de la x
ylabel('x(n)');% nombre del eje de la y

Mostrar ms de un grfico en el la figura misma ventana


Ejemplo 4
t = 0:0.01:2 %rango de separacion de escala entre cero y dos
x = sin(2*pi*t) % evaluando variable x (seno de 2pi)en t
subplot(2,1,1);

plot(t,x,('r'))% graficar x en funcion de t


hold on;
xlabel('tiempo en segundos') %nombre del eje de la x
ylabel ('x(t)');%nombre del eje de la y
title('Grafica de sen(2/PI en t)')% titulo de la grafica
n = 0:1:40; %rango de 0 a 4 de uno en uno
x = sin(0.1*pi*n); % seal a graficar en funcion de n
subplot(2,1,2);
Hs = stem(n*0.05,x,('b'),'filled'); % grafica discreta de la seal n,x
set(Hs,'markersize',4); hold off %grafica de la marca de cada seal
discreta
xlabel ('n');%nombre del eje de la x
ylabel('x(n)');% nombre del eje de la y
title('Grafica de seal discreta sin (0.2*pi n)')% Titulo de la
grafica

Ejemplo 5
Procesamiento digital del sonido con adicin de efecto de eco
Audio
load handel; % la seal es la entrada Y y y la frecuencia de muestreo
Fs
sound(y,Fs); %Reproduce el sonido original
pause(10); %pausa de 10ms
alpha = 5.9; D = 4196;% Parametros para el eco
b = [1,zeros(1,D),alpha];% Parametros del filtro
x = filter(b,1,y); %Genera un sonido plus junto con el eco
sound(x,Fs); %Reproduce el sonido con eco
w = filter(10,b,x); % Filtro para eliminar el eco
sound(w,Fs)% Reproduce el sonido sin eco

7.- Fundamentos Tericos


VECTORES MATRICES ESCALARES
Como en casi todos los lenguajes de programacin, en Matlab las matrices y vectores son
variables a las que se les puede dar nombres.
Para definir una matriz no hace falta establecer de antemano su tamao (de hecho, se puede
definir un tamao y cambiarlo posteriormente).
Matlab determina el nmero de filas y de columnas en funcin del nmero de elementos que
se introducen (o se utilizan) las matrices se definen con los elementos entre corchetes y por
filas; los elementos de una misma fila estn separados por blancos o comas, mientras que las
filas estn separadas por pulsaciones intro o por caracteres punto y coma (;).
Por ejemplo, el siguiente comando define una matriz A de dimensin (3x3):
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es: 1 2 3 4 5 6 7 8 9):
Partir del momento en que tenemos definidas diversas matrices, se pueden operar. Matlab
puede hacer esto por medio de operadores o por medio de funciones.

Operaciones elementales Operaciones bsicas como suma, producto o trasposicin de hacen


como se muestra a continuacin, permitindose algunas operaciones no definidas
matemticamente:
Operador suma (+) Utilizado entre matrices de iguales dimensiones, obtiene la suma elemento
a elemento.
Utilizado entre una matriz y un escalar, suma el escalar a cada elemento de la matriz.
Operador resta (-) Idntico a la suma en su utilizacin.
Operador producto (*) Utilizado entre matrices calcula el producto matricial.
Las dimensiones de las matrices deben ser congruentes.
Utilizado entre una matriz y un escalar, multiplica el escalar por cada elemento de la matriz.
Operador producto elemento a elemento (.*) Se utiliza entre dos matrices de iguales
dimensiones y multiplica elemento a elemento, obteniendo otra matriz de igual dimensin.
Operador potenciacin (^) 31 Si c es un entero y A es una matriz cuadrada, A^c calcula el
producto A*A*A .............. *A, c veces.
En Matlab existe el operador divisin a la derecha (/) y divisin a la izquierda (\). La utilizacin
entre matrices es la siguiente: - \ divisin-izquierda: A\B Si A es cuadrada A\B=inversa(A)*B.
Si A no es cuadrada A\B es la solucin en el sentido de mnimos cuadrados del sistema AX=B. / divisin-derecha: A/B Si B es cuadrada A/B=A*inversa(B). Si B no es cuadrada, A/B es la
solucin del sistema XB=A.

Operaciones por medio de funciones En men de la ayuda: matlab\elmat - Elementary


matrices and matrix manipulacin y matlab\matfun - Matrix functions - numerical linear
algebra, se pueden encontrar las diversas funciones que se aplican a las matrices.
Destacamos las ms elementales como: inv(A) da como resultado la matriz inversa de A. det(A)
da como resultado el determinante de A. trace(A) da como resultado la traza de A. rank(A) da
el rango de A Debe destacarse que la mayora de las funciones definidas en el programa se
ejecutan sobre cualquier matriz aplicndose elemento a elemento.
Por ejemplo:
>> Sin(A) 32
Ofrece como respuesta una matriz del mismo tamao que A cuyos elementos son el seno del
correspondiente elemento de A: 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.6570 0.9894
0.4121 4.
Otras formas de definir matrices Algunas veces, introducir matrices por el teclado no es
prctico. Veremos otras formas ms potentes de generar matrices que luego, tras
modificaciones nos pueden llevar a definir la que nos interesa. Los comandos a utilizar se
encuentren en matlab\elmat.
Algunas de estas funciones son las siguientes: eye(n) forma la matriz identidad de tamao
(nxn) zeros(m,n) forma una matriz de ceros de tamao (mxn) zeros(n) forma una matriz de
ceros de tamao (nxn) ones(n) forma una matriz de unos de tamao (nxn) ones(m,n) forma
una matriz de unos de tamao (mxn) rand: este comando genera nmeros pseudoaleatorios
distribuidos uniformemente entre 0 y 1.
Cada llamada proporciona un nuevo nmero. rand(n): genera una matriz de nmeros
pseudoaleatorios entre 0 y 1, con distribucin uniforme, de tamao nxn. rand(m,n): igual que
en el caso anterior pero de tamao mxn. 5. Manipulacin de matrices Con este programa es
posible crear matrices a partir de una dada, extraer o cambiar elementos de una matriz y, en
general, manipular de casi cualquier forma estos elementos. Veamos los diversos caminos para

realizarlo: - Crear una nueva matriz que reciba alguna caracterstica o propiedad de la de
partida - Componer una matriz a partir de submatrices ms pequeas.
Mediante la manipulacin de los elementos de la matriz de partida. Caractersticas de una
matriz: 33 Destacamos algunos comandos que permiten trabajar con las caractersticas o
elementos de una matriz de partida: size (A), length(A) nos dan informacin sobre las
caractersticas de la matriz A, en este caso dimensin de la matriz o longitud del vector. zeros
(size(A)) genera una matriz de ceros del mismo tamao que A. ones(size(A)) lo mismo con
matriz de unos A=diag(x) devuelve una matriz diagonal cuyos elementos de la diagonal son los
del vector x. triu(A) y tril(A) forman matrices triangulares superiores e inferiores a partir de la
matriz A.
Composicin de matrices Crear una matriz a partir de submatrices es algo muy sencillo para el
programa que sin embargo es de mucha utilidad por ejemplo a la hora de aadir datos o
ampliar informacin. Si contamos con la submatrices A=[1 2; 3 4] y B=[1,6], C=[A; B] genera la
matriz: 1 2 3 4 1 6 Si tenemos con los vectores u=[1 2 3 4] y v=[1 6], w=[u v] devuelve: w=[1 2 3
4 1 6] Manipulacin de elementos Veremos como extraer, cambiar o eliminar elementos o
lneas (filas o columnas de una matriz). Dado un vector x, la ejecucin de x(i) devuelve el
elemento situado en la posicin i de ese vector. En el caso matricial A(i,j) devuelve el elemento
situado en la fila i columna j de la matriz A. El operador (:) es de gran importancia en Matlab.
Puede decirse que es un operador que respeta el rango.
Veamos su utilidad con algunos ejemplos: >> x=1:10 x = 1 2 3 4 5 6 7 8 9 10 >> x=[0:2:10] x = 34
0 2 4 6 8 10 El primer nmero indica el valor inicial, el segundo el paso del incremento y el
tercero el elemento final. Como hemos visto si se omite el intermedio, por defecto se toma la
unidad. Nota: En general, el operador genera vectores fila. Conocido este operador, podemos
decir que con l es posible definir variables vectoriales: x= [p:q] general un vector de primer
elemento p, ltimo q y los elementos intermedios se diferencian en una unidad x= [p:i:q]
devuelve un vector de primer elemento p, ltimo q y los elementos intermedios se diferencian
en i unidades. Destacar tambin el comando linspace: x=linspace(p,q,n) genera un vector de n
elementos uniformemente espaciados desde p hasta q.
A esto se le puede dar gran nmero de aplicaciones:
Recordando que el vector x es: x=[1 2 3 4 5 6 7 8 9 10]:
>> x(1:4)
ans = 1 2 3 4
>> A=[1 2;3 4;5 6]
A = 1 2 3 4 5 6 >> A(1,:)
ans = 1 2 >> A(:,2) ans = 2 4 6
Scripts vs. Funciones

Los scripts trabajan sobre variables en el Workspace de la lnea de comandos o crean nuevas
variables que son aadidas a dicho Workspace, de modo que todas esas variables pueden ser
luego manipuladas desde la lnea de comandos.

Definicin de la funcin: Esta lnea define el nombre de la funcin (pvt) y el nmero y orden de
parmetros de entrada (en el ejemplo, un parmetro: p) y el nmero y orden de parmetros
de salida o resultados
Si la funcin tiene ms de un parmetro de entrada, estos se separan por comas y si tiene ms
de un parmetro de salida se escribe la lista separada por comas y entre corchetes ([ ]).
Este sera un ejemplo general: function [x, y] = mifuncion (a, b, c)
Lnea H1: Se trata de una primera lnea comentada (empieza con %) tras la lnea de
definicin de la funcin. MATLAB muestra esta primera ayuda cuando usamos el comando
lookfor o pedimos ayuda sobre un directorio
Texto de ayuda: MATLAB muestra este texto junto con la lnea H1 cuando solicitamos ayuda
sobre una determinada funcin (help pvt). Se muestra el texto comentado hasta la primera
lnea en blanco o la primera lnea ejecutable. El resto de comentarios tras este bloque se
ignoran.
Cuerpo de la funcin: esta parte contiene las sentencias que realizan los clculos y asignan
valores a los parmetros de salida. La funcin opera sobre variables en su propio espacio de
trabajo, separado del espacio de trabajo de la lnea de comandos. Nombre de la funcin Los
nombres de las funciones deben empezar por una letra.
Por lo dems, pueden ser cualquier combinacin de letras, nmeros o signos. El nombre del
fichero (M-file) que contiene la funcin es el mismo nombre de la funcin seguido de la
extensin .m. pvt.m

Graficas
Para dibujar funciones de una variable, Matlab dispone de la funcin plot, con la siguiente
sintaxis:
plot(Y) Dibuja la grfica que toma los ndices de Y como valores en el eje x y las columnas de Y
como valores en el eje y. p
lot(x1,y1, ...) Une con una lnea todos los pares de la forma (xn,yn)
plot(X,Y) Si X e Y son vectores, dibuja las columnas/filas de X con respecto a las columnas/filas
de Y.
plot(M) Si M es una matriz, dibuja cada columna de M con respecto a su ndice.
plot dispone de argumentos opcionales que permiten especificar el tipo de lnea que se dibuja,
as como su color y el tipo de marcador para los puntos dibujados:
plot(X,Y, --r) Dibuja una lnea discontinua en rojo
plot(X,Y, s) Dibuja solo los puntos como cuadrados
plot(X,Y, +r) Dibuja solo los puntos como cruces en rojo
plot(X,Y, g) Dibuja una lnea continua en verde
Es posible configurar ciertos aspectos de las grficas, entre otros:
title(string) Establece la cadena string como ttulo de la grfica xlabel(string)
Establece la cadena string como etiqueta del eje x de la grfica ylabel(string)
Establece la cadena string como etiqueta del eje y de la grfica axis Controla la apariencia y
escala de los ejes. Presenta varias opciones

8.- Resultados Obtenidos

Fig. 8.1 Grafica de seal contiua sen(2/pi en t )


Fuente: Autor

Software: Matlab

Grafica de seal discreta sin (0.2*pi n)


1
0.8
0.6
0.4

x(n)

0.2
0
-0.2
-0.4
-0.6
-0.8
-1

10

15

20
n

25

30

Fig. 8.2 Grafica de seal dicreta sen(0.2*pi en n)


Fuente: Autor

Software: Matlab

35

40

Grafica de seal discreta sin (0.2*pi n)


1

0.8

0.6

0.4

x(n)

0.2

-0.2

-0.4

-0.6

-0.8

-1

0.2

0.4

0.6

0.8

1
n

1.2

1.4

1.6

1.8

Fig. 8.3 Grafica de seal continua sen(2*pi en t) sobrepuesta con seal discreta de sin(0.1*pi*n);
Fuente: Autor

Software: Matlab

Grafica de sen(2/PI en t)
1

x(t)

0.5
0
-0.5
-1

0.2

0.4

0.2

0.4

0.6

0.8
1
1.2
1.4
1.6
tiempo en segundos
Grafica de seal discreta sin (0.2*pi n)

1.8

1.8

x(n)

0.5
0
-0.5
-1

0.6

0.8

1
n

1.2

1.4

1.6

Fig. 8.4 Grafica de seal continua sen(2*pi en t) y seal discreta de sin(0.1*pi*n) en la misma ventana
Fuente: Autor

Software: Matlab

9.- Discusin
Podemos trabajar con diferentes partes de una matriz, al igual que se poda hacer con
vectores
Se utiliza las diferentes operaciones con vectores y matrices para su representacin
por ejemplo, obtener la inversa de una matriz.
Una de las caractersticas ms potentes de MATLAB para el anlisis de seales y datos es su
trazado de datos grficos. MATLAB,el comando bsico de trazado es la trama (t, x) del sistema,
que genera una trama de valores de x en comparacin con los valores de t en una figura
separada ventana los comandos plot para seales continuas y stem para seales discretas
adems xlabel y ylabel se utilizan para agregar texto al eje, y el title se utiliza para
proporcionar un ttulo en la parte superior del grfico casi todos los aspectos de una seal
como (estilo, tamao, color, etc.) puede cambiarse por medio de comandos apropiados adema
en tiempo discreto se puede cambiar el circulo pequeo al final de la lnea lleno o vacio.
MATLAB proporciona una capacidad de mostrar ms de un grfico de diferentes seales en
una misma ventana con el comando subplot as como hold on y hold off para intercalar
grficos en una misma ventana la utilizacin de herramientas de simulacin es de alta
importancia para el desarrollo profesional.

10.- Conclusiones

Es un programa para realizar clculos numricos con vectores y matrices, y por


tanto se puede trabajar tambin con nmeros escalares (tanto reales como
complejos), con cadenas de caracteres y con otras estructuras de informacin
ms complejas las cuales permiten el desarrollo de los diferentes ejercicios
MATLAB ofrece muchas herramientas para realizar la funcionalidad
indispensable en procesamiento de seales como filtros para seales de audio

11.- Recomendaciones
Podemos trabajar con diferentes partes de una matriz, pero debemos tener
cuidado de hacer operaciones legales para filas y columnas
Para un mejor manejo de graficas tener en cuenta que se puede cambiar los diferentes
parmetros para lograr identificar de mejor manera la grfica con la que se est
trabajando adems de renombrar los ejes X e Y y el ttulo de la grfica.

12.- Bibliografa
[1] V. K. INGLE y J. G. PROAKIS, Digital Signal Processing using MATLAB, THIRD EDITION
ed., N. University, Ed., USA, 2012, p. 671.
[2] consulta pgina web
Tema 3: Vectores y matrices. Conceptos bsicos
http://www2.caminos.upm.es/Departamentos/matematicas/Fdistancia/PIE/matlab/te
masmatlab/TEMA%203.pdf

PRACTICA # 2
ASIGNATURA: PROCESAMIENTO DIGITAL DE SEALES
TIEMPO PLANIFICADO EN EL SILABO: 4 HORAS
TIEMPO DE LA PRCTICA POR GRUPO: 2 HORAS
NUMERO DE ESTUDIANTES POR GRUPO: 1 ESTUDIANTES
NMERO DE EQUIPOS: 6
INTEGRANTES: PAUL ALVAREZ

1. TEMA: Tiempo discreto seales y sistemas


2.- Objetivos. Que el alumno se familiarice con el entorno de trabajo de Matlab
Que el estudiante realice respuestas con seales en tiempo discreto
Que el alumno genere, grafique y ejecute representaciones de seales y
sistemas utilizando MATLAB.
3.- Materiales y Reactivos
Texto Gua de la asignatura
(Slicer_Digital_Signal_Processing_Using_MATLAB_3rd_Edition)
4.- Equipos y Herramientas
Computador con Paquete informtico Matlab
5.- Instrucciones

Colocar las mochilas en los casilleros


Prohibido consumo de alimentos
Prohibido equipo de diversin, celulares etc.
Prohibido jugar
Prohibido mover o intercambiar los equipos de los bancos de trabajo
Uso adecuado de equipos
6.- Actividades a Desarrollar

Generar

funciones

de

los

TIPOS DE SECUENCIAS
Secuencia de muestras por unidad:
Funcion impseq
function [x,n] = impseq(n0,n1,n2)

ejemplos

del

texto

del

captulo

%
%
%
%
n

Generates x(n) = delta(n-n0); n1 <= n <= n2


---------------------------------------------[x,n] = impseq(n0,n1,n2)
= [n1:n2]; x = [(n-n0) == 0];

Funcion stepseq
function [x,n] = stepseq(n0,n1,n2)
% Generates x(n) = u(n-n0); n1 <= n <= n2
% -----------------------------------------% [x,n] = stepseq(n0,n1,n2)
%
n = [n1:n2]; x = [(n-n0) >= 0];
stem(x);

OPERACIONES EN SECUENCIAS
Suma de seales
function [y,n] = sigadd(x1,n1,x2,n2)
% implements y(n) = x1(n)+x2(n)
% ----------------------------% [y,n] = sigadd(x1,n1,x2,n2)
% y = sum sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2 (n2 can be different from n1)
%
n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n)
y1 = zeros(1,length(n)); y2 = y1; % initialization
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of y
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y
y = y1+y2; % sequence addition

Multiplicacion de seales
function [y,n] = sigmult(x1,n1,x2,n2)
% implements y(n) = x1(n)*x2(n)
% ----------------------------% [y,n] = sigmult(x1,n1,x2,n2)
% y = product sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2 (n2 can be different from n1)
n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n)
y1 = zeros(1,length(n)); y2 = y1; %
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of y
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y
y = y1 .* y2;

Desplazamiento
function [y,n] = sigshift(x,m,k) %% funcion de desplazamiento
% implements y(n) = x(n-k)
% ------------------------% [y,n] = sigshift(x,m,k)
%
n = m+k; y = x;

De Plegado

function [y,n] = sigfold(x,n)


% implements y(n) = x(-n)
% ----------------------% [y,n] = sigfold(x,n)
%
y = fliplr(x); n = -fliplr(n);
plot(n,y);

Descomposicin de seal en la parte par e impar


function [xe, xo, m] = evenodd(x,n)
% Real signal decomposition into even and odd parts
% ------------------------------------------------% [xe, xo, m] = evenodd(x,n)
%
if any(imag(x) ~= 0)
error('x is not a real sequence')
end
m = -fliplr(n);
m1 = min([m,n]); m2 = max([m,n]); m = m1:m2;
nm = n(1)-m(1); n1 = 1:length(n);
x1 = zeros(1,length(m));
x1(n1+nm) = x; x = x1;
xe = 0.5*(x + fliplr(x));

Graficas de diferentes funciones


%%Grafica de funcion 3*cos(0.1*pi*n+pi/3) + 2*sin(0.5*pi*n)
n = [0:10]; x = 3*cos(0.1*pi*n+pi/3) + 2*sin(0.5*pi*n);
subplot(3,1,1)
stem(n,x);
%%Grafica de funcion x1 en funcion de n1
n1=[-3,-2,-1,0,1,2,3,4]; x1=[2,1,-1,0,1,4,3,7];
subplot(3,1,2)
stem(n1,x1);
%% grafica de funcion x3 en funcion de n3
n3 = [0:10]; x3 = (0.9).^n;
subplot(3,1,3)
stem(n3,x3)

EXAMPLE 2.1 Generar y trazar cada una de las siguientes secuencias en el intervalo indicado.
a. x(n) = 2(n + 2) (n 4), 5 n 5.
b. x(n) = n[u(n)u(n10)]+10e0.3(n10)[u(n10)u(n20)], 0 n 20.
c. x(n) = cos(0.04n) + 0.2w(n), 0 n 50, donde w (n) es una secuencia aleatoria gaussiana
con media cero y varianza unidad.
d. x(n) = {..., 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, ...}; 10 n 9.
x(n) = 2(n + 2) (n 4), 5 n 5.

x = 2*impseq(-2,-5,5) - impseq(4,-5,5);
subplot(2,2,1);
stem(n,x);
title('secuencia del problema 2.1a')

xlabel('n'); ylabel('x(n)');
x(n) = n[u(n)u(n10)]+10e0.3(n10)[u(n10)u(n20)], 0 n 20.

n = [0:20]; x1 = n.*(stepseq(0,0,20)-stepseq(10,0,20));
x2 = 10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
x = x1+x2;
subplot(2,2,3);
stem(n,x);
title('secuencia del problema 2.1b')
xlabel('n'); ylabel('x(n)');
x(n) = cos(0.04n) + 0.2w(n), 0 n 50,

n = [0:50]; x = cos(0.04*pi*n)+0.2*randn(size(n));
subplot(2,2,2);
stem(n,x);
title('secuencia del problema 2.1c')
xlabel('n'); ylabel('x(n)');
x(n) = {..., 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 3, 2, 1, ...}; 10 n 9.

n = [-10:9];
x = [5,4,3,2,1];
xtilde = x' * ones(1,4);
xtilde = (xtilde(:))';
subplot(2,2,4);
stem(n,xtilde); title('secuencia del problema 2.1d')
xlabel('n'); ylabel('xtilde(n)');

Ejemplo 2.2 Sea x (n) = {1, 2, 3, 4, 5, 6, 7, 6, 5, 4, 3, 2, 1}. Determinar y representar


grficamente las siguientes secuencias.
a. x1(n) = 2x(n 5) 3x(n + 4)

n = -2:10; x = [1:7,6:-1:1];
[x11,n11] = sigshift(x,n,5);
[x12,n12] = sigshift(x,n,-4);
[x1,n1] = sigadd(2*x11,n11,-3*x12,n12);
subplot(2,1,1);
stem(n1,x1);
title('Secuencia del Ejemplo 2.2a')
xlabel('n1'); ylabel('x1(n)');
b. x2(n) = x(3 n) + x(n) x(n 2)

[x21,n21] = sigfold(x,n);
[x21,n21] = sigshift(x21,n21,3);
[x22,n22] = sigshift(x,n,2);
[x22,n22] = sigmult(x,n,x22,n22);
[x2,n2] = sigadd(x21,n21,x22,n22);
subplot(2,1,2);
stem(n2,x2);
title('Secuencia del Ejemplo 2.2b')
xlabel('n'); ylabel('x2(n)');

Ejemplo 2.3 Generar la seal de valor complejo

x(n) = e(0.1+j0.3)n, 10 n 10 y trazar su magnitud, fase, la parte real y la parte imaginaria


de cada cuatro sub tramas separadas.
n = [-10:1:10]; alpha = -0.1+0.3j;
x = exp(alpha*n);
subplot(2,2,1);
stem(n,real(x));
title('parte real');xlabel('n')
subplot(2,2,2);
stem(n,imag(x));
title('parte inmaginaria');xlabel('n')
subplot(2,2,3);
stem(n,abs(x));
title('magnitud');xlabel('n')
subplot(2,2,4);
stem(n,(180/pi)*angle(x));title('Fase');xlabel('n')

Ejemplo 2,4 Sea x (n) = u (n) - u (n - 10). Descomponer x (n) en componentes pares e impares.
n = [0:10];
x = stepseq(0,0,10)-stepseq(10,0,10);
[xe,xo,m] = evenodd(x,n);
subplot(2,2,1); stem(n,x);
title('Pulso Rectangular')
xlabel('n'); ylabel('x(n)');
axis([-10,10,0,1.2])
subplot(2,2,2); stem(m,xe);
title('Parte par')
xlabel('n'); ylabel('xe(n)');
axis([-10,10,0,1.2])
subplot(2,2,4); stem(m,xo);
title('Parte impar')
xlabel('n'); ylabel('xe(n)');
axis([-10,10,-0.6,0.6])

Convolucion de seales discretas


x = [3, 11, 7, 0, -1, 4, 2]; h = [2, 3, 0, -5, 2, 1];
y = conv(x, h);
stem(y)

Funcion conv_m
function [y,ny] = conv_m(x,nx,h,nh)
% Modified convolution routine for signal processing
% -------------------------------------------------% [y,ny] = conv_m(x,nx,h,nh)
% [y,ny] = convolution result
% [x,nx] = first signal
% [h,nh] = second signal
%
nyb = nx(1)+nh(1); nye = nx(length(x)) + nh(length(h));
ny = [nyb:nye]; y = conv(x,h);

Ejemplo 2.9 Realizar la convolucin en el Ejemplo 2.8 utilizando la funcin conv_m


x = [3, 11, 7, 0, -1, 4, 2];
nx = [-3:3];

h = [2, 3, 0, -5, 2, 1];


nh = [-1:4];
[y,ny] = conv_m(x,nx,h,nh)
stem(y,ny)

Ejemplo 2.11 Dada la siguiente ecuacin en diferencias


y (n) - y (n - 1) + 0.9y (n - 2) = x (n); n
a.

b.
c.

Calcular y representar grficamente la respuesta al impulso h (n) en n = -20,. . . , 100. Segundo


Calcular y graficar la respuesta escaln unitario s (n) en n = -20,. . . , 100.
Es el sistema especificado por h (n) estable?

b = [1]; a = [1, -1, 0.9];


n = [-20:120];
h = impz(b,a,n);
subplot(2,1,1);
stem(n,h);
title('Respuesta al impulso'); xlabel('n'); ylabel('h(n)')
x = stepseq(0,-20,120);
s = filter(b,a,x);
subplot(2,1,2); stem(n,s)
title('Respuesta al escalon'); xlabel('n'); ylabel('s(n)')
sum(abs(h))
z = roots(a); magz = abs(z)

Ejemplo 2.12 Consideremos la convolucin dada en el ejemplo 2.7. La secuencia de entrada es


de duracin finita
b = [1]; a = [1,-0.9];
n = -5:50; x = stepseq(0,-5,50) - stepseq(10,-5,50);
y = filter(b,a,x);
stem(n,y); title('Secuencia de salida')
xlabel('n'); ylabel('y(n)'); axis([-5,50,-0.5,8])

7.- Fundamentos Tericos


Seales y sistemas
Seal
Es algo que lleva informacin, una seal se representa matemticamente como funciones de
una o ms variables independientes por ej. Voz=f(t).
Imagen fotogrfica = funcin de brillo respecto a dos variables espaciales.
La variable independiente puede ser continua o discreta.
Seal en tiempo continuo es continua en sentido temporal y es una variable independiente
continua (seal analgica)
Seal en tiempo discreto est representado en instantes discretos de tiempo o sea la variable
independiente toma valores discretos o se representan como secuencias de nmeros y su
amplitud tambin puede ser continua o discreta. Sea digital es discreta tanto en tiempo como
en amplitud. Secuencias.- Son seales en tiempo discreto y son secuencias de nmeros x en los
que el n-simo nmero indica como x[n] y se representa.

Estas secuencias surgen de muestrear una seal analgica siendo el n-simo nmero de la
secuencia el valor de la seal analgica Xa(t) en el intervalo nT. O sea: x[n]=Xa(nT) en el

intervalo
T es el periodo de muestreo 1/T = f muestreo En forma grfica
X[n] no est definida para valores no enteros de n

Secuencias bsicas y operaciones bsicas


El producto y la suma de secuencias x[n] y y[n] son tambin producto y suma muestra a
muestra
X*n+ * Cada muestra se multiplica por
y[n] se retrasa respecto a x[n] si y[n]=x[n-n0] n0
Secuencia muestra unidad
Esta secuencia juega el mismo papel que la funcin Impulso Unidad (Delta Dirac) para tiempo
continuo. Se la llama tambin Impulso en tiempo discreto. Cualquier secuencia se puede
expresar como una sumatoria de impulsos desplazados y escalados
Escaln unitario

CONVOLUCION
Haciendo un resumen de cmo trabaja el sistema, el sistema cambia una seal de entrada en
una seal de salida. Primero, la seal de entrada se descompone en un juego de impulsos,
cada uno de los cuales pueden ser vistos y escalados y desplazados por una funcin .
Segundo, la salida resultante de cada impulso se escala y desplaza segn la respuesta impulso.
Tercero, la seal de salida resultante se encuentra aadiendo cada una de estas respuestas
escaladas y desplazadas individuales. Este es un mtodo grafico para realizar la convolucin
pero primero veremos lo que es la suma de convolucin. Se demuestra que: h[n-k]=h[-(k-h)] Si

Resumiendo los tres pasos anteriores


1) Si h[k] es una secuencia y deseamos calcular h[n-k]=h[-(k-n)], se define h1[k]=h[-k]
2) Se define h2[k]=h1[k]retrasada n muestras en el eje k es decir h2[k]=h1[k-n]
3) Se demuestra la relacin entre h1[k] y h[k] h2[k]=h1[k-n]=h[-(k-n)] Para realizar la
convolucin en tiempo discreto se multiplican dos secuencias x[n] y h[n-k+ en <k<
Se suman los productos para obtener la salida y[n]. Para obtener otra muestras de salida se
desplaza el origen de la secuencia h[-k] hasta la posicin de la nueva muestra y se repite el
proceso

8.- Resultados Obtenidos


5
0
-5

10

10
5
0
-5
-3

-2

-1

1
0.5

Fig. 8.1 Grafica de seales discretas


Fuente: Autor

Software: Matlab

10

secuencia del problema 2.1a

secuencia del problema 2.1c

2
1

x(n)

x(n)

0
-1
-1
-5

-2

0
5
n
secuencia del problema 2.1b

xtilde(n)

x(n)

10

6
4
2
0

20

40
60
n
secuencia del problema 2.1d

3
2
1

10
n

15

20

0
-10

-5

0
n

10

Fig. 8.2 Secuencias del problema 2.1literales a,b,c,d


Fuente: Autor

Software: Matlab

Secuencia del Ejemplo 2.2a


20

x1(n)

-20

-40
-10

-5

10

15

n1

Secuencia del Ejemplo 2.2b


40

x2(n)

30
20
10
0
-8

-6

-4

-2

2
n

Fig. 8.3 Secuencias del problema 2.2 literales a,b


Fuente: Autor

Software: Matlab

10

12

parte real

parte inmaginaria

-2

-1

-4
-10

-5

0
n
magnitud

-2
-10

10

-5

0
n
Fase

10

-5

0
n

10

200
100

0
1

0
-10

-100

-5

0
n

10

-200
-10

Fig. 8.3 Secuencias del problema 2.2 literales a,b


Fuente: Autor

Software: Matlab

Pulso Rectangular

Parte par

xe(n)

0.5

0
-10

-5

0
n

0.5

0
-10

10

-5

0
n

10

10

Parte impar
0.5

xe(n)

x(n)

-0.5
-10

-5

0
n

Fig. 8.4 Secuencias del problema 2.4 literales a,b,c descomposicin de seal en par e impar
Fuente: Autor

Software: Matlab

60

40

20

-20

-40

-60

10

12

Fig. 8.5 Convolucion de seal discreta x = [3, 11, 7, 0, -1, 4, 2]; h = [2, 3, 0, -5, 2, 1];
Fuente: Autor

Software: Matlab

y =
6

31

47

-51

-5

41

18

-22

-3

-2

-4
-60

-40

-20

20

40

60

Fig. 8.6 Convolucion de seal discreta x = [3, 11, 7, 0, -1, 4, 2]; nx = [-3:3];h = [2, 3, 0, -5, 2, 1];nh = [-1:4];
Fuente: Autor

Software: Matlab

Respuesta al impulso
1

h(n)

0.5
0
-0.5
-1
-20

20

20

40

60
n
Respuesta al escalon

80

100

120

80

100

120

s(n)

0
-20

40

60
n

Fig. 8.7 Grafica de ecuacin en diferencias respuesta al escaln y respuesta al impulso


Fuente: Autor

Software: Matlab

Output sequence
8
7
6

y(n)

5
4
3
2
1
0
-5

10

15

20

25
n

30

35

40

45

50

Fig. 8.8 Grafica de Convolucion de secuencia de duracin infinita


Fuente: Autor

Software: Matlab

9.- Discusin
En al presente practica se realiz graficas de seales denotadas por x (t), en la que la
variable t puede representar cualquier cantidad fsica
La seal discreta se denotada por x (n), en el que se intervalo de variable n y
representa instancias discretas en el tiempo que es una secuencia de nmeros y se
denota por una de las siguientes notaciones.
Se utilizan vectores como las muestras de informacin de posicin
Adems se utiliz diferentes funciones o secuencias de cdigo como Funcin impseq
,Funcin stepseq y operaciones de suma, multiplicacin,escalamiento,desplazamiento,
inversin de seal ,plegado y descomposicin de seales en su parte par e impar las
cuales se realizan para resolucin y representacin de problema en tiempo discreto en
el cual trabajaremos para realizar en inicio del procesamiento de estas seales
comenzando por representacin, operaciones ,Convolucion, ecuaciones en diferencias
para la respuestas al escaln y al impulso
10.- Conclusiones
Se pudo concluir que la creacin de funciones ,son esenciales para la reduccin
del cdigo al momento de hacer un ejercicio.
Para trabajar con seales discretas existen diferentes tipos de operaciones
como Convolucion que nos permite conocer la respuesta al impuso de un
sistema.

11.- Recomendaciones

Todo archivo .m que vayan a crear, "documntenlo". El smbolo para hacer


comentarios en una lnea es el porcentaje (%). Documenten entre otras cosas lo
que hace el cdigo, los parmetros y variables de retorno para mejor
entendimiento
Tener en cuenta la posicin en la que se desea las grficas de diferentes seales
en una sola pantalla para poder utilizar de una mejor manera el comando
subplot adems de las caractersticas que se puede cambiar en el grafico para
una mejor diferenciacin de las graficas.

12.- Bibliografa
[1] V. K. INGLE y J. G. PROAKIS, Digital Signal Processing using MATLAB, THIRD EDITION
ed., N. University, Ed., USA, 2012, p. 671.
[2] consulta pgina web , ELT 3952 PROCESAMIENETO DIGITAL DE SEALES
http://docentes.uto.edu.bo/jespinozaa/wp-content/uploads/texto_dsp.pdf

También podría gustarte