You are on page 1of 7

UNIVERSIDAD NACIONAL DE

INGENIERA
FACULTAD DE INGENIERA MECNICA
PROCESAMIENTO DIGITAL DE SEALES
417 2015-2

MT-

Laboratorio 2
Comandos de Matlab asociados al Procesamiento
Digital de Seales
Objetivo. El alumno aplica comandos de Matlab asociados al procesamiento
digital de seales y realiza algunas aplicaciones bsicas.
Matrices de utilidad
En Matlab existe una lista de matrices muy tiles para la programacin
ones(n)
matriz de unos de orden n x n
ones (m,n)
matriz de unos de orden m x n
ones(A)
se escribe unos del mismo tamao de la matriz A
zeros(n)
zeros (m,n)
zeros(A)
diag([ones(1,n)])
rand(m,n)
Utilice el help de Matlab y explique y ponga ejemplos del uso de los
comandos en mencin
1. Escriba la matriz despus de haber aplicado los siguientes comandos y
dando una breve explicacin del caso :
a) eye(5)
1
0
0
1
0
0
0
0
0
0

0
0
1
0
0

0
0
0
1
0

0
0
0
0
1

b) Cul es la diferencia entre aplicar el comando x = [ones(1,5)] y


diag([ones(1,5)])?

2. Sea x = [4 3 7 -9 1];
Qu resulta de aplicar el comando max(x) y el comando min(x)
max(x) =
min(x) =
si y = [x 2*x x/pi];
resultante

qu resulta? Indique el orden de la matriz

3. El comando rand(1,5) es una matriz fila que genera 5 nmeros


aleatorios entre 0 y 1.
Si se desea generar seales aleatorias que varen entre -1 y +1, aplique
el comando
y = -1 + 2*rand(1,5);
Escriba el resultado

4. El comando escrito anteriormente es equivalente a y = randn(1,5).


Explique la diferencia en la respuesta en caso de no coincidir la
respuesta.

5. La secuencia de comandos mostrada es para determinar la cantidad de


muestras negativas como positivas de un vector de tamao 10
x = rand(1,10);
z = -1 + 2*x
%genera un vector que vara entre -1 y +1.
[f,c]=size(z); %determina las filas y columnas de z. c representa la
longitud del vector
pos = 0;
neg = 0;
for j=1:c
if z(f,j) >= 0
pos = pos + 1;

elseif z(f,j) <= 0


neg = neg + 1;
end
end
fprintf('La cantidad de muestras positivas son %i \n',pos)
fprintf('La cantidad de muestras negativas son %i \n',neg)

6. Adece los pasos 2 y 5 de la gua para generar un programa que


permita hallar de una matriz z de MxN el nmero mximo y mnimo de
dicha matriz, as como su localizacin (i,j) en Z.
7. Se tiene un vector de muestras ( X) en MATLAB que representa a una determinada
seal. Se pide escribir un programa que permita contabilizar el nmero de cruces por
cero de negativo a positivo existente en todo el vector. El programa deber presentar el
resultado por pantalla.

Sugerencia. Dado que es una muestra de datos, considere que el


vector tiene una fila.
Representacin grfica de curvas
8. Se presentan tres cdigos fuente en Matlab. Grafique los resultados de
estos programas Explicando el resultado, usando comentarios
simbolizados con % (comando comentario).
a) t = 0:0.05:10;
y = sin(t);
z = cos(t);
plot(t,y,o,t,z,x)
grid
title(Grficas del seno y coseno)
xlabel(Seg)
ylabel(y=sen(t); z=cos(t))
text(3,0.45,sen(t))
text(0.8,-0.3,cos(t))
b) t = 0:025:10;
y = sin(t);
z = cos(t);
plot(t,y,t,z), text(t,y,y), text(t,z,z)
grid
title(Grficas del seno y coseno)
xlabel(Seg)
ylabel(y=sen(t); z=cos(t))
c) x = 0:0.1:3;
y = x.^2;
plot(x,y)
3

grid
title(Grfica de y = x^2)
xlabel(x)
ylabel(y)
Nota: es probable que tenga problemas de ejecucin por el tema de las
comillas en Matlab
9. Qu modificaciones hara a la codificacin del programa 10.c para
lograr la curva de la figura siguiente, sabiendo que la funcin y ha
cambiado a y = x3 -20x.
Observe que hay una serie de errores entre la codificacin y la
informacin que muestra la grfica.
Grfica de y = x 2

100
80
60
40

20
0
-20
-40
-60
-80
-100
-6

-4

-2

0
x

10.
La secuencia comandos representa la generacin de una suma de
dos seales de distintas frecuencias.
t = 0:0.001:1;
f1=50;
f2=120;
y = sin(2*pi*f1*t)+ 2*sin(2*pi*f2*t) % seal original
yn = y + 0.5*randn(size(t));
% seal con ruido
plot(t(1:50),yn(1:50),'b',t(1:50),y(1:50),'r')
grid

4
3
2
1
0
-1
-2
-3
-4

0.005

0.01

0.015

0.02

0.025

0.03

0.035

0.04

0.045

0.05

Modifique el cdigo para que el grfico muestre el encabezado (title) Grafica de y,


indicar las etiquetas del eje de tiempo, as como el eje de voltaje de la seal. Adems
agregue un texto que indique la seal y y yn.
11.Para generar:
Una seal impulso, escriba esta sentencia: y = [1; zeros(99,1)];
Un escaln: y = ones(100,1)
Si t = [0: 0.001:1)
Una rampa: y = t
Una cuadrtica: y = t.^2
Una seal cuadrada: y = square(4*t)
Observe el resultado de cada generacin en la ventana de comandos (command
window) del Matlab
Segn esto, grafique una seal multicanal que muestre la seal z = [t t.^2
square(4*t)]
Sugerencia: use el comando subplot para graficar z como la graficacin de tres
funciones por separado
12.Para generar una onda triangular escriba esta secuencia de comandos:
fs=10000;
f = 50; %f es la frecuencia de la seal
t=0:1/fs:1/f; % despus, reemplace el parmetro 1/f con 1 y vea el cambio
de la grafica
x = sawtooth(2*pi*f*t);

plot(t,x), axis([0 0.2 -1 1])


grid

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

0.02

0.04

0.06

0.08

0.1

0.12

0.14

0.16

0.18

0.2

Segn lo observado, modifique el cdigo de matlab para que se observe nicamente


dos perodos en la grfica, es decir:

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

0.005

0.01

0.015

0.02

0.025

0.03

0.035

0.04

Preparado por Ing. Gustavo Mesones Mlaga, MSc.


6

El reportes de este laboratorio ser presentado en grupos de a tres hasta el sbado


25 de abril del 2015 al correo jupiter.gmm@gmail.com para su calificacin.

You might also like