Você está na página 1de 17

Introduo ao Octave

Autores:
Mauricio Galo
Paulo de Oliveira Camargo

Presidente Prudente
2011

Universidade Estadual Paulista

Universidade Estadual Paulista

FCT Campus de Presidente Prudente

FCT Campus de Presidente Prudente

Introduo ao Octave

XVIII SAGEC Seminrio de Avaliao do Curso de


Graduao em Engenharia Cartogrfica

Presidente Prudente
01 a 03 de Junho de 2011

Autores:
M
Ma
au
urriicciio
oG
Ga
allo
o
P
Pa
au
ullo
od
de
eO
Olliiv
ve
eiirra
aC
Ca
am
ma
arrg
go
o
Departamento de Cartografia / FCT - UNESP
1

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

XVIII SAGEC Seminrio de Avaliao do Curso de


Graduao em Engenharia Cartogrfica
01 e 03 de Junho de 2011

UNESP / Departamento de Cartografia

INTRODUO AO OCTAVE
CONTEDO PROGRAMTICO

1. INTRODUO
2. INICIANDO O OCTAVE

Minicurso:
Introduo ao OCTAVE

3. OPERAES COM MATRIZES E VETORES


4. GRFICOS
5. ARQUIVOS SCRIPT
6. CONTROLE DE FLUXO
7. ABERTURA E VISUALIZAO DE IMAGENS

Autores:

8. IMPORTAO / EXPORTAO DE DADOS E CRIAO DE FUNES

M
Ma
au
urriicciio
oG
Ga
allo
o
P
Pa
au
ullo
od
de
eO
Olliiv
ve
eiirra
aC
Ca
am
ma
arrg
go
o

REFERNCIAS

Departamento de Cartografia / FCT - UNESP

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Este material foi preparado a partir das seguintes referncias (em ordem alfabtica):

UNESP / Departamento de Cartografia

1. INTRODUO

CORAL, A. M.; SANTOS, M. P.; BASTOS, T. D. A.; BORBA, M. Curso de Matlab.


Universidade Federal de Santa Catarina, Dep. de Eng. de Produo, Programa Especial de
Treinamento PET. Florianpolis SC, 1999. 29p.

1.1. O que OCTAVE

EATON, J. W.; BATEMAN, D.; HAUBERG, S. GNU Octave Edition 3 for Octave version
3.2.3, July, 2007. 672p.
HANSELMAN, D.; LITTLEFIELD, B. Matlab - Verso do Estudante: guia do usurio
(Traduo). So Paulo: Makron Books, 1997. 305p.
c

M ANDREW, A. Introduction to Digital Image Processing with MATLAB . Thomson Course


Technology, 2004. 509p. ISBN: 0-534-40011-6
PAGAMISSE, A.; SOUZA, L. H. G. Introduo ao Software Octave. Semana de Cursos de
Matemtica, Estatstica e Computao, 25-29 de agosto de 2003, FCT/UNESP, Presidente Prudente,
2003. 54p.
SIGMON, K. Matlab Primer Third Edition. Department of Mathematics, University of Florida,
Gainesville, 1993. 35p. http://ise0.stanford.edu/ Acessado em 05/maio/2003.
ZERI, L. M. M. Apostila de Matlab. Instituto Nacional de Pesquisas Espaciais INPE, 2001. 19p.

O OCTAVE um aplicativo que foi originalmente desenvolvido com o propsito


didtico, mais especificamente para o projeto de reatores qumicos e surgiu a partir da
inteno de criar um aplicativo no qual a programao fosse mais rpida do que nas
demais linguagens.

Deste modo, os alunos poderiam dedicar mais tempo na anlise e soluo dos
problemas de qumica, do que especificamente na implementao.

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

O seu desenvolvimento comeou por volta de 1988 e um de seus idealizadores foi

UNESP / Departamento de Cartografia

Caractersticas bsicas:

John W. Eaton, alm de James B. Rawlings da Universidade de Wisconsin-Madison e


John G. Ekerdt da Universidade do Texas. Atualmente o desenvolvimento feito por

- Domnio pblico;

vrios profissionais, de diferentes pases, sendo a sua distribuio de acordo com a licena

- Possuem vrios comandos semelhantes ao MATLAB;


- So disponveis verses em diferentes plataformas: Linux, Unix, Windows,

GLP (GNU General Public License).

Mac, etc.
Onde encontrar:
http://www.gnu.org/software/octave/

ltima verso (estvel): 08/Fevereiro/2011 (3.4.0)

http://octave.sourceforge.net/

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Alguns comandos do OCTAVE so bsicos e semelhantes a outros usados em sistemas

1.2. Comandos bsicos do sistema

operacionais como DOS, Unix, Linux, dentre outros. A tabela seguinte mostra alguns
destes comandos, que podem se acionados a partir do prompt do OCTAVE.

Ao ativar o OCTAVE a seguinte tela mostrada:

cd
dir
pwd
delete
type
what
help
quit ou exit

Troca o diretrio de trabalho atual


Lista o contedo do diretrio atual
Mostra o path do diretrio atual de trabalho
Exclui arquivo
Exemplo de uso: delete arquivo.ext
Mostra o contedo de arquivos texto
Exemplo de uso: type arquivo.ext
Lista arquivos especficos do OCTAVE no diretrio corrente
Ajuda do OCTAVE
Exemplo de uso: help comando
Fechar o aplicativo e sair do sistema

Alm destes comandos vrios outros podem ser usados, como por exemplo: mkdir,
rmdir, etc.

Janela aberta ao ativar o OCTAVE.


9

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

10

Minicurso - Introduo ao Octave

1.3. Pacotes adicionais do OCTAVE

UNESP / Departamento de Cartografia

2. INICIANDO O OCTAVE

O OCTAVE um aplicativo que continua em desenvolvimento e aps a instalao do


aplicativo, outros pacotes adicionais podem ser instalados. Dentre eles tem-se o pacote

2.1. Variveis
O OCTAVE trabalha essencialmente com um tipo de varivel: matriz, que pode
conter nmeros, complexos ou no (um escalar uma matriz 1 x 1) e textos. Em alguns

image, armazenado no arquivo image-1.0.14.tar.gz.


Antes de instalar qualquer pacote adicional, pode-se ativar o comando pkg list para
ver todos os pacotes adicionais instalados.

casos, um tratamento especial dado a uma matriz 1 x 1 (escalar) ou a matrizes 1 x n ou n


x 1 (vetores).

Para a instalao de um pacote qualquer, de nome package_file_name.tar.gz, basta


2.1.1. Entrando com valores

ativar o seguinte comando no prompt do OCTAVE:

No OCTAVE no necessrio que sejam declaradas as variveis e os respectivos

pkg install package_file_name.tar.gz


Os

pacotes

disponveis

para

OCTAVE

esto

disponveis

na

pgina

tipos (inteiro, char, double, etc,) para inici-las, como feito em outras linguagens de
programao (C/C++, dentre outras). Ao atribuir valores numricos (ou alfanumricos) a

http://octave.sourceforge.net/.

uma varivel, o programa aloca a memria automaticamente.


11

12

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

A maneira mais fcil de entrar com uma pequena quantidade de valores digitando

UNESP / Departamento de Cartografia

ou
A=[1, 2, 3; 4, 5, 6; 7, 8, 9]

diretamente os dados:
- envolva os elementos com colchetes, [ ];

(Para matrizes e vetor)


Resultado: A =

- separe cada elemento com espaos ou vrgulas;


- use ponto-e-vrgula (;) para indicar fim da linha.
Por exemplo, para entrar com a matriz abaixo na memria do computador, e guard-la

3
6

na varivel A:

1 2 3
A = 4 5 6
7 8 9

OBS: Para que o computador realize a operao e no mostre a sada, basta terminar a
expresso com ponto-e-vrgula (;). Isto muito til para evitar que o computador mostre
resultados de clculos intermedirios desnecessrios, e para acelerar as operaes.

Basta digitar:
A=[1 2 3; 4 5 6; 7 8 9]
13

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

14

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

2.2. Expresses e comandos bsicos


2.1.2. Variveis reservadas
O OCTAVE, assim como o MATLAB, so linguagens de alto nvel e interpretadas.
Existem algumas variveis que so intrnsecas ao OCTAVE, como por exemplo:

help
ans
eps
nan
realmax
realmin
inf
computer
pi
i, j
version

Nestas linguagens o sistema avalia as expresses digitadas, que so geralmente na forma:


varivel = expresso

Ajuda do OCTAVE
Nome de varivel padro usado para resultados
Preciso do nmero real (ponto flutuante)
Not a Number (indeterminao: 0/0)
Maior nmero real positivo utilizvel
Menor real positivo utilizvel
Infinito: 1/0
Tipo de computador
3,14159265358979
Unidade imaginria (i2=-1)
Verso do OCTAVE

Os nmeros reais so escritos em notao decimal e para criar nmeros complexos


basta escrever i (ou j) depois da parte imaginria. Alguns exemplos de nmeros permitidos
so mostrados abaixo:

1/3

-99

.0001

9.63973

1.602E-20

6.025E23

3 + 2i

-3.1459i

3E5j

15

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Todo clculo realizado com todas as casas decimais (eps), embora os nmeros
mostrados ocultem algumas dessas casas. Para mudar o formato de sada dos nmeros,
pode-se usar o comando format.
O formato default, chamado de formato short, mostra aproximadamente 5 dgitos
significativos ou usam notao cientfica. Exemplo:

UNESP / Departamento de Cartografia

O formato + uma maneira compacta de mostrar matrizes de grandes dimenses. Os


smbolos "+", "-", e "espao em branco" so mostrados, respectivamente para elementos
positivos, elementos negativos e zeros.

Podem-se construir expresses com os operadores aritmticos usuais:

>> x = [4/3 1.2345e-6]

+
*

mostrada, para cada formato usado, da seguinte maneira:


format short
format long
format hex
format rat
format bank
format +

16

1.3333e+000 1.2345e-006
1.333333333333333e+000 1.234500000000000e-006
3ff5555555555555 3eb4b6231abfd271
4/3 9/7290401
(Aproximao racional)
1.33 0.00
++

adio
subtrao
multiplicao

/e\
^

Diviso
Potenciao
matriz transposta

O OCTAVE possui um conjunto de funes matemticas elementares, com seno


(sin), tangente (tan), logaritmo (log10), etc. Por exemplo, para calcular o seno de 30 e
guardar na varivel x pode-se escrever:
x=sin(30)
x=-0.98803
17

(para format short)


18

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Funes Elementares (continuao)


Funes Elementares (colocadas em ordem alfabtica)

abs(x)
acos(x)
angle(x)
asin(x)
atan(x)
cos(x)
cross(a,b)
exp(x)
inv(x)
log(x)
log10(x)
max(x)

mean(x)
min(x)
sin(x)
sqrt(x)
std(x)
sum(x)
tan(x)

Valor absoluto ou mdulo de um nmero


Arco co-seno
Calcula o ngulo de fase (em radianos) para nmeros complexos
Arco seno
Arco tangente
Cosseno
Produto vetorial dos vetores a e b
Exponencial (ex)
Matriz inversa da matriz x
Logaritmo natural (loge x)
Logaritmo na base 10
Maior elemento em x

Mdia de x
Menor elemento em x
Seno
Raiz quadrada
Desvio padro
Soma dos elementos de x
Tangente

Algumas dessas operaes podem ser aplicadas a vetores ou matrizes. Para a funo
std(x), por exemplo, se o argumento x for um vetor o resultado ser o desvio padro desse
vetor. Se x for uma matriz, ser calculado o desvio padro para cada coluna dessa matriz.
O mesmo ocorre com as funes sum, max e mean, entre outras.

19

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

20

Minicurso - Introduo ao Octave

Usando os comandos vistos, determinar a mdia, desvio padro, a soma dos

UNESP / Departamento de Cartografia

2.2.1. Comandos

elementos, o valor mximo e mnimo do vetor V abaixo:


Ao sair do OCTAVE (atravs do comando quit ou exit) todas as variveis do
workspace so perdidas, a menos que sejam salvas usando o comando save.

V=[1 2 3 4 5 6 7 8 9]

Como usar o comando save, bem como outros relacionados:


save nome_de_arquivo nome_da(s)_varivel(is)
Salva somente as variveis especificadas.
load nome_de_arquivo
Carrega as informaes salvas.
clear nome_da_varivel
Apaga a varivel do workspace. Digitar somente clear
Tambm apaga todas as variveis do workspace!
21

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

22

Minicurso - Introduo ao Octave

Um dos comandos mais teis no OCTAVE, bem com em diversos aplicativos, o


help, que fornece ajuda on-line sobre qualquer outro comando. Por exemplo, para obter
ajuda sobre o comando who:

UNESP / Departamento de Cartografia

2.2.2. Exerccios
1) Armazene no workspace os seguintes valores:
a = 3;

help who

b = -2.123;

WHO Lista as variveis no workspace atual.

c = 4*3;

WHOS Lista as variveis e informaes adicionais sobre elas.

d = [1 2 3 4];

Outro comando til: lookfor. Este comando procura e lista todas as funes do
OCTAVE que contm a palavra-chave especificada.

e = [1; 2; 3; 4];

Utilize os comandos who e whos e observe as disferenas.

lookfor mean

Ative o comando clear, e digite novamente o comando whos.

Resultado: mean, meansq e mean2.

23

24

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Comandos: save, quit (ou exit), load, clear, whos.

2) Armazene no workspace os seguintes valores:


a = 3.452;
b = -25.123;

4) Atribua as seguintes expresses s variveis:

c = 4*pi;

a) 4.12 a pi/c

para x

b) log(a + 40.1353)
3) Verifique o resultado das seguintes das seguintes operaes:
a) (a + b) c

c) tan(c) asin(b)

b) (c b) a / b

d) sin(cos(tan(c)))

para y

c) log(a)

para z

5) Salve as variveis x, y, z em um arquivo chamado exemplo.mat.

Efetuar os clculos (formato padro), depois mudar para o formato long

6) Saia do OCTAVE, entre novamente e carregue as variveis salvas anteriormente.

7) Apague a varivel z e verifique se ela foi realmente apagada.

25

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

26

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Outros exemplos com incrementos diferentes de um:

3. OPERAES COM MATRIZES E VETORES


O OCTAVE permite a manipulao de linhas, colunas, elementos individuais e partes
de matrizes.

> y = 0:pi/4:pi
que resulta em:

3.1. Gerao de vetores

y =
0.0000

0.7854

1.5708

2.3562

3.1416

A gerao de uma seqncia de nmeros pode ser feita utilizando:


Incrementos negativos tambm so possveis.
> x = 1:5

ou

> x = 1:1:5
> z = 6 : -l : l

gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio.

z =
6

27

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

28

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

A =

Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo,

l 2 3
4 5 6

> k = linspace (0, l, 6)

7 8 9

k=

a declarao

0 0.2000 0.4000 0.6000 0.8000 1.0000

>> A(3,3) = A(1,3) + A(3,l)

gera um vetor com 6 elementos onde o primeiro elemento 0 e o ltimo 1.


Resulta em:
A =

3.2. Elementos das matrizes

l 2 3

Um elemento especfico da matriz pode ser acessado especificando a linha e a coluna

4 5 6
7 8 10

do elemento desejado, fazendo A(linha, coluna). Por exemplo, dada a matriz A:

29

30

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

>> C = A(2:3,2:4)

Extrao de submatrizes de uma dada matriz

C =
80 17 14

A =

81 88 20

92 99 11 18
98 80 17 14

C uma submatriz 2x4, formada pelas linhas 2 e 3 e colunas 2 a 4 da matriz A.

14 81 88 20

>> B = A(2:3,4)

Armazena em B os elementos das linhas 2 e 3 da coluna 4.

>> D = triu(A)

<< Extrai a triangular superior.

D =
92 99 11 18

B =
14

00 88 17 14

20

00 00 88 20

31

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

32

Minicurso - Introduo ao Octave

Gerao de algumas matrizes especiais:

UNESP / Departamento de Cartografia

3.3. Operaes com matrizes


Operaes matemticas simples (adio, subtrao, diviso e multiplicao)

Exemplo 1: B uma matriz 10x10 unitria.

envolvendo matrizes so semelhantes s operaes com escalares.

>> B = ones (10)


m=[8 1 6; 3 5 7; 4 9 2];
Exemplo 2: C uma matriz de dimenso 8x8 com elementos nulos.
3*m

>> C = zeros (8)

ans =
Matriz identidade:

eye

Matriz diagonal:

diag

Matriz de nmeros randmicos:

rand

<< Extrai a diagonal de uma dada matriz.

24

18

15

21

12

27

33

Minicurso - Introduo ao Octave

m+100
ans =
108 101

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

105

107

104

109

102

UNESP / Departamento de Cartografia

Alguns comandos adicionais para a operao com matrizes:

106

103

34

inv
det

Nas operaes entre matrizes devem ser respeitadas as regras usuais da matemtica
quanto ao nmero de linhas e colunas que duas matrizes devem ter para serem somadas,

trace

multiplicadas, etc. No entanto existem operaes especiais. Sendo A=[a1 a2 ... an] e B=[b1
cond

b2 ... bn] duas matrizes, ento:

rank
A./B = [a1/b1 a2/b2 ... an/bn];

Matriz inversa de uma dada matriz


Sintaxe: inv(matriz)
Calcula o determinante (D) de uma matriz bem como o
recproco do nmero de condio (RCOND)
Sintaxe: [D, RCOND]=det(matriz)
Trao de uma matriz
Sintaxe: trace(matriz)
Nmero de condio de uma matriz.
Sintaxe: cond(matriz)
Rank de uma matriz
Sintaxe: rank(matriz)

A.*B = [a1b1 a2b2 ... anbn];


A.^B = [a1^b1 a2^b2 ... an^bn];

35

36

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

3.4. Exerccios

UNESP / Departamento de Cartografia

4. GRFICOS

1) Dadas as seguintes matrizes e vetores:

A = [1 2 3; 4 10 6; 7 8 19];
A construo de grficos no OCTAVE bem simples e a maior parte dos comandos

B = [4 5 6; 1 2 3; 8 7 6];
C = [4 5 6];

muito parecida com os usados pelo MATLAB, sendo possvel a gerao de grficos

L = [4; 5; 6];

bidimensionais ou tridimensionais.

2) Calcule:

Existe no OCTAVE uma vasta biblioteca de comandos grficos.

a) D = A+B

g) Determinar a inversa de A e salvar em D

b) E = A*B

h) Produto D vezes A

c) F = A-B

i) Autovalor e Autovetor de A

d) G = BT-A

j) Calcule o trao e o determinante de A

e) H = ATA

k) Resolver o sistema AX = L

f) I = A CT

37

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

38

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

4.1. Comandos grficos bsicos


Na tabela seguinte so mostrados alguns comandos bsicos que permitem a gerao
de grficos bidimensionais no OCTAVE.

Se y um vetor, plot(y) produz um grfico linear dos elementos de y versos o ndice


dos elementos de y. Por exemplo, para plotar os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6,

plot
bar
stem
stairs
errorbar
hist
comet

0.14], entre com o vetor y e execute o comando plot, como mostrado:

Visualizao de grficos lineares no plano.


Grfico de barras.
Sequncia discreta.
Plotar em degraus.
Plotar barra de erros.
Plotar histograma.
Plotar com trajetria de cometa.

>> y = [0.0

0.48

0.84

1.0

0.91

0.6

0.14];

>> plot(y)

39

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

40

Minicurso - Introduo ao Octave

Resultado

UNESP / Departamento de Cartografia

Se t e y so vetores com dimenses iguais, o comando plot(t,y) produz um grfico


bidimensional dos elementos de t versos os elementos de y, por exemplo
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)

41

42

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Resultado

UNESP / Departamento de Cartografia

O OCTAVE pode tambm plotar mltiplas linhas em apenas um grfico.

Comando plot com mltiplos argumentos.


Por exemplo:
>> plot(t,sin(t),t,cos(t),t,0.4*sin(t+pi),t,0.6*cos(t+pi))

43

Minicurso - Introduo ao Octave

44

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Resultado

UNESP / Departamento de Cartografia

4.2. Estilos de Linha e Smbolo


1

Os tipos de linhas, smbolos e cores usadas para mostrar os grficos podem ser

0.8

controlados. Seguem alguns exemplos:

0.6
0.4

>> x = 0:0.05:1;

0.2

>> subplot(1,2,1);

>> plot(x,x.^2,k*)

-0.2

>> subplot(1,2,2);

-0.4

>> plot(x,log(x+0.1),y-)

-0.6
-0.8
-1

10

12

14

45

Minicurso - Introduo ao Octave

46

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Resultado

UNESP / Departamento de Cartografia

Outros tipos de linhas, pontos e cores tambm podem ser usados:


1

0.5

TIPO DE LINHA

0.9

0.8
0.7

-0.5

0.6
0.5

CORES

magenta

cian

+++++++++

vermelho

xxxxxxx

verde

azul

branco

preto

amarelo

-1

0.4
-1.5

0.3
0.2

-2

0.1
0

__________

TIPO DE PONTO

0.5

-2.5

0.5

^^^^^^^

47

48

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Verificar o resultado do uso dos seguintes comandos:

4.3. Exerccios
>> t = 0:0.5:4*pi;

>> t=1:pi/10:6*pi;

>> y = sin(t);

>> y=(1-t).*sin(t);
>> comet(y)

Criar os seguintes grficos:


Grfico de barras (bar)
Seqncia discreta (stem)
Escada (stairs)
Dado o vetor: y= [ 1 2 3 7 3 8 8 4 10 1 3 7 8 9 9] construa o histograma (hist) e o grfico
de barras.

49

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

4.4. Gerao de Grficos Tridimensionais e Isolinhas

UNESP / Departamento de Cartografia

O comando mesh(x,y,z) cria uma perspectiva tridimensional plotando os elementos da

Estes so alguns comandos para gerar grficos tridimensionais e contornos.


plot3
contour
contour3
meshgrid
mesh
meshc
surf
surfc
slice
cylinder
sphere

50

matriz z em relao ao plano definindo pelas matrizes x e y. Exemplo de uso:

Mostrar grfico no espao 3D.


Permite visualizar curvas de nvel no plano.
Permite visualizar curvas de nvel no espao 3D.
Permite a criao de estruturas (2D e 3D) para representao 3D.
Permite plotar malhas 3D.
Combinao mesh/contour.
Plotar superfcie 3D.
Combinao surf/contour.
Plot visualizao volumtrica.
Gerar cilindro.
Gerar esfera.

>> t = -2:0.2:2;
>> [x, y] = meshgrid(t, t);
>> z = x.* exp(-x.^2 - y.^2);
>> mesh(x,y,z)

51

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

52

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Outros exemplos de superfcies (ainda usando a mesma funo) no qual se considera que a
superfcie iluminada por uma fonte de luz, dando o efeito de "sombreamento".
>> colormap(bone)
>> surfl(x, y, z)
>> colormap(bone)
>> surfl(x, y, z), shading flat
Verifique as seguintes opes:
>> surf(x, y, z)

>> colormap(bone)

>> colormap(gray);

>> surfl(x, y, z), shading interp

Alguns outros paletes: hot, bone, pink, jet, spring, rainbow, cool, copper,
53

54

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

4.5. Anotaes no Grfico

Curvas de nvel
O comando contour(z,10) mostra a projeo da superfcie acima no plano xy com 10
iso-linhas.

O OCTAVE possui comandos de fcil utilizao para adicionar informaes em um


grfico:

title

Ttulo do grfico.

xlabel

Ttulo do eixo X.

ylabel

Ttulo do eixo Y.

zlabel

Ttulo do eixo Z.

text

Inserir anotao no grfico.

gtext

Inserir anotao com o mouse, de modo interativo.

grid

Linhas de grade.

55

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

56

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Exemplos:
>> fplot(sin, [-pi pi]);
>> title Grfico da funo f(x)=seno(x), -pi<x<pi;
>> xlabel x;
>> ylabel f(x);
>> grid (on);
>> text(1,.2,Curva sin(x));
>> gtext Sin(x);
Exemplo do comando fplot para mltiplas funes
fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])

57

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

58

Minicurso - Introduo ao Octave

Uma outra possibilidade para a visualizao de mltiplas funes:

UNESP / Departamento de Cartografia

5. ARQUIVOS SCRIPT (.m)

>> figure(2)

Os comandos do OCTAVE so normalmente digitados na rea de trabalho, onde cada

>> t=linspace(-2*pi,2*pi,50);

linha de comando introduzida e imediatamente processada. O OCTAVE tambm capaz

>> y1=tan(t);

de executar sequncias de comandos armazenadas em arquivos ASCII com extenso m.

>> y2=sin(t);

Para editar um arquivo texto na rea de trabalho do OCTAVE, no prompt digite edit

>> y3=cos(t);

seguido nome do arquivo com extenso m (nome.m). Ao realizar esta operao o

>>

aplicativo Notepad++ ativado. Os arquivos podem tambm ser editados fora do

>> plot(t,y1,"r");

OCTAVE, utizando qualquer editor de texto (notepad, textpad, wordpad, edit, etc.).

>> hold on

Existem alguns comandos e declaraes especiais para serem usados nos arquivos,

>> plot(t,y2,"g");

por exemplo:

>> plot(t,y3,"b");

59

60

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Exemplo de arquivo script

Comando
% ou #
clear
input
pause
clc
figure(n)
close

#Plota uma funo y=ax^2 + bx + c no intervalo -5<x<5


clear
aux='s';
while aux=='s',
clc
disp(' ');
disp(' Dada a equao y=ax^2 + bx + c ...'); disp(' ');
a=input('Digite o valor de a = ');
b=input('Digite o valor de b = ');
c=input('Digite o valor de c = ');
x=-5:0.1:5;
y=a*x.^2+b*x+c;
plot(y)
figure(1)
disp(' Acione a tecla Enter para continuar.');
pause
clc
close
disp(' ');
aux=input(' Deseja ver outra curva ? (s/n) ==> ','s');
endwhile
disp('Programa finalizado.');

Funo
Inserir um comentrio no arquivo .m.
Apagar todos os dados da memria.
Usado para a entrada de dado a partir da janela
de comando.
Provoca uma pausa na execuo do arquivo at
que qualquer tecla seja digitada.
Limpar a janela de comando.
Mostrar a janela grfica nmero n.
Fechar todas as janelas grficas.

61

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

62

Minicurso - Introduo ao Octave

6. CONTROLE DE FLUXO

UNESP / Departamento de Cartografia

comum construes em que conjuntos de laos for so usados principalmente com

Os comandos que controlam o fluxo especificam a ordem em que as operaes so

matrizes:

realizadas. No OCTAVE estes comandos so semelhantes aos usados na linguagem C.


for i=1:8;
for j=1:8;

6.1. Lao for

A(i,j)=i+j;
B(i,j)=i-j;

O lao for o controlador de fluxo mais simples e usado na programao OCTAVE.


Analisando a expresso

endfor
endfor

>> for i = 1:n;


>>
for j = 1:n;
>>
...
>>
endfor
>> endfor

A
B
C=A+B

63

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

64

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

6.2. Comando while


No exemplo abaixo o lao while executado se a condio testada for verdadeira.

Operadores relacionais:

a = 1; b = 15;

Inicialmente a condio a<b testada.

while a<b

Se ela for verdadeira o corpo do lao ser executado e

a = a+1
b = b-1
endwhile
disp(fim do loop)

o procedimento repetido.
Quando o teste se tornar falso o lao terminar, e a
execuo continuar no comando que segue o lao

Operadores lgicos

<

Menor do que

&

>

Maior do que

ou

<=

Menor ou igual a

no

>=

Maior ou igual a

==

Igual

~=

Diferente

aps o endwhile.

65

66

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

6.3. Declaraes if, else

UNESP / Departamento de Cartografia

7. ABERTURA E VISUALIZAO DE IMAGENS

A seguir, apresentado um exemplo do uso da declarao if no OCTAVE.


So vrios os comandos destinados visualizao e processamento de imagens. Boa

for i = 1:5;
for j = 1:5;
if i == j
A(i,j) = 2;
else
if abs(i-j) == 1
A(i,j) = -1;
else
A(i,j) = 0;
endif
endif
endfor
endfor
A

parte destes comandos incorporada em bibliotecas (ou pacotes) especficas como a


denominada image, disponvel na pgina http://octave.sourceforge.net/.
O propsito central desta seo apresentar apenas alguns comandos bsicos, em
funo das diversas possibilidades de processamento. Dada a diversidade de comandos
um, ou mais cursos poderiam ser ministrados com este propsito.
Pode-se notar que boa parte dos comando so similares ao da biblioteca MATLAB.
Para detalhes adicionais sobres os diversos comando sugere-se EATON et al (2007) e
McANDREW (2004).

67

Minicurso - Introduo ao Octave

68

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

A tabela seguinte mostra alguns comandos bsicos, que permitem a operao com

Abertura de imagem / Visualizao / Converso RBG para Tom de Cinza


Crie um arquivo (.m), digite, salve e execute os comandos abaixo:

imagens no OCTAVE:

imread
image
hist
rgb2gray
axis
disp
figure
colormap
imfinfo

UNESP / Departamento de Cartografia

nome='lenna.jpg';
DATA=imread(nome);

Faz a leitura de imagens.


Permite a visualizao de uma matriz como uma imagem.
Calcula o histograma de um conjunto de dados.
Converte imagem colorida (RGB) para tons de cinza.
Controla a aparncia e a escala dos eixos.
Visualizao de um vetor no modo texto.
Abre uma nova janela grfica.
Permite definir um mapa de cores.
Exemplo: colormap(gray(256))
Funo que retorna uma estrutura que contem diversas
informaes sobre determinada imagem.
Exemplo de uso: imfinfo(arquivo_imagem)

figure(1);
image(DATA);
xlabel([ 'Imagem: ' nome ]);
disp([ 'Imagem entrada: ' nome ]);
figure(2);
DATAg=rgb2gray(DATA);
image(DATAg);
colormap(gray(256));
xlabel([ 'Imagem (tom de cinza) ' ]);
disp([ 'Imagem (tom de cinza) : ok' ]);

69

Minicurso - Introduo ao Octave

70

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Abertura de imagem / Visualizao / Converso RBG para Tom de Cinza (Cont.)


No mesmo arquivo criado antes, escreve um cdigo que permita criar a imagem

Resultado do processamento anterior, onde mostrada a imagem original (colorida), a


convertida para tons de cinza e a negativa.

negativa em tom de cinza. Mostre esta imagem:


...
figure(3);
DATAn=255.-DATAg;
image(DATAn);
colormap(gray(256));
xlabel([ 'Imagem (negativa)' ]);
disp([ 'Imagem (negativa)
: ok' ]);

50

50

50

100

100

100

150

150

150

200

200

200

250

250

250

300

300

300

350

350

400
100

150

200

250

Imagem: lenna.jpg

71

350

400
50

300

350

400

50

100

150

200

250

300

Imagem (tom de cinza)

350

400

400
50

100

150

200

250

300

350

400

Imagem (negativa)

72

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Leitura / Clculo do Histograma de Frequncia / Visualizao do Histograma

UNESP / Departamento de Cartografia

Resultado do processamento anterior, onde mostrada a imagem lida e respectivo


histograma.

nome='lenna.jpg';
DATA=imread(nome);
DATAg=rgb2gray(DATA);

Histograma
3500

50

figure(1);
image(DATAg);
colormap(gray(256));
xlabel([ 'Imagem: ' nome ]);
disp([ 'Imagem (original): ' nome ]);

3000

100

2500

150
2000

200
1500

250

[freq,tom]=hist(DATAg(:),0:255);
figure(2);
plot(tom,freq);
title([ 'Histograma' ]);

1000

300

500

350

400
50

100

150

200

250

300

350

400

50

100

150

200

250

300

73

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

74

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Leitura / Aplicao de um filtro a uma imagem / Visualizao

Alguns comandos adicionais relacionado ao processamento de imagens:

nome='lenna.jpg';
DATA=imread(nome);
DATA=rgb2gray(DATA);

imshow
imagesc

Permite a visualizao de uma imagem.


Permite a visualizao de uma imagem aps a aplicao de uma escala,
de modo que todo o mapa de cores seja utilizado.
imwrite
Permite salvar uma imagem em arquivo (imwrite(imagem, nome.ext))
Formatos aceitos: jpg, tif, gif, pgm, bmp, png, etc.
filter2(B,X) Realiza a correlao do dado em X usando o filtro 2D armazenado em
B.
conv2 (A,B) Realiza a convoluo da matriz A sobre a matriz B
uint8
Converte os elementos para inteiros sem sinal (8 bits).
int8
Converte os elementos para inteiros de 8 bits.

figure(1);
image(DATA);
colormap(gray(256));
title([ 'Imagem: ' nome ]);
f33=[ 1 1 1;
1 1 1;
1 1 1 ];
PARCIALa=filter2((1/9)*f33,DATA,'same');
figure(2);
image(PARCIALa);
colormap(gray(256))
title([ 'Imagem: ' nome ' [Aps fitro mdia 3x3]' ]);

75

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

76

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Imagem: lenna.jpg

Leitura / Aplicao de um filtro a uma imagem / Visualizao (Continuao)


...
f55=[ 1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1;
1 1 1 1 1 ];
PARCIALb=conv2(DATA,(1/25)*f55,'same');
figure(3);
imagesc(PARCIALb);
colormap(gray(256));
title([ 'Imagem: ' nome ' [Aps fitro mdia 5x5]' ]);

Imagem: lenna.jpg [Aps fitro mdia 3x3]

50

50

100

100

150

150

200

200

250

250

300

300
350

350

400

400
50

100

150 200 250 300

350

400

50

100

150

200

250

300

350

400

Imagem: lenna.jpg [Aps filtro Sobel (borda vertical]

Imagem: lenna.jpg [Aps fitro mdia 5x5]

50
100

f2da=[
-1
0
1; -2
0
2; -1
0
1 ];
PARCIAL=filter2(f2da,DATA);
figure(4);
imshow(uint8(PARCIAL));
title([ 'Imagem: ' nome ' [Aps filtro Sobel (borda
vertical]' ]);

150
200
250
300
350
400
50

77

100

150

200

250

300

350

400

78

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Abertura de imagem / Armazenamento em outros formatos

UNESP / Departamento de Cartografia

Abertura de imagem / Armazenamento em outros formatos

No mesmo arquivo script anteriormente escrito, incorpore no cdigo o

No mesmo arquivo script anteriormente escrito, incorpore no cdigo o

armazenamento das imagens aps o filtro de suavizao 3x3 e 5x5, em arquivos com

armazenamento das imagens aps o filtro de suavizao 3x3 e 5x5, em arquivos com

diferentes formatos:

diferentes formatos:

...

...

imwrite(uint8(PARCIALa),"filtro3x3.jpg");
imwrite(uint8(PARCIALb),"filtro5x5.png");
disp(['Imagens filtro3x3.jpg e filtro5x5.png salvas.']);

imwrite(uint8(PARCIALa),"filtro3x3.jpg");
imwrite(uint8(PARCIALb),"filtro5x5.png");
disp(['Imagens filtro3x3.jpg e filtro5x5.png salvas.']);

79

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

80

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

8. IMPORTAO / EXPORTAO DE DADOS E CRIAO DE FUNES


save arql.sai X Y Z binary
Neste tpico so apresentados alguns comandos adicionais relacionados
save arq2.sai X Y Z -ascii

manipulao de arquivos e ao uso de funes criadas pelo usurio.

save arq3.sai X Y Z -ascii -double


8.1. Importao e Exportao de Dados

salva as variveis X, Y e Z no arquivo binrio


arq1.sai.
salva as variveis X., Y e Z no arquivo texto
arq2.sai com 8 casas decimais.
salva as matrizes X., Y e Z no arquivo texto
arq3.sai com 16 casas decimais.

Os dados obtidos por outros programas podem ser importados pelo OCTAVE, desde
Os dados contidos na rea de trabalho do OCTAVE, como foi visto, podem ser

que estes dados sejam gravados em formato apropriado. Se os dados so armazenados no

armazenados em arquivos no modo texto, binrio (e outros formatos), utilizando o

formato ASCII, e no caso de matrizes, com colunas separadas por espaos e cada linha da

comando save. Existem diversas maneiras de utilizar este comando, como pode-se ver nos

matriz em uma linha do texto, o comando load pode ser usado.

exemplos mostrados na sequncia:

81

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

82

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Por exemplo suponha que um programa qualquer criou arquivo polig1.dat que
contm a seguinte matriz.
polig1
polig1 =

11
31
33
13
11
Ao executar o comando:

>> load polig1.dat

o OCTAVE importa a matriz, que armazenada com o nome polig1.

83

84

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

O OCTAVE pode tambm importar (atravs do comando load) os dados que foram

UNESP / Departamento de Cartografia

Exemplo:

anteriormente exportados por ele. Por exemplo, para importar as variveis X, Y e Z,

>> x = rand(3,3)

anteriormente exportadas usando o comando save, pode-se fazer:

x =
0.2190 0.6793 0.5194

load arq1
load arq2.sai
load arq3.sai

0.0470 0.9347 0.8310

save arq1 X Y Z
save arq2.sai X Y Z -ascii
save arq3.sai X Y Z -ascii -double

0.6789 0.3835 0.0346

Deve-se ressaltar que o comando save, quando usado para exportar os dados do

>> y = rand(3,3)

OCTAVE em formato texto, exporta apenas um bloco contendo todas as variveis.

y =
0.0535

0.0077 0.4175

Quando os dados so importados atravs do comando load, apenas uma varivel com

0.5297

0.3835 0.6868

nome do arquivo criada.

0.6711

0.0668 0.5890

85

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

86

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

8.2. Criao de funes


>> save arq2.sai X Y -ascii
O uso de funes muito til tanto na execuo de algumas tarefas repetitivas

>> clear
>> whos

quanto no aproveitamento do cdigo em diferentes aplicaes. Pode-se, deste modofazer a

>> load arq2.sai

criao bibliotecas de funes destinadas a soluo de alguns problemas especficos.

>> arq2
A esctrutura geral de uma funo criada pelo usurios do OCTAVE a seguinte:

arq2 =
0.2190
0.0470
0.6789
0.0535
0.5297
0.6711

0.6793
0.9347
0.3835
0.0077
0.3834
0.0668

0.5194
0.8310
0.0346
0.4175
0.6868
0.5890

function [ retorno ] = teste (variveis)


...
endfunction

87

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

88

Minicurso - Introduo ao Octave

Na sequncia so mostrados dois exemplos de funes. Uma delas foi criada com o

UNESP / Departamento de Cartografia

Funo f_matriz_rotacao armazenada no arquivo f_matriz_rotacao.m

objetivo de, dado um ngulo (alfa) em radianos, montar a matriz de rotao M:


function Mrot=f_matriz_rotacao(alfa)

cos() sin()
M ( ) =

sin() cos() .
A segunda funo tem o propsito de, dada uma matriz de rotao M e um ponto de

# F_MATRIZ_ROTACAO Calcula a matriz de rotao no plano


#
Entrada: ngulo em graus
#
Retorno: Matriz de rotao 2x2
#
# Autores: Mauricio Galo e Paulo Camargo
# UNESP, 2011
alfa=alfa*pi/180;
Mrot=[ cos(alfa)
-sin(alfa)

coordenas (x,y), aplicar a matriz de rotao de modo que se tenha:

sin(alfa);
cos(alfa)];

Endfunction

x '
x
y ' = M ( ) y

89

90

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

Minicurso - Introduo ao Octave

Funo f_aplica_rotacao armazenada no arquivo f_aplica_rotacao.m

UNESP / Departamento de Cartografia

Como exemplo de aplicao das funes criadas para o OCTAVE, inicialmente


escreva um script que permite ler nas variveis polig1.dat e polig2.dat, bem como permita

function [xrot,yrot]=f_aplica_rotacao(M,x,y)

a visualizao destes vetores, usando o comando plot:

# F_APLICA_ROTACAO Faz a rotao de um ponto (x,y) usando


#
a matriz de rotao M
#
Retorno: Coordenadas rotacionadas do
#
ponto (x,y)
#
# Autores: Mauricio Galo e Paulo Camargo
# UNESP, 2011

0
1
1
0
0

xrot=x*M(1,1) + y*M(1,2);
yrot=x*M(2,1) + y*M(2,2);
endfunction

Contedo do
arquivo
polig1.dat
0
0
1
1
0

2
3
2
2

Contedo do
arquivo
polig2.dat
2
3
3
2

91

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

92

Minicurso - Introduo ao Octave

Leitura dos dados / Visualizao dos polgonos

UNESP / Departamento de Cartografia

Clculo da Matriz de Rotao / Rotao / Visualizao dos polgonos aps rotao


No mesmo script anterior, calcule e matriz de rotao, aplique-a a todos os pontos
dos dois polgonos e faa a visualizao.

load 'polig1.dat'
load 'polig2.dat'
...
ROT = f_matriz_rotacao(30);

[lin1,col1]=size(polig1);
[lin2,col2]=size(polig2);

[x1r,y1r]=f_aplica_rotacao(ROT,x1,y1);
[x2r,y2r]=f_aplica_rotacao(ROT,x2,y2);

x1=polig1(1:lin1,1);
y1=polig1(1:lin1,2);
x2=polig2(1:lin2,1);
y2=polig2(1:lin2,2);

figure(2);
plot(x1r,y1r,x2r,y2r);

figure(1);
plot(x1,y1,x2,y2);

figure(3);
plot(x1,y1,x2,y2,x1r,y1r,x2r,y2r);

93

Minicurso - Introduo ao Octave

UNESP / Departamento de Cartografia

94

Minicurso - Introduo ao Octave

Visualizao dos polgonos antes e aps rotao

UNESP / Departamento de Cartografia

REFERNCIAS

3
2.5

CORAL, A. M.; SANTOS, M. P.; BASTOS, T. D. A.; BORBA, M. Curso de Matlab.


Universidade Federal de Santa Catarina, Dep. de Eng. de Produo, Programa Especial de
Treinamento PET. Florianpolis SC, 1999. 29p.

EATON, J. W.; BATEMAN, D.; HAUBERG, S. GNU Octave Edition 3 for Octave version
3.2.3, July, 2007. 672p.

1.5

HANSELMAN, D.; LITTLEFIELD, B. Matlab - Verso do Estudante: guia do usurio


(Traduo). So Paulo: Makron Books, 1997. 305p.

McANDREW, A. Introduction to Digital Image Processing with MATLAB. Thomson Course


Technology, 2004. 509p. ISBN: 0-534-40011-6
PAGAMISSE, A.; SOUZA, L. H. G. Introduo ao Software Octave. Semana de Cursos de
Matemtica, Estatstica e Computao, 25-29 de agosto de 2003, FCT/UNESP, Presidente Prudente,
2003. 54p.

0.5
0
-0.5

SIGMON, K. Matlab Primer Third Edition. Department of Mathematics, University of Florida,


Gainesville, 1993. 35p. http://ise0.stanford.edu/ Acessado em 05/maio/2003.

ZERI, L. M. M.. Apostila de Matlab. Instituto Nacional de Pesquisas Espaciais INPE, 2001. 19p.
95

96