Fernando Oropeza Rosales -...
Transcript of Fernando Oropeza Rosales -...
Introducción a Matlab
Jiutepec, Morelos 27, 28 y 29 de Abril de 2011
Fernando Oropeza Rosales
La clase será Miércoles, Jueves y Viernes
Horario de 09:00 a 12:50 una hora con 20 min. para
comer, por la tarde de 14:10 a 18:00 hrs
Logística
Día Lugar Horario
Miércoles 27 Sala de video-conferencias
Sala de video-conferencias
09:00 a 13:20
14:40 a 18:00
Jueves 28 Salón 2 DEPFI
Salón 2 DEPFI
09:00 a 13:20
14:40 a 18:00
Viernes 29 Salón 2 DEPFI
Salón 2 DEPFI
09:00 a 13:20
14:40 a 18:00
En el DVD están disponibles 3 directorios, abran el
directorio que corresponda con el tipo de máquina que
tienen (win32 ó win64) y ejecutar setup.exe
Instalando
Instalando
Seleccionar la opción install without using internet y darle
next, les pedirá que acepten los términos de la licencia y
pasan a la siguiente ventana
Instalando
En el directorio /crack abrir el archivo install y copiar el
numero de llave que aparece en la opción standalone
Instalando
Seleccionan la opción Provide File Installation Key y
copian ahí el número que viene del archivo install le dan
continuar …
Instalando
Les preguntará qué tipo de instalación quieren hacer,
seleccionan Typical y continúan, les mostrará el path en
el que instalará Matlab y les avisará que si no existe lo
tiene que crear, ustedes aceptan….
Instalando
Confirman que esa es la instalación que quieren y
continúan, les aparecerá la ventana de estado, que
muestra el avance en la instalación (tomará varios
minutos)
Instalando
Al terminar les pedirá que activen el Matlab, seleccionen
la opción Activate manually Without Internet, y continúen
InstalandoElegir la opción de Provide the path to the license file y
utilizar el boton browse para señalar el path al archivo
lic_standalone.dat que se encuentra dentro del directorio
/crack
Iniciando Matlab
Configurando el espacio de trabajo
Ventana de comandosWorkSpace
Editorfiguras
Configurando el espacio de trabajo
Qué es Matlab?
MATLAB, de las palabras “MATrix LABoratory”. Es un
Lenguaje de Programación de Cuarta Generación (4GL)
que son herramientas enfocadas a optimizar el desarrollo
de software. MATLAB está basado en el uso de técnicas
de álgebra de matrices para resolver problemas, sin tener
que escribir los programas en lenguajes tradicionales
como C++ o Fortran.
Matlab es un lenguaje interpretativo (no compilado)
Hoy en día existen millones de usuarios en el mundo que
desarrollan y comparten programas en Matlab para
múltiples aplicaciones y disciplinas
Comandos Básicos
Para salir de Matlab:
>> exit
>> quit
Para cambiar el directorio de trabajo se puede hacer en línea
utilizando los comandos cd y pwd o se puede utilizar la
opción gráfica (cambiarse al directorio /Curso_IMTA)
Directorio de Trabajo
En el directorio de su preferencia generar un subdirectorio
de nombre:
/Curso_IMTA
Dentro de él, generen un subdirectorio de nombre:
/programas
Dentro de él generar un subdirectorio de nombre:
/basicos
Cambiar su Matlab a ese directorio (cd, pwd)
Comandos Básicos
Para obtener información sobre el uso de los comandos y
funciones en Matlab, se utiliza help y el nombre del
comando, esto nos da una descripción corta del uso de la
función, también se puede utilizar la opción doc, que
muestra una explicación más detallada.
Si se utiliza help sin argumento, se muestran todos los
tópicos de ayuda
Comandos BásicosAsignación de variables:
>> x=2
x=
2
Se pueden definir vectores
>> x=[3 2 6 8]
x=
3 2 6 8
También se pueden definir matrices
>> x=[1 2 3;4 5 6;7 8 9]
x=
1 2 3
4 5 6
7 8 9
Comandos Básicos
Operaciones matemáticas elementales:
>> x=2+3
x=
5
Si no se asigna el resultado a una variable, matlab lo
asigna a la variable ans (answer)
>> 2+3
ans=
5
Para saber que variables tengo definidas utilizo el
comando who, para saber el valor de una variable tecleo
la variable y me responde con el valor
Operaciones matemáticaselementales
^ Exponenciación
* Multiplicación
/ División
sqrt Raíz cuadrada
+ Suma
- Resta
Las operaciones se realizan en este orden de prioridad.
Si se quiere forzar un determinado orden, se deben
utilizar paréntesis
>> 2/2+1
ans=
2
Operaciones matemáticaselementales
>> 2/(2+1)
ans=
0.6667
Para definir decimales se utiliza punto (no coma) y en
Matlab las mayúsculas y minúsculas no son iguales, es
decir X es una variable distinta que x
Funciones elementales
sin seno
cos coseno
tan tangente
sec secante
csc cosecante
cot cotangente
exp exponencial
log logaritmo natural
sqrt raíz cuadrada
abs valor absoluto
Para obtener las funciones trigonométricas inversas, se
añade una a delante del nombre de la función, todos los
argumentos están dados en radianes
Enlace con el sistema operativo
El comando ! Realiza un enlace entre Matlab y el sistema
operativo existente, ejemplo:
>> !del salida.dat
Este comando borrará el archivo salida.dat del directorio
de trabajo
Para compactar/descompactar archivos
>> gzip
>> tar
Otros comandos útiles
ver Muestra que versión de Matlab está instalada
what Muestra los elementos Matlab que hay en el
directorio de trabajo (archivos que no estan
relacionados con Matlab no serán mostrados)
clock Muestra la fecha y hora actual (vector de 6
elementos)
date Muestra la fecha actual del sistema
who Muestra que variables se encuentran definidas
whos Muestra mas información que who
clear Se utiliza para borrar variables de la memoria
clear all borra todas las variables en memoria
Otros comandos útiles
clf Limpia la ventana de figura activa
pwd Muestra el directorio de trabajo actual
cd Nos permite cambiar de directorio
cd .. Baja un nivel en la estructura de directorios
Salvar y almacenar variables
Para salvar el valor de una variable en un archivo de texto
>> save nombre.archivo variable -ascii
Para leer el archivo de texto
>> load nombre.archivo
Para asignar el contenido del archivo a una variable
>> x= load(„nombre.archivo‟)
Salvar y almacenar variables
Para salvar todas las variables que se tienen definidas en
una sesión:
>> save misesion
Esto genera un archivo misesion.mat en el directorio
actual de trabajo que contiene TODAS las variables que se
generaron en esa sesión hasta ese momento. Para leer
una sesión guardada, se utiliza load.
>> load misesion.mat
Esto cargará todas las variables que fueron previamente
guardadas en ese archivo
Precisión Toda la aritmética se realiza en doble precisión, lo cual
significa (para una máquina de 32 bits) 16 dígitos
decimales de ocurrencia, normalmente los resultados son
desplegados en formato corto.
>> a=sqrt(2)
a=
1.4142
Pero este formato se puede cambiar utilizando el comando
format, ej: format long
>> a=sqrt(2)
a=
1.41421356237310
Máximos y mínimos
Existen las funciones max y min que se utilizan para
encontrar el máximo y mínimo de una variable, si la
variable es un vector, arrojan un valor único, si es una
matriz arrojan el máximo o mínimo de cada columna
>> a=[ 3 5 1 10 8 7 6]
a=
3 5 1 10 8 7 6
max(a)
ans=
10
Máximos y mininos>> a=[7 2 3; 4 8 6; 1 4 9]
a=
7 2 3
4 8 6
1 4 9
>> max(a)
ans=
7 8 9
Si se quiere calcular el máximo o el mínimo de una matriz
se utiliza:
>> max(a(:))
ans=
9
Redondeo de númerosMatlab tiene funciones para redondear números de punto
flotante a enteros:
>> f=[-0.5 0.1 0.5];
Para redondear al entero más cercano
>> round(f)
ans= -1 0 1
Para redondear hacia el cero
>> fix(f)
ans= 0 0 0
Redondeo de númerosPara redondear al entero más cercano hacia arriba
>> ceil (f)
ans= 0 1 1
Para redondear al entero más cercano hacia abajo
>> floor(f)
ans= -1 0 0
Para calcular operaciones sobre todos los elementos de f
>> sum(f) suma
>> prod(f) producto
>> mean(f) promedio
Operadores
Las relaciones entre dos variables en MATLAB se pueden
establecer mediante ciertos operadores
< Menor que
> Mayor que
<= Menor o igual
>= Mayor o igual
== Igual
~= Diferente.
Nótese que "=" se usa para asignar un valor a una
variable, mientras que "==" se usa como un operador
Operadores Lógicos
Diferentes relaciones se pueden conectar mediante los
operadores lógicos
& y
| o
~ no
Condicionales
1) If-end Si la condición es verdadera ejecuta programa
2) if-else-end Si condición no es verdadera ejecuta 2
3) if-elseif-end Si condicion 1 no es verdadera evalua 2
Ciclos
El ciclo for tiene la siguiente forma:
for i=inicio:incremento:final
<programa>
end
ejemplo:
for i=1:5
c=2*i
pause(0.5);
end
Matlab permite que se utilice un vector como índice
for i=[2,4,5,7,11]
<programa>
end
Ciclos Anidados
for i=1:10
for j=1:10
A(i,j)=i/j;
end
end
Los índices de una matriz en matlab siempre representan
(número de renglón, número de columna)
while (condición)
<programa>
end
Ejercicios
Ir a Matlab /programas/basicos/P001_xy.m
Discutir opciones de “debuger”
Ejercicios
Verificar si la instrucción magic(7) efectivamente produce una
matriz en la que la suma de cada uno de sus renglones, de
cada una de sus columnas y de su diagonal son iguales
(utilizar la función diag)
Ejercicios
p = input('Escribe una palabra: ','s');
n=length(p);
anio = input('Escribe un año: ');
if(mod(anio,4)==0)
if(mod(i,7)==0)
Ejercicios
Manejo de FechasEn Matlab existen funciones especiales para el manejo de
fechas.
>> datenum(2011,04,27)
ans=
734620
Es el número de días que han transcurrido desde una
fecha de referencia (primero de enero del año 0000), este
número no tiene que ser entero, ya que en la función se
pueden incluir horas, minutos y segundos (para notar la
diferencia es necesario cambiar el formato a long)
Esto nos permite hacer operaciones con las fechas, p.e.
calcular los días que han transcurrido desde el 1 de enero
hasta la fecha de hoy
Manejo de Fechas
De la misma forma se puede convertir cualquier fecha que
se encuentra en formato de número a formato gregoriano
(fecha)
>> datestr(734650)
ans=
27-May-2011
En los archivos NetCDF es muy común que la fecha venga
dada en número de días (o de horas) transcurridas desde
una fecha de referencia y estas funciones son muy útiles
para trabajar las fechas.
Busqueda por índices globalesEn Matlab, existe una función para encontrar valores
específicos en un vector o en una matriz, la función es find
y nos regresa el índice global (o los índices globales) en el
que la variable analizada presente ese valor, ejemplo:
>>x=[1 2 5 7 9 10 1 9 6 3 1 8 5 6 1 11 12 13 1];
>>find(x==1)
ans=
1 7 11 15 19
Uno puede guardar esos indices en una variable y luego
utilizarlos para hacer operaciones específicas, ej.
>> indx=find(x==1);
>> x(indx)=0
ans=
0 2 5 7 9 10 0 9 6 3 0 8 5 6 0 11 12 13 0
Ejercicio
ind=find(x1<0);
Not-a-Number (NaN)
NaN es la representación aritmética de Not-a-Number, un
NaN se puede obtener como resultado de operaciones
matemáticas indefinidas como 0.0/0.0, además se utiliza
con frecuencia en datos bi o tri-dimensionales para indicar
las zonas en que cierta variable no está definida.
NaN(n) puede utilizarse como función y genera una matriz
de NaN‟s de nxn elementos.
Existe la función isnan que sirve para localizar los
elementos de un vector o matriz que son NaN, regresa
ceros en las posiciones de los elementos que no son NaN
y unos en las posiciones de los elementos que si son NaN
Not-a-Number (NaN)
Ejemplo:
>> x=[1 2 3 4 NaN; NaN 2 6 8 1; 2 8 9 NaN 9];
>> isnan(x)
ans=
0 0 0 0 1
1 0 0 0 0
0 0 0 1 0
Este resultado se puede asignar a una variable y combinar
con la función find como se muestra en el ejemplo:
Not-a-Number (NaN)
>> unos=isnan(x);
>> ind_nan=find(unos==1)
ind_ nan=
2
12
13
Nótese que los índices globales son el número de
elemento iniciando en el primer elemento del primer
renglón y contando los elementos de la primera columna,
luego la segunda y así hasta llegar al último elemento del
último renglón (que también es el último elemento de la
última columna).
Not-a-Number (NaN)
Una vez con los índices localizados, se pueden modificar
los valores de NaN por otro valor, p.e. por el número 66.
>> x(ind_nan)=66
x=
1 2 3 4 66
66 2 6 8 1
2 8 9 66 9
Recordando que la matriz original era
1 2 3 4 NaN
NaN 2 6 8 1
2 8 9 NaN 9