fernando oropeza rosales -...

Post on 09-Jul-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related