MatLab - Comandos Basicos Funciones

70
1 Introducción al MATLAB Introducción al MATLAB

Transcript of MatLab - Comandos Basicos Funciones

Page 1: MatLab - Comandos Basicos Funciones

11

Introducción al MATLABIntroducción al MATLAB

Page 2: MatLab - Comandos Basicos Funciones

22

Contenido del Curso

1. Entorno de MATLAB

2. Comandos Básicos

3. Tratamiento de Escalares, Vectores y Matrices

4. Instrucciones de control: IF-FOR-WHILE

5. Ordenamiento de vectores y matrices

Page 3: MatLab - Comandos Basicos Funciones

33

Comandos Comandos Básicos de Básicos de MATLABMATLAB

Page 4: MatLab - Comandos Basicos Funciones

4

Entorno de MATLAB

MATLAB MATrix LABoratory

Programa basado en Matrices

Vectores y escalares también pueden ser considerados como matrices

Page 5: MatLab - Comandos Basicos Funciones

Icono de MATLAB

5

Page 6: MatLab - Comandos Basicos Funciones

6

Ventana de comando

Histórico de comandosRuta de trabajo

Page 7: MatLab - Comandos Basicos Funciones

Definiendo una Matriz Array: Es un conjunto de valores organizados

en filas y columnas, que se les designa un nombre.

7

Fila 1

Fila 2

Fila 3

Fila 4

Col 1Col 2Col 3Col 4 Col 5

arr(3,2)arr(7)

Page 8: MatLab - Comandos Basicos Funciones

Definiendo una Matriz

Los elementos de una filafila son separados por “espacios” o “comas”

El final de cada filafila es indicado por un “punto y punto y comacoma”

La lista de elementos de una matriz está delimitada por [ ]

8

Page 9: MatLab - Comandos Basicos Funciones

9

Definiendo una Matriz Escalar >> 25 Matriz 1x1

Vector Fila >> [3 -4 6] Matriz 1x3

Vector Columna >> [5; 10;-3; 6] Matriz 4x1

Matriz >> [2 4; 5 -8; 2 0] Matriz 3x24 1

5

10

3

6

3 2

2 4

5 8

2 0

Page 10: MatLab - Comandos Basicos Funciones

Indexado de Matrices

10

4 10 1 6 2

8 1.2 9 4 25

7.2 5 7 1 11

0 0.5 4 5 56

23 83 13 0 10

1

2

3

4

5

1 2 3 4 51 6 11 16 21

2 7 12 17 22

3 8 13 18 23

4 9 14 19 24

5 10 15 20 25

A =

A(3,1)A(3)

A(1:5,5)A(:,5) A(21:25)

A(4:5,2:3)A([9 14;10 15])

A(1:end,end) A(:,end)A(21:end)’

Page 11: MatLab - Comandos Basicos Funciones

Definiendo una Matriz

11

Page 12: MatLab - Comandos Basicos Funciones

Valores Especiales• pi: valor hasta 15 dígitos significativos• i, j: sqrt(-1), número imaginario• Inf: infinito (división por 0)• NaN: Not-a-Number (división de cero por cero)• clock: fecha y hora momentánea en la forma de

un vector fila de 6 elementos conteniendo el año, mes, día, hora, minuto y segundo

• date: fecha actual en string como 16-Feb-2010• eps: épsilon es la menor diferencia entre dos

números• ans: almacena el resultado de una expresión

12

Page 13: MatLab - Comandos Basicos Funciones

Formato de Números

>> valor = 12.345678901234567;format short 12.3457format long 12.34567890123457format short e 1.2346e+001format long e 1.234567890123457e+001format short g 12.346format long g 12.3456789012346format rat 1000/81

13

Page 14: MatLab - Comandos Basicos Funciones

Archivo de Datos

• save filename var1 var2 …>> save myfile.mat x y binary>> save myfile.dat x –ascii ascii

• load filename>> load myfile.mat binary>> load myfile.dat –ascii ascii

14

Page 15: MatLab - Comandos Basicos Funciones

Funciones Integradas• result = function_name( input );

– abs, sign– log, log10, log2– exp– sqrt– sin, cos, tan– asin, acos, atan– max, min– round, floor, ceil, fix– mod, rem

• help elfun Ayuda de las funciones matemáticas elementales

15

Page 16: MatLab - Comandos Basicos Funciones

Comandos Básicos

16

Page 17: MatLab - Comandos Basicos Funciones

Funciones para la Manipulación de Matrices• transpose (’): Matriz Transpuesta • rot90: Rotar Matriz 90• tril: Parte Triangular Inferior de una Matriz• triu: Parte Triangular Superior de una Matriz• cross: Vector del producto cruzado• dot: Vector dot product• det: Determinante de la Matriz• inv: Inversa de la Matriz• eig: Evalúa los eigenvalues y eigenvectors• rank: Rango de la matriz

17

Page 18: MatLab - Comandos Basicos Funciones

sumsumSuma de los elementos de cada columna de una matriz

18

2 4

5 8

2 0

( ) [9 4]

A

sum A

Page 19: MatLab - Comandos Basicos Funciones

Transpuesta ( ’’ )

Transpuesta de una matriz

19

5

10

3

6

' 5 10 3 6

A

A

AA transpuesta

Page 20: MatLab - Comandos Basicos Funciones

diagdiag Extrae la diagonal de uma matriz cuadrada

20

Page 21: MatLab - Comandos Basicos Funciones

magic

A = magic(4)ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

21

Genera una matriz nxn con números enteros desde 1 hasta n^2, cuya suma de cada fila y columna es igual. El orden n debe ser igual o mayor de 3.

Genera una matriz nxn con números enteros desde 1 hasta n^2, cuya suma de cada fila y columna es igual. El orden n debe ser igual o mayor de 3.

>> sum(M)

ans = 34 34 34 34

>> sum(M')'

ans = 34 34 34 34

>> sum(diag(M))

ans = 34

>> sum(M)

ans = 34 34 34 34

>> sum(M')'

ans = 34 34 34 34

>> sum(diag(M))

ans = 34

Page 22: MatLab - Comandos Basicos Funciones

fliplrfliplr Espejo HorizontalEspejo horizontal de una matriz

>> A

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Page 23: MatLab - Comandos Basicos Funciones

fliplrfliplr Espejo Horizontal

>> fliplr(A)

A =

13 2 3 16

8 11 10 5

12 7 6 9

1 14 15 4

Page 24: MatLab - Comandos Basicos Funciones

flipudflipud Espejo VerticalEspejo vertical de una matriz

>> A

A =

16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Page 25: MatLab - Comandos Basicos Funciones

flipudflipud Espejo Vertical

>> flipud(A)

A =

4 15 14 1

9 6 7 12

5 10 11 8

16 3 2 13

Page 26: MatLab - Comandos Basicos Funciones

26

Suma de MatricesSuma de Matrices

2 4 4 14 2 18

5 8 1 8 6 0

2 0 3 10 1 10

Page 27: MatLab - Comandos Basicos Funciones

Indexación de Matrizes

Matriz Bidimensional: A(i,j)A(i,j) es el elemento de la i-ésima fila, j-ésima columna

A = 16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

A(2,3) = 11

Page 28: MatLab - Comandos Basicos Funciones

Indexación de Matrizes

Suma de los Elementos de la 2a fila:

>> A(2,1) + A(2,2) + A(2,3) + A(2,4)

ans =

34

Page 29: MatLab - Comandos Basicos Funciones

Redimensionamiento Automático

Para la Matriz

A = 16 3 2 13

5 10 11 8

9 6 7 12

4 15 14 1

Page 30: MatLab - Comandos Basicos Funciones

Redimensionamiento Automático

>> X = A;

>> X(5,5) = 29

X =

16 3 2 13 0

5 10 11 8 0

9 6 7 12 0

4 15 14 1 0

0 0 0 0 29

Page 31: MatLab - Comandos Basicos Funciones

El operador ‘:’ (dos puntos)

>> 1:10

ans =

1 2 3 4 5 6 7 8 9 10

>> 1:3:27

ans =

1 4 7 10 13 16 19 22 25

Page 32: MatLab - Comandos Basicos Funciones

El operador ‘:’ (dos puntos)

>> 60:-7:0

ans =

60 53 46 39 32 25 18 11 4

>> 0:pi/4:pi

ans =

0 0.7854 1.5708 2.3562 3.1416

Page 33: MatLab - Comandos Basicos Funciones

El operador ‘:’ y Matrices

A(1:m, n)A(1:m, n): primeros mm elementos de la nn-ésima columnacolumna

A(:, n)A(:, n): todos los elementos de la nn-ésima columnacolumna

A(:, end)A(:, end): todos los elementos de la últimaúltima columnacolumna

A(m, 1:n)A(m, 1:n): primeros nn elementos de la mm-ésima filafila

A(m, :)A(m, :): todos los elementos de la mm-ésima filafila

A(end,:)A(end,:): todos los elementos de la últimaúltima filafila

Page 34: MatLab - Comandos Basicos Funciones

El operador “:” (dos puntos) Matriz Bidimensional: A(i,j) es el elemento de la i-

esima fila, j-esima columna

A(1,4) = 13 A(3,2) = 6

34

Page 35: MatLab - Comandos Basicos Funciones

El operador ‘:’ y Matrices

>> A(1:4,1)

ans =

16

5

9

4

>> A(:,1)

ans =

16

5

9

4

O

Page 36: MatLab - Comandos Basicos Funciones

Funciones de Creación de Matrices

zeroszeros: matriz de ceros onesones: matriz de unos randrand: matriz de números aleatórios

con distribución uniforme randnrandn: matriz de números aleatórios

con distribución normal (Gaussiana)

Page 37: MatLab - Comandos Basicos Funciones

Funciones de Creación de Matrices

>> Z = zeros(3,5)

Z =

0 0 0 0 0

0 0 0 0 0

0 0 0 0 0

Filas Columna

Page 38: MatLab - Comandos Basicos Funciones

Funciones de Creación de Matrices

>> Q = 4*ones(5,5)

Q =

4 4 4 4 4

4 4 4 4 4

4 4 4 4 4

4 4 4 4 4

4 4 4 4 4

Page 39: MatLab - Comandos Basicos Funciones

Funciones de Creación de Matrices

>> N = rand(2,4)

N =

0.95013 0.60684 0.8913 0.45647

0.23114 0.48598 0.7621 0.018504

rand : genera números o vectores aleatorios distribuidos uniformemente.

rand : genera números o vectores aleatorios distribuidos uniformemente.

Page 40: MatLab - Comandos Basicos Funciones

Exclusión de Filas o Columnas

>> X = A;

>> X(:,2) = []

X =

16 2 13

5 11 8

9 7 12

4 14 1

Page 41: MatLab - Comandos Basicos Funciones

Algebra Lineal para Matrices

++ : suma - - : substracción / / : división de matrices * * : multiplicación de matrices ^ ^ : potencia de una matriz inv inv : inversa de una matriz

Page 42: MatLab - Comandos Basicos Funciones

Operadores Aritméticos para Matrices

++ : suma

-- : substracción

././ : división elemento a elemento

.*.* : multiplicación elemento a elemento

.^ .^ : potencia elemento a elemento

Page 43: MatLab - Comandos Basicos Funciones

Aritmética x Algebra Lineal

>> A = magic(4);

>> B = A+A

B = 32 4 6 26

10 22 20 16

18 14 12 24

8 28 30 2

>> A = magic(4);

>> C = A-A

C = 0 0 0 0

0 0 0 0

0 0 0 0

0 0 0 0

Page 44: MatLab - Comandos Basicos Funciones

Aritmética x Algebra Lineal

>> A = magic(4);

>> B = A./A

B = 1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

>> A = magic(4);

>> C = A/AWarning: Matrix is close to singular

or badly scaled. Results may be inaccurate. RCOND = 9.796086e-018.

C = 1 0 0 0

-0.67 -1 2 0.67

-0.04 -0.13 1.13 0.04

0 0 0 1

Page 45: MatLab - Comandos Basicos Funciones

Aritmética x Algebra Lineal

>> A = magic(4);

>> B = A.*A

B =

256 4 9 169 25 121 100 64

81 49 36 144

16 196 225 1

>> A = magic(4);

>> C = A*A

C = 345 257 281 273

257 313 305 281

281 305 313 257

273 281 257 345

Page 46: MatLab - Comandos Basicos Funciones

Aritmética x Algebra Lineal

>> A = magic(4);

>> B = A.^2

B =

256 4 9 169 25 121 100 64

81 49 36 144

16 196 225 1

>> A = magic(4);

>> C = A^2

C = 345 257 281 273

257 313 305 281

281 305 313 257

273 281 257 345

Page 47: MatLab - Comandos Basicos Funciones

Comando findPara encontrar elementos de una matriz

A = [9 -2 4 5 -5 0 3 4]

>>x =find(A==4)

x = 3 8

>>A(x)ans= 4 4

47

Condición lógica

Indices de los elementos con valor igual a 4

Page 48: MatLab - Comandos Basicos Funciones

Comando findPara encontrar elementos de una matriz

A = 1 14 5 7 1 14 2 10 3

>>x =find(A==14)x = 4 8>>A(x)ans= 14 14

48

Condición lógica

Indices de los elementos con valor igual a 14

Page 49: MatLab - Comandos Basicos Funciones

Comando findPara encontrar elementos de una matriz

A = 1 14 5 7 1 14 2 10 3

>>x =find(A>2 & A<10)x = 2 7 9>>A(x)ans= 7 5 3

49

Condición lógica

Indices de los elementos con valor mayor que 2 y menor que 10

Page 50: MatLab - Comandos Basicos Funciones

Comandos round/ ceil / floorUsados para redondeo Redondeoround(1.2)=1round(1.5)=2

Redondeo para arribaceil(1.2) = 2ceil(1.8) = 2

Redondeo para abajofloor(1.2) = 1floor(1.8) = 1 50

Page 51: MatLab - Comandos Basicos Funciones

Comando abs/ sqrt/ log/ log2/ log10 Valor absoluto abs(-2.3) = 2.3

Raiz cuadrada sqrt(4) = 2

Logaritmo neperiano base “e” log(16) = 2.077

Logaritmo en base 2 log2(16) = 4

Logaritmo en base 10 log10(100) = 2

51

Page 52: MatLab - Comandos Basicos Funciones

Comando plot

x = 0:0.1:10; %variacion del eje xy = sin(x); %variacion del eje yplot(x,y) %Grafica x versus y

52

Page 53: MatLab - Comandos Basicos Funciones

Comando plot

t = 0:0.1:10;y = sin(t);plot(t,y)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')

53

Page 54: MatLab - Comandos Basicos Funciones

Comando plot

t = 0:0.1:10;y1 = sin(t);y2 = cos(t)plot(t,y1,t,y2)gridtitle('onda seno y onda coseno')xlabel('eje x')ylabel('eje y')legend('seno', 'coseno')

54

Page 55: MatLab - Comandos Basicos Funciones

Comando subplot

55

Syntax:

»subplot(2,2,1);

» …

»subplot(2,2,2)

» ...

»subplot(2,2,3)

» ...

»subplot(2,2,4)

» ...

»subplot(2,2,1);

» …

»subplot(2,2,2)

» ...

»subplot(2,2,3)

» ...

»subplot(2,2,4)

» ...

subplot(rows,cols,index)subplot(rows,cols,index)

Page 56: MatLab - Comandos Basicos Funciones

Comando stem

t = 0:0.1:10;y = sin(t);stem(t,y1)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')

56

Page 57: MatLab - Comandos Basicos Funciones

Comando min / max

A = [2 -3 6 -8 3] [valor, indice] = min(A)valor = -8indice = 4

[valor, indice] = max(A)valor = 6indice = 3

57

Page 58: MatLab - Comandos Basicos Funciones

Problema 1 Para la matriz A, Substituir los elementos de las filas 2 a 3

y columnas 1 a 2 por una matriz cuadrada B, de unos de orden 2

A = 3 -2 5 5 6 9 -3 5 10

B = 1 1 1 1

58

Page 59: MatLab - Comandos Basicos Funciones

Problema 1

A =[3 -2 5; 5 6 9; -3 5 10]B = ones(2,2)A(2:3,1:2) = B

A = 3 -2 5 1 1 9 1 1 10

59

Page 60: MatLab - Comandos Basicos Funciones

Problema 2 Determinar el indice de t, donde la función

y=t^2 es minima

t = -10:0.1:10;y = t.^2;plot(t,y)[valor, indice] = min(y)indice=101t(indice)= 0

60

Page 61: MatLab - Comandos Basicos Funciones

Funciones m-file

61

Abrir un editor

Page 62: MatLab - Comandos Basicos Funciones

Funciones m-file

62

Ventana de comando

Editor para generar programas con extensión *.m

Page 63: MatLab - Comandos Basicos Funciones

63

Page 64: MatLab - Comandos Basicos Funciones

Funciones m-file Para ejecutar el programa

1. Desde el editor presionar la tecla F52. Desde la ventana de comando, llamar al archivo ejemplo.m

64

Tecla:F5

Page 65: MatLab - Comandos Basicos Funciones

Problema 3

Realizar un programa para construir una Matriz

A = [3 5; 9 1]B = [-2 3]C = [10; 15]D = 1

65

Page 66: MatLab - Comandos Basicos Funciones

Funciones escritas por el usuario

66

Page 67: MatLab - Comandos Basicos Funciones

Funciones escritas por el usuario

67

Uso de la función

Page 68: MatLab - Comandos Basicos Funciones

Problema 4

Para la ecuación

t = 0:0.1:100;h = 60+2.13*t.^2 - 0.0013*t.^4+0.00003*t.^4.751

Realizar un programa para Graficar t vs h Determinar el valor de t, donde h es máximo Determinar el valor de t, donde h es cero

68

Page 69: MatLab - Comandos Basicos Funciones

Problema 4

t = 0:0.1:100;h = 60 + 2.13*t.^2 - 0.0013*t.^4 + 0.00003*t.^4.751[valor, indice] = max(h)t(indice) z = find(h >= 0)t(z(end))

plot(t,h),grid

69

Page 70: MatLab - Comandos Basicos Funciones

Problema 5 Generar 10000 números aleatorios, con

distribución Gaussiana, con valor medio 10 y desvio padrón 2

>> r = 10 + 2*randn(1,10000)>> hist(r)

70