Você está na página 1de 9

EL5002 - Analisis de Senales y Sistemas

Laboratorio 1 - Informe Final


Segundo Semestre 2017

Puntaje total: 5 puntos.


Fecha lmite de entrega: Martes, 12 de setiembre a las 23:59.
La evaluacion es estrictamente personal. Cualquier falta de probidad sera sancionada con la nota
desaprobatoria de cero en la sesion de laboratorio.

Material de MIT OpenCourseware: Introduction to Matlab1


Material de referencia: Lecturas 12 y 23

Colgar el codigo desarrollado y comentado en la carpeta /laboratorio/lab01/horario/tarea/


en el siguiente formato: informe01 primer apellido.m. Separar cada pregunta usando code
sections4 .

1 http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-094-introduction-to-matlab-

january-iap-2010/index.htm
2 http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-094-introduction-to-matlab-

january-iap-2010/lecture-notes/MIT6_094IAP10_lec01.pdf
3 http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-094-introduction-to-matlab-

january-iap-2010/lecture-notes/MIT6_094IAP10_lec02.pdf
4 http://www.mathworks.com/help/matlab/matlab_prog/run-sections-of-programs.html

1
1. Variables escalares
Crear las siguientes variables:

a. a = 26
b. b = 3.1416 1110
1
c. c = 4 ej3/4 , donde j es el numero imaginario y e el numero de Euler. Usar exp, pi.
d. d = sin2 (/6). Usar las funciones sin() y pi.

2. Variables vectoriales
Crear las siguientes variables:
 
a. aVec = 8 7.335 11 20.01

15
1
b. bVec =
4.22
1.7
 
c. cVec = 0 0.25 127.75 128 , todos los numeros desde 0 hasta 128 con incrementos de 0.25.

dVec = 101 101.125 102.875 103 , numeros con espaciamiento logartmico entre 10 y 1000.
 
d.
Usar logspace(), calcular primero la longitud del vector.
e. eVec = Backpropagation, eVec es del tipo string o vector de caracteres.

3. Variables matriciales
Crear las siguientes matrices:

10 10
a. aMat = ... . . . ... , una matriz de 15 15 llena del valor 10. Puede usar zeros() o ones().

10 10

1 0

0
0 . . . ..

0 .

.. .
b. bMat = . 0 100 0 .. , una matriz de 15 15 cuya diagonal principal es el vector:


.. ..
. 0 . 0
0 0 1
 
1 15.1429 . . . 85.8571 100 85.8571 . . . 15.1429 1 . Usar diag().

169 156 13
168 155 12
c. cMat = . .. , matriz de 13 13 compuesta por el vector {169, 168, . . . , 1} reorde-

. .. . .
. . . .
157 144 1
nado por columnas. Usar reshape().

2

NaN Inf Inf Inf
Inf NaN Inf Inf
d. dMat =
Inf
, matriz de 44 de elementos Not a Number (NaN) e infinito.
Inf NaN Inf
Inf Inf Inf NaN
Usar nan e inf.
 
10 1 9 2
e. eMat =
8 3 7 4
f. Crear la variable fMat como una matriz de 4 8 con elementos aleatorios con distribucion normal
de media 5 y desviacion estandar 1.5. Usar randn().

4. Ecuaciones con escalares


Crear las siguientes variables:

4 a
a. x = e log2 a b . Usar exp() log10(), sqrt(), y propiedades de la funcion logaritmo.
sin(b)
b. y = ln(a)+R(c/4+2) .
donde R indica la componente real. Usar sin(), log(), y real().
p
c. z = cca cos(b 2 /3) + I{c + d}, donde I indica la componente imaginaria, x corresponde al complejo
conjugado de x. Usar imag() y conj().

5. Ecuaciones con vectores


A partir de las variables creadas en 2, resolver las siguientes ecuaciones elemento a elemento. Por
ejemplo, en el item a., el primer elemento de xVec debe ser la funcion evaluada para el primer elemento
de cVec:
1 2
xVec1 = ecVec1 /(2) ;
2 2
Y de manera similar para el resto de elementos, de tal manera que xVec y cVec sean del mismo
tamano. Usar los operadores . , ./ y . .
2
a. xVec = 1
2 2
ecVec /(2)
.
T
b. yVec = 5!e1/(dVec) , xVecT corresponde a la transpuesta de xVec. Usar factorial() y transpose()
o.

c. zVec = log4 cos(aVec2 ) + (bVec2 )T . Usar log10() y propiedades de la funcion logaritmo.




6. Ecuaciones con matrices


Crear las siguientes variables:

a. aVec=[7 4.3 8.8 3.5 1.1]



b. bVec=[32 5 1.7 6.2 2 3]T
Ademas, crear las siguientes matrices

3

17 24 1 8 15
23 5 7 14 16

4
c. aMat = 6 13 20 22
,
10 12 19 21 3
11 18 25 2 9
donde la suma de elementos en filas y columnas es igual a 65. Usar magic().

0.8415 0.9093 0.1411 0.7568 1
0.9589 0.2794 0.6570 0.9894 1

d. bMat = 0.4121 0.5440 1 0.5366 1
0.4202 0.9906 0.6503 0.2879 1
0.9614 0.7510 0.1499 0.9129 1
que es una matriz originada a partir del vector 1:20, que es usado como argumento de la funcion
sin(). Usar posteriormente reshape y concaternarla a un vector de 1s de 1x5 (puede usar ones()
para generarlo).
Luego, a partir de las matrices y vectores anteriores, resolver:
i. xMat = 12 (bVecT aMatT aMat bVec) + bvecT aMat bVec + bVecT bVec.
1 T
ii. y = 3! [aMat, [aMat, bMat] ], donde [A, B] , AB BA.
T
1
iii. z = 5!+24 + log4 (9 aVec3 + e|aMatbMat | ), donde |a| hace referencia al determinante de a. Usar
la funcion det().

7. Funciones Comunes e Indexado


a. Crear la variable cMat, cuya dimension es 40 40 y que consta de valores aleatorios enteros entre
4 y 8. Usar la funcion rand() para ello. Muestre que, en efecto, los valores que componen la matriz
son los indicados, usando la funcion unique(). Por ultimo, calcule el valor medio, usando la funcion
mean().

b. Calcular la proporcion de cada valor dentro de cMat. Para ello, primero encuentre el numero de veces
que aparece cada valor, con la funcion find(). Luego, compararlo con el numero total de elementos.
c. Ahora se trabaja con un subconjunto de cMat. Para ello, genere dMat, considerando los elementos
de cMat ubicados entre la filas 11 y 30, as como las columnas 13 y 27. Calcule nuevamente la razon
de ocurrencia de cada valor.

d. Dada dMat, crear un vector dVec con los elementos de la diagonal de la matriz. Calcule el valor
medio de dVec usando mean(). Finalmente, si algun valor de dVec es mayor a 7, reemplacelo por el
valor de la media hallado.

8. Graficar multiples lneas y colores


a. Abrir una Figura nueva usando figure()
b. Graficar tres funciones seno:
1
i. Crear un vector temporal t que cubra de 0 a 0.5 con pasos de 1000 .
ii. Crear f1 (t) = sin(60t), f2 (t) = sin(70t), f3 (t) = sin(80t).
iii. Generar la senal multi-frecuencial fm , para ello sumar f1 ,f2 y f3 .

4
c. En la Figura, se graficaran todas la senales generadas: las tres sinusoidales (en un mismo recuadro) y
la multi-frecuencial. Usar el comando subplot() para situarlas dentro de la figura, y dibujarlas con
plot(). Asignarle a cada una de las tres primeras un color distinto, lneas discontinuas y grosor de 4
puntos. Por ejemplo, incluir g: como segundo parametro da como resultado una curva discontinua
de color verde. Nota: Ingresar la opcion hold on en la lnea de comandos. Esto permite que las
curvas descritas no se descarten en caso se describa una nueva curva.
d. Incluir ttulos y etiquetas. Al grafico de la parte superior denominarlo Senales Sinusoidales, mien-
tras que a la restante, Senal Multi-frecuencial Resultante. Ponerle etiquetas a los ejes en ambos
graficos usando xlabel() e ylabel(), los cuales estan en s(tiempo) y cm(amplitud) respectivamente.
Asimismo, usar legend() para anadir leyenda a la primera, indicando cual corresponde a la senal
de 60 Hz, 70 Hz y 80 Hz. Por ultimo, activar las cuadrculas mediante el uso del comando grid on.
e. Crear una nueva figura usando figure().
f. Dada la ecuacion en coordenadas cartesianas (x2 + y 2 )2 = 8x2 y
i. Hallar su forma en coordenadas polares (r, ). Luego, determinar una expresion de r en funcion
a . Incluir esta ultima en los comentarios.
ii. A partir de la expresion anterior, generar el vector r a partir del vector = [0 : /50 : 2].
iii. Graficar el lugar geometrico en ambas coordenadas, polares y cartesianas, en la figura del inciso
e. Usar subplot() para seleccionar la ubicacion de cada funcion. Para la funcion cartesiana,
usar ezplot() (recomendable para graficar funciones implcitas); en cambio, para la funcion en
coordenadas polares, usar polar() con los vectores y r como argumentos de entrada.

9. Manipulando variables
Crear una nueva seccion que realice operaciones sobre el archivo ClaseNotas.mat, el cual contiene
las notas de las evaluaciones de un grupo de alumnos. Se pide realizar lo siguiente:

a. Usar el comando load para leer el contenido del archivo ClaseNotas.mat. El contenido es la variable
nombresYNotas.
b. Mostrar las notas de los alumnos con codigo del 15 al 20, almacenadas en la variable nombresYNotas.
La primera fila corresponde al codigo del alumno, que son numeros enteros del 1 al 35. El resto de
las filas contiene las notas del alumno, las cuales constan de 3 practicas, 5 laboratorios y 2 examenes.
Las notas estan ordenadas de la siguiente manera en cada fila de la variable de interes:
 
P 01 P 02 P 03 L01 L02 L03 L04 L05 E01 E02 ;
Donde P corresponde a notas de practica, L notas de laboratorio y E notas de examen. Los valores
NaN (not a number ) indican que un alumno estuvo ausente durante la evaluacion. La nota final del
curso se calcula de la siguiente manera:

2 Prom. Practicas + 2 Prom. Laboratorios + 3 Examen 01 + 3 Examen 02


Nota Final = ;
10

donde la nota mas baja de practicas y las dos notas mas bajas de laboratorios se eliminan.
c. Debido a que solo nos interesan las notas de los alumnos, extraer una submatriz que contenga
unicamente las filas correspondientes a las notas de todos los alumnos. Asignar esta submatriz a la
variable notas. Usar el ndice end o la funcion size.
d. Dado que no hay recuperacion de evaluaciones, aquellas no rendidas equivalen a la nota 0. Por ello,
es necesario reemplazar los valores NaN. Usar la funcion isnan para realizar esta tarea.

5
e. Se desea realizar una curva, tal que el promedio de la nota final sea 12.5. Para esto, realizar lo
siguiente:
i. Crear las matrices practicasValido de 2 35, laboratoriosValido de 3 35 y examenes de 2 35,
incluyendo las evaluaciones de practicas y laboratorios no eliminados, as como los dos examenes
del curso. Para aquellas evaluaciones en las que se eliminan notas, usar sort() y descartar las
notas mas bajas.
ii. Para cada tipo de evaluacion (practicasValido, laboratoriosValido y examenes), crear vectores
que contengan la nota promedio por evaluacion. Esto debe producir los vectores practicasPro-
medio de 2 1, laboratoriosPromedio de 3 1 y examenes de 2 1. Usar la funcion mean.
iii. Concatenar las matrices practicasValido, laboratoriosValido y examenes para formar la matriz
notasValido de 7 35. De manera similar, concatenar los vectores practicasPromedio, laborato-
riosPromedio y examenes para formar un vector notasPromedio de 7 1. Luego, crear la matriz
matrizPromedio, tal que tenga el mismo tamano que notasValido y que cada columna sea una
copia de notasPromedio. Para lograrlo, hacer el producto externo entre un vector 1 35 con
entradas de valor 1 y el vector notasPromedio. Usar la funcion ones y el operador *.
iv. Crear la matrix notasCurva. Para esto, dividir cada elemento de notasValido con el elemen-
to correspondiente de matrizPromedio, y luego multiplicar el resultado por 12.5. Finalmente,
redondear el resultado.
v. Solo por motivos de revision, obtener el promedio por laboratorio de notasCurva y verificar que
sean cercanos a 12.5. Usar mean y mostrar en pantalla los promedios obtenidos. Usar disp().
vi. Es posible que algunas notas luego de la curva sean mayores a 20 (especialmente si antes tuvieron
un valor numerico cercano a este). Para corregirlo, encontrar todos los elementos de notasCurva
que sean mayores a 20 y darles este valor.
f. Se desea calcular el promedio final de cada alumno y darle un calificativo de su desempeno en el
curso.
i. Crear el vector notaTotal. Primero, definir cada elemento del vector como la nota final de cada
alumno. Luego, obtener el cociente entero de cada elemento entre el numero 4 (para esto, realizar
una division y al resultado extraerle su parte entera y sumarle uno). Usar las funciones mean
(especificando adecuadamente la dimension sobre la cual obtener el calculo) y floor.
ii. Crear un arreglo de celdas, el cual se llamara calificativo, que contenga el merito alcanzable en
el curso en orden ascendente: { No aceptable, Requiere mejora, Regular, Bueno, Muy bueno,
Excelente }. Luego, crear el vector notasCalificativo al usar notaTotal (que ahora solo tendra
entradas del 1 al 6) como ndice del arreglo de celdas calificativo.
iii. Usar la funcion disp para mostrar el siguiente formato: Los calificativos de cada alumno son
: seguido de un listado por alumno basado en calificativo.

10. Circuito RC
Simular la respuesta transitoria del circuito RC mostrado en la Figura 1, comparar la respuesta para
dos valores de resistencia. Se sabe que la ecuacion de carga de un condensador es la siguiente,

v0 (t) = V (1 et/(RC) ),

donde V es el voltaje de la fuente, R el valor de la resistencia en ohmios y C la capacitancia en faradios.


Se asume que el condensador se encuentra inicialmente descargado. RC es la constante de tiempo.
Luego, La ecuacion de descarga esta expresada como:

v0 (t) = Vm et/(RC) ,

donde Vm es el voltaje inicial y RC la constante de tiempo.

6
R

Vs C V(t)

Figura 1: Circuito RC

a. En una nueva seccion del programa principal, incluir lo siguiente: crear las variables Vs , C y R, que
representan el valor de la fuente de voltaje de 10 V, el condensador de 50F y la resistencia de 500.
b. Describir el voltaje de carga y descarga del condensador por un segundo: medio segundo de carga y
medio segundo de descarga.

i. Crear la variable tau, que representa la constante de tiempo.


ii. Crear la variable t, que representa el tiempo de 0 a 1 s. con 100 muestras. Utilizar linspace().
A partir de t, crear la variable t1 , que representa el tiempo de 0 a 0.5 s. Para hallar t1 , una
opcion es calcular en Matlab t1 = t(1 : end/2), donde end corresponde al ultimo elemento del
vector.
iii. Implementar las ecuaciones de carga y descarga del condensador:

v1 = Vs (1 exp(t1 /tau))
v2 = v1(end) exp(t1 /tau).

Observar que para v2 se toma como valor inicial de descarga el ultimo valor de v1 .
iv. Se tiene la variable de salida t, para obtener v se concatenan v1 y v2 . Es decir, v = [v1 v2 ].
c. Graficar el voltaje de carga y descarga para esa constante de tiempo.

d. Repetir el punto b. para una resistencia de 2k. En la misma figura, graficar el voltaje de carga y
descarga.
e. Incluir ttulo y etiquetas en la figura. La Figura 2 muestra el resultado esperado.

11. Modelamiento de un Sistema Dinamico: Ecuacion Logstica


Una secuencia empleada como un modelo de crecimiento de la poblacion esta definida por la ecuacion
logstica:
Pn+1 = kPn (1 Pn ),
donde Pn mide el tamano de la poblacion en la enesima generacion y r es la tasa de crecimiento.
a. En primer lugar, definir tres variables de entrada:
i. variable k: pertenece al intervalo abierto ]0, 4[
ii. variable P 04: pertenece al intervalo cerrado [0, 1]
iii. variable n: representa a la longitud de la serie, que debe definirse como 100.

7
Circuito RC
10
R1 = 500
9
R2 = 2000
8

6
Voltaje (V)

0
0 0.2 0.4 0.6 0.8 1
tiempo (s)

Figura 2: Circuito RC

Poner en codigo la ecuacion logstica, con los parametros de entrada senalados.


b. Se propone ejecutar su codigo con los siguientes valores iniciales, cuyo comportamiento es descrito
en la Figura 3:
i. k = 0.4, P 0 = 0.3
ii. k = 2.5, P 0 = 0.7
iii. k = 3.5, P 0 = 0.6
Que diferencias observa tras usar cada par de datos iniciales? En que caso se llega a la extincion de
la especie y en cual es imposible predecir su estado final?
c. Continue explorando para distintos valores iniciales. En base a sus resultados, presentar tres rangos
de valores para k. El primero, que lleve a la extincion a la especie; el segundo, que produzca un valor
estacionario y haga predecible el estado final. Por ultimo, uno en el cual se produzca periodicidad
mayor a dos o un comportamiento impredecible (denominado caos).

12. Metodo de la secante


Es un metodo para resolver ecuaciones de tipo f (x) = 0, basandose en aproximar la funcion por
lneas secantes. Se requiere dos aproximaciones iniciales x0 y x1 (preferiblemente numeros cercanos a la
solucion). A partir de estos puntos, se puede determinar los puntos (x0 , y0 = f (x0 )) y (x1 , y1 = f (x1 )),
ambos sobre la funcion f. Conectando ambos puntos se obtiene la recta secante:
y1 y0
y y1 = (x x1 )
x1 x0
Como se busca f (x) = 0, se toma y = 0 y se resuelve para x, y este valor se utiliza para la siguiente
aproximacion. El proceso se repite dando la iteracion:
xn xn1
xn+1 = xn yn
yn yn1

8
Ecuacin Logstica
0.4
k=0.4 P0=0.3
Pn+1
0.2

0
0 10 20 30 40 50 60 70 80 90 100
n
0.7
k=2.5 P0=0.7
Pn+1

0.6

0.5
0 10 20 30 40 50 60 70 80 90 100
n
1
k=3.8 P0=0.6
Pn+1

0.5

0
0 10 20 30 40 50 60 70 80 90 100
n

Figura 3: Comportamiento de la ecuacion Logstica para distintos valores de entrada.

donde yn = f (xn ).

Resolver la ecuacion ex x = 0 utilizando el metodo descrito.


a. Graficar la ecuacion para x de 0 a 2 con 200 muestras.
b. En la misma figura, graficar la recta y = 0.
c. Implementar el metodo de la secante. Escoger una aproximacion inicial x0 tomando en cuenta la
grafica anterior, tomar x1 = 0.8 x0 .
d. El numero de iteraciones debe depender de que tan cerca f (xn+1 ) se encuentre a 0. Utilizar while
y eps.
e. En la misma figura, colocar el punto solucion tal como se muestra en la Figura 4.

Cruce por cero


1
xsol = 0.56714

0.5

0
f(x)

-0.5

-1

-1.5

-2
0 0.5 1 1.5 2
x

Figura 4: Solucion de ex x = 0

Você também pode gostar