fernando oropeza rosales - unamcabernet.atmosfcu.unam.mx/publico/curso_imta/... · pequeño...
TRANSCRIPT
Introducción a Matlab
Jiutepec, Morelos 27, 28 y 29 de Abril de 2011
Fernando Oropeza Rosales
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
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/
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 )
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
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)
Trabajando con la base de datos Maya
Mapa de lluvia según MAYA, para el 01-10-1961
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)
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
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
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
Archivos NetCDF
Jiutepec, Morelos 27, 28 y 29 de Abril de 2011
Fernando Oropeza Rosales
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?
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
¿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
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”
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
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
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)
Trabajando con archivos de WRF(Petición de Fabian)
Jiutepec, Morelos 27, 28 y 29 de Abril de 2011
Fernando Oropeza Rosales
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.
Simulaciones Operativas
WRF
WW-III
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
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
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“
Generar archivo nc_dump.txt
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‟);
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]);
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