Académique Documents
Professionnel Documents
Culture Documents
Tutorial do OCTAVE /
OCTAVE Tutorial
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
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
9. CRIAO E USO DE FUNES
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
2
20
01
16
6
REFERNCIAS
Este material foi preparado a partir das seguintes referncias (em ordem alfabtica):
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.
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
4.0.0 Free Your Numbers, March, 2015. 966p.
McANDREW, A. Introduction to Digital Image Processing with MATLAB. Thomson Course Technology,
2004. 509p. ISBN: 0-534-40011-6
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.
ZERI, L. M. M. Apostila de Matlab. Instituto Nacional de Pesquisas Espaciais INPE, 2001. 19p.
Caractersticas bsicas:
- Domnio pblico;
vrios profissionais, de diferentes pases, sendo a sua distribuio feita de acordo com a
Onde encontrar:
http://www.gnu.org/software/octave/
http://octave.sourceforge.net/
Alm dessas verses, que podem ser instaladas e executadas no modo off-line, tambm
possvel executar o OCTAVE de modo online, a partir do endereo mostrado abaixo.
Fonte: http://www.octave-online.net
9
10
http://octave.sourceforge.net/.
Dentre os pacotes tem-se por exemplo, para a verso 4.0.0 do OCTAVE o pacote
image, armazenado no arquivo image-2.4.0.tar.gz. Pode-se observar que este arquivo,
bem como todos os demais da verso 4.0.0 esto disponibilizados no seguinte diretrio:
C:\Octave\Octave-4.0.0\src
Antes de instalar qualquer pacote adicional, pode-se ativar o comando pkg list no
prompt do OCTAVE para ver todos os pacotes j instalados.
11
12
2. INICIANDO O OCTAVE
2.1. Variveis
O OCTAVE trabalha essencialmente com um tipo de varivel: matriz, que pode conter
Uma vez que para o desenvolvimento deste tutorial so necessrias apenas algumas
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.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
13
14
A maneira mais fcil de entrar com uma pequena quantidade de valores digitando
ou
A=[1, 2, 3; 4, 5, 6; 7, 8, 9]
diretamente os dados:
- envolva os elementos com colchetes, [ ];
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]
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
15
16
help
ans
eps
nan
realmax
realmin
inf
computer
pi
i, j
version
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
17
1/3
-99
.0001
9.63973
1.602E-20
6.025E23
3 + 2i
-3.1459i
3E5j
18
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,
+
*
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
19
abs(x)
acos(x)
angle(x)
asin(x)
atan(x)
cos(x)
cosd(x)
cross(a,b)
exp(x)
inv(x)
log(x)
log10(x)
max(x)
20
Mdia de x
Menor elemento em x
Funo seno
Funo seno para ngulo x em graus decimais
Raiz quadrada
Desvio padro
Soma dos elementos de x
Tangente
Tangente para ngulo x em graus decimais
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.
21
Usando os comandos vistos determine a mdia, desvio padro, a soma dos elementos,
22
2.2.1. Comandos
V=[1 2 3 4 5 6 7 8 9]
23
24
2.2.2. Exerccios
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
b = -2.123
c = 4*3
d = [1 2 3 4]
e = [1; 2; 3; 4]
Outro comando til: lookfor. Este comando procura e lista todas as funes do
OCTAVE que contm a palavra-chave especificada.
Utilize os comandos who e whos e observe as diferenas.
lookfor mean
25
26
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
27
28
> y = 0:pi/4:pi
que resulta em:
y =
0.0000
0.7854
1.5708
2.3562
3.1416
ou
> x = 1:1:5
> z = 6 : -l : l
z =
6
29
30
Exemplo de uso:
A =
> k = linspace (0, l, 6)
l 2 3
4 5 6
k=
7 8 9
31
Resulta em:
32
A =
A =
l 2 3
92 99 11 18
4 5 6
98 80 17 14
7 8 10
14 81 88 20
>> B = A(2:3,4)
B =
14
20
33
>> C = A(2:3,2:4)
34
C =
80 17 14
81 88 20
>> D = triu(A)
D =
92 99 11 18
00 88 17 14
00 00 88 20
35
Matriz identidade:
eye
Matriz diagonal:
diag
rand
36
m+100
ans =
108 101
106
103
105
107
104
109
102
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,
3*m
multiplicadas, etc. No entanto existem operaes especiais. Sendo A=[a1 a2 ... an] e B=[b1
b2 ... bn] duas matrizes, ento:
ans =
24
18
15
21
12
27
37
3.4. Exerccios
1) Dadas as seguintes matrizes e vetores:
inv
det
trace
cond
rank
eig
svd
38
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
b) E = A*B
h) Produto D vezes A
c) F = A-B
i) Autovalor e Autovetor de A
d) G = BT-A
e) H = ATA
k) Resolver o sistema AX = L
f) I = A CT
39
40
4. GRFICOS
Caso
usurio
queira
modificar
interface
de
sada
comando
bidimensionais ou tridimensionais.
Na verso atual do OCTAVE a sada grfica , por default, criada usando o OpenGL
e Qt. Caso as bibliotecas do OpenGL no estejam disponveis o GnuPlot utilizado.
41
42
plot
bar
stem
stairs
errorbar
hist
comet
Por exemplo, para plotar os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14], entre com
o vetor y e execute o comando plot, como mostrado:
>> y = [0.0
0.48
0.84
1.0
0.91
0.6
0.14];
>> plot(y)
43
Resultado:
44
45
Resultado:
46
Exemplo:
>> plot(t,sin(t),t,cos(t),t,0.4*sin(t+pi),t,0.6*cos(t+pi))
47
48
Resultado:
Os tipos de linhas, smbolos e cores usadas para mostrar os grficos podem ser
0.8
0.6
0.4
>> x = 0:0.05:1;
0.2
>> subplot(1,3,1);
>> plot(x,x.^2,'*k')
-0.2
>> subplot(1,3,2);
-0.4
>> plot(x,log(x+0.1),'-b')
-0.6
>> subplot(1,3,3);
-0.8
-1
>> plot(x,-x.^3,'+r')
0
10
12
14
49
Resultado:
50
__________
TIPO DE PONTO
amarelo
magenta
cian
+++++++++
vermelho
verde
xxxxxxx
^^^^^^^
51
CORES
azul
branco
preto
52
Resultado:
4.3. Exerccios
>> t = 0:0.5:4*pi;
>> y = sin(t);
Criar os seguintes grficos:
Grfico simples (plot)
Grfico de barras (bar)
Sequncia discreta (stem)
Escada (stairs)
53
54
>> bar(y);
>> grid('on');
>> hist(y,50);
>> grid('on');
55
56
Resultado final:
>> t=1:pi/10:6*pi;
>> y=(1-t).*sin(t);
>> comet(y)
57
slice
cylinder
sphere
58
>> t = -2:0.2:2;
>> [x, y] = meshgrid(t, t);
>> z = x.* exp(-x.^2 - y.^2);
>> mesh(x,y,z)
59
60
Resultado:
Exemplos de outros paletes de cores: autumn, bone, cool, copper, cubehelix, flag, gray,
>> colormap(gray);
hot, hsv, jet, lines, ocean, pink, prism, rainbow, spring, summer, white, winter,
61
62
Resultados:
que a superfcie 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)...
>> colormap(bone)
..(b)
(c)
63
64
Curvas de nvel
O comando contour(z,10) mostra a projeo da superfcie definida (pela funo z), no
plano cartesiano xy, com 10 iso-linhas. A figura seguinte mostra o resultado para a
superfcie anterior.
65
title
Ttulo do grfico
xlabel
Ttulo do eixo X
ylabel
Ttulo do eixo Y
zlabel
Ttulo do eixo Z
text
gtext
grid
Linhas de grade
66
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])
67
68
Resultado:
>> 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');
69
70
Diretrio de
trabalho
Editor
Uma outra possibilidade para criar e editar estes arquivos por meio do editor do
prprio ambiente de trabalho do OCTAVE. Como pode-se notar na prxima figura, temse na parte inferior da tela a aba Editor. sugerido que antes de criar o arquivo, com
extenso m, que seja escolhido e definido o diretrio de trabalho, como indicado na
prxima figura.
71
72
Funo
Inserir um comentrio no arquivo .m
Apagar todos os dados da memria
Usado para a entrada de dados a partir da janela
de comando
Provoca uma pausa na execuo do arquivo at
que qualquer tecla seja digitada
Limpar a janela de comando
Abrir e mostrar a janela grfica de nmero n
Mostrar no ambiente de trabalho o texto
colocado entre ...
Fechar todas as janelas grficas
73
6. CONTROLE DE FLUXO
74
A(i,j)=i+j;
B(i,j)=i-j;
endfor
endfor
A
B
C=A+B
75
76
Operadores relacionais:
a = 1; b = 15;
while a<b
a = a+1
b = b-1
endwhile
disp(fim do loop)
e 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.
77
78
79
A tabela seguinte mostra alguns comandos bsicos, que permitem a operao com
imfinfo
80
imagens no OCTAVE:
imread
image
hist
rgb2gray
axis
disp
figure
colormap
warning('off');
pkg load image;
nome='lenna.jpg';
DATA=imread(nome);
figure;
image(DATA);
xlabel([ 'Imagem: ' nome ]);
disp([ 'Imagem entrada: ' nome ]);
figure;
DATAg=rgb2gray(DATA);
image(DATAg);
colormap(gray(256));
xlabel([ 'Imagem (tom de cinza) ' ]);
disp([ 'Imagem (tom de cinza) : ok' ]);
81
82
No mesmo arquivo criado antes, escreva um cdigo que permita criar a imagem
negativa, em tom de cinza. Mostre esta imagem:
No mesmo arquivo criado antes, escreva um cdigo que permita criar a imagem
negativa, em tom de cinza. Mostre esta imagem:
...
...
figure;
DATAn=255.-DATAg;
image(DATAn);
colormap(gray(256));
xlabel([ 'Imagem (negativa)' ]);
disp([ 'Imagem (negativa)
: ok' ]);
figure;
DATAn=255.-DATAg;
image(DATAn);
colormap(gray(256));
xlabel([ 'Imagem (negativa)' ]);
disp([ 'Imagem (negativa)
: ok' ]);
83
84
50
50
50
100
100
100
150
150
150
200
200
200
250
250
250
300
300
300
350
350
400
400
50
100
150
200
250
300
350
400
figure;
image(DATAg);
colormap(gray(256));
xlabel([ 'Imagem: ' nome ]);
disp([ 'Imagem (original): ' nome ]);
350
50
Imagem: lenna.jpg
100
150
200
250
300
350
400
[freq,tom]=hist(DATAg(:),0:255);
figure;
plot(tom,freq);
title([ 'Histograma' ]);
400
50
100
150
200
250
300
350
400
Imagem (negativa)
85
86
histograma.
imshow
imagesc
Histograma
3500
50
3000
100
2500
150
2000
200
1500
250
1000
300
500
350
400
50
100
150
200
250
300
350
400
50
100
150
200
250
300
87
88
...
f55=(1/25).*[ 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,f55,'same');
figure;
imagesc(PARCIALb);
colormap(gray(256));
title([ 'Imagem: ' nome ' [Aps filtro mdia 5x5]' ]);
figure;
image(DATA);
colormap(gray(256));
title([ 'Imagem: ' nome ]);
f33=(1/9).*[ 1 1 1; 1 1 1;
1 1 1 ];
PARCIALa=filter2(f33,DATA,'same');
figure;
image(PARCIALa);
colormap(gray(256))
title([ 'Imagem: ' nome ' [Aps filtro media 3x3]' ]);
f2da=[
-1
0
1; -2
0
2; -1
0
1 ];
PARCIAL=filter2(f2da,DATA);
Figure;
imshow(uint8(PARCIAL));
title([ 'Imagem: ' nome ' [Apos filtro Sobel (borda
vertical]' ]);
89
90
50
50
100
100
150
150
200
200
250
250
300
300
350
350
400
400
50
100
350
400
50
100
150
200
250
300
350
400
...
imwrite(uint8(PARCIALa),"filtro3x3.jpg");
imwrite(uint8(PARCIALb),"filtro5x5.png");
disp(['Imagens filtro3x3.jpg e filtro5x5.png salvas.']);
50
100
150
200
250
300
350
400
50
100
150
200
250
300
350
400
91
92
Os dados obtidos por outros programas podem ser importados pelo OCTAVE, desde
Os dados (matrizes, vetores, escalares, cadeia de caracteres, etc) disponveis no
Ambiente de Trabalho do OCTAVE, como foi visto, podem ser armazenados em arquivos
formato ASCII, e no caso de matrizes, com colunas separadas por espaos e cada linha da
Existem diversas maneiras de utilizar este comando, como pode-se ver nos exemplos
mostrados na sequncia:
93
94
Por exemplo suponha que um programa qualquer criou arquivo polig1.dat que
contm a seguinte matriz.
polig1
1
3
3
1
1
polig1 =
1
1
3
3
1
Ao executar o comando:
95
96
O OCTAVE pode tambm importar (atravs do comando load) os dados que foram
Exemplo:
>> x = rand(3,3)
x =
0.2190 0.6793 0.5194
load arq1
load arq2.sai
load arq3.sai
save arq1 X Y Z
save arq2.sai X Y Z -ascii
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
y =
0.0535
0.0077 0.4175
os dados so importados atravs do comando load, apenas uma varivel com nome do
0.5297
0.3835 0.6868
arquivo criada.
0.6711
0.0668 0.5890
97
9. CRIAO DE FUNES
>> clear
98
>> whos
O uso de funes muito til tanto na execuo de algumas tarefas repetitivas
>> arq2
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
A estrutura geral de uma funo que pode ser criada pelo usurios do OCTAVE a
seguinte:
99
Na sequncia so mostrados dois exemplos de funes. Uma delas foi criada com o
100
cos() sin()
M ( ) =
sin() cos() .
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:
x '
x
y ' = M ( ) y
#
#
#
#
#
#
#
sin(alfa);
cos(alfa)];
endfunction
101
102
function [xrot,yrot]=f_aplica_rotacao(M,x,y)
#
#
#
#
#
#
#
#
Contedo do
arquivo
polig1.dat
0
0
1
1
0
2
3
2
2
Contedo do
arquivo
polig2.dat
2
3
3
2
endfunction
103
104
clear;
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;
plot(x1r,y1r,x2r,y2r);
figure;
plot(x1,y1,x2,y2,x1r,y1r,x2r,y2r);
figure;
plot(x1,y1,x2,y2);
105
106
REFERNCIAS
3
2.5
EATON, J. W.; BATEMAN, D.; HAUBERG, S. GNU Octave Edition 3 for Octave version
3.2.3, July, 2007. 672p.
1.5
EATON, J. W.; BATEMAN, D.; HAUBERG, S.; WEHBRING, R. GNU Octave Edition 4 for
Octave version 4.0.0 Free Your Numbers, March, 2015. 966p.
0.5
QUARTERONI, A.; SALERI, F.; GERVASIO, P. Scientific Computing with MATLAB and
Octave. Fourth Edition. Text in Computational Science and Engineering. BARTH, T. J.; GRIEBEL,
M.; KEYES, D. E.; NIEMINEN, R. M.; ROOSE, D.; SCHLICK. T. (Eds.). Lausanne: Springer,
2014.
-0.5
107
108
ANEXOS
ZERI, L. M. M. Apostila de Matlab. Instituto Nacional de Pesquisas Espaciais INPE, 2001. 19p.
109
110
Anexo I
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): subplot, bar, hist.
Autores: M. Galo e Paulo de O. Camargo
Unesp, Pres. Prudente, 2016
%}
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
111
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): bar, legend.
Autores: M. Galo e Paulo de O. Camargo
Unesp, Pres. Prudente, 2016
%}
24.7
23.7
21.3
21.9
15.2
13.9
112
12.9
7.0 14.1 15.1 0;
18.8
9.0 15.5 16.2 0;
15.1 12.0 18.4 17.4 0;
18.0 19.2 20.4 19.3 0;
22.8 21.5 22.1 22.2 0;
21.1 25.0 22.9 22.0 0 ];
B=bar(dados);
legend(B,'2012','2013','2014','2015','2016');
legend('Boxoff');
meses=({'Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set
','Out','Nov','Dez'});
set(gca,'XTickLabel',meses);
ylabel('Temperatura minima mensal [graus C]');
Anexo II
clear
figure;
periodo = 2012:1:2016;
dados = [ 19.1 23.5 23.7
23.5 21.5 23.5
18.5 20.8 23.0
17.0 19.8 19.7
14.0 17.1 12.5
14.3 14.3 14.5
24.4;
23.3;
21.3;
27.5;
0;
0;
113
114
Anexo III
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): pie.
Autores: M. Galo e Paulo de O. Camargo
Unesp, Pres. Prudente, 2016
%}
115
116
Anexo IV
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): plot, legend, visualizao de
letras gregas.
Autores: M. Galo e Paulo de O. Camargo
Unesp, Pres. Prudente, 2016
%}
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
117
118
Anexo V
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): num2str, linewidth.
Autores: M. Galo e Paulo de O. Camargo
Unesp, Pres. Prudente, 2016
%}
lambda=input('Entre com o fator de escala: ');
figure(1)
t=0:0.2:6*pi;
y=(1-t).*sin(t);
y1=lambda*(1-t).*sin(t);
plot(t,y,'linewidth',2,t,y1,'linewidth',2);
ylabel('f(t)');
legend('y(t)','\lambda.y(t)','location','northwest');
legend('boxoff');
Grfico resultante do script anterior.
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
(continua)
119
120
Anexo VI
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): size, delaunay, triplot, axis.
Grfico resultante
do script anterior.
121
122
subplot(1,2,1)
plot(x,y,'sr');
title('Pontos da amostra.');
axis('square');
grid;
subplot(1,2,2)
plot(x,y,'sr');
tri=delaunay(x',y');
hold on;
triplot(tri,x,y);
title('Pontos da amostra e Triangulacao de Delaunay.');
axis('square');
grid;
123
figure;
plot(xn,yn,'.r');
xlabel('X(m)');
ylabel('Y(m)');
Anexo VII
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): subplot, bar, hist.
figure;
plot3(xn,yn,zn,'.r');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
limX = min(xn):1.:max(xn);
limY = min(yn):1.:max(yn);
[xf,yf] = meshgrid(limX, limY);
zf = griddata(xn, yn, zn, xf, yf);
figure;
plot(xn,yn,'.r');
hold on
contour(zf,50,'-b');
(continua)
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
124
125
126
xlabel('X(m)');
ylabel('Y(m)');
figure;
surfc(xf, yf, zf);
title('Superficie topografica');
xlabel('X(m)');
ylabel('Y(m)');
zlabel('Z(m)');
Na sequncia so mostrados o arquivo terreno.txt, usado no script anterior,
bem como os quatro grficos resultantes da execuo deste script.
10605.777
10599.733
10615.293
10634.561
10630.045
10626.659
10646.331
10650.098
10665.250
10664.420
10664.845
10665.840
10673.666
10673.593
10675.106
10671.091
10678.698
10688.459
10691.294
10695.599
10697.511
10687.189
10695.143
10675.229
10687.963
10595.478
10614.218
10642.839
10678.690
14253.405
14226.811
14198.717
14206.868
14231.201
14263.897
14232.702
14268.751
14256.447
14255.853
14255.081
14255.707
14244.882
14246.394
14247.072
14244.626
14242.686
14268.374
14259.813
14275.018
14260.744
14244.902
14239.535
14232.082
14217.071
14287.307
14318.957
14346.278
14326.350
847.374
849.188
843.856
835.203
834.698
834.841
827.488
824.985
818.154
818.118
818.081
818.115
817.800
817.840
817.834
818.551
814.706
821.455
816.981
823.062
815.977
812.722
805.741
816.265
809.833
851.135
850.357
847.213
838.391
10654.248
10677.961
10695.797
10687.212
10702.598
10727.848
10722.865
10757.893
10724.310
10720.952
10702.665
10721.728
10752.754
10719.296
10724.365
10693.065
10734.297
10695.266
10617.750
10621.073
10609.384
10587.327
10598.051
10599.717
10618.061
10615.075
10587.427
10572.092
10652.161
14300.966
14273.010
14296.792
14311.491
14296.371
14302.539
14257.941
14332.396
14329.433
14330.090
14337.463
14311.994
14350.186
14350.783
14348.249
14355.301
14354.692
14380.014
14403.847
14404.658
14441.500
14446.788
14374.378
14372.089
14389.550
14390.768
14423.912
14397.026
14396.553
832.379
821.125
830.147
835.304
825.103
825.620
816.945
825.310
829.970
832.536
837.446
828.226
825.874
829.237
834.469
843.320
830.744
843.335
851.262
851.418
854.433
851.514
853.819
853.823
852.020
851.944
848.785
852.387
853.625
10645.834
10569.665
10566.565
10551.639
10598.039
10586.884
10573.056
10555.576
10558.450
10535.919
10527.406
10555.024
10552.173
10557.990
10560.678
10568.406
10576.697
10523.849
10587.444
10586.427
10579.011
10547.881
10595.544
10598.582
10544.620
10589.274
10587.583
10695.918
14366.175
14349.903
14352.056
14366.817
14338.327
14319.117
14334.192
14312.625
14312.015
14352.970
14327.464
14277.472
14277.784
14241.363
14241.972
14262.295
14305.307
14268.045
14202.788
14199.660
14232.853
14213.814
14177.230
14179.058
14192.465
14162.826
14166.114
14217.893
850.873
855.487
855.569
853.152
855.792
855.908
856.122
853.111
853.120
850.769
849.723
853.647
853.858
854.902
854.754
854.681
855.266
851.384
849.155
848.979
854.422
850.228
844.544
844.836
846.335
842.976
842.864
806.531
# Fim do arquivo
(continua)
127
128
129
(continua)
Anexo VIII
130
%{
Exemplo de uso de alguns comandos do Octave
Comandos (principais): meshgrid, surf, interp2.
[xi,yi] = meshgrid(Lmin:0.5:Lmax);
zi = interp2(x, y, z, xi, yi);
figure;
surf(xi,yi,zi);
clear
Lmin = -2*pi;
Lmax = 2*pi;
[x,y] = meshgrid(Lmin:Lmax);
z = (1/3)*x.*cos(y/2);
figure;
surf(x,y,z);
(continua)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
131
132
a)
b)
c)
Mauricio Galo e Paulo de Oliveira Camargo, Presidente Prudente - SP, 2016
133
134