Upload
ofernandes2
View
252
Download
3
Embed Size (px)
Citation preview
7/23/2019 2011 Octave Galo Camargo
1/17
Autores:
Mauricio Galo
Paulo de Oliveira Camargo
Presidente Prudente2011
Introduo ao Octave
7/23/2019 2011 Octave Galo Camargo
2/17
Universidade Estadual PaulistaFCT Campus de Presidente Prudente
1
Autores:
MMMaaauuurrriiiccciiioooGGGaaallloooPPPaaauuulllooodddeeeOOOllliiivvveeeiiirrraaaCCCaaammmaaarrrgggoooDepartamento de Cartografia / FCT - UNESP
IIInnntttrrroooddduuuoooaaaoooOOOccctttaaavvveee
Universidade Estadual PaulistaFCT Campus de Presidente Prudente
2
XVIII SAGEC Seminrio de Avaliao do Curso deGraduao em Engenharia Cartogrfica
Presidente Prudente01 a 03 de Junho de 2011
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
3
XVIII SAGEC Seminrio de Avaliao do Curso deGraduao em Engenharia Cartogrfica
01 e 03 de Junho de 2011
Minicurso:IIInnntttrrroooddduuuoooaaaoooOOOCCCTTTAAAVVVEEE
Autores:
MMMaaauuurrriiiccciiioooGGGaaallloooPPPaaauuulllooodddeeeOOOllliiivvveeeiiirrraaaCCCaaammmaaarrrgggoooDepartamento de Cartografia / FCT - UNESP
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
4
INTRODUO AO OCTAVECONTEDO PROGRAMTICO
1. INTRODUO
2. INICIANDO O OCTAVE
3. OPERAES COM MATRIZES E VETORES
4. GRFICOS
5. ARQUIVOS SCRIPT
6. CONTROLE DE FLUXO
7. ABERTURA E VISUALIZAO DE IMAGENS
8. IMPORTAO / EXPORTAO DE DADOS E CRIAO DE FUNES
REFERNCIAS
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
5
Este material foi preparado a partir das seguintes referncias (em ordem alfabtica):
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 version3.2.3, July, 2007. 672p.
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 CourseTechnology, 2004. 509p. ISBN: 0-534-40011-6
PAGAMISSE, A.; SOUZA, L. H. G. Introduo ao Software Octave. Semana de Cursos deMatemtica, 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.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
6
1. INTRODUO
1.1. O que OCTAVE
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.
7/23/2019 2011 Octave Galo Camargo
3/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
7
O seu desenvolvimento comeou por volta de 1988 e um de seus idealizadores foi
John W. Eaton, alm de James B. Rawlingsda Universidade de Wisconsin-Madison e
John G. Ekerdt da Universidade do Texas. Atualmente o desenvolvimento feito por
vrios profissionais, de diferentes pases, sendo a sua distribuio de acordo com a licena
GLP (GNU General Public License).
Onde encontrar:
http://www.gnu.org/software/octave/
http://octave.sourceforge.net/
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
8
Caractersticas bsicas:
- Domnio pblico;
- Possuem vrios comandos semelhantes ao MATLAB;
- So disponveis verses em diferentes plataformas: Linux, Unix, Windows,
Mac, etc.
ltima verso (estvel): 08/Fevereiro/2011 (3.4.0)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
9
1.2. Comandos bsicos do sistema
Ao ativar o OCTAVE a seguinte tela mostrada:
Janela aberta ao ativar o OCTAVE.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
10
Alguns comandos do OCTAVE so bsicos e semelhantes a outros usados em sistemas
operacionais como DOS, Unix, Linux, dentre outros. A tabela seguinte mostra alguns
destes comandos, que podem se acionados a partir dopromptdo OCTAVE.
cd Troca o diretrio de trabalho atualdir Lista o contedo do diretrio atualpwd Mostra opathdo diretrio atual de trabalhodelete Exclui arquivo
Exemplo de uso: deletearquivo.exttype Mostra o contedo de arquivos texto
Exemplo de uso: typearquivo.ext
what Lista arquivos especficos do OCTAVE no diretrio correntehelp Ajuda do OCTAVE
Exemplo de uso: helpcomandoquit ouexit Fechar o aplicativo e sair do sistema
Alm destes comandos vrios outros podem ser usados, como por exemplo: mkdir,
rmdir, etc.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
11
1.3. Pacotes adicionais do 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
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.
Para a instalao de um pacote qualquer, de nome package_file_name.tar.gz, basta
ativar o seguinte comando nopromptdo OCTAVE:
pkg installpackage_file_name.tar.gz
Os pacotes disponveis para o OCTAVE esto disponveis na pgina
http://octave.sourceforge.net/.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
12
2. INICIANDO O OCTAVE
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
casos, um tratamento especial dado a uma matriz 1 x 1(escalar) ou a matrizes 1 x nou n
x 1(vetores).
2.1.1. Entrando com valores
No OCTAVE no necessrio que sejam declaradas as variveis e os respectivos
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
uma varivel, o programa aloca a memria automaticamente.
7/23/2019 2011 Octave Galo Camargo
4/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
13
A maneira mais fcil de entrar com uma pequena quantidade de valores digitando
diretamente os dados:
- envolva os elementos com colchetes, [ ]; (Para matrizes e vetor)
- 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
na varivel A:
=
987
654
321
A
Basta digitar:
A=[1 2 3; 4 5 6; 7 8 9]
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
14
ou
A=[1, 2, 3; 4, 5, 6; 7, 8, 9]
Resultado: A =
1 2 3
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.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
15
2.1.2. Variveis reservadas
Existem algumas variveis que so intrnsecas ao OCTAVE, como por exemplo:
help Ajuda do OCTAVE
ans Nome de varivel padro usado para resultados
eps Preciso do nmero real (ponto flutuante)
nan Not a Number(indeterminao: 0/0)
realmax Maior nmero real positivo utilizvel
realmin Menor real positivo utilizvelinf Infinito: 1/0
computer Tipo de computador
pi 3,14159265358979
i, j Unidade imaginria (i2=-1)
version Verso do OCTAVE
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
16
2.2. Expresses e comandos bsicos
O OCTAVE, assim como o MATLAB, so linguagens de alto nvel e interpretadas.
Nestas linguagens o sistema avalia as expresses digitadas, que so geralmente na forma:
varivel = expresso
Os nmeros reais so escritos em notao decimal e para criar nmeros complexos
basta escrever i (ouj) 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
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
17
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:
>> x = [4/3 1.2345e-6]
mostrada, para cada formato usado, da seguinte maneira:
format short 1.3333e+000 1.2345e-006
format long 1.333333333333333e+000 1.234500000000000e-006
format hex 3ff5555555555555 3eb4b6231abfd271
format rat 4/3 9/7290401 (Aproximao racional)
format bank 1.33 0.00
format + ++
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
18
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:
+ adio / e \ Diviso
- subtrao ^ Potenciao
* multiplicao 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 (para format short)
7/23/2019 2011 Octave Galo Camargo
5/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
19
Funes Elementares (colocadas em ordem alfabtica)
abs(x) Valor absoluto ou mdulo de um nmero
acos(x) Arco co-seno
angle(x) Calcula o ngulo de fase (em radianos) para nmeros complexos
asin(x) Arco seno
atan(x) Arco tangente
cos(x) Cosseno
cross(a,b) Produto vetorial dos vetores a e b
exp(x) Exponencial (ex)
inv(x) Matriz inversa da matriz x
log(x) Logaritmo natural (loge x)
log10(x) Logaritmo na base 10
max(x) Maior elemento em x
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
20
Funes Elementares (continuao)
mean(x) Mdia de x
min(x) Menor elemento em x
sin(x) Seno
sqrt(x) Raiz quadrada
std(x) Desvio padro
sum(x) Soma dos elementos de x
tan(x) Tangente
Algumas dessas operaes podem ser aplicadas a vetores ou matrizes. Para a funo
std(x), por exemplo, se o argumento xfor um vetor o resultado ser o desvio padro desse
vetor. Se xfor uma matriz, ser calculado o desvio padropara cada colunadessa matriz.
O mesmo ocorre com as funes sum, maxe mean, entre outras.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
21
Usando os comandos vistos, determinar a mdia, desvio padro, a soma dos
elementos, o valor mximo e mnimo do vetor V abaixo:
V=[1 2 3 4 5 6 7 8 9]
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
22
2.2.1. Comandos
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.
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!
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
23
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:
help who
WHO Lista as variveis no workspaceatual.
WHOS Lista as variveis e informaes adicionais sobre elas.
Outro comando til: lookfor. Este comando procura e lista todas as funes do
OCTAVE que contm a palavra-chave especificada.
lookfor mean
Resultado: mean, meansqe mean2.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
24
2.2.2. Exerccios
1) Armazene no workspace os seguintes valores:
a = 3;
b = -2.123;
c = 4*3;
d = [1 2 3 4];
e = [1; 2; 3; 4];
Utilize os comandos whoe whose observe as disferenas.
Ative o comando clear, e digite novamente o comando whos.
7/23/2019 2011 Octave Galo Camargo
6/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
25
2) Armazene no workspace os seguintes valores:
a = 3.452;
b = -25.123;
c = 4*pi;
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)))
Efetuar os clculos (formato padro), depois mudar para o formato long
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
26
Comandos: save, quit(ou exit), load, clear, whos.
4) Atribua as seguintes expresses s variveis:
a) 4.12 a pi/c para x
b) log(a + 40.1353) para y
c) log(a) para z
5) Salve as variveis x, y, z em um arquivo chamado exemplo.mat.
6) Saia do OCTAVE, entre novamente e carregue as variveis salvas anteriormente.
7) Apague a varivel z e verifique se ela foi realmente apagada.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
27
3. OPERAES COM MATRIZES E VETORES
O OCTAVE permite a manipulao de linhas, colunas, elementos individuais e partes
de matrizes.
3.1. Gerao de vetores
A gerao de uma seqncia de nmeros pode ser feita utilizando:
> x = 1:5 ou > x = 1:1:5
gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
28
Outros exemplos com incrementos diferentes de um:
> y = 0:pi/4:pi
que resulta em:
y =
0.0000 0.7854 1.5708 2.3562 3.1416
Incrementos negativos tambm so possveis.
> z = 6 : -l : l
z =
6 5 4 3 2 1
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
29
Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo,
> k = linspace (0, l, 6)
k =
0 0.2000 0.4000 0.6000 0.8000 1.0000
gera um vetor com 6 elementos onde o primeiro elemento 0 e o ltimo 1.
3.2. Elementos das matrizes
Um elemento especfico da matriz pode ser acessado especificando a linha e a coluna
do elemento desejado, fazendo A(linha, coluna). Por exemplo, dada a matriz A:
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
30
A =
l 2 3
4 5 6
7 8 9
a declarao
>> A(3,3) = A(1,3) + A(3,l)
Resulta em:
A =
l 2 3
4 5 6
7 8 10
7/23/2019 2011 Octave Galo Camargo
7/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
31
Extrao de submatrizes de uma dada matriz
A =
92 99 11 18
98 80 17 14
14 81 88 20
>> B = A(2:3,4) Armazena em B os elementos das linhas 2 e 3 da coluna 4.
B =
14
20
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
32
>> C = A(2:3,2:4)
C =
80 17 14
81 88 20
C uma submatriz 2x4, formada pelas linhas 2 e 3 e colunas 2 a 4 da matriz A.
>> D = triu(A) > B = ones (10)
Exemplo 2: C uma matriz de dimenso 8x8 com elementos nulos.
>> C = zeros (8)
Matriz identidade: eye
Matriz diagonal: diag
7/23/2019 2011 Octave Galo Camargo
8/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
37
3.4. Exerccios
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];
C = [4 5 6];
L = [4; 5; 6];
2) Calcule:
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
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
38
4. GRFICOS
A construo de grficos no OCTAVE bem simples e a maior parte dos comandos
muito parecida com os usados pelo MATLAB, sendo possvel a gerao de grficos
bidimensionais ou tridimensionais.
Existe no OCTAVE uma vasta biblioteca de comandos grficos.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
39
4.1. Comandos grficos bsicos
Na tabela seguinte so mostrados alguns comandos bsicos que permitem a gerao
de grficos bidimensionais no OCTAVE.
plot Visualizao de grficos lineares no plano.
bar Grfico de barras.
stem Sequncia discreta.
stairs Plotar em degraus.
errorbar Plotar barra de erros.
hist Plotar histograma.
comet Plotar com trajetria de cometa.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
40
Se y um vetor,plot(y)produz um grfico linear dos elementos de yversos o ndice
dos elementos de y. Por exemplo, para plotar os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6,
0.14], entre com o vetor ye execute o comandoplot, como mostrado:
>> y = [0.0 0.48 0.84 1.0 0.91 0.6 0.14];
>> plot(y)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
41
Resultado
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
42
Se t e yso vetores com dimenses iguais, o comando plot(t,y)produz um grfico
bidimensional dos elementos de tversos os elementos de y, por exemplo
>> t = 0:0.05:4*pi;
>> y = sin(t);
>> plot(t,y)
7/23/2019 2011 Octave Galo Camargo
9/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
43
Resultado
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
44
O OCTAVE pode tambm plotar mltiplas linhas em apenas um grfico.
Comandoplotcom mltiplos argumentos.
Por exemplo:
>> plot(t,sin(t),t,cos(t),t,0.4*sin(t+pi),t,0.6*cos(t+pi))
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
45
Resultado
0 2 4 6 8 10 12 14-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
46
4.2. Estilos de Linha e Smbolo
Os tipos de linhas, smbolos e cores usadas para mostrar os grficos podem ser
controlados. Seguem alguns exemplos:
>> x = 0:0.05:1;
>> subplot(1,2,1);
>> plot(x,x.^2,k*)
>> subplot(1,2,2);>> plot(x,log(x+0.1),y-)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
47
Resultado
0 0.5 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.5 1-2.5
-2
-1.5
-1
-0.5
0
0.5
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
48
Outros tipos de linhas, pontos e cores tambm podem ser usados:
TIPO DE LINHA
- __________
TIPO DE PONTO
+ +++++++++
x x x x x x x x
^ ^ ^ ^ ^ ^ ^ ^
CORES
y amarelo
m magenta
c cian
r vermelho
g verde
b azul
w branco
k preto
7/23/2019 2011 Octave Galo Camargo
10/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
49
4.3. Exerccios
>> t = 0:0.5:4*pi;
>> y = sin(t);
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.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
50
Verificar o resultado do uso dos seguintes comandos:
>> t=1:pi/10:6*pi;
>> y=(1-t).*sin(t);
>> comet(y)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
51
4.4. Gerao de Grficos Tridimensionais e Isolinhas
Estes so alguns comandos para gerar grficos tridimensionais e contornos.
plot3 Mostrar grfico no espao 3D.
contour Permite visualizar curvas de nvel no plano.
contour3 Permite visualizar curvas de nvel no espao 3D.
meshgrid Permite a criao de estruturas (2D e 3D) para representao 3D.
mesh Permite plotar malhas 3D.
meshc Combinao mesh/contour.
surf Plotar superfcie 3D.
surfc Combinao surf/contour.
slice Plot visualizao volumtrica.
cylinder Gerar cilindro.
sphere Gerar esfera.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
52
O comando mesh(x,y,z)cria uma perspectiva tridimensional plotando os elementos da
matriz zem relao ao plano definindo pelas matrizes xey. Exemplo de uso:
>> t = -2:0.2:2;
>> [x, y] = meshgrid(t, t);
>> z = x.* exp(-x.^2 - y.^2);
>> mesh(x,y,z)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
53
Verifique as seguintes opes:
>> surf(x, y, z)
>> colormap(gray);
Alguns outros paletes: hot,bone,pink,jet, spring, rainbow, cool, copper,
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
54
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
>> colormap(bone)
>> surfl(x, y, z), shading interp
7/23/2019 2011 Octave Galo Camargo
11/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
55
Curvas de nvel
O comando contour(z,10)mostra a projeo da superfcie acima no plano xycom 10
iso-linhas.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
56
4.5. Anotaes no Grfico
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.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
57
Exemplos:
>> fplot(sin, [-pi pi]);
>> title Grfico da funo f(x)=seno(x), -pi xlabel x;
>> ylabel f(x);
>> grid (on);
>> text(1,.2,Curva sin(x));
>> gtext Sin(x);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
58
Exemplo do comando fplotpara mltiplas funes
fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
59
Uma outra possibilidade para a visualizao de mltiplas funes:
>> 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");
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
60
5. ARQUIVOS SCRIPT(.m)
Os comandos do OCTAVE so normalmente digitados na rea de trabalho, onde cadalinha de comando introduzida e imediatamente processada. O OCTAVE tambm capaz
de executar sequncias de comandos armazenadas em arquivos ASCII com extenso m.
Para editar um arquivo texto na rea de trabalho do OCTAVE, no promptdigite edit
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
OCTAVE, utizando qualquer editor de texto (notepad, textpad, wordpad, edit, etc.).
Existem alguns comandos e declaraes especiais para serem usados nos arquivos,
por exemplo:
7/23/2019 2011 Octave Galo Camargo
12/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
61
Comando Funo% ou # Inserir um comentrio no arquivo .m.clear Apagar todos os dados da memria.input Usado para a entrada de dado a partir da janela
de comando.pause Provoca uma pausa na execuo do arquivo at
que qualquer tecla seja digitada.clc Limpar a janela de comando.figure(n) Mostrar a janela grfica nmero n.close Fechar todas as janelas grficas.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
62
Exemplo de arquivo script
#Plota uma funo y=ax^2 + bx + c no intervalo -5> for i = 1:n;>> for j = 1:n;>> ...>> endfor>> endfor
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
64
comum construes em que conjuntos de laos forso usados principalmente com
matrizes:
for i=1:8;
for j=1:8;
A(i,j)=i+j;
B(i,j)=i-j;
endfor
endfor
A
B
C=A+B
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
65
6.2. Comando while
No exemplo abaixo o lao while executado se a condio testada for verdadeira.
a = 1; b = 15;
while a
7/23/2019 2011 Octave Galo Camargo
13/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
67
6.3. Declaraes if, else
A seguir, apresentado um exemplo do uso da declarao ifno OCTAVE.
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
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
68
7. ABERTURA E VISUALIZAO DE IMAGENS
So vrios os comandos destinados visualizao e processamento de imagens. Boa
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).
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
69
A tabela seguinte mostra alguns comandos bsicos, que permitem a operao com
imagens no OCTAVE:
imread Faz a leitura de imagens.
image Permite a visualizao de uma matriz como uma imagem.
hist Calcula o histograma de um conjunto de dados.
rgb2gray Converte imagem colorida (RGB) para tons de cinza.
axis Controla a aparncia e a escala dos eixos.
disp Visualizao de um vetor no modo texto.
figure Abre uma nova janela grfica.colormap Permite definir um mapa de cores.
Exemplo: colormap(gray(256))
imfinfo Funo que retorna uma estrutura que contem diversas
informaes sobre determinada imagem.
Exemplo de uso: imfinfo(arquivo_imagem)
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
70
Abertura de imagem / Visualizao / Converso RBG para Tom de Cinza
Crie um arquivo (.m), digite, salve e execute os comandos abaixo:
nome='lenna.jpg';
DATA=imread(nome);
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' ]);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
71
Abertura de imagem / Visualizao / Converso RBG para Tom de Cinza(Cont.)
No mesmo arquivo criado antes, escreve um cdigo que permita criar a imagem
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' ]);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
72
Resultado do processamento anterior, onde mostrada a imagem original (colorida), a
convertida para tons de cinza e a negativa.
Ima em: lenna.
50
100
150
200
250
300
350
40050 100 150 200 250 300 350 400
Ima em (tom de cinza
50
100
150
200
250
300
350
40050 100 150 200 250 300 350 400
Imagem (negativa)
50
100
150
200
250
300
350
40050 100 150 200 250 300 350 400
7/23/2019 2011 Octave Galo Camargo
14/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
73
Leitura / Clculo do Histograma de Frequncia / Visualizao do Histograma
nome='lenna.jpg';DATA=imread(nome);DATAg=rgb2gray(DATA);
figure(1);image(DATAg);colormap(gray(256));xlabel([ 'Imagem: ' nome ]);disp([ 'Imagem (original): ' nome ]);
[freq,tom]=hist(DATAg(:),0:255);figure(2);plot(tom,freq);title([ 'Histograma' ]);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
74
Resultado do processamento anterior, onde mostrada a imagem lida e respectivo
histograma.
50
100
150
200
250
300
350
40050 100 150 200 250 300 350 400
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250 300
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
75
Alguns comandos adicionais relacionado ao processamento de imagens:
imshow Permite a visualizao de uma imagem.
imagesc 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.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
76
Leitura / Aplicao de um filtro a uma imagem / Visualizao
nome='lenna.jpg';DATA=imread(nome);DATA=rgb2gray(DATA);
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]' ]);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
77
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]' ]);
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 (bordavertical]' ]);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
78
Imagem: lenna.jpg
50
100
150
200
250
300
350
4005 0 1 00 1 50 2 0 0 2 5 0 3 0 0 3 5 0 4 0 0
Imagem: lenna.jpg [Aps fitro mdia 3x3]
50
100
150
200
250
300
350
4005 0 1 00 1 50 2 00 2 50 3 00 3 50 4 00
Imagem: lenna.jpg [Aps fitro mdia 5x5]
50
100
150
200
250
300
350
4005 0 1 00 1 50 2 00 2 50 3 00 3 50 4 00
Imagem: lenna.jpg [Aps filtro Sobel (borda vertical]
7/23/2019 2011 Octave Galo Camargo
15/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
79
Abertura de imagem / Armazenamento em outros formatos
No mesmo arquivo script anteriormente escrito, incorpore no cdigo o
armazenamento das imagens aps o filtro de suavizao 3x3 e 5x5, em arquivos com
diferentes formatos:
...
imwrite(uint8(PARCIALa),"filtro3x3.jpg");
imwrite(uint8(PARCIALb),"filtro5x5.png");
disp(['Imagens filtro3x3.jpg e filtro5x5.png salvas.']);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
80
Abertura de imagem / Armazenamento em outros formatos
No mesmo arquivo script anteriormente escrito, incorpore no cdigo o
armazenamento das imagens aps o filtro de suavizao 3x3 e 5x5, em arquivos com
diferentes formatos:
...
imwrite(uint8(PARCIALa),"filtro3x3.jpg");
imwrite(uint8(PARCIALb),"filtro5x5.png");
disp(['Imagens filtro3x3.jpg e filtro5x5.png salvas.']);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
81
8. IMPORTAO / EXPORTAO DE DADOS E CRIAO DE FUNES
Neste tpico so apresentados alguns comandos adicionais relacionados
manipulao de arquivos e ao uso de funes criadas pelo usurio.
8.1. Importao e Exportao de Dados
Os dados contidos na rea de trabalho do OCTAVE, como foi visto, podem ser
armazenados em arquivos no modo texto, binrio (e outros formatos), utilizando o
comando save. Existem diversas maneiras de utilizar este comando, como pode-se ver nos
exemplos mostrados na sequncia:
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
82
save arql.sai X Y Z binary salva as variveis X, Y e Z no arquivo binrio
arq1.sai.
save arq2.sai X Y Z -ascii salva as variveis X., Y e Z no arquivo texto
arq2.sai com 8 casas decimais.
save arq3.sai X Y Z -ascii -double 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
que estes dados sejam gravados em formato apropriado. Se os dados so armazenados noformato ASCII, e no caso de matrizes, com colunas separadas por espaos e cada linha da
matriz em uma linha do texto, o comando loadpode ser usado.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
83
Por exemplo suponha que um programa qualquer criou arquivo polig1.dat que
contm a seguinte matriz.
1 1
3 1
3 3
1 3
1 1
Ao executar o comando:
>> load polig1.dat
o OCTAVE importa a matriz, que armazenada com o nomepolig1.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
84
polig1polig1 =
1 1
3 1
3 3
1 3
1 1
7/23/2019 2011 Octave Galo Camargo
16/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
85
O OCTAVE pode tambm importar (atravs do comando load) os dados que foram
anteriormente exportados por ele. Por exemplo, para importar as variveis X, Y e Z,
anteriormente exportadas usando o comando save, pode-se fazer:
load arq1 save arq1 X Y Z
load arq2.sai save arq2.sai X Y Z -ascii
load arq3.sai save arq3.sai X Y Z -ascii -double
Deve-se ressaltar que o comando save, quando usado para exportar os dados do
OCTAVE em formato texto, exporta apenas um bloco contendo todas as variveis.
Quando os dados so importados atravs do comando load, apenas uma varivel com
nome do arquivo criada.
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
86
Exemplo:
>> x = rand(3,3)
x =
0.2190 0.6793 0.5194
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346
>> y = rand(3,3)
y =0.0535 0.0077 0.4175
0.5297 0.3835 0.6868
0.6711 0.0668 0.5890
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
87
>> save arq2.sai X Y -ascii
>> clear
>> whos
>> load arq2.sai
>> arq2
arq2 =
0.2190 0.6793 0.5194
0.0470 0.9347 0.83100.6789 0.3835 0.03460.0535 0.0077 0.41750.5297 0.3834 0.68680.6711 0.0668 0.5890
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
88
8.2. Criao de funes
O uso de funes muito til tanto na execuo de algumas tarefas repetitivas
quanto no aproveitamento do cdigo em diferentes aplicaes. Pode-se, deste modofazer a
criao bibliotecas de funes destinadas a soluo de alguns problemas especficos.
A esctrutura geral de uma funo criada pelo usurios do OCTAVE a seguinte:
function [ retorno ] = teste (variveis)...
endfunction
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
89
Na sequncia so mostrados dois exemplos de funes. Uma delas foi criada com o
objetivo de, dado um ngulo (alfa) em radianos, montar a matriz de rotao M:
=
)cos()sin(
)sin()cos()(M
.
A segunda funo tem o propsito de, dada uma matriz de rotao M e um ponto de
coordenas (x,y), aplicar a matriz de rotao de modo que se tenha:
=
y
x)(M
'y
'x
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
90
Funo f_matriz_rotacao armazenada no arquivo f_matriz_rotacao.m
function Mrot=f_matriz_rotacao(alfa)
# 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);
-sin(alfa) cos(alfa)];
Endfunction
7/23/2019 2011 Octave Galo Camargo
17/17
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
91
Funo f_aplica_rotacao armazenada no arquivo f_aplica_rotacao.m
function [xrot,yrot]=f_aplica_rotacao(M,x,y)
# 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
xrot=x*M(1,1) + y*M(1,2);yrot=x*M(2,1) + y*M(2,2);
endfunction
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
92
Como exemplo de aplicao das funes criadas para o OCTAVE, inicialmente
escreva umscriptque permite ler nas variveispolig1.datepolig2.dat, bem como permita
a visualizao destes vetores, usando o comandoplot:
Contedo do
arquivo
polig1.dat
Contedo do
arquivo
polig2.dat0 01 01 10 10 0
2 2
3 3
2 3
2 2
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
93
Leitura dos dados / Visualizao dos polgonos
load 'polig1.dat'load 'polig2.dat'
[lin1,col1]=size(polig1);[lin2,col2]=size(polig2);
x1=polig1(1:lin1,1);y1=polig1(1:lin1,2);x2=polig2(1:lin2,1);y2=polig2(1:lin2,2);
figure(1);plot(x1,y1,x2,y2);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
94
Clculo da Matriz de Rotao / Rotao / Visualizao dos polgonos aps rotao
No mesmo scriptanterior, calcule e matriz de rotao, aplique-a a todos os pontos
dos dois polgonos e faa a visualizao.
...ROT = f_matriz_rotacao(30);
[x1r,y1r]=f_aplica_rotacao(ROT,x1,y1);[x2r,y2r]=f_aplica_rotacao(ROT,x2,y2);
figure(2);plot(x1r,y1r,x2r,y2r);
figure(3);plot(x1,y1,x2,y2,x1r,y1r,x2r,y2r);
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
95
Visualizao dos polgonos antes e aps rotao
-0.5
0
0.5
1
1.5
2
2.5
3
0 1 2 3 4 5
Minicurso - Introduo ao Octave UNESP / Departamento de Cartografia
96
REFERNCIAS
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 version3.2.3, July, 2007. 672p.
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 CourseTechnology, 2004. 509p. ISBN: 0-534-40011-6
PAGAMISSE, A.; SOUZA, L. H. G. Introduo ao Software Octave. Semana de Cursos deMatemtica, 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.