Tutorial Completo do GNU Octave
Tutorial Completo do GNU Octave
Autores:
Mauricio Galo
Paulo de Oliveira Camargo
1
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
1. INTRODUÇÃO
2. INICIANDO O GNU Octave
3. OPERAÇÕES COM MATRIZES E VETORES
4. GRÁFICOS
5. ARQUIVOS SCRIPT
6. CONTROLE DE FLUXO
7. ABERTURA E VISUALIZAÇÃO DE IMAGENS
8. IMPORTAÇÃO / EXPORTAÇÃO DE DADOS
Autores:
9. CRIAÇÃO E USO DE FUNÇÕES
Mauricio Galo
2023 Paulo de Oliveira Camargo
Departamento de Cartografia / FCT - UNESP
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Este material foi preparado a partir das seguintes referências (em ordem alfabética): 1. INTRODUÇÃO
CORAL, A. M.; SANTOS, M. P.; BASTOS, T. D. A.; BORBA, M. Curso de Matlab. Universidade Federal de
Santa Catarina, Dep. de Eng. de Produção, Programa Especial de Treinamento – PET. Florianópolis – SC, 1999. 1.1. O que é GNU Octave
29p.
EATON, J. W.; BATEMAN, D.; HAUBERG, S. GNU Octave – Edition 3 for Octave version 3.2.3, July, 2007.
672p.
EATON, J. W.; BATEMAN, D.; HAUBERG, S.; WEHBRING, R. GNU Octave – Edition 4 for Octave version O GNU Octave é um aplicativo que foi originalmente desenvolvido com o propósito
4.0.0 – Free Your Numbers, March, 2015. 966p.
didático, mais especificamente para o projeto de reatores químicos e surgiu a partir da
HANSELMAN, D.; LITTLEFIELD, B. Matlab - Versão do Estudante: guia do usuário (Tradução). São Paulo:
Makron Books, 1997. 305p. intenção de criar um aplicativo no qual a programação fosse mais rápida do que nas
McANDREW, A. Introduction to Digital Image Processing with MATLAB®. Thomson Course Technology,
2004. 509p. ISBN: 0-534-40011-6
demais linguagens.
PAGAMISSE, A.; SOUZA, L. H. G. Introdução ao Software Octave. Semana de Cursos de Matemática,
Estatística e Computação, 25-29 de agosto de 2003, FCT/UNESP, Presidente Prudente, 2003. 54p.
Segundo os autores, os alunos poderiam dedicar mais tempo na análise e solução dos
SIGMON, K. MATLAB Primer – Third Edition. Department of Mathematics, University of Florida, Gainesville,
1993. 35p. Disponível em [Link] Acesso em Março/2021. problemas de química, do que especificamente na implementação.
ZERI, L. M. M. Apostila de Matlab. Instituto Nacional de Pesquisas Espaciais – INPE, 2001. 19p.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 3 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 4
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
O seu desenvolvimento começou por volta de 1988 e um de seus idealizadores foi Características básicas:
John W. Eaton, além de James B. Rawlings da Universidade de Wisconsin-Madison e
John G. Ekerdt da Universidade do Texas. Atualmente o desenvolvimento é feito por - Domínio público;
vários profissionais, de diferentes países, sendo a sua distribuição feita de acordo com a - Possui vários comandos que são semelhantes ao MATLAB® e SciLab®;
licença GLP (GNU General Public License). - É um software multiplataforma uma vez são disponíveis versões para diferentes
sistemas operacionais: Linux, Unix, Windows, Mac, etc.
Onde encontrar (páginas oficiais):
Últimas versões (estáveis):
[Link]
[Link]
6.4.0 (Lançada em 30/Outubro/2021)
7.3.0 (Lançada em 03/Novembro/2022)
8.1.0 (Lançada em 03/Março/2023)
8.3.0 (Lançada em 09/Agosto/2023)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 5 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 6
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 7 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 8
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Interface gráfica do GNU Octave versão 6.4.0, lançada em outubro de 2021. Interface gráfica do GNU Octave versão 4.2.2, lançada em março de 2018.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 9 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 10
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Interface gráfica do GNU Octave versão 4.4.0, lançada em abril de 2018. Interface gráfica do GNU Octave versão 5.1.0, lançada em março de 2019.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 11 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 12
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Interface gráfica do GNU Octave versão 5.2.0, lançada em janeiro de 2020. Interface gráfica do GNU Octave versão 6.2.0, lançada em fevereiro de 2021.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 13 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 14
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Diretório de
trabalho
Janela de
comandos Editor
Interface gráfica do GNU Octave versão 8.3.0, lançada em agosto de 2023. Interface gráfica do GNU Octave versão 6.2.0.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 15 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 16
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Além dessas versões, que podem ser instaladas e executadas no modo off-line, também Alguns comandos do GNU Octave são básicos e semelhantes a outros usados em
é possível executar o GNU Octave de modo online (ver link abaixo). sistemas operacionais como DOS, Unix, Linux, dentre outros. A tabela seguinte mostra
alguns destes comandos, que podem se acionados a partir do prompt do GNU Octave.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 17 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 18
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 19 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 20
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Para a instalação de algum pacote adicional, de nome package_file_name.[Link], 2. INICIANDO O GNU Octave
basta ativar o seguinte comando no prompt do GNU Octave:
2.1. Variáveis
O GNU Octave trabalha essencialmente com um tipo de variável: matriz, que pode
pkg install package_file_name.[Link]
conter números (complexos ou não) e textos. Em alguns casos, um tratamento especial é
dado a uma matriz 1 x 1 (escalar) ou a matrizes 1 x n ou n x 1 (vetores).
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 21 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 22
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
A maneira mais fácil de entrar com uma pequena quantidade de valores é digitando ou
diretamente os dados: » A=[1, 2, 3; 4, 5, 6; 7, 8, 9]
- envolva os elementos com colchetes, [ ]; (Para matrizes e vetor)
- separe cada elemento com espaços ou vírgulas; Resultado: A =
- use ponto-e-vírgula (;) para indicar fim da linha. 1 2 3
4 5 6
Por exemplo, para entrar com a matriz abaixo na memória do computador, e guardá-la
7 8 9
na variável A:
1 2 3
A 4 5 6 OBS: Para que o computador realize a operação e não mostre a saída, basta terminar a
7 8 9 expressão com ponto-e-vírgula (;). Isto é muito útil para evitar que o computador mostre
resultados de cálculos intermediários desnecessários, e para acelerar as operações.
Basta digitar:
» A=[1 2 3; 4 5 6; 7 8 9]
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 23 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 24
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Existem algumas variáveis que são intrínsecas ao GNU Octave, como por exemplo: O GNU Octave, assim como o MATLAB, são linguagens de alto nível e interpretadas.
Nestas linguagens o sistema avalia as expressões digitadas, que são geralmente na forma:
help Ajuda do GNU Octave
ans Nome de variável padrão usado para resultados variável = expressão
eps Precisão do número real (ponto flutuante)
nan Not a Number (indeterminação: 0/0) Os números reais são escritos em notação decimal e para criar números complexos
realmax Maior número real positivo utilizável basta escrever i (ou j) depois da parte imaginária. Alguns exemplos de números permitidos
realmin Menor real positivo utilizável são mostrados abaixo:
inf Infinito: 1/0
computer Tipo de computador 1/3 -99 .0001
pi 3,14159265358979 9.63973 1.602E-20 6.025E23
i, j Unidade imaginária (i2=-1)
3 + 2i -3.1459i 3E5j
version Versão do GNU Octave
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 25 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 26
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Todo cálculo é realizado com todas as casas decimais (eps), embora os números O formato + é uma maneira compacta de mostrar matrizes de grandes dimensões. Os
mostrados ocultem algumas dessas casas. Para mudar o formato de saída dos números, símbolos "+", "-", e "espaço em branco" são mostrados, respectivamente para elementos
pode-se usar o comando format. positivos, elementos negativos e zeros.
O formato “default”, chamado de formato short, mostra aproximadamente 5 dígitos
significativos ou usam notação científica. Exemplo: Podem-se construir expressões com os operadores aritméticos usuais:
+ adição /e\ Divisão
>> x = [4/3 1.2345e-6]
- subtração ^ Potenciação
é mostrada, para cada formato usado, da seguinte maneira: * multiplicação ’ matriz transposta
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 27 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 28
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
mean(x) Média de x
abs(x) Valor absoluto ou módulo de um número
min(x) Menor elemento em x
acos(x) Arco co-seno
sin(x) Função seno
angle(x) Calcula o ângulo de fase (em radianos) para números complexos
sqrt(x) Raiz quadrada
asin(x) Arco seno
std(x) Desvio padrão
atan(x) Arco tangente
sum(x) Soma dos elementos de x
cos(x) Cosseno
tan(x) Tangente
cross(a,b) Produto vetorial dos vetores a e b
exp(x) Exponencial (ex)
inv(x) Matriz inversa da matriz x Algumas dessas operações podem ser aplicadas a vetores ou matrizes. Para a função
log(x) Logaritmo natural (loge x) std(x), por exemplo, se o argumento x for um vetor o resultado será o desvio padrão desse
log10(x) Logaritmo na base 10
max(x) Maior elemento em x vetor. Se x for uma matriz, será calculado o desvio padrão para cada coluna dessa matriz.
O mesmo ocorre com as funções sum, max e mean, entre outras.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 29 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 30
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Usando os comandos vistos, determinar a média, desvio padrão, a soma dos 2.2.1. Comandos
elementos, o valor máximo e mínimo do vetor V abaixo:
Ao sair do GNU Octave (através do comando quit ou exit) todas as variáveis do
» V=[1 2 3 4 5 6 7 8 9] workspace são perdidas, a menos que sejam salvas usando o comando save.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 31 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 32
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Um dos comandos mais úteis no GNU Octave, bem como em diversos aplicativos, é o
2.2.2. Exercícios
help, que fornece ajuda on-line sobre qualquer outro comando. Por exemplo, para obter
ajuda sobre o comando who:
1) Armazene no workspace os seguintes valores:
» help who
a = 3
WHO – Lista as variáveis no workspace atual. b = -2.123
WHOS – Lista as variáveis e informações adicionais sobre elas. c = 4*3
d = [1 2 3 4]
Outro comando útil: lookfor. Este comando procura e lista todas as funções do
GNU Octave que contém a palavra-chave especificada. e = [1; 2; 3; 4]
» lookfor mean
Utilize os comandos who e whos e observe as diferenças.
Resultado: mean, meansq e mean2.
Ative o comando clear, e digite novamente o comando whos.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 33 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 34
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
2) Armazene no workspace os seguintes valores: Comandos: save, quit (ou exit), load, clear, whos.
a = 3.452
b = -25.123 4) Atribua as seguintes expressões às variáveis:
c = 4*pi a) 4.12 a – pi/c para x
b) log(a + 40.1353) para y
3) Verifique o resultado das seguintes das seguintes operações: c) log(a) para z
a) (a + b) c c) tan(c) – asin(b)
b) (c – b) a / b d) sin(cos(tan(c))) 5) Salve as variáveis x, y, z em um arquivo chamado [Link].
Efetuar os cálculos (formato padrão), depois mudar para o formato long 6) Saia do GNU Octave, entre novamente e carregue as variáveis salvas anteriormente.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 35 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 36
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
> y = 0:pi/4:pi
O GNU Octave permite a manipulação de linhas, colunas, elementos individuais e
partes de matrizes.
que resulta em:
> z = 6 : -l : l
gera um vetor linha contendo os números de 1 a 5 com incremento unitário. z =
6 5 4 3 2 1
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 37 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 38
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Pode-se também gerar vetores usando a função linspace. 3.2. Elementos das matrizes
Sintaxe: linspace (inicio, fim, número de elementos)
Um elemento específico da matriz pode ser acessado especificando a linha e a coluna
do elemento desejado, fazendo A(linha, coluna). Por exemplo, dada a matriz A:
Exemplo de uso:
A =
> k = linspace (0, l, 6)
l 2 3
4 5 6
k= 7 8 9
0 0.2000 0.4000 0.6000 0.8000 1.0000
Qual o resultado da seguinte operação?
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 39 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 40
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
A = A =
l 2 3 92 99 11 18
4 5 6 98 80 17 14
7 8 10 14 81 88 20
B =
14
20
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 41 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 42
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
C é uma submatriz 2x4, formada pelas linhas 2 e 3 e colunas 2 a 4 da matriz A. Exemplo 2: C uma matriz de dimensão 8x8 com elementos nulos.
>> C = zeros (8)
>> D = triu(A) << Extrai a triangular superior.
D =
92 99 11 18 Matriz identidade: eye
00 88 17 14 Matriz diagonal: diag << Extrai a diagonal de uma dada matriz.
00 00 88 20 Matriz de números randômicos: rand
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 43 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 44
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
» m+100
3.3. Operações com matrizes ans =
108 101 106
Operações matemáticas simples (adição, subtração, divisão e multiplicação)
103 105 107
envolvendo matrizes são semelhantes às operações com escalares.
104 109 102
» m=[8 1 6; 3 5 7; 4 9 2];
Nas operações entre matrizes devem ser respeitadas as regras usuais da matemática
» 3*m quanto ao número de linhas e colunas que duas matrizes devem ter para serem somadas,
multiplicadas, etc. No entanto existem operações especiais. Sendo A=[a1 a2 ... an] e B=[b1
ans = b2 ... bn] duas matrizes, então:
24 3 18
9 15 21 • A./B = [a1/b1 a2/b2 ... an/bn];
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 45 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 46
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
3.4. Exercícios
Alguns comandos adicionais para a operação com matrizes:
1) Dadas as seguintes matrizes e vetores: » A = [1 2 3; 4 10 6; 7 8 19]
» B = [4 5 6; 1 2 3; 8 7 6]
inv Matriz inversa de uma dada matriz
Sintaxe: inv(matriz) » C = [4 5 6]
det Calcula o determinante (D) de uma matriz bem como o » L = [4; 5; 6]
recíproco do número de condição (RCOND)
Sintaxe: [D, RCOND]=det(matriz)
2) Calcule:
trace Traço de uma matriz
Sintaxe: trace(matriz) a) D = A+B g) Determinar a inversa de A e salvar em D
cond Número de condição de uma matriz. b) E = A*B h) Produto D vezes A
Sintaxe: cond(matriz)
rank Rank de uma matriz c) F = A-B i) Autovalor e Autovetor de A
Sintaxe: rank(matriz) d) G = BT-A j) Calcule o traço e o determinante de A
T
e) H = A A k) Resolver o sistema AX = L
T
f) I = A C
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 47 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 48
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
4. GRÁFICOS
Caso o usuário queira saber qual a interface em uso basta digitar graphics_toolkit no
prompt do GNU Octave. Para modificar a interface de saída o comando
A construção de gráficos no GNU Octave é bem simples e a maior parte dos
graphics_toolkit (opção) pode ser usado.
comandos é muito parecida com os usados pelo MATLAB, sendo possível a geração de
As imagens abaixo mostram o mesmo gráfico gerado com as opções “fltk” e
gráficos bidimensionais ou tridimensionais.
“gnuplot”, respectivamente.
Na versão atual a saída gráfica é, por default, criada usando o OpenGL e Qt. Caso as
bibliotecas do OpenGL não estejam disponíveis o GnuPlot é utilizado.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 49 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 50
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Na tabela seguinte são mostrados alguns comandos básicos que permitem a geração
de gráficos bidimensionais no GNU Octave. Se y é um vetor, plot(y) produz um gráfico linear com o índice dos elementos de y na
abscissa e os elementos de y na ordenada.
plot Visualização de gráficos lineares no plano
bar Gráfico de barras Por exemplo, para plotar os números [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14], entre com o
stem Sequência discreta
stairs Plotar em degraus vetor y e execute o comando plot, como mostrado:
errorbar Plotar barra de erros
hist Plotar histograma >> y = [0.0 0.48 0.84 1.0 0.91 0.6 0.14];
comet Plotar com trajetória de cometa
>> plot(y)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 51 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 52
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado:
Se t e y são vetores com dimensões iguais, o comando plot(t,y) produz um gráfico
bidimensional dos elementos de t versos os elementos de y, por exemplo
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 53 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 54
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado: O GNU Octave pode também plotar múltiplas linhas em apenas um gráfico.
Exemplo:
>> plot(t,sin(t),t,cos(t),t,0.4*sin(t+pi),t,0.6*cos(t+pi))
Obs : Observe que as informações são fornecidas aos pares, sendo um desles o que será
representado na abscissa e o seguinte na ordenada, e assim sucessivamente.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 55 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 56
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
1
Os tipos de linhas, símbolos e cores usadas para mostrar os gráficos podem ser
0.8
controlados. Seguem alguns exemplos, seguidos dos respectivos resultados (próxima
0.6
página):
0.4 Símbolo: *
0.2
Cor: Preto
>> x = 0:0.05:1;
0
>> subplot(1,3,1); Símbolo: -
-0.2 Cor: Azul
-0.4
>> plot(x,x.^2,'*k')
-0.6 >> subplot(1,3,2);
-0.8 >> plot(x,log(x+0.1),'-b') Símbolo: +
-1 >> subplot(1,3,3); Cor: Vermelha
0 2 4 6 8 10 12 14
>> plot(x,-x.^3,'+r')
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 57 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 58
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado: Outros tipos de linhas, pontos e cores também podem ser usados:
m magenta
c cian
Mais opções: '--', ':', '-.'
r vermelho
+ +++++++++
g verde
X xxxxxxx
b azul
^ ^^^^^^^
w branco
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 59 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 60
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
>> t = 0:0.5:4*pi;
>> y = sin(t);
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 61 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 62
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Dado o vetor: y= [ 1 2 3 7 3 8 8 4 10 1 3 7 8 9 10 6] construa o gráfico de barras bem Resultados: Gráfico de barras e histograma de frequências, respectivamente.
como o histograma (hist) de frequências.
>> bar(y);
>> grid('on');
>> hist(y,50);
>> grid('on');
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 63 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 64
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
>> t=1:pi/10:6*pi;
>> y=(1-t).*sin(t);
>> comet(y)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 65 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 66
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 67 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 68
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado:
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Outros exemplos de superfícies (ainda usando a mesma função) no qual se considera que a Resultados:
superfície é iluminada por uma fonte de luz, dando o efeito de "sombreamento". Seguem
algumas das alternativas:
>> colormap(bone)
>> surfl(x, y, z), shading faceted
>> colormap(bone)
>> surfl(x, y, z), shading flat
(a)... ..(b) (c)
>> colormap(bone) (a) Sombreamento interpolado, com as linhas de transição visíveis (shading faceted)
>> surfl(x, y, z), shading interp (b) Sombreamento interpolado mostrando as faces planas (shading flat)
(c) Sombreamento interpolado (shading interp)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 71 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 72
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 73 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 74
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Exemplos:
fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 75 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 76
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado:
Uma outra possibilidade para a visualização de múltiplas funções:
>> figure(2)
>> t=linspace(-2*pi,2*pi,50);
>> y1=tan(t);
>> y2=sin(t);
>> y3=cos(t);
>>
>> plot(t,y1,"r");
>> hold on
>> plot(t,y2,"g");
>> plot(t,y3,"b");
>> legend('y1','y2','y3');
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 77 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 78
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 79 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 80
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 81 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 82
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
6. CONTROLE DE FLUXO É muito comum construções em que conjuntos de laços for são usados,
principalmente em operações envolvendo vetores e matrizes:
Os comandos que controlam o fluxo especificam a ordem em que as operações são
realizadas. No GNU Octave estes comandos são semelhantes aos usados na linguagem C for i=1:10;
bem como em outras linguagens. for j=1:10;
A(i,j)=i+j;
6.1. Laço for B(i,j)=i-j;
O laço for é o controlador de fluxo mais simples e usado na programação endfor
GNU Octave. Exemplo de uso do comando for: endfor
A
>> for i = 1:n;
>> for j = 1:n; B
>> ... C=A+B
>> endfor
>> endfor
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 83 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 84
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 85 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 86
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 87 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 88
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
warning('off');
imread Faz a leitura de imagens pkg load image;
image Permite a visualização de uma matriz como uma imagem nome='[Link]';
hist Calcula o histograma de um conjunto de dados DATA=imread(nome);
rgb2gray Converte imagem colorida (RGB) para tons de cinza
figure(1);
axis Controla a aparência e a escala dos eixos image(DATA);
disp Visualização de um vetor no modo texto xlabel([ 'Imagem: ' nome ]);
figure Abre uma nova janela gráfica disp([ 'Imagem entrada: ' nome ]);
colormap Permite definir um mapa de cores
Exemplo: colormap(gray(256)) figure(2);
imfinfo Função que retorna uma estrutura que contem diversas DATAg=rgb2gray(DATA);
informações sobre determinada imagem image(DATAg);
Exemplo de uso: imfinfo(“arquivo_imagem”) colormap(gray(256));
xlabel([ 'Imagem (tom de cinza) ' ]);
disp([ 'Imagem (tom de cinza) : ok' ]);
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 89 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 90
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Abertura de imagem / Visualização / Conversão RBG para Tom de Cinza (Cont.) Abertura de imagem / Visualização / Conversão RBG para Tom de Cinza (Cont.)
No mesmo arquivo criado antes, escreva um código que permita criar a imagem No mesmo arquivo criado antes, escreve um código que permita criar a imagem
negativa em tom de cinza. Mostre esta imagem: negativa em tom de cinza. Mostre esta imagem:
... ...
figure(3); figure(3);
DATAn=255.-DATAg; DATAn=255.-DATAg;
image(DATAn); image(DATAn);
colormap(gray(256)); colormap(gray(256));
xlabel([ 'Imagem (negativa)' ]); xlabel([ 'Imagem (negativa)' ]);
disp([ 'Imagem (negativa) : ok' ]); disp([ 'Imagem (negativa) : ok' ]);
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 91 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 92
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 93 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 94
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Resultado do processamento anterior, onde é mostrada a imagem lida e respectivo Alguns comandos adicionais relacionado ao processamento de imagens:
histograma.
imshow Permite a visualização de uma imagem
Histograma
3500 imagesc Permite a visualização de uma imagem após a aplicação de uma escala,
de modo que todo o mapa de cores seja utilizado
50 3000
imwrite Permite salvar uma imagem em arquivo (imwrite(imagem, “[Link]”))
100
2500 Formatos aceitos: jpg, tif, gif, pgm, bmp, png, etc
150 filter2(B,X) Realiza a correlação do dado em X usando o filtro 2D armazenado em B
2000
200
conv2 (A,B) Realiza a convolução da matriz A sobre a matriz B
1500 uint8 Converte os elementos para inteiros sem sinal (8 bits)
250
int8 Converte os elementos para inteiros de 8 bits
1000
300
350 500
400 0
50 100 150 200 250 300 350 400 0 50 100 150 200 250 300
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 95 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 96
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Leitura / Aplicação de um filtro a uma imagem / Visualização Leitura / Aplicação de um filtro a uma imagem / Visualização (Continuação)
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
200 200
armazenamento das imagens após aplicação dos filtros de suavização 3x3 e 5x5, em
250 250
arquivos com diferentes formatos:
300 300
350 350
400 400
50 100 150 200 250 300 350 400 50 100 150 200 250 300 350 400
Imagem: [Link] [Após fitro média 5x5] Imagem: [Link] [Após filtro Sobel (borda vertical]
...
50
100 imwrite(uint8(PARCIALa),"[Link]");
150
imwrite(uint8(PARCIALb),"[Link]");
200
disp(['Imagens [Link] e [Link] salvas.']);
250
300
350
400
50 100 150 200 250 300 350 400
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 99 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 100
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 101 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 102
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Por exemplo suponha que um programa qualquer criou arquivo “[Link]” que
save [Link] X Y Z –binary salva as variáveis X, Y e Z no arquivo binário contém a seguinte matriz.
“[Link]”
save [Link] X Y Z -ascii salva as variáveis X., Y e Z no arquivo texto
“[Link]” com 8 casas decimais 11
save [Link] X Y Z -ascii -double salva as matrizes X., Y e Z no arquivo texto 31
“[Link]” com 16 casas decimais 33
13
11
Os dados obtidos por outros programas podem ser importados pelo GNU Octave,
desde que estes dados sejam gravados em formato apropriado. Se os dados são Ao executar o comando:
armazenados no formato ASCII, e no caso de matrizes, com colunas separadas por >> load [Link]
espaços e cada linha da matriz em uma linha do texto, o comando load pode ser usado.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 103 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 104
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
O GNU Octave pode também importar (através do comando load) os dados que foram
anteriormente exportados por ele. Por exemplo, para importar as variáveis X, Y e Z,
» polig1 anteriormente exportadas usando o comando save, pode-se fazer:
polig1 =
1 1 load arq1 save arq1 X Y Z
load [Link] save [Link] X Y Z -ascii
3 1
load [Link] save [Link] X Y Z -ascii -double
3 3
1 3 Deve-se ressaltar que o comando save, quando usado para exportar os dados do
1 1 GNU Octave em formato texto, exporta apenas um bloco contendo todas as variáveis.
Quando os dados são importados através do comando load, apenas uma variável com
nome do arquivo é criada.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 105 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 106
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Exemplo:
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 107 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 108
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
9. CRIAÇÃO DE FUNÇÕES
Na sequência são mostrados dois exemplos de funções. Uma delas foi criada com o
9.1. Criação de funções objetivo de, dado um ângulo (alfa) em radianos, montar a matriz de rotação M:
A estrutura geral de uma função do GNU Octave é a seguinte: A segunda função tem o propósito de, dada uma matriz de rotação M e um ponto de
coordenas (x,y), aplicar a matriz de rotação de modo que se tenha:
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 109 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 110
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Função “f_matriz_rotacao” armazenada no arquivo f_matriz_rotacao.m Função “f_aplica_rotacao” armazenada no arquivo f_aplica_rotacao.m
# F_MATRIZ_ROTACAO Calcula a matriz de rotação no plano # F_APLICA_ROTACAO Faz a rotação de um ponto (x,y) usando
# Entrada: Ângulo em graus # a matriz de rotação M
# Retorno: Matriz de rotação 2x2 # Retorno: Coordenadas rotacionadas do
# # ponto (x,y)
# Autores: Mauricio Galo e Paulo Camargo #
# UNESP, Presidente Prudente, SP # Autores: Mauricio Galo e Paulo Camargo
# UNESP, Presidente Prudente, SP
alfa=alfa*pi/180;
Mrot=[ cos(alfa) sin(alfa); xrot=x*M(1,1) + y*M(1,2);
-sin(alfa) cos(alfa)]; yrot=x*M(2,1) + y*M(2,2);
Endfunction endfunction
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 111 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 112
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
figure(1);
plot(x1,y1,x2,y2);
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 113 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 114
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Cálculo da Matriz de Rotação / Rotação / Visualização dos polígonos após rotação Visualização dos polígonos antes e após rotação
figure(3); 0
plot(x1,y1,x2,y2,x1r,y1r,x2r,y2r);
-0.5
0 1 2 3 4 5
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 115 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 116
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 117 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 118
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo I
ANEXOS %{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): subplot, bar, hist.
Nesta seção serão apresentados alguns exemplos adicionais de comandos e
respectivos resultados, que podem ser úteis em algumas aplicações na visualização de Autores: M. Galo e Paulo de O. Camargo
dados em algumas áreas das ciências exatas e engenharias, usando o aplicativo Unesp, Presidente Prudente, SP
GNU Octave. %}
clear
y = [1 2 3 7 3 8 8 4 10 1 3 7 8 9 10 6];
figure;
subplot(2,1,1);
bar(y,'g');
xlabel('Grafico de barras');
grid
subplot(2,1,2);
hist(y,50,'b')
xlabel('Histograma de frequencia');
grid
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 119 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 120
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo II
%{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): bar, legend.
clear
figure;
periodo = 2012:1:2016;
dados = [ 19.1 23.5 23.7 24.7 24.4;
23.5 21.5 23.5 23.7 23.3;
18.5 20.8 23.0 21.3 21.3;
17.0 19.8 19.7 21.9 27.5;
14.0 17.1 12.5 15.2 0;
Resultado gráfico do script anterior. 14.3 14.3 14.5 13.9 0;
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 121 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 122
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 123 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 124
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo III
%{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): pie.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 125 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 126
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo IV
%{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): plot, legend, uso de letras gregas.
alpha = 2;
beta = 2.4;
Delta = pi;
t=0:0.1:2*pi;
plot(t,alpha*sin(t),t,beta*sin(t/2),t,Delta*sin(t/2.5));
xlabel('Angulo t [rad], \alpha = 2, \beta = 2.4, \Delta =
\pi');
legend({'\alpha*sin(t)','\beta*sin(t/2)','\Delta*sin(t/2.5)'
},'location','southwest');
grid Gráfico resultante do script anterior.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 127 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 128
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo VI [lin,col]=size(xy);
x=xy(1:lin,1);
%{ y=xy(1:lin,2);
Exemplo de uso de alguns comandos do GNU Octave figure
Comandos (principais): size, delaunay, triplot, axis.
subplot(1,2,1)
Autores: M. Galo e Paulo de O. Camargo plot(x,y,'sr');
Unesp, Presidente Prudente, SP title('Pontos da amostra.');
%} axis('square');
grid;
close all;
clear; subplot(1,2,2)
clc; plot(x,y,'sr');
tri=delaunay(x',y');
xy = [ hold on;
6.9 4.9 1.1 1.2 7.9 5.7 2.4 4.6 3.1 3.4 5.5 9.1 7.1 8.5 2.3; triplot(tri,x,y);
7.1 5.7 7.7 2.6 1.2 0.8 0.6 3.0 4.7 7.3 8.7 6.1 4.6 2.4 title('Pontos da amostra e Triangulacao de Delaunay.');
5.5]; axis('square');
xy=xy'; grid;
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 131 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 132
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo VII
%{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): subplot, bar, hist.
clear
load [Link]
[lin,col]=size(terreno);
x=terreno(1:lin,1);
y=terreno(1:lin,2);
z=terreno(1:lin,3);
xn = x - min(x);
Gráficos resultantes do script anterior. yn = y - min(y);
zn = z;
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 133 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 134
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
figure; contour(zf,50,'-b');
plot(xn,yn,'.r');
xlabel('X(m)'); xlabel('X(m)');
ylabel('Y(m)'); ylabel('Y(m)');
figure; figure;
plot3(xn,yn,zn,'.r'); surfc(xf, yf, zf);
xlabel('X(m)'); title('Superficie topografica');
ylabel('Y(m)'); xlabel('X(m)');
zlabel('Z(m)'); ylabel('Y(m)');
zlabel('Z(m)');
limX = min(xn):1.:max(xn);
limY = min(yn):1.:max(yn); Na sequência são mostrados o arquivo [Link], usado no script anterior, bem
[xf,yf] = meshgrid(limX, limY); como os quatro gráficos resultantes da execução deste script.
zf = griddata(xn, yn, zn, xf, yf);
figure;
plot(xn,yn,'.r');
hold on
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 135 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 136
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 137 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 138
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo VIII
%{
Exemplo de uso de alguns comandos do GNU Octave
Comandos (principais): meshgrid, surf, interp2.
clear
Lmin = -2*pi;
Lmax = 2*pi;
[x,y] = meshgrid(Lmin:Lmax);
z = (1/3)*x.*cos(y/2);
Gráficos 3 e 4 resultantes do script anterior.
figure;
surf(x,y,z);
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 139 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 140
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
[xi,yi] = meshgrid(Lmin:0.5:Lmax);
zi = interp2(x, y, z, xi, yi);
figure;
surf(xi,yi,zi);
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 141 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 142
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo IX
% Média e desvio da amostra 1
%{ am1_med = 0;
Visualização da curva normal am1_des = 1;
Comando (principal): normpdf
% Média e desvio da amostra 2
Autores: M. Galo e Paulo de O. Camargo am2_med = -1.3;
Unesp, Presidente Prudente, SP am2_des = 2.5;
%}
% Posição correspondente ao desvio-padrao dado
clear all; L1 = [ am1_med-am1_des; am1_med+am1_des ];
clc L2 = [ am2_med-am2_des; am2_med+am2_des ];
pkg load statistics
figure(1);
disp(' ') x = -9:0.1:9;
disp(' ############################################ ');
disp(' Visualizacao da curva normal no GNU Octave '); % Visualização da curva 1
disp(' ############################################ ');
disp(' ') (continua)
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 143 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 144
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
plot(x,normpdf(x,am1_med,am1_des),'-b','linewidth',2);
hold on
stem(L1,normpdf(L1,am1_med,am1_des),':b','linewidth',2);
hold on
% Visualização da curva 2
plot(x,normpdf(x,am2_med,am2_des),'-g','linewidth',2);
hold on
stem(L2,normpdf(L2,am2_med,am2_des),':g','linewidth',2);
grid
title('Distribuicao Normal');
hold off
%
% Fim do script "Curvas_normais.m"
%
Resultado do script mostrando as duas curvas normais.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 145 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 146
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
%
% Fim do script 'Distribuicoes_exemplo.m'
%
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 149 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 150
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
(continua) (continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 151 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 152
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
%
% Fim do script 'Preenchimento.m'
%
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 153 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 154
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
[linhas1,colunas]=size(poligonoAt1); figure;
(continua) (continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 155 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 156
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
%
% Fim do script 'transparencia.m'
%
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 157 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 158
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo XIII
% Determinação da dimensão do arquivo
%{ [pontos,colunas]=size(residuos_calibracao);
Exemplo de uso de comandos do GNU Octave
Comandos: quiver % Colunas 1 e 2 – Coordenadas x e y
% Colunas 3 e 4 – Distorção em x e y, respectivamente
Autores: M. Galo e Paulo de O. Camargo for i=1:pontos
Unesp, Presidente Prudente, SP x(i) = residuos_calibracao(i,1);
%} y(i) = residuos_calibracao(i,2);
dx(i) = residuos_calibracao(i,3);
clear all; dy(i) = residuos_calibracao(i,4);
close all; end
clc;
figure(1);
% Leitura dos dados em arquivo plot(x,y,'+b');
load residuos_calibracao.dat title('Distribuição dos pontos');
axis([ -17 17 -13 13 ]);
% Fator de escala a ser aplicado nos vetores dos resíduos axis('equal');
esc = 1;
(continua) (continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 159 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 160
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
figure;
quiver(x,y,dx,dy,esc,'b'); Trecho do arquivo residuos_calibracao.dat.
title('Vetores de distorção'); % Coordenadas (x,y) e distorção* ...
axis([ -17 17 -13 13 ]); % #1 #2 - Coordenadas x e y (mm) ...
% #3 #4 - Distorções em x e y (mm) 3.150 8.400 -0.019 -0.045
axis('equal'); % 6.300 8.400 -0.049 -0.062
% *Distorção Radial Simétrica 9.450 8.400 -0.104 -0.089
12.600 8.400 -0.194 -0.127
% -15.750 -10.500 0.313 0.212 15.750 8.400 -0.331 -0.175
-12.600 -10.500 0.185 0.158 -15.750 10.500 0.320 -0.224
% Fim do script 'Vetores_no_Plano.m' -9.450 -10.500 0.101 0.117 -12.600 10.500 0.191 -0.168
-6.300 -10.500 0.049 0.088 -9.450 10.500 0.105 -0.125
% -3.150 -10.500 0.018 0.071 -6.300 10.500 0.052 -0.095
0.000 -10.500 -0.003 0.067 -3.150 10.500 0.019 -0.078
3.150 -10.500 -0.026 0.075 0.000 10.500 -0.003 -0.074
Na sequência é mostrado trecho do arquivo de dados usado no script 6.300 -10.500 -0.063 0.095 3.150 10.500 -0.028 -0.082
9.450 -10.500 -0.123 0.128 6.300 10.500 -0.066 -0.103
Vetores_no_Plano.m. 12.600 -10.500 -0.220 0.174 9.450 10.500 -0.128 -0.137
15.750 -10.500 -0.364 0.231 12.600 10.500 -0.226 -0.184
-15.750 -8.400 0.277 0.149 15.750 10.500 -0.371 -0.244
-12.600 -8.400 0.157 0.107
-9.450 -8.400 0.080 0.074 % Fim do arquivo
-6.300 -8.400 0.036 0.050
...
...
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 161 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 162
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
Anexo XIV
As imagens, na sequência, mostram a distribuição dos pontos (a) e os vetores das
distorções para cada pontos (b), a partir dos dados lidos no arquivo %{
residuos_calibracao.dat, resultantes do script Vetores_no_Plano.m. Raios de Curvatura
dFonte_Numeros = 15;
dFonte_Texto = 18;
fTexto = 'arial';
%legend('boxoff');
E2 = f*(2. - f); title('Raios de curvatura - Elipsoide', 'fontsize',
dFonte_Texto, 'fontname', fTexto);
ind=0; xlabel('Latitude [graus]','fontsize', dFonte_Texto,
for lat=0:1:90 'fontname', fTexto);
ind=ind+1; ylabel('Raios de curvatura [km]', 'fontsize', dFonte_Texto,
t(ind)=lat; 'fontname', fTexto);
faux = sqrt(1. - E2*(sin(lat*pi/180)**2)); grid;
fN(ind) = a / faux;
fM(ind) = a*(1. - E2) / ( faux**3 ); %
fMN(ind) = a*((1. - E2)**0.5)/(faux**2); % Fim do script 'Raios_de_Curvatura.m'
endfor %
TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia TUTORIAL do GNU Octave / GNU Octave TUTORIAL UNESP / Departamento de Cartografia
%{
Arquivo: Parametros_do_Elisoide.m
%}
0;
% Elipsoide SAD 69
% a: semi-eixo [m]
% f: achatamento
a = 6378160;
f = 1./298.25;
% Fim do arquivo
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 167 Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente – SP, 2023 168