Vous êtes sur la page 1sur 9

Practica 2.

Estructuras de Datos en MATLAB

Informatica Aplicada - Grado en Ingeniera Qumica, 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 practica se deberan haber adquirido conocimientos sobre los siguientes temas de programacion
en MATLAB:
Estructuras de datos en MATLAB

3 Introduccion
MATLAB trabaja esencialmente con matrices de numeros 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 basicas - Vectores y matrices


4.1 Introduccion
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 trasposicion:

>> 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 ultimo 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 ultima 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 mas que escribir el nombre del vector y, entre parentesis, 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] % Tambien es una matriz 3x3


mat =
123
456
001

A los elementos de una matriz se accede escribiendo el nombre de la matriz y, entre parentesis, los respectivos
ndices:

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


ans =
3

Tambien 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 septimo 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 estan 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 parentesis) especificaba las dimensiones de
la matriz a generar. Se puede conocer el tamano de una matriz y la longitud de un vector mediante:

>> size(mat) % Dimensiones de la matriz mat (numero de filas, numero de columnas)


ans =
33

>> size(v)
ans =
13

>> length(v) % Longitud del vector (numero 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 matematicas elementales estan definidas de forma que se pueden aplicar sobre un vector. El
resultado es el vector formado por la aplicacion de la funcion 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

>> mat2 % Matriz mat elevada al cuadrado


ans =
9 12 18
24 33 48
001

Tambien pueden efectuarse multiplicaciones, divisiones y potencias de arrays, entendiendolas 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 = A1 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 solucion:
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 dimension 4 x 3 con 0 en todas las posiciones.
3. Construid una matriz de dimension 3 x 2 con 1 en todas las posiciones.
4. Construid una matriz de dimension 5 x 5 con 1 en la diagonal y ceros fuera de ella.

5. Construid una matriz de dimension 3 x 5 con numeros aleatorios entre 0 y 1 siguiendo una distribucion
uniforme.
6. Construid una matriz de dimension 3 x 5 con numeros aleatorios de media 0 y desviacion tpica 1 siguiendo
una distribucion normal.

7. Construid una matriz simetrica de dimension 3 x 3


Comandos utiles 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. Anadid 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 utiles para el ejercicio: diag, inv, (matriz transpuesta), det

6 Material a entregar
La practica se debe entregar de forma electronica Y por escrito antes de la fecha de finalizacion indicada al
comienzo del enunciado en el laboratorio 208 de la escuela politecnica o bien durante la practica correspondiente
a la fecha limite de entrega. No se admitiran practicas con retraso. En general, las practicas tienen fecha lmite
un viernes y por lo tanto pueden entregarse hasta la hora de la clase de la fecha limite.
Se enviara un unico fichero zip a traves del sistema de entrega de practicas de la Escuela Politecnica Superior,
para el periodo: SEGUNDO CUATRIMESTRE, la categora: TITULACION INGENIERIA TECNICA
INDUSTRIAL y el nombre de la asignatura: INFORMATICA APLICADA.
http://docenciaweb.ii.uam.es/esp/alumnos/practicas/envio_practicas.php
La pagina para el envio de practicas tiene una proteccion para que ninguna persona que no tenga relacion con
la Escuela Politecnica pueda acceder a la misma. En la ventana de autentificacion donde se tiene que introducir
un login y una password, los valores a introducir son: practicas y entrega.
El nombre del fichero sera PN X YY.zip, donde N se debera reemplazar por el numero de practica (2,3,4
o 5), X se debera reemplazar por el grupo de practicas (A o B) e YY por el numero de pareja. As por
ejemplo, la pareja 1 del grupo A debera enviar su practica 2 en el fichero P2 A 01.zip. El numero de grupo lo
podreis 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 podeis encontrar en la pagina de practicas de la asignatura en:
http://arantxa.ii.uam.es/~drozado/fund_info.html
No se admitiran practicas con retraso. En general, las practicas tienen fecha lmite un viernes y por lo tanto
pueden entregarse hasta la hora de la clase de la fecha limite.

Vous aimerez peut-être aussi