Matlab Basico
Matlab Basico
Matlab Basico
MATLAB BÁSICO
Comandos
Escola de Química/UFRJ
Novembro/2001
ÍNDICE
1. INTRODUÇÃO
2. AMBIENTE DE TRABALHO
3.4. Funções
4. VARIÁVEIS
5. PROCESSAMENTO MATRICIAL
6.1. Conceito
6.3. Estruturas
7. GRÁFICOS
7.2.1. Histogramas
Exemplo 1.1:
Exemplo 1.2:
>> sin(pi/2)
ans =
Exemplo 1.3:
Pode-se fechar o MATLAB através da barra de menu: File > Exit MATLAB.
2. AMBIENTE DE TRABALHO
Observação: Pode ser que um usuário anterior tenha alterado a disposição das
janelas e alguns dos elementos citados aqui não estejam presentes na sua tela.
No entanto, caso seja necessário, todos os componentes apresentados podem
ser visualizados através da alternativa View na barra de menu.
Exemplo 2.1:
1.414
Exemplo 2.2:
>> log10(100) , sqrt(144)
ans =
ans =
12
, sqrt(144)
ans =
ans =
12
DET Determinant.
Exemplo 2.5:
>> lookfor integration
CUMTRAPZ Cumulative trapezoidal numerical integration.
TRAPZ Trapezoidal numerical integration.
LOTKADEMO Demonstrate numerical integration of differential equations.
ADAMS Simulink 1.x ADAMS integration algorithm.
EULER Simulink 1.x EULER integration algorithm.
GEAR Simulink 1.x GEAR integration algorithm.
LINSIM Simulink 1.x LINSIM integration algorithm.
RK23 Simulink 1.x rk23 integration algorithm.
RK45 Simulink 1.x RK45 integration algorithm.
SFUNMEM A one integration-step memory block S-function.
3. NÚMEROS, EXPRESSÕES ARITMÉTICAS E FUNÇÕES
Exemplo 3.1:
>> pi
ans =
3.1416
>> pi/pi
ans=
>> pi/10000
ans=
3.1416e-004
Formatos numéricos
Formato Expressão 10*pi Descrição
format 31.4159 “default”, igual a format short
format short 31.4159 4 casas após a vírgula
format long 31.41592653589793 14 casas após a vírgula
format short e 3.1416e+001 notação científica com 4 casas
format long e 3.141592653589793e+001 notação científica com 14 casas
format short g 31.146 5 casas decimais no total
format long g 31.4159265358979 15 casas decimais no total
format hex 403f6a7a2955385e hexadecimal
format bank 31.42 2 casas decimais após a vírgula
Format + + + , - ou 0
format rat 3550/113 aproximação racional
Exemplo 3.2:
No formato “default”
>> pi
ans =
3.1416
>> pi
ans =
3.14159265358979
Operadores matemáticos
Operação Símbolo
Soma +
Subtração -
Multiplicação *
Divisão /
Potenciação ^
Exemplo 3.3:
Para calcular a soma das parcelas 203 + 416 + 256, deve-se digitar na
linha de comando:
>> 203+416+256
875
Exemplo 3.4:
Resultando em:
ans =
204.8
Ordenação:
2) Potenciação;
3) Multiplicação e divisão;
4) Soma e subtração.
Exemplo 3.5:
( 245/154 )
(9,8 − 0,8)
Determinar o valor da expressão: − ( 4 − 50)
>> ((9.8 - 0.8)/-(4-50))^(245/154)
ans =
0.0746
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. Funções
Exemplo 3.9:
Calcular a raiz quadrada de 3:
>> sqrt(3)
ans =
1.7321
Exemplo 3.10:
Calcular o seno de 3π / 2 :
>> sin(3*pi/2)
ans =
-1
Funções trigonométricas
Função Descrição
sin(x) Seno
cos(x) co-seno
tan(x) Tangente
asin(x) arco-seno
acos(x) arco-co-seno
atan(x) arco-tangente
sinh(x) seno hiperbólico
cosh(x) co-seno hiperbólico
tanh(x) tangente hiperbólica
asinh(x) arco-seno hiperbólico
acosh(x) arco-co-seno hiperbólico
atanh(x) arco-tangente hiperbólico
Funções exponenciais e logarítmicas
Função Descrição
exp(x) exponencial
log(x) logaritmo neperiano
log10(x) logaritmo de base 10
log2(x) logarimto de base 2
sqrt(x) raiz quadrada
Funções complexas
Função Descrição
abs(x) valor absoluto
angle(x) angulo de fase em radianos
conj(x) conjugado complexo
real(x) parte real
imag(x) parte imaginária
Funções de truncamento
Função Descrição
fix(x) arredondamento na direção do 0
floor(x) arredondamento na direção de − ∞
feil(x) arredondamento na direção de + ∞
round(x) arredondamento na direção do inteiro mais próximo
rem(x,y) resto da divisão de x por y
sign(x) sinal de x (-1, 1 ou 0)
Exemplo 4.1:
>> A1=3
A1 =
>> Bt=3^3
Bt =
27
>> expr=log(A1)/Bt
expr =
0.0407
Exemplo 4.2:
2.3026
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 variável na tela, basta apenas digitar o nome
da variável, e depois teclar enter. Outra opção é utilizar o comando disp:
disp(variável)
Exemplo 4.4:
>> P=30
P =
30
>> disp(P)
30
Exemplo 4.5:
>> P=30;
30
Exemplo 4.6:
>> P=1.0133e5;
>> T=273.15;
>> R=8314;
>> V=R*T/P
V =
22.4116
>> who
Your variables are:
P R T V
Exemplo 4.7:
>> P=1.0133e5;
>> T=273.15;
>> R=8314;
>> V=R*T/P
V =
22.4116
>> whos
Name Size Bytes Class
P 1x1 8 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 R T V
>> clear P R
>> who
Your variables are:
T V
>> who
Agora nenhuma variável aparece, pois foram todas apagadas.
Exemplo 5.1:
1 2
Efetuar a seguinte atribuição: A =
− 1 5
>> A
A =
1 2
-1 5
Neste caso, cada elemento da matriz é identificado de acordo com o seu par de
índices.
Exemplo 5.2:
1 2
Efetuar a seguinte atribuição: A =
− 1 5
>> A=[ 1 2 ; -1 5 ];
>> A
A =
1 2
-1 5
Exemplo 5.3:
2
Efetuar as atribuição ao lado: c = e d = [ π π 2 π3 ]
0
>> c=[ 2 ; 0 ]
c =
d =
Operadores matriciais
Transposição C = A’ Cij = A ji
Exemplo 5.4:
2
1 4 2 − 2 2
A= , B= , c= e d= 3
0 5 3 − 1 3 − 4
a) A ⋅ B b) A + B c) A ⋅ B ⋅ c d) d T e) c − d
>> B=[ 2 -2
3 -1 ];
>> c=[ 2 ; 3 ];
>> d=[ 2 ; 3 ; -4 ];
ans =
14 -6
15 -5
>> A+2*B
ans =
3 2
3 4
>> A*B*c
ans =
10
15
>> c+d
Exemplo 5.5:
>> 2 + [ 1 2 4 -5 ]
ans =
3 4 6 -3
Função Descrição
inv(X) inversão de matrizes
det(X) cálculo do determinante
eig(X) determinação dos autovalores
rank(X) cálculo do posto da matriz
Exemplo 5.6:
1 2
Seja a seguinte matriz quadrada: A =
3 4
A =
1 2
3 4
ans =
-2.0000 1.0000
1.5000 -0.5000
ans =
1.0000 0
0.0000 1.0000
ans =
-2
ans =
-2
aval =
-0.3723
5.3723
ans =
» det(A-aval(2)*[ 1 0 ; 0 1 ])
ans =
ans =
Exemplo 5.7:
2
1 4 2 − 2 2
A= , B= , c= e d= 3
0 5 3 − 1 3 − 4
>> B=[ 2 -2 ; 3 -1 ];
>> c=[ 2 ; 3 ];
>> d=[ 2 ; 3 ; -4 ];
ans =
1 16
0 25
>> A./B
ans =
0.5000 -2.0000
0 -5.0000
>>2.^c
ans =
>>d.^10
ans =
1024
59049
1048576
Exemplo 5.8:
>> a=[ 1 2 3 4 ];
>> sqrt(a)
ans =
Exemplo 5.9:
>> ones(2,3) , ones(2)
ans =
1 1 1
1 1 1
ans =
1 1
1 1
Exemplo 5.10:
>> zeros(3) , zeros(1,10)
ans =
0 0 0
0 0 0
0 0 0
ans =
0 0 0 0 0 0 0 0 0 0
Exemplo 5.11:
>> eye(2) , eye(2,3)
ans =
1 0
0 1
ans =
1 0 0
0 1 0
Exemplo 5.12:
>> rand(1,10) , randn(1,10)
ans =
ans =
Exemplo 5.13:
>> diag([1,2,3])
ans =
1 0 0
0 2 0
0 0 3
size(A,1) ou size(A,2)
Exemplo 5.14:
>> M = [ 1 2 ; 3 4 ; 4 0 ] , v = [ 2 3 1 4 0 0 ]
M =
1 2
3 4
4 0
v =
2 3 1 4 0 0
ans =
3 2
ans =
3
ans =
>> length(v)
ans =
Este comando gera um vetor linha cujos elementos formam uma seqüência de
números inteiros entre lim_1 e lim_2.
Exemplo 5.15:
>> v = 2:10
v =
2 3 4 5 6 7 8 9 10
Exemplo 5.16:
>> v1 = 2:2:10 , v2 = 4:-0.5:3
v1 =
2 4 6 8 10
v2 =
Exemplo 5.17:
>> M = [ 1:4 ; 4:-1:1 ]
M =
1 2 3 4
4 3 2 1
Exemplo 5.18:
>> u = linspace(0,3,5)
u =
Exemplo 5.19:
>> u = [ 1 2 3 ]; , v = [ 3 ; 6 ; 7 ];
>> [ u(:) v(:) ]
ans =
1 3
2 6
3 7
Exemplo 5.20:
>> M(2,2)+x(2)
ans =
Exemplo 5.21:
v =
1 4 7 4 7 8 9 5 8 5 4
u =
1 4 7 4
w =
7 8 9 5 8 5 4
z =
4 1 7 4
Exemplo 5.22:
M =
1 4 7
4 7 8
9 5 8
5 4 0
v1 =
1 4 7
v2 =
4 7
M3 =
4 7
7 8
Exemplo 5.23:
M0 =
2 3 5
2 -3 -3
9 0 8
2 4 3
4 5 6
M0 =
2 3 5
2 -3 -3
9 0 4
2 4 3
4 5 6
M0 =
1 2 3
2 -3 -3
9 0 4
2 4 3
4 5 6
As duas últimas linhas da matriz serão agora eliminadas:
>> M0(4:5,:) = []
M0 =
1 2 3
2 -3 -3
9 0 4
M0 =
1 2 3 1
2 -3 -3 0
9 0 4 0
Note que como a matriz era dimensão 3x3, ao atribuir na posição (1,4) um
elemento, o próprio MATLAB se encarrega de preencher as demais posições
coerentes com valores nulos.
A função:
diag(A)
Exemplo 5.24:
>> M = [ 2 3 5 ; 9 9 8 ; 9 1 1 ]
M =
2 3 5
9 9 8
9 1 1
z=diag(M)
z =
2
A função:
triu(A)
Exemplo 5.25:
>> M = [ 2 3 5 ; 9 9 8 ; 9 1 1 ]
M =
2 3 5
9 9 8
9 1 1
M_u=triu(M) , M_d=tril(M)
M_u =
2 3 5
0 9 8
0 0 1
M_u =
2 0 0
9 9 0
9 1 1
Exemplo 5.26:
M1 =
1 4 7
4 7 8
M2 =
2 3 1
3 7 3
Mat1 =
1 4 7 2 3 1
4 7 8 3 7 3
Mat2 =
1 4 7
4 7 8
2 3 1
3 7 3
Mat3 =
1 4 7
4 7 8
2 3 1
A matriz Mat1 foi gerada pela justaposição da matriz M2 à direita da matriz
M1, uma vez que foi utilizado como separador entre os dois blocos um caracter de
espaço que significa ao longo da mesma linha. A matriz Mat2 foi criada pela
justaposição da matriz M2 embaixo da matriz M1, uma vez que o separador entre
os blocos utilizado foi o ponto-e-vírgula, 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:
Mat1 =
1 4 2 7 1 4 2 7
Mat2 =
1 1
4 4
2 2
7 7
Mat3 =
1 4 2 7 1
1 4 2 7 4
repmat(bloco,lin,col) ou repmat(bloco,[lin,col])
onde bloco corresponde à matriz que deve ser repetida ao longo de lin linhas e
col colunas. O exemplo abaixo ilustra bem o conceito envolvido:
Exemplo 5.28:
>> M = [ 1 4 2 ; 1 9 0 ];
M =
1 4 2
1 9 0
M_M_M =
1 4 2 1 4 2 1 4 2
1 9 0 1 9 0 1 9 0
Observe que a matriz M foi replicada uma vez ao longo da linha e três vezes ao
longo das colunas.
Exemplo 5.29:
M1 =
1 4 7
4 7 8
M2 =
2 3 1
3 7 3
Mat1 =
1 4 7 2 3 1
4 7 8 3 7 3
Mat2 =
1 4 7
4 7 8
2 3 1
3 7 3
Mat3 =
1 4 7
4 7 8
2 3 1
Exemplo 5.30:
>> u = [ -1 3 4 0 ] , v = [ 3 4 2 ]
u =
-1 3 4 0
v =
3 4 2
>> [ u ; v ]
??? All rows in the bracketed expression must have the same
number of columns.
Exemplo 5.31:
>> v = [ 1 4 2 7 5 2 3 5 3 ]
v =
1 4 2 7 5 2 3 5 3
>> u=find(v>3)
u =
2 4 5 8
Através do comando find, foi gerado um vetor linha que indica os índices
dos elementos do vetor v para os quais a expressão relacional, presente no
argumento, é verdadeira (ou seja, = 1). Caso seja necessário extrair os elementos
que atendem a condição proposta, basta apenas utilizar os recursos especiais de
extração de elementos já apresentados:
>> v_maior_3 = v(u)
v_maior_3 =
4 7 5 5
O comando find também 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 4 2
7 5 2
3 5 3
>> [lin,col]=find(M>3)
lin =
col =
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 condição
estabelecida. Ou seja, os índices dos elementos que atendem a condição são
(lin(1) , col(1)) , ((lin(2) , col(2)) , ((lin(3) , col(3)), etc. Uma visão
geral destas posições pode ser observada utilizando-se o recurso de justaposição
apresentado na subseção anterior:
>> [ lin col ]
ans =
2 1
1 2
2 2
3 2
min(x) ou max(x)
min(x,y) ou max(x,y)
gera uma matriz, com a mesma dimensão das matrizes x e y, composta pelos
menores/maiores elementos nas duas matrizes ao longo das posições
correspondentes.
min(x,[],dim) ou max(x,[],dim)
quando x é uma matriz determina os menores/maiores ao longo da dimensão
dim.
Exemplo 5.33:
>> v = [ 1 4 2 4 5 3 6 ] , M = [ 2 4 0 ; 7 4 2 ; 4 9 3 ]
v =
1 4 2 4 5 3 6
M =
2 4 0
7 4 2
4 9 3
ans =
1 6
>> min(M,[],1)
ans =
2 4 0
>> max(M(:,1),M(:,2))
ans =
Exemplo 5.34:
>> M(:,:,2) = [ 3 1 8 ; 2 0 9 ];
2 4 1
3 5 6
M(:,:,2) =
3 1 8
2 0 9
Exemplo 5.35:
M(:,:,1) =
0 4
3 3
M(:,:,2) =
9 1
2 1
ans(:,:,1) =
0 4
ans(:,:,2) =
9 1
>> M(:,1,:)
ans(:,:,1) =
ans(:,:,2) =
>> M(:,:,1)
ans =
0 4
3 3
Exemplo 5.36:
>> M = [ 1 2 3 ; 4 5 6 ]
M =
1 2 3
4 5 6
Mat1(:,:,1) =
1 2 3
4 5 6
Mat1(:,:,2) =
1 2 3
4 5 6
Mat2(:,:,1) =
1 2 3
4 5 6
Mat2(:,:,2) =
1 2 3
4 5 6
Exemplo 5.37:
>> M(:,:,1) = [ 0 4 ; 3 3 ]; , M(:,:,2) = [ 9 1 ; 2 1 ]
M(:,:,1) =
0 4
3 3
M(:,:,2) =
9 1
2 1
>> M+2
ans(:,:,1) =
2 6
5 5
ans(:,:,2) =
11 3
4 3
>> 2.^M
ans(:,:,1) =
1 16
8 8
ans(:,:,2) =
512 2
4 2
>> M(:,:,1)*[ 1 ; 2 ]
ans =
Exemplo 5.38:
>> Mat_char = 'Temperatura no tanque';
Mat_char =
Temperatura no tanque
>> size(Mat_char)
ans =
1 21
>> class(Mat_char)
ans =
char
Exemplo 5.39:
>> Mat_char = 'Tempo de fechamento';
>> disp(Mat_char)
Tempo de fechamento
Mat_char1 =
Tempo
ans =
opmeT
Mat_char3 =
Tempo opmeT
6.1. Conceito
Matrizes celulares são matrizes compostas por células, onde cada célula
individual pode armazenar elementos de qualquer classe de dados, sejam
“strings”, matrizes convencionais, matrizes celulares ou estruturas. Por exemplo,
uma matriz celular pode armazenar uma outra matriz celular em uma célula, uma
matriz convencional em outra e um vetor em mais outra. Matrizes celulares
podem ser construídas com qualquer dimensão, embora sejam usualmente
utilizadas na forma de um vetor.
Exemplo 6.1:
>> M1(1,1) = { eye(2) };
>> M1(1,2) = { pi };
>> M1(2,1) = { [ 1 2 ] };
>> M1(2,2) = { [] };
>> M1
M1 =
[1x2 double] []
A matriz celular criada possui dimensão 2x2 e é formada por uma matriz
identidade 2x2, por um escalar, por um vetor linha com duas componentes e por
uma matriz de dimensão 0x0. Na representação de uma matriz celular, as células
contendo matrizes são apresentadas através da dimensão da matriz que está
armazenada.
Exemplo 6.2:
>> M2{1,1} = ones(2);
>> M2{2,1} = [ 1 ; 2 ];
>> M2
M2 =
[2x1 double] []
Exemplo 6.3:
Inicialmente vamos criar uma matriz celular 1x2, contendo duas matrizes
de zeros de diferentes dimensões
>> M3{1,1} = zeros(2);
>> M3
M3 =
ans =
[2x2 double]
>> class(M3(1,1))
ans =
cell
ans =
0 0
0 0
>> 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]
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 =
1 1 1
>> M6{1,:}
ans =
1 1 1
ans =
0 0 0
M6_ =
Exemplo 6.7:
>> M7{1,2} = [ 3 4 5 ];
>> M7{2,1} = [ 6 7 8 9 ];
>> M7{2,2} = [ 10 11 12 13 ];
M7{1,1} =
1 2
M7{2,1} =
6 7 8 9
M7{1,2} =
3 4 5
M7{2,2} =
10 11 12 13
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 0 0
0 1 0
0 0 1
M8_2 =
30
M8_3 =
0 0
0 0
M8_4 =
-3
Além de acessarmos o conteúdo de uma célula, também é possível
acessar um certo elemento ou grupo de elementos de uma matriz contida em
uma célula.
Exemplo 6.9:
>> M9 = { 1 2 ; [ -1 2 ; 4 8 ] , pi }
M9 =
[ 1] [ 2]
M9_1 =
-1 2
4 8
M9_2 =
-1
M9_3 =
-1 2
Exemplo 6.10:
M10 =
ans =
2 -4
-8 -16
M10 =
Exemplo 6.11:
>> M11_1 = { 1 , 2 , [ 2 3 ] , [ 3 ; 4 ] }
M11_1 =
M11_2 =
M11 =
6.3. Estruturas
Exemplo 6.12:
>> Pipe.diameter=2;
>> Pipe.length=20;
>> Pipe.device.valve=[ 2 18 ];
>> Pipe.device.sensor=[ 10 ];
>> Pipe
Pipe =
number: 1
diameter: 2
length: 20
>> Pipe(2).diameter=3;
>> Pipe(2).length=30;
>> Pipe(2).device.valve=[ 0 25 ];
>> Pipe(2).device.sensor=[ ];
>> Pipe
Pipe =
number
diameter
length
device
onde struct_name é o nome da estrutura a ser criada; field1, field2, etc. são os
campos para armazenamento das informações; e V1, V2, etc. são matrizes
celulares de mesmo tamanho com as informações para serem armazenadas nos
diferentes campos.
Exemplo 6.13:
>> D = { 2 3 };
>> L = { 20 30 };
>> Dv = { { [ 2 18 ] , [ 10 ] } , { [ 0 25 ] , [ ] } };
Duct =
number
diameter
length
device
6.3.2. Extração envolvendo estruturas
Exemplo 6.14:
Duct =
number
diameter
length
device
>> Duct.number
ans =
ans =
ans =
number: 1
diameter: 2
length: 20
ans =
Exemplo 6.15:
Vamos criar uma nova estrutura com o nome Tube a partir da estrutura
Duct existente:
>> Tube = Duct
Tube =
number
diameter
length
device
>> Tube.diameter
ans =
5
ans =
>> Tube
Tube =
number
diameter
length
device
roughness
ans =
number
diameter
length
roughness
Codificação de cores
Codificação de símbolos
Caracter Símbolo Caracter Símbolo
. ponto ^ triângulo ()
o círculo v triângulo ()
x xis < triângulo ()
+ soma > triângulo ()
* asterisco p pentágono
s quadrado h hexágono
d losango
Caracter Símbolo
- linha contínua
: tracejado curto
-- tracejado longo
-. Traço - ponto
Exemplo 7.1:
Tempo (h) 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
>> T = [ 25.0 28.8 32.3 35.6 38.7 41.5 44.2 46.6 48.9 51.1 ];
Para traçar o gráfico utilizamos o comando plot. Vamos selecionar os
pontos na cor vermelha e representados como círculos. Não selecionaremos
nenhum estilo de linha, uma vez que queremos um gráfico de pontos discretos
não ligados (quando o caracter referente ao símbolo está presente e o caracter
referente ao estilo de linha não está presente, nenhuma linha é adicionada):
>> plot(t,T,'ro')
55
50
45
40
35
30
25
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
Como o código de cor não está presente, o MATLAB irá utilizar a cor
“default” azul, e de acordo com a codificação do caracter, os símbolos dos pontos
serão losangos:
55
50
45
40
35
30
25
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
Exemplo 7.2:
0.4
0.3
0.2
0.1
-0.1
-0.2
-0.3
-0.4
0 2 4 6 8 10 12 14
Exemplo 7.3:
>> plot(x,y,x,z)
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 2 4 6 8 10 12 14
ou
Uma vez que um gráfico foi gerado, o MATLAB permite que o usuário possa
alterar vários dos seus aspectos. Vamos apresentar aqui um conjunto de
comandos que podem ser utilizados para a manipulação de gráficos.
A própria janela gráfica criada através do comando plot possui uma barra
de ferramentas com vários recursos que podem ser explorados para a
manipulação do gráfico: zoom, inclusão de textos, setas, rotação em 3D,
alterações de características, etc.
Através do comando grid on, o gráfico ativo recebe uma malha de linhas
delimitadoras (o comando grid off retira estas linhas e o comando isolado grid
recebe/retira as linhas, dependendo do estado inicial).
ylabel('mensagem')
Exemplo 7.4:
O resultado final é:
Gráfico de duas curvas
1
Função f(x)
0.8 Função g(x)
0.6
0.4
0.2
Eixo y
-0.2
-0.4
-0.6
-0.8
-1
0 2 4 6 8 10 12 14
Eixo x
Exemplo 7.5:
-0.2
-0.3
-0.4
Eixo y
-0.5
-0.6
-0.7
-0.8
-0.9
-1
0 2 4 6 8 10 12
Eixo x
Quando uma janela gráfica está ativa, o comando hold on faz com que
qualquer comando plot adicional seja desenhado na janela ativa sem apagar o
conteúdo desta (hold off desativa o comando e hold alterna entre os dois
estados).
onde lin e col são os números de linhas e colunas em que deve ser dividida a
janela gráfica e n é a posição em que o próximo gráfico deve ser colocado (a
numeração das posições caminha da esquerda para a direita ao longo de uma
linha, começando pela primeira, passando no final para a segunda, e assim
sucessivamente).
Exemplo 7.6:
k ( x ) = [cos( x )]3 para x ∈[0,2π ] , em separado mas em uma mesma janela gráfica.
>> x = 0:0.01:2*pi;
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 2 4 6 8 0 2 4 6 8
0.5 0.5
0 0
-0.5 -0.5
-1 -1
0 2 4 6 8 0 2 4 6 8
7.2.1. Histogramas
Exemplo 7.7:
Traçar o histograma de um conjunto 10.000 de pontos com distribuição
normal padronizada.
>> x = randn(1e4,1);
Histograma
1000
900
800
700
600
500
400
300
200
100
0
-4 -3 -2 -1 0 1 2 3 4
Exemplo 7.8:
>> prod = [ 200 220 230 80 90 150 220 230 225 275 280 285 ];
Gráfico da produção
300
250
200
150
100
50
1
2
3
4
5
6
7
8
9
10
11
12
Exemplo 7.9:
>> pie3(x,b)
Neste caso, vamos traçar um gráfico tipo torta com aparência 3-D
utilizando-se os dados armazenados no vetor x, destacando-se o mês de maior
produção.
11%
11%
8%
11%
9%
9%
9%
3% 9%
4%
6% 9%
Exemplo 7.10:
Traçar um gráfico da curva de aquecimento do Exemplo 7.1, incluindo uma
representação do erro da medida de ±1 ºC.
>> T = [ 25.0 28.8 32.3 35.6 38.7 41.5 44.2 46.6 48.9 51.1 ];
C urva de aquecimento
55
50
45
Temperatura (ºC )
40
35
30
25
20
-1 0 1 2 3 4 5
Tempo (h)
Exemplo 7.11:
O gráfico resultante é:
>> title('Curva em espiral')
60
50
40
Eixo z
30
20
10
0
100
50 100
0 50
0
-50
-50
Eixo y -100 -100
Eixo x
Esta malha de pontos pode ser gerada através da função meshgrid, que
recebe dois vetores relativos às coordenadas independentes do gráfico e gera
duas matrizes, cujos os pares de elementos correspondentes formam a malha
desejada para a geração da superfície. A sintaxe do comando é:
[X,Y]=meshgrid(x,y)
Uma vez que a malha foi criada, na forma de duas matrizes, deve-se
calcular o valor da função em cada par de elementos, armazenando-se então o
resultado em uma terceira matriz, relativa à variável dependente.
surf(X,Y,Z)
waterfall(X,Y,Z)
onde X,Y e Z são as matrizes que representam os pontos da superfície.
Exemplo 7.12:
>> y = -1:0.05:1;
Uma vez que a malha foi criada, devemos calcular o valor da função em
cada ponto da malha, utilizando-se para isto operações elemento a elemento:
>> Z = X.^2 + Y.^2;
O gráfico resultante é:
Note no gráfico acima que as cores são alteradas dependendo do valor da
função objetivo. Observe também que a superfície é “opaca”. Esta característica
pode ser alterada através dos comandos hidden on (transparente), hidden off
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:
>> clabel(C,h)
O resultado final é:
1
6 1 1 1 .2 1.
1 . .4 6
0.8 1 0 .8 0 .8 1.
0.6 4
2
1. 0 .4
0.6 0.
6
1
4
1
0.4 0.
0 .8
6
0.
2 0.
0. 2
0 .8
0.2
0 .4
0 .4
0
1
0 .6
0 .6
-0.2
0 .8
0.
2
1
-0.4 0 .2
8
0.
0 .4
-0.6 0 .4
1 0 .6 0 .6
-0.8 0 .8
1. 1.
4 0 .8 1 4
6 1 .2 1 . 1 .6 8
1 .2 1.
-1 1
-1 -0.5 0 0.5 1
>> pcolor(X,Y,Z)
path(path,'endereço_do_subdiretório') ou cd endereço_do_subdiretório
- Passo 1
Através da barra de menu: File > New > M-file abrir um arquivo no editor de
texto do MATLAB.
- Passo 2
- Passo 3
- Passo 4
- Passo 5
% Inicialização
% Entrada de dados
% Cálculos
Tc=(Tf-32)/9*5;
Tk=Tc+273.15;
% Resultado
disp('Temperatura em Kelvin') , Tk
Operador Significado
& and / e
| or / ou
~ not / não
xor exclusive or/exlcusivo ou
~ not / não
subrotina executada se
<condição> for verdadeira
end
subrotina executada se
<condição> for verdadeira
else
subrotina executada se
<condição> for falsa
end
subrotina executada se
<condição1> for verdadeira
elseif <condição2>
subrotina executada se
<condição2> for verdadeira
elseif <condição3>
subrotina executada se
<condição1> for verdadeira
...
else
subrotina executada se
nenhuma das condições
anteriores for verdadeira
end
Exemplo 8.2:
disp('Superaquecimento')
else
disp('Temperatura controlada')
end
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:
case 1
mesh(X,Y,Z)
case 2
surf(X,Y,Z)
otherwise
end
subrotina
end
A subrotina é executada para cada coluna da matriz, com a variável var
assumindo o valor da coluna correspondente a cada repetição. Na prática, o
comando for é usualmente utilizado com matriz na forma de um vetor do tipo
lim_inf:inc:lin_sup, conforme está ilustrado no exemplo a seguir:
Exemplo 8.3:
for j = 1:size(A,2)
end
end
subrotina
end
Exemplo 8.4:
Este é um exemplo de uma rotina empregando o comando while.
while abs(x1-x0)>1e-4
x0 = x1;
x1 = g(x0);
end
A função deve ser criada em um arquivo exclusivo para ela. Todo arquivo
de função deve começar pelo comando function. Ao lado deste comando,
escreve-se a variável interna de saída da função (no nosso caso p, a pressão)
igualado ao nome da função (eq) seguido pelos argumentos de entrada (T,V;
respectivamente, temperatura e volume). Seguem-se então o conjunto de
definições, operações matemáticas e comandos que permitirão a função
determinar o resultado da saída. Finalmente, a função deve ser gravada em um
arquivo necessariamente com o nome declarado inicialmente (no nosso caso,
eq.m).
R=8314;
p=R*T/V;
É possível, agora, utilizar a função de cálculo da pressão de um gás (eq)
na linha de comando, em um arquivo de comando qualquer ou até mesmo em
outra função.
Caso seja necessário, é possível permitir que uma função compartilhe uma
ou mais variáveis externas. Neste caso utiliza-se o comando global,
global A B C ...
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 saída o cálculo de uma pressão hipotética P2 a partir das
coordenadas T2 e V2, a função deve ser chamada da seguinte forma:
>> P2 = eos(T2,V2)