Sie sind auf Seite 1von 18

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/317880458

Apostila do minicurso "MATLAB Aplicado à Oceanografia"

Research · June 2017


DOI: 10.13140/RG.2.2.30912.33285

CITATIONS READS

0 430

2 authors:

Ricardo Nogueira Servino Leonardo Azevedo Klumb-Oliveira


Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo
6 PUBLICATIONS   5 CITATIONS    17 PUBLICATIONS   19 CITATIONS   

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Long-term wave climate of coastal waters of Espírito Santo - Brazil View project

Minicurso "MATLAB Aplicado à Oceanografia" View project

All content following this page was uploaded by Ricardo Nogueira Servino on 25 June 2017.

The user has requested enhancement of the downloaded file.


UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO
ECOCEANO - EMPRESA JÚNIOR DE CONSULTORIA EM OCEANOGRAFIA E EDUCAÇÃO AMBIENTAL.

Ricardo Nogueira Servino


Leonardo Azevedo Klumb-Oliveira

MATLAB aplicado à Oceanografia


APOSTILA DE APOIO AO MINICURSO

Vitória
Novembro, 2016
Sumário

Sobre o minicurso .............................................................................................. 3

Uso do MATLAB na Oceanografia ..................................................................... 3

Tela inicial: janelas da interface gráfica .............................................................. 6

Variáveis............................................................................................................. 9

Operações matemáticas .................................................................................. 11

Matrizes e operações matriciais ....................................................................... 12

Funções ........................................................................................................... 14

Documentação: help, doc e google .................................................................. 15

Rotinas ............................................................................................................. 17

2
Sobre o minicurso

O objetivo deste minicurso é introduzir o MATLAB aos alunos de graduação em


Oceanografia da UFES. A primeira etapa consiste na passagem dos principais
conceitos necessários ao uso deste programa, organizados nesta apostila. A
segunda parte do curso envolve a aplicação dos conceitos aprendidos em
casos práticos. Os dados utilizados e as rotinas criadas foram anexados junto a
esta apostila. Ao final do minicurso, o aluno terá um conhecimento inicial do
programa, sendo capaz de:

 Importar dados externos para o ambiente MATLAB;


 Organizar dados oceanográficos (temperatura, ondas, etc) em variáveis
escalares, vetores e matrizes;
 Criar gráficos de linha, pontos (dispersão), contorno, rosa dos ventos,
entre outros;
 Interpretar a documentação base das funções a partir do comando help;
 Interpretar as mensagens de erros e solucioná-los.

Uso do MATLAB na Oceanografia

O MATLAB é muito utilizado em diversas áreas da ciência por ser uma eficiente
plataforma de criação de programas sem a exigência de muito código, se
comparado com uma linguagem de programação convencional. Isso é
importante no meio acadêmico, para que o esforço e tempo sejam direcionados
muito mais na lógica para resolver os problemas do que na escrita do código.
Outra grande vantagem do MATLAB é a quantidade de programas (funções e
rotinas) já existentes desenvolvidos pela própria empresa e pela comunidade,
que já vêm instalados ou estão disponibilizados gratuitamente na internet.

Na Oceanografia, o MATLAB pode ser uma solução para praticamente


qualquer demanda de processamento e visualização de dados. Com o
MATLAB, é possível trabalhar com dados brutos de diversos formatos, como
dados contidos em arquivos de texto, dados planilhados e formatos mais
específicos como NetCDF e HDF. Esses últimos dois são exemplos de

3
arquivos usados para armazenar grande quantidade de dados, utilizados para
resultados de modelagem numérica e dados de sensoriamento remoto.

Muitos métodos de processamento podem ser realizados através do MATLAB.


Desde funções simples como: operações matemáticas básicas (soma,
multiplicação, etc); estatística básica (média, desvio padrão, etc); separação de
dados, e até métodos mais complexos como: filtragem de dados por
frequência; cálculo de coeficientes de correlação (linear, cruzada, etc); cálculo
de trajetória de objetos; cálculo de tendência nos dados; regressão; e muitas
outras.

O MATLAB é também bem versátil para visualização de dados, possibilitando a


criação de gráficos de linha, pontos, barras, setas, pizza, rosa dos ventos,
contorno, imagem, superfície (3D), mapas, entre outros. Seguem abaixo alguns
exemplos de gráficos criados no MATLAB.

Figura 1 - Estrutura isopicnal da coluna d'água ao longo do ano.

Figura 2 - Mapa batimétrico 3D da costa leste brasileira.

4
Figura 3 - Séries temporais com detalhe em cor para dias específicos.

Figura 4 – Gráfico contendo contorno batimétrico, linhas com cores diferentes, pontos,
setas e texto.

Existem também conjuntos de programas feitos pela comunidade que podem


ser úteis, como por exemplo, o pacote sea-mat (Woods Hole Coastal and
Marine Science Center), que contém mais de 40 ferramentas específicas para
a oceanografia, com soluções para: análise de marés; cálculos de interação
oceano-atmosfera; criação de stick plots; cálculo de correlação vetorial e
correlação complexa; séries temporais; processamento de dados de ADCP;
análise de ondas no domínio da frequência; visualização e processamento de
resultados de modelagem numérica; criação de mapas; criação de diagramas
TS; entre outros.

5
Tela inicial: janelas da interface gráfica

A interface gráfica do MATLAB é composta basicamente por 6 principais


janelas, destacadas em cores na figura a seguir. A organização das janelas
pode ser configurada através do item Desktop da barra de ferramentas do
MATLAB, para exibição ou não de cada uma das janelas. Nas versões mais
novas do MATLAB, usa-se o item Layout em Home>Environment. Este curso
se baseará na organização mostrada na figura abaixo.

Janela de Comandos (Command Window):

A Janela de Comandos (vermelho) é a principal janela do MATLAB. Pode-se


usar o MATLAB por completo através desta janela. É aqui que se realizam as
operações do MATLAB, através de comandos que serão abordados ao
decorrer desta apostila.

Diretório (Current Directory):

A janela Diretório (azul) indica o caminho ou endereço em que o MATLAB está


pronto para trabalhar com arquivos. Sendo neste local onde será carregado um
arquivo, armazenada uma função ou salvo um resultado. Além disso, esta
janela mostra os arquivos e subdiretórios contidos no atual endereço.

Antes de executar comandos na janela de comandos, deve-se garantir que não


está sendo referenciado nenhum arquivo de fora do diretório indicado pela
6
janela Diretório. Por exemplo, se for preciso carregar um arquivo de dados
chamado dados.mat, para serem trabalhados no Matlab, utiliza-se o comando
load, seguido do nome do arquivo. Ou seja:

>> load dados.mat

(A sintaxe do MATLAB será mais bem explicada ao longo da apostila).

No entanto, deve-se assegurar que o arquivo dados.mat está localizado dentro


do diretório indicado na janela Diretório, senão o Matlab não o encontrará e
retornará uma mensagem de erro:

Error using load


Unable to read file 'dados.mat'. No such file or directory.

O mesmo é válido para o uso de programas (funções e rotinas) escritos por


usuários ou baixados de fora, que devem estar contidos no diretório atual (ou
então se deve especificar o caminho de outras formas). Em outras palavras, a
janela Diretório mostra o local do computador onde o MATLAB está procurando
os arquivos e funções que o usuário irá utilizar.

Detalhes (Details)

A janela Detalhes (preto) apenas mostra as informações de algum arquivo


selecionado na janela Diretório. Caso este seja um arquivo de dados, do tipo
.mat, serão detalhadas as variáveis que estão dentro deste arquivo, em relação
a seus nomes, tamanhos, tipos e valores contidos (variáveis serão tratadas
mais a frente na apostila).

Área de trabalho (Workspace)

A Área de trabalho do MATLAB mostra quais variáveis estão inicializadas


durante a presente sessão e indica algumas informações sobre estas. Para
trabalhar com dados no MATLAB, deve-se transferir suas informações para as
variáveis. Cada vez que o Matlab é reiniciado, perdem-se todas as variáveis
inicializadas anteriormente.

7
Ao clicar duas vezes com o botão esquerdo do mouse em uma variável
presente na Área de trabalho, esta será visualizada no Visualizador de
variáveis.

Editor de texto (Editor) e visualizador de variáveis (Variable Editor)

O editor de texto do MATLAB faz o mesmo que qualquer editor de texto comum
faz. Serve para escrever ou alterar funções e rotinas a serem rodadas através
dos comandos.

O visualizador de variáveis é usado para visualizar de forma rápida o conteúdo


das variáveis presentes na Área de trabalho. O conteúdo das variáveis é
geralmente apresentado em matrizes de duas dimensões, na forma de tabelas.
O visualizador de variáveis pode também editar os valores das variáveis,
manualmente termo a termo da matriz. Alterar as variáveis desta forma não é
recomendável, uma vez que estas operações são geralmente executadas mais
rapidamente através da linha de comando.

Histórico (Command History)

A janela de Histórico mantém registrados todos os comandos realizados na


Janela de Comandos. Torna-se útil quando se necessita utilizar os mesmos
comandos já usados em algum outro momento, ou então para averiguar a
sequência de comandos realizados em uma sessão do MATLAB.

8
Variáveis

Um objeto básico em qualquer uso do MATLAB são as variáveis. Em


computação, uma variável é a delimitação de um espaço na memória
temporária do computador destinado a armazenar uma informação de
interesse. Essa informação pode armazenar um número, um texto, uma matriz,
etc. Com essas informações disponíveis na memória, torna-se possível realizar
as operações do MATLAB. Em resumo, os dados que desejamos trabalhar
devem ser passados para variáveis para que seja possível processá-los e
visualizá-los em figuras.

Uma variável sempre possui quatro propriedades básicas: um nome, um tipo,


um tamanho e um valor atribuído a ela. Alguns exemplos de variáveis são
mostrados na tabela a seguir.

Nome Valor Tipo Tamanho

ano ‘2012’ char 1x4

EstacaoDoAno ‘inverno’ char 1x7

Temperatura_media_inverno 22.3 double 1x1

23.4
23.2
Temperatura_diaria_inverno ... double 90x1
21.8
21.3

O nome é importante para identificar a variável e, portanto, ser capaz de se


referir a ela nas operações. O nome de uma variável deve ser único e é
limitado a 31 caracteres, entre letras (sem acentos), números e alguns
caracteres especiais, sendo que o mesmo deve sempre começar com uma
letra. Além disso, ele é sensível a caracteres maiúsculos ou minúsculos (case
sensitive). Uma boa prática é sempre nomear as variáveis com nomes
autoexplicativos, como temperatura_2005, media_janeiro e salinidadeCTD.

O tipo da variável define qual o tipo de informação está sendo armazenada. A


maior parte dos dados pode ser separada em dois tipos principais: número ou

9
texto. No MATLAB, o tipo padrão de número é chamado de double e texto é
chamado de char. Números também podem ser considerados como texto,
então o número 1 do tipo double é diferente do número 1 do tipo char. As
operações no MATLAB exigem que a informação esteja no tipo certo, caso
contrário o programa não consegue “entender” o que deve fazer.
Exemplificando, não faz sentido passar um comando de soma para uma
variável do tipo texto.

O tamanho da variável é simplesmente o número de elementos que ela


armazena. Para variáveis do tipo double, cada elemento pode armazenar um
número, e para o tipo char, cada elemento armazena um caractere (uma letra).
Observe na tabela anterior que a nomenclatura utilizada para o tamanho segue
o formato M x N, isso porque o MATLAB trabalha prioritariamente com matrizes
de duas dimensões – linhas (M) e colunas (N). Uma matriz de apenas uma
linha ou uma coluna é chamada de vetor. Matrizes serão mais bem discutidas
à frente. Na tabela anterior, pode-se ler então que a vetor
Temperatura_diaria_inverno possui 90x1 elementos, organizados em 90 linhas
e 1 coluna.

Por fim, o valor (ou valores) atribuído(s) a uma variável é a informação em si


armazenada na variável.

No MATLAB, um elemento de uma variável numérica pode ainda conter a


informação de ausência de dados, através do símbolo NaN (Not a Number). A
ausência de dados em dados oceanográficos pode ocorrer por diversos
motivos, como por exemplo, falhas de amostragem de equipamentos in situ ou
também a representação de pontos de nuvem ou continente em sensoriamento
remoto. É importante que os dados ausentes estejam especificados com NaN
para que os procedimentos estatísticos desconsiderem esses valores e para
que os gráficos mostrem corretamente regiões “vazias” nos locais onde faltam
os dados.

10
Operações matemáticas

Um dos conjuntos fundamentais de operações são as operações matemáticas


aritméticas básicas. Definidas duas variáveis de elementos numéricos, a e b,
realizam-se as operações aritméticas entre elas utilizando a seguinte sintaxe:

Operação Sintaxe

Adição a+b

Subtração a-b

Multiplicação a*b

Divisão a/b

Potenciação a^b

O resultado da operação sempre será atribuído a uma variável. Quando não for
especificada a variável que irá manter o valor do resultado da operação, o
MATLAB por padrão irá atribuir este valor à variável ans (referente a answer) e
imprimirá seu valor na tela. Para especificar qual variável armazenará o
resultado da operação, simplesmente atribua com o sinal de igual o resultado
da operação à variável que irá guardar o resultado. Por exemplo:

>> c = a + b

Uma combinação de várias operações aritméticas pode ser feita na mesma


linha de comando, separando com parênteses as operações que devem ser
feitas com prioridade. Por exemplo:

>> resultado = (a+b) / 2

>> resultado2 = 5*(c^2) / ((4 + d)*4 - 1)

11
Matrizes e operações matriciais

Como o próprio nome sugere, MATLAB (Matrix Laboratory) é um software que


trabalha prioritariamente com matrizes e operações matriciais. Assim, para
trabalhar com dados nesse formato, é importante revisar alguns conceitos
básicos de matrizes.

Matrizes são objetos matemáticos que armazenam dados organizados em


dimensões. Um exemplo simples de uma matriz pode ser representado por
uma tabela, como a tabela a seguir, de 3 linhas e 4 colunas: A(3x4).

3 -2 0 4

A= 1 7 -1 -8

5 -5 6 -4

A matriz A possui duas dimensões (linhas e colunas). Cada célula da matriz


possui um índice associado, o que representa sua localização na própria
matriz. A notação de índices é baseada na posição do dado em cada uma das
dimensões. Por exemplo, o índice da célula que contém o valor −1 (destacado
em cor cinza) da matriz A, é denotado por A(2,3), ou seja, é o elemento da
matriz A localizado na linha 2 e coluna 3. O índice de um elemento é utilizado
caso seja necessário fazer uma operação específica com esse elemento.

No MATLAB, a sintaxe para indexação de um único elemento pertencente a


uma variável var, de duas dimensões é:

>> var(i,j)

Onde i e j seriam a linha e coluna, respectivamente, do elemento que o usuário


deseja usar.

Para resgatar uma linha ou coluna específica da variável, utiliza-se o sinal de


“dois pontos”. Por exemplo, pegando uma linha específica i:

>> var(i,:)

Pegando uma coluna específica j:

>> var(:,j)

12
O sinal de “dois pontos” nesse contexto pode ser lido como “todos”. Os
exemplos então podem ser lidos como “pegando todas as colunas da linha i” e
“pegando todas as linhas da coluna j”.

O “dois pontos” também pode definir um intervalo de interesse. Supondo que o


usuário não queira pegar todas as linhas, mas apenas um intervalo de linhas,
da linha x até a linha y:

>> var(x:y,j)

Irá resgatar os elementos contidos nas linhas de x até y, da coluna j. Um


exemplo com números:

>> A(2:3,:)

Leia-se “pegando todas as colunas das linhas 2 a 3 da matriz A”.

As dimensões das matrizes para dados oceanográficos, em geral seguem as


dimensões espaciais, como uma forma de facilitar sua organização e
visualização, e também pode haver uma dimensão dedicada à variação
temporal dos dados. Assim, raramente uma matriz excederá 4 dimensões (3
dimensões espaciais e 1 dimensão temporal). Alguns exemplos de matrizes de
diferentes dimensões são:

 Perfil vertical de dados em uma estação: 1 dimensão (profundidade);


 Dados de temperatura superficial do mar de uma região obtidos por
satélites: 2 dimensões (latitude x longitude);
 Dados diários de fundeios formando um transecto perpendicular à costa:
3 dimensões (longitude x profundidade x tempo);
 Resultados diários de modelos tridimensionais: 4 dimensões (latitude x
longitude x profundidade x tempo).

Muitos procedimentos de processamento de dados envolvem operações


matemáticas entre matrizes. Alguns cuidados devem ser levados em
consideração na realização destas operações para evitar erros.

Somas e subtrações matriciais exigem apenas que as matrizes tenham o


mesmo tamanho. Por exemplo, para somar matrizes de duas dimensões, elas
devem possuir o mesmo número de linhas e colunas.

13
Já a multiplicação de matrizes exige uma regra mais complexa. O número de
colunas da primeira matriz deve ser igual ao número de linhas da segunda. Por
exemplo: A(2x3) e B(3x4); A(4x1) e B(1x2); A(15x7) e B(7x22). No entanto,
para as aplicações na Oceanografia, raramente é necessário realizar
multiplicação de matrizes. O que é muito mais comum é a multiplicação termo-
a-termo de matrizes. Operações termo-a-termo, assim como a soma e
subtração, exigem matrizes de igual tamanho. Para diferenciar operações
matriciais termo-a-termo no MATLAB, o usuário deve adicionar um ponto ‘.’
antes do sinal de operação. Sendo assim, temos:

Multiplicação de matrizes:

>> A * B

Multiplicação de matrizes termo-a-termo:

>> A .* B

Realizar uma operação matricial com matrizes incompatíveis gera um tipo de


erro clássico. Supondo que as matrizes A e B não possuam mesmo número de
linhas e colunas. Ao tentar somá-las:

>> A+B

Error using +
Matrix dimensions must agree.

Funções

Algo necessário para o entendimento das funções é o conceito dos argumentos


de entrada (input) e de saída (output). Pode-se ver uma função como uma
máquina em que informações (argumentos de entrada) são inseridas nela, que
são processadas dentro da função, e seu resultado é retornado através dos
argumentos de saída.

Por exemplo, a função mean exige como argumento de entrada um vetor com
números. Esses números serão processados (será feita a média deles dentro
da função), e o valor médio dos elementos do vetor será atribuído à saída da
função, que pode ser uma variável definida.

14
Os argumentos de entrada em uma função geralmente são especificados
dentro dos parênteses que sucedem o nome da função. Algumas funções
podem retornar mais de um argumento de saída, que podem ser resgatados
para variáveis contidas entre colchetes, no formato:

>> [saida1 saida2] = function(entrada1,entrada2,entrada3)

Um exemplo real desse uso é com a função size, que retorna o tamanho de
uma variável em termos de números de linhas (M) e colunas (N):

>> [M,N] = size(X)

Usando essa função com a nossa matriz A (página 11), podemos ver os
valores encontrados para M e N:

>> [M,N] = size(A)

M =

N =

Ou seja, podemos confirmar que a matriz A apresenta 3 linhas e 4 colunas.

Documentação: help, doc e google

O MATLAB possui uma infinidade de funções prontas para serem usadas para
resolver qualquer tipo de demanda. Para que o usuário resolva seu problema
específico bastam duas etapas:

1. Saber qual função usar.


2. Usá-la corretamente.

Saber qual função usar é algo que certamente melhora com o uso rotineiro do
software. Porém, independente do nível de experiência do usuário, uma prática
muito eficiente é procurar no Google. Ao realizar a pesquisa é importante tentar
usar palavras-chave específicas ao problema e dar preferência à pesquisa em
inglês.

15
Para utilizar uma função corretamente, dois comandos muito úteis são o help e
o doc. A diferença entre eles é que o doc fornece uma documentação mais
completa em uma janela separada. A sintaxe para utilização desses comandos
é a seguinte:

>> help <nome de uma função>

>> doc <nome de uma função>

Para abrir a documentação da função mean, que calcula média, como


exemplo:

>> doc mean

Irá abrir a documentação específica da função mean, que contém sua sintaxe
(geralmente com várias possíveis formas de uso), descrição, exemplos de uso
e argumentos de entrada.

16
Rotinas

Uma rotina (ou script) é uma maneira de se armazenar uma sequência de


comandos de MATLAB. Geralmente, até uma simples criação de um gráfico
envolve uma quantidade grande de comandos: um comando para gerar o plot,
um para mudar a escala, um para mudar a cor, um para aumentar o tamanho
da fonte, etc. Com a rotina, é possível então salvar toda a sequência de
comandos e executar com um botão.

As rotinas são arquivos de texto com extensão .m que podem ser criados e
editados no Editor de Textos dentro do próprio MATLAB. Utilizando o símbolo
de porcentagem “%”, é possível fazer comentários em uma rotina, que não
são lidos pelo programa. Os comentários são muito utilizados para descrever a
lógica da rotina, já que apenas os comandos podem deixar a organização meio
confusa, especialmente se a rotina for passada para outra pessoa. Um
exemplo de rotina contendo alguns comandos vistos ao decorrer da apostila
(comentários em verde):

% criando a matriz A, igual da página 11:

A = [3,-2,0,4; 1,7,-1,-8; 5,-5,6,-4];

% separando apenas alguns elementos de interesse. Vamos


pegar apenas a linha 2 e colocar em uma variável chamada
linha2:

linha2 = A(2,:);

% fazendo a média da linha 2 e colocando o resultado na


variável result:

result = mean(linha2);

Podemos executar a rotina utilizando o botão de Run, ou apertando a tecla F5


de dentro do Editor de Texto. A rotina então cria as variáveis A, linha2 e result,
que podem ser vistas na Área de Trabalho (Workspace). De forma parecida, é
possível criar rotinas bem mais complexas, capazes de carregar dados, realizar
o processamento, gerar figuras, e salvar o resultado necessário.

17

View publication stats

Das könnte Ihnen auch gefallen