Aula 1 Comandos Basicos
Transcript of Aula 1 Comandos Basicos
11
Introducción al MATLABIntroducción al MATLAB
Ing. Rubén AcostaUniversidad Inca Garcilaso de la Vega
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
6. Lectura y escritura de archivos de audio
7. Lectura y escritura de archivos de imágenes
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 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 los elementos de una matriz es delimitada por [ ]
7
8
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
Definiendo una Matriz
9
Comandos Básicos
10
sumsumSuma de los elementos de cada columna de una matriz
11
2 4
5 8
2 0
( ) [9 4]
A
sum A
Transpuesta ( ’’ )
Transpuesta de una matriz
12
5
10
3
6
' 5 10 3 6
A
A
AA transpuesta
diagdiag Extrae la diagonal de uma matriz cuadrada
13
magic
A = magic(4)ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
14
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
19
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 elementos de la i-
esima fila, j-esima columna
A(1,4) = 13 A(3,2) = 6
27
El operador ‘:’ y Matrices
>> A(1:4,1)
ans =
16
5
9
4
>> A(:,1)
ans =
16
5
9
4
O
O Operador ‘:’ y Matrizes
>> A(:,4)
ans =
13
8
12
1
>> A(:,end)
ans =
13
8
12
1
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
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
41
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
42
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
43
Condición lógica
Indices de los elementos con valor mayor que 2 y menor que 10
Comando round/ ceil / floorUsado 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
44
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
45
Comando plot
x = 0:0.1:10; %variacion del eje xy = sin(x); %variacion del eje yplot(x,y) %Grafica x versus y
46
Comando plot
t = 0:0.1:10;y = sin(t);plot(t,y)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')
47
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')
48
Comando stem
t = 0:0.1:10;y = sin(t);stem(t,y1)gridtitle('onda seno')xlabel('eje x')ylabel('eje y')
49
Comando min / max
A = [2 -3 6 -8 3] [valor, indice] = min(A)valor = -8indice = 4
[valor, indice] = max(A)valor = 6indice = 3
50
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
51
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
52
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
53
Funciones m-file
54
Abrir un editor
Funciones m-file
55
Ventana de comando
Editor para generar programas con extensión *.m
56
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
57
Tecla:F5
Problema 3
Realizar un programa para construir una Matriz
A = [3 5; 9 1]B = [-2 3]C = [10; 15]D = 1
58
Funciones escritas por el usuario
59
Funciones escritas por el usuario
60
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
61
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
62
Problma 5 Generar 10000 números aleatorios, con
distribución Gaussiana, com valor medio 10 y desvio padrón 2
>> r = 10 + 2*randn(1,10000)>> hist(r)
63