Fundamentos de Informática – Grado en Ingeniería Química
Operaciones con vectores y matrices. Gráficos
El objetivo de esta práctica es que el alumno conozca y utilice las potencialidades del software
Matlab / Octave. El alumno utilizará las transparencias de teoría como guía y deberá resolver
la relación de ejercicios propuesta.
Los temas cubiertos en este guionson:
Vectores
Matrices
Gráficos
Bloque 1: Ejercicios Básicos
1. Dado un vector v = randperm(10), ejecute los comandos necesarios para:
a. Obtener el valor en la quinta posición
b. Cambiar el ultimo valor por -1
c. Cambiar el tercer valor por 11
d. Mostrar el vector en orden inverso
e. Investigar la función “max” para obtener el máximo valor del vector y su posición
f. Idem con “min”
g. Sumar los 5 primeros elementos del vector
h. Multiplicar por 2 los elementos que se encuentran en las posiciones impares.
i. Crear un nuevo vector vv que contenga los elementos de las posiciones pares de v
j. Ordenar el vector en orden creciente y luego decreciente (helpsort)
k. Calcule la media de los elementos del vector sin usar la función mean
2. Dada una matriz M = magic(6), ejecute los comandos necesarios para:
a. Obtener los elementos de la fila 3
b. Obtener los elementos de la columna 1
c. Obtener los elementos de las filas/columnas pares/impares
d. Guardar en M2 la submatriz que tiene las filas pares de M y las columnas impares de
M
e. Utiliza la función size sobre M y M2
f. Intercambia las columnas 2 y 4 de M
g. Ejecuta sum(M) y sum(M’). ¿Que ocurre?
h. Busca el máximo valor de la matriz
i. Usando lo aprendido en el punto e del apartado anterior, como haría para obtener la
fila cuya suma es máxima
Bloque 2:Problemas
1. Se dispone de una tabla donde se registran las notas de un conjunto de alumnos en una
serie de materias:
NOMBRE Fisica Matematicas Ingles Quimica Informatica
Alumno 1 5,0 6,0 7,5 5,0 5,0
Alumno 2 3,0 4,0 6,0 5,0 5,0
Universidad de Granada Página 1
Fundamentos de Informática – Grado en Ingeniería Química
Alumno 3 5,0 7,0 5,0 4,0 5,0
Alumno 4 6,0 4,2 4,0 5,0 4,0
Alumno 5 6,0 6,0 6,0 4,0 5,0
Alumno 6 5,0 4,0 7,0 5,0 4,0
Suponga que los valores numéricos se encuentran almacenados en Matlab en una variable
M, e indique los comandos que utilizaría para:
a) Mostrar la nota media por asignatura. e) Intercambie las notas de los alumnos 2 y 5.
b) Mostrar la nota media de los alumnos pares f) ¿Cuál fue la nota más alta en Inglés?
c) Incrementar en 1 las notas de los alumnos g) ¿Cuál fue la nota más baja del alumno 5?
impares. h) Obtenga una nueva tabla con las notas de
d) Normalice las notas en el rango [0,1], divida cada Física e Inglés
nota por el máximo de la tabla.
Bloque 3: Ejercicios básicos de procesamiento de vectores y matrices usando
operadores relacionales.
1. Dado el vector v = [ -7 -2 4 3 -8 -5 9 1-7 -8] indique el resultado de los
comandos:
• v1 = v > 0
• v(v1)
• w = v
• w(v1) = w(v1) * 2
• v2 = v < 0
• w(v2) = w(v2) * -1
• rem(w,2) == 0 %rem(a,b) devuelve el resto de la division entre a y
b
• k = (w == 7); sum(k)
2. Los dos vectores siguientes almacenan las temperaturas máximas en Granada de cada día
del mes de enero de 1973 y 2011 respectivamente (redondeadas al entero más próximo):
ene_73=[12 12 13 13 12 12 12 12 12 12 12 14 15 11 10 11 10
12 10 12 11 10 11 14 17 16 16 13 17 16 17]
ene_11=[12 14 14 14 15 18 11 19 13 11 12 17 20 18 19 17 17
16 13 17 16 11 6 12 13 10 13 10 11 12 11]
Con esta información, indique los comandos necesarios para responder las siguientes
cuestiones:
• ¿Cuántos días la temperatura fue mayor a 15 grados?
• ¿En qué año la media de las temperaturas máximas de enero fue mayor?
• ¿Cuál fue la temperatura máxima en enero de cada año? ¿ Y enqué día?
• El número de días en los cuales la temperatura en 2011 fue superior a la de 1973.
• El número de días en los cuales la diferencia en las temperaturas fue mayor que k
grados.
Ejercicios de trabajo autónomo
Estos ejercicios se dejan al estudiante para que los realice en su trabajo autónomo.
Universidad de Granada Página 2
Fundamentos de Informática – Grado en Ingeniería Química
Bloque 1: Ejercicios Básicos
1. Explique brevemente que hacen los siguientes comandos de Matlab e indique el
contenido de las variables.
v = [1:10] t = m(1:4, 1:4)
v1 = v([Link]) t1 = t(3:4,:)
v2 = v([Link]) t2 = t(:,3:4)
v3 = [v1 v2] t1(1,:) = t1(1,:)* -1
v4 = [v1 ; v2] r = sum(t1(1,:) + t1(2,:))
v5 = [v1’ v2’] y = max(sum(t))
m = [v' v'*2 v'*3 v'*4]
Bloque 2: Problemas
1. Construya una tabla donde la primera columna contiene valores entre 0 y 2 con
intervalos de /10, la segunda contiene el resultado de la función seno sobre dichos
valores y la tercera el coseno.
2. Utilice MATLAB para mostrar que la serie 4 ∗ ∞ 𝑖
𝑖=0 −1 /(2𝑖 + 1) converge a . Calcule la
serie cuando el valor máximo de i es a) 100, b) 10000, c) 1000000.
Primero cree un vector i donde el primer elemento es cero, el incremento sea uno y el
último término el indicado en cada caso. Luego utilice operadores elemento-a-elemento
para el cálculo del término de la serie, creando un nuevo vector v. Calcule la sumatoria y
multiplique por 4.
Bloque 3: Procesamiento de vectores y matrices usando operadores relacionales.
1. El siguiente vector guarda las edades de varias personas:
edad=[45,47,15,23,7,60,35,28,32,10,41]. Determinar:
• El número total de personas.
• Quiénes son adultos (mayor o igual que 18 años) (1 es adulto, 0 no es adulto) y el
número de adultos.
• Quiénes no son adultos y el número de niños que tengan 10 años o menos.
• Quiénes son jóvenes y el número de jóvenes, mayores de 10 años y hasta 30 años
inclusive.
• Creamos un vector de datos de los pesos de las personas:
peso=[70,83,45,60,25,55,90,73,65,35,78]. ¿Cuántosadultospesanmás de 65kg?
• Crear un vector adultos de edades de los adultos.
• Determinar el peso del tercer adulto en el vector adultos.
• Eliminar del vector adultos todos los que tengan edades múltiplos de 3.
Introducción a los gráficos en Matlab
MATLAB dispone de cinco funciones básicas para crear gráficos 2-D. Estas funciones se
diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de
ordenadas. Estas cinco funciones son las siguientes:
plot() crea un gráfico a partir de vectores y/o columnas de matrices, con escalas lineales
sobre ambos ejes
Universidad de Granada Página 3
Fundamentos de Informática – Grado en Ingeniería Química
plotyy() dibuja dos funciones con dos escalas diferentes para las ordenadas, una a la
derechay otra a la izquierda de la figura.
loglog() ídem con escala logarítmica en ambos ejes
semilogx() ídem con escala lineal en el eje de ordenadas y logarítmica en el eje de abscisas
semilogy() ídem con escala lineal en el eje de abscisas y logarítmica en el eje de ordenadas
En lo sucesivo se hará referencia casi exclusiva a la primera de estas funciones (plot). Las
demás se
pueden utilizar de un modo similar.
Existen además otras funciones orientadas a añadir títulos al gráfico, a cada uno de los ejes, a
dibujar una cuadrícula auxiliar, a introducir texto, etc. Estas funciones son las siguientes:
title('título') añade un título al dibujo
xlabel('tal') añade una etiqueta al eje de abscisas. Con xlabel off desaparece
ylabel('cual') añade una etiqueta al eje de ordenadas. Con ylabel off desaparece
text(x,y,'texto') introduce 'texto' en el lugar especificado por las coordenadas x e y. Si
x e yson vectores, el texto se repite por cada par de elementos. Si texto es también un
vector de cadenas de texto de la misma dimensión, cada elemento se escribe en las
coordenadas correspondientes
gtext('texto') introduce texto con ayuda del ratón: el cursor cambia de forma y se
espera unclic para introducir el texto en esa posición
legend() define rótulos para las distintas líneas o ejes utilizados en la figura.
grid activa la inclusión de una cuadrícula en el dibujo. Con grid off desaparece la
cuadrícula
A continuación, teclee los siguientes comandos en Matlab y observe el resultado.
>> x = [ 1 2 3 4 5 4 3 2 1];
>>plot(x)
>> x = -pi:.7:pi;
>> y = sin(x);
>>plot(x,y)
>> x = -pi:.1:pi;
>> y = sin(x);
>>plot(x,y)
>> t = 0:pi/100:2*pi;
>> y = sin(t);
>> y2 = sin(t-1);
>>plot(t,y,t,y2)
>>gridon
>>plot(t,y,'g-',t,y2,'b--')
Universidad de Granada Página 4
Fundamentos de Informática – Grado en Ingeniería Química
>>plot(t,y,'g*',t,y3,'b--')
>> x=[10 7 8 9 2 6 8];
>>bar(x)
>> x = randperm(12)*100;
>>plot(x)
>>ylabel('Gastos')
>>xlabel('Meses')
>>title('Gastos Varios por Mes')
>> x = -pi:pi/10:pi;
>> s1 = sin(x);
>> s2 = cos(x);
>>plot(x, s1,'r--', x, s2,'b')
>>legend('Seno', 'Coseno')
>>title('Funciones seno y coseno en [-pi,pi]')
>>legend('Seno', 'Coseno','Location', 'BEST')
Aspectos a tener en cuenta:
Para guardar un gráfico, desde la ventana de la figura, haremos “File ->Save as…” y
guardaremos el gráfico en el formato que mas nos interese.
Para seguir investigando, vaya a “View->Property Editor” desde donde tendrá acceso a
funciones de edición avanzadas para manipular los elementos gráficos.
Desde el “Workspace Browser” seleccione una variable conteniendo un vector o una matriz y
pinche en el botón marcado en la imagen siguiente (observe que ocurre)
Ejercicios
Use los comandos de MATLAB para graficar las siguientes funciones, en el dominio especificado. Incluya
titulos para los ejes y el gráfico
f (x) = 5 − 4x − x2 , [-6,2]
f (x) = 2x2 - 8x -11, [-1,5]
f (x) = cos(3x) + sin(3x), v(x) = -2sin(2x) + 3cos(3x), [0,4π]
f (t) =(1+ 2sin(t))cos(t), g(t) = (1+ 2sin(t))sin(t), [0,2π]
Universidad de Granada Página 5
Fundamentos de Informática – Grado en Ingeniería Química
En cada uno de los siguientes ejercicios, x y y están definidos en términos de un parámetro t sobre un
intervalo dado. Use los comandos de MATLAB para graficar y versus x. Etiquete cada eje y coloque un
título al gráfico.
x(t) = t − sin(t), y(t) = 1− cos(t), [0,6π]
x(t) = cos(3t), y(t) = sin(3t), [0,2π]
x(t) = 2cos(t) + sin(t), y(t) = 2sin(t) - sin(2t), [0,2π]
Universidad de Granada Página 6