fernando oropeza rosales - unamcabernet.atmosfcu.unam.mx/publico/curso_imta/... · pequeño...

29
Introducción a Matlab Jiutepec, Morelos 27, 28 y 29 de Abril de 2011 Fernando Oropeza Rosales

Upload: others

Post on 15-May-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Introducción a Matlab

Jiutepec, Morelos 27, 28 y 29 de Abril de 2011

Fernando Oropeza Rosales

Page 2: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

La clase será Jueves y Viernes

Horario de 09:00 a 13:20 una hora con 20 min. para

comer, por la tarde de 14:20 a 18:00 hrs

Logística

Día Lugar Horario

Jueves 28 Sala de video-conferencias

Sala de video-conferencias

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

Page 3: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Ya subí la presentación de ayer a un servidor en la

UNAM, y hoy vamos a utilizar archivos que vamos a bajar

de ahí, la liga es:

Logística

http://cabernet.atmosfcu.unam.mx/publico/Curso_IMTA/

Page 4: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Funcionesfunction [argumentos de salida]=nombre_funcion(argumentos de entrada)

Ejemplo:

function [xx yy zz kk jj]=stat(x)

xx=sum(x);

yy=mean(x);

zz=std(x);

kk=min(x(:));

jj=max(x(:));

End

• Discutir ejemplo programa kk.m que llama a la función stat

• Discutir sobre las TOOLBOX en Matlab y como se dan de alta (generar

stat.m y moverla a directorio de toolboxes /tools_curso_imta/stat )

Page 5: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos MAYA v 1.0(Petición de Ch-Ch)

Terminar antes del descanso a las 11:30

Jiutepec, Morelos 27, 28 y 29 de Abril de 2011

Fernando Oropeza Rosales

Page 6: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

MAYA v1.0, es una base de datos generada en el SMN a

partir de los datos de la base de datos climatológicas

nacional (Clicom)

Page 7: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

Mapa de lluvia según MAYA, para el 01-10-1961

Page 8: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

Los archivos de MAYA son la

versión texto del formato

GRD de SURFER, son

archivos de texto, con un

encabezado que contiene el

número de divisiones de la

malla en “x” (157) y en “y”

(96) las coordenadas

máxima y mínima en

longitud (-117.2, -86 W) y en

latitud (14, 33 N).

Hacemos uso de la función

grd_read_v2.m e inside

(copiar a tod@s)

Page 9: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

Lo que necesita José (ch-ch) es extraer los nodos de MAYA

que están dentro del polígono del Estado de Morelos y

escribirlos en un archivo de texto, con los valores de longitud,

latitud y lluvia

-115 -110 -105 -100 -95 -9014

16

18

20

22

24

26

28

30

32

Precipitación acumulada diaria para el: 01-10-1961

0

10

20

30

40

50

60

Page 10: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

http://cabernet.atmosfcu.unam.mx/publico/Curso_IMTA/tools_curso_imta/

Para bajar las toolboxes que vamos a

necesitar para estos ejercicios

Sugerencia: generar un directorio temporal dentro del directorio del

curso (p.e. /kk) y bajar ahí los archivos compactados, cambiarse de

directorio en Matlab a ese directorio y descompactar todos los archivos

(unzip nombre.zip)

Después copiar todos los directorios a

/tools_curso_imta (generar este directorio)

En el directorio de toolbox de Matlab

Dar de alta en Set Path

Page 11: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con la base de datos Maya

Para bajar las toolboxes que vamos a

necesitar para estos ejercicios

http://cabernet.atmosfcu.unam.mx/publico/Curso_IMTA/programas/

Sugerencia: descompactar el archivo de la misma

forma que se hizo en el paso anterior y copiar o

mover el directorio surferP (recién descompactado) al

directorio /programas

Page 12: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Archivos NetCDF

Jiutepec, Morelos 27, 28 y 29 de Abril de 2011

Fernando Oropeza Rosales

Page 13: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Network Common Data Form es un set de software,

librerias y formatos de archivos (independientes de la

plataforma) que permiten la creación, acceso y

distribución de datos científicos en arreglos. (distribución

libre)

http://www.unidata.ucar.edu/software/netcdf/

¿Qué son los archivos NetCDF?

Page 14: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Un archivo NetCDF es

• Auto-descriptivo: contiene información (metadata) de los

datos que contiene

• Portable: Se puede acceder en cualquier computadora

independientemente del método de almacenamiento de

enteros, caracteres y números de punto flotante.

• Escalable: Se puede acceder en forma eficiente un

pequeño subconjunto de datos de un conjunto de datos

muy grande.

• Concatenable: Se pueden agregar datos a un archivo

(con la estructura adecuada)

• Compartible: Un usuario puede escribir en y muchos

otros leer al mismo tiempo un mismo archivo.

• Archivable: El acceso a todas las versiones de NetCDF

serán soportadas por el software actual y futuro

Page 15: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

¿Quién desarrolló NetCDF?

El software fue desarrollado por Glenn Davis, Russ Rew,

Ed Hartnett, John Caron, Steve Emmerson, y Harvey

Davies en el “Unidata Program Center” en Boulder,

Colorado, con contribuciones de muchos otros usuarios

de NetCDF

¿Como puedo trabajar con archivos NetCDF?

La distribución de NetCDF viene con interfaces para C,

Fortran 77, Fortran 90 y C++. Otros lenguajes (de cuarta

generación) que tienes sus propias interfaces son:

1) Ada , 2) IDL , 3) Java , 4) MATLAB , 5) Perl , 6) Python

, 7)R, 8) Ruby, 9) Tcl/Tk

Page 16: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Que necesita Matlab

•MEXNC es una interfaz “mex-file” para manejar los archivos

NetCDF en Matlab y tiene equivalentes uno a uno con la API

(Aplication Programming Interface) de C para NetCDF

•SNCTOOLS es un set de archivos “m” (scripts de Matlab)

que se basan en el uso de MEXNC

http://mexcdf.sourceforge.net/

Poner archivos en el directorio de “toolbox” y dar de alta en el

“path”

Page 17: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Instalando SNCTOOLS

Bajar de cabernet los archivos compactados para win32 o

win64, según sea su caso, descompactar y copiar los

directorio mexnc y snctools al directorio de toolboxes, y

darlos de alta en el path

http://cabernet.atmosfcu.unam.mx/publico/Curso_IMTA/tools_curso_imta/

Si no tiene permisos buscar:

\matlab\r2010a\toolbox\local\pathdef.m

Y cambiar permisos de escritura

Page 18: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Instalando SNCTOOLS

Para los que tienen Win-64 bits, ejecutar las siguientes

líneas en la ventana de comandos:

javaaddpath([pwd'/netcdfAll-4.1.jar']);

setpref('SNCTOOLS','USE_JAVA',true);

setpref('SNCTOOLS','USE_MEXNC',false);

(Ojo: por ahora ejecutar cada vez que se quiera utilizar,

checar si alguien sabe como dejarlo permanente)

http://mexcdf.sourceforge.net/downloads/8b_10a.php

Hacer

>> which nc_dump

>>help nc_dump

Page 19: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Probando las SNCTOOLS

Bajar el archivo prub.nc y guardarlo en el directorio

/programas y colocarse en ese directorio en Matlab

http://cabernet.atmosfcu.unam.mx/publico/Curso_IMTA/programas/

A continuación escribir:

>> f='prub.nc'

>> lon=nc_varget(f,'lon_coast');

>> lat=nc_varget(f,'lat_coast');

>> plot(lon,lat)

Page 20: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Trabajando con archivos de WRF(Petición de Fabian)

Jiutepec, Morelos 27, 28 y 29 de Abril de 2011

Fernando Oropeza Rosales

Page 21: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Simulaciones Operativas

Las simulaciones que vamos a utilizar fueron generadas

por la versión operativa de WRF que han desarrollado en

el grupo del Dr. Jorge Zavala del CCA (con

financiamiento parcial de PEMEX) y los archivos fueron

gentilmente proporcionados por Valentín López, el

pronóstico lo pueden consultar en:

http://132.248.8.222/pronostico_wrf/

El grupo de trabajo en ese proyecto son: Valentín López

Méndez, Oscar Calderón Bustamante, Jorge Zavala

Hidalgo, Rosario Romero Centeno, Octavio Gómez

Ramos, Olmo Zavala Romero, Oliverio Jitrik Mercado,

Erika Danaé Lopez Espinoza.

Page 22: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Simulaciones Operativas

WRF

WW-III

Page 23: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

WRF

Weather Research and Forecasting Model: modelo

atmosférico administrado principalmente por NCAR (National

Center for Atmospheric Research) y UCAR (University

Corporation for Atmospheric Research).

Es de acceso libre, solo es necesario registrarse como

usuario del modelo, el sitio electrónico para obtenerlo:

http://www.mmm.ucar.edu/wrf/users

Pueden encontrar una descripción detallada en la

presentación de Valentín del curso de huracanes de 2009 en:

http://cabernet.atmosfcu.unam.mx/IAI/2nd_sctc/presentations/Valentin_Lopez.pdf

Page 24: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Directorio de Trabajo

Abrir Matlab, generar y ubicarse en el directorio

/programas/WRF

f=„./data/wrfout_d01_2009-08-27_12.nc‟

nc_dump(f)

dimensions:

Time = UNLIMITED ; (25 currently)

DateStrLen = 19 ;

west_east = 244 ;

south_north = 161 ;

bottom_top = 27 ;

bottom_top_stag = 28 ;

soil_layers_stag = 5 ;

west_east_stag = 245 ;

south_north_stag = 162 ;

Meta-datos

Page 25: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Meta-datos

variables:

char Times(Time,DateStrLen), shape = [25 19]

float U10(Time,south_north,west_east), shape = [25 161 244]

U10:FieldType = 104 d

U10:MemoryOrder = "XY "

U10:description = "U at 10 M"

U10:units = "m s-1"

U10:stagger = ""

U10:coordinates = "XLONG XLAT"

float V10(Time,south_north,west_east), shape = [25 161

244]

V10:FieldType = 104 d

V10:MemoryOrder = "XY "

V10:description = "V at 10 M"

V10:units = "m s-1"

V10:stagger = ""

V10:coordinates = "XLONG XLAT“

Page 26: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Generar archivo nc_dump.txt

Page 27: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Leyendo variables

Fecha para cada paso de tiempo:

fecha=nc_varget ( f , ‟Times‟);

Coordenadas de los puntos de malla

lon=nc_varget ( f , „XLONG‟);

lat=nc_varget ( f , ‟XLAT‟);

Componentes Zonal y Meridional del viento a 10 metros

u10=nc_varget ( f , ‟U10‟);

v10=nc_varget ( f , ‟V10‟);

Page 28: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Leyendo un fragmento

Componentes Zonal y Meridional del viento en toda la columna,

si revisamos las dimensiones en los meta-datos:

float U(Time,bottom_top,south_north,west_east_stag), shape = [25 27 161 245]

26,625,375 elementos en cada variable

Si queremos leer la variable con TODAS sus dimensiones:

u=nc_varget ( f , ‟U‟,);

Que tal si leemos todos los campos x,y,z para el primer tiempo:

u=nc_varget ( f , ‟U‟,[0 0 0 0],[1 -1 -1 -1]);

Page 29: Fernando Oropeza Rosales - UNAMcabernet.atmosfcu.unam.mx/publico/Curso_IMTA/... · pequeño subconjunto de datos de un conjunto de datos muy grande. •Concatenable: Se pueden agregar

Leyendo un fragmento

u=nc_varget ( f , ‟U‟,[0 0 0 0],[1 -1 -1 -1]);

Indice en el que quiero

extraer cada dimensión

Tamaño del fragmento

a extraer -1= TODO

Tiempo Nivel Long Lat