Está en la página 1de 102

UNIVERSIDAD DE VALLADOLID

Escuela Universitaria Politecnica


Departamento de Matematica Aplicada a la Tecnica

Curso de iniciacion a MATLAB

Tercera Edicion

Oscar
Angulo Torga
Eduardo Cuesta Montero
Cesar Gutierrez Vaquero
Mara del Carmen Martnez Martnez

Indice general
1. Introducci
on

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

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

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

2. Entorno de trabajo

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

2.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Aritm
etica elemental

3.1. Edicion en la lnea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

3.2.1. Operaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2.2. N
umeros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

3.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4. Funciones matem
aticas y formatos de salida

10

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


4.2. Formatos de salida de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5. Aritm
etica matricial

12

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


5.2. Operaciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.3. Funciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
5.4. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12


Indice
general
6. Generaci
on autom
atica de datos y asignaci
on 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 l
ogicos

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 selecci
on

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.Programaci
on modular

32

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


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


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.Libreras generales

40

17.1. Libreras asociadas con la utilizacion de matrices y funciones . . . . . . . . . . . . . . . . . . 40


17.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
18.Primeros gr
aficos 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 gr
aficos bidimensionales

51

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


20.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
21.Control de gr
aficos bidimensionales

53

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


21.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
22.Control de la ventana gr
afica bidimensional

57

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


22.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
23.Gr
aficos con n
umeros complejos y en escalas logartmicas

59

23.1. Graficos con n


umeros complejos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
23.2. Graficos en escalas logartmicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
23.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

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


Indice
general
24.Libreras con funciones y gr
aficos estadsticos

62

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


24.2. Descripcion y exploracion grafica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
24.3. Descripcion analtica de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
24.4. Distribuciones de probabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
24.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
25.Primeros gr
aficos 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 gr
aficos tridimensionales
27.1. Control de graficos tridimensionales

71

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

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


27.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
28.Dibujo de poli
edros y de lneas de contorno

73

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


28.2. Dibujo de lneas de contorno

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

28.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
29.Libreras relacionadas con gr
aficos bidimensionales y tridimensionales

75

29.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
30.Copia de la ventana gr
afica y encuesta final

77

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


30.2. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
31.Estructura de selecci
on 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.


Indice
general
33.Creaci
on de libreras

83

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


33.2. Ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Nota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
34.Estadstica 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. N
umeros aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
35.6. Media y varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
35.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
36.Estimaci
on de Par
ametros y Contraste de Hip
otesis

95

36.1. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
37.Modelos de Regresi
on y An
alisis de la Varianza

98

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


37.2. Analisis de la varianza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
37.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
38.Encuesta final

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

101

Hora 1

Introducci
on
1.1.

Presentaci
on del curso

1.2.

Entorno Linux

1.3.

Encuesta inicial

Hora 2

Entorno de trabajo
2.1.

Matlab Desktop

Junto a la barra de menus caracterstica de cualquier aplicacion Windows distinguimos


Command Window
Command History
Current Directory

2.2.
1.

Ventana de comandos.
Historial de comandos.
Directorio actual.

Ejercicios
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 adec
ue a tu forma de trabajo.

2. Crea un directorio de trabajo con tu nombre.

Hora 3

Aritm
etica elemental
3.1.

Edici
on en la lnea de comandos

Historial de comandos ejecutados.

Permiten el desplazamiento horizontal en la lnea de comandos.

. . . +[ENTER]
clc

Continuacion de comando en la lnea siguiente.

Borra el contenido de la pantalla y coloca el cursor en la primera lnea.

[Esc]

Borra la lnea.

Todo lo que aparece detras del smbolo % y en la misma lnea 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 cientfica. Ej.: E4,E-8,e5

[Ctrl]+[c]

3.2.

Detiene la ejecucion de cualquier comando o funcion.

Aritm
etica elemental escalar (real y compleja)

3.2.1.

Operaciones

+, , , /, \,

Suma, resta, multiplicacion, division, division inversa y potenciacion (real o com-

pleja).

3 Aritm
etica elemental

3.2.2.

N
umeros complejos

Asignacion

3.2.3.

Constantes predefinidas

pi

N
umero .

i, j

Unidad imaginaria.

eps

3.2.4.

Epsilon
de la maquina.

Inf y NaN

Inf, inf

Representa el infinito.

NaN, nan

3.3.

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

Not a Number (indeterminacion).

Ejercicios

Realiza las siguientes operaciones y observa el resultado:


1.

1+2

14.

1/inf

27.

12i2+4i

2.

% 1+2

15.

5 inf

28.

(1 24 i)/(2 + 4 i)

3.

1 + (2 4);

16.

inf/inf

29.

(1 24 i)\(2 + 44 i)

4.

1+24

17.

inf inf

30.

(i 2 i)(2+4i)

5.

(1 + 2) 4

18.

nan 0

31.

2E 2 3E8

6.

(1 + 2)4

19.

nan 1

32.

2, 34 3

7.

1 + (2 4)

20.

nan inf

33.

2,34 3

8.

4/2

21.

23

34.

eps

9.

4\2;

22.

23 + 2

35.

eps + 1

10.

3 2\4

23.

23 2

36.

1/(0 + eps)

11.

3 (2\4)

24. i2 , i3 , i4 , i0

37.

(0 + eps)/(0 + eps)

38.

(pi + eps)/pi

12. (3 2)\4

25.

12i+2+4i

13. 1/0

26.

(1 2 i) (2 + 4 i)

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

Hora 4

Funciones matem
aticas y formatos de
salida
4.1.

Funciones matem
aticas
sin, cos, asin, acos, sqrt, log, . . .

Seno, coseno, arcoseno, arcocoseno, raz cuadrada, logaritmo

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


iniciales + [TAB]

MATLAB ofrece un sencillo asistente para recordar la sintaxis de sus funciones. Concretamente, la orden iniciales + [TAB] devuelve todas las funciones disponibles cuyo
nombre comienza con iniciales. Este procedimiento no es sensible a may
usculas y min
usculas.
Ej.: Conto + [TAB]

4.2.

Formatos de salida de datos


format, format short
format short e

Formato corto con mantisa y exponente. Ej.: 7.6923e-002

format short g
format long

Mejor formato fijo o punto flotante con cinco dgitos. Ej.: 0.076923

Formato largo. Ej.: 0.07692307692308

format long e
format long g
format rat

Formato corto. Ej.: 0.0769

Formato largo con mantisa y exponente. Ej.: 7.692307692307693e-002


Mejor formato fijo o punto flotante con quince dgitos. Ej.: 0.0769230769230769

Formato racional. Ej.: 1/13

format compact

Salida por pantalla de forma compacta, es decir, ocupando menos espacio.

10

4 Funciones matem
aticas y formatos de salida

4.3.

Ejercicios
1
33 ,

3, 2 ,

1.

Utiliza los diferentes formatos de salida presentados para escribir los siguientes n
umeros:
0,5
(1 i) .

2.

Eval
ua las siguientes funciones en los puntos indicados (utiliza la ayuda para encontrar la expresi
on
de 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 n


umeros aleatoriamente en el intervalo (0,1) abierto.
a)

Encuentra el nombre de una funci


on que calcule el maximo de un conjunto de datos sabiendo que
empieza por max. Utiliza la ayuda para eliminar candidatos.

b)

Combina la funcion rand con la obtenida en el apartado anterior para obtener el m


aximo de
100000 n
umeros previamente generados por ti al azar del intervalo (0,1).

c)

Es cierto realmente que los n


umeros generados son menores estrictamente que 1?

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

11

Hora 5

Aritm
etica matricial
5.1.

Vectores y matrices
Vector

Los vectores se introducen entre corchetes y los elementos estan separados por espacios
o comas. Ej.: [1 2 3]
Matriz

Las matrices se introducen por filas. Los elementos de una misma fila estan separados
por 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
+, , ,, .0 , 0 , inv(), /, \, det(A)

Suma, resta, producto, potenciacion, traspuesta, traspuesta y


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

Producto, potenciaci
on, 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, raz cuadrada, logaritmo


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

5.4.

Ejercicios

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

1 2 1
2 1 1

1. 1 2 1 + 1 1 1
1 2 1
3 1 1

12

5 Aritm
etica matricial

1 2 1
1 1

2. 1 2 1 + 1 1
1 2 1
1 1

1 2 1
1 1

3. 1 2 1 2 1
1 2 1
1 1

2 1 1
1 2 1

4. 1 2 1 2 1 1
1 1 1
1 2 1

2 1 1
1 2 1

5. 1 2 1 . 2 1 1
1 2 1
1 1 1

1 2 1

6. 2 1 1 2
1 1 1

1 2 1

7. 2 1 1 . 2
1 1 1

1 2

8. 1 1 2
1 1

1 2

9. 1 1 . 2
1 1

1 2
1 2

10. 1 1 1 1
1 1
1 1

1 2
1 2

11. 1 1 . 1 1
1 1
1 1

1 2

12. sqrt 1 1
1 1

1 2

13. 1 1 . ( 21 )
1 1

1 2

14. 1 1 (2)
1 1

1 2

15. 1 1 . (1)
1 1

1 2 1

16. inv 2 1 1
1 1 1

1 2 1

17. 2 1 1 (1)
1 1 1

0 1

18. log 2 1
1 1

2 1

19. 1/ 1 1
1 1

2 1

20. 1 ./ 1 1
1 1
!
1 1
21. 1 ./
0 1
!
eps 1
./
22. sin
1 eps
!
eps 1
23. sin
/
1 eps
!
eps 1
24. sin
\
1 eps
!
eps 1
25. sin
.\
1 eps

eps 1
1 eps

eps 1
1 eps

eps 1
1 eps

eps 1
1 eps

2 ])

26.

sin([1

27.

cos([0

28.

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

; 1])

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

13

Hora 6

Generaci
on autom
atica de datos y
asignaci
on de variables
6.1.

Generaci
on autom
atica de datos
eye(n, m), eye(n)

Matriz unidad de tama


no n m (tama
no n n respectivamente).

zeros(n, m), zeros(n)


ones(n, m), ones(n)

Matriz nula de tama


no n m (tama
no n n respectivamente).
Matriz de unos de tama
no n m (tama
no n n respectivamente).

rand(n, m), rand(n)

Matriz de n
umeros aleatorios entre 0 y 1 con distribucion uniforme y
tama
no n m (tama
no n n respectivamente).
randn(n, m), randn(n)

Matriz de n
umeros aleatorios con distribucion N (0, 1) y tama
no n m
(tama
no n n respectivamente).
magic(n)

Matriz magica de tama


no n n.

linspace(x1, x2, n)
n:h:k

Vector con n componentes equiespaciadas entre x1 y x2.

Secuencia de n
umeros desde n hasta k con incremento h (el incremento puede ser

negativo).
n:k

Secuencia de n
umeros desde n hasta k con incremento 1.

diag(vector)

6.2.

Matriz diagonal cuyos elementos diagonales son las componentes de vector.

Asignaci
on de variables
Para guardar cualquier tipo de dato (n
umero, vector, matriz, cadena de caracteres, etc.) es necesario
asignarle a una variable que lo almacena. De esta manera podremos utilizarlo cuantas veces queramos
a 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

6 Generaci
on autom
atica de datos y asignaci
on de variables
input

Permite la introduccion interactiva de datos a traves del teclado.


Ej.: X=input(Introduce una matriz)

6.3.

Selecci
on
Acceso a sus elementos

Se accede a los elementos de una matriz poniendo los ndices de referencia entre parentesis, separados por coma. Se accede a los elementos de un vector poniendo el ndice
de 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.

Gesti
on de variables
clear
who

Elimina las variables residentes en el espacio de trabajo.


Visualiza las variables residentes en el espacio de trabajo.

whos

Visualiza las variables residentes en el espacio de trabajo con informacion adicional


(tama
no, espacio fsico y tipo).
ans

6.5.

Almacena el resultado de la u
ltima operacion.

Entorno de trabajo (Matlab Desktop)


Workspace

6.6.
1.

Espacio de variables.

Ejercicios
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 siguientes
comandos:

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

15

6 Generaci
on autom
atica de datos y asignaci
on 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

11. v1 v3

2. v1 + v2

12. v1. v3

3. v1 + v3

13. v1.0 v2

4. 2 v1

14. v1 v2.0

5. v1 v2

15. log(v1), sin(v2)

6. v1 v2t

16. 2.v1

7. v1 . v2t

17. v1.2

8. v1t v2

18. sin(v2 )/v2

9. v1t . v2

19. sin(v2 )./v2

10. v1. v2
3.

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

Asigna a las variables A1, A2 y A3 las matrices


1 2
4 5

!
,

1 2
2 1

1 4

, 5 1 .
1
7

Realiza, si es posible, las siguientes operaciones:


1. A1 + 2

13. ones(6). eye(6)

2. 2 A1

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

3. A1 + A2

15. A = magic(3)

4. A2 A1

16. sum(A)

5. A1 A3

17. sum(At )

6. A3 A1

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

7. A1. A2

19. Utiliza la ayuda para calcular el determinante y


la traza de la matriz A2.

8. log(A3)
9. A11
10. ones(6) ones(6, 1)
11. ones(6) ones(1, 6)
12. ones(6) eye(6)
4.

20. Enumera las variables que residen en el espacio


de trabajo.
21. Vaca el espacio de trabajo.
22. Enumera las variables que residen ahora en el
espacio de trabajo.

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 distintas maneras. Cual es la mas sencilla?.

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

16

6 Generaci
on autom
atica de datos y asignaci
on 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

Hora 7

Operadores l
ogicos
7.1.

Operadores l
ogicos
<, >, <=, >=, ==, =

Menor que, mayor que, menor o igual que, mayor o igual que,
igual que, distinto que. Ej.: 0=false, 1=true
&, |, , xor

7.2.
1.

Operadores logicos y, o, no, o excluyente. Ej.: 0=false, 1=true

Ejercicios
Ejecuta las siguientes operaciones y observa el resultado:
1. 2 < 3

8. eye(2)==

2. 3 < 2

1 0
0 1

9. eye(2)=ones(2)

3. 2 > 3

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

4. 3 > 2

A >= 4

5. 1 == 2

B >= 4

6. [1 2 3] == [3 2 1]
!
!
1 2
1 2
7.
==
3 4
3 5

A >= 4 & B >= 4


A >= 4 | B >= 4

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


1. n es un n
umero mayor o igual que 4 y menor que 8.
2. n es un n
umero mayor o igual que 4 o menor que 8.
3. n es un n
umero mayor o igual que 4 y distinto de 10.
4. n es n
umero par.
5. n es un n
umero par entre 500 y 1010 (ambos incluidos).

18

7 Operadores l
ogicos

3.

Sean A =

1 2
1 1

!
,B=

0 0
1 1

!
,C=

1 0
1 0

!
. Realiza las siguientes operaciones:

1. A + B

7. xor(A, B)

2. A + B

8. A&B

3. A. B

9. A&B + C

4. A. (B)

10. A + B&C

5. (A <= B) + C

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

6. A|B

12. D = A&B + C. Que tipo de dato es


D?

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

19

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 bot
on
derecho del rat
on sobre el fichero.

8.3.

Ejercicios

1.

Ejecuta el fichero Entorno01.m y corrige el error abriendole desde el mensaje de error rese
nado en la
ventana 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

8 Editor 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 lneas.
Edita en el fichero

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

21

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

9 Lectura 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 sesi


on.

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 resolver
este ejercicio.
2.

Genera un vector v con los n primeros n


umeros m
ultiplos 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 tama


no 5.

7.

A
nade 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.

A
nade 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

Hora 10

Estructura de selecci
on
10.1.

Estructura if
if condicion logica
..
. % secuencia de comandos
end

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 comandos
else
..
. % secuencia de comandos por defecto
end
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

10 Estructura de selecci
on
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 almacenados
dentro 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 n
umeros naturales entre 1
y 10.
4.

Edita un fichero de comandos que permita seleccionar de un n


umero natural de dos dgitos la cifra de
las unidades y la cifra de las decenas.

5.

Escribe un fichero de comandos que te permita averiguar si un n


umero n es divisible por 13.

6.

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

7.

Escribe un fichero de comandos para evaluar la siguiente funcion:

x+y
si x 0, y 0,

x + y2
si x 0, y < 0,
f (x, y) =
2

x +y
si x < 0, y 0,

2
x + y 2 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 n


umero almacenado en
la variable x.

9.

Escribe un fichero de comandos para calcular los valores mnimo y maximo de tres n
umeros almacenados 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

10 Estructura de selecci
on
10.

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

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

26

Hora 11

Estructura iterativa while


11.1.

Estructura iterativa while

while condicion logica


..
. % secuencia de comandos
end

n=1;
while prod(1:n)<1e100
n=n+1;
disp(Nos llegamos en),n
end

11.2.
1.

Ejercicios

Escribe un fichero de comandos para encontrar el menor entero no negativo n tal que 2n > 100 sin
utilizar la funcion logartmica.

2. Edita un fichero de comandos que permita calcular el factorial de un n


umero leido mediante el comando
input y guardado en la variable n.
3. Escribe un fichero de comandos que simule el experimento aleatorio consistente en extraer al azar
cartas de una baraja espa
nola hasta la aparicion del primer as. Ejecuta el fichero de comandos una
vez 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 quien
primero 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 veces
el 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 sucesivamente
un dado hasta obtener 10 doses. Ejecuta el fichero anterior e indica cuantas tiradas has necesitado y
en cuales has obtenido un dos.
27

Hora 12

Estructura iterativa for


12.1.

Estructura iterativa for

f or contador
..
. % secuencia de comandos
end
El contador puede ser n = 1 : 1 : 10 o n = [1
Ej.:
for n=1:1:10
y(n)=n^2;
x(n)=2*y(n);
end

%
%
%
%

y,x

% Muestra por pantalla los vectores declarados.

12.2.

3,2

8]

Cuenta desde 1 hasta 10 de 1 en 1.


Declara un vector cuyas componentes son de la forma n^2.
Declara un vector cuyas componentes son de la forma 2*y_n.
Fin del bucle.

Ejercicios

1. Edita un fichero de comandos que permita calcular el factorial de un n


umero guardado en la variable
n.
2. Escribe la tabla de multiplicar de un n
umero entero positivo ledo a traves del teclado.
3. Escribe un fichero de comandos que calcule la suma de los n primeros n
umeros naturales.
4. Se definen los n
umeros triangulares como los obtenidos de sumar los n
umeros naturales sucesivos:
1, 2, 3, . . ., es decir, los primeros n
umeros triangulares son: 1, 3, 6, . . .. Escribir un programa que muestre
por pantalla los n primeros n
umeros triangulares.
5. Escribe un fichero de comandos que permita introducir a traves del teclado un n
umero natural n y
que muestre los n primeros n
umeros pares.
6. Escribe un fichero de comandos que permita introducir a traves del teclado un n
umero natural n y
que muestre los n primeros n
umeros impares.
7. Edita un fichero de comandos para averiguar si un n
umero almacenado en la variable n e introducido
a traves del teclado es primo.
28

12 Estructura 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

Hora 13

Funciones
13.1.

Funciones

function [salida1,. . . ,salidaN]=nombre(entrada1,. . . ,entradaM)

Primera lnea de la funci


on nom-

bre.m
1. Se guarda como un fichero de texto nombre.m cuyo nombre suele coincidir con el de la funci
on.
2. Desde la propia funcion se puede hacer llamadas a otras funciones o incluso a ella misma (lo que se
conoce como recursividad).
3. Las variables usadas en cada funcion toman un valor local. Por tanto, una variable con el mismo
nombre en una funcion y en el programa principal mantiene el valor que tome en cada uno de los
contextos.
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

13 Funciones

13.2.

Ejercicios

1.

Programa una funcion llamada stat1 que calcule sobre un conjunto de datos almacenados en un vector
llamado datos su media y el n
umero de datos.

2.

Programa una funcion que calcule el maximo y el mnimo de dos n


umeros y utilzala para obtener el
maximo y el mnimo de tres n
umeros.

3.

a)

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


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

4.

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 n


umero de veces que aparece cada
resultado 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 anterior
dos veces.

Crea una funcion con los programas realizados en los ejercicios 3, 4 y 10 de la hora estructura de
seleccion que simule el resultado obtenido al extraer n cartas de una baraja espa
nola. El argumento
de 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

Hora 14

Programaci
on modular
14.1.

Programaci
on modular

La programacion modular responde a la idea divide y vencer


as. En efecto, la implementaci
on de
cualquier tarea, por muy compleja que esta sea, es abordable si la fraccionamos en otras mas simples y
f
aciles de programar. Con esta forma de actuar se consiguen ademas varios objetivos fundamentales de la
programacion:
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 ha
sido comprobado y que funciona. Si aparece alg
un error, lo mas probable es que se deba a lo u
ltimo
que se ha a
nadido, y su b
usqueda esta acotada y es mucho mas sencilla.
Como recomendaciones generales para la programacion sobre cualquier lenguaje debemos se
nalar:
1. Crear un programa principal que act
ue 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) siempre
es rentable, porque disminuye el tiempo de depuracion y eliminacion de errores.
3. Escribir el codigo de un modo claro y ordenado, introduciendo comentarios, utilizando lneas en blanco
para separar distintas partes del programa, sangrando las lneas para ver claramente el rango de las
bifurcaciones y bucles, utilizando nombres de variables que recuerden el significado de la magnitud
que almacenan, etc.
Particularmente, para la programacion con MATLAB, cabe se
nalar la importancia de vectorizar los
algoritmos de calculo, es decir, de realizarlos con vectores y matrices y no con variables escalares dentro de
bucles.

14.2.

Ejercicios

1. Elabora un programa que simule la hora de salida y la hora de llegada de un autob


us de lnea de 40
plazas. El viaje sigue las siguientes pautas:
32

14.2 Programaci
on modular
El autob
us siempre llega a la estacion de origen a las 15.00 horas.
El autob
us no sale hasta que este completo.
Todos los viajeros se encuentran en la parada antes de la llegada del autob
us.
El autob
us 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 autob
us en recorrer el trayecto entre el origen y el destino es aleatorio
entre 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 llegada
del autob
us en esos 100 viajes?
Indicaciones:
a)

Construir una funcion n=numeroaleatorio(a,b) que devuelva un n


umero aleatorio (no necesariamente 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 autob


us tarda en recorrer
el trayecto. Utiliza la funcion numeroaleatorio.
2.

Considera que el autob


us del ejercicio anterior realiza cinco paradas intermedias. Ademas de las pautas
anteriores se a
naden las siguientes:
El tiempo que el autob
us emplea en recorrer el trayecto entre dos paradas consecutivas es un
n
umero aleatorio entre 25 y 37 minutos.
En cada una de ellas se pueden bajar un n
umero aleatorio de viajeros entre 0 y el n
umero total
de los que permanecen en el autob
us.
El tiempo de bajada de cada viajero del autob
us es identico al de subida.
El autob
us solo tiene una puerta de bajada. De esta forma, el tiempo de bajada de cada viajero
es 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 n
umero aleatorio inferior a 2
minutos 30 sg. para cada viajero.
El autob
us 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 llegada
del autob
us en esos 100 viajes? Cual es el n
umero medio de viajeros que se bajan en la segunda parada
en esos 100 viajes?
Indicaciones:
a)

Modifica la funcion t=duracionviaje para que devuelva el tiempo que el autob


us tarda en
recorrer cada tramo.

b)

Construir una funcion t=numeroviajero(a) que devuelva el n


umero de viajeros que bajan en
cada parada. Modifica la funcion numeroaleatorio para que devuelva un n
umero natural entre 0
y a. Se debe tener en cuenta que el n
umero de viajeros en el autob
us 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 en
recoger el equipaje. Utiliza la funcion numeroaleatorio.

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

33

14.2 Programaci
on modular
e)

3.

Para contabilizar el tiempo de salida utiliza un vector de dimension el n


umero de viajeros que
abandonan el autob
us que almacenara el tiempo que tarda cada uno de ellos en abandonar la
parada (bajar del autob
us + recoger el equipaje). El tiempo de salida es el maximo de estos
valores.

Considera que en el viaje del ejercicio anterior los viajeros no se encuentran en la parada a la hora de
salida. Adem
as de las pautas anteriores se a
naden las siguientes:
Cada viajero sube al autob
us en orden de llegada a la parada.
El n
umero 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 contrario, 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 llegada
del autob
us en esos 100 viajes? Cual es el n
umero medio de viajeros que se bajan en la segunda parada
en esos 100 viajes? Cual es el n
umero 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 los
tiempos de retraso de los viajeros impuntuales (n). Para ello modifica adecuadamente la funci
on
t=bajadaviajero.

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

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

34

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
r

w
a

r+
w+
a+

un cadena de caracteres que indica la operacion que se va a realizar con el fichero:


Lectura.
Escritura (se crea si es necesario).
A
nadir a un fichero ya existente (se crea si es necesario).
Lectura y escritura.
Trunca el fichero o lo crea para lectura o escritura.
Lectura y a
nadir 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


alg
un 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 identificador nombre abierto previamente. El fichero debe cerrarse al finalizar esta operacion. El formato
de 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 caracteres, etc.
\n provoca un salto de lnea.
Ej.:
t=0:1:10
y=t.^2

% Crea un vector con los datos 0,1,2,3,...,10.


% Crea un vector con los datos 0,1,4,9,...,100.

nombre=fopen(parabola.dat,w)

x=[t;y];

% Abre el fichero llamado parabola.dat para escribir


% en el (w)

% Crea la matriz de datos que vamos a escribir en


35

15 Escritura con formato en fichero


% el fichero.
fprintf(nombre,%1.1f

fclose(nombre)

15.2.

% 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].
Manda los datos al fichero nombre.

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 caracteres Prueba de escritura en el fichero noexiste.txt sin crearlo previamente. Una vez finalizada esta
operacion observa el contenido de dicho fichero.
3. Escribe el n
umero con 25 cifras decimales en el fichero de texto pi.txt.
4. Utiliza fprintf para escribir en la primera lnea del fichero sucesion.txt (sin crearlo previamente)
la secuencia 1:1:10 (usa el formato %1d\t). Una vez finalizada esta operacion observa el contenido
de dicho fichero.
5. Utiliza fprintf para a
nadir al fichero sucesion.txt (sin borrar su contenido previo) la secuencia
11:1:20, de forma que cada uno de los n
umeros que la compone ocupe un renglon distinto (para ello
modifica 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 matriz
rand(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 tama
no 6 y escribe su contenido en un fichero de texto llamado
salida.txt.
8. Genera una matriz con 10 filas y 4 columnas formada por n
umeros aleatorios y escribe su contenido en
un fichero de texto llamado salida.txt. Utiliza para ello una cifra decimal en las columnas impares
y 4 cifras decimales en las columnas pares.
9. Crea una funcion con las siguientes caractersticas:
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 Matem
aticas, en otro caso.

10.

Crea una funcion que:


a)

Pida un n
umero 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

15 Escritura 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 n
umero 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 el
fichero salida.txt, con formato ascii.

d)

Ademas, los u
ltimos dos renglones del archivo salida.txt deben contener la siguiente informacion:
1)

El menor salario es ???????.

2)

El mayor salario es ???????.

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

37

Hora 16

Lectura de fichero con formato


16.1.

Lectura de fichero con formato

fscanf(nombre,format,tama
no)

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 n
umero de datos leidos. El valor que
puede 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 tama
no N x M por columnas (M puede se inf).
Ej.:
nombre=fopen(parabola.dat,r)

z=fscanf(nombre,11) %
%
%
%
%
fclose(nombre)

16.2.

% Abre el fichero llamado parabola.dat


% para leer de el (r)

Lee del fichero parabola.dat los datos con el


siguiente formato:
La primera columna real
La segunda modo exponencial
Hasta 11 datos.

% Cierra el fichero identificado mediante nombre

Ejercicios

1. Realiza las siguientes operaciones:


a)

Genera los vectores w1 = (3, 5, 6, 7, 9) y w2 con los 3 primeros n


umeros m
ultiplos 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

16 Lectura 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 variable
U. Comprueba que la operacion se ha realizado correctamente visualizando el contenido de U.

3.

El fichero secuencia.dat contiene una sucesion de n


umeros enteros positivos o cero. Crea una funci
on
que 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 raz
on de
un signo por lnea y separados por retorno de carro. Elabora una funcion que lea dichos resultados,
contabilice el n
umero 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 columna
que 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 a
nos
y en adultos si tienen mas de 18 a
nos. Almacena los resultados en la variable situacion.

10.

Guarda las variables nombre, apellido, edad y situacion en el fichero listado.txt con el siguiente
formato:
Andres Perez 46 ADULTO

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

39

Hora 17

Libreras generales
17.1.

Libreras asociadas con la utilizaci


on 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

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

17 Libreras 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)

Tama
no 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 vaca 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

17 Libreras 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)

Se
nalan 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

17 Libreras 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

17 Libreras 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 componentes 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 n


umeros primos del n
umero x. Ej.:
factor(1356)
ans =
2
2
3
113
isprime(x)

Funcion logica que devuelve 1 en las componentes de x que son n


umeros primos y 0
en las que no lo son. Ej.:
isprime([1356,17])
ans =
0
1
primes(n)

Devuelve un vector con los n


umeros 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 com


un divisor y el mnimo com
un m
ultiplo de x, y respectivamente. Cuando x, y son vectores los calculos se hacen entre las componentes de x e y que ocupan
la misma posicion. Ej.:
Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid.

44

17 Libreras 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
n
N
umero combinatorio
Ej.:
k
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

17 Libreras 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 (cilndricas). 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 cilndricas (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

17 Libreras 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

Hora 18

Primeros gr
aficos 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 de
lnea 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 de
dimensiones. En la misma grafica, cada lnea se dibuja con un color y con un tipo de lnea 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

18.2 Primeros gr
aficos 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


gr
afica, cada poligonal se dibuja con un color y con un tipo de lnea diferente.

18.2.

Ejercicios

1.

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

2.

Crea una funcion que:

3.

a)

Simula n lanzamientos de una moneda mediante el comando rand (n es un valor que debe introducir 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 n


umero de lanzamientos.

e)

Muestre por pantalla la u


ltima frecuencia obtenida.

f)

Enve al fichero de texto resultados.dat los resultados obtenidos en los n lanzamientos (emplea
las palabras cara y cruz).

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

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:


2

1. f (x) = xex en [2, 2].

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


3. f (x) = x2 sin( x1 ) en [2, 2].
4. f (x) = x2 sin( x1 ) en [0,1, 0,1].

50

Hora 20

Modificadores de los gr
aficos
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 lnea azul continua sin marcadores).
fplot(fcn, lim,cad)

Dibuja la grafica de la funcion fcn con el estilo de lneas 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 y
as con el resto de ternas. Si se omiten las opciones de estilo, MATLAB escoge el color y estilo para cada
gr
afico.
1 cad

es una variable caracter de a lo sumo tres parametros elegidos de las siguientes columnas sin
importar el orden. Afecta a los estilos de lneas y colores.

.
*
x
o
+
s
d
p
h
v
<
>
^

Marcadores
punto
estrella
cruz
crculo
mas
cuadrado
rombo
pentagono
hexagono
triangulo abajo
triangulo izquierda
triangulo derecha
triangulo arriba

--.
:

Ver tabla

51

Lneas
solida
discontnua
punto-raya
punteada

y
g
m
b
c
w
r
k

Colores
amarillo
verde
magenta
azul
cyan
blanco
rojo
negro

20.2 Modificadores de los gr


aficos bidimensionales
Ej.:
n=50;
a=0;
b=3;
x=linspace(a,b,n);
e1=exp(-x.^2);
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);

20.2.

% Asignamos valores a las variables

% Construimos el vector x
% y los vectores de abcisas

% Dibujamos las graficas

Ejercicios

1.

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

2.

Una granja familiar cra conejos, terneros y cerdos. Los siguientes vectores describen el n
umero de
unidades de cada caba
na 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.

Considera el vector v=-10:-1. Dibujas las potencias v 1 , v 2 y v 3 diferenciandolas entre s.

4. Considera el vector v=1:10. Dibujas las potencias v 1 , v y 3 v diferenciandolas entre s.

3.

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

52

Hora 21

Control de gr
aficos bidimensionales
21.1.

Control de gr
aficos bidimensionales

axis

Devuelve los lmites del dibujo actual en un vector fila. Para graficos de dos dimensiones tiene
los 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 a


naden 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 tama
no habitual.
off No se muestran los ejes.
on Deshace el comando anterior.
grid on
grid off

Dibuja una red en la ventana grafica.


Borra la red de la ventana grafica. Ej.:

53

21 Control de gr
aficos bidimensionales
t=0:0.2:2*pi+0.2; [ENTER]
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)

% Parametro para el angulo

Escribe la variable cadena txt centrada en la cabezera del grafico (ttulo).

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 con
el mismo n
umero de filas que x e y, se escribe una de ellas en cada una de las posiciones. Se puede elegir el
tama
no 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 peque
no recuadro, las variables cadenas st1, st2, etc, al lado de los
estilos de linea utilizados en cada una de las graficas. Este peque
no recuadro puede moverse mediante el
rat
on.
legend(l1,st1, l2,st2, ...)
legend off

Escribe una leyenda especificando los estilos de lnea.

Elimina la leyenda del dibujo actual.

[x,y]=ginput

Lee las coordenadas en las que se sit


ua 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 vertical
y horizontal). Presionado una tecla o un boton del raton se envan las coordenadas a MATLAB que las
almacena 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 rat
on.

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

21 Control de gr
aficos 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.
1.

Ejercicios

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:

2.

a)

A
nade 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 lnea utilizada para su representacion.

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

21 Control de gr
aficos bidimensionales

text(x(1)+scale/30,y(1),Inicio);
hold off;
xlabel(x);
Completa el grafico resultante con las siguientes operaciones:
a) A
nade el ttulo Camino aleatorio.
b) Escribe bajo el eje y: Eje de ordenadas.
c) Identifica el u
ltimo punto dibujado con la etiqueta FIN.
d ) Obten las coordenadas de los puntos correspondientes al maximo y al mnimo de la grafica. Para
ello act
ua 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) por


y=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 utilzalo 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 bidimensionales incluyendo:
a) El ttulo 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 bidimensionales para que incluya:
a)

El ttulo 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 bidimesionales para que incluya:
a)

El ttulo 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

Hora 22

Control de la ventana gr
afica
bidimensional
22.1.
figure(n)
clf

Control de la ventana gr
afica bidimensional
Permite mostrar la ventana grafica actual y crear nuevas ventanas graficas.

Borra el contenido la u
ltima ventana grafica utilizada.

delete(n)

Cierra la ventana grafica n.

hold on

Permite superponer graficos en una misma ventana hasta que se desactiva la opci
on con el
comando 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
0 en caso contrario.
o
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

22 Control de la ventana gr
afica bidimensionales
zoom off
zoom out

22.2.

Desactiva el comando anterior.


Recupera el tama
no inicial.

Ejercicios

1.

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

2.

Realiza el ejercicio 3 de la hora 20 Modificadores de los graficos bidimensionales empleando el comando


hold.

3.

Con los datos del ejercicio 2 de la hora 20 Control de graficos bidimensionales y empleando el comando
figure realiza cuatro graficas en cuatro ventanas distintas para representar:
a)

El n
umero de terneros nacidos en la granja durante cada uno de los meses de 1999.

b)

El n
umero de conejos nacidos en la granja durante cada uno de los meses de 1999.

c)

El n
umero de cerdos nacidos en la granja durante cada uno de los meses de 1999.

d)

El n
umero total de animales nacidos en la granja durante cada uno de los meses de 1999.

A
nade un ttulo 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 en
cuatro 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

Hora 23

Gr
aficos con n
umeros complejos y en
escalas logartmicas
23.1.

Gr
aficos con n
umeros complejos

polar(,r)

Dibuja n
umeros 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 n
umero 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

23 Gr
aficos con n
umeros complejos y en escalas logartmicas
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 defecto
es 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.

Gr
aficos en escalas logartmicas

semilogx(x,y)

Utiliza coordenadas logartmicas en el eje x. El resultado es el mismo que utilizar


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

Act
ua como el comando anterior, pero esta vez la escala logartmica esta en el eje y.

loglog(x,y)

Dibuja ambos ejes en escala logartmica. 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.
1.

Ejercicios

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


5

a) r = ecos 2 cos(4) + sen( 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 + y 2 = 9 y r = 5 y los angulos =
= 3
umeros complejos.
7 usando n

4 6 8
3. Dibuja los pentagonos cuyos vertices estan sobre la circunferencia unidad en los angulos = 2
5 , 5 , 5 , 5 ,
10
3 5 7 9 11
angulos = 5 , 5 , 5 , 5 , 5 . Traza los segmentos que unen cada vertice con el origen
5 y en los
de coordenadas.

4. El fichero poblacion.txt describe el n


umero de habitantes empadronados en ciertos municipios de
Castilla y Leon.
Utiliza un histograma (funcion hist) para representar los datos almacenados en la variable
habitantes.

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

60

23 Gr
aficos con n
umeros complejos y en escalas logartmicas
Transforma la variable habitantes mediante la funcion log y guarda el resultado en la variable
loghabitantes.
Representa los datos almacenados en la variable loghabitantes con un histograma. Emplea una
cuadrcula (grid) que facilite la visualizacion de las coordenadas en el grafico.

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

61

Hora 24

Libreras con funciones y gr


aficos
estadsticos
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 caracteres
como delimitadores de campos (espacios en blanco, coma, punto y coma, etc.)
Ej.:
[datos, nombresvariables, nombresindividuos] = tblread(Demog.tex);
datos, nombresvariables, nombresindividuos

24.2.

Descripci
on y exploraci
on gr
afica 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

A
nade a un scatterplot la recta que mejor ajusta los puntos representados en el sentido de
mnimos 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)

A
nade 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

24 Libreras con funciones y gr


aficos estadsticos

24.3.

Descripci
on analtica de datos

tabulate(x)

Obtiene la tabla de distribucion de frecuencias de x. El argumento x debe ser un vector


de n
umeros 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 mnimo 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

24 Libreras con funciones y gr


aficos estadsticos
4
range(r)
ans =
8

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 intercuartlico 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 una
de 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

24 Libreras con funciones y gr


aficos estadsticos
nansum(A), nanmean(A), nanmedian(A), nanstd(A)

Calculan, respectivamente, la suma, la media aritmetica, 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

24 Libreras con funciones y gr


aficos estadsticos
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 distribuci


on binomial 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 mk formada por n


umeros 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 (esperanza) 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 distribuci


on exponencial 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

24 Libreras con funciones y gr


aficos estadsticos
exprnd(mu,m,k)

Calcula una matriz mk formada por n


umeros 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 normales 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 tama


no 100 de una distribucion normal estandar y contabiliza mediante
un diagrama de caja los valores outliers obtenidos.

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

67

Hora 25

Primeros gr
aficos 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 lnea 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

tama
no.

25.1.

Ejercicios

1.

Dibuja en el espacio tridimensional una circunferencia que este contenida dentro del plano XY.
Sugerencia: trabaja en dos dimensiones y a
nade una tercera coordenada nula.

2.

Modifica convenientemente el ejercicio 2 de la hora 21 para construir un camino aleatorio en tres


dimensiones.

3.

Genera 120 n
umeros aleatorios entre 0 y 100. Considera que los valores obtenidos simulan el n
umero
de ganadores mensuales de premios millonarios durante los u
ltimos 10 a
nos. Asigna a cada dato el mes
y el a
no correspondiente y representa los valores obtenidos mediante un dibujo en tres dimensiones.

Ver tabla de la secci


on 20.1, p
agina 51.

68

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 el
eje 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

26 Dibujo de mallados
[X,Y,Z]=sphere(20);
surf(X,Y,Z);

26.2.
1.

Ejercicios

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,2y 2 + 1, (x, y) [3, 3] [3, 3].

sin( x2 +y 2 )
, (x, y) [8, 8] [8, 8].
f (x, y) =
x2 +y 2

2.

Dibuja una superficie semejante a una chimenea de una central termica (hiperboloide hiperb
olico).

3.

Dibujar dos circunferencias intersecadas.

4.

Dibujar los cinco aros olmpicos.

5.

Repite el ejercicio 3 de la hora 25 guiandote con las siguientes indicaciones:


a)

Guarda los datos simulados en una matriz 1012 (logicamente, las filas hacen referencia al a
no
y 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

Hora 27

Control de la ventana y de los gr


aficos
tridimensionales
27.1.
axis

Control de gr
aficos tridimensionales

Identico al utilizado con graficos bidimensionales.

title, xlabel, ylabel, zlabel, text, gtext, legend, ginput, grid, . . .

Identicos a los utilizados con gr


aficos
bidimensionales (gtext y ginput solo funcionan en determinadas versiones).
hidden on, hidden off

Mantiene las lneas posteriores ocultas o no dependiendo que utilicemos on u

off.

27.2.

Control de la ventana gr
afica 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 elevaci


on.

view(r)

Sit
ua 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

27 Control de la ventana y de los gr


aficos tridimensionales
view(196,30);

27.3.
1.

Ejercicios

A
nade las siguientes caractersticas al camino aleatorio tridimensional construido en el ejercicio 2 de
la hora 25:
Ttulo: 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 se
nalados 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 +y 2 = 1. Posteriormente a


nade el comando view([1,0.6,0.35]).
Que observas?

3.

A
nade las siguientes caractersticas a la representacion realizada en el ejercicio 3 de la hora 25:

4.

5.

a)

Etiqueta los ejes con a


nos, meses y acertantes seg
un corresponda.

b)

Titula la representacion mediante Comando plot3.

A
nade las siguientes caractersticas a la representacion realizada en el ejercicio 5 de la hora 26:
a)

Etiqueta los ejes con a


nos, meses y acertantes seg
un corresponda.

b)

Titula las representaciones mediante Comando mesh y Comando surf seg


un corresponda.

Realiza las siguientes operaciones:


a)

Obten 120 datos aleatorios como en el ejercicio 3 de la hora 25. Almacenalos en el vector v y en
una matriz A de tama
no 1012.

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 marcadores
distintos 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

Hora 28

Dibujo de poli
edros y de lneas de
contorno
28.1.

Dibujo de poli
edros

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 lneas 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 10
niveles. 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)
surfc(U,V,Z)

Act
ua igual que mesh, incluyendo las curvas de nivel bajo el grafico.
Act
ua 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

28 Dibujo de poli
edros y de lneas de contorno
meshc(z);
title(sin(r)/r));
subplot(2,1,2);
surfc(z); title(sin(r)/r));

28.3.
1.

Ejercicios

Sea la superficie definida mediante la ecuacion z = x2 /4 y 2 /9. Se pide:


a) Dibujar la superficie en la red determinada por las abcisas x = 10 : 1 : 10 y las ordenadas
y = 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 ordenadas
y = 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

Hora 29

Libreras relacionadas con gr


aficos
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 categora. Ej.:
X=[1,2,3;4,5,6;7,8,9];
bar(X)
barh(X)

Igual que el anterior. La u


nica 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 categora. Ej.:
X=[1,2,3;4,5,6;7,8,9];
bar3(X)
bar3h(X)

Igual que el anterior. La u


nica diferencia es que las barras se representan horizontalmente. Ej.:
X=[1,2,3;4,5,6;7,8,9];
bar3h(X)

75

29 Libreras relacionadas con gr


aficos 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 correspondientes
sectores se separan del centro del crculo (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 matriz
X. Ej.:
x = randn(50,3); Y = x*[-1 2 1;2 0 1;1 -2 3;];
plotmatrix(Y,*r)
stem()

Act
ua como la funcion plot(). La u
nica diferencia es que se representa la proyecci
on
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()

Act
ua como la funcion plot3(). La u
nica diferencia es que se representa la proyecci
on
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 crculos coloreados en las coordenadas especificadas a traves de las componentes de los vectores x e y. El vector (o escalar) s determina el tama
no de dichos crculos y c
contiene 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()

Act
ua como la funcion plot(). La u
nica 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

Hora 30

Copia de la ventana gr
afica y encuesta
final
30.1.

Copia de la ventana gr
afica

print nombre

Enva el contenido de la ventana grafica activa a un fichero llamado nombre.ps. Si


no se especifica ning
un fichero, entonces el grafico se imprime. Ej.:
x=-pi:0.1:pi;
y=sin(x);
plot(x,y);
print dibujo;
print -djpeg nombre

Enva el contenido de la ventana grafica activa a un archivo con formato jpg

llamado nombre.
print -dbitmap nombre

Enva 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 imprime
en 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 cuestiones.
a) Grabar la ventana grafica obtenida en el apartado (1d ) en el fichero pilardel.ps con formato
postscript. Abrir el fichero anterior con el VisorPS.
b) Grabar la ventana grafica obtenida en el apartado (1d ) en el fichero pilardel.ps con formato
postscript apaisado. Abrir el fichero anterior con el VisorPS.
c) Grabar la ventana grafica obtenida en el apartado (1f ) en el fichero castillo.jpg con formato
jpg. Abrir el fichero anterior con el programa Image Viewer.

77

Hora 31

Estructura de selecci
on case
31.1.

Estructura de selecci
on case

switch expresion
case valor de la expresion
..
. % secuencia de comandos
case valor de la expresion
..
. % secuencia de comandos
case valor de la expresion
..
. % secuencia de comandos
otherwise
..
. % secuencia de comandos
end
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

31 Estructura de selecci
on case

31.2.
1.

Ejercicios

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
X

xj

j=0

d)
f4 (x) =

100
Y

xj

j=1

(Desarrollar la funcion de manera que pueda realizar todas operaciones vectorialmente). Usando esta
funcion, 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
(2) 5yn+3 + (yn+1 ) log(yn ) = sin(n),
n 0,
(3) nyn yn+3 + yn+2 yn+1 = 1,
n 0,
con y0 = 1, y1 = 2 e y2 = 3 se propone desarrollar una base de recurrencias, similar a lo que se ha
hecho en el primer ejercicio, y una funcion llamada recurrencia.m que nos permita calcular el termino
nesimo de la recurrencia seleccionada (podemos suponer que el usuario da valores enteros y positivos
al argumento de la funcion).

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

79

Hora 32

Debugger
32.1.
dbstop
dbclear
dbcont
dbdown
dbmex

Opciones del debugger de MATLAB


Permite fijar un punto de interrupcion (breakpoint) en el programa.
Permite borrar un punto de interrupcion fijado previamente.
Continua la ejecucion del programa bajo las condiciones fijadas previamente.
Cambia el entorno del espacio de trabajo.
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 lnea en la
que se ha interrumpido el programa.
dbstatus
Muestra un listado de los puntos de interrupcion que hemos fijado.
dbstep
Ejecuta una o varias lneas de comandos hasta el siguiente punto de interrupcion.
dbtype
Muestra en ventana el fichero *.m que se esta ejecutando con las lneas 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 opciones
de men
u mediante las teclas siguientes:
dbstop
dbclear
dbcont
dbstep

F8 o desde las opciones de men


u.
F8 o desde las opciones de men
u.
F5 .
F6 .

dbquit

(Desde las opciones de men


u).
Step by step In F7 .

80

32 Debugger
Step by step Out Shift + F7 .
Stop if error Interrumpe el programa si encuentra un error (desde las opciones de men
u).
Stop if warning Interrumpe el programa si encuentra un mensaje de atencion (desde las opciones de
men
u).
Stop if NaN or Inf Interrumpe el programa si aparece una indeterminacion matematica o un infinito
(desde las opciones de men
u).
Step by step Out Interrumpe el programa en cualquiera de los casos anteriores (desde las opciones de
men
u).

32.2.

Ejercicios

Determinar con la ayuda del debugger por que las funciones prg1.m, prg2.m y prg2.m no devuelven
resultado alguno (Observar que en la u
ltima lnea de cada una de ellas debera de mostrar el resultado de
los calculos). Utilizar, ademas, los warning para detener el programa cuando se produzca alg
un error en la
ejecucion.

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

32 Debugger

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

Hora 33

Creaci
on de libreras
33.1.

Programaci
on modular
Function 1

Function 2

Function 3

Function N

Main program

Crear librera File/Set path [Add folder] (desde las opciones de men
u).
Eliminar librera File/Set path [remove] (desde las opciones de men
u).

33.2.

Ejercicio

Problema: Sea una matriz A, 4 4, de ceros. Se pretende encontrar una distribucion de 7 unos en A de
modo que al eliminar 2 filas y 2 columnas cualesquiera siempre quede alg
un uno (se puede demostrar que
con 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 que
resuelvan el problema anterior. Para ello, vamos a partir de ciertas premisas que razonablemente se pueden
suponer:
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 pretende
en este ejercicio.
Para ello vamos estructurar la programacion de la funcion pedida como sigue
Funci
on distribuciones.m

Funcion matval.m

Pr. principal: pr.m

donde cada funcion se describe a continuacion:


83

Nota
1.

Partiendo de la matriz

U (:, :, 1) =

1
1
1
1

1
1
1
0

0
0
0
0

0
0
0
0

almacenar en las sucesivas U (:, :, J) todas las posibles distribuciones de unos manteniendo en cada fila
el n
umero 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 n
umero 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 soluci
on
del problema.

3.

Programar una funcion con el nombre de pr.m que llamando a las anteriores encuentre todas las
posibles soluciones del problema planteado, mostrando por pantalla las que efectivamente sean soluci
on
del problema.

4.

Crear una librera propia con las funciones programadas en los ejercicios anteriores en un subdirectorio
de 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 librera ejecutado la funci
on desde
all.

NOTA: las funciones resaltadas con


mediante

estan disponibles en el paquete base de MATLAB y las resaltadas

solo estan disponibles en la tolboox stats de MATLAB.

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

84

Hora 34

Estadstica 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 caractersticas:
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 fichero
tabular que quiere leer) y devuelve tres variables: datos, que contiene los registros de cada par individuovariable, var, con los nombres de las variables e indv, con los nombres de los individuos o casos registrados
en el fichero.
Esta funcion admite dos argumentos opcionales, uno para especificar directamente el nombre del archivo de
lectura y otro para indicar el delimitador empleado en dicho fichero (MATLAB asume por defecto que el
delimitador utilizado es un espacio en blanco). Se aceptan los siguientes caracteres como delimitadores de
campos: , \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 que
quiere crear) y construye un archivo tabular con var como nombre de las variables (primera fila), indiv
como nombre de los individuos o casos (primera columna) y con datos como matriz de registros de cada
par individuo-variable.
Esta funcion admite dos argumentos opcionales, uno para especificar directamente el nombre del archivo de
lectura y otro para indicar el delimitador empleado en dicho fichero (MATLAB asume por defecto que el
delimitador utilizado es un espacio en blanco). Se aceptan los siguientes caracteres como delimitadores de
campos: , \t, ,, ;, !, o sus correpondientes nombres: space, tab, comma, semi, bar.

85

34 Estadstica Descriptiva

34.2.

Tabulaci
on de datos

tabla=tabulate(v)

Obtiene la tabla de distribucion de frecuencias de v. El argumento debe ser un


vector de n
umeros naturales.
[tabla, 2 , p]=crosstab(v1,v2)

Toma dos vectores de n


umeros naturales y calcula su tabulaci
on
cruzada. El elemento (i, j) de tabla contiene la frecuencia de aparicion del par (i, j). Esta funcion admite dos
argumentos de salida adicionales que almacenan el estadstico 2 y el p-valor del contraste de independencia
correspondiente.

34.3.

Medidas de localizaci
on

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)
v=harmmean(X)

Media geometrica.
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) Mnimo. El vector v contiene los ndices correspondientes a los valores mnimos encontrados. 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 mnimo encontrado
en cada comparacion.
[Y,v]=max(X) Maximo. El vector v contiene los ndices correspondientes a los valores maximos encontrados. 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 encontrado
en cada comparacion.

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

86

34 Estadstica 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 dispersi
on

v=var(X) Obtiene un vector fila cuyas componentes son la cuasivarianza muestral de cada una de las
columnas de X.
v=var(X,1) Obtiene un vector fila cuyas componentes son la varianza muestral de cada una de las
columnas 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)
v=iqr(X)
v=mad(X)

34.6.

Recorrido.

Rango intercuartlico
Desviacion absoluta media

Otras funciones

[X2,v]=sortrows(X1) Ordena las filas de X1 en orden ascendente tomando como referencia las componentes de la primera columna de X1 y en caso de empate, las siguientes columnas en el orden natural. v es
un 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 componentes de la columna de X1 indicada en el primer ndice del vector v1 y en caso de empate, las siguientes
columnas indicadas en v1. v2 es un vector de ndices que describe como se ha realizado la ordenaci
on.
[X2,I]=sort(X1) Ordena de modo creciente cada una de las columnas de X1. La matriz I describe la
ordenacion realizada en cada columna.
cumsum Suma acumulada.
[medias,dem,freq] = grpstats(X,niveles,)

niveles es un vector columna con n


umeros 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 el
error estandar de cada una de las medias calculadas. freq guarda las frecuencias de cada grupo en cada
una de las columna de X. Finalmente, si se indica un nivel de confianza entonces la funcion representa los
intervalos de confianza de nivel 1 correspondientes a cada columna y poblacion.
v=skewness(X)

Asimetra.

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

87

34 Estadstica 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)

34.7.

Matriz de correlaciones de X1.

Representaciones gr
aficas

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 el
vertice en el centro. Si sep(i)=1 entonces el sector correspondiente a la frecuencia x(i) tiene el vertice
separado ligeramente del centro. La variable etiq es un argumento opcional que contiene las etiquetas de
las categoras 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 an
alogos a
los 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 locacilizan en las abcisas especificadas en x.
4. barh(...): Se diferencia de las representaciones anteriores en que los rectangulos se dibujan horizontalmente.
Las funciones anteriores admiten tres argumentos opcionales: bar(...,anchura,estilo,aspecto). anchura establece la separacion de los rectangulos dentro de cada grupo. Con anchura=1 se elimina dicha
separacion. El valor por defecto es 0.8. estilo determina el modo en el que se dibujan los rect
angulos
dentro 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

34 Estadstica Descriptiva
representaciones sin apilar). Finalmente, aspecto incide sobre los colores, el estilo y la anchura de lnea
utilizados, etc.
bar3(...),bar3h(...) Diagrama de rectangulos tridimensional. Sus argumentos y el resultado que producen son analogos a los anteriores. estilo admite el argumento adicional detached para producir la
representacion espacial habitual.
pareto(v,nombres) Dibuja un diagrama de Pareto. La variable nombres contiene las nombres de las
categoras 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 extienden
entre los valores mnimo y maximo de v.
hist(v,x): Dibuja el histograma resultante de un agrupamiento en length(x) clases centradas en los
elementos de x.
hist(v,n): Dibuja el histograma resultante de un agrupamiento en n clases iguales que se extienden
entre los valores mnimo 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 eval
ua en cada columna y
los 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),limites(k+1)) (la u
ltima clase es termina en limites(end)). v2 contiene la frecuencia de cada clase e ind los
indices que localizan la clase a la que pertenece cada elemento de v1. El histograma se representa mediante
bar(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)). s
y c son argumentos opcionales que indican el tama
no y el color de los puntos representados. filled se
utiliza para rellenar dichos puntos.
scatter3(x,y,z,s,c,filled) Scatterplot tridimensional. Sus argumentos y el resultado que producen son
an
alogos 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 smbolo utilizado para representar los datos outliers. Por defecto toma el valor
simb=+.
Departamento de Matematica Aplicada a la Tecnica. Universidad de Valladolid.

89

34 Estadstica 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 intercuartlico. lb=1.5 es el valor por
defecto.
gline(fig)

Dibuja interactivamente una recta en la ventana grafica fig. gline() hace referencia a
la ventana grafica activa.
refline(a,b)
lsline

A
nade la recta y = ax + b a la figura actual.

A
nade la recta de ajuste mnimo 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)

A
nade 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 potencia
de mayor grado.
errorbar(X,Y,L,U,simbol) Representa los puntos (X(i,j),Y(i,j)) y prolongaciones verticales determinadas 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 que
controla el tipo de lnea, el smbolo 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 atpicos, siguiendo el
criterio 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 intercuartlico 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 contener
el 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 sus
padres:

Los dos padres fuman


Solo uno de los padres fuma
Ninguno de los padres fuma

Estudiantes
fumadores
400
416
188

Estudiantes
no fumadores
1380
1823
1168

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

90

34 Estadstica Descriptiva
Representa estos datos en un diagrama de barras. A
nade ttulo y una leyenda con el nombre de las
categoras 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 n


umeros
naturales. Dicha tabla debe contener las frecuencias absolutas, relativas, absolutas acumuladas y relativas acumuladas.

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

91

Hora 35

Modelos de Probabilidad
35.1.

Modelos de probabilidad implementados en MATLAB

MATLAB tiene implementadas las siguientes distribuciones de probabilidad (entre parentesis se muestra
una 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 (seg
un que el modelo sea
continuo o discreto), su media y varianza, la funcion de distribucion, la inversa de la funcion de distribuci
on
(percentiles) y genera n
umeros pseudoaleatorios.

35.2.

Funci
on 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 distribuci
on
algunos de estos parametros pueden ser innecesarios) en las abcisas especificadas como elementos de la matriz
92

35 Modelos de Probabilidad
X. Los argumentos X, A1, A2 y A3 deben tener todos el mismo tama
no excepto valores escalares (que funcionan
como matrices constantes con el mismo tama
no que el resto de los argumentos).

35.3.

Funci
on de Distribuci
on

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 Funci
on de Distribuci
on (percentiles)

Y = icdf(nombre,X,A1,A2,A3)

Calcula los percentiles del modelo nombre siguiendo las pautas

descritas inicialmente.

35.5.

N
umeros aleatorios

Y = random(nombre,A1,A2,A3,m,n)

Genera a partir de la distribucion nombre una matriz de


tama
no m n con n
umeros 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 n
umeros aleatorios con n filas.

35.6.

Media y varianza

Las funciones que calculan la media y la varianza de los modelos de probabilidad descritos inicialmente
se construyen a
nadiendo 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

35 Modelos de Probabilidad

35.7.

Ejercicios

1.

Aproximar mediante simulacion p(log |X| + X 3 (1, 2)) siendo X una variable aleatoria con distribucion 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=1


y B=2.

4.

Crea una funcion que simule n


umeros pseudoaleatorios seg
un la distribucion de probabilidad dada por
la siguiente funcion de densidad:
1
f (x) = e|x| ,
2

< x < .

5. Ejecuta las siguientes demos: disttool.m y randtool.m.

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

94

Hora 36

Estimaci
on de Par
ametros y Contraste de
Hip
otesis
[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 es
significativo (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 desconocido. 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

36 Estimaci
on de par
ametros y Contraste de Hip
otesis
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 es
significativo (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 funci
on 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 es
significativo (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 signos
para constrastar si la mediana de la poblacion muestreada en muestra 1 es m. 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 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, si
el 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

36 Estimaci
on de par
ametros y Contraste de Hip
otesis
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, si
el 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 igualdad 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, si
el 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 tama
no 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 orden
correspondiente. Representa graficamente los intervalos obtenidos.

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

97

Hora 37

Modelos de Regresi
on y An
alisis de la
Varianza
37.1.

Modelos de regresi
on

int,
,
[,
int,stats] =regress(y,X,)

Regresion lineal m
ultiple. 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 ).
int,

La funcion calcula las variables ,


, 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 argumento modelo es opcional. Por defecto se considera el modelo lineal con termino constante. Otras opciones
son:
interaction: incluye el termino constante, los trminos lineales y los productos cruzados.
quadratic: incluye las interacciones y los terminos cuadraticos.
98

37 An
alisis de la Varianza y Modelos de Regresi
on
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 dise


no para un modelo
lineal aditivo con termino constante. model puede ser interaction, quadratic, purequadratic
(con el mismo significado que en la funci
on regstats) o bien una matriz de terminos que referencian en sus
filas a los regresores contenidos en X y en las columnas a los exponentes correspondientes a dichos regresores
en el modelo final.
stepwise(X,y,modelo,)

Entorno interactivo para la regresion stepwise. stepwise(X,y) ajusta un


modelo de regresi
on de y sobre las columnas de X. Se muestran tres ventanas graficas para controlar interactivamente la incorporacion o eliminacion de terminos en el modelo. La funcion admite dos argiumentos
opcionales: el vector modelo, que contiene los ndices de las columnas de X que seran incluidos en el modelo
incial, y , que indica el nivel de confianza empleado en el proceso stepwise. Por defecto se considera el
modelo completo y = 1 (1 0,025)(1/p) siendo p el n
umero de columnas de X. Este nivel de confianza
corresponde al Metodo de Bonferroni.
Los coeficientes de la regresion se representan con un crculo verde. Los terminos del modelo que son
significativos se representan mediante lneas solidas y los que no lo son a traves de lneas punetadas.
Un Click sobre las lneas de los intervalos de confianza permite conocer el estado de los coeficientes
del modelo. Si la lnea 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

37 An
alisis de la Varianza y Modelos de Regresi
on

37.2.

An
alisis 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 contraste
de 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 de
cada elemento de x. Las componentes de grupo son n
umeros naturales con valor mnimo 1 y valor m
aximo
el n
umero de poblaciones o grupos comparados. La funcion devuelve la tabla ANOVA y los diagramas de
caja 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 otro
factor y a las repeticiones rep de cada grupo. El resultado es el p-valor para el contraste de igualdad de
medias. La funcion devuelve la tabla ANOVA.
D = dummyvar(grupo)

Genera una matriz de dise


no con columnas 0-1. grupo es una matriz cuyas
columnas hacen referencia a factores y contienen n
umeros naturales que indican el grupo al que pertenecen
los elementos de cada fila de un determinado vector columna respuesta. D tiene una columna para cada valor
diferente 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 varias
mezclas de cementos. Cada mezcla contiene cuatro ingredientes distintos y el calor desprendido depende
de la cantidad de cada ingrediente presente en la mezcla. Ajusta un modelo de regresion a estos datos.

2.

Para detectar la presencia de insectos da


ninos en los campos de cultivo, se sit
ua en estos campos
laminas de plastico que contienen un material pegajoso en su superficie y se examinan los insectos
capturados en las laminas. Unos investigadores situaron 24 laminas, seis de cada color, ubicadas al
azar en un campo de avena y determinaron el n
umero de insectos capturados:
Color de la l
amina
Azul
Verde
Blanco
Amarillo

16
37
21
45

Insectos capturados
11 20 21 14
32 20 29 37
12 14 17 13
59 48 46 38

7
32
20
47

Que colores atraen mas a los insectos?

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

100

Hora 38

Encuesta final

101

También podría gustarte