MATLAB

O MATLAB (MATrix LABoratory) é um software interativo de alta performance voltado para o cálculo numérico. Programado a partir da linguagem C, o elemento básico de informação da linguagem MATLAB (ou M) é uma matriz que não requer dimensionamento. Possui versão de uso por linha de comando e por interface gráfica, que por sua vez é composta de janela de comandos (com o prompt ‘>>’, onde são digitados os comandos e impressa a saída), variáveis, histórico de comandos e edição de código.

Tela do programa MATLAB (v. 7.4)
Tela do programa MATLAB (v. 7.4)

Instalação

Estando de posse do CD (ou imagem ISO), arquivos de licença (license.lic e network.lic) e “installation key”, pode-se iniciar o processo de instalação:

1) Acessar o terminal do computador como super usuário (usando ssh com opção -X se for acesso remoto)

2) Montar a iso ou a mídia:

3) Ir para o diretório montado e executar o comando para iniciar a instalação como super usuário:

4) Na janela que abriu, escolher “Use a file installation key” e clicar em “next”

5) Clique em “yes” para aceitar os termos e em “next”

6) Clique em “I have the File Installation Key for my license” e copie a chave (“installation key”)

7) Clique em next para aceitar o diretório padrão de instalação (/usr/local/MATLAB/R2015a)

8) Na tela de escolha de programas a serem instalados, escolher só o Matlab (a não ser que precise exatamente de algum outro)

9) Clique em “Browse” para encontrar o arquivo “license.lic” e clique em next

10) Clique em “Create symbolic links to MATLAB scripts in” e deixe o local padrão (/usr/local/bin)

11) Finalizada a instalação, deve-se acessar a pasta /matlab/licenses e remova o arquivo network.lic existente:

Matlab no Linux

O comando “matlab” no terminal de texto do Linux abre o programa em modo gráfico – se estiver acessando um servidor remoto, utilize o parâmetro “-X” para permitir o modo gráfico. Caso prefira executar o modo texto do Matlab, basta acessar sem usar o “-X” ou usar os parâmetros indicados a seguir:

O redirecionamento após os três parâmetros é para o caso de executar um script Matlab via linha de comando. Nesse caso, escreva “exit” na última linha do script para ele retornar à linha de comando. Para evitar ficar abrindo e fechando o Matlab cada vez que for rodar o script, é possível abrir o terminal do Matlab em modo texto e executá-lo através do comando:

Nesse caso, não coloque “exit” na última linha. Para alterar o arquivo de script, utilize algum editor em outra janela (gráfico ou texto puro).

Exemplos de scripts

As matrizes podem ter diferentes dimensões: Mx1 (ou 1xM), conhecidos como vetores pois possuem 1 coluna (ou 1 linha), MxN (2 dimensões), MxNxL (tridimensional), etc. Podem ser definidas separando os elementos de uma fila com espaço em branco ou usando vírgula e ponto-e-vírgula para terminar cada linha. A lista de elementos deve ser cercada por colchetes “[]”. Parênteses “()” são usados para acessar os elementos e subarrays (além de seu típico uso como entrada de argumento para funções).

Veja o exemplo a seguir (tiranan.m). Essa função que tem o objetivo de excluir o escrito “NaN” (Not a Number), que geralmente aparece quando não há dados válidos para serem armazenados. Nesse script, a função “tiranan” recebe um vetor (chamado “vetor” mesmo) e, enquanto o contador for menor ou igual ao tamanho (length) desse vetor, ela faz a verificação, elemento por elemento, se o valor é um NaN (função “isnan”). Se for um NaN (retorna verdadeiro, valor 1), essa posição do vetor é excluída e a posição dos elementos seguintes será diminuída em um. O vetor resultante retorna na variável “resultado”.

Veja esse outro exemplo (filtroeplota.m), que tem o objetivo de organizar dados, obtidos a partir de arquivos, em 3 colunas e impressão de histograma (linhas comentadas). O comando “load” salva os nomes dos arquivos (que estão no arquivo lista_aqua) em um “cell array”, que é uma matriz que pode guardar strings e números em uma mesma estrutura. Para cada um desses arquivos, serão contabilizados os dados com NaN e as linhas “zeradas” (sem dados), gravados os valores de ano e dia do ano (ANODIA), variável (AOD) e seu desvio padrão (s) em 3 colunas e impresso um gráfico contendo a série temporal desses dados. Nessa rotina temos exemplos de for, if/else, leitura de matrizes e plotagem de gráficos. A função “sprintf” escreve os dados em uma string, enquanto que a função “eval” executa a expressão inserida. Os comentários são iniciados com porcentagem “%” e comandos na mesma linha são separados por ponto e vírgula “;” (caso uma linha termine com esse caractere, sua saída não será impressa na tela).

Na sequência, veja o gráfico gerado. A rotina apresentada foi uma das utilizadas para gerar os resultados apresentados no artigo: Estudo da variabilidade temporal da profundidade óptica do aerossol obtida com o MODIS sobre a região Amazônica.

Gráfico de série temporal gerado pela rotina
Gráfico de série temporal gerado pela rotina “filtroeplota.m”

Veja esse outro exemplo (geragraficos.m), também voltado para plotar gráficos de série temporal e de uma variável em função de outra. Os nomes das variáveis, sítios e satélites são dados em vetores de strings, e as informações de limites espaciais e temporais de cada sítio são determinados em vetores numéricos. Para cada satélite, em cada sítio e para cada ano, os respectivos arquivos com dados são lidos, os dados são selecionados espacialmente e são calculadas as médias a cada 15 dias. Também são impostas restrições para os dados e montados os vetores a serem plotados em dois gráficos: variável versus AOD e série temporal anual de cada variável. A função bins (utilizada ao montar a matriz de pontos a serem plotados) pode ser vista nesse link: bins.m

Na sequência, veja um exemplo dos gráficos gerados por esse script. Mais exemplos podem ser visto nessa dissertação: Análise de propriedades de nuvens em função da profundidade óptica do aerossol a partir de produtos derivados pelo MODIS da região amazônica durante a estação seca

Gráficos de variável versus AOD e de série temporal anual gerados pela rotina
Gráficos de variável versus AOD e de série temporal anual gerados pela rotina “geragraficos.m”

Finalizando, uma função muito útil desliga o computador após um certo número de segundos (shutdown.m):

Para um tutorial mais completo, existem vários disponíveis em português na web, como essa Apostila de MATLAB do link.

Uma alternativa opensource gratuita ao MATLAB, com alto grau de compatibilidade entre funções e scripts, é o Octave – clique no link para conhecê-lo melhor.