matlab - comandos basicos funciones
TRANSCRIPT
11
Introducción al MATLABIntroducción al MATLAB
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
33
Comandos Comandos Básicos de Básicos de MATLABMATLAB
4
Entorno de MATLAB
MATLAB MATrix LABoratory
Programa basado en Matrices
Vectores y escalares también pueden ser considerados como matrices
Icono de MATLAB
5
6
Ventana de comando
Histórico de comandosRuta de trabajo
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)
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
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
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)’
Definiendo una Matriz
11
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
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
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
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
Comandos Básicos
16
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
sumsumSuma de los elementos de cada columna de una matriz
18
2 4
5 8
2 0
( ) [9 4]
A
sum A
Transpuesta ( ’’ )
Transpuesta de una matriz
19
5
10
3
6
' 5 10 3 6
A
A
AA transpuesta
diagdiag Extrae la diagonal de uma matriz cuadrada
20
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
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
fliplrfliplr Espejo Horizontal
>> fliplr(A)
A =
13 2 3 16
8 11 10 5
12 7 6 9
1 14 15 4
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
flipudflipud Espejo Vertical
>> flipud(A)
A =
4 15 14 1
9 6 7 12
5 10 11 8
16 3 2 13
26
Suma de MatricesSuma de Matrices
2 4 4 14 2 18
5 8 1 8 6 0
2 0 3 10 1 10
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
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
Redimensionamiento Automático
Para la Matriz
A = 16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
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
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
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
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
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
El operador ‘:’ y Matrices
>> A(1:4,1)
ans =
16
5
9
4
>> A(:,1)
ans =
16
5
9
4
O
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)
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
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
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.
Exclusión de Filas o Columnas
>> X = A;
>> X(:,2) = []
X =
16 2 13
5 11 8
9 7 12
4 14 1
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
Operadores Aritméticos para Matrices
++ : suma
-- : substracción
././ : división elemento a elemento
.*.* : multiplicación elemento a elemento
.^ .^ : potencia elemento a elemento
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
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
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
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
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
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
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
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
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
Comando plot
x = 0:0.1:10; %variacion del eje xy = sin(x); %variacion del eje yplot(x,y) %Grafica x versus y
52
Comando plot
t = 0:0.1:10;y = sin(t);plot(t,y)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')
53
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
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)
Comando stem
t = 0:0.1:10;y = sin(t);stem(t,y1)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')
56
Comando min / max
A = [2 -3 6 -8 3] [valor, indice] = min(A)valor = -8indice = 4
[valor, indice] = max(A)valor = 6indice = 3
57
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
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
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
Funciones m-file
61
Abrir un editor
Funciones m-file
62
Ventana de comando
Editor para generar programas con extensión *.m
63
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
Problema 3
Realizar un programa para construir una Matriz
A = [3 5; 9 1]B = [-2 3]C = [10; 15]D = 1
65
Funciones escritas por el usuario
66
Funciones escritas por el usuario
67
Uso de la función
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
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
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