P. 1
Manual DadosNETCDF

Manual DadosNETCDF

|Views: 133|Likes:
Published by Ewerton Ewerton

More info:

Published by: Ewerton Ewerton on Feb 10, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/10/2012

pdf

text

original

Universidade de São Paulo Instituto de Astronomia, Geofísica e Ciências Atmosféricas Departamento de Ciências Atmosféricas

Matlab: Matrizes Multidimensionais e Dados do NETCDF

Elaborado por: Michelle S. Reboita 10 de julho de 2005

.................6 Médias: mean ou nanmean...............14 Construindo Mapas .......8 2......br........ mas já possui um bom material que inclui desde o procedimento de instalação dos toolboxes necessários para o trabalho com dados NETCDF........3 1................................ bem como exemplos de como carregar este tipo de dado e a construção de mapas.................5 Função squeeze.........8 Figuras Diferentes na Mesma Escala de Cor.................2 2......................................................................................................................7 2......................................iag.............................................................................. Também solicita-se sugestões para o melhoramento da mesma que podem ser enviadas para reboita@model......................... Reboita 10/07/2005 ............................................................................................... ones ......................2 Introdução Este manual foi desenvolvido para auxiliar os usuários do Matlab a lidar com os dados no formato NETCDF........2 Carregando o Arquivo .. Reboita.....................5 Usando as Funções: zeros..................15 Elaborado por: Michelle S...........................................................................3 Matrizes Multidimensionais no Matlab....................................6 2..............10 Gráficos de Campo Vetorial ..................14 3.....10 Construção de Uma Matriz Multidimensional...................................................11 Salvando Figuras na Linha de Comando ...................................................................1 2....................1 2 Instalação...............................7 Função contour ..................................................usp........ a segunda traz uma explicação de como são representadas as matrizes multidimensionais no Matlab e a terceira apresenta os procedimentos necessários para carregar os dados NETCDF e para a elaboração de mapas............... Aos usuários desta apostila pede-se que sejam dados os créditos a Michelle S........................................................... O mesmo encontra-se em fase inicial.................5 Função permute............................13 3 Carregando Dados NETCDF........4 2....................................................9 2.................... O manual está dividido em três partes: a primeira mostra onde obter e como instalar os toolboxes necessários para trabalhar com os dados NETCDF........... Sumário 1 Abrindo os dados NETCF no Matlab........1 3...............................................................4 Dimensões da Matriz..............................................3 2...5 2...............................4 2..............

html e o terceiro em: http://www. Elaborado por: Michelle S.html b.csiro. f. Reiniciar o matlab k. d. Criar três pastas denominadas: mexcdf53_pcwin. j. e. g.gov/staffpages/cdenham/public_html/MexCDF/nc4ml5. c. Reiniciar o Matlab i. Certificar-se que o path conhece o mexcdf53 h. Os dois primeiros são obtidos em: http://woodshole. Executar na janela de comandos netcdf_install e seguir as instruções que aparecem na tela. Verificar se o diretório atual é o toolbox.1 Abrindo os dados NETCF no Matlab Instalação a. Reboita 10/07/2005 . Executar: rehash toolboxcache e tnetcdf O tnetcdf abre uma interface gráfica. Executar na janela de comandos mexcdf53_pcwin_install e seguir as instruções que aparecem na tela. Executar matlab_netcdf_5_0 Obs: Caso este pacote não se instale automaticamente ir em: http://www. netcdf_install e matlab_netcdf_5_0.no/~even/matlab/toolbox/matlab_netcdf_5_0/ e copiar os programas para dentro da pasta matlab_netcdf_5_0 no toolbox.au/sw/matlab-netcdf.usgs.marine. Com isso você está apto a abrir arquivos . netcdf e matlab_netcdf_5_0 no toolbox do Matlab e colocá-las no Path. Obter os pacotes mexcdf53_pcwin.3 1 1.er.nersc. Colocá-los dentro do toolbox do Matlab.nc no Matlab. que incluem colocar no path o diretório netcdf.

dimensão. .1) = 5 0 4 7 1 3 8 9 6 a(:. 3 5 6.) 2.. colunas. dimensão.:.:.2)=[1 4 0. a(:. a(:.4 2 Matrizes Multidimensionais no Matlab No help do Matlab há explicações sobre este tópico. 9 8 7]. Reboita 10/07/2005 . O caminho é Programming – Data Structure – Multidimensional Arrays.:..2) = 1 3 9 4 5 8 0 6 7 Elaborado por: Michelle S.1 Construção de Uma Matriz Multidimensional a=[5 7 8.4 3 6]. 0 1 9. O Matlab entende as matrizes multidimensionais como var(linhas.

1) = 0 0 0 0 0 0 0 0 0 0 0 0 b(:.:.1) = 1 1 1 1 1 1 1 1 d(:.3 3 2 Usando as Funções: zeros.2) = 0.0346 0.5 2.2) d(:.:.:.1) = 0.5297 0.4 Função squeeze A função squeeze é usada para remover dimensões da matriz.2) = 0 0 0 0 0 0 0 0 0 0 0 0 d=ones(4.2) b(:.5194 0.2) = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2.:.2 Dimensões da Matriz Para obter-se as dimensões da matriz a utiliza-se: size(a) ans = 3 2.:.3) = 0.:. y(:.3.:. ones b=zeros(4.3. Reboita 10/07/2005 .831 y(:.0535 y(:.9711 Elaborado por: Michelle S.

1.1) = 1 1 1 1 2 2 2 2 3 3 3 3 a(:.5297 0.831 size(Z) ans = 2 2.6 Z = squeeze(y) Z= 0. a quarta passa a ser a segunda.:. a terceira não modifica-se e a primeira passa a ser a quarta.5 3 Função permute A função permute troca a ordem das dimensões da matriz.2) = 3 1 3 1 3 1 3 1 3 1 3 1 0.[dimensão]) b=permute(a.1.0346 0.[2 4 3 1]) [2 4 3 1] = Neste exemplo.0535 0. Reboita 10/07/2005 .5194 0.9711 size(a) ans = 4 3 1 2 b=permute(var. Elaborado por: Michelle S. a segunda dimensão passa a ser a primeira. a(:.:.

2) = 1 2 size(b) ans = 3 4 1 1 b(:.:.1.:.7 b(:.1.:.3) = 1 2 3 3 3 3 b(:.1) = 1 2 3 3 3 3 3 1 1 2 3 1 1 1 b(:.:.6 Médias: mean ou nanmean nanmean usada quando há NAN Elaborado por: Michelle S.1.4) = 2 1 2.1. Reboita 10/07/2005 .

5 2.:.4 1.1:2).:.[1 1 .2) = 3 4 1 6 4 5 NaN 1 1 aa(:.3)).4 1.4 2.3)) Observa-se que no tempo três não havia um dado.h).8 2.'BackgroundColor'.7 4 5 2.:.:. Para colocar o valor nas linhas de contorno fazer: [c.5 NaN 3 Função contour Para plotar todas as linhas e colunas do tempo três da matriz aa: 3 contourf(aa(:.:.2 1. set(h.6 1.4 2.dimensão) aa2=nanmean(aa.8 2 2. Reboita 10/07/2005 .8 3 Elaborado por: Michelle S.3) aa2 = 3 5 2 2.6667 2 2 2 2.6 2.3333 4.2 1 1 1.8 aa(:. sendo o mesmo representado por NaN.6]) 2. Mas o contour consegue plotar mesmo com a presença do NAN.6 2.3333 4 1.3333 Especificando o tempo desejado aa2=nanmean(aa(:.:.8 1.2 2.3) aa2 = 3 3.h]=contourf(aa(:.2 2 1.6 1.3) = NaN 2 1 3 2 2 1 1 1 aa2=nanmean(var.1) = 3 6 3 2 1 5 NaN 4 5 aa(:. h=clabel(c.

2 1 1.8 1.2 2.h]=contour(x.8 2 2.4 2. 1.4 1.6 1.y] = meshgrid(-1:.6 2 1. 8 2 1 2. Outro exemplo: [x.'BackgroundColor'.^2).2 2 .4 1. 2 6 1. 8 2. 'FontSize'.01:1).h.z).4 2 1. 2 1.6 2.. 2 1.4 2. tamanho.4 1.^2-y. 'color'.2 1..4 2.6 1.4 2 1. mudar a cor e a orientação dos mesmos: clabel(c.2 4 2.6]) Para aumentar a fonte dos valores. 4 1. z = x.8 3 Para não aparecer a caixinha amarela em volta dos valores não usar: set(h.4 1.8 2.8 1.6 1.2 2.4 1. 6 2.9 3 1. Elaborado por: Michelle S.2 11 . 8 1. [c. 'cor'.6 2.[1 1 . 8 1 1. 26 11. .2 1. rotação) As cores podem ser: b blue g green r red c cyan m magenta y yellow k black A rotação pode ser 0 (zero) que indica nenhuma rotação.*exp(-x.62.2 2 2 2 8 1.6 1. 'Rotation'.6 1.y. Reboita 10/07/2005 . 2 2.8 2.

:. Plotando a figura 2 1.8 1.7 1.2 1.5 6 5.4 1. a(:.2 2.6 2.:.5 2.h).5 5 4.4 1. Verificar os valores mínimos e máximos de cada figura min(min(a(:.5 4 3 2 1 1.6]) 2.2 1.5 1.8 Figuras Diferentes na Mesma Escala de Cor Para deixar diferentes figuras na mesma escala de cor: a) encontrar o menor e o maior valor dos diferentes conjuntos de dados.5 7 6. Para tanto usa-se: valormínimo = min(variável) valormáximo = max(variável).[1 1 .1 1 1.2 1.8 2 2.:.6 1.:.'BackgroundColor'.2) = [6 7 9 5 4 3].1)) title('Figura 1') colormap(gray) colorbar figure contourf(a(:.8 3 Figura 2 2 contourf(a(:.10 h = clabel(c.2 1. b) antes do comando plote usar: caxis([valormínimo valormáximo]) Figura 1 Exemplo 1.2)) title('Figura 2') colormap(gray) colorbar 1.2 2.4 1. Criando o conjunto de dados a(:.:. Reboita 10/07/2005 .5 1. 2.:.:.4 2.6 2. set(h.3 1.1))) Elaborado por: Michelle S.6 1.8 1.1) = [3 2 3 1 2 5].5 3.5 4 3.2))) ans = 3 max(max(a(:.5 1 1.1 1 7.1))) ans = 1 min(min(a(:.4 1.6 1.6 1.7 1.9 1.8 2 2.4 2.3 1.9 1.8 3 3.

6 1.4 1.8 2 2.2 1. v) streamline([li ar]) % Abre uma nova janela de figura % Faz linhas de corrente Elaborado por: Michelle S.2))) ans = 9 Então para cada figura deve-se fazer: caxis[(min max]) colorbar %Figura 1 caxis[min max] colorbar %Figura 2 caxis([0 10]) colorbar Figura 1 2 1.1 1 9 8 7 6 5 4 3 2 1 1 1.y.2 2. y.8 3 2 1.8 1.9 1.8 2 2.3 1.4 2.9 Gráficos de Campo Vetorial % Constrói a grade % Componente zonal % Componente meridional [x.4 1.:.9 1.4 1.7 1.v) figure [li.6 1.4 2.*y quiver(x.2 2. Reboita 10/07/2005 .u.7 1.6 1.8 3 Figura 2 2.2 1.5 1.5 1.6 1.6 2.2 1.6 2.3 1.4 1.8 1.2 1. ar] = streamslice(x.1 1 9 8 7 6 5 4 3 2 1 1 1.*y-2.y]= meshgrid(-5:1:5) u=2*(x.^2)+2*x-4*y v=-2*x. u.11 ans = 5 max(max(a(:.

Reboita 10/07/2005 .12 Obs: se no gráfico das linhas de corrente não aparecer os eixos da direita e superior da figura ir na barra de menu. 6 4 2 0 -2 -4 -6 -6 -4 -2 0 2 4 6 Linhas de Corrente 5 4 3 2 1 0 -1 -2 -3 -4 -5 -5 -4 -3 -2 -1 0 1 2 3 4 5 Elaborado por: Michelle S. clicar em edit ⇒ axis properties ⇒ style ⇒ axis box on.

PRINT Elaborado por: Michelle S.save figure to binary FIG-file. in the format specified by FORMAT. 'mmat' . SAVEAS(H. 'output'.save figure to a single binary FIG-file. Allowable options also include devices allowed by PRINT.'FILENAME') Will save the Figure or model with handle H to file called FILENAME. Examples: Write current figure to MATLAB fig file saveas(gcf.10 Salvando Figuras na Linha de Comando help saveas SAVEAS Save Figure or model to desired output format.'FORMAT') Will save the Figure or model with handle H to file called FILENAME. Use this format only when code inspection is the primary goal. 'bmp') See Also LOAD. Valid options for FORMAT are: 'fig' . 'mfig' . Note: MMAT Does not support some newer graphics features.'FILENAME'. SAVE. 'output'. OPEN. FIG-files support all features. SAVEAS(H. 'm' . Large data is saved to MAT-file.13 2. Reload using OPEN.same as M. FORMAT can be the same values as extensions of FILENAME. The format of the file is determined from the extension of FILENAME. The FILENAME extension does not have to be the same as FORMAT.save figure to callable M-file as series of creation commands with param-value pair arguments. 'fig') Write current figure to windows bitmap file saveas(gcf. Reboita 10/07/2005 . and load more quickly. and produce callable M-file for reload. Given FORMAT overrides FILENAME extension.

:. tempo e variáveis t1=ncload('WHOI. Carregando os arquivos NETCDF com lat. mas para o Matlab devemos ter var(lon. Os arquivos abertos pelo getnc não incluem os vetores de latitude. lat. nc1=netcdf('WHOI.'nome da variável'). Para obter os valores corrigidos da variável executa-se a linha abaixo.lhtfl.14 3 Carregando Dados NETCDF Para o Matlab var(linha.nc'. linhas. É necessário saber previamente o nome da variável que está contida no arquivo. lat. 3.:)*nc1{'lhtfl'}.nc'). o primeiro argumento é o nome do conjunto de dados.1997'. assim vamos usar a função permute para deixar os dados na forma que o Elaborado por: Michelle S.'nowrite') fluxo=nc1{'lhtfl'}(:. tempo) Dados abertos pelo pacote netcdf var(tempo.scale_factor(:)+nc1{'lhtfl'}.1 Carregando o Arquivo t=getnc('nome do arquivo'. longitude e tempo. colunas) sendo que considera as linhas como as latitudes e as colunas como as longitudes.add_offset(:) lhtfl é o nome da variável 365 é o tempo escolhido se quero todos os tempos é : (dois pontos) O netcdf abre os dados como var(tempo. coluna. lon.1997.lhtfl. portanto usamos também o ncload.1997. Reboita 10/07/2005 .lhtfl. Esta informação é obtida no local de origem dos dados. Exemplo: t=getnc('WHOI.'lhtfl'). lon). se a função getnc não funionar usar as funções ncload e o netcdf e a expressão da linha que inicia com a palavra fluxo para carregar os dados.365. tempo). O getnc é melhor porque coloca NAN nos valores faltantes. Entretanto.

tt2(:.7 .15 Matlab entende.'out') colorbar Elaborado por: Michelle S.5 385.'edgecolor'. Reboita 10/07/2005 .7 .'none'). m_contourf(lon2.ngdc.[-60.'fancy'.'lon<gitude>'.ocgy.'fancy'. vamos colocar a longitude na primeira dimensão (componente i) e a latitude na segunda (componente j).[.'none').5].tt3(:.[3 2 1]).5 0. que é a forma utilizada pelo m_proj lon2=lon+360. tt2=permute(t. lat2=lat(5:66).'lon<gitude>'.1)') %Plota a linha de costa m_coast('patch'.5 64.:. %Neste caso o continente é preenchido pela cor cinza.html e os dados de linha costeira do globo disponíveis ftp://ftp.noaa.1)') m_coast('patch'.[.'out') colorbar %Exemplo de um mapa para o Atlântico Sul m_proj( 'mercator'.lat.lat2. 3.5].'tickdir'. [279.5]) lon2=lon+360.5]) %Como o vetor de longitude variava de -180 a 180 somei 360 para variar de 0 a 360.'edgecolor'.7 .7]. lon2=lon2(21:117). %Plota o mapa m_contourf(lon2. Para sair apenas a linha de costa: m_coast(‘line’) %Plota as linhas de grade m_grid('box'. [259. Além disso.7].2 Construindo Mapas Para isso é necessário o pacote m_map disponível em: http://www2.:.7 .[-64.'lat<itude>'.'lat<itude>'.'tickdir'. m_grid('box'.ca/~rich/map.goc/MGG/shorelines/ %Definindo a projeção e as dimensões da lon e lat m_proj( 'mercator'.5 375.ubc.

16 Fluxos t=1 -50 50oN -100 25oN -150 -200 0 o -250 25oS -300 -350 -400 85oW 0o 50oS 60oW 35oW 10oW 15oE 12oS -50 24oS Tempo = 1 Atlântico Sul -100 36oS -150 48oS -200 -250 60 S 80oW o 60oW 40oW 20oW 0o Elaborado por: Michelle S. Reboita 10/07/2005 .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->