PDF de programación - Un curso de MATLAB

Imágen de pdf Un curso de MATLAB

Un curso de MATLABgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.374 visualizaciones desde el 14 de Enero del 2017
579,9 KB
59 paginas
Creado hace 17a (02/08/2006)
Un curso de MATLAB

Departamento de Matemática Aplicada, Universidad de Zaragoza

http://www.unizar.es/fmi

Grupo FMI

Versión actualizada en agosto de 2006

Índice general

1. Matrices

1.1. Aritmética de las matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Acceso a los elementos de una matriz . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Uso del operador \ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4. Comparaciones, ordenaciones y búsquedas . . . . . . . . . . . . . . . . . . . . . .

2. Funciones y ficheros

2.1. Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Vectorización de funciones con condicionales . . . . . . . . . . . . . . . . . . . . .
2.4. Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5. Funciones como argumento de otras funciones . . . . . . . . . . . . . . . . . . . .
2.6. Comunicación entre una función y el usuario . . . . . . . . . . . . . . . . . . . .
2.7. Gestión de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.8. Ficheros de datos y resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Gráficos

3.1. Gráficos bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Disposiciones de múltiples gráficas
. . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Superficies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Cuestiones avanzadas sobre gráficos
3.4.1. Triangulaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2. Lectura de puntos con ratón . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.3. Líneas de nivel sobre la superficie . . . . . . . . . . . . . . . . . . . . . . .
3.5. Tablas de instrucciones y opciones para gráficos . . . . . . . . . . . . . . . . . . .

4. Programación y tipos de datos

4.1. Estructuras de repetición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4. Cell arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.5. Número variable de argumentos de entrada . . . . . . . . . . . . . . . . . . . . .

3
3
7
11
11

16
17
20
23
23
25
27
29
29

34
34
38
38
41
41
42
43
44

49
49
50
52
53
54

1

Antes de comenzar este curso de MATLAB, donde estudiaremos por separado algunas de las
posibilidades de este programa–herramienta–lenguaje, hacen falta unos conocimientos rudimen-
tarios sobre el empleo de MATLAB. Para ello, recomendamos que el lector siga previamente las
actividades del documento

Una primera sesión en MATLAB

Grupo FMI, Zaragoza, 2006.

El recorrido por esa primera sesión se pueda realizar en el espacio de dos horas como máximo.

Esta guía ha sido desarrollada dentro del marco del Proyecto de Innovación Docente Guías de
aprendizaje de Matlab para alumnos y profesores por los siguientes miembros de grupo Formación
Matemática en Ingeniería: Francisco Javier Sayas (coordinador), Mercedes Arribas, Natalia Boal,
José Manuel Correas, Francisco José Gaspar, Dolores Lerís, Andrés Riaguas y María Luisa Sein-
Echaluce.

2

Capítulo 1

Matrices

MATLAB trabaja esencialmente con matrices de números reales o complejos. 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. Aún así, conviene saber que la matriz está guardada por columnas y que nos podemos
referir a un elemento empleando sólo un índice, siempre que contemos por columnas. Insistiremos
bastante en este detalle, porque tiene fuertes implicaciones para entender el funcionamiento de
bastantes aspectos de MATLAB.

>> A=[-2 1;4 7] % matriz dos por dos, introducida por filas
A =

% fila dos, columna uno

% tercer elemento (se lee por columnas)

% forma de ver A tal como MATLAB la guarda

-2
4

9
7

>> A(2,1)
ans =

4

>> A(3)
ans =

9

>> A(:)
ans =

-2
4
6
7

1.1. Aritmética de las matrices

Con las operaciones suma (+) y producto (*) entre matrices hay que poner atención en que las
dimensiones de las matrices sean las adecuadas para realizar dichas operaciones.

3

>> A=[-2 3;-4 5;-6 7]
A =

% o tambien A=[-2, 3;-4, 5;-6, 7]

-2
-4
-6

3
5
7

>> B=[1 1;2 0;6 2];
>> A+B
ans =

% matriz + matriz de la misma dimension

-1
-2
0

4
5
9

>> A’*A % matriz 2x3 * matriz 3x2
ans =

56
-68

-68
83

>> A*A’ % matriz 3x2 * matriz 2x3
ans =

13
23
33

33
59
85

23
41
59
>> a=[3 -1];
>> A*a’ % matriz * vector
ans =

-9
-17
-25

>> u=[1 2 3]
u =

1

2
>> v=[4 5 6]
v =

4

5

3

6

>> u*v’ % fila por columna = producto escalar
ans =

32

>> u’*v % columna por fila = matriz de rango unidad
ans =

4
8
12

5
10
15

6
12
18

>> cross(u,v)
ans =

% producto vectorial

-3

6

-3

4

El ejemplo anterior muestra cómo se puede hacer el producto escalar de dos vectores. Si ambos
son vectores fila u*v’ realiza la operación, ya que devuelve una matriz 1 × 1, que en MATLAB
es indistinguible de un escalar (un número). La expresión

dot(u,v)

% producto escalar

realiza la misma operación (dot abrevia el concepto de dot product, que es como se suele llamar
en inglés al producto escalar), sin preocuparse de si los vectores son fila o columna.
Hay que tener también cuidado con el símbolo de trasposición. Cuando una matriz A es compleja,
con A’ se calcula su traspuesta conjugada. Para calcular la traspuesta sin conjugar hay que hacer:

A.’

% traspuesta sin conjugar

El producto de un vector columna por un vector fila (de cualquier tamaño) produce una matriz
genérica de rango unidad:



a1 b1 a1 b2

. . . a1 bm

a2 b1 a2 b2
...
...
an b1 an b2

. . . a2 bm
...

. . . an bm





b1

b2

. . .

bm

=







a1

a2
...
an

Hay instrucciones para crear matrices llenas de ceros, llenas de unos, diagonales, o la identidad
(en inglés la letra I se pronuncia igual que eye):

>> ones(3)
A =

1
1
1

1
1
1

>> zeros(3,5)
ans =

0
0
0

0
0
0

1
1
1

0
0
0

0
0
0

0
0
0

>> eye(2) % identidad 2x2
ans =

1
0

0
1

>> diag([1 3 -4]) % matriz diagonal
ans =

1
0
0

0
3
0

0
0
-4

>> A=[1 2; 3 4];
>> diag(A) % vector de elementos diagonales de A

5

ans =

1
4

>> diag(diag(A))
ans =

1
0

0
4

% truco para extraer la diagonal de una matriz

Finalmente, unos pequeños ejemplos de qué se puede hacer con una matriz cuadrada.

>> B=[2 1;1 3];
>> B^2
ans =

% potencia al cuadrado de la matriz

5
5
>> B*B
ans =

5
5

>> B.^2
ans =

4
1

>> B.*B
ans =

4
1

5
10

% producto de matrices

5
10
% cuadrado de cada elemento de la matriz

% producto elemento a elemento

igual que B.^2

1
9

1
9

>> det(B) % determinante de B
ans =

5

>> rank(B) % rango de B
ans =

2

>> Bi=inv(B)
Bi =

% matriz inversa

0.6000
-0.2000

-0.2000
0.4000

Advertencia. Hay que tener una cierta precaución con la función rank para calcular el rango de una
matriz, ya que lo hace de forma numérica. Para matrices con enteros de tamaño razonable el resultado

6

suele ser exacto. En otros casos, MATLAB puede obtener un rango incorrecto por culpa de los redondeos;
aún así, MATLAB suele avisar si encuentra una cierta proximidad a un defecto de rango.

1.2. Acceso a los elementos de una matriz

Ya hemos indicado que las matrices en MATLAB se guardan por columnas y que se puede
buscar un elemento siempre con un único índice. Esta es la simple razón por la que en los
vectores (donde no hay más que una dimensión a la hora de colocar los elementos, sea en fila o
en columna) no hace falta más que un índice para buscar un elemento.

>> A=[2 3;4 5;6 7]
A =

2
4
6

3
5
7

>> A(2,1) % se toma el elemento de la fila 2 y la columna 1 de A
ans =

4

>> A(2,3)
??? Index exceeds matrix dimensions.
>> A(:,1)
ans =

% vector columna con la primera columna de A

2
4
6

>> A(2,:)
ans =

4

5

>> A(4)
ans =

3

% vector fila con la segunda fila de A

% cuarto elemento de A, contando por columnas

>> size(A) % dimensiones de A (devuelve un vector)
ans =

3

2

>> length (A)
ans =

3

>> v=[-3 4 7];
>> v(2)
ans =

4

>> v(1,2)
ans =

4

% mayor de las dimensiones de A

% vector fila
% segundo elemento

% segundo elemento (primera fila, segunda columna)

7

La referencia a elementos de una matriz permite cambiar el valor de un elemento mediante una
sencilla operación de asignación. Esto también se puede hacer con una fila o columna.

>> A=[2 -3;-4 5;6 -7];
>> A(3,1)=1/2
A =

% cambio de un elemento de A

2.0000
-4.0000
0.5000

-3.0000
5.0000
-7.0000

>> A(2,:)=[1 1]
A =

2.0000
1.0000
0.5000

-3.0000
1.0000
-7.0000

Al definir un nuevo elemento fuera de las dimensiones de la matriz se reajusta el tamaño de la
matriz dando el valor 0 a los restantes elementos

>> A(3,4)=1
A =

% asignacion fuera del espacio definido

2.0000
-4.0000
0.5000

-3.0000
5.0000
-7.0000

0
0
0

0
0
1.0000

>> size (A)
ans =

3

4

La matriz vacía es la matriz que no tiene ningún elemento. Se escribe entre corchetes (es decir,
[ ]) y puede ser muy útil a la hora de borrar filas o columnas de una matriz dada, como se ve en
el siguiente ejemplo,

>> A=[1 -1 2;2 0 1;0 1 -3];
>> A(:,2)=[]
A =

% borramos la segunda columna

1
2
0

2
1
3

8

MATLAB puede trabajar con grupos de filas y columnas (no necesariamente consecutivos) o
concatenar matrices para formar matrices más grandes siempre que los tamaños sean compati-
bles.

>> A = diag([1 2 3]);
>> [A,ones(3,2)]
ans =

% ampliar con columnas

1
1
1

1
1
1

% ampliar con filas

1
0
0

0
2
0

>> [A;eye(3)]
ans =

1
0
0
1
0
0

0
2
0
0
1
0

0
0
3

0
0
3
0
0
1

>> A=[1 3
  • Links de descarga
http://lwp-l.com/pdf389

Comentarios de: Un curso de MATLAB (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad