Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Tutorial de MATLAB para pronóstico numérico (Presentación PowerPoint)




Enviado por Pablo Turmero



    Monografias.com
    WIKIPEDIA: MATLAB es la abreviatura de MATrix LABoratory
    (laboratorio de matrices). Se trata de un software
    matemático muy versátil que ofrece un entorno de
    desarrollo integrado (IDE) con un lenguaje de programación
    propio (lenguaje M). Está disponible para las plataformas
    Unix, Windows y Apple Mac OS X. Entre sus prestaciones
    básicas se hallan: la manipulación de matrices, la
    representación de datos y funciones, la
    implementación de algoritmos, la creación de
    interfaces de usuario (GUI) y la comunicación con
    programas en otros lenguajes y con otros dispositivos hardware.
    El paquete MATLAB dispone de dos herramientas adicionales que
    expanden sus prestaciones, a saber, Simulink (plataforma de
    simulación multidominio) y GUIDE (editor de interfaces de
    usuario – GUI). Además, se pueden ampliar las capacidades
    de MATLAB con las cajas de herramientas (toolboxes); y las de
    Simulink con los paquetes de bloques (blocksets).

    Monografias.com
    Matlab tiene muchas capacidades y posibilidades. En esta breve
    introducción queremos resumir los comandos básicos
    que vamos a utilizar en las aplicaciones del curso. Definir
    variables numericas: eye es una función de matlab que
    calcula la matriz identidad del tamaño n (donde n es el
    número que va entre paréntesis). Algunas funciones
    similares son: >>rand(n,m) %Crea una matriz de numeros
    aleatorios entre 0 y 1 de tamaño nxm >>ones(n,m)
    %Idem pero una matriz de 1. >>zeros(n,m) %Matriz de ceros
    >>NaN(n,m) %Matriz de NaN (not a number).

    Monografias.com

    Monografias.com
    Matlab tiene integradas muchas funciones programadas en forma
    eficiente y que agilizan la programación de algoritmos
    más complicados. Un ejemplo de esto es la inversión
    de matrices que permite la resolución de sistemas
    lineales. En este caso, si queremos calcular la inversa de A no
    tenemos que programarlo sinó que podemos usar la
    función que viene con el programa.

    Monografias.com
    Algunas operaciones más: A’ calcula la transpuesta
    de A. A*B es el producto matricial entre A y B (los
    tamaños de A y B deben satisfacer las condiciones para que
    este producto se pueda calcular). A.*B es el producto interno o
    miembro a miembro entre A y B, para esto A y B deben tener la
    misma dimensión. A(:,1) me da la primera columna de A.
    A(1,:) me da la primera fila de A. A(1,2:4) me da las columans 2,
    3 y 4 de A. A(1,[2 4]) me da las columnas 2 y 4 de A. A puede
    tener más de 3 dimensiones al igual que en fortran.
    size(A) me devuelve un vector con el tamaño de cada una de
    las dimensiones de A.

    Monografias.com
    Ejemplo de matriz tridimensional.

    Monografias.com
    Además de variables numéricas (matrices) el matlab
    permite definir variables CHARACTER y variables LOGICAS. Ejemplo
    de variable character A=‘/home/juan/WRF/’ %Esta es
    una variable character B=‘datos.dat’ C=strcat(A,B)
    %Esto concatena las variables. Ejemplo de variable lógica
    A=false

    Monografias.com
    Funciones mátemáticas disponibles….

    Monografias.com
    Funciones que actúan sobre vectores / matrices.

    Monografias.com
    Recomendaciones y aclaraciones generales

    Monografias.com
    Matlab I/O Matlab puede leer y escribir información en
    muchos formatos. A continuación damos algunos ejemplos
    simples. >>A=rand(3,3) %Defino una matriz A >>save
    mi_archivo.mat A %Guarda la matriz a en el archivo mi_archivo.mat
    >>save mi_archivo.mat %Guarda todas las variables definidas
    hasta el momento. El archivo mi_archivo.mat está en un
    formato definido por matlab. Para recuperar el valor de Guardado
    en el archivo, usamos el comando load. >>load
    mi_archivo.mat %recupera las variables guardadas en el archivo.
    Es importante tener en cuenta que si tenemos una variable A y
    hacemos load la variable A va a ser borrada y sus valores y
    dimensiones se cambiaran a los valores y dimensiones de la
    variable A guardada en el archivo.

    Monografias.com
    Matlab y Netcdf Las funciones que permiten leer y escribir
    archivos en formato netcdf utilizando Matlab vienen en un paquete
    aparte y se instalan por separado. Las funciones que permiten la
    lectura y escritura de archivos son las siguientes:
    ncload(‘mi_archivo.nc’,’variable1’,’variable2’,…)
    %Permite leer del archivo netcdf las variables variable1 y
    variable2 (si no se especifica carga todas las variables
    contenidas en el archivo). Esta instrucción permite leer
    las variables, pero no los atributos de las mismas (nombres,
    dimensiones, unidades, etc).
    ncsave(‘mi_archivo.nc’,’variable1’,’variable2’,…)
    %Reemplaza el valor de las variables en el archivo netcdf por el
    de las variables variable1… variable2. Esto permite
    modificar los valores, pero nuevamente no podemos cambiar las
    dimensiones ni los atributos de las variables o del archivo. Para
    modificar variables, dimensiones y atributos existen otros
    comandos que no vamos a utilizar en esta materia.

    Monografias.com
    Lectura y escritura en formato ASCII. Si el formato del archivo
    presenta solo números, y está ordenado de forma tal
    que tiene el mismo número de filas y columnas, entonces
    podemos leerlo directamente usando el comando LOAD con la
    opción –ascii >>load –ascii
    mi_archivo.txt De la misma manera podemos guardar una matriz en
    un archivo >>A=rand(10,10); %Defino una variable
    >>save –ascii mi_archivo.txt A %Guardo la variable A
    en forma de texto. Se puede leer archivos con formatos más
    complicados especificando el formato de lectura. Para eso existen
    los comandos fscanf , fprintf También se pueden leer
    archivos en formato binario como los generados por un programa
    fortran utilizando los comandos fread y fwrite

    Monografias.com
    SCRIPTS: Matlab posee su propio “languaje” (lenguaje
    “M”) que tiene elementos similares a los que se
    utilizan en fortran u otros lenguages. A continuación
    vamos a dar una breve revisión de la sintaxis de estos
    elementos en Matlab. A diferencia de fortran, los scripts de
    matlab no son programas compilados (aunque Matlab incluye una
    función que permite compilarlos y ejecutarlos en
    máquinas donde matlab no está instalado).

    Monografias.com
    IF >>If( a== 1) >> comandos si verdadero >>end
    Pruebas lógicas: == (igual), >, <, <=, >=, ~=
    (distinto). Por otra parte podemos combinar pruebas
    lógicas usando & (and) y | (or). If(a==1 & b==2) o
    bien if (a==1 | b==2) También podemos usar el ~ para negar
    la prueba If ~(a==1) Comandos si verdadero end En este caso la
    condicion resultará cierta si a no es 1. else y elseif
    tambíen son comandos relacionados.

    Monografias.com
    Ciclos for for i=1:30 A(i)=2*i; end La sintaxis es muy similar a
    la del fortran. Se puede variar el incremento en el for: for
    i=1:2:30 A(i)=2*i; end En este caso i aumenta de 1 a 30, pero
    saltando de 2 en dos 1 3 5 … El comando while
    también puede ser utilizado para repetir una
    operación mientras se cumpla una condición while
    condicion Repeticion end La condicion se escribe de la misma
    manera que en el caso del comando if.

    Monografias.com
    Funciones: Matlab brinda la posibilidad de definir nuestras
    propias funciones. Esto es algo análogo a lo que
    serían por ejemplo las subrutinas de un programa fortran.
    Ejemplo: %Funcion de calculo de las derivadas espaciales por
    diversos metodos. function [derivada]=diff_sh(variable,dx)
    nx=length(variable); %Para los puntos interiores. for i=2:nx-1
    derivada=(variable(i+1)-variable(i-1))/(2*dx); %Veo que pasa en
    los bordes. Uso esquema atrasado y adelantado.
    derivada(1)=(variable(2)-variable(1))/dx;
    derivada(nx)=(variable(nx)-variable(nx-1))/dx; end Para usar la
    funcion uso: dudx=diff_sh(u,0.5)

    Monografias.com
    Graficado en Matlab Graficos de linea (graficado de un vector)
    plot(x) %Plotea el vector X como una serie de valores. plot(x,y)
    %Plotea los valores del vector y como función de los
    valores de x (x e y deben tener la misma longitud).
    plot(X,Y,'LineWidth',2,'Color',[.6 0 0]) %Podemos agregar
    atributos que controlan el espesor de la línea, el color,
    el estilo etc. Algunas de estas cosas se pueden abreviar. Ejemplo
    x = -pi:pi/10:pi; y = tan(sin(x)) – sin(tan(x));
    plot(x,y,'–rs','LineWidth',2,… 'MarkerEdgeColor','k',…
    'MarkerFaceColor','g',… 'MarkerSize',10)

    Monografias.com
    axis([0 1 0 1]) %Controla el rango de los ejes xmin xmax ymin
    ymax Si luego de hacer un gráfico queremos graficar otra
    curva, el gráfico orginal desaparece. Para eso debemos
    usar la instrucción “hold on” que nos permite
    graficar varias curvas en el mismo gráfico. Una vez
    generado el gráfico podemos ajustar muchas cosas
    manualmente utilizando el menú de la figura. A diferencia
    de GrADS, Matlab permite modificar y remodificar varios de los
    atributos del gráfico luego de que este fue generado.
    title(‘Titulo del grafico’) %El comando title permite
    agregar titulos a los graficos. legend(‘datos
    1’,’datos 2’) %El comando legend genera un
    recuadro con los colores correspondientes a las lineas y nos
    permite nombrar cada una de ellas. xlabel(‘etiqueta del eje
    X') %Permite nombrar al eje x (lo mismo con ylabel para el eje
    y). print ('-dpng',’mi_figura.png’) %El comando print
    permite generar un png, gif, jpg, pdf, tiff entre otros a partir
    de la figura que estamos generando. Las figuras también
    pueden guardarse en el formato fig de matlab que permite seguir
    modificándolas.

    Monografias.com
    Graficado de superficies: Comandos para graficar superficies en
    2D: pcolor(x,y,variable) %Plotea la variable
    “variable” como funcion de x y de y. Variable debe
    ser una matriz cuadrada, x e y pueden ser matrices o vectores.
    Este comando genera bordes negros entre celda y celda que se
    eliminan usando el comando “shading flat” o
    “shading interp” contour(x,y,variable) %idem pero
    grafico de contornos. contourf(x,y,variable) %idem pero grafico
    de contornos con sombreado. Para graficar una variable
    georeferenciada debemos tener matrices lat y lon con las
    coordenadas de cada punto y la matriz “variable”
    correspondiente a nuestros datos. pcolor(lon,lat,variable)
    %Plotea la matriz como función de la latitud y longitud de
    nuestros datos. La función quiver permite plotear
    vectores. “run colorbar” despliega la barra de
    colores una vez que hemos dibujado la matriz de datos.

    Monografias.com
    Procesamiento de archivos en formato NetCDF: En primer lugar, el
    importante tener en cuenta que MATLAB requiere librerías
    específicas para poder trabajar con los archivos *.nc.
    Estas librerías, Uds las tienen ubicadas en
    /home/alumnos/NETCDF_linux. Para poder utilizarlas, debemos
    agregarlas al “path” de MATLAB. – abran matlab en una
    terminal – Ir a: File–>set path–>add with subfolders y
    eligen ahí la carpeta NETCDF_linux Este procedimiento
    genera o modifica un archivo llamado “pathdef.m”.
    Para que Matlab reconozca las librerías, hay que abrirlo
    siempre desde el directorio en que lo creamos, o duplicar este
    archivo. – una manera de ver que esto haya funcionado es, en la
    línea de comandos de matlab escribir: >> ncbrowser
    Que abre una ventana que permite explorar las propiedades de un
    archivo *.nc. Busquen el archivo que bajaron anteriormente de los
    reanalisis de NCEP/NCAR y verifiquen su contenido. Comparen lo
    que observan con lo que obtienen escribiendo en una nueva
    terminal: > ncdump -h nombre_del_archivo

    Monografias.com
    Procesamiento de archivos en formato NetCDF: Otra cuestión
    importante a tener en cuenta es si las variables dentro del
    archivo están “packed” o
    “unpacked”. Las variables que están packed,
    deben ser transformadas mediante la siguiente relación
    para que tengan las magnitudes y unidades adecuadas:
    unpacked_data = ( packed_data * scale_factor ) + add_offset;
    Entonces, si el ncbrowser nos muestra un scale_factor distinto de
    1 y un add_offset distinto de 0, debemos transformar la variable
    con la expresión anterior. Vamos a ver que existe un modo
    de evitar el tener que hacer esta transformación por
    nuestra cuenta … ¿Cómo abrimos el archivo en
    matlab? Empecemos por crear en el editor de MATLAB (o en
    cualquier editor de textos) el script
    “abre_netcdf.m”. La extensión *.m identifica
    los scripts de MATLAB, pero cuando queremos ejecutarlos desde la
    línea de comandos, hay que obviarla.

    Monografias.com
    Procesamiento de archivos en formato NetCDF: Escribimos en el
    script: clear all close all archivo='air.mon.ltm.nc';
    nc=netcdf(archivo,'r') % el 'r' es por “read”
    variable='air'; temp=nc{variable,1} % el 1 implica que queremos
    que la transforme si la variable estuviese packed. Si no quisiera
    ver los resultados, incluyo el “;” size(temp) %
    Supongamos que queremos extraer el vector de latitudes:
    latitudes=nc{'lat',1}(:); longitudes=nc{'lon',1}(:); latitudes(1)
    % Noten que en este caso, la primera latitud corresponde al HN
    (90°N) ? tenemos que corregirlo porque queremos que el punto
    (1,1) del mapa corresponda al extremo SE

    Monografias.com
    Procesamiento de archivos en formato NetCDF: %para invertir las
    componentes de un vector: latitudes=flipud(latitudes);
    latitudes(1) %para invertir en una matriz una determinada
    dimensión: temp=flipdim(temp,3); % 3 es la
    dimensión asociada a las latitudes % calculemos el campo
    medio sobre todos los meses tm=squeeze(mean(temp,1)); % la
    dimensión 1 correponde a los tiempos % buscamos el nivel
    de 850 hPa y retenemos ese campo niveles=nc('level',1) for
    nlev=1:length(niveles) If niveles(nlev)==850
    tm850=squeeze(tm(nlev,:,:)); end end

    Monografias.com
    Procesamiento de archivos en formato NetCDF: % para crear un mapa
    en proyección cilíndrica equidistante, se usa la %
    función axesm. Nosotros lo tenemos seteado en el script
    separado % mapa_sudamerica.m (Para conocer otras proyecciones y
    opciones: help axesm) mapa_sudamerica % preparamos las matrices
    con las coordenadas a partir de los vectores
    [xlon,xlat]=meshgrid(longitudes,latitudes);
    pcolorm(xlat,xlon,tm850) % si queremos que suavice la
    retícula shading interp % agregamos la barra de colores
    colorbar % un título title('Campo medio
    climatológico anual de temperatura en 850 hPa') % lo
    guardamos en formato png (para conocer otros formatos: help
    print) print('-dpng','temp_media_anual_850.png')

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter