Curso de iniciacion a MATLAB Tercera...

102
UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ ecnica Departamento de Matem´ atica Aplicada a la T´ ecnica Curso de iniciaci´ on a MATLAB c Tercera Edici´ on ´ Oscar Angulo Torga Eduardo Cuesta Montero esar Guti´ errez Vaquero Mar´ ıa del Carmen Mart´ ınez Mart´ ınez

Transcript of Curso de iniciacion a MATLAB Tercera...

Page 1: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

UNIVERSIDAD DE VALLADOLID

Escuela Universitaria Politecnica

Departamento de Matematica Aplicada a la Tecnica

Curso de iniciacion a MATLABc©

Tercera Edicion

Oscar Angulo Torga

Eduardo Cuesta Montero

Cesar Gutierrez Vaquero

Marıa del Carmen Martınez Martınez

Page 2: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Indice general

1. Introduccion 6

1.1. Presentacion del curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2. Entorno Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3. Encuesta inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2. Entorno de trabajo 7

2.1. Matlab Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Aritmetica elemental 8

3.1. Edicion en la lınea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2. Aritmetica elemental escalar (real y compleja) . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2.1. Operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2.2. Numeros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.3. Constantes predefinidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.4. Inf y NaN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

4. Funciones matematicas y formatos de salida 10

4.1. Funciones matematicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.2. Formatos de salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5. Aritmetica matricial 12

5.1. Vectores y matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.2. Operaciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.3. Funciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1

Page 3: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Indice general

6. Generacion automatica de datos y asignacion de variables 14

6.1. Generacion automatica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6.2. Asignacion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6.3. Seleccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

6.4. Gestion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

6.5. Entorno de trabajo (Matlab Desktop) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

6.6. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7. Operadores logicos 18

7.1. Operadores logicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

7.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

8. Editor de texto. Ficheros .m 20

8.1. Editor de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

8.2. Ficheros ∗.m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

8.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

9. Lectura y escritura sin formato en fichero 22

9.1. Lectura y escritura sin formato en fichero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

9.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

10.Estructura de seleccion 24

10.1. Estructura if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

10.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

11.Estructura iterativa while 27

11.1. Estructura iterativa while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

11.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

12.Estructura iterativa for 28

12.1. Estructura iterativa for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

12.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

13.Funciones 30

13.1. Funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

13.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

14.Programacion modular 32

14.1. Programacion modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 2

Page 4: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Indice general

14.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

15.Escritura con formato en fichero 35

15.1. Escritura con formato en fichero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

15.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

16.Lectura de fichero con formato 38

16.1. Lectura de fichero con formato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

16.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

17.Librerıas generales 40

17.1. Librerıas asociadas con la utilizacion de matrices y funciones . . . . . . . . . . . . . . . . . . 40

17.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

18.Primeros graficos bidimensionales 48

18.1. Comando plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

18.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

19.Dibujo de funciones 50

19.1. Comando fplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

19.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

20.Modificadores de los graficos bidimensionales 51

20.1. Opciones de los comandos plot y fplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

20.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

21.Control de graficos bidimensionales 53

21.1. Control de graficos bidimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

21.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

22.Control de la ventana grafica bidimensional 57

22.1. Control de la ventana grafica bidimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

22.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

23.Graficos con numeros complejos y en escalas logarıtmicas 59

23.1. Graficos con numeros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

23.2. Graficos en escalas logarıtmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

23.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 3

Page 5: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Indice general

24.Librerıas con funciones y graficos estadısticos 62

24.1. Entrada de datos tabulados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

24.2. Descripcion y exploracion grafica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

24.3. Descripcion analıtica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

24.4. Distribuciones de probabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

24.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

25.Primeros graficos tridimensionales 68

25.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

26.Dibujo de mallados 69

26.1. Dibujo de mallados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

26.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

27.Control de la ventana y de los graficos tridimensionales 71

27.1. Control de graficos tridimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

27.2. Control de la ventana grafica tridimensional . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

27.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

28.Dibujo de poliedros y de lıneas de contorno 73

28.1. Dibujo de poliedros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

28.2. Dibujo de lıneas de contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

28.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

29.Librerıas relacionadas con graficos bidimensionales y tridimensionales 75

29.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

30.Copia de la ventana grafica y encuesta final 77

30.1. Copia de la ventana grafica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

30.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

31.Estructura de seleccion case 78

31.1. Estructura de seleccion case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

31.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

32.Debugger 80

32.1. Opciones del debugger de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

32.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 4

Page 6: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Indice general

33.Creacion de librerıas 83

33.1. Programacion modular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

33.2. Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

Nota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

34.Estadıstica Descriptiva 85

34.1. Lectura y escritura en formato tabular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

34.2. Tabulacion de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

34.3. Medidas de localizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

34.4. Medidas de orden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

34.5. Medidas de dispersion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

34.6. Otras funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

34.7. Representaciones graficas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

34.8. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

35.Modelos de Probabilidad 92

35.1. Modelos de probabilidad implementados en MATLAB . . . . . . . . . . . . . . . . . . . . . . 92

35.2. Funcion de Densidad/Probabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

35.3. Funcion de Distribucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

35.4. Inversa de la Funcion de Distribucion (percentiles) . . . . . . . . . . . . . . . . . . . . . . . . 93

35.5. Numeros aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

35.6. Media y varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

35.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

36.Estimacion de Parametros y Contraste de Hipotesis 95

36.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

37.Modelos de Regresion y Analisis de la Varianza 98

37.1. Modelos de regresion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

37.2. Analisis de la varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

37.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

38.Encuesta final 101

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 5

Page 7: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 1

Introduccion

1.1. Presentacion del curso

1.2. Entorno Linux

1.3. Encuesta inicial

6

Page 8: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 2

Entorno de trabajo

2.1. Matlab Desktop

Junto a la barra de menus caracterıstica de cualquier aplicacion “Windows” distinguimos

Command Window −→ Ventana de comandos.

Command History−→ Historial de comandos.

Current Directory−→ Directorio actual.

2.2. Ejercicios

1. Modifica el entorno original para que aparezca:

Unicamente la ventana de comandos.

La Ventana de comandos y los comandos ejecutados en sesiones anteriores.

La ventana de comandos y el directorio de trabajo.

Prueba otras posibilidades y escoge la que mas se adecue a tu forma de trabajo.

2. Crea un directorio de trabajo con tu nombre.

7

Page 9: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 3

Aritmetica elemental

3.1. Edicion en la lınea de comandos

↑ ↓−→ Historial de comandos ejecutados.

← → −→ Permiten el desplazamiento horizontal en la lınea de comandos.

. . .+[ENTER]−→ Continuacion de comando en la lınea siguiente.

clc −→ Borra el contenido de la pantalla y coloca el cursor en la primera lınea.

[Esc]−→ Borra la lınea.

%−→ Todo lo que aparece detras del sımbolo % y en la misma lınea se considera un comentario.

Ej.: % Esto es un comentario

,−→ Separa instrucciones. Ej.: 2+3, cos(pi)

;−→ Evita la salida de resultados por pantalla.

En, en−→ Notacion cientıfica. Ej.: E4,E-8,e5

[Ctrl]+[c]−→ Detiene la ejecucion de cualquier comando o funcion.

3.2. Aritmetica elemental escalar (real y compleja)

3.2.1. Operaciones

+,−, ∗, /, \,ˆ−→ Suma, resta, multiplicacion, division, division inversa y potenciacion (real o com-

pleja).

8

Page 10: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

3Aritmetica elemental

3.2.2. Numeros complejos

Asignacion−→ Ej.: z=2-3i, z=-4+7j, z=2+2*i

3.2.3. Constantes predefinidas

pi−→ Numero π.

i, j−→ Unidad imaginaria.

eps−→ Epsilon de la maquina.

3.2.4. Inf y NaN

Inf, inf−→ Representa el infinito.

NaN, nan−→ “Not a Number” (indeterminacion).

3.3. Ejercicios

Realiza las siguientes operaciones y observa el resultado:

1. 1 + 2

2. % 1 + 2

3. 1 + (2 · 4);

4. 1 + 2 · 4

5. (1 + 2) · 4

6. (1 + 2)4

7. 1 + (2 · 4)

8. 4/2

9. 4\2;

10. 3 · 2\4

11. 3 · (2\4)

12. (3 · 2)\4

13. 1/0

14. 1/inf

15. 5 · inf

16. inf/inf

17. inf · inf

18. nan · 0

19. nan · 1

20. nan · inf

21. 23

22. 23 + 2

23. 23 · 2

24. i2, i3, i4, i0

25. 1− 2 · i + 2 + 4 · i

26. (1− 2 · i) · (2 + 4 · i)

27. 1− 2 · i · 2 + 4 · i

28. (1− 24 · i)/(2 + 4 · i)

29. (1− 24 · i)\(2 + 44 · i)

30. (i− 2 · i)(2+4·i)

31. 2E− 2 · 3E8

32. 2, 34 · 3

33. 2,34 · 3

34. eps

35. eps + 1

36. 1/(0 + eps)

37. (0 + eps)/(0 + eps)

38. (pi + eps)/pi

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 9

Page 11: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 4

Funciones matematicas y formatos de

salida

4.1. Funciones matematicas

sin, cos, asin, acos, sqrt, log, . . .−→ Seno, coseno, arcoseno, arcocoseno, raız cuadrada, logaritmo

neperiano,... Ej.: cos(pi)

iniciales + [TAB]−→ MATLAB ofrece un sencillo asistente para recordar la sintaxis de sus fun-

ciones. Concretamente, la orden iniciales + [TAB] devuelve todas las funciones disponibles cuyonombre comienza con iniciales. Este procedimiento no es sensible a mayusculas y minusculas.

Ej.: Conto + [TAB]

4.2. Formatos de salida de datos

format, format short−→ Formato corto. Ej.: 0.0769

format short e −→ Formato corto con mantisa y exponente. Ej.: 7.6923e-002

format short g−→ “Mejor” formato fijo o punto flotante con cinco dıgitos. Ej.: 0.076923

format long−→ Formato largo. Ej.: 0.07692307692308

format long e−→ Formato largo con mantisa y exponente. Ej.: 7.692307692307693e-002

format long g−→ “Mejor” formato fijo o punto flotante con quince dıgitos. Ej.: 0.0769230769230769

format rat −→ Formato racional. Ej.: 1/13

format compact−→ Salida por pantalla de forma “compacta”, es decir, ocupando menos espacio.

10

Page 12: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

4Funciones matematicas y formatos de salida

4.3. Ejercicios

1. Utiliza los diferentes formatos de salida presentados para escribir los siguientes numeros: 133 ,√

3, π2,(1− i)0,5.

2. Evalua las siguientes funciones en los puntos indicados (utiliza la ayuda para encontrar la expresionde cada funcion):

a) f(x) = cos x en x = π, π2, i, π · i

b) f(x) = log x en x = 10, i, 1 + i, 0

c) f(x) = log10 x en x = 102, 0, eps, 1,−1

d) f(x) =√

x en x = 16,−1, 1 + i

e) f(x) = sin x en x = π, 1 + i, inf

f ) f(x) = csc x en x = π/2, π, i

g) f(x) = csc x en x = π, π/2, i

h) f(x) = sin x/x en x = 0, eps, inf

3. Calcula log 3. Comprueba que en formato racional log 3 = 11996/3051. Realiza la diferencia log 3 −11996/3051. ¿El resultado es cero? ¿Porque?

4. MATLAB dispone de la funcion rand para generar numeros aleatoriamente en el intervalo (0,1) abierto.

a) Encuentra el nombre de una funcion que calcule el maximo de un conjunto de datos sabiendo queempieza por max. Utiliza la ayuda para eliminar “candidatos”.

b) Combina la funcion rand con la obtenida en el apartado anterior para obtener el maximo de100000 numeros previamente generados por ti al azar del intervalo (0,1).

c) ¿Es cierto realmente que los numeros generados son menores estrictamente que 1?

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 11

Page 13: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 5

Aritmetica matricial

5.1. Vectores y matrices

Vector −→ Los vectores se introducen entre corchetes y los elementos estan separados por espacioso comas. Ej.: [1 2 3]

Matriz −→ Las matrices se introducen por filas. Los elementos de una misma fila estan separadospor blancos o comas, mientras que las filas estan separadas por pulsaciones de [ENTER] o por “;”. Ej.:[1 2 3; 4 5 6; 7 8 9]

5.2. Operaciones matriciales

+,−, ∗, , .′ , ′ , inv(·), /, \,det(A)−→ Suma, resta, producto, potenciacion, traspuesta, traspuesta y

conjugada, inversa, division, division inversa y determinante de una matriz.

.∗, . , ./, .\−→ Producto, potenciacion, division y division inversa elemento a elemento (se emplean

los anteriores precedidos por un punto).

5.3. Funciones matriciales

sin, cos, asin, acos, sqrt, log, . . .−→ Seno, coseno, arcoseno, arcocoseno, raız cuadrada, logaritmo

neperiano,.... Ej.: cos([1 2; 3 4])

5.4. Ejercicios

Realiza, si es posible, las siguientes operaciones y observa el resultado:

1.

1 2 11 2 11 2 1

+

2 1 11 1 13 1 1

12

Page 14: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

5Aritmetica matricial

2.

1 2 11 2 11 2 1

+

1 11 11 1

3.

1 2 11 2 11 2 1

∗ 1 1

2 11 1

4.

1 2 11 2 11 2 1

∗ 2 1 1

2 1 11 1 1

5.

1 2 11 2 11 2 1

. ∗

2 1 12 1 11 1 1

6.

1 2 12 1 11 1 1

ˆ2

7.

1 2 12 1 11 1 1

. 2

8.

1 2−1 1

1 1

ˆ2

9.

1 2−1 1

1 1

. 2

10.

1 21 11 1

ˆ

1 21 11 1

11.

1 21 11 1

.

1 21 11 1

12. sqrt

1 21 11 1

13.

1 21 11 1

. (12)

14.

1 21 11 1

ˆ(−2)

15.

1 21 11 1

. (−1)

16. inv

1 2 12 1 11 1 1

17.

1 2 12 1 11 1 1

ˆ(−1)

18. log

0 12 11 1

19. 1/

2 11 11 1

20. 1 ./

2 11 11 1

21. 1 ./

(1 10 1

)

22. sin

(eps 11 eps

)./

(eps 11 eps

)

23. sin

(eps 11 eps

)/

(eps 11 eps

)

24. sin

(eps 11 eps

)\

(eps 11 eps

)

25. sin

(eps 11 eps

).\

(eps 11 eps

)26. sin([1 π π

2 ])

27. cos([0 π4 ; π 1])

28. log([1 2 3 ; 4 5 6 ; 7 8 9])

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 13

Page 15: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 6

Generacion automatica de datos y

asignacion de variables

6.1. Generacion automatica de datos

eye(n, m), eye(n)−→ Matriz unidad de tamano n×m (tamano n× n respectivamente).

zeros(n, m), zeros(n)−→ Matriz nula de tamano n×m (tamano n× n respectivamente).

ones(n, m), ones(n)−→ Matriz de unos de tamano n×m (tamano n× n respectivamente).

rand(n, m), rand(n)−→ Matriz de numeros aleatorios entre 0 y 1 con distribucion uniforme y

tamano n×m (tamano n× n respectivamente).

randn(n, m), randn(n)−→ Matriz de numeros aleatorios con distribucion N(0, 1) y tamano n×m

(tamano n× n respectivamente).

magic(n)−→ Matriz “magica” de tamano n× n.

linspace(x1, x2, n)−→ Vector con n componentes equiespaciadas entre x1 y x2.

n : h : k −→ Secuencia de numeros desde n hasta k con incremento h (el incremento puede sernegativo).

n : k −→ Secuencia de numeros desde n hasta k con incremento 1.

diag(vector)−→ Matriz diagonal cuyos elementos diagonales son las componentes de vector.

6.2. Asignacion de variables

Para guardar cualquier tipo de dato (numero, vector, matriz, cadena de caracteres, etc.) es necesarioasignarle a una variable que lo almacena. De esta manera podremos utilizarlo cuantas veces queramosa lo largo de la sesion de trabajo. Ej.: a=1; v=[1 2 3]; A=[1 2 3; 4 5 6; 7 8 9]; d=’Hola’

14

Page 16: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

6Generacion automatica de datos y asignacion de variables

input−→ Permite la introduccion ‘interactiva’ de datos a traves del teclado.

Ej.: X=input(’Introduce una matriz’)

6.3. Seleccion

Acceso a sus elementos −→ Se accede a los elementos de una matriz poniendo los ındices de refe-rencia entre parentesis, separados por coma. Se accede a los elementos de un vector poniendo el ındicede referencia entre parentesis. Ej.: A(2,3), v(2), A(1:4,3)

[ ]−→ Permite seleccionar varias filas o columnas. Ej.: A([1 3 5],2), A(3,[3 1])

: −→ Selecciona filas o columnas completas.Ej.: A(:,3), A(1:4,:), A(:,[2 4]), A(1:3,2:4), A(:)

6.4. Gestion de variables

clear −→ Elimina las variables residentes en el “espacio de trabajo”.

who −→ Visualiza las variables residentes en el espacio de trabajo.

whos −→ Visualiza las variables residentes en el espacio de trabajo con informacion adicional(tamano, espacio fısico y tipo).

ans −→ Almacena el resultado de la ultima operacion.

6.5. Entorno de trabajo (Matlab Desktop)

Workspace−→ Espacio de variables.

6.6. Ejercicios

1. Teclea las siguientes secuencias de comandos y explica los resultados obtenidos.

x=3;x

y=3+5;y

x=2;y=3;x=y;x,y

x=2;y=3;y=x;x,y

x=y=z

x==y

2. Asigna a las variables v1, v2 y v3 los vectores (1, 2, 3), (−1, 0,−3) y (1, 1, 1, 1) ejecutando los siguientescomandos:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 15

Page 17: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

6Generacion automatica de datos y asignacion de variables

v1=input(’Teclea el vector [1 2 3]\n’)

v2=input(’Teclea el vector [-1 0 -3]\n’)

v3=input(’Teclea el vector [1 1 1 1]\n’)

Realiza, si es posible, las siguientes operaciones:

1. v1 + 2

2. v1 + v2

3. v1 + v3

4. 2 ∗ v1

5. v1 ∗ v2

6. v1 ∗ vt2

7. v1. ∗ vt2

8. vt1 ∗ v2

9. vt1. ∗ v2

10. v1. ∗ v2

11. v1 ∗ v3

12. v1. ∗ v3

13. v1.′ ∗ v2

14. v1 ∗ v2.′

15. log(v1), sin(v2)

16. 2.ˆv1

17. v1.ˆ2

18. sin(v2)/v2

19. sin(v2)./v2

20. sin(v2 + eps)./(v2 + eps)

3. Asigna a las variables A1, A2 y A3 las matrices(1 24 5

),

(1 22 1

),

−1 45 −11 7

.

Realiza, si es posible, las siguientes operaciones:

1. A1 + 2

2. 2 ∗A1

3. A1 + A2

4. A2 ∗A1

5. A1 ∗A3

6. A3 ∗A1

7. A1. ∗A2

8. log(A3)

9. A1−1

10. ones(6) ∗ ones(6, 1)

11. ones(6) ∗ ones(1, 6)

12. ones(6) ∗ eye(6)

13. ones(6). ∗ eye(6)

14. rand(5), rand(5), rand(5)

15. A = magic(3)

16. sum(A)

17. sum(At)

18. sum(A(:, 2)), sum(A(:, 3)), sum(A(2, :))

19. Utiliza la ayuda para calcular el determinante yla traza de la matriz A2.

20. Enumera las variables que residen en el espaciode trabajo.

21. Vacıa el espacio de trabajo.

22. Enumera las variables que residen ahora en elespacio de trabajo.

4. Declara los vectores v1=[1 2 3 4 5 6 7 8 9 10], v2=[1 3 5 7 9] y v3=[2 4 8 16 32 48] de dis-tintas maneras. ¿Cual es la mas sencilla?.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 16

Page 18: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

6Generacion automatica de datos y asignacion de variables

5. Realiza las siguientes operaciones sobre la matriz A = magic(10) y observa los resultados obtenidos:

1. A(1, 2 : 3)

2. A(2 : 4, 2)

3. A(1 : 3, 4 : 5)

4. A([1, 3, 5, 7, 9], [1, 3, 5, 7, 9])

5. A(4 : end, 1)

6. A(4 : end, 1 + 2 : 4)

7. A(4 : end, (1 + 2) : 4)

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 17

Page 19: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 7

Operadores logicos

7.1. Operadores logicos

<,>,<=, >=,==, ˜=−→ “Menor que”, “mayor que”, “menor o igual que”, “mayor o igual que”,

“igual que”, “distinto que”. Ej.: 0=false, 1=true

&, |, ˜, xor−→ Operadores logicos “y”, “o”, “no”, “o excluyente”. Ej.: 0=false, 1=true

7.2. Ejercicios

1. Ejecuta las siguientes operaciones y observa el resultado:

1. 2 < 3

2. 3 < 2

3. 2 > 3

4. 3 > 2

5. 1 == 2

6. [1 2 3] == [3 2 1]

7.

(1 23 4

)==

(1 23 5

)

8. eye(2)==

(1 00 1

)9. eye(2)˜=ones(2)

10. A = 1 : 3;B = 5 : 7;

A >= 4

B >= 4

A >= 4& B >= 4

A >= 4 |B >= 4

2. Expresa las siguientes condiciones utilizando comandos y operadores de MATLAB.

1. n es un numero mayor o igual que 4 y menor que 8.

2. n es un numero mayor o igual que 4 o menor que 8.

3. n es un numero mayor o igual que 4 y distinto de 10.

4. n es numero par.

5. n es un numero par entre 500 y 1010 (ambos incluidos).

18

Page 20: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

7Operadores logicos

3. Sean A =

(1 21 1

), B =

(0 01 1

), C =

(1 01 0

). Realiza las siguientes operaciones:

1. A + B

2. A + ˜B

3. A. ∗B

4. A. ∗ (˜B)

5. (A <= B) + C

6. A|B

7. xor(A,B)

8. A&B

9. A&B + C

10. A + B&C

11. D = A&B. ¿Que tipo de dato es D?

12. D = A&B + C. ¿Que tipo de dato esD?

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 19

Page 21: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 8

Editor de texto. Ficheros .m

8.1. Editor de texto

Matlab editor −→ Crea y edita ficheros .m.

• Utilidades del editor.

• Utilidades del entorno del editor.

• Utilidades del entorno de trabajo respecto al editor.

• Barras.

8.2. Ficheros ∗.m

∗.m −→ Ficheros de texto que contienen codigo MATLAB. Se ejecutan:

• desde la ventana Command Window escribiendo el nombre del fichero (sin extension), o bien

• desde la ventana Current Directory eligiendo la opcion Run que aparece al hacer click con el botonderecho del raton sobre el fichero.

8.3. Ejercicios

1. Ejecuta el fichero Entorno01.m y corrige el error abriendole desde el mensaje de error resenado en laventana de comandos.

2. Ejecuta la siguiente serie de comandos

x=rand(3,1);

y=rand(3,1);

z=x+y.^2;

hist(z);

A continuacion ejecuta x=randn(3,1); y

Ejecuta de nuevo el resto de comandos.

Copialos y pegalos en un nuevo fichero de texto.

20

Page 22: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

8Editor de texto. Ficheros .m

Grabalos en un fichero .m .

3. Ejecuta Entorno03.m Busca los distintos espacios de variables en un problema con distintas funciones.

4. Abre el fichero Entorno01.m

Evalua una seleccion

Pon comentarios en las lıneas.

Edita en el fichero

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 21

Page 23: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 9

Lectura y escritura sin formato en fichero

9.1. Lectura y escritura sin formato en fichero

disp(A)−→ Muestra tablas de caracteres por pantalla. Ej.:

A=[’hola ’,’adios’];

disp(A)

input−→ Lectura de datos desde el teclado. Ej.:

z=input(’El valor de la variable z es:\n’)

save −→ Copia variables del espacio de trabajo en un fichero. Ej.:save % Copia en el fichero matlab.mat todas las variables del espacio de trabajo.

save datos % Copia en el fichero datos.mat todas las variables del espacio de trabajo.

save datos X Y % Copia en el fichero datos.mat las variables X e Y del espacio de

% trabajo.

save datos U V -append % Incorpora al fichero datos.mat las variables U y V del

% espacio de trabajo. NOTA: sobreescribe.

save data.txt -ascii % Copia con formato ascii en el fichero data.txt todas las

% variables del espacio de trabajo.

save data.txt X Y -ascii % Copia con formato ascii en el fichero data.txt las

% variables X e Y del espacio de trabajo.

load −→ Copia en el espacio de trabajo las variables o datos contenidos en un fichero. Ej.:load % Copia en el espacio de trabajo las variables contenidas en el fichero

% matlab.mat

load datos % Copia en el espacio de trabajo las variables contenidas

% en el fichero datos.mat

22

Page 24: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

9Lectura y escritura sin formato en fichero

load datos X Y % Copia en el espacio de trabajo las variables X e Y contenidas en

% en el fichero datos.mat

load data.txt % Copia en el espacio de trabajo los datos contenidos en el

% fichero con formato ascii data.txt y en la variable data.

diary−→ Guarda en un fichero de texto la secuencia de comandos ejecutados a los largo de la sesion.

Ej.:diary nombre.txt

.

.

.

diary off

9.2. Ejercicios

Realiza las siguientes operaciones:

1. Guarda en el fichero de texto sesion.txt toda la secuencia de comandos que realices para resolvereste ejercicio.

2. Genera un vector v con los n primeros numeros multiplos de tres (n debe introducirse por teclado).

3. Graba el vector v en un fichero prueba.mat.

4. Borra el espacio de trabajo. Comprueba que lo has hecho.

5. Calcula v*8.

6. Calcula la matriz magica A de tamano 5.

7. Anade en el fichero prueba.mat la matriz A.

8. Borra el espacio de trabajo. Comprueba que lo has hecho.

9. Calcula el determinante de la matriz A.

10. Anade el vector v = (1, 2, 3) en el fichero prueba.mat.

11. Borra el espacio de trabajo. Comprueba que lo has hecho.

12. Carga el fichero prueba.mat y comprueba cuales son sus variables.

13. Observa la secuencia de comandos que has realizado durante la resolucion de este ejercicio.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 23

Page 25: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 10

Estructura de seleccion

10.1. Estructura if

if condicion logica...% secuencia de comandosend

Ej.:

if n>0 & n<2 % si n>0 y n<2 entonces haz...

disp(’Estas en el intervalo’)

end

if condicion logica...% secuencia de comandoselse...% secuencia de comandos por defectoend

Ej.:

if n>0 & n<2 % si n>0 y n<2 entonces haz...

disp(’Estas en el intervalo’)

else % en caso contrario haz...

disp(’No estas en el intervalo’)

end

24

Page 26: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

10Estructura de seleccion

if primera condicion logica...% secuencia de comandos (bloque I)elseif segunda condicion logica...% secuencia de comandos (bloque II)elseif tercera condicion logica...% secuencia de comandos (bloque III)else...% secuencia de comandos por defecto (bloque IV)end

Ej.:

if abs(x)<2 % Si el valor absoluto de x es menor que 2 haz

disp(’La variable x esta acotada’)

elseif x>-3 % Si no es asi y si x>-3 haz

disp(’La variable no esta acotada’)

end

10.2. Ejercicios

1. Edita un fichero de comandos que te permita calcular la media de un conjunto de datos almacenadosdentro de una matriz A.

2. Escribe un fichero de comandos que transforme pesetas en euros (1 euro =166.386 pesetas).

3. Escribe un fichero de comandos que calcule una matriz aleatoria n× n con numeros naturales entre 1y 10.

4. Edita un fichero de comandos que permita seleccionar de un numero natural de dos dıgitos la cifra delas unidades y la cifra de las decenas.

5. Escribe un fichero de comandos que te permita averiguar si un numero n es divisible por 13.

6. Edita un fichero de comandos que elimine la primera columna de una matriz A cuando todos loselementos de dicha columna sean cero.

7. Escribe un fichero de comandos para evaluar la siguiente funcion:

f(x, y) =

x + y si x ≥ 0, y ≥ 0,

x + y2 si x ≥ 0, y < 0,

x2 + y si x < 0, y ≥ 0,

x2 + y2 si x < 0, y < 0.

Utiliza el comando input para la lectura de datos.

8. Escribe un fichero de comandos que permita obtener el valor absoluto de un numero almacenado enla variable x.

9. Escribe un fichero de comandos para calcular los valores mınimo y maximo de tres numeros almace-nados en un vector de dimension tres llamado datos e introducidos con el comando input.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 25

Page 27: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

10Estructura de seleccion

10. Construye un fichero de comandos que simule la extraccion al azar de una carta en una baraja espanola.Ejecuta dicho fichero dos veces. ¿Que cartas obtienes?

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 26

Page 28: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 11

Estructura iterativa while

11.1. Estructura iterativa while

while condicion logica...% secuencia de comandosend

n=1;

while prod(1:n)<1e100

n=n+1;

disp(’Nos llegamos en’),n

end

11.2. Ejercicios

1. Escribe un fichero de comandos para encontrar el menor entero no negativo n tal que 2n > 100π sinutilizar la funcion logarıtmica.

2. Edita un fichero de comandos que permita calcular el factorial de un numero leido mediante el comandoinput y guardado en la variable n.

3. Escribe un fichero de comandos que simule el experimento aleatorio consistente en extraer al azarcartas de una baraja espanola hasta la aparicion del primer as. Ejecuta el fichero de comandos unavez y escribe la secuencia de resultados obtenidos.

4. Escribe un fichero de comandos que simule el juego de las 7 y media.

5. Edita un fichero de comandos que simule un juego de dados entre dos jugadores en el que gana quienprimero llega a sumar 21 en sucesivas tiradas alternas entre ambos jugadores.

6. Modifica el fichero anterior para conocer si gana el jugador que comienza el juego. Repite 1000 vecesel juego y, a partir de los resultados obtenidos, decide si es mejor empezar el juego, o por el contrario,es mejor que empiece el adversario.

7. Edita un fichero de comandos que simule el experimento aleatorio consistente en lanzar sucesivamenteun dado hasta obtener 10 doses. Ejecuta el fichero anterior e indica cuantas tiradas has necesitado yen cuales has obtenido un dos.

27

Page 29: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 12

Estructura iterativa for

12.1. Estructura iterativa for

for contador...% secuencia de comandosend

−→ El contador puede ser n = 1 : 1 : 10 o n = [1 6 3,2 8]

Ej.:for n=1:1:10 % Cuenta desde 1 hasta 10 de 1 en 1.

y(n)=n^2; % Declara un vector cuyas componentes son de la forma n^2.

x(n)=2*y(n); % Declara un vector cuyas componentes son de la forma 2*y_n.

end % Fin del bucle.

y,x % Muestra por pantalla los vectores declarados.

12.2. Ejercicios

1. Edita un fichero de comandos que permita calcular el factorial de un numero guardado en la variablen.

2. Escribe la tabla de multiplicar de un numero entero positivo leıdo a traves del teclado.

3. Escribe un fichero de comandos que calcule la suma de los n primeros numeros naturales.

4. Se definen los numeros triangulares como los obtenidos de sumar los numeros naturales sucesivos:1, 2, 3, . . ., es decir, los primeros numeros triangulares son: 1, 3, 6, . . .. Escribir un programa que muestrepor pantalla los n primeros numeros triangulares.

5. Escribe un fichero de comandos que permita introducir a traves del teclado un numero natural n yque muestre los n primeros numeros pares.

6. Escribe un fichero de comandos que permita introducir a traves del teclado un numero natural n yque muestre los n primeros numeros impares.

7. Edita un fichero de comandos para averiguar si un numero almacenado en la variable n e introducidoa traves del teclado es primo.

28

Page 30: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

12Estructura iterativa for

8. Escribe un fichero de comandos que compruebe si una matriz es magica.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 29

Page 31: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 13

Funciones

13.1. Funciones

function [salida1,. . . ,salidaN]=nombre(entrada1,. . . ,entradaM)−→ Primera lınea de la funcion nom-

bre.m

1. Se guarda como un fichero de texto nombre.m cuyo nombre “suele” coincidir con el de la funcion.

2. Desde la propia funcion se puede hacer llamadas a otras funciones o incluso a ella misma (lo que seconoce como recursividad).

3. Las variables usadas en cada funcion toman un valor local. Por tanto, una variable con el mismonombre en una funcion y en el programa principal mantiene el valor que tome en cada uno de loscontextos.

Ej.:% Calcula una aproximacion al numero e utilizando el polinomio de Taylor.

m=input(’Da el numero de sumandos \n’);

x=0;

for n=1:1:m

x=x+1/mifactorial(n); % Llamada a nuestra funcion mifactorial

end

x

donde la funcion mifactorial viene definida por

function [k]=mifactorial(n)

if (floor(n)==n)&(n>0)

k=1;

for m=2:1:n

k=k*m;

end

end

30

Page 32: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

13Funciones

13.2. Ejercicios

1. Programa una funcion llamada stat1 que calcule sobre un conjunto de datos almacenados en un vectorllamado datos su media y el numero de datos.

2. Programa una funcion que calcule el maximo y el mınimo de dos numeros y utilızala para obtener elmaximo y el mınimo de tres numeros.

3. a) Programa una funcion que simule el lanzamiento de un dado. Utiliza el comando

rand(’state’,sum(100*clok)).

b) Programa una funcion que simule el resultado de n tiradas aleatorias de un dado.

c) Ejecuta el programa anterior para n = 1000 y cuenta el numero de veces que aparece cadaresultado mediante un programa.

d) Crea una funcion que simule el resultado de sumar la tirada de tres dados.

e) Crea un programa que devuelva el maximo valor que se obtiene al repetir el experimento anteriordos veces.

4. Crea una funcion con los programas realizados en los ejercicios 3, 4 y 10 de la hora estructura deseleccion que simule el resultado obtenido al extraer n cartas de una baraja espanola. El argumentode entrada es n y la salida debe ser un vector de la siguiente forma (As de copas, Sota de bastos,....).

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 31

Page 33: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 14

Programacion modular

14.1. Programacion modular

La programacion modular responde a la idea “divide y venceras”. En efecto, la implementacion decualquier tarea, por muy compleja que esta sea, es abordable si la fraccionamos en otras mas simples yfaciles de programar. Con esta forma de actuar se consiguen ademas varios objetivos fundamentales de laprogramacion:

Disponer de un catalogo de funciones preparadas para su utilizacion sobre cualquier otro programa.

Elaborar codigos sencillos, faciles de entender y modificar posteriormente.

Simplificar la escritura del programa y, por ende, evitar errores sintacticos.

Desarrollar programas incrementalmente. De esta forma siempre se construye sobre algo que ya hasido comprobado y que funciona. Si aparece algun error, lo mas probable es que se deba a lo ultimoque se ha anadido, y su busqueda esta acotada y es mucho mas sencilla.

Como recomendaciones generales para la programacion sobre cualquier lenguaje debemos senalar:

1. Crear un programa principal que actue como distribuidor del conjunto de funciones utilizadas.

2. Pensar bien las cosas (sobre una hoja de papel en blanco mejor que sobre la pantalla del PC) siemprees rentable, porque disminuye el tiempo de depuracion y eliminacion de errores.

3. Escribir el codigo de un modo claro y ordenado, introduciendo comentarios, utilizando lıneas en blancopara separar distintas partes del programa, sangrando las lıneas para ver claramente el rango de lasbifurcaciones y bucles, utilizando nombres de variables que recuerden el significado de la magnitudque almacenan, etc.

Particularmente, para la programacion con MATLAB, cabe senalar la importancia de “vectorizar” losalgoritmos de calculo, es decir, de realizarlos con vectores y matrices y no con variables escalares dentro debucles.

14.2. Ejercicios

1. Elabora un programa que simule la hora de salida y la hora de llegada de un autobus de lınea de 40plazas. El viaje sigue las siguientes pautas:

32

Page 34: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

14.2Programacion modular

El autobus siempre llega a la estacion de origen a las 15.00 horas.

El autobus no sale hasta que este completo.

Todos los viajeros se encuentran en la parada antes de la llegada del autobus.

El autobus solo tiene una puerta de subida.

Cada viajero tarda en subir un tiempo aleatorio entre 20 sg. y 2 minutos.

El tiempo que emplea el autobus en recorrer el trayecto entre el origen y el destino es aleatorioentre 2 horas 24 minutos y 3 horas.

Se pide encontrar la hora de salida y la hora de llegada en 100 viajes. ¿Cual es la hora media de llegadadel autobus en esos 100 viajes?

Indicaciones:

a) Construir una funcion n=numeroaleatorio(a,b) que devuelva un numero aleatorio (no necesa-riamente entero), n, entre a y b. Utiliza la funcion rand.

b) Construir una funcion t=subidaviajero que devuelva el tiempo que tarda en subir un viajero.Utiliza la funcion numeroaleatorio.

c) Construir una funcion t=duracionviaje que devuelva el tiempo que el autobus tarda en recorrerel trayecto. Utiliza la funcion numeroaleatorio.

2. Considera que el autobus del ejercicio anterior realiza cinco paradas intermedias. Ademas de las pautasanteriores se anaden las siguientes:

El tiempo que el autobus emplea en recorrer el trayecto entre dos paradas consecutivas es unnumero aleatorio entre 25 y 37 minutos.

En cada una de ellas se pueden bajar un numero aleatorio de viajeros entre 0 y el numero totalde los que permanecen en el autobus.

El tiempo de bajada de cada viajero del autobus es identico al de subida.

El autobus solo tiene una puerta de bajada. De esta forma, el tiempo de bajada de cada viajeroes la suma del tiempo que tardan el y todos lo viajeros que bajan antes que el.

Aparece un tiempo adicional para recoger el equipaje, que es un numero aleatorio inferior a 2minutos 30 sg. para cada viajero.

El autobus sale de la parada cuando todos los viajeros han recogido su equipaje.

Se pide encontrar la hora de salida y la hora de llegada en 100 viajes. ¿Cual es la hora media de llegadadel autobus en esos 100 viajes? ¿Cual es el numero medio de viajeros que se bajan en la segunda paradaen esos 100 viajes?

Indicaciones:

a) Modifica la funcion t=duracionviaje para que devuelva el tiempo que el autobus tarda enrecorrer cada tramo.

b) Construir una funcion t=numeroviajero(a) que devuelva el numero de viajeros que bajan encada parada. Modifica la funcion numeroaleatorio para que devuelva un numero natural entre 0y a. Se debe tener en cuenta que el numero de viajeros en el autobus disminuye en cada parada.

c) Construir una funcion t=bajadaviajero que devuelva el tiempo que tarda en bajar un viajero.Utiliza la funcion numeroaleatorio.

d) Construir una funcion t=recogidaequipaje que devuelva el tiempo que un viajero tarda enrecoger el equipaje. Utiliza la funcion numeroaleatorio.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 33

Page 35: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

14.2Programacion modular

e) Para contabilizar el tiempo de salida utiliza un vector de dimension el numero de viajeros queabandonan el autobus que almacenara el tiempo que tarda cada uno de ellos en abandonar laparada (bajar del autobus + recoger el equipaje). El tiempo de salida es el maximo de estosvalores.

3. Considera que en el viaje del ejercicio anterior los viajeros no se encuentran en la parada a la hora desalida. Ademas de las pautas anteriores se anaden las siguientes:

Cada viajero sube al autobus en orden de llegada a la parada.

El numero de viajeros que llegan tarde es aleatorio.

El retraso de cada uno de ellos es aleatorio entre 1 sg. y 30 minutos.

Hay que tener en cuenta que los viajeros con retraso pueden subir directamente o, en caso con-trario, deben esperar su turno.

Se pide encontrar la hora de salida y la hora de llegada en 100 viajes. ¿Cual es la hora media de llegadadel autobus en esos 100 viajes? ¿Cual es el numero medio de viajeros que se bajan en la segunda paradaen esos 100 viajes? ¿Cual es el numero medio de viajeros impuntuales en esos 100 viajes?

Indicaciones:

a) Utiliza la funcion n=numeroviajero para determinar la cantidad de viajeros impuntuales.

b) Construir una funcion t=tiemporetrasos(n) que devuelva un vector t de n componentes con lostiempos de retraso de los viajeros impuntuales (n). Para ello modifica adecuadamente la funciont=bajadaviajero.

c) Para contabilizar el tiempo de subida de los viajeros impuntuales hay comparar su retraso con eltiempo que tardan en subir los viajeros anteriores. Es conveniente (necesario) ordenar el vectorde tiempos de retraso.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 34

Page 36: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 15

Escritura con formato en fichero

15.1. Escritura con formato en fichero

nombre=fopen(’nombre-fichero’,permisos)−→ Abre el fichero en el que vamos a guardar los datos.

• nombre Es el identificador que MATLAB utilizara posteriormente para reconocer el fichero.

• nombre-fichero Es el nombre que tiene el fichero en nuestro directorio.

• permisos Es un cadena de caracteres que indica la operacion que se va a realizar con el fichero:’r’ −→ Lectura.’w’ −→ Escritura (se crea si es necesario).’a’ −→ Anadir a un fichero ya existente (se crea si es necesario).

’r+’ −→ Lectura y escritura.’w+’ −→ Trunca el fichero o lo crea para lectura o escritura.’a+’ −→ Lectura y anadir a un fichero ya existente (se crea si es necesario).

fclose(nombre)−→ Cierra el fichero abierto cuyo identificador es nombre. En caso de que se produzca

algun error al cerrar el fichero MATLAB devolvera el valor −1 y si no es ası devolvera 0.

fprintf(nombre,format,datos)−→ Escribe el valor de una o varias variables en el fichero con el iden-

tificador nombre abierto previamente. El fichero debe cerrarse al finalizar esta operacion. El formatode escritura de los datos se indica en el campo format utilizando parametros como:

• % para formatos numericos. Sus opciones son: d entero, f real, e exponencial, s cadena de carac-teres, etc.

• \n provoca un salto de lınea.

Ej.:t=0:1:10 % Crea un vector con los datos 0,1,2,3,...,10.

y=t.^2 % Crea un vector con los datos 0,1,4,9,...,100.

nombre=fopen(’parabola.dat’,’w’) % Abre el fichero llamado parabola.dat para escribir

% en el (w)

x=[t;y]; % Crea la matriz de datos que vamos a escribir en

35

Page 37: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

15Escritura con formato en fichero

% el fichero.

fprintf(nombre,’%1.1f % 2.6e’,x) % Escribe en el fichero los datos con el

% siguiente formato:

% La primera columna [un entero].[un decimal]

% La segunda [dos enteros].[6 decimales en

% modo exponencial].

fclose(nombre) % Manda los datos al fichero nombre.

15.2. Ejercicios

1. Ejecuta el comando fid=fopen(’noexiste.txt’,’r’) y explica el resultado que obtienes.

2. Utiliza fprintf para escribir en el fichero noexiste.txt (sin crearlo previamente) la cadena de ca-racteres Prueba de escritura en el fichero noexiste.txt sin crearlo previamente. Una vez finalizada estaoperacion observa el contenido de dicho fichero.

3. Escribe el numero π con 25 cifras decimales en el fichero de texto pi.txt.

4. Utiliza fprintf para escribir en la primera lınea del fichero sucesion.txt (sin crearlo previamente)la secuencia 1:1:10 (usa el formato ’%1d\t’). Una vez finalizada esta operacion observa el contenidode dicho fichero.

5. Utiliza fprintf para anadir al fichero sucesion.txt (sin borrar su contenido previo) la secuencia11:1:20, de forma que cada uno de los numeros que la compone ocupe un renglon distinto (para ellomodifica el formato ’%1d\n’). Una vez finalizada esta operacion observa el contenido de dicho fichero.

6. Utiliza fprintf para escribir en el fichero sucesion.txt (borrando su contenido previo) la matrizrand(3,10). Los datos escritos deben conservar su estructura original (usa para ello el formato’%1.4f %1.4f %1.4f\n’. Una vez finalizada esta operacion observa el contenido de dicho fichero.

7. Genera una matriz magica de tamano 6 y escribe su contenido en un fichero de texto llamadosalida.txt.

8. Genera una matriz con 10 filas y 4 columnas formada por numeros aleatorios y escribe su contenido enun fichero de texto llamado salida.txt. Utiliza para ello una cifra decimal en las columnas imparesy 4 cifras decimales en las columnas pares.

9. Crea una funcion con las siguientes caracterısticas:

a) Solicita que el usuario introduzca por teclado una M, una R, o un cero si su escritor favorito es,respectivamente, Miguel de Cervantes, Juan Ramon Jimenez o ninguno de los dos.

b) Escriba en el fichero escritor.dat:

“En un lugar de la Mancha...” si ha elegido a Cervantes.

“Platero es suave...” si prefiere a Juan Ramon Jimenez.

“A ti lo que te gustan son las Matematicas”, en otro caso.

10. Crea una funcion que:

a) Pida un numero n para ser introducido a traves del teclado.

b) Genere n valores con la funcion rand y calcule su media.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 36

Page 38: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

15Escritura con formato en fichero

c) Escriba los valores generados y la media en un fichero llamado salida.txt, con formato ascii.

11. Crea una funcion para gestionar los salarios de una empresa. Para ello:

a) Debe pedir el numero de registros que se van a introducir.

b) Almacena el nombre, el primer apellido y el salario para cada trabajador.

c) Escribe los datos recogidos ordenados en orden creciente respecto al salario que reciben en elfichero salida.txt, con formato ascii.

d) Ademas, los ultimos dos renglones del archivo salida.txt deben contener la siguiente informa-cion:

1) El menor salario es ???????.

2) El mayor salario es ???????.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 37

Page 39: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 16

Lectura de fichero con formato

16.1. Lectura de fichero con formato

fscanf(nombre,format,tamano)−→ Lee el valor de una variable en un fichero que ha sido abierto

con fopen y que tiene por identificador nombre.

• nombre es el identificador del fichero.

• format puede ser %d, %f, %e, %c, %s, etc.

• tama~no es un argumento optativo que permite limitar el numero de datos leidos. El valor quepuede tomar este argumento es uno de los siguientes:

N −→ Lee un vector de hasta N componentes.inf −→ Lee datos hasta el final del fichero.[N,M] −→ Lee una matriz de tamano N x M por columnas (M puede se inf).

Ej.:nombre=fopen(’parabola.dat’,’r’) % Abre el fichero llamado parabola.dat

% para leer de el (r)

z=fscanf(nombre,11) % Lee del fichero parabola.dat los datos con el

% siguiente formato:

% La primera columna real

% La segunda modo exponencial

% Hasta 11 datos.

fclose(nombre) % Cierra el fichero identificado mediante nombre

16.2. Ejercicios

1. Realiza las siguientes operaciones:

a) Genera los vectores w1 = (3, 5, 6, 7, 9) y w2 con los 3 primeros numeros multiplos de 11.

b) Graba en el fichero datos.txt con formato ascii las variables w1 y w2 anteriores.

c) Borra el espacio de trabajo. Comprueba que lo has hecho.

38

Page 40: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

16Lectura de fichero con formato

d) Carga el fichero datos.txt y comprueba cuales son sus variables.

2. Utiliza fscanf para leer y guardar las dos primeras columnas del fichero sucesion.txt. en la variableU. Comprueba que la operacion se ha realizado correctamente visualizando el contenido de U.

3. El fichero secuencia.dat contiene una sucesion de numeros enteros positivos o cero. Crea una funcionque lea dicha secuencia, invierta los valores positivos y sustituya los ceros por la cadena no inversible.Escribe los resultados obtenidos en el fichero secuencia.dat, debajo de la sucesion original.

4. El fichero quiniela.txt contiene los 15 resultados de una quiniela (1, X o 2) almacenados a razon deun signo por lınea y separados por retorno de carro. Elabora una funcion que lea dichos resultados,contabilice el numero n de empates, y escriba en el fichero resultados.dat y por pantalla el mensaje:La quiniela arroja n empates.

5. Lee el fichero nombresnumeros.txt y sustituye la columna correspondiente al DNI por una columnaque contenga el NIF.

6. Lee el fichero nombre.txt y guarda sus registros en la variable nombre.

7. Lee el fichero apellido.txt y guarda sus registros en la variable apellido.

8. Lee el fichero edad.txt y guarda sus registros en la variable edad.

9. Considera la variable edad anterior y clasifica a sus individuos en “jovenes” si tienen menos de 18 anosy en “adultos” si tienen mas de 18 anos. Almacena los resultados en la variable situacion.

10. Guarda las variables nombre, apellido, edad y situacion en el fichero listado.txt con el siguienteformato:

Andres Perez ∗ ∗ ∗ 46 ∗ ∗ ∗ ADULTO

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 39

Page 41: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 17

Librerıas generales

17.1. Librerıas asociadas con la utilizacion de matrices y funciones

OPS: operadores.

union(A,B)−→ A ∪B. Se ordena el resultado. Ej.:

A=[1 2 4];B=[1 2 3];C=union(A,B)

C =

1 2 3 4

unique(A)−→ Devuelve un vector cuyas componentes son las de A ordenadas y sin valores repetidos.

Ej.:unique([3 4 1 4 -2])

ans =

-2 1 3 4

intersect(A,B)−→ A ∩B. Se ordena el resultado. Ej.:

A=[4 3 2 1];B=[2 2 3];C=intersect(A,B)

C =

2 3

setdiff(A,B)−→ A−B. Se ordena el resultado. Ej.:

A=[1 2 4];B=[1 2 3];C=setdiff(A,B)

C =

4

setxor(A,B)−→ A ∪B −A ∩B. Se ordena el resultado. Ej.:

A=[-5 6 2 1 4 6 1];B=[1 3 5 5 6];setxor(A,B)

ans =

-5 2 3 4 5

ismember(x,A)−→ Funcion logica que devuelve 1 si x ∈ A y 0 si x /∈ A. Ej.:

40

Page 42: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

A=[-5 6 2 1 4 6 1];ismember([-5 6 -2],A),ismember(4,A)

ans =

1 1 0

ans =

1

ELMAT: manipulacion de matrices.

size(A)−→ Tamano de la matriz A. Ej.:

A=[1 2; 3 4;5 6];A,size(A)

A =

1 2

3 4

5 6

ans =

3 2

length(A)−→ Longitud del vector v. Ej.:

A=[1 2 3 4 5 6];length(A)

ans =

6

isempty(A)−→ Funcion logica que devuelve 1 si la matriz A es vacıa y 0 si no lo es. Ej.:

A=[];isempty(A)

ans =

1

A=[1 2;3 4];isempty(A)

ans =

0

isequal(A,B)−→ Funcion logica que devuelve 1 si las matrices A y B son iguales y 0 si no lo son.

Ej.:A=[1 2;3 4];B=[1 3;2 4];isequal(A,B)

ans =

0

A=[1 2;3 4];B=[1 2;3 4];isequal(A,B)

ans =

1

isnumeric(A)−→ Funcion logica que devuelve 1 si la variable A es numerica y 0 si no lo es. Ej.:

A=[1 2;3 4];B=’caracteres’;isnumeric(A),isnumeric(B)

ans =

1

ans =

0

islogical(A)−→ Funcion logica que devuelve 1 si la variable A es logica y 0 si no lo es. Ej.:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 41

Page 43: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

islogical([1 0])

ans =

0

A=-2==1;islogical(A)

ans =

1

reshape(A,m,n)−→ Crea una matriz de m filas y n columnas a partir de los elementos de A. Si A

es una matriz, sus elementos se distribuyen por columnas. Ej.:A=[1 2 3;4 5 6]

A =

1 2 3

4 5 6

reshape(A,6,1),reshape(A,1,6)

ans =

1

4

2

5

3

6

ans =

1 4 2 5 3 6

reshape(A,3,2)

ans =

1 5

4 3

2 6

tril(A),triu(A)−→ “Senalan” los elementos que forman las matrizes triangular inferior y superior

de A respectivamente haciendo cero el resto. Ej.:A

A =

1 2 3

4 5 6

tril(A),triu(A)

ans =

1 0 0

4 5 0

ans =

1 2 3

0 5 6

fliplr(A),flipud(A)−→ Reordena las componentes de la matriz A simetricamente en las columnas

(left-right) y en las filas (up-down) respectivamente. Ej.:A=[1 2;3 4;5 6]

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 42

Page 44: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

A =

1 2

3 4

5 6

fliplr(A),flipud(A)

ans =

2 1

4 3

6 5

ans =

5 6

3 4

1 2

rot90(A)−→ Reordena las componentes de la matriz A mediante un giro de 90 grados en sentido

antihorario. Ej.:A=[1 2;3 4;5 6],rot90(A)

A =

1 2

3 4

5 6

ans =

2 4 6

1 3 5

find(A)−→ Localiza los elementos no nulos de A. Ej.:

A=[1 2;0 3;5 0],[I,J]=find(A)

A =

1 2

0 3

5 0

I =

1

3

1

2

J =

1

1

2

2

ELFUN: funciones matematicas elementales.

fix(x)−→ Redondea las componentes de x hacia cero. Ej.:

fix([-3.8,3.8])

ans =

-3 3

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 43

Page 45: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

floor(x)−→ Redondea las componentes de x hacia −∞. Ej.:

floor([-3.8,3.8])

ans =

-4 3

ceil(x)−→ Redondea las componentes de x hacia ∞. Ej.:

ceil([-3.8,3.8])

ans =

-3 4

round(x)−→ Redondea las componentes de x hacia el entero mas proximo. Ej.:

round([-3.8,3.8])

ans =

-4 4

rem(x,y)−→ Proporciona los restos que resultan al dividir las componentes de x entre las compo-

nentes correspondientes de y. Ej.:rem([6,8,-8],[3,3,3])

ans =

0 2 -2

sign(A)−→ Devuelve el signo de las componentes de A. Ej.:

sign([6,-8;1 2])

ans =

1 -1

1 1

factor(x)−→ Realiza la factorizacion como producto de numeros primos del numero x. Ej.:

factor(1356)

ans =

2 2 3 113

isprime(x)−→ Funcion logica que devuelve 1 en las componentes de x que son numeros primos y 0

en las que no lo son. Ej.:isprime([1356,17])

ans =

0 1

primes(n)−→ Devuelve un vector con los numeros primos menores o iguales que n. Ej.:

primes(17)

ans =

2 3 5 7 11 13 17

gcd(x,y),lcd(x,y)−→ Obtiene el maximo comun divisor y el mınimo comun multiplo de x, y respec-

tivamente. Cuando x, y son vectores los calculos se hacen entre las componentes de x e y que ocupanla misma posicion. Ej.:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 44

Page 46: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

gcd([120,213],[64,10]),lcm([12,2],[10,3])

ans =

8 1

ans =

60 6

rats(x)−→ Aproximacion racional de las componentes de x. Ej.:

rats([12.23,pi])

ans =

1223/100 355/113

355/113

ans =

3.1416

perms(x)−→ Obtiene todas las permutaciones posibles con las componentes de x. Ej.:

perms([1 2 3])

ans =

3 2 1

2 3 1

3 1 2

1 3 2

2 1 3

1 2 3

factorial(n)−→ 1 · 2 · 3 · · · (n− 2)(n− 1)n Ej.:

factorial(5)

ans =

120

nchoosek −→ Numero combinatorio

(n

k

)Ej.:

nchoosek(6,4)

ans =

15

cart2sph(x)−→ Transforma coordenadas cartesianas en coordenadas esfericas. Ej.:

[TH,PHI,R]=cart2sph([1,-4],[2,5],[3,2])

TH =

1.1071 2.2455

PHI =

0.9303 0.3027

R =

3.7417 6.7082

sph2cart(x)−→ Transforma coordenadas esfericas en coordenadas cartesianas. Ej.:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 45

Page 47: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

[X, Y, Z]=sph2cart([1.1071,2.2455],[0.9303,0.3027],[3.7417,6.7082])

X =

1.0001 -3.9999

Y =

1.9999 5.0002

Z =

3.0001 1.9997

cart2pol(x)−→ Transforma coordenadas cartesianas en coordenadas polares (cilındricas). Ej.:

[TH,R,Z]=cart2pol([1,-4],[2,5],[3,2])

TH =

1.1071 2.2455

R =

2.2361 6.4031

Z =

3 2

pol2cart(x)−→ Transforma coordenadas polares (plano) y cilındricas (espacio) en coordendas carte-

sianas. Ej.:[X,Y,Z]=pol2cart([1.1071,2.2455],[2.2361,6.4031],[3,2])

X =

1.0001 -3.9998

Y =

2.0000 5.0001

Z =

3 2

DATAFUN: analisis de datos.

sort(A)−→ Ordena las componentes de la matriz A por columnas. Ej.:

sort([12 -3 6 7 1 0 pi])

ans =

-3.0000 0 1.0000 3.1416 6.0000 7.0000 12.0000

magic(3),sort(magic(3))

ans =

8 1 6

3 5 7

4 9 2

ans =

3 1 2

4 5 6

8 9 7

sortrows(A)−→ Ordena las filas de la matriz A leyendo sus elementos de izquiera a derecha. Ej.:

magic(3),sortrows(magic(3))

ans =

8 1 6

3 5 7

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 46

Page 48: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

17Librerıas generales

4 9 2

ans =

3 5 7

4 9 2

8 1 6

A=[1 2 3 3; 1 2 3 1; 1 2 3 2],sortrows(A)

A =

1 2 3 3

1 2 3 1

1 2 3 2

ans =

1 2 3 1

1 2 3 2

1 2 3 3

sum(A)−→ Suma las componentes de A por columnas. Ej.:

A=[1 2;3 4],sum(A)

A =

1 2

3 4

ans =

4 6

prod(A)−→ Multiplica las componentes de A por columnas. Ej.:

A=[1 2;3 4],prod(A)

A =

1 2

3 4

ans =

3 8

17.2. Ejercicios

Comprueba los ejemplos introducidos en la seccion anterior y explica los resultados obtenidos.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 47

Page 49: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 18

Primeros graficos bidimensionales

18.1. Comando plot

plot(x)−→ Dibuja los pares de puntos (i, xi) unidos por segmentos (xi representa las componentes del

vector x). Ej.:x=[-4 -2 0 1 3 5]; [ENTER]

plot(x); [ENTER]

plot(x,y)−→ Dibuja los pares de puntos (xi, yi) unidos por segmentos (xi e yi representan las componentes

de los vectores x e y respectivamente). Ej.:x=[-4 -2 0 1 3 5]; [ENTER]

y=[16 4 0 1 9 25]; [ENTER]

plot(x,y); [ENTER]

plot(z)−→ Dibuja en el plano complejo los pares de puntos (Re(zi), Im(zi)) unidos por segmentos (zi

representa las componentes del vector z). Ej.:z=[1 2+i 3 2-i 3-2*i]; [ENTER]

plot(z); [ENTER]

plot(A)−→ Para cada j dibuja los pares de puntos (i, aij) unidos por segmentos (aij representa las

componentes de la matriz A) . En la misma grafica, cada poligonal se dibuja con un color y con un tipo delınea diferente. Ej.:A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 -0.5; 5 25 0.5]; [ENTER]

plot(A); [ENTER]

plot(x,A)−→ Independientemente de que x sea un vector fila o columna, ejecuta plot(x,y) donde y

es una fila o columna de A. Para la eleccion de la fila y columna se tiene en cuenta la coincidencia dedimensiones. En la misma grafica, cada lınea se dibuja con un color y con un tipo de lınea diferente. Ej.:x=[0 0.1 0.2 0.3 0.4]; [ENTER]

A=[1 1 0.5; 2 4 -0.5; 3 9 0.5; 4 16 -0.5; 5 25 0.5]; [ENTER]

plot(x,A); [ENTER]

48

Page 50: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

18.2Primeros graficos bidimensionales I

plot(A,x)−→ En las mismas condiciones que el caso anterior dibuja los pares ordenados siendo x el valor

de las ordenadas. Ej.:x=0:0.1:2; [ENTER]

A=[sin(pi*x); 0.5+0.5*x]; [ENTER]

plot(A,x); [ENTER]

plot(A,B)−→ Ejecuta plot(x,y), donde x es una columna de A e y es una columna de B. En la misma

grafica, cada poligonal se dibuja con un color y con un tipo de lınea diferente.

18.2. Ejercicios

1. Dibuja la funcion sin(1/x) entre -1 y 1.

2. Crea una funcion que:

a) Simula n lanzamientos de una moneda mediante el comando rand (n es un valor que debe intro-ducir el usuario como argumento de la funcion).

b) Guarde en el espacio de trabajo los resultados obtenidos en la variable datos.

c) Calcule con que frecuencia va apareciendo el resultado cara en los sucesivos lanzamientos.

d) Represente graficamente dichas frecuencias frente al numero de lanzamientos.

e) Muestre por pantalla la ultima frecuencia obtenida.

f ) Envıe al fichero de texto resultados.dat los resultados obtenidos en los n lanzamientos (emplealas palabras cara y cruz).

3. Representa el recinto del plano R2 x ≥ 0, y ≥ 0, (x−1)3 +y ≤ 0 y su imagen por la funcion f = (f1, f2)donde f1(x, y) = −3x− 2y + 3 y f2(x, y) = −x− 3y + 1.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 49

Page 51: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 19

Dibujo de funciones

19.1. Comando fplot

fplot(’fcn’, lim)−→ Dibuja el grafico de la funcion especificada en la cadena fcn (puede ser un fichero de

comandos) en los intervalos de abcisas y ordenadas determinados por lim. Ej.:fplot(’sin(x^2)’, [0 10]) [ENTER]

fplot(’sin(x^2)’, [0 10 -1.5 0.5]) [ENTER]

19.2. Ejercicios

Dibuja las siguientes funciones en los dominios especificados:

1. f(x) = xe−x2en [−2, 2].

2. f(x) =√

x2 − 1 en [−3, 3,−1, 3].

3. f(x) = x2 sin( 1x) en [−2, 2].

4. f(x) = x2 sin( 1x) en [−0,1, 0,1].

50

Page 52: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 20

Modificadores de los graficos

bidimensionales

20.1. Opciones de los comandos plot y fplot

plot(x,y,cad)−→ Dibuja la grafica de abcisas x y ordenadas y con las opciones de estilo dadas por cad1

(MATLAB utiliza por defecto una lınea azul continua sin marcadores).

fplot(’fcn’, lim,cad)−→ Dibuja la grafica de la funcion fcn con el estilo de lıneas cad.

plot(x1,y1,cad1, x2,y2,cad2,...)−→ Dibuja la grafica de abcisas x1 y ordenadas y1 con las opciones de

estilo dadas por cad1, la grafica de abcisas x2 y ordenadas y2 con las opciones de estilo dadas por cad2 yası con el resto de ternas. Si se omiten las opciones de estilo, MATLAB escoge el color y estilo para cadagrafico.

1cad es una variable caracter de a lo sumo tres parametros elegidos de las siguientes columnas sinimportar el orden. Afecta a los estilos de lıneas y colores.

Marcadores Lıneas Colores. punto - solida y amarillo* estrella -- discontınua g verdex cruz -. punto-raya m magentao cırculo : punteada b azul+ mas c cyans cuadrado w blancod rombo r rojop pentagono k negroh hexagonov triangulo abajo< triangulo izquierda> triangulo derecha^ triangulo arriba

1Ver tabla

51

Page 53: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

20.2Modificadores de los graficos bidimensionales

Ej.:

n=50; % Asignamos valores a las variables

a=0;

b=3;

x=linspace(a,b,n); % Construimos el vector x

e1=exp(-x.^2); % y los vectores de abcisas

e2=(x.^2).*exp(-x.^2);

e3=x.*exp(-x.^2);

e4=exp(-x);

plot(x,e1,’+-g’,x,e2,’*:k’,x,e3,’o-.y’,x,e4,’x’); % Dibujamos las graficas

20.2. Ejercicios

1. Dibuja un cuadrado de vertices {(1, 1), (1, 4), (4, 4), (4, 1)} y sus diagonales. Emplea un estilo distintopara cada uno de los lados y diagonales.

2. Una granja familiar crıa conejos, terneros y cerdos. Los siguientes vectores describen el numero deunidades de cada cabana nacidos durante cada uno de los meses de 1999 en la granja:

conejos = (1, 3, 7, 9, 11, 13, 15, 17, 20, 20, 22, 23)terneros = (1, 2, 1, 4, 1, 1, 2, 1, 0, 1, 3, 2)cerdos = (12, 10, 1, 8, 11, 11, 1, 4, 3, 1, 5, 7)

Dibuja los vectores anteriores en un mismo grafico diferenciandolos entre sı.

3. Considera el vector v=-10:-1. Dibujas las potencias v1, v2 y v3 diferenciandolas entre sı.

4. Considera el vector v=1:10. Dibujas las potencias v1,√

v y 3√

v diferenciandolas entre sı.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 52

Page 54: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 21

Control de graficos bidimensionales

21.1. Control de graficos bidimensionales

axis −→ Devuelve los lımites del dibujo actual en un vector fila. Para graficos de dos dimensiones tienelos elementos [xmin xmax ymin ymax] y para graficos de tres dimensiones [xmin xmax ymin ymax zmin zmax].

axis(v)−→ Establece la escala de los ejes conforme al vector v que sera [xmin xmax ymin ymax] en dos

dimensiones o [xmin xmax ymin ymax zmin zmax] en tres dimensiones.

axis(axis)−→ Bloquea la escala actual cuando se anaden dibujos posteriores a uno que se ha mantenido

con el comando hold.

axis(cad)−→ Establece la escala de los ejes con diferentes resultados dependiendo de la cadena cad

utilizada:

’auto’ Vuelve a la escala automatica.

’equal’ Da la misma escala en ambos ejes.

’ij’ Intercambia la parte positiva y negativa del eje y.

’xy’ Deshace el anterior.

’image’ Igual que equal pero se ajusta al dibujo.

’square’ Modifica la ventana grafica para hacer que la caja del dibujo sea cuadrada.

’normal’ Modifica la ventana grafica para que la caja del dibujo vuelva al tamano habitual.

’off’ No se muestran los ejes.

’on’ Deshace el comando anterior.

grid on−→ Dibuja una red en la ventana grafica.

grid off−→ Borra la red de la ventana grafica. Ej.:

53

Page 55: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

21Control de graficos bidimensionales

t=0:0.2:2*pi+0.2; [ENTER] % Parametro para el angulo

x=sin(t); [ENTER]

y=cos(t); [ENTER]

subplot(3,1,1); [ENTER]

plot(x,y,’-’); [ENTER]

subplot(3,1,2); [ENTER]

plot(x,y,’-’); [ENTER]

axis square; [ENTER]

subplot(3,1,3); [ENTER]

plot(x,y,’-’); [ENTER]

axis normal; [ENTER]

grid; [ENTER]

axis([-2 2 -3 3]); [ENTER]

title(txt)−→ Escribe la variable cadena txt centrada en la cabezera del grafico (tıtulo).

xlabel(txt), ylabel(txt)−→ Escribe la variable cadena txt como una etiqueta junto al eje x e y respecti-

vamente.

text(x,y,txt)−→ Escribe la variable cadena txt en la posicion (x, y) de la ventana grafica. Las coordenadas

x e y estan proporcionadas en las mismas unidades en las que esta dibujado el grafico. Si x e y son vectores,la variable cadena se escribe en todos los pares de puntos (xi, yi). Si txt es un vector con varias cadenas conel mismo numero de filas que x e y, se escribe una de ellas en cada una de las posiciones. Se puede elegir eltamano y tipo de letra empleado.

gtext(txt)−→ Escribe la variable cadena txt en la posicion de la ventana grafica que elija el usuario

mediante el raton.

legend(st1,st2, ...)−→ Escribe en un pequeno recuadro, las variables cadenas st1, st2, etc, al lado de los

estilos de linea utilizados en cada una de las graficas. Este pequeno recuadro puede moverse mediante elraton.

legend(l1,st1, l2,st2, ...)−→ Escribe una leyenda especificando los estilos de lınea.

legend off−→ Elimina la leyenda del dibujo actual.

[x,y]=ginput−→ Lee las coordenadas en las que se situa el raton dentro de la ventana grafica. Al ejecutar

este comando aparece un cursor que se maneja con el raton (o con las teclas de desplazamiento verticaly horizontal). Presionado una tecla o un boton del raton se envıan las coordenadas a MATLAB que lasalmacena en los vectores x e y. El proceso termina cuando se presiona la tecla [RETURN].

[x,y]=ginput(n)−→ Lee n coordenadas de la ventana grafica.

waitforbuttonpress−→ Detiene el dibujo de graficos hasta que se presiona una tecla o un boton del raton.

Ej.:n=figure; % nueva ventana grafica;

disp(’Para dibujar una poligonal en la figura:’);

disp(’presiona el boton izqdo para empezar,’);

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 54

Page 56: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

21Control de graficos bidimensionales

disp(’Para parar presiona el boton dcho’);

[x,y,t]=ginput(1);

plot(x,y,’o’)

xx=x;yy=y;

hold; axis([0 1 0 1]); % superponer el grafico y se establecen

% los ejes

while t~=3

[x,y,t]=ginput(1);

plot(x,y,’o’)

xx=[xx x];

yy=[yy y];

end

clf; line(xx,yy);

disp(’Aprieta en la figura cuando este terminado’)

waitforbuttonpress

delete(n);

21.2. Ejercicios

1. Dibuja en un mismo grafico las funciones f1(x) = x2, f2(x) = 1,1x2 y f3(x) = 1,2x2.

Utiliza para el eje y una escala adecuada que te permita distinguir las tres funciones anteriores.

Repite el apartado anterior usando para ello el comando zoom.

Identifica sobre la grafica cada una de las funciones representadas de dos maneras distintas:

a) Anade al lado de cada curva una etiqueta que describa la funcion que representa.

b) Incorpora una leyenda que identifique la funcion con el tipo de lınea utilizada para su repre-sentacion.

2. Ejecuta la siguiente funcion:

function y=particle(n)

% Camino aleatorio. Una particula empieza en el origen, y se mueve

% aleatoriamente hacia otra direccion en cada paso.

x=cumsum(rand(n,1)-0.5); % Valores aleatorios de x

y=cumsum(rand(n,1)-0.5); % Valores aleatorios de y

clf;

plot(x,y);

hold on;

plot(x(1),y(1),’o’,x(n),y(n),’o’);

axs=axis;

scale=axs(2)-axs(1);

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 55

Page 57: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

21Control de graficos bidimensionales

text(x(1)+scale/30,y(1),’Inicio’);

hold off;

xlabel(’x’);

Completa el grafico resultante con las siguientes operaciones:

a) Anade el tıtulo “Camino aleatorio”.

b) Escribe bajo el eje y: “Eje de ordenadas”.

c) Identifica el ultimo punto dibujado con la etiqueta “FIN”.

d) Obten las coordenadas de los puntos correspondientes al maximo y al mınimo de la grafica. Paraello actua de las siguientes dos formas:

1) Incorpora al grafico una red que te permita aproximar adecuadamente dichas coordenadas.

2) Utiliza el comando ginput.

e) Sustituye x=cumsum(rand(n,1)-0.5) por x=rand(n,1)-0.5 e y=cumsum(rand(n,1)-0.5) pory=rand(n,1)-0.5. Observa los resultados obtenidos.

f ) Acude a la ayuda de MATLAB y justifica tu anterior respuesta.

3. Busca en la ayuda el comando fill y utilızalo para dibujar un triangulo de vertices {(0, 2), (1, 0), (−1, 0)}coloreado en rojo y sobre el un cuadrado de vertices {(0, 0), (1, 1), (0, 1), (1, 0)}.

4. Modifica el grafico obtenido en el ejercicio 2 de la hora 20 “Modificadores de los graficos bidimensio-nales” incluyendo:

a) El tıtulo ”Rendimiento anual de la granja

b) En el eje de abcisas el nombre de cada mes al que hacen referencia los datos.

c) Una leyenda que indique el tipo de animal al que corresponde cada poligonal.

5. Modifica el grafico obtenido en el ejercicios 3 de la hora 20 “Modificadores de los graficos bidimensio-nales” para que incluya:

a) El tıtulo “Potencias sucesivas”

b) Una leyenda que indique el valor del exponente utizado en cada una de las potencias representadas.

6. Modifica el grafico obtenido en el ejercicios 4 de la hora 20 “Modificadores de los graficos bidimesio-nales” para que incluya:

a) El tıtulo “Potencias sucesivas”

b) Una leyenda que indique el valor del exponente utizado en cada una de las potencias representadas.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 56

Page 58: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 22

Control de la ventana grafica

bidimensional

22.1. Control de la ventana grafica bidimensional

figure(n)−→ Permite mostrar la ventana grafica actual y crear nuevas ventanas graficas.

clf −→ Borra el contenido la ultima ventana grafica utilizada.

delete(n)−→ Cierra la ventana grafica n.

hold on −→ Permite superponer graficos en una misma ventana hasta que se desactiva la opcion con elcomando hold off.

hold off −→ Desactiva la opcion hold on.

ishold −→ Es un comando logico que devuelve 1 si para el actual grafico esta activada la opcion hold on

o 0 en caso contrario.

subplot(m,n,p)−→ Divide la ventana grafica en subventanas distribuidas en m filas y n columnas y hace

que la subventana p sea la actual. Las ventanas se numeran de izquierda a derecha y de arriba hacia abajo.Ej.:x=linspace(-10,10,1000); [ENTER]

y11=(-x).*sin(x); [ENTER]

y12=(-x).*cos(x)-sin(x); [ENTER]

y21=diff(y11)./(x(2)-x(1)); [ENTER]

y22=(y21-y12(1:999))./norm(y12); [ENTER]

subplot(2,2,1); plot(x,y11); [ENTER]

subplot(2,2,2); plot(x,y12); [ENTER]

subplot(2,2,3); plot(x(1:999),y21); [ENTER]

subplot(2,2,4); plot(x(1:999),y22); [ENTER]

zoom on −→ Permite ampliar la ventana con el boton izquierdo del raton y reducirla con el boton derecho.Tambien permite seleccionar el area que queremos ampliar.

57

Page 59: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

22Control de la ventana grafica bidimensionales

zoom off −→ Desactiva el comando anterior.

zoom out −→ Recupera el tamano inicial.

22.2. Ejercicios

1. Dibuja las funciones fk(x) = xk para k = 1, 2, 3, 4, 5, 6, 7 en siete graficas distintas dentro de unamisma ventana con −5 ≤ x ≤ 5. Escribe sobre cada grafica un tıtulo que la identifique.

2. Realiza el ejercicio 3 de la hora 20 Modificadores de los graficos bidimensionales empleando el comandohold.

3. Con los datos del ejercicio 2 de la hora 20 Control de graficos bidimensionales y empleando el comandofigure realiza cuatro graficas en cuatro ventanas distintas para representar:

a) El numero de terneros nacidos en la granja durante cada uno de los meses de 1999.

b) El numero de conejos nacidos en la granja durante cada uno de los meses de 1999.

c) El numero de cerdos nacidos en la granja durante cada uno de los meses de 1999.

d) El numero total de animales nacidos en la granja durante cada uno de los meses de 1999.

Anade un tıtulo y nombra los ejes convenientemente en cada uno de los graficos indicados.

4. Repite el ejercicio anterior incluyendo los 4 graficos representados en un misma ventana dividida encuatro zonas.

5. Ejecuta el siguiente programa y observa los resultados.

M=moviein(17);

x=[-2*pi:.1:2*pi]’;

for j=1:17

y=sin(x+j*pi/8);

plot(x,y);

M(:,j)=getframe;

end

movie(M,2,50)

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 58

Page 60: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 23

Graficos con numeros complejos y en

escalas logarıtmicas

23.1. Graficos con numeros complejos

polar(θ,r)−→ Dibuja numeros complejos a partir de sus coordenadas polares. Los elementos del vector θ

son los angulos en radianes, y los elementos del vector r son las distancias al origen.

pol2cart(θ,r)−→ Convierte las coordenadas polares dadas por los vectores θ y r en coordenadas carte-

sianas. Ej.:r = linspace(0,2); [ENTER]

theta = linspace(0,10*pi); [ENTER]

[x,y] = pol2cart(theta,r); [ENTER]

z = x+i*y; [ENTER]

plot(z); [ENTER]

cart2pol(x, y)−→ Convierte las coordenadas cartesianas dadas por los vectores x e y en coordenadas

polares.

quiver(x,y)−→ Dibuja una flecha para cada par de coordenadas (xi, yi). Muestra el argumento y la

magnitud del numero complejo que tiene ese par de coordenadas reales.

quiver(x,y,dx,dy)−→ Dibuja una flecha para cada par de coordenadas (xi, yi) con el argumento y magnitud

dados por (dxi, dyi).

quiver(x,y, ...,s)−→ El parametro s indica la escala con la que se dibujan las flechas, que por defecto

toma el valor 1.

feather(Z)−→ Dibuja flechas mostrando las magnitudes y argumentos de los elementos de la matriz

compleja Z. Estas flechas parten de puntos equidistantes del eje x.

compass(Z)−→ Como feather pero en este caso todas las flechas tienen como origen el origen de coor-

denadas.

59

Page 61: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

23Graficos con numeros complejos y en escalas logarıtmicas

rose(v,n)−→ Dibuja un histograma de angulos, es decir, un histograma circular mostrando la frecuencia

de los angulos dados en el vector v; utilizando n intervalos. En el caso de no especificar n, el valor por defectoes 36. Ej.:Z=[1+i 2-i 3-5*i; -4+3*i 5-5*i i ;-1-i 3+3*i -1]; [ENTER]

clf; [ENTER]

subplot(2,2,1); quiver(real(Z),imag(Z)); title(’quiver’); [ENTER]

subplot(2,2,2); feather(Z); title(’feather’); [ENTER]

subplot(2,2,3); compass(Z); title(’compass’); [ENTER]

subplot(2,2,4); rose(angle(Z(:))); title(’rose’); [ENTER]

23.2. Graficos en escalas logarıtmicas

semilogx(x,y)−→ Utiliza coordenadas logarıtmicas en el eje x. El resultado es el mismo que utilizar

plot(log10(x),y) pero no produce ningun error si tenemos que calcular log10 0.

semilogy(x,y)−→ Actua como el comando anterior, pero esta vez la escala logarıtmica esta en el eje y.

loglog(x,y)−→ Dibuja ambos ejes en escala logarıtmica. Ej.:

x=linspace(0,7); [ENTER]

y=exp(x); [ENTER]

subplot(2,1,1); plot(x,y); [ENTER]

subplot(2,1,2); semilogy(x,y); [ENTER]

23.3. Ejercicios

1. Dibuja las siguientes funciones en coordenadas polares y en coordenadas cartesianas.

a) r = ecos θ − 2 cos(4θ) + sen( θ5

12).

b) r = 4θ.

c) r = 2(1 + cos θ).

d) r = cosθ, r = cos(2θ), r = cos(3θ) y r = cos(4θ) en una misma grafica.

e) r = 2(1 + cos(2θ)) y r = 2(1 + cos(3θ)) en una misma ventana y en graficas distintas.

2. Dibuja el sector circular limitado por las circunferencias x2 + y2 = 9 y r = 5 y los angulos θ = π4 y

θ = 3π7 usando numeros complejos.

3. Dibuja los pentagonos cuyos vertices estan sobre la circunferencia unidad en los angulos θ = 2π5 ,4π

5 ,6π5 ,8π

5 ,10π5 y en los angulos θ = 3π

5 , 5π5 , 7π

5 , 9π5 , 11π

5 . Traza los segmentos que unen cada vertice con el origende coordenadas.

4. El fichero poblacion.txt describe el numero de habitantes empadronados en ciertos municipios deCastilla y Leon.

Utiliza un histograma (funcion hist) para representar los datos almacenados en la variablehabitantes.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 60

Page 62: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

23Graficos con numeros complejos y en escalas logarıtmicas

Transforma la variable habitantes mediante la funcion log y guarda el resultado en la variableloghabitantes.

Representa los datos almacenados en la variable loghabitantes con un histograma. Emplea unacuadrıcula (grid) que facilite la visualizacion de las coordenadas en el grafico.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 61

Page 63: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 24

Librerıas con funciones y graficos

estadısticos

24.1. Entrada de datos tabulados

tblread(datos.txt)−→ Lee los datos almacenados en el fichero datos.txt interpretando los nombres de

las variables (primera fila) y los nombres de los individuos (primera columna). Permite distintos caracterescomo delimitadores de campos (espacios en blanco, coma, punto y coma, etc.)

Ej.:[datos, nombresvariables, nombresindividuos] = tblread(’Demog.tex’);

datos, nombresvariables, nombresindividuos

24.2. Descripcion y exploracion grafica de datos

boxplot(A)−→ Dibuja un boxplot con los datos almacenados en cada una de las columnas de A (uno por

columna). Ej.:A=normrnd(0,1,10,2);boxplot(A)

lsline −→ Anade a un scatterplot la recta que mejor ajusta los puntos representados en el sentido demınimos cuadrados. Ej.:X=linspace(1,20,100);Y=3+(2.*X)+normrnd(0,3,1,100);plot(X,Y,’.’);

lsline;coef=polyfit(X,Y,1)

coef =

2.0053 2.9622

refline(m,c)−→ Anade la recta y = mx + c a la figura activa. Sin argumentos equivale a lsline. Ej.:

X=linspace(1,20,100);Y=3+(2.*X)+normrnd(0,3,1,100);plot(X,Y,’r.’);

refline;

refline(4,5);

62

Page 64: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

24Librerıas con funciones y graficos estadısticos

24.3. Descripcion analıtica de datos

tabulate(x)−→ Obtiene la tabla de distribucion de frecuencias de x. El argumento x debe ser un vector

de numeros naturales. Ej.:r = unidrnd(10,5,1)

r =

5

4

4

9

8

tabulate(r)

Value Count Percent

1 0 0.00%

2 0 0.00%

3 0 0.00%

4 2 40.00%

5 1 20.00%

6 0 0.00%

7 0 0.00%

8 1 20.00%

9 1 20.00%

nanmin(A), nanmax(A)−→ Calculan, respectivamente, el mınimo y el maximo de los datos que ocupan

cada una de las columnas (variables) de la matriz A. Los datos “missing” se omiten. Ej.:r = unidrnd(10,5,2)

r =

9 8

9 10

1 7

8 8

9 4

nanmin(r),nanmax(r)

ans =

1 4

ans =

9 10

range(A)−→ Calcula el rango de los datos que ocupan cada una de las columnas (variables) de la matriz

A. Ej.:r = unidrnd(10,5,2)

r =

1 3

3 5

4 9

9 2

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 63

Page 65: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

24Librerıas con funciones y graficos estadısticos

4 6

range(r)

ans =

8 7

median(A)−→ Calcula la mediana de los datos que ocupan cada una de las columnas (variables) de la

matriz A. Ej.:r = unidrnd(10,5,2)

r =

10 3

8 8

8 10

3 7

2 6

median(r)

ans =

8 7

iqr(A)−→ Calcula el rango intercuartılico de los datos que ocupan cada una de las columnas (variables)

de la matriz A. Ej.:r = unidrnd(10,5,2)

r =

5 10

3 2

1 1

3 4

2 7

iqr(r)

ans =

1.7500 6.0000

prdtile(A,p)−→ Calcula los percentiles designados en p (en porcentaje) para cada una de las columnas

(variables) de A. El resultado es una matriz cuya fila i-esima contiene los percentiles del p(i)% de cada unade las columnas de A. Ej.:r = unidrnd(10,5,2)

r =

6 8

5 7

9 1

9 2

5 5

prctile(r,[25;50;75])

ans =

5.0000 1.7500

6.0000 5.0000

9.0000 7.2500

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 64

Page 66: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

24Librerıas con funciones y graficos estadısticos

nansum(A), nanmean(A), nanmedian(A), nanstd(A)−→ Calculan, respectivamente, la suma, la media ar-

itmetica, la mediana y la (cuasi) desviacion estandar de los datos que ocupan cada una de las columnas(variables) de la matriz A. Los datos “missing” se omiten. Ej.:r = unidrnd(10,5,2)

r =

9 2

4 5

1 1

8 5

10 9

nansum(r),nanmean(r),nanmedian(r),nanstd(r)

ans =

32 22

ans =

6.4000 4.4000

ans =

8 5

ans =

3.7815 3.1305

cov(A)−→ Calcula la matriz de covarianzas asociada con las columnas (variables) de A. Ej.:

X=unifrnd(2,10,1,100);Y=normrnd(0,3,1,100);

cov([X;Y]’)

ans =

4.9814 -0.5150

-0.5150 11.6290

corrcoef(A)−→ Calcula la matriz de correlaciones asociada con las columnas (variables) de A. Ej.:

X=unifrnd(2,10,1,100);Y=2.*X+normrnd(0,2,1,100);

corrcoef([X;Y]’)

ans =

1.0000 0.9371

0.9371 1.0000

24.4. Distribuciones de probabilidad

binopdf(x,n,p)−→ Calcula las probabilidades de una distribucion binomial de parametros n y p en los

sucesos (componentes) de x. Ej.:binopdf(0:6,6,0.75)

ans =

0.0002 0.0044 0.0330 0.1318 0.2966 0.3560 0.1780

binocdf(x,n,p)−→ Evalua la funcion de distribucion de una distribucion binomial de parametros n y p en

cada una de las componentes de x. Ej.:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 65

Page 67: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

24Librerıas con funciones y graficos estadısticos

binocdf(0:6,6,0.75)

ans =

0.0002 0.0046 0.0376 0.1694 0.4661 0.8220 1.0000

binoinv(x,n,p)−→ Evalua la inversa de la funcion de distribucion (percentiles) de una distribucion bino-

mial de parametros n y p en cada una de las componentes de x. Ej.:binoinv(0:0.2:1,6,0.75)

ans =

0 4 4 5 5 6

binornd(n,p,m,k)−→ Calcula una matriz m×k formada por numeros aleatorios generados a partir de una

distribucion binomial de parametros n y p. Ej.:binornd(10,0.8,3,3)

ans =

8 10 6

6 9 10

7 9 9

binostat(n,p)−→ Calcula la esperanza y la varianza de una distribucion binomial de parametros n y p.

Ej.:[esperanza,varianza]=binostat(100,0.7)

esperanza =

70

varianza =

21.0000

exppdf(x,mu)−→ Calcula la funcion de densidad de una distribucion exponencial de parametro (esper-

anza) mu en cada una de las componentes de x. Ej.:y=exppdf(1:0.1:100,2);plot(1:0.1:100,y)

expcdf(x,mu)−→ Evalua la funcion de distribucion de una distribucion exponencial de parametro mu en

cada una de las componentes de x. Ej.:expcdf(1:10,2)

ans =

Columns 1 through 7

0.3935 0.6321 0.7769 0.8647 0.9179 0.9502 0.9698

Columns 8 through 10

0.9817 0.9889 0.9933

expinv(x,mu)−→ Evalua la inversa de la funcion de distribucion (percentiles) de una distribucion expo-

nencial de parametro mu en cada una de las componentes de x. Ej.:expinv(0:0.1:0.9,2)

ans =

Columns 1 through 7

0 0.2107 0.4463 0.7133 1.0217 1.3863 1.8326

Columns 8 through 10

2.4079 3.2189 4.6052

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 66

Page 68: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

24Librerıas con funciones y graficos estadısticos

exprnd(mu,m,k)−→ Calcula una matriz m×k formada por numeros aleatorios generados a partir de una

distribucion exponencial de parametro mu. Ej.:exprnd(2,3,3)

ans =

0.1126 11.5185 3.4466

0.9779 0.4539 1.2720

0.4894 0.8869 3.0397

expstat(mu)−→ Calcula la esperanza y la varianza de una distribucion exponencial de parametro mu.

Ej.:[esperanza,varianza]=expstat(2)

esperanza =

2

varianza =

4

24.5. Ejercicios

1. Comprueba los ejemplos introducidos en la seccion anterior y explica los resultados obtenidos.

2. Utiliza las funciones normpdf, normcdf norminv y normrnd para resolver las siguientes cuestiones:

a) Dibuja en un mismo grafico las funciones de densidad correspondientes a las distribuciones nor-males N(5, 1), N(5, 10) y N(10, 1).

b) Tabula la funcion de distribucion de una distribucion normal estandar para los valores z =0, 0,01, 0,02, . . . , 3,98, 3,99, 4.

c) Tabula los percentiles de una distribucion N(1, 3) correspondientes a las probabilidades p =0,01, 0,1, 0,2, . . . , 0,9, 0,99.

d) Genera un muestra de tamano 100 de una distribucion normal estandar y contabiliza medianteun diagrama de caja los valores outliers obtenidos.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 67

Page 69: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 25

Primeros graficos tridimensionales

plot3(x1,y1,z1,cad)−→ Dibuja un grafico 3-D que pasa por las coordenadas de los vectores x1, y1, z1.

La seleccion del estilo de lınea es opcional y se elige con cad1 Ej.:x=[245,972,167,165];y=[23,45,24,362];z=[1,2 3,4];

plot3(x,y,z,’ro--’);

plot3(X,Y,Z)−→ Dibuja graficos para cada columna de las matrices X, Y y Z, que deben tener el mismo

tamano.

25.1. Ejercicios

1. Dibuja en el espacio tridimensional una circunferencia que este contenida dentro del plano XY.Sugerencia: trabaja en dos dimensiones y anade una tercera coordenada nula.

2. Modifica convenientemente el ejercicio 2 de la hora 21 para construir un camino aleatorio en tresdimensiones.

3. Genera 120 numeros aleatorios entre 0 y 100. Considera que los valores obtenidos simulan el numerode ganadores mensuales de premios millonarios durante los ultimos 10 anos. Asigna a cada dato el mesy el ano correspondiente y representa los valores obtenidos mediante un dibujo en tres dimensiones.

1Ver tabla de la seccion 20.1, pagina 51.

68

Page 70: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 26

Dibujo de mallados

26.1. Dibujo de mallados

[U,V]=meshgrid(x,y)−→ Comando que obtiene una red adecuada para dibujar graficas tridimensionales

a partir de los vectores x e y. Ej.:x=[1 2]; y=[3 4];

[x,y]=meshgrid(x,y)

[U,V,W]=meshgrid(x,y,z)−→ Obtiene una red tridimensional.

mesh(Z)−→ Dibuja la matriz Z como tercera coordenada sobre una red rectangular y conecta los puntos

adyacentes creando una superficie. Ej.:subplot(2,1,1);

x=-1:.1:1;

y=x;

[x,y]=meshgrid(x,y);

z=x.^2+y.^2;

mesh(z);

subplot(2,1,2);

mesh(z);

hidden off;

mesh(U,V,Z)−→ Dibuja la matriz Z sobre los nodos de la red formada por U y V. Ej.:

U=4:8;V=1:3;Z=3*ones(3,5);

mesh(U,V,Z);

surf(X,Y,Z)−→ Dibuja la superficie especificada por X e Y, que toma los valores de Z. Si no se especifica

la red, se dibuja en una red uniforme.

[X,Y,Z]=cylinder(r,n)−→ Devuelve las coordenadas correspondientes a la superficie de un cilindro o un

cono. Los radios del cilindro se toman del vector r, que contienen los radios en n puntos equidistantes en eleje del cilindro. Si no se especifica n, se utiliza n = 20.

[X,Y,Z]=sphere(n)−→ Devuelve n coordenadas igualmente espaciadas sobre una esfera unidad. Ej.:

69

Page 71: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

26Dibujo de mallados

[X,Y,Z]=sphere(20);

surf(X,Y,Z);

26.2. Ejercicios

1. Dibuja la superficie definida por las siguientes funciones:

f(x, y) = sin(x) sin(y), (x, y) ∈ [0, π]× [0, π].

f(x, y) = x− 0,5x3 + 0,2y2 + 1, (x, y) ∈ [−3, 3]× [−3, 3].

f(x, y) = sin(√

x2+y2 )

x2+y2 , (x, y) ∈ [−8, 8]× [−8, 8].

2. Dibuja una superficie semejante a una chimenea de una central termica (hiperboloide hiperbolico).

3. Dibujar dos circunferencias intersecadas.

4. Dibujar los cinco aros olımpicos.

5. Repite el ejercicio 3 de la hora 25 guiandote con las siguientes indicaciones:

a) Guarda los datos simulados en una matriz 10×12 (logicamente, las filas hacen referencia al anoy las columnas al mes).

b) Utiliza el comando meshgrid y construye una red de referencia.

c) Emplea los comandos mesh y surf para obtener la representacion grafica solicitada.

¿Que diferencias observas respecto al dibujo realizado con el comando plot3?

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 70

Page 72: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 27

Control de la ventana y de los graficos

tridimensionales

27.1. Control de graficos tridimensionales

axis −→ Identico al utilizado con graficos bidimensionales.

title, xlabel, ylabel, zlabel, text, gtext, legend, ginput, grid, . . .−→ Identicos a los utilizados con graficos

bidimensionales (gtext y ginput solo funcionan en determinadas versiones).

hidden on, hidden off−→ Mantiene las lıneas posteriores ocultas o no dependiendo que utilicemos on u

off.

27.2. Control de la ventana grafica tridimensional

hold, subplot, . . .−→ Identicos a los utilizados con graficos bidimensionales (gtext y

view(v,h)−→ Establece el punto de vista de la grafica. El escalar v determina el angulo azimutal y el

escalar h el angulo de elevacion.

[v,h]=view−→ Devuelve el punto de vista actual mediante el angulo azimutal y el angulo de elevacion.

view(r)−→ Situa el punto de vista en la posicion r=[x y z]. Ej.:

subplot(2,1,1);

X1=[0 1 0];Y1=[0 0 1]; Z1=[1 0 0];

X2=[0 0 0];Y2=[0 1 0]; Z2=[1 0 0];

X3=[0 1 0];Y3=[0 0 0]; Z3=[1 0 0];

X4=[1 0 0];Y4=[0 1 0]; Z4=[0 0 0];

fill3(X1,Y1,Z1,’r’,X2,Y2,Z2,’b’,X3,Y3,Z3,’g’,X4,Y4,Z4,’y’);

grid;

subplot(2,1,2);

fill3(X1,Y1,Z1,’r’,X2,Y2,Z2,’b’,X3,Y3,Z3,’g’,X4,Y4,Z4,’y’);

grid;

71

Page 73: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

27Control de la ventana y de los graficos tridimensionales

view(196,30);

27.3. Ejercicios

1. Anade las siguientes caracterısticas al camino aleatorio tridimensional construido en el ejercicio 2 dela hora 25:

Tıtulo: “Camino aleatorio en el espacio”.

Los ejes estan etiquetados por la expresiones “eje x”, “eje y” y “eje z”.

Los puntos inicial y final del camino estan senalados con las etiquetas “comienzo” y “final”respectivamente.

Utiliza el comando gtext para aproximar las coordenadas del punto mas alto.

2. Dibuja, en el plano, la circunferencia x2+y2 = 1. Posteriormente anade el comando view([1,0.6,0.35]).¿Que observas?

3. Anade las siguientes caracterısticas a la representacion realizada en el ejercicio 3 de la hora 25:

a) Etiqueta los ejes con “anos”, “meses” y “acertantes” segun corresponda.

b) Titula la representacion mediante “Comando plot3”.

4. Anade las siguientes caracterısticas a la representacion realizada en el ejercicio 5 de la hora 26:

a) Etiqueta los ejes con “anos”, “meses” y “acertantes” segun corresponda.

b) Titula las representaciones mediante “Comando mesh” y “Comando surf” segun corresponda.

5. Realiza las siguientes operaciones:

a) Obten 120 datos aleatorios como en el ejercicio 3 de la hora 25. Almacenalos en el vector v y enuna matriz A de tamano 10×12.

b) Divide la pantalla grafica en cuatro zonas mediante el comando subplot.

c) En la primera zona representa el resultado del ejercicio 3 anterior.

d) En la segunda zona representa el resultado del ejercicio 3 anterior, pero utilizando marcadoresdistintos para los puntos representados.

e) En la tercera zona representa uno de los graficos representados en el ejercicio 4 anterior.

f ) En la cuarta zona representa el otro dibujo obtenido en el ejercicio 4 anterior.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 72

Page 74: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 28

Dibujo de poliedros y de lıneas de

contorno

28.1. Dibujo de poliedros

fill3(x,y,z,c)−→ Dibuja el poliedro con vertices dados por los vectores x,y,z. El poliedro se rellena con

el color dado por c.

28.2. Dibujo de lıneas de contorno

C=contour(x,y,Z,n), C=contour(x,y,Z,v)−→ Dibuja las curvas de nivel de la matriz Z en n niveles

especificados en el vector v sobre la red determinada por los puntos x, y. Si no se concreta n se dibujan 10niveles. Si se omite la red x, y, entonces MATLAB emplea una red uniforme. C es la matriz de contorno.

clabel(C)−→ Escribe los valores de los niveles que representan las curvas de nivel. Las posiciones son

aleatorias. C es la matriz de contorno. Se pueden especificar los niveles, con un vector v. Ej.:r=10:-0.1:0;

[X,Y,Z]=cylinder(r,100);

v=linspace(0,1,15);

C=contour(X,Y,Z,v);

clabel(C);

meshc(U,V,Z)−→ Actua igual que mesh, incluyendo las curvas de nivel bajo el grafico.

surfc(U,V,Z)−→ Actua igual que surf, incluyendo las curvas de nivel bajo el grafico. Ej.:

x=-8:0.5:8;

y=x;

[XX,YY]=meshgrid(x,y);

r=sqrt(XX.^2+YY.^2)+eps;

z=sin(r)./r;

subplot(2,1,1);

73

Page 75: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

28Dibujo de poliedros y de lıneas de contorno

meshc(z);

title(’sin(r)/r)’);

subplot(2,1,2);

surfc(z); title(’sin(r)/r)’);

28.3. Ejercicios

1. Sea la superficie definida mediante la ecuacion z = x2/4− y2/9. Se pide:

a) Dibujar la superficie en la red determinada por las abcisas x = −10 : 1 : 10 y las ordenadasy = −20 : 1 : 20 empleando el comando surf.

b) Dibujar las curvas de nivel asociadas a los valores v = −50 : 5 : 50.

c) Representar los dos graficos anteriores, uno encima del otro.

d) Representar los dos graficos anteriores en la misma ventana utilizando el comando surfc.

e) Dibujar la superficie en la red determinada por las abcisas x = −10 : 0,5 : 10 y las ordenadasy = −20 : 0,5 : 20 empleando el comando mesh.

f ) Representar la superficie con el comando meshc.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 74

Page 76: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 29

Librerıas relacionadas con graficos

bidimensionales y tridimensionales

SPECGRAPH: graficos especiales.

area(X)−→ Dibuja las sumas acumuladas de las distintas columnas que forman la matriz X y

colorea las areas situadas entre las graficas representadas. Ej.:X=[1,2,3;4,5,6;7,8,9]

X =

1 2 3

4 5 6

7 8 9

area(X),grid

bar(X)−→ Representa el diagrama de barras asociado con las frecuencias contenidas en X. Se

considera que los valores de una misma fila hacen referencia a la misma categorıa. Ej.:X=[1,2,3;4,5,6;7,8,9];

bar(X)

barh(X)−→ Igual que el anterior. La unica diferencia es que las barras se representan horizontal-

mente. Ej.:X=[1,2,3;4,5,6;7,8,9];

barh(X)

bar3(X)−→ Representa el diagrama de barras tridimensional asociado con las frecuencias contenidas

en X. Se considera que los valores de una misma fila hacen referencia a la misma categorıa. Ej.:X=[1,2,3;4,5,6;7,8,9];

bar3(X)

bar3h(X)−→ Igual que el anterior. La unica diferencia es que las barras se representan horizontal-

mente. Ej.:X=[1,2,3;4,5,6;7,8,9];

bar3h(X)

75

Page 77: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

29Librerıas relacionadas con graficos bidimensionales y tridimensionales

pareto(x,e)−→ Dibuja un diagrama de Pareto con las frecuencias descritas en el vector x y las

etiquetas contenidas en el vector e. Ej.:x=[3;14;1;7];

tiposdefallo=[’ desgaste ’;’ rotura ’;’desencaje ’;’dilatacion’];

pareto(x,tiposdefallo)

pie(x,e)−→ Dibuja un diagrama de sectores con las frecuencias descritas en el vector x y las etiquetas

contenidas en el vector e. Ej.:pie([2 4 3 5],{’North’,’South’,’East’,’West’})

pie3(x,d,e)−→ Dibuja un diagrama de sectores con las frecuencias descritas en el vector x y las

etiquetas contenidas en el vector e. Las componentes del vector d indican si los correspondientessectores se separan del centro del cırculo (valor 1) o no (valor 0). Ej.:pie3([2 4 3 5],[0 1 1 0],{’North’,’South’,’East’,’West’})

plotmatrix(X)−→ Dibuja scatterplots para cada par de columnas de la matriz X. En la diagonal

representa histogramas relativos a los datos contenidos en las correspondientes columnas de la matrizX. Ej.:x = randn(50,3); Y = x*[-1 2 1;2 0 1;1 -2 3;]’;

plotmatrix(Y,’*r’)

stem()−→ Actua como la funcion plot(). La unica diferencia es que se representa la proyeccion

ortogonal sobre el eje de abscisas de cada uno de los puntos dibujados. Ej.:x=linspace(0,5,20);y=exp(-x);

stem(y)

stem3()−→ Actua como la funcion plot3(). La unica diferencia es que se representa la proyeccion

ortogonal sobre el plano XY de cada uno de los puntos dibujados. Ej.:x = linspace(0,1,10);y=x./2;z=sin(x)+cos(y);

stem3(x,y,z,’fill’)

scatter(x,y,s,c)−→ Dibuja cırculos coloreados en las coordenadas especificadas a traves de las com-

ponentes de los vectores x e y. El vector (o escalar) s determina el tamano de dichos cırculos y ccontiene el color (o colores) de cada uno de ellos. Ej.:x = linspace(0,1,10);y=normrnd(2,3,1,10);

scatter(x,y,15,’r’)

scatter3(x,y,z,s,c)−→ Igual que el anterior, pero en el espacio. Ej.:

x = linspace(0,1,50);y=x;[u,v]=meshgrid(x,y);z=normrnd(2,3,2500,1);

scatter3(u(:),v(:),z,1)

stairs()−→ Actua como la funcion plot(). La unica diferencia es que los puntos representados se

unen “en escalera”. Ej.:x=-10:1:10;y=x.^2;stairs(x,y)

29.1. Ejercicios

Comprueba los ejemplos introducidos en la seccion anterior y explica los resultados obtenidos.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 76

Page 78: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 30

Copia de la ventana grafica y encuesta

final

30.1. Copia de la ventana grafica

print nombre−→ Envıa el contenido de la ventana grafica activa a un fichero llamado nombre.ps. Si

no se especifica ningun fichero, entonces el grafico se imprime. Ej.:x=-pi:0.1:pi;

y=sin(x);

plot(x,y);

print dibujo;

print -djpeg nombre−→ Envıa el contenido de la ventana grafica activa a un archivo con formato jpg

llamado nombre.

print -dbitmap nombre−→ Envıa el contenido de la ventana grafica activa a un archivo con formato bmp

llamado nombre.

orient cadena −→ Establece la orientacion que utiliza MATLAB antes de imprimir con el comando print.Si cadena es landscape se imprime en apaisado. Si es portrait se imprime en vertical. Si es tall se imprimeen vertical y a una escala que llena el papel. Si no se especifica devuelve la orientacion actual en una cadena.

30.2. Ejercicios

1. Recupera las representaciones realizadas en el ejercicio 1 de la hora 28 y resuelve las siguientes cues-tiones.

a) Grabar la ventana grafica obtenida en el apartado (1d) en el fichero pilardel.ps con formatopostscript. Abrir el fichero anterior con el VisorPS.

b) Grabar la ventana grafica obtenida en el apartado (1d) en el fichero pilardel.ps con formatopostscript apaisado. Abrir el fichero anterior con el VisorPS.

c) Grabar la ventana grafica obtenida en el apartado (1f ) en el fichero castillo.jpg con formatojpg. Abrir el fichero anterior con el programa Image Viewer.

77

Page 79: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 31

Estructura de seleccion case

31.1. Estructura de seleccion case

switch expresioncase valor de la expresion...% secuencia de comandoscase valor de la expresion...% secuencia de comandoscase valor de la expresion...% secuencia de comandosotherwise...% secuencia de comandosend

Ej.:

function f = f(X,N)

switch N

case 1

f = X^1;

disp(’Potencia primera’)

case 2

f = X^2;

disp(’Potencia segunda’)

case 1.5

f = X^1.5;

disp(’Raiz cuadrada’)

otherwise

f = 0;

disp(’No es ningun caso de los anteriores’)

end

78

Page 80: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

31Estructura de seleccion case

31.2. Ejercicios

1. Definir una base de funciones llamada f.m que tome los siguientes valores

a)f1(x) = sin(x2 + log(|x|))

b)

f2(x) =x3 − 3x2 + 2x− 1

x2 + 2

c)

f3(x) =100∑j=0

xj

d)

f4(x) =100∏j=1

xj

(Desarrollar la funcion de manera que pueda realizar todas operaciones vectorialmente). Usando estafuncion, desarrollar un programa que dibuje cada una de las funciones anteriores en una sola ventana(cada una de las funciones en una subventana de las cuatro en las que dividiremos la ventana principal)

2. Definir una funcion fac.m que devuelva lo siguiente:

1 si n = 0

1 is n = 1

n! si n ≥ 2

un mensaje de error si n < 0 o no es entero.

(Recomendacion: combinar la estructura case con la la estructura if )

3. Para encontrar los terminos de las soluciones de las recurrencias

(1) yn+3 − 5yn+2 + 3yn+1 − yn = n, n ≥ 0,

(2) 5yn+3 + (yn+1)2 − log(yn) = sin(n), n ≥ 0,

(3) nynyn+3 + yn+2yn+1 = 1, n ≥ 0,

con y0 = 1, y1 = 2 e y2 = 3 se propone desarrollar una base de recurrencias, similar a lo que se hahecho en el primer ejercicio, y una funcion llamada recurrencia.m que nos permita calcular el terminon−esimo de la recurrencia seleccionada (podemos suponer que el usuario da valores enteros y positivosal argumento de la funcion).

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 79

Page 81: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 32

Debugger

32.1. Opciones del debugger de MATLAB

dbstop−→ Permite fijar un punto de interrupcion (breakpoint) en el programa.

dbclear −→ Permite borrar un punto de interrupcion fijado previamente.dbcont −→ Continua la ejecucion del programa bajo las condiciones fijadas previamente.dbdown −→ Cambia el entorno del espacio de trabajo.dbmex −→ Permite la posibilidad de realizar una depuracion (debugging) de ficheros MEX.dbstack −→ Muestra la localizacion completa del programa que se esta ejecutando junto con la lınea en laque se ha interrumpido el programa.dbstatus −→ Muestra un listado de los puntos de interrupcion que hemos fijado.dbstep

−→ Ejecuta una o varias lıneas de comandos hasta el siguiente punto de interrupcion.dbtype

−→ Muestra en ventana el fichero *.m que se esta ejecutando con las lıneas numeradas.dbup

−→ Cambia el entorno del espacio de trabajo.dbquit

−→ Termina la ejecucion del programa en modo debugger.

Algunas de estas funciones se pueden manejar desde la barra de herramientas o bien desde las opcionesde menu mediante las teclas siguientes:

dbstop−→ F8 o desde las opciones de menu.

dbclear −→ F8 o desde las opciones de menu.dbcont −→ F5 .dbstep

−→ F6 .dbquit

−→ (Desde las opciones de menu).Step by step In−→ F7 .

80

Page 82: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

32Debugger

Step by step Out−→ Shift + F7 .Stop if error−→ Interrumpe el programa si encuentra un error (desde las opciones de menu).Stop if warning−→ Interrumpe el programa si encuentra un mensaje de atencion (desde las opciones demenu).Stop if NaN or Inf−→ Interrumpe el programa si aparece una indeterminacion matematica o un infinito(desde las opciones de menu).Step by step Out−→ Interrumpe el programa en cualquiera de los casos anteriores (desde las opciones demenu).

32.2. Ejercicios

Determinar con la ayuda del debugger por que las funciones prg1.m, prg2.m y prg2.m no devuelvenresultado alguno (Observar que en la ultima lınea de cada una de ellas deberıa de mostrar el resultado delos calculos). Utilizar, ademas, los warning para detener el programa cuando se produzca algun error en laejecucion.

function prg1=prg1(N)

K=10*N;

J=-1;

while K < 10000

J=J+1;

U(J)=factorial(N);

for M=1:1:U(J)

U(J)=U(J)+prg2(M)+M;

X=prg3(U(J));

end;

end;

prg1=U+X % Salida de datos

function prg2=prg2(X)

for J=-3:1:3

X=X/J;

end;

for J=1:1:100

U=sin(J);

J=J-1;

end;

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 81

Page 83: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

32Debugger

prg2=X/2 % Salida de datos

function prg3=prg3(X)

for J=X:1:-3

prg3=X/J;

end;

X % Salida de datos

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 82

Page 84: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 33

Creacion de librerıas

33.1. Programacion modular

Main program

Function 1 Function 2 Function 3 · · · Function N

Crear librerıa−→ File/Set path [Add folder] (desde las opciones de menu).Eliminar librerıa−→ File/Set path [remove] (desde las opciones de menu).

33.2. Ejercicio

Problema: Sea una matriz A, 4× 4, de ceros. Se pretende encontrar una distribucion de 7 unos en A demodo que al eliminar 2 filas y 2 columnas cualesquiera siempre quede algun uno (se puede demostrar quecon menos de 7 esto no es posible pero con 7 sı).

Se pide programar una funcion que nos permita encontrar las distribuciones de 7 unos en la matriz A queresuelvan el problema anterior. Para ello, vamos a partir de ciertas premisas que razonablemente se puedensuponer:

En cada una de las filas y cada una de las columnas no puede haber mas de 2 unos.

Puede haber otras distribuciones que resuelvan el problema y que no verifiquen la premisa anterior.

El algoritmo que se pretende implementar no es nesariamente optimo, tampoco es lo que se pretendeen este ejercicio.

Para ello vamos estructurar la programacion de la funcion pedida como sigue

Pr. principal: pr.m

Funcion distribuciones.m Funcion matval.m

donde cada funcion se describe a continuacion:

83

Page 85: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Nota

1. Partiendo de la matriz

U(:, :, 1) =

1 1 0 01 1 0 01 1 0 01 0 0 0

almacenar en las sucesivas U(:, :, J) todas las posibles distribuciones de unos manteniendo en cada filael numero de unos que hay en U(:, :, 1).

Datos de entrada de la funcion distribuciones.m:Ninguno.

Datos de salida de distribuciones.m:U −→ la matriz con las posibles distribuciones de unos.M −→ el numero de matrices que han resultado

2. Programar una funcion matval.m que permita reconocer si una matriz es solucion del problema o no.

Datos de entrada de la funcion matval.M:A −→ matriz 4× 4 de unos y ceros.

Datos de salida de matval.m:A −→ si la matriz es solucion del problema y la matriz identicamente cero, A = 0, si no es soluciondel problema.

3. Programar una funcion con el nombre de pr.m que llamando a las anteriores encuentre todas lasposibles soluciones del problema planteado, mostrando por pantalla las que efectivamente sean soluciondel problema.

4. Crear una librerıa propia con las funciones programadas en los ejercicios anteriores en un subdirectoriode la cuenta propia de cada uno llamado ejercicio. Probar a situarse en el directorio raiz propio(bajo MATLAB) y comprobar que se ha creado apropiadamente la librerıa ejecutado la funcion desdeallı.

NOTA: las funciones resaltadas con estan disponibles en el paquete base de MATLAB y las resaltadas

mediante solo estan disponibles en la tolboox stats de MATLAB.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 84

Page 86: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 34

Estadıstica Descriptiva

34.1. Lectura y escritura en formato tabular

[datos,var,indiv]=tblread→Permite la lectura de datos almacenados en un fichero externo en forma

tabular. Los ficheros con este formato presentan tres caracterısticas:

1. La primera fila almacena los nombres de las variables.

2. La primera columna contiene los nombres o ındices de los individuos o casos considerados.

3. Los campos se separan mediante un caracter delimitador de los mismos.

La ejecucion de esta funcion abre la ventana open (para que el usuario seleccione el nombre del ficherotabular que quiere leer) y devuelve tres variables: datos, que contiene los registros de cada par individuo-variable, var, con los nombres de las variables e indv, con los nombres de los individuos o casos registradosen el fichero.

Esta funcion admite dos argumentos opcionales, uno para especificar directamente el nombre del archivo delectura y otro para indicar el delimitador empleado en dicho fichero (MATLAB asume por defecto que eldelimitador utilizado es un espacio en blanco). Se aceptan los siguientes caracteres como delimitadores decampos: ’ ’, ’\t’, ’,’, ’;’, ’!’, o sus correpondientes nombres: ’space’, ’tab’, ’comma’, ’semi’, ’bar’.

tblwrite(datos,var,indiv)→Permite la escritura de datos en un fichero externo en forma tabular. La

ejecucion de esta funcion abre una ventana save (para que el usuario seleccione el nombre del fichero quequiere crear) y construye un archivo tabular con var como nombre de las variables (primera fila), indivcomo nombre de los individuos o casos (primera columna) y con datos como matriz de registros de cadapar individuo-variable.

Esta funcion admite dos argumentos opcionales, uno para especificar directamente el nombre del archivo delectura y otro para indicar el delimitador empleado en dicho fichero (MATLAB asume por defecto que eldelimitador utilizado es un espacio en blanco). Se aceptan los siguientes caracteres como delimitadores decampos: ’ ’, ’\t’, ’,’, ’;’, ’!’, o sus correpondientes nombres: ’space’, ’tab’, ’comma’, ’semi’, ’bar’.

85

Page 87: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

34.2. Tabulacion de datos

tabla=tabulate(v)→Obtiene la tabla de distribucion de frecuencias de v. El argumento debe ser un

vector de numeros naturales.

[tabla, χ2, p]=crosstab(v1,v2)→Toma dos vectores de numeros naturales y calcula su tabulacion

cruzada. El elemento (i, j) de tabla contiene la frecuencia de aparicion del par (i, j). Esta funcion admite dosargumentos de salida adicionales que almacenan el estadıstico χ2 y el p-valor del contraste de independenciacorrespondiente.

34.3. Medidas de localizacion

v=mean(X) →Media aritmetica.

v=nanmean(X)→Se diferencia de la anterior en que prescinde de los valores nan.

v=median(X) →Mediana.

v=nanmedian(X)→Se diferencia de la anterior en que prescinde de los valores nan.

v=trimmean(X,p)→Media recortada. El porcentaje de recorte se indica con el escalar p ∈ [0, 100]. La

media se calcula prescindiendo del p2 % de los datos menores y mayores.

v=geomean(X)→Media geometrica.

v=harmmean(X)→Media armonica.

NOTAS sobre estas medidas:

1. Se calculan sobre cada una de las columnas de X.

2. Admiten como argumento un vector.

34.4. Medidas de orden

[Y,v]=min(X) →Mınimo. El vector v contiene los ındices correspondientes a los valores mınimos encon-trados. Si se alcanza varias veces en una misma columna entonces solo muestra el primero.

X=min(X1,X2) →Compara las matrices X1 y X2 elemento a elemento y devuelve el mınimo encontradoen cada comparacion.

[Y,v]=max(X) →Maximo. El vector v contiene los ındices correspondientes a los valores maximos encon-trados. Si se alcanza varias veces en una misma columna entonces solo muestra el primero.

X=max(X1,X2) →Compara las matrices X1 y X2 elemento a elemento y devuelve el maximo encontradoen cada comparacion.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 86

Page 88: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

Y=prctile(X,p)→Calcula los percentiles indicados en el vector p en cada una de las columnas de la

matriz X. Concretamente, la i-esima fila de Y contiene el p(i) percentil de cada una de las columnas de X.Las componentes de p pertenecen al intervalo [0, 100].

34.5. Medidas de dispersion

v=var(X) →Obtiene un vector fila cuyas componentes son la cuasivarianza muestral de cada una de lascolumnas de X.

v=var(X,1) →Obtiene un vector fila cuyas componentes son la varianza muestral de cada una de lascolumnas de X.

v=std(X) →Vector fila con la cuasidesviacion estandar muestral de las columnas de X.

v=nanstd(X)→Se diferencia de la anterior en que prescinde de los valores nan.

v=std(X,1) →Vector fila con la desviacion estandar muestral de las columnas de X.

v=range(X)→Recorrido.

v=iqr(X)→Rango intercuartılico

v=mad(X)→Desviacion absoluta media

34.6. Otras funciones

[X2,v]=sortrows(X1) →Ordena las filas de X1 en orden ascendente tomando como referencia las compo-nentes de la primera columna de X1 y en caso de empate, las siguientes columnas en el orden natural. v esun vector de ındices que describe como se ha realizado la ordenacion.

[X2,v2]=sortrows(X1,v1) →Ordena las filas de X1 en orden ascendente tomando como referencia las com-ponentes de la columna de X1 indicada en el primer ındice del vector v1 y en caso de empate, las siguientescolumnas indicadas en v1. v2 es un vector de ındices que describe como se ha realizado la ordenacion.

[X2,I]=sort(X1) →Ordena de modo creciente cada una de las columnas de X1. La matriz I describe laordenacion realizada en cada columna.

cumsum →Suma acumulada.

[medias,dem,freq] = grpstats(X,niveles,α)→ niveles es un vector columna con numeros naturales que

indica la poblacion o grupo al que pertenece cada una de las filas de X. Esta funcion almacena en medias

la media de cada columna de X y en cada una de las poblaciones consideradas. La variable dem contiene elerror estandar de cada una de las medias calculadas. freq guarda las frecuencias de cada grupo en cadauna de las columna de X. Finalmente, si se indica un nivel de confianza α entonces la funcion representa losintervalos de confianza de nivel 1− α correspondientes a cada columna y poblacion.

v=skewness(X)→Asimetrıa.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 87

Page 89: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

v=kurtosis(X)→Kurtosis (sin referencia a la normal).

v=moment(X,c)→Calcula el momento respecto de la media de orden c en cada una de las columnas

de X.

X2=cov(X1)→Matriz de covarianzas de X1. Se emplea como cociente a n−1. Para utilizar el cociente

n es necesario incluir el argumento 1.

X=cov(v1,v2)→Matriz de covarianzas de [v1(:) v2(:)]. Se emplea como cociente a n − 1. Para

utilizar el cociente n es necesario incluir el argumento 1.

X2=corrcoef(X1)→Matriz de correlaciones de X1.

34.7. Representaciones graficas

pie(x,sep,etiq) →Representa el diagrama de sectores de los datos almacenados en x. El argumento sep

es un vector de ceros y unos. Si sep(i)=0 entonces el sector correspondiente a la frecuencia x(i) tiene elvertice en el centro. Si sep(i)=1 entonces el sector correspondiente a la frecuencia x(i) tiene el verticeseparado ligeramente del centro. La variable etiq es un argumento opcional que contiene las etiquetas delas categorıas representadas.

pie3((x,sep,etiq)) →Diagrama de sectores tridimensional. Sus argumentos son analogos a los anteriores.

stem(...) →Representa un diagrama de barras. Concretamente:

stem(X): Representa un diagrama de barras para cada una de las filas de X.

stem(X,Y): Representa los pares (X(i,j),Y(i,j)) mediante un diagrama de barras.

stem(...,’relleno’): El argumento opcional ’relleno’ especifica el color utilizado.

stem3 →Diagrama de barras tridimensional. Sus argumentos y el resultado que producen son analogos alos anteriores.

bar(...) →Diagrama de rectangulos. Sus argumentos y el resultado que producen son:

1. bar(v): Representa un rectangulo para cada componente de v. El rectangulo i-esimo tiene altura v(i).

2. bar(X): Representa un grupo de size(X,2) rectangulos para cada fila de X.

3. bar(x,v), bar(x,X): Se diferencia de las representaciones anteriores en que los rectangulos se loca-cilizan en las abcisas especificadas en x.

4. barh(...): Se diferencia de las representaciones anteriores en que los rectangulos se dibujan horizon-talmente.

Las funciones anteriores admiten tres argumentos opcionales: bar(...,anchura,’estilo’,aspecto). an-chura establece la separacion de los rectangulos dentro de cada grupo. Con anchura=1 se elimina dichaseparacion. El valor por defecto es 0.8. ’estilo’ determina el modo en el que se dibujan los rectangulosdentro de los grupos y sus valores pueden ser ’stack’ (para representaciones apiladas) y ’group’ (para

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 88

Page 90: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

representaciones sin apilar). Finalmente, aspecto incide sobre los colores, el estilo y la anchura de lıneautilizados, etc.

bar3(...),bar3h(...) →Diagrama de rectangulos tridimensional. Sus argumentos y el resultado que pro-ducen son analogos a los anteriores. ’estilo’ admite el argumento adicional ’detached’ para producir larepresentacion espacial habitual.

pareto(v,nombres) →Dibuja un diagrama de Pareto. La variable nombres contiene las nombres de lascategorıas que se quieren representar y la variable v almacena las frecuencias de cada una de ellas.

hist(...) →Histograma. Sus argumentos y el resultado que producen es:

hist(v): Dibuja el histograma resultante de un agrupamiento en 10 clases iguales que se extiendenentre los valores mınimo y maximo de v.

hist(v,x): Dibuja el histograma resultante de un agrupamiento en length(x) clases centradas en loselementos de x.

hist(v,n): Dibuja el histograma resultante de un agrupamiento en n clases iguales que se extiendenentre los valores mınimo y maximo de v.

[v,agrup]=hist(...): v contienen las frecuencias de cada clase y agrup los centros de dichas clases.

La funcion hist admite una matriz como argumento. En este caso la funcion se evalua en cada columna ylos resultados se dibujan por grupos en cada clase del agrupamiento empleado.

[v2,ind]=histc(v1,limites) →Realiza el agrupamiento determinado por la particion [limites(k),li-

mites(k+1)) (la ultima clase es termina en limites(end)). v2 contiene la frecuencia de cada clase e ind losindices que localizan la clase a la que pertenece cada elemento de v1. El histograma se representa mediantebar(v1,n,’histc’).

stairs(X) →Dibuja un grafico “en escalera” para cada una de las columnas de X.

stairs(X1,X2) →Se diferencia del anterior en que la matriz X2 explicita las abcisas.

scatter(x,y,s,c,’filled’) →Representa la nube determinada por los puntos de coordenadas (x(i),y(i)). sy c son argumentos opcionales que indican el tamano y el color de los puntos representados. ’filled’ seutiliza para rellenar dichos puntos.

scatter3(x,y,z,s,c,’filled’) →Scatterplot tridimensional. Sus argumentos y el resultado que producen sonanalogos a los anteriores.

plotmatrix(X1,X2) →Representa la nube de puntos determinada por cada par de columnas X1(:,i),X2(:,j).plotmatrix(Y) coincide con plotmatrix(Y,Y) excepto en que la diagonal se sustituye por hist(Y(:,i)).

boxplot(X,notch,’simb’,vert,lb)→Diagrama de caja. Sus argumentos son:

X: matriz de datos. Se representa un diagrama de caja para cada columna de X.

notch=0 es el valor por defecto y representa una caja rectangular. Con notch=1 se dibuja la caja con“muesca”.

’simb’ contiene el sımbolo utilizado para representar los datos outliers. Por defecto toma el valor’simb’=’+’.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 89

Page 91: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

vert=1 es el valor por defecto y representa cajas verticales. Con vert=0 se dibujan cajas horizontales.

lb determina la longitud de los “bigotes” en unidades del rango intercuartılico. lb=1.5 es el valor pordefecto.

gline(fig)→Dibuja interactivamente una recta en la ventana grafica fig. gline() hace referencia a

la ventana grafica activa.

refline(a,b)→Anade la recta y = ax + b a la figura actual.

lsline →Anade la recta de ajuste mınimo cuadratica a un Scatterplot.

normplot(X)→Representa el plot de normalidad de cada una de las columnas de X.

qqplot(X,Y,pvec)→Representa el plot cuantil-cuantil para los pares de muestras X(:,j),Y(:,j). El

argumento opcional pvect se utiliza para especificar los percentiles empleados en la representacion.

refcurve(p)→Anade a la figura actual la grafica del polinomio p. Para especificar dicho polinomio se

utiliza un vector cuyas componentes son los coeficientes del mismo comenzando con el asociado a la potenciade mayor grado.

errorbar(X,Y,L,U,simbol) →Representa los puntos (X(i,j),Y(i,j)) y prolongaciones verticales deter-minadas por los puntos (X(i,j),X(i,j)-L(i,j)) y (X(i,j),X(i,j)+U(i,j)). simbol es una cadena quecontrola el tipo de lınea, el sımbolo y el color de las barras de error dibujadas. Los argumentos X, U y simbol

se pueden suprimir.

34.8. Ejercicios

1. Importar el fichero de datos Demog.tex.

2. a) Crea una funcion para averiguar si una muestra de datos contiene valores atıpicos, siguiendo elcriterio utilizado en el Box-plot.

b) Construye una funcion que devuelva

La media y la desviacion estandar de los datos si en la muestra no existen outliers o

La mediana y el rango intercuartılico de los datos si en la muestra hay outliers.

3. Crea una funcion que construya una tabla de percentiles con dos columnas. La primera debe contenerel porcentaje de cada uno de ellos y la segunda el percentil correspondiente.

4. He aquı datos de 8 escuelas de secundaria sobre el consumo de tabaco entre los estudiantes y entre suspadres:

Estudiantes Estudiantesfumadores no fumadores

Los dos padres fuman 400 1380Solo uno de los padres fuma 416 1823Ninguno de los padres fuma 188 1168

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 90

Page 92: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

34Estadıstica Descriptiva

Representa estos datos en un diagrama de barras. Anade tıtulo y una leyenda con el nombre de lascategorıas representadas.

5. Representa los siguientes datos en un histograma:

12, 14, 7, 8, 11, 1, 6, 8, 7, 3, 7, 7, 13, 4, 13, 11, 13, 11, 5,−3000

Utiliza las siguientes clases:(−∞, 0], (0, 3], (3, 10], (10, 14].

6. Construye una funcion que realize la tabla de distribucion de frecuencias de un conjunto de numerosnaturales. Dicha tabla debe contener las frecuencias absolutas, relativas, absolutas acumuladas y re-lativas acumuladas.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 91

Page 93: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 35

Modelos de Probabilidad

35.1. Modelos de probabilidad implementados en MATLAB

MATLAB tiene implementadas las siguientes distribuciones de probabilidad (entre parentesis se muestrauna sintaxis equivalente o abreviada):

Beta (beta) Binomial (bino)

Chisquare (chi2) Exponential (exp)

F (f) Gamma (gam)

Geometric (geo) Hipergeometric (hyge)

Lognormal (logn) Negative Binomial (nbin)

Noncentral F (ncf) Noncentral t (nct)

Noncentral Chi-square (ncx2) Normal (norm)

Poisson (poiss) Rayleigh (rayl)

T (t) Uniform (unif)

Discrete Uniform (unid) Weibull (weib)

Para cada una de ellas MATLAB calcula la funcion de densidad o probabilidad (segun que el modelo seacontinuo o discreto), su media y varianza, la funcion de distribucion, la inversa de la funcion de distribucion(percentiles) y genera numeros pseudoaleatorios.

35.2. Funcion de Densidad/Probabilidad

Y = pdf(’nombre’,X,A1,A2,A3)→Calcula las ordenadas de la funcion de densidad/probabilidad del

modelo ’nombre’ con los parametros especificados en las matrices A1, A2 y A3 (dependiendo de la distribucionalgunos de estos parametros pueden ser innecesarios) en las abcisas especificadas como elementos de la matriz

92

Page 94: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

35Modelos de Probabilidad

X. Los argumentos X, A1, A2 y A3 deben tener todos el mismo tamano excepto valores escalares (que funcionancomo matrices constantes con el mismo tamano que el resto de los argumentos).

35.3. Funcion de Distribucion

Y = cdf(’nombre’,X,A1,A2,A3)→Calcula las ordenadas de la funcion de distribucion del modelo

’nombre’ siguiendo las pautas descritas anteriormente.

35.4. Inversa de la Funcion de Distribucion (percentiles)

Y = icdf(’nombre’,X,A1,A2,A3)→Calcula los percentiles del modelo ’nombre’ siguiendo las pautas

descritas inicialmente.

35.5. Numeros aleatorios

Y = random(’nombre’,A1,A2,A3,m,n)→Genera a partir de la distribucion ’nombre’ una matriz de

tamano m × n con numeros aleatorios siguiendo las pautas descritas inicialmente. Los parametros m y n

son opcionales y su valor por defecto es 1.

Y = mvnrnd(µ,SIGMA,n)→Genera a partir de una distribucion normal multivariante con vector de

medias µ y matriz de covarianzas SIGMA una matriz de numeros aleatorios con n filas.

35.6. Media y varianzaLas funciones que calculan la media y la varianza de los modelos de probabilidad descritos inicialmente

se construyen anadiendo la cadena stat al nombre abreviado del modelo (salvo poiss, que pierde una s):

[mu,sigma]=betastat(A,B) [mu,sigma]=binostat(N,P)

[mu,sigma]=chi2stat(NU) [mu,sigma]=expstat(MU)

[mu,sigma]=fstat(V1,V2) [mu,sigma]=gamstat(A,B)

[mu,sigma]=geostat(P) [mu,sigma]=hygestat(M,K,N)

[mu,sigma]=lognstat(MU,SIGMA) [mu,sigma]=nbinstat(R,P)

[mu,sigma]=ncfstat(NU1,NU2,DELTA) [mu,sigma]=nctstat(NU,DELTA)

[mu,sigma]=ncx2stat(NU,DELTA) [mu,sigma]=normstat(MU,SIGMA)

[mu,sigma]=poisstat(MU) [mu,sigma]=raylstat(B)

[mu,sigma]=tstat(NU) [mu,sigma]=unifstat(A,B)

[mu,sigma]=unidstat(N) [mu,sigma]=weibstat(A,B)

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 93

Page 95: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

35Modelos de Probabilidad

35.7. Ejercicios

1. Aproximar mediante simulacion p(log |X| + X3 ∈ (−1, 2)) siendo X una variable aleatoria con dis-tribucion N(1, 2).

2. Comprobar graficamente la aproximacion de una distribucion B(100, 0,5) a una distribucion N(50, 5)representando simultaneamente sus funciones de probabilidad y densidad.

3. Representar graficamente la funcion de densidad de una distribucion de Weibull de parametros A=1y B=2.

4. Crea una funcion que simule numeros pseudoaleatorios segun la distribucion de probabilidad dada porla siguiente funcion de densidad:

f(x) =12λe−λ|x|, −∞ < x <∞.

5. Ejecuta las siguientes demos: disttool.m y randtool.m.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 94

Page 96: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 36

Estimacion de Parametros y Contraste de

Hipotesis

[sol,pvalor,IC] = ztest(muestra,µ0,σ,α,tipo)→Test sobre la media µ de una poblacion N(µ, σ) con σ

conocido. Los argumentos de esta funcion son:

1. muestra: vector de datos.

2. µ0: hipotesis nula.

3. σ: desviacion estandar de la poblacion considerada.

4. α: nivel del test.

5. tipo: indica si la hipotesis alternativa es µ < µ0 (tipo=-1), µ > µ0 (tipo=1) y µ 6= µ0 (tipo=0).

α y tipo son opcionales. Por defecto se utiliza α = 0,05 y tipo=0.

Los argumentos de salida son:

1. sol: indica si el resultado del test es rechazar µ = µ0 (sol=1) o, por el contrario, si el test no essignificativo (sol=0).

2. pvalor: p-valor del test.

3. IC: Intervalo de confianza para µ de nivel 1− α.

[sol,pvalor] = ttest(muestra,µ0,α,tipo)→Test sobre la media µ de una poblacion N(µ, σ) con σ de-

sconocido. Los argumentos de esta funcion son:

1. muestra: vector de datos.

2. µ0: hipotesis nula.

3. α: nivel del test.

4. tipo: indica si la hipotesis alternativa es µ < µ0 (tipo=-1), µ > µ0 (tipo=1) y µ 6= µ0 (tipo=0).

95

Page 97: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

36Estimacion de parametros y Contraste de Hipotesis

µ0, α y tipo son opcionales. Por defecto se utiliza µ0 = 0, α = 0,05 y tipo=0.

Los argumentos de salida son:

1. sol: indica si el resultado del test es rechazar µ = µ0 (sol=1) o, por el contrario, si el test no essignificativo (sol=0).

2. pvalor: p-valor del test.

[sol,pvalor,IC] = ttest2(muestra1,muestra2,α,tipo)→Test sobre la igualdad medias µ1 = µ2 de dos

poblaciones normales, N(µ1, σ1) y N(µ2, σ2), con σ1 = σ2 desconocido. Los argumentos de esta funcion son:

1. muestra1: vector de datos extraidos de la poblacion N(µ1, σ1).

2. muestra2: vector de datos extraidos de la poblacion N(µ2, σ2).

3. α: nivel del test.

4. tipo: indica si la hipotesis alternativa es µ1 < µ2 (tipo=-1), y µ1 6= µ2 (tipo=0) y µ1 > µ2 (tipo=1).

α y tipo son opcionales. Por defecto se utiliza α = 0,05 y tipo=0.

Las variables de salida son:

1. sol: indica si el resultado del test es rechazar µ1 = µ2 (sol=1) o, por el contrario, si el test no essignificativo (sol=0).

2. pvalor: p-valor del test.

3. IC: Intervalo de confianza para µ1 − µ2 de nivel 1− α.

[pvalor,sol] = signtest(muestra1,muestra2,α)→Test de los signos sobre la igualdad de medianas de

dos poblaciones pareadas. Si muestra2 es una constante m entonces la funcion realiza el test de los signospara constrastar si la mediana de la poblacion muestreada en muestra 1 es m. Los argumentos de estafuncion son:

1. muestra1: vector de datos extraidos de la poblacion 1.

2. muestra2: vector de datos extraidos de la poblacion 2 o constante.

3. α: nivel del test.

Los argumentos de salida son:

1. sol: indica si el resultado del test es rechazar la igualdad de medianas (sol=1) o, por el contrario, siel test no es significativo (sol=0). El resultado es analogo si muestra2 es constante.

2. pvalor: p-valor del test.

[pvalor,sol] = signrank(muestra1,muestra2,α)→Test de los rangos sobre la igualdad de medianas de

dos poblaciones pareadas. Los argumentos de esta funcion son:

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 96

Page 98: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

36Estimacion de parametros y Contraste de Hipotesis

1. muestra1: vector de datos extraidos de la poblacion 1.

2. muestra2: vector de datos extraidos de la poblacion 2.

3. α: nivel del test.

Los argumentos de salida son:

1. sol: indica si el resultado del test es rechazar la igualdad de medianas (sol=1) o, por el contrario, siel test no es significativo (sol=0).

2. pvalor: p-valor del test.

[pvalor,sol] = ranksum(muestra1,muestra2,α)→Test de la suma de rangos de Wilcoxon sobre la igual-

dad de medianas de dos poblaciones independientes. Los argumentos de esta funcion son:

1. muestra1: vector de datos extraidos de la poblacion 1.

2. muestra2: vector de datos extraidos de la poblacion 2.

3. α: nivel del test.

Los argumentos de salida son:

1. sol: indica si el resultado del test es rechazar la igualdad de medianas (sol=1) o, por el contrario, siel test no es significativo (sol=0).

2. pvalor: p-valor del test.

36.1. Ejercicios

1. Programa una funcion que calcule el intervalo de confianza para una proporcion.

2. Programa una funcion que implemente el F-test de una muestra.

3. Obten 20 intervalos de confianza para la media de una poblacion normal de niveles

α = 0,01 , 0,02 , . . . , 0,19 , 0,20

a partir de una muestra de tamano n. Guardalos en un fichero externo en forma tabular llamando LI

y LU a los extremos inferior y superior de los mismos. Etiqueta cada uno de ellos con el ındice de ordencorrespondiente. Representa graficamente los intervalos obtenidos.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 97

Page 99: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 37

Modelos de Regresion y Analisis de la

Varianza

37.1. Modelos de regresion

[β,βint,ε,εint,stats] =regress(y,X,α)→Regresion lineal multiple. regress resuelve el modelo lineal

y = Xβ + ε donde:

y es un vector columna n× 1 de observaciones.

X es una matriz n× p de regresores.

β es un vector columna p× 1 de parametros.

ε es un vector columna n× 1 de perturbaciones aleatorias. Se asume que ε ∼ N(0, σIn).

La funcion calcula las variables β, βint, ε, εint y stats.

β: estimacion de los parametros del modelo.

βint: intervalo de confianza de nivel (1− α)100 % para los parametros contenidos en β.

ε: residuales de la regresion.

εint: intervalo de confianza de nivel (1− α)100 % para los residuales de la regresion.

stats: contiene los estadisticos R2, F y el p-valor de la regresion.

El argumento α es opcional. Por defecto se considera α = 0,05.

regstats(y,X,’modelo’)→GUI para la validacion y diagnostico del modelo lineal ajustado. El argumen-

to ’modelo’ es opcional. Por defecto se considera el modelo lineal con termino constante. Otras opcionesson:

’interaction’: incluye el termino constante, los trminos lineales y los productos cruzados.

’quadratic’: incluye las interacciones y los terminos cuadraticos.

98

Page 100: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

37Analisis de la Varianza y Modelos de Regresion

’purequadratic’: incluye el termino constante y los trminos lineales y cuadraticos.

regstats proporciona la siguiente informacion:

Matrices Q y R de la descomposicion X=QR.

Coeficientes de la regression β.

Covarianzas entre los coeficientes de regresion β.

Valores ajustados de la respuesta y.

Residuales ε.

Error cudratico medio.

Leverages.

Matriz ”Hat”.

Residuales estandarizados y “estudentizados”.

Distancia de Cook.

El error cuadratico medio cuando se elimina una observacion

Los coeficientes de la regresion cuando se elimina una observacion.

DFBETAS, DFFIT, DFFIT escalados mediante el error estandar y DFCOV.

D = x2fx(X,’model’)→Transforma una matriz de regresores en una matriz de diseno para un modelo

lineal aditivo con termino constante. ’model’ puede ser interaction’, ’quadratic’, ’purequadratic’(con el mismo significado que en la funcion regstats) o bien una matriz de terminos que referencian en susfilas a los regresores contenidos en X y en las columnas a los exponentes correspondientes a dichos regresoresen el modelo final.

stepwise(X,y,modelo,α)→Entorno interactivo para la regresion stepwise. stepwise(X,y) ajusta un

modelo de regresion de y sobre las columnas de X. Se muestran tres ventanas graficas para controlar inter-activamente la incorporacion o eliminacion de terminos en el modelo. La funcion admite dos argiumentosopcionales: el vector modelo, que contiene los ındices de las columnas de X que seran incluidos en el modeloincial, y α, que indica el nivel de confianza empleado en el proceso stepwise. Por defecto se considera elmodelo completo y α = 1− (1− 0,025)(1/p) siendo p el numero de columnas de X. Este nivel de confianzacorresponde al Metodo de Bonferroni.

Los coeficientes de la regresion se representan con un cırculo verde. Los terminos del modelo que sonsignificativos se representan mediante lıneas solidas y los que no lo son a traves de lıneas punetadas.

Un “Click” sobre las lıneas de los intervalos de confianza permite conocer el estado de los coeficientesdel modelo. Si la lınea es verde, entonces el termino esta en el modelo. Si es roja, no lo esta.

Se utiliza Export para enviar variables al espacio de trabajo del usuario.

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 99

Page 101: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

37Analisis de la Varianza y Modelos de Regresion

37.2. Analisis de la varianza

p = anova1(X)→Analisis de la varianza balanceado de un factor. Su argumento X es una matriz en

cuyas columnas se situan los datos correspondientes a cada grupo. El resultado es el p-valor para el contrastede igualdad de medias. La funcion devuelve la tabla ANOVA y los diagramas de caja de cada grupo.

p = anova1(X,grupo)→Analisis de la varianza (no necesariamente balanceado) de un factor. Sus

argumentos son los vectores x y grupo. x contiene las frecuencias de los grupos. grupo identifica el grupo decada elemento de x. Las componentes de grupo son numeros naturales con valor mınimo 1 y valor maximoel numero de poblaciones o grupos comparados. La funcion devuelve la tabla ANOVA y los diagramas decaja de cada grupo.

p = anova2(X,rep)→Analisis de la varianza balanceado de dos factores. Su argumento X es una matriz

cuyas columnas corresponden a los niveles de un factor y cuyas filas hacen referencia a los niveles del otrofactor y a las repeticiones rep de cada grupo. El resultado es el p-valor para el contraste de igualdad demedias. La funcion devuelve la tabla ANOVA.

D = dummyvar(grupo)→Genera una matriz de diseno con columnas 0-1. grupo es una matriz cuyas

columnas hacen referencia a factores y contienen numeros naturales que indican el grupo al que pertenecenlos elementos de cada fila de un determinado vector columna respuesta. D tiene una columna para cada valordiferente en las columnas de la matriz grupo.

37.3. Ejercicios

1. El fichero hald.mat contiene los datos recogidos en un estudio sobre el calor producido por variasmezclas de cementos. Cada mezcla contiene cuatro ingredientes distintos y el calor desprendido dependede la cantidad de cada ingrediente presente en la mezcla. Ajusta un modelo de regresion a estos datos.

2. Para detectar la presencia de insectos daninos en los campos de cultivo, se situa en estos camposlaminas de plastico que contienen un material pegajoso en su superficie y se examinan los insectoscapturados en las laminas. Unos investigadores situaron 24 laminas, seis de cada color, ubicadas alazar en un campo de avena y determinaron el numero de insectos capturados:

Color de la lamina Insectos capturadosAzul 16 11 20 21 14 7Verde 37 32 20 29 37 32Blanco 21 12 14 17 13 20Amarillo 45 59 48 46 38 47

¿Que colores atraen mas a los insectos?

Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid. 100

Page 102: Curso de iniciacion a MATLAB Tercera Edici´onantonio/Industriales/Apuntes_05-06/LabM/B...UNIVERSIDAD DE VALLADOLID Escuela Universitaria Polit´ecnica Departamento de Matem´atica

Hora 38

Encuesta final

101