Professional Documents
Culture Documents
Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
MATLAB UMA LINGUAGEM TCNICA DE COMPUTAO
(adaptao de Joseph Harari IOUSP maro de 2009)
1. INTRODUO
Talvez a maneira mais fcil de visualizar o MATLAB seja pensar nele como
uma calculadora cientfica completa. Assim como em uma calculadora bsica, ele faz
operaes matemticas elementares como adio, subtrao, multiplicao e diviso. Tal
como uma calculadora cientfica, ele opera com nmeros complexos, razes quadradas e
potenciaes, logaritmos e operaes trigonomtricas, tais como seno, cosseno e
tangente. Da mesma forma que uma calculadora programvel, possvel armazenar e
recuperar dados, criar, executar e armazenar seqncias de comandos para automatizar o
clculo de equaes importantes, bem como fazer comparaes lgicas e controlar a
ordem na qual os comandos so executados. Assim como as calculadoras mais poderosas
disponveis, o MATLAB permite plotar dados de diversas maneiras, executar lgebra
matricial, manipular polinmios, integrar funes, manipular as funes, etc.
O MATLAB opera nas seguintes janelas:
1)
2)
3)
4)
5)
Comandos
Diretrios e arquivos (workspace).
Histrico de comandos.
Edio de textos.
Edio de grficos.
2. NOES BSICAS
Os operadores bsicos so:
+
Adio,
Subtrao,
*
Multiplicao,
/
Diviso,
^
Exponenciao.
Os clculos efetuados em uma frmula obedecem hierarquia matemtica, ou
seja, primeiro se calcula a exponenciao, depois a multiplicao e diviso e por ltimo a
soma e a subtrao. Caso haja necessidade de prioridade de clculo em outra ordem, se
utilizam parnteses.
Se digitar:
5+5
A resposta ser:
ans =
10
Este resultado significa que a resposta foi armazenada na varivel ans, pois
todos os resultados devem ser armazenados em uma varivel.
1
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
No MATLAB, as variveis so declaradas automaticamente, portanto basta
fazer uma atribuio. Por exemplo:
a=5
a=
5
Neste caso, a varivel a recebe o valor 5, assim o mesmo clculo anterior
pode ser:
b=a+a
b=
10
Obs.: Colocando ; no final de cada sentena, o MATLAB no retorna a resposta.
Se no conseguir se lembrar do nome de uma varivel, pode pedir para o
MATLAB apresentar a lista das variveis utilizadas, utilizando o comando who:
who
Your variables are:
a
ans
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Essa foi a resposta ajuda sobre o tpico SQRT.
Caso no saiba o nome da funo, possvel utilizar o comando lookfor. O
comando lookfor fornece ajuda fazendo uma busca em toda a primeira linha dos tpicos
de ajuda e retornando aqueles que contm a palavra-chave especificada. Por exemplo:
lookfor determinant
DET Determinant.
DET Determinant of square GF matrix.
det_xtx.m: %xreglinear/DET_XTX Determinant of X'X
det_xtx.m: %xreglinear/DET_XTX Determinant of X'X
det_xtx.m: %xreglinear/DET_XTX Determinant of X'X
DET Symbolic matrix determinant.
DRAMADAH Matrix of zeros and ones with large determinant or inverse.
A palavra-chave determinant no um comando MATLAB, mas o comando
lookfor localizou nas descries de ajuda alguns comandos do MATLAB. A partir dessa
informao, o comando help pode ser usado para buscar ajuda sobre um comando
especfico.
3. LIES TUTORIAIS
y = [2; 1; 5]
y=
2
1
5
z = [2 1 0];
a=x+z
a=
3
b=x+y
No pode somar (ou subtrair) uma matriz
linha com uma coluna.
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
??? Error using ==> +
Matrix dimensions must agree.
Pode multiplicar (ou dividir) os elementos de dois
vetores de mesmo tamanho termo por termo,
utilizando um operador especial ( .* , ./, etc.).
a = x.*z
a=
2
b = 2*a
b=
4
x = linspace(0,10,5)
x=
0
2.5000
5.0000
7.5000 10.0000
5.0000
equi-espaados
vetor=valor
7.5000 10.0000
Funes trigonomtricas sin, cos, etc., assim como
funes matemticas elementares sqrt, exp log, etc.,
operam com vetores termo por termo.
y = sin(x);
z = sqrt(x).*y
z=
0
0.9463 -2.1442
2.5688 -1.7203
clear all
close all
clc
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
clear a
clear a b c
janela de comandos.
limpa somente a varivel a.
limpa as variveis a, b e c.
EXERCCIO
1.Crie um vetor t com 100 elementos equi-espaados, no intervalo [0,2].
Depois compute os seguintes valores:
x = sen(t).
y = t.sen(t)
w=(t - 1)/(t + 1).
z = sen(t2)/t2.
3.2. LIO 2: PLOTANDO GRFICOS SIMPLES
Os comandos usados do MATLAB so: plot, axis, xlabel, ylabel, title e print.
Neste exemplo, sero usadas as equaes paramtricas de um crculo unitrio:
x = cos
y = sen 0 2
teta = linspace(0,2*pi,100);
x = cos(teta);
y = sin(teta);
plot(x,y)
axis('equal');
xlabel('horizontal')
ylabel('vertical)
title('Crculo de raio unitrio')
print
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
EXERCCIO
1. Use o comando plot3(x,y,z) para plotar a hlice circular x(t) = sen t, y(t) =
cos t e z(t) = t, 0 t 20.
Plotagem 1D de dados.
% Line plot of a chirp
x=0:0.05:5;
y=sin(x.^2);
plot(x,y);
% Bar plot of a bell shaped curve
x = -2.9:0.2:2.9;
bar(x,exp(-x.*x));
% Stairstep plot of a sine wave
x=0:0.25:10;
stairs(x,sin(x));
% Errorbar plot
x=-2:0.1:2;
y=erf(x);
e = rand(size(x))/10;
errorbar(x,y,e);
% Polar plot
t=0:.01:2*pi;
polar(t,abs(sin(2*t).*cos(2*t)));
% Stem plot
x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
stem(x,y)
%Histogram
x = 0:0.1:pi;
y = sin(x).^2;
hist(y,10)
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
% CIRCLE Procedimento que desenha um crculo unitrio.
% ------------------------------------------teta = linspace(0,2*pi,100);
% Cria o vetor teta.
x = cos(teta);
% Gera coordenadas x.
y = sin(teta);
% Gera coordenadas y.
plot (x, y);
% Plota o crculo.
axis (equal);
% Iguala a escala dos eixos.
title(Crculo de raio unitrio) % Pe um ttulo.
3. Depois de escrito, salve o arquivo como circle.m.
4. Volte ao MATLAB e verifique se possvel executar o seu arquivo, da
forma a seguir:
help circle
CIRCLE Procedimento que desenha um crculo unitrio.
------------------------------------------circle
Plota o mesmo crculo do exemplo
anterior.
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
3. Escreva uma funo do segundo grau na forma y=ax2+bx+c, plote seus valores e
determine suas razes. Determine as razes para a=1, b=-1 e
c=-6; repita o procedimento para a=1, b=0 e c=-16.
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
4. COMPUTAO INTERATIVA
4.1. MATRIZES E VETORES
4.2. ENTRADA
Os valores de uma Matriz so colocados entre colchetes, sendo que, os
elementos de uma linha so separados por espao ou vrgula, e as colunas so separadas
por ponto e vrgula.
Exemplos:
Matriz
Entrada do comando no MATLAB
1 2 5
A
A = [1 2 5;3 9 0]
3 9 0
Obs.: Usa-se a mesma notao para vetores com uma linha ou com uma
coluna.
Continuao
Se a entrada muito longa, pode usar reticncias (...) e continuar a entrada na
outra linha. Reticncias podem tambm ser usadas em instrues de um m-file.
Exemplo:
A = [1/3 5.55*sin(x) 9.35 0.097; ...
3/(x+2*log(x)) 3 0 6.555; ...
(5*x 23)/55 x-3 x*sin(x) sqrt(3)];
4.3. NDICES
Dada uma matriz, os seus elementos podem ser acessados especificando os
ndices de suas linhas e colunas, sendo que A(i, j) representa do elemento aij da matriz A.
A notao : , usada na forma ind1:ind2: pode ser usada para representar o ndice inicial
(ind1) e final (ind2) de uma parte da matriz.
Exemplos:
A = [1 2 3; 4 5 6; 7 8 8]
Entrada da Matriz.
A=
1
4
7
2
5
8
A(2,3)
3
6
8
ans =
6
9
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
A(3,3) = 9
A=
1
4
7
2
5
8
3
6
9
B = A(2:3,1:3)
B=
4
7
5
8
5
8
6
9
B(:,2) = []
B=
4
7
6
9
B = A(2:3,:)
B=
4
7
6
9
Dimenso
A dimenso da matriz determinada automaticamente pelo MATLAB.
Exemplo:
0 0 0
B(2, 3) = 5;
produz, B
0 0 5
C(3,1:3) = [1 2 3];
0 0 0
produz. C 0 0 0
1 2 3
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
4
>> size(a)
ans =
2 3
>> size(a,1)
ans =
2
>> size(a,2)
ans =
3
4.4. MANIPULAO DE MATRIZES
Se pode manipular facilmente a seleo de qualquer elemento de uma matriz,
utilizando vetores como ndices da matriz, para que seja criada uma submatriz a partir de
uma matriz. Tambm, pode-se adicionar, remover ou substituir linhas e/ou colunas de
uma matriz.
Reformando matrizes
Os elementos de uma matriz podem ser colocados dentro de um vetor ou
tambm podem ser agrupados para formar uma matriz com a dimenso diferente da
matriz de origem.
Suponha uma matriz A4x3; com o comando b = A(:), os elementos da matriz
A so armazenados em um vetor coluna b.
J com o comando reshape(A,3,4), transformamos a matriz A3x4. Note que o
nmero de elementos da matriz nunca pode mudar.
Nota: o comando size (A) fornece o nmero de linhas e colunas da matriz.
Transposta
A transposta de uma matriz, obtida colocando-se o nome da matriz seguida
de um apstrofo: matriz A4x3 A3x4.
Inicializao
A inicializao de uma matriz no necessria em MATLAB. Contudo, ela
pode ser til em alguns casos:
% Este comando cria uma matriz mxn onde
A = zeros(m,n)
todos os seus elementos so zeros.
A = ones (m,n)
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
A= 0 1 0
,u=[5 6 7]
e v= 3
0 0 1
Ento
A = [A; u]
produz
A=
1 0 0 2
A = [A,v]
produz
A=
0 1 0 3
0 0 1 4
1005
A = [A, u]
produz
0017
A = [A u]
produz
B = [ ]; B = [B; 1 2 3]
um erro.
produz B = [ 1 2 3 ]
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
um vetor coluna.
muda o formato da matriz.
reshape
eye(3)
ans =
1 0
0 1
0 0
0
0
1
1
1
1
0
0
1
1
1
0
0
0
0
0
4
0
0
0
0
0
4
diag(B)'
ans =
1 1
diag(B,1)'
ans =
1 1
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
b = 0:pi/50:2*pi
c = 2:10
Diviso direita:
Adicionando diviso esquerda( / ), existe tambm a diviso direita( \ ).
Em particular, o comando x = A\ b encontra o valor de b dividido por A. Portanto A\b
quase o mesmo que inv(A)*b, mas mais rpido e mais numericamente estvel do que
computar inv(A)*b.
Ordem de operaes
14
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
possvel fazer a multiplicao, diviso ou exponenciao elemento por
elemento entre matrizes ou vetores de mesmo tamanho colocando um ponto ( . ):
.*
Multiplicao de elemento por elemento,
./
Diviso esquerda de elemento por elemento,
.\
Diviso direita de elemento por elemento,
.^
Exponenciao de elemento por elemento,
.
Transposta no conjugada.
Exemplos:
u.*v
produz [u1v1 u2v2 u3v3 ... ],
u./v
produz [u1/v1 u2/v2 u3/v3 ...], e
u.^v
produz [u1v1 u2v2 u3v3 ...].
O mesmo verdadeiro para matrizes. Para duas matrizes de mesmo tamanho
A e B, o comando C = A.*B produz uma matriz C com elementos Cij = Aij . Bij.
A = [1 2 3;4 5 6;7 8 9];
x = A(1,:)'
x=
1
2
3
x'*x
ans =
14
x*x'
ans =
1 2
2 4
3 6
3
6
9
A*x
ans =
14
32
50
A^2
ans =
30 36
66 81
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
102 126 150
A.^2
ans =
1 4 9
16 25 36
49 64 81
EXERCCIO
1. Faa um tratamento estatstico dos dados nos arquivos marnim e
metsup, incluindo plotagem de dados.
4.8. OPERAES RELACIONAIS
H seis operadores relacionais no MATLAB:
<
<=
>
>=
==
~=
menor que
menor ou igual que
maior que
maior ou igual que
igual
diferente
resulta em k = [0 0 1 0]
resulta em k = [0 0 1 1]
resulta em k = [1 1 0 0]
resulta em k = [1 1 0 1]
resulta em k = [0 0 0 1]
resulta em k = [1 1 1 0]
E lgico
16
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
|
~
xor
OU lgico
NO lgico
OU exclusivo
all
any
exist
isempty
isinf
isfinite
isnan
find
resulta em m = [0 1 0 0],
resulta em n = [0 1 1 1],
resulta em m = [1 0 0 0],
resulta em p = [0 0 0 0].
>> x = [-5 5 2 7]
x=
-5 5 2 7
>> find(x>0)
ans =
2 3 4
>> indices=find(x<=3)
indices =
1 3
>> y=x(indices)
y=
-5 2
17
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
4.10.
seno.
arco seno.
coseno.
arco coseno.
tangente.
arco tangente.
secante.
arco secante.
cosecante
arco cosecante
cotangente
arco cotangente
sinh
asinh
cosh
acosh
tanh
atanh
sech
asech
csch
acsch
coth
acoth
seno hiperblico.
arco seno hiperblico.
cose hiperblico.
arco coseno hiperblico.
tangente hiperblico.
arco tangente hiperblico.
secante hiperblico.
arco secante hiperblico.
cosecante hiperblico.
arco cosecante hiperblico.
cotangente hiperblico.
arco cotangente hiperblico.
Os ngulos devem ser dados em radianos. Todas essas funes, exceto atan2,
pegam um escalar, vetor ou matriz como entrada de argumentos. A funo atan2 pega 2
entradas: atan2(y, x) e retorna o arco tangente do ngulo y/x.
Funes Exponenciais
exp
log
log10
sqrt
Funes Complexas
abs
angle
conj
imag
real
Valor absoluto.
ngulo de fase.
Complexo conjugado.
Parte imaginria.
Parte real.
Funes de aproximao
fix
floor
ceil
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
round
rem
sign
4.11.
FUNES DE MATRIZES
As funes de matrizes so:
expm(A)
logm(A)
sqrtm(A)
1.4142
2.0000
Asqrt = sqrtm(A)
Asqrt =
2.7183 7.3891
20.0855 54.5982
exp_A = expm(A)
exp_A =
51.9690 74.7366
112.1048 164.0738
19
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
CARACTERES DE STRINGS
Todos os caracteres de strings so colocados entre apstrofo. O MATLAB
considera toda string como um vetor linha com 1 elemento para cada caracter. Por
exemplo,
4.12.
20
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
converte strings para uma matriz.
converte caracteres para os correspondentes numricos de acordo com a
tabela ASCII.
cria n espaos em branco.
remove os espaos em branco de uma string.
executa a string como um comando.
encontra uma especificada substring em uma string.
converte nmero inteiros para textos.
verdadeiro (=1) para uma seqncia de caracteres.
verdadeiro (=1) para um caracter alfabtico.
verdadeiro (=1) se o argumento um texto.
converte letras maisculas em letras minsculas.
converte uma matriz para uma string.
converte nmeros para textos (similar ao int2str).
compara duas matrizes e retorna 1 se forem iguais.
compara os primeiros n caracteres de uma dada string.
concatena strings horizontalmente ignorando os espaos em branco.
concatena strings verticalmente ignorando os espaos em branco.
converte letras minsculas em letras maisculas.
char
abs
blanks(n)
deblank
eval
findstr
int2str
ischar
isletter
isstring
lower
mat2str
num2str
strcmp
strncmp
strcat
strvcat
upper
A funo eval
MATLAB possui uma poderosa funo chamada eval, que executa o que tem
no interior de uma string.
Se a string possui um comando para executar esta funo ideal. Por
exemplo,
eval(x = 5*sin(pi/3))
este comando atribui o valor 5*sen(/3) varivel x.
EXERCCIO
1. Entre com as matrizes a seguir:
2 6
1 2
A=
B=
3 9
3 4
5 5
C =
5 3
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
todas as trs opes podem ser especificadas juntas na seguinte seqncia: cor, estilo de
linha e estilo de marcador.
Os dois vetores x e y DEVEM ter o mesmo nmero de elementos. Tamanhos
diferentes entre os dois vetores o caso mais comum de erro com o uso do comando plot.
Se a funo plot for utilizada sem o componente x, ela considera que o valor
das abscissas (x) so os valores dos ndices i de y ( i ). Se por exemplo
y = [2 3 5 9], o comando plot(y) ir plotar os pontos: (1, 2),(2, 3),( 3, 5),(4, 9).
5.2. OPES DE ESTILO
y
m
c
r
g
B
W
K
Cores
yellow
magenta
cyan
red
green
blue
white
black
Estilo de linha
contnuo
-tracejado
..
pontilhado
-.
trao ponto
none
sem linha
Estilo de marcao
+
sinal de mais
o
crculo
*
asterisco
x
marcao de x
.
marcao de ponto
^
circunflexo
square
quadrado
diamond losango
legend(LineStyle1, string1,...)
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
legend(...,pos)
legend off
23
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
H dois diferentes modos de gerar grficos sobrepostos no MATLAB: o plot
e o hold.
Mtodo 1: Usando o comando plot.
Se toda a seleo de dados est disponvel, o comando plot com mltiplos
argumentos pode ser usado para gerar grficos sobrepostos. Por exemplo, se tiver trs
selees de dados (x1,y1), (x2,y2) e (x3,y3), o comando plot(x1, y1, x2, y2, :, x3, y3, o),
desenha (x1,y1) com uma linha slida, (x2,y2) com uma linha pontilhada e (x3,y3) como
vrios pontos separados em forma de crculos (o). Note-se que todos os vetores devem
ter o mesmo tamanho.
Se todos os componente (x1,y1), (x2,y2) e (x3,y3), tiverem o mesmo tamanho,
ento conveniente fazer uma matriz de X vetores e uma matriz de Y vetores de modo
que X = [x1 x2 x3] e Y = [y1 y2 y3], assim o comando plot(X,Y) ir desenhar os trs
grficos na mesma figura com cores diferentes.
Exemplo:
A seqncia de comandos abaixo ir gerar o grfico a direita.
x = [1 2 3; 4 5 6; 7 8 9; 10 11 12]
x=
1 2 3
4 5 6
7 8 9
10 11 12
y = [2 2 2;5 5 5;8 8 8;11 11 11]
y=
2 2
5 5
8 8
11 11
plot(x,y)
2
5
8
11
24
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
hold on
y2 = x; plot(x,y2,'r--')
y3 = x-(x.^3)/6+(x.^5)/120;
plot(x,y3,'go')
axis([0 5 -1 5])
hold off
%
%
%
%
%
%
Congela a figura.
Desenha (x,y2) com uma linha tracejada.
Calcula y3.
Desenha (x,y3) com crculo.
ajusta os eixos do grfico.
Descongela a figura.
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
scatter
semilogx
semilogy
stairs
stem
Resultado
f(t) = t sen(t), 0 t 10
fplot(x.*sin(x), [0 10*pi])
Fplot
Note que a funo para ser desenhada
deve ser escrita como uma funo de x.
x = e t, y = t, 0 t 2
Semilogx
x = t, y = e t, 0 t 2
Semilogy
x = e t, y = 100 + e2t, 0 t 2
Loglog
26
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
r2 = 2 sen (5t), 0 t 2
Polar
r2 = 2 sen (5t), 0 t 2
x = r cos (t), y = r sen (t);
Fill
Bar
aprox = x x3/3!, 0 t 2
error = aprox sen(x).
Errorbar
x = 0: .1: 2;
aprx2 = x x.^3/6;
er = aprx2 sin(x);
errorbar (x, aprx2, er);
27
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Populao mundial por continentes
cont = char(sia, Europa, frica, ...
Amrica do Norte, Amrica do Sul);
pop = [3332; 696; 694; 437; 307];
barh (pop)
Hist
for i = 1:5,
gtext (cont (i, : ));
end
xlabel (Populao em milhes);
title (Populao Mundial (1992), ...
Fontsize, 18);
-x
y1 = e sen(x), 0 t 10
y2 = e x
Plotyy
Area
x = 1: .1:10;
y1 = exp(-x).*sin(x);
y2 = exp(x);
Ax = plotyy (x, y1, x, y2);
hy1 = get(Ax(1),ylabel);
hy2 = get(Ax(2),ylabel);
set (hy1, string,e^-x .sen(x));
set (hy2, string,e^x);
y = sen(x)/x, -3 x 3
Pie
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
= e-t/5 sen t, 0 t 2
Stem
Stairs
z = cos + i sen , 0 2
Compass
th = -pi: pi/5:pi;
zx = cos(th);
zy = sin(th);
z = zx + i*zy;
compass (z);
y = t sen t, 0 t 10
Comet
29
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
z = - (x2/2) + xy + y2, -5 x 5
-5 y 5
Contour
r = -5: .2:5;
[X, Y] = meshgrid (r, r);
Z = -.5*X.^2 + X.*Y + Y.^2;
cs = contour (X ,Y, Z);
clabel (cs);
z = x2 + y2 5sen(xy),
-2 x 2, -2 y 2
Quiver
r = -2: .2: 2;
[X, Y] = meshgrid (r, r);
Z = X.^2 + Y.^2 5.*sin(X.*Y);
[dx, dy] = gradient (Z, .2, .2);
quiver (X, Y, dx, dy, 2);
z = x2 + y2 5sen(xy),
-2 x 2, -2 y 2
Pcolor
r = -2: .2: 2;
[X, Y] = meshgrid (r, r);
Z = X.^2 + Y.^2 5.*sin(X.*Y);
pcolor (Z), axis(off );
shading interp
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
contornos automaticamente, especificando os pontos de luz, interpolando cores e textura
e mesmo imagens digitando help graph3d no comando se obtm uma lista de funes
viveis para grficos 3D gerais. Aqui est uma lista dos mais comuns:
plot3
stem3
bar3
bar3h
pie3
comet3
fill3
contour3
guiver3
scatter3
mesh
meshc
meshz
surf
surfc
surfl
trimesh
trisurf
slice
waterfall
cylinder
sphere
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Exemplo: Plotar a funo z = x2 y2,
entre o domnio de 4 x 4 e 4 y 4.
Para fazer isso, ns primeiro formamos 25 pontos na grade. Ns podemos
criar duas matrizes X e Y sendo cada uma de tamanho 5 x 5 e escrever as coordenadas xy
de cada ponto dessas matrizes. Ns podemos ento avaliar z com o comando z = X.^2
Y.^2 Criar as duas matrizes X e Y muito mais fcil com o comando meshgrid:
rx = 0:4;
ry = -4:2:4;
[X,Y] = meshgrid(rx,ry);
X=
0
0
0
0
0
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
Y=
-4
-2
0
2
4
-4
-2
0
2
4
-4
-2
0
2
4
-4 -4
-2 -2
0 0
2 2
4 4
% cria um vetor rx = [0 1 2 3 4]
% cria um vetor ry = [-4 2 0 2 4]
% cria um grid de 25 pontos e armazena
essas % coordenadas em X e Y.
4
4
4
4
4
Comando
Desenho de uma curva paramtrica
espacial:
Resultado
32
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Desenho de 4 polgonos preenchidos
com 3 vrtices cada:
fill3
X = [0 0 0 0; 1 1 1 1; 1 1 1 1];
Y = [0 0 0 0; 4 4 4 4; 4 4 4 4];
Z = [0 0 0 0; 1 1 1 1; -1 1 1 1];
fill3 (X, Y, Z, rand (3, 4));
view (120, 30)
Desenho de linhas de contorno 3D de:
Z = -5 / (1 + x2 + y2), -3 x 3,
-3 y 3.
contour3
surf
x 2 y2
4
, -5 x 5,
u = -5: .2: 5;
[X, Y] = meshgrid (u, u);
Z = cos(X).* cos(Y).* ...
exp(-sqrt(X.^2 +Y.^2)/4);
surf(X, Y, Z)
z = cos x . cos y . e
-5 y 5
surfc
x 2 y2
4
, -5 x 5,
u = -5: .2: 5;
[X, Y] = meshgrid (u, u);
Z = cos(X).* cos(Y).* ...
exp(-sqrt(X.^2 +Y.^2)/4);
surfc (Z)
view (-37.5, 20)
axis(off )
33
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
surfl
mesh
x 2 y2
z = cos x . cos y . e
, -5 x 5,
-5 y 5
u = -5: .2: 5;
[X, Y] = meshgrid (u, u);
Z = cos(X).* cos(Y).* ...
exp(-sqrt(X.^2 +Y.^2)/4);
surfl (Z)
shading interp
colormap hot
z = -5/(1+x2+y2), -3 x 3,
-3 y 3.
4
meshz
z = -5/(1+x2+y2), -3 x 3,
-3 y 3.
waterfall
34
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Populao mundial por continente.
% Popdata: As, Eu, Af, NA, AS
pie3
stem3
ribbon
sphere (20)
ou
[x, y, z] = sphere (20);
surf (x, y, z);
35
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Um cilindro gerado por
cylinder
r = sen (3 z) + 2,
0 z 1, 0 2.
z = [0: .02: 1];
r = sin(3*pi*z) + 2;
cylinder (r)
Pedaos de uma funo volumtrica.
(x, y, z) = x2 + y2 z2;
-3 x 3, -3 y 3, -3 z 3.
slice
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
% Dado os vetores x, y, e z, gera a matriz de dados Zi da interpolao para ajustar uma
superfcie
%------------------------------------------------------------------------------------------------------xv=2*rand(1,100) 1;
yv=2*rand(1,100) 1;
zv=3./ (1+ xv.^2 + yv.^2)
stem3(xv, yv, zv)
xi=linspace(-1, 1, 30);
espaados
yi=xi;
espaados
%este o vetor x
%este o vetor y
%este o vetor z
%mostra os dados como um grfico stem
%cria xi com os dados uniformemente
%cria yi com os dados uniformemente
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
(rodando o Windows) e MACs se pode, alternativamente, ativar a janela figure (trazer
frente dando um click na janela) e ento selecionar print a partir do menu.
A figura pode tambm ser salva em um arquivo especfico no formato Post
Script ou Encapsulated Post Script (EPS). Estes formatos esto disponveis para
impressoras preto e branco bem como para impressoras coloridas. O Post Script inclui
ambos LEVEL 1 e LEVEL 2 Post Script. O comando que salva grficos para um arquivo
tem a forma:
Print ddevicetype options filename
onde devicetype for postscript printers pode ser um dos seguintes:
devicetype
ps
psc
ps2
psc2
Descrio
PostScript preto e branco
PostScript colorido
PostScript preto e branco nvel 2
PostScript colorido nvel 2
devicetype
eps
epsc
eps2
epsc
Descrio
EPSF Preto e Branco
EPSF colorido
EPSF Preto e Branco nvel 2
EPSF colorido nvel 2
Agora, possvel salvar um arquivo grfico como uma lista de comandos (um
M-file), restaurar o grfico depois, e modific-lo. Para salvar os grficos na janela ativa
atual, digite:
Print filename dmfile
Depois, para abrir o grfico novamente, simplesmente executar o arquivo
criado.
O formato Adobe Illustrator completamente til para se dar um retoque ou
modificar a figura de forma que fica muito difcil faz-lo no MATLAB. claro, preciso
38
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
ter acesso ao Adobe Illustratror para estar apto a abrir e editar o grfico salvo. O aspecto
mais desagradvel das verses anteriores s do MATLAB 5 era a falta de facilidade para
escrever subescritos e sobrescritos e misturar fontes nas legendas. A partir do MATLAB
5 este problema foi resolvido incorporando um subconjunto de comandos LATEX, os
quais podem ser usados em rtulos e textos. Se no conhecer LATEX, vale a pena
consultar o MATLAB helpdesk para ver a lista de comandos e suas sadas.
39
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
6. PROGRAMANDO NO MATLAB: FUNES E PROCEDIMENTOS
Para o estudo deste captulo, o essencial saber a diferena entre uma funo
e um procedimento. Ambos so subrotinas, que so uma seqncia de comandos que so
dados ao comutador pelo programador, mas a funo possui entradas e sadas e o
procedimento no.
Algumas vezes chamaremos os procedimentos de script files.
6.1. PROCEDIMENTOS
Sempre que escrever um procedimento basta escrever os mesmos comandos
que seriam digitados na rea de trabalho (parte interativa do MATLAB) dentro de um
arquivo *.m.
interessante fazer um procedimento sempre que houver um grupo de
comandos muito grande e preciso execut-los vrias vezes. Armazenando este grupo de
comandos num arquivo script, basta escrever o nome do arquivo na rea de trabalho e o
mesmo grupo de comandos ser executado.
Cuidado:
Nunca nomeie um arquivo script com o mesmo nome de uma varivel
que ele computa. Quando o MATLAB procura por um nome, ele
busca primeiro na lista de variveis existentes na rea de trabalho, ou
seja, se existir uma varivel com o mesmo nome de um arquivo script
ele jamais ser aberto.
O nome o arquivo deve comear com uma letra e os restantes devem
ser dgitos, exceto o ponto ( . ). Se pode escrever nomes longos, mas o
MATLAB ir pegar somente os primeiros 19 caracteres.
necessrio ateno com as variveis nos procedimentos, porque
todas as variveis declaradas ficaro na rea de trabalho a menos que
limpe as variveis ou a rea. Evitar nomes que coincidam com as
funes embutidas. bom checar se os nomes propostos j existem.
Se pode fazer isso com o comando exist(nome), que retornar zero
se no houver nada com este nome.
6.2. FUNES
Para se fazer uma funo, deve-se fazer quase a mesma coisa do que com o
procedimento. A nica diferena que a funo necessita de uma linha de definio com
a seguinte sintaxe:
function [variveis_de_sada] = nome_da_funo (variveis_de_entrada);
Exemplos:
Linha de Definio da funo
function [rho, H, F] = motion(x, y, t);
function [theta] = anguloTH(x, y, t);
function theta = THETA(x, y, t);
function [] = circulo(r);
function circulo(r);
Nome da funo
motion.m
anguloTH.m
THETA.m
circulo.m
circulo.m
40
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Cuidado:
A palavra function deve ser escrita em letras minsculas. Um erro muito
comum iniciar a declarao com Function.
6.3. CRIANDO E EXECUTANDO UMA FUNO
Escreva um arquivo funo para desenhar um crculo de um raio especfico,
com o raio sendo a entrada para a funo. Pode escrever um novo arquivo funo ou
modificar o procedimento da lio 3 (melhor).
1. Abra o arquivo circle.m:
Selecione a opo Abrir (Open) do menu Arquivo (File).
D um clique duplo no arquivo na caixa de dilogo.
2. Edite o arquivo circle.m da lio 3, conforme indicado abaixo:
function [x,y] = circlefn(r);
% CIRCLE Funo para desenhar um crculo de raio r.
% Arquivo escrito pelo Grupo Pet.
% Input: r = raio especificado.
% Output: [x,y] = coordenadas x e y dos pontos dados.
% ------------------------------------------teta = linspace(0,2*pi,100);
% Cria o vetor teta.
x = r*cos(teta);
% Gera coordenadas x.
y = r*sin(teta);
% Gera coordenadas y.
plot (x, y);
% Plota o crculo.
axis (equal);
% Iguala a escala dos eixos.
title(Crculo de raio r = , num2str(r)]) % Pe um ttulo com o valor de r.
[cx,cy] = circlefn(2.5);
circlefn(1);
circlefn(R^2/(R+5*sin(R)));
41
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
6.4. CARACTERSTICAS ESPECFICAS DA LINGUAGEM
Foram discutidas vrias caractersticas da linguagem do MATLAB atravs de
muitos exemplos nas sees anteriores. preciso prestar uma ateno especial ao uso
formal de sinais de pontuao e diferentes delimitadores, operadores, especialmente a
ordem dos operadores ( um ponto (.) precedendo os operadores aritmticos, e os
operadores relacionados para controle de fluxo, o MATLAB provido de laos for e
while, e if-elseif-eslse e um switch-case-otherwise. Todo o controle de fluxo das
declaraes devem terminar com a correspondente declarao end. Ns agora
discutiremos o controle de fluxo e algumas outras caractersticas da linguagem. Veja a
ajuda on-line para mais detalhes.
6.5. O USO DE COMENTRIO PARA CRIAR AJUDA ON-LINE
Como j foi mostrado na discusso sobre funes, as linhas de comentrios
no princpio (antes de qualquer declarao executvel) de um script ou uma funo so
usadas pelo MATLAB como a ajuda on-line sobre o arquivo. Este automaticamente cria a
ajuda on-line para funes escrita pelo usurio. Isto uma boa idia para reproduzir a
linha de definio de funo sem a palavra function entre essas primeiras poucas linhas
de comentrio de forma que a sintaxe de execuo da funo exibida pela ajuda on-line.
O comando lookfor procura o argumento string na primeira linha comentada dos arquivos
M. Portanto, de acordo com a conveno um pouco confusa das funes embutidas do
MATLAB, se deveria escrever o nome do script ou funo no caso acima com letras
seguidas por uma curta descrio com palavras chaves, como a primeira linha comentada.
Ver o exemplo abaixo.
% SOLVEX resolve uma matriz de equao 3x3 com parmetro r.
6.6. CONTINUAO
Trs pontos consecutivos (...) ao trmino de uma linha denota continuao.
Logo, se digitar um comando que no cabe em uma nica linha, se pode dividi-lo em
duas ou mais linhas usando os trs pontos no final de cada linha exceto na ltima linha.
Exemplos:
A = [1 3 3 3; 5 10 2 20; 3 5 ...
10 2; 1 0 0 9];
x = sin(linspace(1,6*pi,100)) .* cos(linspace(1,6*pi,100)) + ...
0.5*ones(1,100) ;
plot(comprimento do tubo, presso do fluido,: ,comprimento do tubo, ...
presso terica, -)
No se pode, entretanto, usar o recurso continuao dentro de um caracter
string. Por exemplo, digitando
logo = Eu no sou somente o Presidente da empresa, ...
mas tambm um cliente;
42
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
for m = 1:100
Num = 1/(m+1)
end
O contador no lao for pode tambm ser especificado: for = m:k:n para
avanar o contador i em relao a k a cada vez (no exemplo abaixo n vai de 100 a 0 da
seguinte forma 100, 98, 96, ..., etc.). Se pode ter laos for abrigados, isto , colocar laos
for dentro de laos for. Todo for, entretanto, deve ser terminado com um end.
Exemplo 2:
Lao While:
Um lao while usado para executar uma declarao ou um grupo de
declaraes para um nmero indefinido de vezes at que a condio especificada por
while no seja satisfeita. Por exemplo:
% Vamos encontrar todos as potncias de 2 abaixo de
v=1; i=1;
while num < 10000
num = 2^i ;
v = [v ; num] ;
i = i +1 ;
end
10000
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
k=i;
elseif (i >1) & (j == 20)
k = 5*i + j ;
else
k = 1;
end
Se pode colocar a declarao if, contanto que se feche o lao com a
declarao end. Se pode colocar todos os trs tipos de laos, em uma combinao.
Switch-case-otherwise:
Essa construo ( uma caracterstica do MATLAB 5.x) que prove uma outra
ramificao lgica para computao. Uma varivel usada como uma chave e os valores
da varivel fazem com que os diferentes casos sejam executados. A sintaxe geral :
switch varivel
case valor1
1 bloco de comandos
case valor2
2 bloco de comandos
otherwise
ltimo bloco de comandos
end
Neste exemplo, o primeiro bloco de comandos executado se a varivel for
igual ao valor 1; o segundo bloco de comandos executado se a varivel for igual ao
valor 2. Caso a varivel no combine com nenhum dos casos o ltimo bloco de comandos
executado.
O switch pode ser usado como uma varivel numrica ou uma varivel string.
Vamos ver um exemplo mais concreto usando uma varivel string com o comando
switch.
switch cor
case vermelho
c = [1 0 0];
case verde
c = [0 1 0];
case azul
c = [0 0 1];
otherwise
error(escolha de cor invlida)
end
Break
O comando break dentro de um lao for ou while termina a execuo do lao,
at mesmo se a condio do lao for verdadeira.
44
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Exemplos:
1.
for i = 1: length (v)
if u(i) < 0
break
end
a = v(i) + .........................
end
2.
while 1
n = input(Entre com o n mximo de interaes )
if n <= 0
break
% termina execuo do lao
end
for i=1:n
.....
% faz alguma coisa
end
end
Caso haja um lao dentro de outro, o comando break finaliza somente o lao
mais interno.
Error
O comando error (mensagem) dentro de uma funo ou um script aborta a
execuo, mostra uma mensagem de erro e retorna o controle para o teclado.
Exemplo:
function c = crossprod (a,b);
% crossprod (a,b) calcula o produto vetorial axb.
if nargin~=2
% se no h 2 argumento de entrada
error (Desculpe, precisa da entrada de 2 vetores)
end
if length(a)==2
% inicia os clculos
......
end
Return
O comando return simplesmente retorna o controle da funo chamada.
Exemplo:
function animatebar(t0, tf, x0);
% animatebar anima um pndulo
:
disp(Voc deseja ver o retrato da fase?)
ans = input (Digite 1 para SIM, e 0 para NO); % descrio abaixo
if ans= = 0
% se o input 0
return
% sair da funo
else
45
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
plot(x,...)
end
Este comando pode ser usado para escrever programas interativos amigveis
no MATLAB.
Keyboard
O comando keyboard dentro de um script ou uma funo retorna o controle
para o teclado no exato ponto onde o comando ocorre. A execuo da funo ou o script
no esto terminados. O prompt da janela de comandos >>, muda para k>> para
mostrar o status especial. Neste ponto, se pode checar variveis j computadas, mudar
seus valores e editar qualquer comando MATLAB vlido. O controle retornado
funo digitando a palavra return no prompt especial k>> e pressionando enter.
Este comando til para funes que eliminam erros (debugging functions).
s vezes, em grandes algoritmos, se pode querer checar alguns resultados intermedirios,
plot-los e ver se a colocao dos dados no algoritmo est seguindo uma ordem
logicamente correta, e ento deixar que a execuo continue.
Exemplo:
% EXKEYBRD: um arquivo de script como exemplo de comando no
% teclado
% -----A = ones(10)
for i=1:10
46
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
disp(i)
A(:,i) = i*A(:,i);
if i= =5
keyboard
end
%
%
%
%
mostra o valor de I
remaneja a i-sima coluna de A
quando i = 5
retorna o controle do teclado
end
Durante a execuo do script acima (exekeybrd.m) o controle retornado ao
teclado quando o valor do contador i alcana 5. A execuo do procedimento recomea
aps o controle ser retornado ao arquivo script digitando return no prompt especial
k>>.
Menu
O comando menu(Nome do menu, opo 1,opo 2...) cria um menu na
tela com o Nome do menu e lista as opes no menu. O usurio pode selecionar
qualquer opo pelo mouse ou pelo teclado, dependendo do computador. A
implementao desse comando em MACs e PCs cria menus de janelas interessantes com
botes.
Exemplo:
% Plotando um crculo
r = input(Entre com o raio desejado: );
theta = linspace(0, 2*pi, 100);
r = r*ones(size(theta)); %faz r do mesmo tamanho de theta.
coord = menu(Plotagem de Crculo, Cartesian, Polar);
if coord == 1
% Se a primeira opo do menu for
% selecionada
plot(r.*cos(theta), r.*sin(theta))
axis(square)
else
% Se a segunda opo do menu for
% selecionada
polar(theta, r);
end
No exemplo acima, o comando menu cria um menu com o nome Plotagem de
Crculo e duas opes: Cartesiano e Polar. As opes so internamente numeradas.
Quando o usurio seleciona uma das opes, o nmero correspondente passado para a
varivel coord. O lao if-else no script mostra (atravs do comando menu) o que fazer
com cada opo.
Pause
Este comando temporariamente pra o processo em decorrncia. Pode ser
usado com ou sem um argumento opcional:
em
47
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
Grupo PET Engenharia Eltrica UFMS - Campo Grande MS Maio 2004 (2. Ed)
Joseph Harari Instituto Oceanogrfico da Universidade de So Paulo joharari&usp.br
especificaes no argumento-string de fprintf. No comando acima, \n insere uma nova
linha, %4i insere um campo ntegro de largura 4, e %8.2f insere um ponto fixo de largura
8 e 2 casas decimais aps a vrgula. O arquivo de sada, Temperature.table, mostrado
abaixo. Note que a matriz de dados t tem duas filas, no qual o arquivo de sada escreve a
matriz em 2 colunas. Isto porque t lida columnwise (coluna sbia) e ento escrito no
formato especificado (2 linhas em cada coluna).
Temperature Table
~~~~~~~~~~~~~~
Fahrenheit
Celsius
-40
-40.00
-35
-37.22
-30
-34.44
-25
-31.67
-20
-28.89
-15
-26.11
-10
-23.33
-5
-20.56
0
-17.78
5
-15.00
10
-12.22
15
-9.44
20
-6.67
25
-3.89
30
-1.11
35
1.67
40
4.44
45
7.22
50
10.00
55
12.78
60
15.56
65
18.33
70
21.11
75
23.89
80
26.67
85
29.44
90
32.22
95
35.00
100
37.78
49