Escolar Documentos
Profissional Documentos
Cultura Documentos
Matlab Basico PDF
Matlab Basico PDF
MATLAB BSICO
Comandos
Escola de Qumica/UFRJ
Novembro/2001
NDICE
1. INTRODUO
1.1. Objetivo do texto
1.2. Conceito do software MATLAB
1.3. Notao utilizada
2. AMBIENTE DE TRABALHO
2.1. Janela de comandos
2.2. Acesso aos recursos de ajuda
4. VARIVEIS
4.1. Atribuio de variveis
4.2. Entrada e sada de valores para as variveis
4.3. Gerenciamento das variveis
5. PROCESSAMENTO MATRICIAL
5.1. Criao de matrizes e vetores
5.2. Operaes matriciais
5.2.1. Operadores de lgebra linear
7. GRFICOS
7.1. Grficos 2-D
1. INTRODUO
The
Mathworks.
Este
ambiente
LABoratory),
de
desenvolvido pela
programao
permite
financeira,
etc.).
Apesar
da
sua
grande
versatilidade,
Exemplo 1.1:
O comando clc apaga a tela da janela de comando
Exemplo 1.2:
>> sin(pi/2)
ans =
1
Exemplo 1.3:
Pode-se fechar o MATLAB atravs da barra de menu: File > Exit MATLAB.
2. AMBIENTE DE TRABALHO
Observao: Pode ser que um usurio anterior tenha alterado a disposio das
janelas e alguns dos elementos citados aqui no estejam presentes na sua tela.
No entanto, caso seja necessrio, todos os componentes apresentados podem
ser visualizados atravs da alternativa View na barra de menu.
Exemplo 2.1:
Para calcular a raiz quadrada de 2 devemos digitar na linha de comando:
>> sqrt(2)
Exemplo 2.2:
>> log10(100) , sqrt(144)
ans =
2
ans =
12
Exemplo 2.3:
>> log10(100) ...
, sqrt(144)
ans =
2
ans =
12
] e [
Exemplo 2.4:
>> help det
DET
Determinant.
Exemplo 2.5:
>> lookfor integration
CUMTRAPZ Cumulative trapezoidal numerical integration.
TRAPZ
Exemplo 3.1:
>> pi
ans =
3.1416
>> pi/pi
ans=
1
>> pi/10000
ans=
3.1416e-004
Formatos numricos
Formato
Expresso 10*pi
format
format short
format long
format short e
31.4159
31.4159
31.41592653589793
3.1416e+001
Descrio
default, igual a format short
4 casas aps a vrgula
14 casas aps a vrgula
notao cientfica com 4 casas
format long e
format short g
format long g
format hex
format bank
Format +
format rat
3.141592653589793e+001
31.146
31.4159265358979
403f6a7a2955385e
31.42
+
3550/113
Exemplo 3.2:
No formato default
>> pi
ans =
3.1416
Operadores matemticos
Operao
Soma
Subtrao
Multiplicao
Diviso
Potenciao
Smbolo
+
*
/
^
Exemplo 3.3:
Para calcular a soma das parcelas 203 + 416 + 256, deve-se digitar na
linha de comando:
>> 203+416+256
Exemplo 3.4:
A determinao de 2 elevado a 10 dividido por 5, pode ser calculada por:
>> 2^10/5
Resultando em:
ans =
204.8
Exemplo 3.5:
Determinar o valor da expresso:
(9,8 0,8)
( 4 50)
( 245/154 )
Exemplo 3.6:
>> sqrt(-1)
ans =
0 + 1.0000i
Exemplo 3.7:
Somar 2 + 3i com 5 7i
>> (2+3*i)+(-5-7*i)
ans =
-3 - 4.0000i
Exemplo 3.8:
Multiplicar 7i por 3 + 7i
>> 7*i*(-3-7*i)
ans =
-49 - 21.0000i
3.4. Funes
O MATLAB possui um grande nmero de funes matemticas prdefinidas. Sua utilizao imediata, como mostram os exemplos abaixo:
Exemplo 3.9:
Exemplo 3.10:
Calcular o seno de 3 / 2 :
>> sin(3*pi/2)
ans =
-1
Funes trigonomtricas
Funo
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
sinh(x)
cosh(x)
tanh(x)
asinh(x)
acosh(x)
atanh(x)
Descrio
Seno
co-seno
Tangente
arco-seno
arco-co-seno
arco-tangente
seno hiperblico
co-seno hiperblico
tangente hiperblica
arco-seno hiperblico
arco-co-seno hiperblico
arco-tangente hiperblico
Descrio
exponencial
logaritmo neperiano
logaritmo de base 10
logarimto de base 2
raiz quadrada
Funes complexas
Funo
abs(x)
angle(x)
conj(x)
real(x)
imag(x)
Descrio
valor absoluto
angulo de fase em radianos
conjugado complexo
parte real
parte imaginria
Funes de truncamento
Funo
Descrio
arredondamento na direo do 0
arredondamento na direo de
arredondamento na direo de +
arredondamento na direo do inteiro mais prximo
resto da diviso de x por y
sinal de x (-1, 1 ou 0)
fix(x)
floor(x)
feil(x)
round(x)
rem(x,y)
sign(x)
Descrio
decomposio em fatores primos
verificao de nmero primo (= 1, se primo)
lista de nmeros primos menores que x
MDC entre x e y
MMC entre x e y
Descrio
funo de Bessel do primeiro tipo
funo de Bessel do segundo tipo
funo de Bessel do terceiro tipo
funo modificada de Bessel do primeiro tipo
funo modificada de Bessel do segundo tipo
beta(x,y)
erf(x)
erfc(x)
Gamma(x)
funo Beta
funo erro
funo erro complementar
funo gama
4. VARIVEIS
Exemplo 4.1:
>> A1=3
A1 =
3
>> Bt=3^3
Bt =
27
>> expr=log(A1)/Bt
expr =
0.0407
Exemplo 4.2:
Ao digitarmos na linha de comando:
>> Logaritmo=log(10)
Mas se digitarmos:
>> exponencial=exp(1);
Exemplo 4.3:
>> TK=input('Digite o valor da temperatura em K');
>> TC=TK-273.15
Para indicar o valor de uma varivel na tela, basta apenas digitar o nome
da varivel, e depois teclar enter. Outra opo utilizar o comando disp:
disp(varivel)
Exemplo 4.4:
>> P=30
P =
30
>> disp(P)
30
Exemplo 4.6:
>> P=1.0133e5;
>> T=273.15;
>> R=8314;
>> V=R*T/P
V =
22.4116
>> who
Your variables are:
P
Exemplo 4.7:
>> P=1.0133e5;
>> T=273.15;
>> R=8314;
>> V=R*T/P
V =
22.4116
>> whos
Name
Size
Bytes
Class
1x1
double array
1x1
double array
1x1
double array
1x1
double array
Exemplo 4.8:
>> P=1.0133e5;
>> T=273.15;
>> R=8314;
>> V=R*T/P
V =
22.4116
>> who
Your variables are:
P
>> clear P R
>> who
Your variables are:
T
5. PROCESSAMENTO MATRICIAL
capacidade
de
processamento
matricial
uma
caracterstica
de
maneira
semelhante
que
as
linguagens
de
programao
Exemplo 5.1:
1 2
Efetuar a seguinte atribuio: A =
1 5
>> A(1,1)=1; , A(1,2)=2; , A(2,1)=-1; , A(2,2)=5;
>> A
A =
1
-1
Neste caso, cada elemento da matriz identificado de acordo com o seu par de
ndices.
No entanto, o MATLAB possui uma forma particular mais direta e
simplificada para a entrada de matrizes:
Exemplo 5.2:
1 2
Efetuar a seguinte atribuio: A =
1 5
>> A=[ 1
2 ; -1
5 ];
>> A
A =
1
-1
Exemplo 5.3:
2
Efetuar as atribuio ao lado: c = e d = [ 2
0
>> c=[ 2
3 ]
; 0 ]
c =
2
0
>> d=[ pi , pi^2 , pi^3 ]
d =
3.1416
9.8696
31.0063
Operadores matriciais
Operao
Sintaxe
Descrio
Soma
C = A + B
Subtrao
C = A - B
Multiplicao
C = A * B
Transposio
C = A
Cij = A ji
Exemplo 5.4:
Sejam as seguintes matrizes e vetores:
1 4
A=
,
0 5
2 2
B=
,
3 1
2
c=
3
2
d= 3
4
b) A + B
c) A B c
d) d T
e) c d
-6
15
-5
>> A+2*B
ans =
3
>> A*B*c
ans =
10
15
>> c+d
??? Error using ==> +
Matrix dimensions must agree.
Exemplo 5.5:
>> 2 + [
-5
ans =
3
-3
Descrio
inv(X)
inverso de matrizes
det(X)
clculo do determinante
eig(X)
rank(X)
Exemplo 5.6:
1 2
Seja a seguinte matriz quadrada: A =
3 4
2 ; 3
4 ]
A =
1
1.0000
1.5000
-0.5000
0.0000
1.0000
>> A(1,1)*A(2,2)-A(2,1)*A(1,2)
ans =
-2
Operao
Sintaxe
Descrio
Soma
C = A + B
Subtrao
C = A - B
Multiplicao
C = A .* B
Potenciao
C = A .^ B
Exemplo 5.7:
Sejam as seguintes matrizes e vetores:
2 2
B=
,
3 1
1 4
A=
,
0 5
2
c=
3
2
d= 3
4
4 ;
>> B=[ 2
-2 ; 3
5 ];
-1 ];
>> c=[ 2 ; 3 ];
>> d=[ 2 ; 3 ; -4 ];
16
25
>> A./B
ans =
0.5000
-2.0000
-5.0000
>>2.^c
ans =
4
8
>>d.^10
ans =
1024
59049
1048576
Exemplo 5.8:
>> a=[ 1 2 3 4 ];
>> sqrt(a)
ans =
1.0000
1.4142
1.7321
2.0000
matricial
apresentadas,
atravs
de
uma
linguagem
de
permitida
Exemplo 5.9:
>> ones(2,3) , ones(2)
ans =
1
ans =
Exemplo 5.10:
>> zeros(3) , zeros(1,10)
ans =
0
ans =
0
Exemplo 5.11:
>> eye(2) , eye(2,3)
ans =
ans =
Exemplo 5.12:
>> rand(1,10) , randn(1,10)
ans =
0.6154
0.7919
0.9218
0.7382
0.1763
ans =
-0.1867
0.7258
-0.5883
2.1832
-0.1364
Exemplo 5.13:
>> diag([1,2,3])
ans =
1
ou
size(A,2)
Exemplo 5.14:
>> M = [ 1 2 ; 3 4 ; 4 0 ] , v = [ 2 3 1 4 0 0 ]
M =
1
v =
1
3
ans =
2
>> length(v)
ans =
6
Este comando gera um vetor linha cujos elementos formam uma seqncia de
nmeros inteiros entre lim_1 e lim_2.
Exemplo 5.15:
>> v = 2:10
v =
2
10
Exemplo 5.16:
>> v1 = 2:2:10 , v2 = 4:-0.5:3
v1 =
2
10
v2 =
4.0000
3.5000
3.0000
Exemplo 5.17:
>> M = [ 1:4 ; 4:-1:1 ]
M =
1
Exemplo 5.18:
>> u = linspace(0,3,5)
u =
0
0.7500
1.5000
2.2500
3.0000
Exemplo 5.19:
>> u = [ 1 2 3 ]; , v = [ 3 ; 6 ; 7 ];
Exemplo 5.20:
O comando abaixo soma o elemento presente na posio (2,2) da matriz
com a segunda componente do vetor
>> M = [ 1 3 ; 4 6 ]; , x = [ 1 3 4 6 ];
>> M(2,2)+x(2)
ans =
9
Exemplo 5.21:
Este exemplo ilustra a apresentao do conceito aplicado a um vetor:
>> v = [ 1 4 7 4 7 8 9 5 8 5 4 ]
v =
1
w =
8
z =
4
Exemplo 5.22:
Um procedimento semelhante pode ser aplicado para matrizes:
>> M = [ 1 4 7 ; 4 7 8 ; 9 5 8 ; 5 4 0 ]
M =
1
v2 =
M3 =
Exemplo 5.23:
Seja a matriz M0 gerada no procedimento abaixo
>> M0 = [ 2 3 5 ; 2 -3 -3 ; 9 0 8 ; 2 4 3 ; 4 5 6 ]
M0 =
2
-3
-3
-3
-3
-3
-3
-3
-3
-3
-3
Note que como a matriz era dimenso 3x3, ao atribuir na posio (1,4) um
elemento, o prprio MATLAB se encarrega de preencher as demais posies
coerentes com valores nulos.
Exemplo 5.24:
>> M = [ 2 3 5 ; 9 9 8 ; 9 1 1 ]
M =
2
z=diag(M)
z =
2
9
1
A funo:
triu(A)
Exemplo 5.25:
>> M = [ 2 3 5 ; 9 9 8 ; 9 1 1 ]
M =
2
M_u=triu(M) , M_d=tril(M)
M_u =
2
M_u =
Exemplo 5.26:
Sejam as matrizes representadas abaixo:
>> M1 = [ 1 4 7 ; 4 7 8 ] , M2 = [ 2 3 1 ; 3 7 3 ]
M1 =
1
M2 =
Mat2 =
Mat3 =
uma vez que foi utilizado como separador entre os dois blocos um caracter de
espao que significa ao longo da mesma linha. A matriz Mat2 foi criada pela
justaposio da matriz M2 embaixo da matriz M1, uma vez que o separador entre
os blocos utilizado foi o ponto-e-vrgula, que indica na linha abaixo. Finalmente, a
matriz Mat3 semelhante matriz Mat2, mas, neste caso, s foi justaposto
embaixo de M1, a primeira linha da matriz M2.
Exemplo 5.27:
O mesmo procedimento pode ser aplicado para vetores:
>> v = [ 1 4 2 7 ];
>> Mat1 = [ v v ] , Mat2 = [ v' v' ] , Mat3 = [ [ v ; v ] v(1:2)' ]
Mat1 =
1
Mat2 =
Mat3 =
ou repmat(bloco,[lin,col])
onde bloco corresponde matriz que deve ser repetida ao longo de lin linhas e
col
Exemplo 5.28:
>> M = [ 1 4 2 ; 1 9 0 ];
M =
1
Observe que a matriz M foi replicada uma vez ao longo da linha e trs vezes ao
longo das colunas.
Exemplo 5.29:
Refazer o Exemplo 5.25 utilizando o comando cat:
Inicialmente, construmos as matriz M1 e M2.
>> M1 = [ 1 4 7 ; 4 7 8 ] , M2 = [ 2 3 1 ; 3 7 3 ]
M1 =
1
M2 =
Mat2 =
Mat3 =
Exemplo 5.30:
>> u = [ -1 3 4 0 ] , v = [ 3 4 2 ]
u =
-1
v =
3
>> [ u ; v ]
???
number of columns.
Exemplo 5.31:
>> v = [ 1 4 2 7 5 2 3 5 3 ]
v =
1
>> u=find(v>3)
u =
2
Atravs do comando find, foi gerado um vetor linha que indica os ndices
dos elementos do vetor v para os quais a expresso relacional, presente no
argumento, verdadeira (ou seja, = 1). Caso seja necessrio extrair os elementos
que atendem a condio proposta, basta apenas utilizar os recursos especiais de
extrao de elementos j apresentados:
>> v_maior_3 = v(u)
v_maior_3 =
4
O comando find tambm pode ser aplicado para matrizes como mostra o
exemplo abaixo:
Exemplo 5.32:
>> M = [ 1 4 2 ; 7 5 2 ; 3 5 3 ]
M =
1
>> [lin,col]=find(M>3)
lin =
2
1
2
3
col =
1
2
2
2
Neste caso, o comando find gerou os vetores lin e col. O vetor lin indica
as linhas e o vetor col indica as colunas dos elementos que atendem a condio
estabelecida. Ou seja, os ndices dos elementos que atendem a condio so
(lin(1) , col(1)) , ((lin(2) , col(2)) , ((lin(3) , col(3)), etc. Uma viso
geral destas posies pode ser observada utilizando-se o recurso de justaposio
apresentado na subseo anterior:
>> [ lin col ]
ans =
2
ou max(x)
ou max(x,y)
gera uma matriz, com a mesma dimenso das matrizes x e y, composta pelos
menores/maiores elementos nas duas matrizes ao longo das posies
correspondentes.
min(x,[],dim)
ou max(x,[],dim)
Exemplo 5.33:
>> v = [ 1 4 2 4 5 3 6 ] , M = [ 2 4 0 ; 7 4 2 ; 4 9 3 ]
v =
1
M =
>> min(M,[],1)
ans =
2
>> max(M(:,1),M(:,2))
ans =
4
7
9
Exemplo 5.34:
Vamos entrar com uma matriz de dimenso 2x3x2. Montamos a matriz
atravs das introduo das duas pginas:
>> M(:,:,1) = [ 2 4 1 ; 3 5 6 ];
>> M(:,:,2) = [ 3 1 8 ; 2 0 9 ];
M(:,:,2) =
Exemplo 5.35:
Seja uma matriz M de dimenso 2x2x2:
>> M(:,:,1) = [ 0 4 ; 3 3 ]; , M(:,:,2) = [ 9 1 ; 2 1 ]
M(:,:,1) =
0
M(:,:,2) =
9
>> M(1,:,:)
ans(:,:,1) =
0
ans(:,:,2) =
9
>> M(:,1,:)
ans(:,:,1) =
0
3
ans(:,:,2) =
9
2
>> M(:,:,1)
ans =
0
Exemplo 5.36:
>> M = [ 1 2 3 ; 4 5 6 ]
M =
1
Mat1(:,:,2) =
1
Mat2(:,:,2) =
1
Exemplo 5.37:
>> M(:,:,1) = [ 0 4 ; 3 3 ]; , M(:,:,2) = [ 9 1 ; 2 1 ]
M(:,:,1) =
0
M(:,:,2) =
9
>> M+2
ans(:,:,1) =
2
ans(:,:,2) =
11
>> 2.^M
ans(:,:,1) =
1
16
ans(:,:,2) =
512
>> M(:,:,1)*[ 1 ; 2 ]
ans =
8
9
Exemplo 5.38:
>> Mat_char = 'Temperatura no tanque';
Mat_char =
Temperatura no tanque
>> size(Mat_char)
ans =
21
>> class(Mat_char)
ans =
char
Exemplo 5.39:
>> Mat_char = 'Tempo de fechamento';
>> disp(Mat_char)
Tempo de fechamento
>> Mat_char1 = Mat_char(1:5)
Mat_char1 =
Tempo
>> Mat_char2 = Mat_char(5:-1:1)
ans =
opmeT
>> Mat_char3 = [ Mat_char1 ' ' Mat_char2 ]
Mat_char3 =
Tempo opmeT
6.1. Conceito
Matrizes celulares (cell arrays) e estruturas (structures) so classes de
dados disponveis nas verses mais recentes do MATLAB que permitem agrupar
elementos de diferentes classes em um mesmo grupo. Desta forma, o
processamento de informao pode ser facilitado, pois um conjunto variado de
dados relacionados pode ser agrupado sob uma nica varivel. Como o objetivo
destas classes de dados apenas ordenar a informao disponvel, matrizes
celulares e estruturas no operam matematicamente (mas o contedo
armazenado sim).
e indexadas atravs de ( ).
Exemplo 6.1:
>> M1(1,1) = { eye(2) };
>> M1(1,2) = { pi };
>> M1(2,1) = { [ 1 2 ] };
>> M1(2,2) = { [] };
>> M1
M1 =
[2x2 double]
[3.1416]
[1x2 double]
[]
A matriz celular criada possui dimenso 2x2 e formada por uma matriz
identidade 2x2, por um escalar, por um vetor linha com duas componentes e por
uma matriz de dimenso 0x0. Na representao de uma matriz celular, as clulas
contendo matrizes so apresentadas atravs da dimenso da matriz que est
armazenada.
Exemplo 6.2:
>> M2{1,1} = ones(2);
>> M2{1,2} = pi^2;
>> M2{2,1} = [ 1 ; 2 ];
>> M2{2,2} = [];
>> M2
M2 =
[2x2 double]
[9.8696]
[2x1 double]
[]
Exemplo 6.3:
Inicialmente vamos criar uma matriz celular 1x2, contendo duas matrizes
de zeros de diferentes dimenses
>> M3{1,1} = zeros(2);
>> M3{1,2} = zeros(3);
>> M3
M3 =
[2x2 double]
[3x3 double]
>> class(M3{1,1})
ans =
double
Exemplo 6.4:
>> M4 = { [ 1 2 ] , [ 3 4 5 ] ; [ 6 7 8 9 ] , [ 10 11 12 13 ] }
M4 =
[1x2 double]
[1x3 double]
[1x4 double]
[1x4 double]
Exemplo 6.5:
>> cell(2,2)
ans =
[]
[]
[]
[]
Exemplo 6.6:
>> M6 = { ones(1,3) , zeros(1,3) ; ones(1,2) , zeros(1,2) };
>> M6_1 = M6{1,1}
M6_1 =
1
>> M6{1,:}
ans =
ans =
[1x3 double]
Exemplo 6.7:
Inicialmente vamos criar uma matriz celular 2x2:
>> M7{1,1} = [ 1 2 ];
>> M7{1,2} = [ 3 4 5 ];
>> M7{2,1} = [ 6 7 8 9 ];
>> M7{2,2} = [ 10 11 12 13 ];
M7{2,1} =
6
11
12
M7{1,2} =
3
M7{2,2} =
10
13
M7 =
[1x2 double]
[1x3 double]
[1x4 double]
[1x4 double]
ou
[var_1,var2,...] = deal(Mat_Cel1,Mat_Cel2,Mat_Cel3,...)
Exemplo 6.8:
>> M8 = { eye(3) , zeros(2) ; 30 , -3 }
>> [M8_1,M8_2,M8_3,M8_4]=deal(M8{:})
M8_1 =
1
M8_2 =
30
M8_3 =
0
M8_4 =
-3
Exemplo 6.9:
>> M9 = { 1 2 ; [ -1 2 ; 4 8 ] , pi }
M9 =
[
1]
[2x2 double]
2]
[3.1416]
Exemplo 6.10:
Inicialmente, vamos criar a matriz celular M9:
>> M10 = { 1 , 2 , [ -1 2 ; 4 8 ] , zeros(1,2) , 10 }
M10 =
[1]
[2]
[2x2 double]
[1x2 double]
[10]
>> M10{3}
ans =
2
-4
-8
-16
[2]
[2x2 double]
[1x2 double]
Exemplo 6.11:
>> M11_1 = { 1 , 2 , [ 2 3 ] , [ 3 ; 4 ] }
M11_1 =
[1]
[2]
[1x2 double]
[2x1 double]
[2x2 double]
[2]
[100]
2]
[-1]
[2x2 double]
[1x2 double]
[2x1 double]
2]
100]
6.3. Estruturas
Estruturas so classes de dados semelhantes s matrizes celulares e
tambm tm como objetivo agrupar conjuntos de dados de classes diferentes
atravs de uma nica varivel. A diferena das estruturas consiste na forma de
armazenamento de dados. Enquanto nas matrizes os dados so armazenados
em clulas, identificadas atravs de nmeros, nas estruturas os dados so
Exemplo 6.12:
Inicialmente, so introduzidas as diversas informaes disponveis sobre
um certo duto na estrutura pipe:
>> Pipe.number=1;
>> Pipe.diameter=2;
>> Pipe.length=20;
>> Pipe.device.valve=[ 2 18 ];
>> Pipe.device.sensor=[ 10 ];
>> Pipe
Pipe =
number: 1
diameter: 2
length: 20
device: [1x1 struct]
>> Pipe
Pipe =
1x2 struct array with fields:
number
diameter
length
device
Exemplo 6.13:
Este exemplo armazena as mesmas informaes apresentadas no
exemplo anterior na estrutura Duct. Primeiro, as informaes a serem
armazenadas so agrupadas em matrizes celulares relativas aos diferentes
campos:
>> N = { 1 2 };
>> D = { 2 3 };
>> L = { 20 30 };
>> Dv = { { [ 2 18 ] , [ 10 ] } , { [ 0 25 ] , [ ] } };
>> Duct = struct('number',N,'diameter',D,'length',L,'device',Dv)
Duct =
1x2 struct array with fields:
number
diameter
length
device
Exemplo 6.14:
Este exemplo utiliza a estrutura Duct do exemplo anterior.
>> Duct
Duct =
1x2 struct array with fields:
number
diameter
length
device
[10]}
Exemplo 6.15:
Vamos criar uma nova estrutura com o nome Tube a partir da estrutura
Duct
existente:
>> Tube = Duct
Tube =
1x2 struct array with fields:
number
diameter
length
device
ans =
3
na linha de comando.
7. GRFICOS
Codificao de cores
Caracter
Cor
Caracter
Cor
azul
magenta
verde
amarelo
vermelho
preto
azul claro
branco
Codificao de smbolos
Caracter
Smbolo
Caracter
Smbolo
ponto
tringulo ()
crculo
tringulo ()
xis
<
tringulo ()
soma
>
tringulo ()
asterisco
pentgono
quadrado
hexgono
losango
Smbolo
linha contnua
tracejado curto
--
tracejado longo
-.
Trao - ponto
Exemplo 7.1:
Na tabela abaixo h um conjunto de pontos medidos no lento processo de
aquecimento de um tanque ao longo do tempo. O objetivo deste exemplo
preparar um grfico que represente os pontos medidos.
0,0
0,5
1,0
1,5
2,0
2,5
3,0
3,5
4,0
4,5
Temp. (C)
25,0 28,8 32,3 35,6 38,7 41,5 44,2 46,6 48,9 51,1
50
45
40
35
30
25
0
0.5
1.5
2.5
3.5
4.5
55
50
45
40
35
30
25
0
0.5
1.5
2.5
3.5
4.5
Exemplo 7.2:
Traar o grfico da funo f ( x ) = [sen( x )]2 cos( x ) para x [0,4 ] .
O primeiro passo para traar um grfico de uma funo consiste em gerar
um vetor com as coordenadas da varivel independente dos pontos (a rotina
grfica no traa curvas contnuas, na verdade, o conjunto de pontos discretos
plotado, e depois estes so ligados em seqncia para reproduzir a forma da
curva). Vamos utilizar os recursos de gerao de vetores com padro crescente
apresentados anteriormente (Subseo 5.4.2):
>> x = 0 :0.01:4*pi;
Uma vez criado o vetor da varivel independente, deve ser criado o vetor
da varivel dependente, atravs da imagem da funo. Para este clculo, devem
ser utilizadas as operaes elemento a elemento. Desta forma, para cada
componente do vetor x, ser calculado o valor da imagem da funo,
armazenado ento no vetor y:
>> y = sin(x).^2.*cos(x);
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
0
10
12
14
Exemplo 7.3:
Traar os grficos das funes f ( x ) = [sen( x )]2 cos( x ) e g ( x ) = sin( x ) para
x [0,4 ] .
10
12
14
>> plot(x,[ y ; z ])
ou
Sejam x, y, z vetores coluna:
>> plot(x,[ y z ])
em
escala
monolog:
semilogy(x,y,'str');
semilogx(x,y,'str')
ou
xlabel('mensagem')
ylabel('mensagem')
Exemplo 7.4:
Refazer o grfico do Exemplo 7.3 incluindo uma malha de linhas
delimitadoras, retirando a caixa externa e incluindo a identificao do ttulo e dos
eixos e uma legenda.
Caso os vetores no estejam mais armazenados no workspace, vamos
repetir a gerao dos pontos:
>> x = 0:0.01:4*pi; , y = sin(x).^2.*cos(x); , z = sin(x);
O resultado final :
0.8
0.6
0.4
Eixo y
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
10
12
14
Eixo x
Exemplo 7.5:
Reduzir a rea de visualizao do Exemplo 7.4 para x [0,4 ] e y [1,0] .
Aps executarmos o exemplo anterior, digitamos:
>> axis([ 0 4*pi -1 0 ])
-0.1
-0.2
-0.3
Eixo y
-0.4
-0.5
-0.6
-0.7
-0.8
-0.9
-1
0
6
Eixo x
10
12
onde lin e col so os nmeros de linhas e colunas em que deve ser dividida a
janela grfica e n a posio em que o prximo grfico deve ser colocado (a
numerao das posies caminha da esquerda para a direita ao longo de uma
linha, comeando pela primeira, passando no final para a segunda, e assim
sucessivamente).
Exemplo 7.6:
Apresentar as curvas
f ( x ) = sen( x ) ,
g ( x ) = [sen( x )]3 ,
h( x ) = cos( x )
k ( x ) = [cos( x )]3 para x [0,2 ] , em separado mas em uma mesma janela grfica.
>> x = 0:0.01:2*pi;
>> y = sin(x); , z = sin(x).^3; , w = cos(x); , v = cos(x).^3;
>> subplot(2,2,1) , plot(x,y) , title('Funao f(x)')
>> subplot(2,2,2) , plot(x,z) , title('Funao g(x)')
>> subplot(2,2,3) , plot(x,w) , title('Funao h(x)')
>> subplot(2,2,4) , plot(x,v) , title('Funao k(x)')
Funao f(x)
Funao g(x)
0.5
0.5
-0.5
-0.5
-1
-1
0
Funao h(x)
Funao k(x)
0.5
0.5
-0.5
-0.5
-1
-1
0
7.2.1. Histogramas
Dada uma certa coleo de valores armazenados em um vetor, o comando
hist,
Exemplo 7.7:
-3
-2
-1
apresentados
grfico
est
na
apresentao
do
(vertical ou
horizontal;
bidimensional ou tridimensional).
Exemplo 7.8:
A produo mdia de uma refinaria (em milhares de barris/dia) ao longo
dos meses de um certo ano est representada na tabela abaixo:
Ms
Jan
Fev
Mar
Abr
Mai
Jun
Jul
Ago
Set
Out
Nov
Dez
Prod.
200
220
230
80
90
150
220
230
225
275
280
285
10
11
12
Exemplo 7.9:
Traar um grfico tipo torta com os dados do Exemplo 7.8:
>> prod = [ 200 220 230 80 90 150 220 230 235 275 280 285 ];
>> b = zeros(1,12); , b(end)=1;
>> pie3(x,b)
Neste caso, vamos traar um grfico tipo torta com aparncia 3-D
utilizando-se os dados armazenados no vetor x, destacando-se o ms de maior
produo.
11%
11%
8%
11%
9%
9%
9%
3%
9%
4%
6%
9%
Exemplo 7.10:
50
Temperatura (C )
45
40
35
30
25
20
-1
2
Tempo (h)
Exemplo 7.11:
Traar o grfico da funo parametrizada: x ( t ) = t cos( t ) , y( t ) = t sen( t ) e
z ( t ) = t para t [0, 20 ] .
O grfico resultante :
>> title('Curva em espiral')
>> xlabel('Eixo x') , ylabel('Eixo y') , zlabel('Eixo z')
70
60
Eixo z
50
40
30
20
10
0
100
50
100
50
0
0
-50
Eixo y
-50
-100
-100
Eixo x
Exemplo 7.12:
Traar o grfico da superfcie da funo z ( x , y ) = x 2 + y 2 para x [11
,] e
y [11
, ].
Uma vez que a malha foi criada, devemos calcular o valor da funo em
cada ponto da malha, utilizando-se para isto operaes elemento a elemento:
>> Z = X.^2 + Y.^2;
O grfico resultante :
hidden off
e surfnorm(X,Y,Z).
seguintes comandos:
contour(X,Y,Z,n,'cor')
ou contourf(X,Y,Z,n,'cor') ou
contour3(X,Y,Z,n,'cor')
ou pcolor(X,Y,Z,n,'cor')
Exemplo 7.12:
Traar o grfico das curvas de nvel da funo z ( x , y ) = x 2 + y 2 para
x [11
, ] e y [11
, ].
O resultado final :
1
0.8
6
1 . .4
1
0 .8
0 .8
0.6
2
1.
0 .4
0.
0.6
4
0.
0.
6
0 .8
6
1.
4
0.4
1.
1 .2
0.
2
0 .8
0.
0 .4
0 .4
0.2
0 .2
-0.4
0 .4
-0.6
1
-0.8
1.
6
1.
0 .8
4
-1
-1
0 .4
0 .6
0 .6
0 .8
1 .2
-0.5
0.
0.
8
0 .6
0 .8
-0.2
0 .6
0.5
1 .2
4
1 . 1 .6 8
1.
1
ou cd endereo_do_subdiretrio
Exemplo 8.1:
Criar um programa para efetuar a converso de temperaturas F C e K
% Inicializao
clc , clear all
% Entrada de dados
Tf=input('Digite a temperatura em graus Fahrenheit');
% Clculos
Tc=(Tf-32)/9*5;
Tk=Tc+273.15;
% Resultado
disp('Temperatura em graus Celsius') , Tc
disp('Temperatura em Kelvin') , Tk
Operador
Significado
Operador
Significado
= =
igual
>=
maior ou igual
~=
diferente
<
menor
>
maior
<=
menor ou igual
Operador
Significado
&
and / e
or / ou
not / no
xor
exclusive or/exlcusivo ou
not / no
executada
se
executada
se
subrotina
executada
se
executada
se
executada
se
executada
se
executada
das
se
condies
Exemplo 8.2:
Este um exemplo de uma rotina empregando o comando if.
if T>Tcrit
disp('Superaquecimento')
else
disp('Temperatura controlada')
end
case teste1
subrotina executada se
teste1 for verificado
case {teste2,teste3,teste4}
subrotina executada se
algum
dos
testes
for
verdadeiro
otherwise
subrotina executada se
nenhum dos testes for
verdadeiro
end
Exemplo 8.2:
Este um exemplo de uma rotina empregando o comando switch-case.
switch opcao
case 1
mesh(X,Y,Z)
case 2
surf(X,Y,Z)
otherwise
disp('Grfico no executado')
end
Exemplo 8.3:
Vamos apresentar um exemplo de rotina para calcular a soma de duas
matrizes utilizando o comando for.
for i = 1:size(A,1)
for j = 1:size(A,2)
C(i,j) = A(i,j) + B(i,j);
end
end
Enquanto
<condio>
seqencialmente.
Exemplo 8.4:
for
verdadeira,
subrotina
ser
executada
Exemplo 8.5:
A funo abaixo (arquivo eos.m) calcula a presso atravs da equao de
van der Waals, assim como as coordenadas reduzidas do gs.
function [P,Pr,Tr,Tc] = eos(T,V)
global Tc Pc R
a = 27*R^2*Tc^2/64/Pc; , b = R*Tc/8/Pc;
P = R*T/(V-b) - a/V^2;
Para gerar como sada o clculo de uma presso hipottica P2 a partir das
coordenadas T2 e V2, a funo deve ser chamada da seguinte forma:
>> P2 = eos(T2,V2)