Está en la página 1de 9

Practica 2.

Estructuras de Datos en MATLAB

Informática Aplicada - Grado en Ingenierı́a Quı́mica, UAM, 2009/2010

1 Fecha limite de entrega de la practica


Grupo A: 5 de Marzo
Grupo B: 12 de Marzo

2 Objetivos
Al finalizar esta práctica se deberán haber adquirido conocimientos sobre los siguientes temas de programación
en MATLAB:
• Estructuras de datos en MATLAB

3 Introducción
MATLAB trabaja esencialmente con matrices de números reales o complejos como estructura de datos principal.
Las matrices 1 × 1 son interpretadas como escalares y las matrices fila o columna como vectores. Por defecto
todas las variables son matriciales y nos podemos referir a un elemento con dos ı́ndices o con uno en caso de
vectores.

4 Estructuras de datos básicas - Vectores y matrices


4.1 Introducción
Para definir un vector fila, basta introducir sus elementos entre corchetes:

>> v = [1 2 3] % Vector de 3 elementos


v=
123

>> w = [4 5 6];

El operador ’ es el de trasposición:

>> w0
ans =
4
5
6

1
Si queremos declarar un vector de elementos equiespaciados entre dos extremos, por ejemplo, que el primero
valga 0, el último 20 y la distancia entre elementos sea 2, basta poner:

>> vect1 = 0 : 2 : 20
vect1 =
0 2 4 6 8 10 12 14 16 18 20

Equivalentemente, si lo que conocemos del vector es que la primera coordenada vale 0, la última 20 y que tiene
11 en total, escribiremos:

>> vect2 = linspace(0, 20, 11)


vect2 =
0 2 4 6 8 10 12 14 16 18 20

A los elementos de un vector se accede sin más que escribir el nombre del vector y, entre paréntesis, su ı́ndice:

>> vect2(3)
ans =
4

se pueden extraer subvectores:

>> vect2(2 : 5)
ans=
2468

las posibilidades del operador ’:’ son interesantes:

>> vect1(: 5)
ans=
0
2
4
6
8

>> vect1(5 :)
ans=
10
12
14
16
18
20

Las matrices se escriben como los vectores, pero separando las filas mediante un punto y coma; ası́ una matriz
3x3:

>> M = [1 2 3; 4 5 6; 7 8 9]
M=
123
456

2
789

>> M 0 % Su traspuesta (su adjunta)


ans =
147
258
369

>> mat = [v; w; 0 0 1] % También es una matriz 3x3


mat =
123
456
001

A los elementos de una matriz se accede escribiendo el nombre de la matriz y, entre paréntesis, los respectivos
ı́ndices:

>> mat(1, 3) % Elemento en la primera fila y tercera columna de la matriz mat


ans =
3

También se puede acceder a un fila o columna completas:

>> mat(:, 2) % Segunda columna de mat


ans =
2
5
0

>> mat(2, :) % Su segunda fila


ans =
456

acceder a la matriz como si fuera un vector columna:

>> M (2 : 7) % Los elementos segundo a séptimo generados como vector columna


ans =
4
7
2
5
8
3

o acceder a cualquiera de sus submatrices:

>> mat(2 : 3, [1 3]) % Submatriz formada por los elementos que están en
% ”todas” las filas que hay entre la segunda y la tercera y
% en las columnas primera y tercera

3
ans =
46
01

Existen algunas matrices definidas previamente; por ejemplo, la matriz identidad,

>> eye(5) % Matriz identidad de 5 x 5


ans =
10000
01000
00100
00010
00001

la matriz nula,

>> zeros(3)
ans =
000
000
000

o la matriz cuyos elementos valen todos 1:

>> ones(4)
ans =
1111
1111
1111
1111

El argumento enviado a las 3 funciones anteriores (el numero entre paréntesis) especificaba las dimensiones de
la matriz a generar. Se puede conocer el tamaño de una matriz y la longitud de un vector mediante:

>> size(mat) % Dimensiones de la matriz mat (número de filas, número de columnas)


ans =
33

>> size(v)
ans =
13

>> length(v) % Longitud del vector (número de elementos)


ans =
3

Existen comandos que permiten crear de forma sencilla matrices. Por ejemplo:

>> diag(v)% Matriz diagonal cuya diagonal es el vector v


ans =

4
100
020
003

>> diag(diag(M )) % Matriz diagonal con la diagonal de M


ans =
100
050
009

>> tril(M ) % Matriz formada por la parte triangular inferior de M.


ans =
100
450
789

>> triu(M ) % Matriz formada por la parte triangular superior de M.


ans =
123
056
009

Las funciones matemáticas elementales están definidas de forma que se pueden aplicar sobre un vector. El
resultado es el vector formado por la aplicación de la función a cada elemento del vector. Ası́:

>> log(v)
ans =
0 0.6931 1.0986

>> p = (0 : 0.1 : 1) ∗ pi % Vector definido como el producto de un vector por un escalar


p=
Columns 1 through 7
0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850
Columns 8 through 11
2.1991 2.5133 2.8274 3.1416

>> x = sin(p)
x=
Columns 1 through 7
0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511
Columns 8 through 11
0.8090 0.5878 0.3090 0.0000

Las operaciones habituales entre vectores (suma, resta y producto escalar de vectores; suma, resta, producto y
potencia de matrices) se representan con los operadores habituales:

>> v, w % Recordamos los valores de v y w

5
v=
123
w=
456

>> z = v ∗ w0 % Producto escalar (producto de matrices 1x3 por 3x1)


z=
32

>> Z = w0 ∗ v % Producto de matrices 3x1 por 1x3 = Matriz 3x3


Z=
4 8 12
5 10 15
6 12 18

>> v ∗ w % Los vectores v y w no se pueden multiplicar


???Errorusing ==> ∗
Inner matrix dimensions must agree.

>> mat % Recordamos el valor de la matriz mat


mat =
123
456
001

>> matˆ2 % Matriz mat elevada al cuadrado


ans =
9 12 18
24 33 48
001

También pueden efectuarse multiplicaciones, divisiones y potencias de arrays, entendiéndolas como elemento a
elemento (como, de hecho, se realizan la suma y la resta). El operador utilizado para ellas es el habitual
precedido por un punto; es decir:

>> v. ∗ w % Vector formado por los productos de los respectivas elementos: % ans(i)=v(i)*w(i)
ans =
4 10 18

>> w./v % Vector formado por el cociente de cada elementos de w entre el elemento correspondiente de v:
ans =
4.0000 2.5000 2.0000

>> mat.ˆ2 % mat elevada al cuadrado: ans(i,j)=mat(i,j)2


ans =

6
149
16 25 36
001

Pueden calcularse determinantes de la siguiente manera:

>> det(mat)
ans =
-3

y resolverse sistemas de ecuaciones lineales del estilo Ax = b. Por ejemplo si generamos la siguiente matriz A y
el vector columna b:

>> A = [2 − 1 1; 1 1 0; 0 1 − 3]
A=
2 -1 1
110
0 1 -3
>> b = [3 3 − 7]0
b=
3
3
-7

una forma de resolver este sistema de ecuaciones lineales seria utilizar la formula x = A−1 b:

>> x = inv(A) ∗ b
x=
1
2
3

y otra forma seria:

>> Ab = [A b]
Ab =
2 -1 1 3
1103
0 1 -3 -7

>> rref (Ab)


ans =
1001
0102
0013

7
5 Ejercicios
5.1 Ejercicio 1
Resolver
 el siguiente 
sistema
 utilizando
   dos procedimientos distintos y comprobar que sale la misma solución:
1 1 0 3 x1 4
2 1 −1 1   x2   1 
   
 3 −1 −1 2  × x3  = −3

−1 2 3 −1 x4 4

5.2 Ejercicio 2
   
1 2
Dados dos vectores fila v y w, v =2 w = 2
3 1
explicar cual es la diferencia entre realizar estas operaciones en matlab:

>> v 0 ∗ w
>> v. ∗ w

5.3 Ejercicio 3
Realizad las siguientes tareas (utilizad el comando help si fuera necesario):
1. Definid la matriz/vector columna  
2
 3 
5
mediante dos notaciones diferentes: una que use ’,’ para separar los elementos, y otra que emplee ’;’
2. Construid una matriz de dimensión 4 x 3 con 0 en todas las posiciones.
3. Construid una matriz de dimensión 3 x 2 con 1 en todas las posiciones.
4. Construid una matriz de dimensión 5 x 5 con 1 en la diagonal y ceros fuera de ella.

5. Construid una matriz de dimensión 3 x 5 con números aleatorios entre 0 y 1 siguiendo una distribución
uniforme.
6. Construid una matriz de dimensión 3 x 5 con números aleatorios de media 0 y desviación tı́pica 1 siguiendo
una distribución normal.

7. Construid una matriz simétrica de dimensión 3 x 3


Comandos útiles para el ejercicio: rand, randn, zeros, ones, ’ (matriz transpuesta)

5.4 Ejercicio 4
Dada la matriz A:  
1 2 3
 1 4 2 
1 2 1
1. Introducid los datos de la matriz A en una variable con el mismo nombre
2. Obtened la matriz transpuesta de A y guardarla en una variable A t.

8
3. Hallad la inversa de la matriz A, y asignad el resultado a una variable A inv.
4. Calculad el determinante de la matriz A, y almacenarla en una variable A det.

5. Realizad las siguientes operaciones matriciales, e interpretad los resultados en cada caso:
A*A A.*A A2 A.2 A/A A./A

6. Añadid una columna compuesta por 1, 4 y 8 al final de la matriz A, y guardad la matriz resultante en
una variable B.

7. Multiplicad A por B, y guardad el producto en una variable A por B.


8. Extraed la segunda, tercera y cuarta columnas de B, y guardarla en las variables B2, B3 y B4.
9. Cread una matriz C con las variables B2, B3 y B4.
10. Ejecutad las sentencias x = f ind(C > 2), C(x) y explicad los resultados que se obtienen.

Comandos útiles para el ejercicio: diag, inv, ’ (matriz transpuesta), det

6 Material a entregar
La práctica se debe entregar de forma electrónica Y por escrito antes de la fecha de finalización indicada al
comienzo del enunciado en el laboratorio 208 de la escuela politécnica o bien durante la practica correspondiente
a la fecha limite de entrega. No se admitirán practicas con retraso. En general, las prácticas tienen fecha lı́mite
un viernes y por lo tanto pueden entregarse hasta la hora de la clase de la fecha limite.
Se enviará un único fichero zip a través del sistema de entrega de prácticas de la Escuela Politécnica Superior,
para el periodo: ”SEGUNDO CUATRIMESTRE”, la categorı́a: ”TITULACIÓN INGENIERÍA TÉCNICA
INDUSTRIAL” y el nombre de la asignatura: ”INFORMÁTICA APLICADA”.
http://docenciaweb.ii.uam.es/esp/alumnos/practicas/envio_practicas.php
La pagina para el envió de practicas tiene una protección para que ninguna persona que no tenga relación con
la Escuela Politécnica pueda acceder a la misma. En la ventana de autentificación donde se tiene que introducir
un login y una password, los valores a introducir son: practicas y entrega.
El nombre del fichero será PN X YY.zip, donde ’N’ se deberá reemplazar por el número de practica (2,3,4
o 5), ’X’ se deberá reemplazar por el grupo de prácticas (A o B) e ’YY’ por el número de pareja. Ası́ por
ejemplo, la pareja 1 del grupo A deberá enviar su práctica 2 en el fichero P2 A 01.zip. El numero de grupo lo
podréis encontrar en la pagina web de las practicas de la asignatura en el enlace ”Tabla de Excel con las notas
de practicas de los grupos A y B”, es el numero a la izquierda de los nombres de los componentes de la pareja.
El fichero Excel lo podéis encontrar en la página de practicas de la asignatura en:
http://arantxa.ii.uam.es/~drozado/fund_info.html
No se admitirán practicas con retraso. En general, las prácticas tienen fecha lı́mite un viernes y por lo tanto
pueden entregarse hasta la hora de la clase de la fecha limite.

También podría gustarte