Sunteți pe pagina 1din 70

1 1

Introduccin al MATLAB
2 2
Contenido del Curso
1. Entorno de MATLAB

2. Comandos Bsicos

3. Tratamiento de Escalares, Vectores y Matrices

4. Instrucciones de control: IF-FOR-WHILE

5. Ordenamiento de vectores y matrices
3 3


Comandos
Bsicos de
MATLAB


4
Entorno de MATLAB

MATLAB MATrix LABoratory

Programa basado en Matrices

Vectores y escalares tambin pueden ser
considerados como matrices


Icono de MATLAB

5

6
Ventana de comando
Histrico de comandos
Ruta 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 1 Col 2 Col 3 Col 4 Col 5
arr(3,2)
arr(7)
Definiendo una Matriz
Los elementos de una fila son separados por
espacios o comas

El final de cada fila es indicado por un punto y
coma

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 3x2


4 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 5
1 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 t hasta 15 dgitos significativos
i, j: sqrt(-1), nmero imaginario
Inf: infinito (divisin por 0)
NaN: Not-a-Number (divisin de cero por cero)
clock: fecha y hora momentnea en la forma de
un vector fila de 6 elementos conteniendo el
ao, mes, da, hora, minuto y segundo
date: fecha actual en string como 16-Feb-2010
eps: psilon es la menor diferencia entre dos
nmeros
ans: almacena el resultado de una expresin
12
Formato de Nmeros
>> valor = 12.345678901234567;
format short 12.3457
format long 12.34567890123457
format short e 1.2346e+001
format long e 1.234567890123457e+001
format short g 12.346
format long g 12.3456789012346
format 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 matemticas
elementales
15
Comandos Bsicos
16
Funciones para la Manipulacin
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: Evala los eigenvalues y eigenvectors
rank: Rango de la matriz

17
sum
Suma 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
(
(
(
=
(
(

=
A transpuesta
diag
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
nmeros 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
fliplr Espejo Horizontal
Espejo horizontal de una matriz

>> A
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
fliplr Espejo Horizontal
>> fliplr(A)
A =
13 2 3 16
8 11 10 5
12 7 6 9
1 14 15 4
flipud Espejo Vertical
Espejo vertical de una matriz

>> A
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
flipud Espejo Vertical
>> flipud(A)
A =
4 15 14 1
9 6 7 12
5 10 11 8
16 3 2 13
26
Suma de Matrices
2 4 4 14 2 18
5 8 1 8 6 0
2 0 3 10 1 10

( ( (
( ( (
+ =
( ( (
( ( (

Indexacin de Matrizes
Matriz Bidimensional: 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

Indexacin de Matrizes
Suma de los Elementos de la 2
a
fila:



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

ans =
34

Redimensionamiento Automtico
Para la Matriz

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



Redimensionamiento Automtico
>> 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): primeros m elementos de la n-sima
columna
A(:, n): todos los elementos de la n-sima columna
A(:, end): todos los elementos de la ltima columna
A(m, 1:n): primeros n elementos de la m-sima fila
A(m, :): todos los elementos de la m-sima fila
A(end,:): todos los elementos de la ltima fila
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 Creacin de Matrices
zeros: matriz de ceros
ones: matriz de unos
rand: matriz de nmeros aleatrios
con distribucin uniforme
randn: matriz de nmeros aleatrios
con distribucin normal (Gaussiana)
Funciones de Creacin 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 Creacin 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 Creacin 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 nmeros o
vectores aleatorios distribuidos
uniformemente.
Exclusin 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
- : substraccin
/ : divisin de matrices
* : multiplicacin de matrices
^ : potencia de una matriz
inv : inversa de una matriz

Operadores Aritmticos para Matrices
+ : suma
- : substraccin
./ : divisin elemento a elemento
.* : multiplicacin elemento a elemento
.^ : potencia elemento a elemento


Aritmtica 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

Aritmtica 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/A
Warning: 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
Aritmtica 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


Aritmtica 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 find
Para 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
Condicin lgica
Indices de los elementos
con valor igual a 4


Comando find
Para 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
Condicin lgica
Indices de los elementos
con valor igual a 14


Comando find
Para 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
Condicin lgica
Indices de los elementos
con valor mayor que 2 y
menor que 10
Comandos round/ ceil / floor
Usados para redondeo
Redondeo
round(1.2)=1
round(1.5)=2

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

Redondeo para abajo
floor(1.2) = 1
floor(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 x
y = sin(x); %variacion del eje y
plot(x,y) %Grafica x versus y

52
Comando plot
t = 0:0.1:10;
y = sin(t);
plot(t,y)
grid
title('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)
grid
title('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(rows,cols,index)
Comando stem
t = 0:0.1:10;
y = sin(t);
stem(t,y1)
grid
title('onda seno')
xlabel('eje x')
ylabel('eje y')



56
Comando min / max
A = [2 -3 6 -8 3]

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

[valor, indice] = max(A)
valor = 6
indice = 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 funcin
y=t^2 es minima

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



60
Funciones m-file
61
Abrir un
editor
Funciones m-file

62
Ventana de
comando
Editor para
generar
programas con
extensin *.m

63
Funciones m-file
Para ejecutar el programa
1. Desde el editor presionar la tecla F5
2. 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
funcin
Problema 4
Para la ecuacin

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 mximo
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 nmeros aleatorios, con
distribucin Gaussiana, con valor medio 10 y
desvio padrn 2

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

70