Vous êtes sur la page 1sur 189

INTRODUO AO

MATLAB

Prof. Alberto Adade Filho - ITA


Prof. Adade
MATLAB BSICO

Grficos Interface para


Programas de
Linguagem Aplicao
MATLAB

Ambiente Biblioteca de
de Funes
Trabalho Matemticas

Prof. Adade
MATLAB BSICO
Lista (parcial) de Toolboxes (Mathworks, Inc.)
Signal Processing Control Systems Optimization
High-Order Spectral Analysis Robust Control NAG
Wavelet m-Analysis & Synthesis Partial Differential Equation
Data Acquisition Toolbox Nonlinear Control Design
Instrument Control (Simulink Control Design)
Filter Design Toolbox Model Predictive Control
LMI Control
System Identification Fuzzy Logic Symbolic Math
MMLE3 Identification Neural Network
Frequency Domain Identification
Statistics Communications Image Processing
Spline Finantial Mapping
Curve Fitting
Aerospace SimMechanics
Simulink, Simulink Accelerator Real Time Workshop StateFlow
+ Toolboxes de outras firmas
Prof. Adade
Prof. Adade
MATLAB BSICO
Opes de Partida e de Sada

Na partida, Matlab executa o m-file mestre matlabrc.m e, se existir, startup.m.

Por intermdio deste ltimo, que deve estar no sub-diretrio \toolbox\local o


usurio pode especificar e modificar opes pr-ajustadas (p. ex. pr-definir
variveis, caractersticas grficas etc.).

Na sada, executado o m-file finish.m, se existir.

O usurio pode criar esse arquivo com funes que ele queira executar ao trmino
da utilizao do Matlab, como salvar o espao de trabalho (vide arquivo
finishsav.m), por exemplo.

Obs. R2013: boto Preferences do menu HOME permite modificar algumas


opes pr-ajustadas.
Prof. Adade
MATLAB BSICO
Introduo
n MATLAB (MATrix LABoratory) um programa interativo para clculos (e
visualizao) numricos cientficos e de engenharia.

n Originalmente voltado para a lgebra linear numrica e o clculo matricial, MATLAB


tem seus recursos bsicos estendidos:
- pelos toolboxes (conjunto de funes ou M-files) para reas especializadas;
- pela implementao de funes MATLAB (M-files); ou
- por meio de rotinas escritas em linguagem C ou FORTRAN (MEX-files).

Principal caracterstica: os elementos (estrutura de dados) bsicos de trabalho so


matrizes/arrays que no requerem dimensionamento.

Prof. Adade
MATLAB BSICO
u Entrar no MATLAB
- comando matlab;
- via menu ou um cone.

u Sair do MATLAB
Comando quit ou exit (ou fechando-se uma janela, no ambiente
Windows).

DESKTOP : tela de partida.


Prof. Adade
MATLAB BSICO

Prof. Adade
MATLAB BSICO

Prof. Adade
MATLAB BSICO

Prof. Adade
MATLAB BSICO
Recursos do Desktop
A tela de partida do Matlab denominada Matlab Desktop (vide figura) e traz recursos
para se manusear arquivos, variveis e aplicaes.
Ao usar o browser do espao de trabalho (workspace), o editor de array acessado
clicando-se duas vezes sobre uma varivel.
A opo Layout (R2013) ou Desktop (R2011) (ou View, na verso 6) da barra de menus
do Matlab permite selecionar quais as janelas vo compor o Desktop.
Essas janelas podem ser deslocadas para fora do Desktop.
H diferentes configuraes pr-definidas para o Desktop, podendo ser selecionadas na
opo Layout (R2013) ou Desktop Layout (R2011) do menu Desktop (View).
Menus de contexto (pop-ups menus), apresentando as aes disponveis so acessados
clicando-se o boto direito do mouse sobre um item selecionado.

Prof. Adade
MATLAB BSICO
Recursos do Desktop (cont.)
Uma seleo de comandos da janela Command History pode ser copiada e colada em
outra janela do Desktop.
Uma seleo tambm pode ser executada clicando-se o boto direito e ativando a opo
Evaluate Selection do menu de contexto.
Os comandos (chamadas de funes) Matlab so "entrados" na Janela de Comandos. O
smbolo (>>) indica que o Matlab est pronto para aceitar alguma solicitao.
Aps entrar um comando, pressionar a tecla Enter ou Return para que seja executado.
Para entrar mltiplas linhas de comandos sem que sejam executados, concluir cada linha
usando Shift-Enter ou Shift-Return.
Pressionando Enter ou Return faz com que todas as linhas sejam executadas.
O comando clear ou os botes clear command e clear workspace (R2013) permitem
limpar a janela de comandos e o espao de trabalho.

Prof. Adade
MATLAB BSICO
Recursos do Desktop (cont.)
Matlab Web Browser: possvel abrir um web browser e acessar uma pgina pelo Matlab.
Menu: Desktop Web Browser (boto Community no menu da R2013)

Equivalente ao comando: >> web url % url o endereo da pgina a acessar


Prof. Adade
MATLAB BSICO
Definindo Matrizes
Matrizes so introduzidas (definidas) como uma lista de elementos, entre
colchetes [] e usando-se ponto e vrgula (;) para indicar trmino de linhas. Os
elementos numa linha podem ser separados por vrgula ou por espao em branco.
EX:
A = [1 2 3; 4 5 6; 7 8 9]
ou
A=[ 123
456
7 8 9]
u Obs. 1 A sintaxe sensvel ao caso das letras, isto , diferencia entre letras maisculas e
minsculas; assim, a e A representam variveis distintas.

u Matrizes tambm podem ser geradas por comandos e funes do MATLAB, editadas e
"carregadas" via um arquivo M-file e/ou "carregadas" de arquivos externos.

Prof. Adade
MATLAB BSICO
O procedimento de entrada de dados e de comandos simplificado pelo uso de funes e
de teclas especiais do editor de linhas de comandos do MATLAB:

- : reapresenta linha de comando anterior;


: reapresenta linha de comando posterior;
() : adianta (volta) o cursor um caractere;
Crtl+ : move o cursor uma palavra para a direita;
Crtl+ : move o cursor uma palavra para a esquerda;
Home (ou Crtl+a): move o cursor para o incio da linha;
End (ou Crtl+e) : move o cursor para o fim da linha;
Esc (ou Crtl+u) : apaga a linha;
Crtl+k : apaga do cursor at o fim da linha.

Prof. Adade
MATLAB BSICO
Elementos das Matrizes
Nmeros reais, nmeros complexos, expresses matemticas e mesmo outras matrizes.
u Ex. 1:
x = [-1.1 sqrt(3) 4*atan(1)]
resulta
x=
-1.1000 1.7321 3.1416

u Obs. O redimensionamento de uma matriz automtico. Por exemplo,

x(5) = abs(x(1))
resulta

x=
-1.1000 1.7321 3.1416 0.0000 1.1000

Prof. Adade
MATLAB BSICO
u Ex. 2:
B = [A; 10 11 12]
resulta
B=
1 2 3
4 5 6
7 8 9
10 11 12

u Ex. 3:
C = [ 1 2; 3 4 ] + i * [ 4 3; 2 1]
ou
C = [ 1+4i 2+3i; 3+2i 4+i]
resulta
C=
1+4i 2+3i
3+2i 4+i

Prof. Adade
MATLAB BSICO
Obs 1. A princpio, isto , por default, i e j representam a unidade imaginria. Outra
varivel, digamos k, pode assumir essa condio simplesmente fazendo-se,

k = sqrt(-1).

Obs 2. No usar espaos na definio de elementos complexos numa matriz.

Obs 3. Mesmo que i e j tenham sido alterados pelo usurio, ainda funcionam como
unidade complexa em definies de nmeros na forma a+bi.

u MATLAB tambm admite a estrutura matriz vazia, uma matriz de dimenso 0x0
definida da forma,

x=[]

Prof. Adade
MATLAB BSICO
Variveis, Nmeros e Expresses
Sintaxe para clculos no MATLAB:
varivel = expresso
ou
expresso
Ex:
180/3.1416
ans =
57.2956
u Obs. Terminar uma expresso com ; (ponto e vrgula) suprime a apresentao do
resultado, mas a expresso calculada.
u Nmeros e operadores aritmticos: notao convencional semelhante utilizada na
linguagem C.
Ex: 3 -99 .001 9.63972 1.602E-20 6.02252e23
Prof. Adade
MATLAB BSICO
u Operadores Aritmticos:
+ adio
- subtrao
* multiplicao
/ diviso direita
\ diviso esquerda
^ potenciao
Parnteses ( ) : ordem de precedncia de clculo; melhora a clareza das expresses.
u Variveis Pr-ajustadas
eps : preciso em ponto flutuante ou unidade de mquina (2-52 2,2210-16);
pi = p = 4 * atan(1)
inf = (Ex: s = 1/0 resulta s = inf e mensagem)
NaN = Not a Number (Resulta nas situaes Inf/Inf e 0/0)
realmin : menor nmero em ponto flutuante (2-1022 2.225110-308)
realmax : maior nmero em ponto flutuante, ((2 - eps) 21023 1.797710+308)

Prof. Adade
MATLAB BSICO
Exerccios.

1) Calcular o volume de um cilindro de altura 0,45m e raio da base 0,12m.

Obs. O volume de um cilindro obtido pelo produto da sua rea da base (p r2) e a altura.

Resposta: 0.0204 m3

2) Calcular a expresso abaixo, para x = 2 e y = 5,

x3 y 2
( x - y)2

Resposta: 22.2222

Prof. Adade
MATLAB BSICO
Acompanhamento do Espao de Trabalho, Diretrios e Arquivos
O browser de espao de trabalho (Workspace browser) pode ser usado para se visualizar o
contedo do espao de trabalho, bem como deletar e redenominar variveis. (R2011)

Save Delete

Import
data

Open
selection
data

Prof. Adade
MATLAB BSICO
Para editar as variveis, utiliza-se o editor de array (Array Editor):
- clicando-se duas vezes sobre uma varivel.
- clicando-se o boto direito sobre a seleo de variveis e escolhendo a opo
Open Selection do menu de contexto que aparece.

Obs. Ao alterar um arquivo .mat este deve ser regravado para que as alteraes sejam
efetivadas de modo permanente.
O espao de trabalho (todas as variveis) pode ser gravado utilizando-se a opo Save
Wokspace As do menu File (ou boto Save Workspace na (R2013)).
Prof. Adade
MATLAB BSICO
Formato de Sada
format short : ponto fixo, quatro casas decimais
format short e : notao cientfica, quatro casas decimais (cinco dgitos)
format short g : ponto fixo ou notao cientfica, quatro casas decimais
format short eng : formato de engenharia, que tem pelo menos 5 dgitos e uma
potncia mltiplo de trs
format long: ponto fixo, quatorze casas decimais
format long e: notao cientfica, quatorze casas decimais
format long g : ponto fixo ou notao cientfica, quinze dgitos (double) ou sete
dgitos (preciso simples)
format long eng : formato de engenharia, que tem 16 dgitos significativos e uma
potncia mltipla de trs
format hex: hexadecimal
format +: + (se positivo), - (se negativo), branco (se nulo)
format rat: formato (aprox.) racional, isto , razo de inteiros
format bank: valor monetrio (dlares e centavos)
(format compact, suprime linhas em branco e format loose, que faz retornar ao formato no compactado)

Prof. Adade
MATLAB BSICO
Formato de Sada
Ex:
x = [6/7 1.1742e-5]
short: 0.8571 0.0000
short e: 8.5714e-001 1.1742e-005
short eng: 857.1429e-003 11.742e-006
long: 0.85714285714286 0.00001174200000
long e: 8.571428571428571e-001 1.174200000000000e-005
hex: 3feb6db6db6db6db 3ee89ff031112b32
+: + +
rat : 6/7 3/255493
bank: 0.86 0.00
Obs. Os clculos e valores armazenados so sempre em preciso dupla, independente
do formato de sada utilizado.
Prof. Adade
MATLAB BSICO
Ajuda
help: proporciona informao on-line sobre um tpico escolhido.
Ex:
help apresenta os diretrios no trajeto de busca (path) do MATLAB;
help diretrio mostra arquivo contents.m, a relao de funes no diretrio;
help funo mostra as linhas de comentrios que documentam a funo

Menu Help (ajuda) on-line: Matlab Help, Using the Desktop, Demos/Examples

doc nome_da_funo : acessa uma pgina de referncia para a funo.

Prof. Adade
MATLAB BSICO
Comentrios, Continuao
% : indica que o restante da linha que o contm um comentrio.

%{ : inicia um bloco-comentrio (deve estar sozinho na linha que


precede o comentrio);
%} : fecha um bloco-comentrio (deve estar sozinho na linha que segue
o comentrio).
Durante a execuo, MATLAB ignora o que estiver dentro de um bloco-
comentrio, inclusive cdigo de programa. Um bloco-comentrio pode ser
utilizado para comentar cdigo no meio de um comando multilinha.
... ao fim de uma linha indica que ela no est terminada e o texto que
segue em outra linha de continuao.
Prof. Adade
MATLAB BSICO
Exportar e Importar Dados
MATLAB trabalha com dados em formato binrio ou texto (ASCII). Tambm importa
dados cientficos no formato HDF (Hierarchical Data Format).
A maneira mais fcil de importar dados para o ambiente Matlab utilizar o Import
Wizard, iniciado pela opo (boto) Import Data do menu File (HOME) ou pela funo
uiimport.
As variveis a importar de um arquivo podem ser selecionadas.

Prof. Adade
MATLAB BSICO
Exportar e Importar Dados
Funes save e load.

save : ocasiona que todas as variveis sejam gravadas no arquivo matlab.mat, no


diretrio atual (Obs. arquivos .MAT, estrutura especial em formato binrio).
load : restaura o espao de trabalho a partir do arquivo matlab.mat.

save b:TEMP X Y Z / load b:TEMP


armazena/restaura as variveis X, Y e Z no arquivo TEMP na unidade de disco b.
save FNAME a* % Salva em FNAME as variveis que iniciam com "a"
Esses comandos tambm possuem a opo de arquivos no formato ASCII; o resultado
gravado num arquivo de mesmo nome que a varivel, no caso do comando save, e
carregado numa varivel de mesmo nome que o arquivo, no caso do comando load.

Prof. Adade
Os seguintes exemplos ilustram a sintaxe e opes dos comandos save e load:
save/load nome-de-arquivo % salva/restaura o espao de trabalho em/a partir de
% arquivo .mat
save nome-de-arquivo X, Y, Z -ascii % salva variveis X, Y e Z em arquivo ASCII
load nome-de-arquivo -ascii % carrega arquivo como ASCII
save nome-de-arquivo W append % acrescenta dados a um arquivo .mat existente

Para denominar a varivel com nome diferente daquele do arquivo, usar a construo:
TAB = load ('b:dados.txt'), por exemplo.

Nos sub-diretrios de MATLAB\EXTERN\ h um conjunto de subrotinas e programas


para auxiliar a leitura/gravao de arquivos .mat por programas em C ou FORTRAN.

Documentar uma Sesso


diary ('nome-do-arquivo')
Omitindo-se nome-do-arquivo as informaes so gravadas no arquivo diary.
Para desligar a opo, diary off; para retomar, diary on.
Alternativamente, usar print (opo do menu File).

Prof. Adade
MATLAB BSICO
Operaes com Matrizes
Transposta '
Exs: A=[1 2 3; 4 5 6; 7 8 9]
B = A'
B=
1 4 7
2 5 8
3 6 9
x = [-2 0 1 ]'
x=
-2
0
1
Para matrizes complexas esta operao retorna a transposta da conjugada; para se obter a
transposta no conjugada de uma matriz A complexa, usar A.' ou conj(A').
Prof. Adade
MATLAB BSICO
Adio + e Subtrao -
Ex:
C=A+B
C=
2 6 10
6 10 14
10 14 18
Operandos devem ter a mesma dimenso, exceto quando um deles for um escalar, neste
caso, o escalar somado (ou subtrado) de todos os elementos do outro operando.
Ex:
y=x-1
y=
-3
-1
0
Prof. Adade
MATLAB BSICO
Multiplicao *
Ex:
C=A*B
C=
14 32 50
32 77 122
50 122 194

Diviso / e \
X = A \ B = inv(A) * B
X = B / A = B * inv(A)
Se A no for quadrada:
A*X=B ou X*A=B no sentido de mnimos quadrados.
Prof. Adade
MATLAB BSICO
Potenciao ^
Seja A uma matriz quadrada e p um escalar. Ento,

A ^ p = A *A*A * ... A ( se p for inteiro)


A ^ p = V * D^p * inv(V) ,
[V,D] = eig(A) (p qualquer)

No caso em que a um escalar e P uma matriz quadrada, a funo de


matriz a^P (cujo resultado uma matriz de mesma dimenso de P)
calculada atravs dos autovetores e autovalores de P.

Obs. X^P , X e P matrizes, no definido.

Prof. Adade
MATLAB BSICO
Operaes Elemento a Elemento
Soma + e subtrao - operam de forma convencional, elemento a
elemento de um vetor ou matriz.
.* : multiplicao
./ e .\ : diviso
.^ : potenciao
Exs:
x=[1 2 3] , y=[4 5 6]

z = x .* y
z=
4 10 18

Prof. Adade
MATLAB BSICO
Exs.
z = x .\ y % elemento de x divide elemento correspondente de y
z=
4.0000 2.5000 2.0000

z = x ./ y % elemento de x dividido pelo elemento de y correspondente


z=
0.2500 0.4000 0.5000

z = x .^ y
z=
1 32 729

z = 2 .^ [x y]
z=
2 4 8 16 32 64

Prof. Adade
MATLAB BSICO
Operaes Relacionais
< menor do que
<= menor do que ou igual a
> maior do que
>= maior do que ou igual a
== igual
~= no igual a
A comparao feita entre pares de elementos correspondentes e o resultado uma
matriz de uns e zeros, representando verdadeiro (1) e falso (0) na comparao.
Exs:
2 + 2 ~= 4
ans = 0
a = [ 1 2 3] , b = [ 1 4 6 ]
z = a >= b
z= 1 0 0

Prof. Adade
MATLAB BSICO
Exs. x = [1.3 1.9 2.8 5.0 3.2 2.2 2.7 1.5 1.1 3.0]
Y = x(x<3) % indexao lgica (indexa os elementos de x menores do que 3)
Y=
1.3000 1.9000 2.8000 2.2000 2.7000 1.5000 1.1000

x = x(x <= 3 * std(x)) % remove do vetor x aqueles elementos maiores do que


% trs desvio-padro (outliers)
x=
1.3000 1.9000 2.8000 3.2000 2.2000 2.7000 1.5000 1.1000 3.0000

Obs. std(x) = 1.1528.

Prof. Adade
MATLAB BSICO
Operaes Lgicas
(operam elemento a elemento):

& : AND
| : OR
~ : NOT
Os operadores lgicos retornam um (1) quando verdadeiro (True) e zero (0) quando
falso (False). Elementos no nulos so considerados verdadeiros pelos operadores
lgicos.
Exs:
~A : retorna 0s onde A for no nula e 1s onde A for nula.
a=[1 2 3] , b=[0 3 4]
a&b
ans = 0 1 1
Prof. Adade
MATLAB BSICO
Funes Matemticas do MATLAB
i. Elemento a Elemento
Certas funes operam essencialmente sobre escalares mas operam sobre cada
elemento quando aplicados a uma matriz. Mais comuns:
abs valor absoluto ou magnitude do complexo
sqrt raiz quadrada
real parte real
imag parte imaginria
conj complexo conjugado
gcd maior divisor comum
lcm mnimo mltiplo comum
rem calcula o resto de uma diviso
round arredonda para o inteiro mais prximo
fix arredonda para menor (em direo a zero)
floor arredonda em direo a -
ceil arredonda para maior (em direo a + )
rat aproximao racional
Prof. Adade
MATLAB BSICO
sin , sinh seno, seno hiperblico
cos , cosh coseno, coseno hiperblico
tan , tanh tangente, tangente hiperblica
asin , asinh arco seno, arco seno hiperblico
acos , acosh arco coseno, arco coseno hiperblico
atan2 arco tangente nos quatro quadrantes
exp exponencial (base e)
log logartmo natural
log10 logartmo base 10

Prof. Adade
MATLAB BSICO
Exemplos.
A=[1 2 3; 4 5 6]

B = fix(pi*A)

B=3 6 9
12 15 18

C = cos(pi*B)

C = -1 1 -1
1 -1 1

Prof. Adade
MATLAB BSICO
Exemplo. x = 1; y = [1 -1 0]; z = [y; 0 1 1; -1 0 1];

>> exp(x)
ans =
2.7183

>> exp(y)
ans =
2.7183 0.3679 1.0000

>> exp(z)

ans =
2.7183 0.3679 1.0000
1.0000 2.7183 2.7183
0.3679 1.0000 2.7183

Prof. Adade
MATLAB BSICO
ii. Vetores
(se o argumento for uma matriz elas atuam a cada coluna, produzindo um vetor
linha como resultado; algumas dessas funes admitem definir, como segundo
argumento, a dimenso em que feito o clculo da funo, p. ex. mean(X,2)
calcula a mdia da matriz X por linha, resultando um vetor coluna).

max maior valor


min menor valor
mean mdia (valor mdio)
std desvio padro
sum soma dos elementos
prod produto dos elementos
sort classifica em ordem crescente

Prof. Adade
MATLAB BSICO
Ex.

sum(A) : vetor-linha com a soma dos elementos das colunas de A;

sum(A') : vetor-linha com a soma dos elementos das linhas de A;

sum(A')' : vetor-coluna com a soma dos elementos das linhas de A;

sum(diag(A)) : soma dos elementos da diagonal principal de A;

sum(diag(fliplr(A))) : soma dos elementos da anti-diagonal principal de A;

(Obs. fliplr rearranja a matriz A da coluna direita para a coluna esquerda)

Prof. Adade
MATLAB BSICO
Exemplo. Uma turma de 8 alunos obteve as seguintes notas em trabalhos e provas,
conforme representado na matriz abaixo, onde cada coluna refere-se a um aluno e as
linhas s respectivas notas.
Notas = [ 7 8 5 7 9 9 10 5
7.5 8.5 7 7 9 10 9 4
8 8.5 7 7 8.5 9 9 7
7 8 6 7 8.5 9 8.5 6]
(1) Determinar a mdia de cada aluno (mdia aritmtica das avaliaes):
media = mean(Notas)
media =
7.3750 8.2500 6.2500 7.0000 8.7500 9.2500 9.1250 5.5000
(2) Qual a maior nota obtida pelo aluno nas avaliaes?
maior_nota = max(Notas)
maior_nota =
8.0000 8.5000 7.0000 7.0000 9.0000 10.0000 10.0000 7.0000
Prof. Adade
MATLAB BSICO
Funes lgicas e relacionais mais comuns so:

any any(x) retorna 1 se quaisquer dos elementos do vetor x for no nulo e 0 caso
contrrio.

all all(x) retorna 1 se todos os elementos de x forem diferentes de zero.

find find(x) retorna os ndices dos elementos no nulos de x.

OBS. Se x for uma matriz, retorna os ndices dos elementos no nulos


empilhando x por coluna.

finite finite(x) retorna 1 para os elementos de x que forem finitos.

isnan isnan(x) retorna 1 para os elementos de x que forem NaN.

isinf isinf(x) retorna 1 para os elementos de x que forem .


Prof. Adade
MATLAB BSICO
Exs:
a=[1 2 3] , b=[1 4 6]

find (b>2)

ans =
2 3

finite(a)

ans =
1 1 1

Prof. Adade
MATLAB BSICO
Funes Matemticas do Matlab
Funes para tratar conjuntos interpretam vetores como conjuntos, permitindo que
sejam realizadas operaes como unio e interseo:
intersect - conjunto interseo de dois vetores;
ismember - detecta membros de um conjunto;
setdiff - retorna o conjunto diferena de dois vetores;
setxor - conjunto XOR (OR exclusivo) de dois vetores;
union - conjunto unio de dois vetores;
unique - retorna os elementos nicos de um vetor.
Exs.
a=[1 2 3 ]; b=[1 4 6];
intersect(a,b) union(a,b)

ans = ans =
1 1 2 3 4 6
Prof. Adade
MATLAB BSICO
iii. Funes de Matrizes
Algumas das mais teis esto relacionadas a seguir.
inv inversa
det determinante
size retorna as dimenses da matriz
norm norma (norma-1, norma-2, norma-F, norma-)
rank determina o posto
cond determina o nmero de condio da matriz
eig calcula autovalores e autovetores
svd calcula decomposio em valores singulares
poly retorna os coeficientes do polinmio caracterstico
qr fatorao QR
rref forma escalonada em linha (row echelon) reduzida
expm exponencial de matriz
sqrtm raiz quadrada de matriz

Prof. Adade
MATLAB BSICO
Algumas funes pedem mltiplos argumentos de entrada, por exemplo,
teta = atan2 (v,u)
Outras retornam dois ou mais valores de sada, por exemplo,
[V,D] = eig(A)
D: diagonal com os autovalores de A; e
V: matriz de autovetores normalizados, correspondentes aos autovalores de A.
Ex. A=[1 2 3; 4 5 6; 7 8 0]
[V,D] = eig(A)
V = 1.0000 0.4238 -0.3142
-0.8810 1.0000 -0.4418
0.1246 0.9046 1.0000
D = -0.3884 0.0000 0.0000
0.0000 12.1229 0.0000
0.0000 0.0000 -5.7345

Prof. Adade
MATLAB BSICO
[y,k] = max(X)
que retorna o valor mximo y encontrado no vetor X e o ndice k do elemento
correspondente.

[m,n] = size(A) retorna as dimenses m (linhas) e n (colunas) de A. Algumas dessas


funes podem ser usadas com menos variveis de sada. Por exemplo,

z = eig(A) retorna vetor coluna z contendo os autovalores de A.

Prof. Adade
MATLAB BSICO
MATLAB Bsico possui um conjunto bem extenso de funes
nas categorias: matemtica elementar, construo de matrizes,
clculo matricial, anlise de dados, decomposies e
fatoraes de matrizes, polinomiais, processamento de sinais.

As funes so fornecidas como funes intrnsecas ou M-


files.

Toolboxes especializados ampliam esses recursos e o


usurio tambm pode criar novas funes.

Prof. Adade
MATLAB BSICO
Funes para Construo de Matrizes
eye: eye(k), eye(size(A)) retornam uma matriz identidade de dimenso
k e da mesma dimenso de A, respectivamente.
zeros: zeros(2,3), zeros(size(A)) retornam uma matriz nula de dimenso
2x3 e de mesma dimenso que A, respectivamente.
ones: ones(4,2), ones(size(A)) retornam uma matriz com 1s de dimenso
4x2 e de mesma dimenso que A, respectivamente.
diag: diag(x) cria uma matriz diagonal com o vetor x na diagonal
principal; usando diag com mais um argumento de entrada coloca-
se o vetor x em outra diagonal que no a principal; diag(A) retorna
um vetor com a diagonal principal da matriz quadrada A.

Prof. Adade
MATLAB BSICO
rand: rand(4,3), rand(n) criam uma matriz de nmeros aleatrios
uniformemente distribudos no intervalo (0,1), de dimenso 4x3 e nxn,
respectivamente.

Obs 1. rand usada sem argumento retorna um escalar cujo valor alterado cada
vez que a funo referenciada.

Obs 2. A frmula usada para a semente seed=(7^5*seed) mod(2^31-1); a


semente de uma sequncia de nmeros aleatrios (cujo valor default
zero) pode ser alterada com o comando rand(seed,v), que faz com que
a semente passe a ser v;

A funo randn deve ser usada para gerar nmeros


aleatrios com distribuio normal.
Statistical toolbox: normrnd (n.a. distrib. normal), ksdensity (f.d.p.) etc.
Prof. Adade
MATLAB BSICO
Submatrizes, Indexao e a Notao :

i. Gerar vetores
x = 1: 5 resulta,
x= 1 2 3 4 5

y = 0 : pi/4 : pi resulta,
y = 0.0000 0.7854 1.5708 2.3562 3.1416

z = 5 : -1 : 1 resulta,
z= 5 4 3 2 1

Exerccio. Gerar uma tabela com os valores de t e y(t) = e-t sent .

Prof. Adade
MATLAB BSICO
Os comandos,

t = (0.0 : 0.1 : 2.0); y = exp(-t) .* sin(t);


[t y] % geram a tabela,

ans = 0 0
0.1000 0.0903
... ...
1.9000 0.1415
2.0000 0.1231

Obs. As funes linspace e logspace tambm podem ser usadas para gerar vetores.

linspace (X1, X2, N) gera N pontos espaados linearmente entre X1 e X2.

logspace (X1, X2, N) gera N pontos espaados logaritmicamente entre 10X1 e 10X2.

Prof. Adade
MATLAB BSICO
ii. Acessar (indexar) Submatrizes
Matrizes podem ser acessadas/extradas de outras maiores.

Ex: Seja A uma matriz 10x10:


B = A(1:3, :) submatriz formada pelas trs primeiras linhas e todas as colunas de A.
A(1:4,2) submatriz 4x1 formada pelos quatro primeiros elementos da 2 coluna de
A.
A(1:5,7:10) submatriz 5x4 formada pelos elementos das cinco primeiras linhas e
quatro ltimas colunas.
A(:,5) quinta coluna de A ; A(:,end) ltima coluna de A.
b = A(:) empilha as colunas de A formando o vetor coluna b.
A(:,[3 5 10]) = B(:,1:3) substitui a 3, 5 e 10 colunas de A pelas trs primeiras
colunas de B;
Prof. Adade
MATLAB BSICO
A(:,10:-1:1) reverte as colunas de A;
A([3,5]) denota o terceiro e quinto elementos de A, numerados por
coluna;
A(:,[2 4]) = [ ] elimina as colunas 2 e 4 da matriz A.
A(L,:) especifica as linhas de A cujos elementos do vetor L no so nulos.
A(logical([0 0 1 0 1])) denota o terceiro e quinto elementos de
A, numerados por coluna;

Obs. A sintaxe requer que a indexao seja por um vetor de 1's e 0's lgicos.

Prof. Adade
MATLAB BSICO
Concatenao
Ex: C=[A eye(4) ; ones(size(A)) A^2 ]
assumindo que A possui 4 linhas.
cat(dim,A,B,C,...): concatena os arrays A, B , C, ... ao longo da dimenso especificada
em dim.

Ex 1. A = [1 2 3; 4 5 6]; B = [7 8 9; 10 11 12]; C = [13 14 15; 16 17 18];

cat(2,A,B,C) % notar que o mesmo que [A, B, C]

ans =
1 2 3 7 8 9 13 14 15
4 5 6 10 11 12 16 17 18

cat(1,A,B,C) % notar que o mesmo que [A; B; C]

Prof. Adade
MATLAB BSICO
Concatenao
repmat : permite replicar e empilhar um array.

Exs:

D = repmat(A,3,4) % faz rplica e empilha a matriz A tal que a matriz D


% formada: D = [ A A A A; A A A A; A A A A].
repmat(A,[1,4,2]) % replica matriz A conforme especificado, formando array

ans(:,:,1) =
1 2 3 1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6 4 5 6

ans(:,:,2) =
1 2 3 1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6 4 5 6
Prof. Adade
MATLAB BSICO
Estruturas de Dados

Prof. Adade
MATLAB BSICO
Outras Estruturas de Dados
i. Arrays Multidimensionais
Arrays (generalizao multidimensional de matrizes) podem ser criados da seguinte
maneira:
- usando-se funes Matlab tais como zeros, ones ou randn;
- usando a funo de concatenao cat;
- usando a funo de rplica repmat; ou
- indexando um array j existente.
Ex.
A = [1 2; 3 4]; B = [5 6; 7 8];
C(:,:,1) = A; C(:,:,2) = B;
C
ans(:,:,1) = ans(:,:,2) =
1 2 5 6
3 4 7 8
Operaes aritmticas em arrays devem ser realizadas elemento-a-elemento (p. ex. usar .* para multiplicao).
Prof. Adade
MATLAB BSICO
Arrays Multidimensionais
A = [1 2; 3 4]; B = [5 6; 7 8]; C = [9 10; 11 12];
D(:,:,1) = A; D(:,:,2) = B; D(:,:,3) = C;
D
D(:,:,1) = D(1,2,2)
9 10
1 2 11 12
3 4

D(:,:,2) = 5 6
5 6 7 8
7 8

D(:,:,3) = 1 2
9 10 3 4

11 12
O primeiro ndice referencia a dimenso 1, a linha; o segundo ndice referencia a dimenso 2, a
coluna, e o terceiro ndice referencia a dimenso 3, uma pgina ou plano.

Prof. Adade
MATLAB BSICO
Arrays Multidimensionais
Obs. A funo reshape (X,M,N) pode ser usada para reformatar um array (em vetor ou matriz). X
deve ter MxN elementos.
Exs.
reshape(D,12,1) ; % cria vetor (empilha colunas) reshape(D,4,3) ; % cria matriz

ans = ans =
1 1 5 9
3 3 7 11
2 2 6 10
4 4 8 12
5
7
6
8
9
11
10
12
Prof. Adade
MATLAB BSICO
Outras Estruturas de Dados
ii. Arrays de Clulas
Clulas so unidades multidimensionais de dados dissimilares. Arrays de clulas (de
diferentes dimenses), cujos elementos so cpias de outros arrays, podem ser criadas
da seguinte maneira:
- utilizando-se o smbolo para construo de arrays de clulas { } ;
- utilizando-se comandos de atribuio; ou
- utilizando-se a funo cell.
Ex.
m = 2; X = [ -m : m ];
C = {X vander(X) norm(vander(X))}
% produz um array 1x3 de clulas, contendo um vetor com valores simtricos,
% uma matriz de Vandermonde associada e a sua norma espectral (max(svd()).
C=
[1x5 double] [5x5 double] [23.4361]

Prof. Adade
MATLAB BSICO
Para se acessar o contedo de uma das clulas, usar subscritos entre chaves:
C{2} ans = Obs.
16 -8 4 -2 1 (-2) 4
(-2)3 (-2) 2 (-2)1 (-2)0

(-1) (-1)3 (-1)2 (-1)1 (-1)0
4
1 -1 1 -1 1
( 0) 4 ( 0) 3 ( 0) 2 (0)1 ( 0) 0
0 0 0 0 1 4
(1)3 ( 0) 2 (0)1

( 0) 0
(1)
1 1 1 1 1 ( 2) 4
( 2) 3 ( 2) 2 (2)1 (2)0
16 8 4 2 1
Para acessar o contedo de todas as clulas, usar celldisp.
clula {1} clula {2} clula {3}
[16 -8 4 -2 1
[-2 -1 0 1 2] 1 -1 1 -1 1 23.4361
0 0 0 0 1
1 1 1 1 1
16 8 4 2 1]

Para acessar subconjuntos do contedo de uma clula, concatenar expresses indexadoras.


Por exemplo, para obter a primeira linha da matriz na clula C{2}, usar C{2}(1,:).

Prof. Adade
MATLAB BSICO
Ex . Criar um array de clulas usando comandos de atribuio:
A(1,1) = {[1 2; 3 4]}; A(1,2) = {'sistemas de controle'};
A(2,1) = {[1+j;1-j]}; A(2,2) = {-3:3};
celldisp (A)
clula {1,1} clula {1,2}
1 2 sistemas de controle
3 4
clula {2,1} clula {2,2}
1.0000 + 1.0000i [-3 -2 -1 0 1 2 3]
1.0000 - 1.0000i

Alternativamente, o array de clulas acima pode ser criado fazendo-se:


A{1,1} = [1 2; 3 4]; A{1,2} = 'sistemas de controle';
A{2,1} = [1+j;1-j]; A{2,2} = (-3:3);
Adicionar uma clula fora do limite do array, por exemplo, A{3,3} = 1, ocasionaria um
aumento de dimenso no array e os demais elementos criados ficariam em vazio.
Prof. Adade
MATLAB BSICO
Outras Estruturas de Dados
iii. Arrays de Estruturas
Estruturas tambm so arrays multidimensionais de diferentes tipos de dados mas
seus elementos - recipientes de dados chamados campos - so acessados por
designadores de campos textuais (campos nominados) e no atravs de operaes de
indexao como nos arrays de clulas.
Por exemplo:

aluno Usando-se comandos de atribuio, pode-se construir uma estrutura:

.nome aluno.nome = 'maquintochi silva', aluno.curso = 'controle mental',


.curso aluno.notas = [ 3.5 4.5 6.0]
.notas aluno =
nome: 'maquintochi silva'
curso: 'controle mental'
notas: [3.5000 4.5000 6]
Prof. Adade
MATLAB BSICO
Outros elementos poderiam ser adicionados a essa estrutura:
aluno(2).nome = 'Z Man';
aluno(2).curso = 'Aerodinmica';
aluno(2).notas = [1.4];
aluno(2)
As estruturas podem ser organizadas em arrays de dados, criados utilizando-se comandos
de atribuio, como no exemplo acima, ou utilizando-se a funo struct.
aluno(3) = struct('nome', 'Patty Kelly', 'curso', 'Socialites Anlise Comparada',...
'notas', [9.5 9.7 10] )
Como a estrutura j est grande, foi exibido somente um resumo. Mas digitando-se,
aluno(3)
ans =
nome: 'Patty Kelly'
curso: 'Socialites - Anlise Comparada'
notas: [9.5000 9.7000 10]
Prof. Adade
MATLAB BSICO
Para acessar um campo de uma estrutura, incluir um ponto (.) aps o nome da estrutura,
seguido pelo nome do campo. Por exemplo,
str = aluno(2).nome
Para acessar (ou atribuir valores a) elementos dentro dos campos, acrescentar a indexao
apropriada ao nome do campo. Por exemplo,
aluno(2).nota(3)
fieldnames(aluno) % retorna os nomes dos campos que compem a estrutura
size permite obter a dimenso de um array de estruturas ou de quaisquer de seus campos.
Um novo campo pode ser acrescentado ao array adicionando-se o campo a uma nica
estrutura. Por exemplo,
aluno(2).id = '100901-B'
cria e adiciona o valor acima ao campo "registro da identidade" do aluno(2) e todos os
outros do array de alunos passam a apresentar este campo, vazio.
Prof. Adade
MATLAB BSICO
rmfield(aluno, 'notas') % elimina o campo notas da estrutura aluno
ans =
1x3 struct array with fields:
nome
curso
getfield / setfield permitem obter / estabelecer o contedo de um campo da estrutura.
{aluno.nome} % cria um array de clulas contendo os nomes dos alunos
ans =
'Maquintochi Silva' 'Z Man' 'Patty Kelly'
char(aluno.nome) % cria um array de caracteres do campo nome
ans =
Maquintochi Silva
Z Man
Patty Kelly
Prof. Adade
MATLAB BSICO
Outras Estruturas de Dados
iv. Classes e Objetos
Em aplicaes pode ser til associar-se atributos especficos a certas categorias de dados.
Classes so novos tipos de dados tendo comportamentos especficos para elas definidos
(estruturas e operaes), portanto, podem ser vistas como itens novos que podem ser tratados
como entidades nicas.
Um objeto um exemplar de uma classe particular, assim objetos so estruturas tipificadas. O
rtulo dado classe identifica tanto o tipo da estrutura quanto o nome da funo que cria objetos
que pertencem quela classe.
As possveis classes de objetos so:
double - array de nmeros em ponto flutuante preciso dupla;
sparse - matriz esparsa, real ou complexa;
struct - array de estruturas;
cell - array de clulas;
char - array de caracteres alfanumricos;
'class_name' - classe de objeto definido pelo usurio.
'java_class' - nome da classe Java para objetos java
int8, uint8, int16, uint16, int32, uint32 arrays de inteiros
Prof. Adade
MATLAB BSICO
Traando Grficos em MATLAB

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Os principais tipos de grficos proporcionados so:

plot / plot3 : linear X-Y / linear X-Y-Z


loglog : log-log X-Y
semilogx / semilogy : semilog X-Y (eixo X logartmico / eixo Y logartmico, respect.)
polar : diagrama polar
mesh / surf : superfcie malha 3D/superfcie facetada 3D
contour : curvas de nveis
hist, bar/bar3, pie : histograma
stairs : tipo escada, prprio para sinais amostrados
stem : assinala pontos discretos com hastes

Obs 1. A sada grfica mostrada em janela(s) diferente(s) da janela de comandos.

Obs 2. (R2013) traz botes (menu PLOT) para traado de grficos.


Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab

FORMA BSICA
Usando o browser de espao de trabalho, um grfico de uma varivel pode ser gerado
pressionando-se o boto direito sobre a varivel e escolhendo o tipo de grfico na
opo Graph Selection no menu de contexto.

plot (Y): produz um grfico linear dos elementos de Y pelos ndices de Y.


plot (X,Y): produz um grfico linear Y (ordenada) X (abcissa).
A escala definida automaticamente bem como os eixos coordenados.
Pode-se melhorar a sada dando-se ttulo e nomes aos eixos, por exemplo.
O comando plot(X,Y), X e Y matrizes de mesma dimenso,
plota as colunas de Y versus as colunas de X.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Ex.
y = [ 0 0.6 0.9 0.1 0.8 0.3 0.4];
plot(y)
title ('Grficos - Teste 01')
xlabel ('eixo X')
Grficos - Teste 01
0.9

ylabel ('eixo Y') 0.8

0.7

0.6

0.5

eixo Y
0.4

0.3

0.2

0.1

0
1 2 3 4 5 6 7
eixo X

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Dados dois vetores de mesma dimenso, x e y, pode-se traar o grfico de y versus x atravs do
comando plot(x,y).
Ex.

t = 0 : .1 : 4*pi; 1
Grficos - Teste 02

y = sin(t); 0.8

plot(t,y), ... 0.6

title('Grficos - Teste 02'), ... 0.4

xlabel('t'), ... 0.2

sent
ylabel('sent'), ... 0

-0.2
grid
-0.4

-0.6

-0.8

-1
0 2 4 6 8 10 12 14
t

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Ex. Traando mltiplas curvas no mesmo grfico.

t = 0 : .1 : 3*pi; y = sin(t); 8
Grficos - Teste 03

z=exp(-0.3*t) .* cos(t); w = t .* sin(t);


6 t * SENO
plot(t,y,t,z,t,w)
xlabel('t'); ylabel('Funes') 4

Funes
title('Grficos - Teste 03') 2

text(2,0.8, 'SENO') 0
SENO

text(6,6, 't * SENO') -2


EXP * COSENO

text(1,-1,'EXP * COSENO')
-4

-6
0 2 4 6 8 10
t

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Ttulos, Rtulos, Texto, Legenda
title('Ttulo','Propriedade1', 'Valor1', 'Propriedade2', 'Valor2')
xlabel('Rtulo do eixo-X','Propriedade1, 'Valor1')
ylabel('Rtulo do eixo-Y')
zlabel('Rtulo do eixo-Z')
gtext('Texto para anotao'); % texto posicionado na tela pelo mouse
text(x,y,'Texto para anotao'); % coloca o texto na posio especificada por x e
% y, nas unidades do ltimo grfico
legend('Texto1', 'Texto2') % coloca legenda com os textos especificados
A edio de uma figura/grfico facilitada pelos recursos proporcionados na
prpria janela grfica; alternativamente, usar o comando plottools.
Uma figura pode ser armazenada em arquivo .fig usando-se a opo save e carregada
usando-se a opo open do menu File.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Particionamento da Tela : subplot(r,c,p)
A tela particionada em r c janelas e p a janela atual.
Ex:
clf ; % limpa a tela grfica
wt = 0 : 0.05 : 3*pi; 1

0.8 0.8
1

x = sin(wt); y = sin(wt - pi/4); 0.6 0.6

subplot(1,2,1), plot(wt,x,'r',wt,y,'g');

y=sen(wt-pi/4)
0.4 0.4

0.2 0.2
xlabel('wt - radianos) 0 0

subplot(1,2,2), plot (x,y,'b'); -0.2 -0.2

xlabel('x=sen(wt)'); -0.4

-0.6
-0.4

-0.6
ylabel('y=sen(wtpi/4)') -0.8 -0.8

-1 -1
0 5 10 -1 0 1
wt - radianos x=sen(wt)

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Controle de Tela e de Escalas
shg : mostra a tela grfica;

clf : limpa a tela grfica;

hold on, (hold off) : mantm (ou no) o grfico atual na tela tal que
outros grficos podem ser superpostos (nos
mesmos eixos).
gcf : retorna o nmero da figura atual;

figure : abre uma nova janela para grficos; figure(k) expe a k-


sima figura e a torna a figura atual.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Um subconjunto da notao TeX produz letras gregas, smbolos matemticos e fontes
alternativas para anotaes em grficos, conforme tabela a seguir.
Modificadores podem ser utilizados para controlar a fonte das letras:
\bf negrito
\it itlico
\sl oblqua
\rm normal
\fontname{fontname} especifica o nome da famlia de fontes.
\fontsize{fontsize} especifica o tamanho da fonte.

Modificadores de fontes permanecem efetivos at o final da sucesso de caracteres


(string) ou dentro do contexto definido por chaves { }.
ndices so inseridos no texto por meio dos caracteres "_" (ndice inferior) e "^" (ndice
superior): eles modificam o caractere ou a sequncia de caracteres entre chaves que
imediatamente os sucedem.
Prof. Adade
MATLAB BSICO
Seqncia Smbolo Seqncia Smbolo Seqncia de Smbolo
de de Caracteres
Caracteres Caracteres
\alpha a \upsilon u \sim ~
\beta b \phi f \leq
\gamma g \chi c \infty
\delta d \psi y \clubsuit
\epsilon e \omega w \diamondsuit
\zeta z \Gamma G \heartsuit
\eta h \Delta D \spadesuit
\theta q \Theta Q \leftrightarrow
\vartheta J \Lambda L \leftarrow
\iota i \Xi X \uparrow -
\kappa k \Pi P \rightarrow
\lambda l \Sigma S \downarrow
\mu m \Upsilon U \circ
\nu n \Phi F \pm
\xi x \Psi Y \geq
\pi p \Omega W \propto
\rho r \forall " \partial
\sigma s \exists $ \bullet
\varsigma V \ni ' \div
\tau t \cong @ \neq
\equiv \approx \aleph
\Im \Re \wp
\otimes \oplus \oslash
\cap \cup \supseteq
\supset \subseteq \subset
\int \in \o o
\rfloor \lceil \nabla
\lfloor \cdot \ldots
\perp ^ \neg \prime

Prof. Adade
MATLAB BSICO
Para inserir caracteres especiais, usar o caractere "\"
como prefixo ou utilizar a funo texlabel.
Exemplos.

% incluir ndices, (Ex. a2&X1)


ylabel('\alpha^2 & X_1')
2
% (Ex. & X ) 1

ylabel('\alpha^2 & X_{\beta_1}')

% incluir letras gregas; fonte: itlico.


% Ex: eiwt = cos wt + i sen wt
title('\ite^{i\omega\tau} = cos(\omega\tau) +
isen(\omega\tau) ')
% Ex: l12-1 p d2/3
text(0.5,0.5,'\lambda_{12}^{-1} - \pi \delta^{2/3}' )

Alternativamente,
text(0.5,0.5,texlabel('lambda_12^(-1) pi*delta^(2/3)'))

Prof. Adade
MATLAB BSICO
Como incluir o valor de uma varivel em um ttulo?
Ex.
f = 70; c = (f - 32)/1.8;
title(['Temperatura ', num2str(c),' \circC'], 'Color', 'r')
% Ex. Temperatura 21.1111 C
(Obs. ttulo em vermelho).

Alguns teclados so alterados com o uso da


tecla Alt ( direita). Dessa forma possvel, no
Matlab, digitar texto com vogais acentuadas (p.
ex. Alt+e proporciona ) e diversos smbolos
diretamente.

Prof. Adade
MATLAB BSICO
Estilos de Linhas, Marcaes e Cores
O estilo da linha/smbolo utilizada na plotagem, bem como
a cor, podem ser definidos por intermdio de um argumento
para a funo plot:
plot(x,y,S)
onde S uma string (alfanumrico) de 1, 2 ou 3 caracteres,
entre apstrofos, construda a partir dos caracteres
mostrados na tabela abaixo:
Smbolo Cor Smbolo Estilo da
Linha/Marcao
y amarela pontilhada
m magenta crculo
c cyan x
r vermelha +
g verde * asterisco
b azul - linha cheia
w branca : dois pontos
k preta trao-ponto
-- linha tracejada
none nenhuma linha
s quadrado
d diamante
p pentagrama
h hexagrama
v tringulo (para
cima)
^ tringulo (para
baixo)
< tringulo (esquerda)
> tringulo (direita)

Prof. Adade
MATLAB BSICO
Ex.

t = 0 : pi/100 : 2*pi;
x = sin(t); y1 = sin(t+0.25); y2 = sin(t+0.5);
plot(x,y1, 'r-',x,y2, 'g--')

Prof. Adade
MATLAB BSICO
A ordem das cores uma sequncia pr-
ajustada. Esta sequncia pode ser alterada
modificando-se a propriedade ColorOrder.

Para definir a propriedade ColorOrder que ser


usada em uma sesso:

set(0,'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1])

(cores vermelha, verde e azul, e assim sucessivamente)

As cores so definidas por uma matriz m3 de valores


RGB, onde m o nmero de cores.

Colocando o comando acima no arquivo startup.m o


MATLAB passar a usar sempre essa sequncia de cores.

Prof. Adade
MATLAB BSICO
As escalas dos eixos so estabelecidas automaticamente.
Para alterar o pr-ajuste, usa-se o comando:

axis ([x_min,x_max,y_min,y_max])
em seguida ao comando plot.

axis: sozinho, retorna os limites dos eixos em uso;


axis(auto) propicia ajuste automtico dos eixos;
axis(axis) fixa os limites de eixos nos valores atuais;
axis(equal) estabelece incrementos iguais para os eixos;
axis(normal) restaura o padro normal;
axis(off) apaga todos os rtulos e marcas dos eixos;
axis(image) ajusta razo de aspecto e limites dos
eixos para representar imagens com pixels quadrados.

Obs. Para grficos tridimensionais:

axis([x_min, x_max, y_min, y_max, z_min,


z_max]).
zoom (fator) : modifica a escala de exibio do grfico, pelo fator
especificado.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Criar duas curvas em um grfico com escalas diferentes
plotyy(x1,y1,x2,y2) : plota y1 versus x1 com a rotulagem e marcao do eixo-y esquerda e
plota y2 versus x2 com a rotulagem e marcao do eixo-y direita.
Ex.

x1=0:pi/10:4*pi; x2=0:pi/20:6*pi;
plotyy(x1,cos(x1),x2,x2.*sin(x2))

plotyy(X1,Y1,X2,Y2,FUN) utiliza a funo de plotagem FUN em vez da funo plot. FUN deve ser
o identificador (handle) para uma funo de plotagem, por exemplo, @plot, @semilogx,
@semilogy, @loglog, @stem etc., que aceite a sintaxe H = FUN(X,Y).
plotyy(X1,Y1,X2,Y2,FUN1,FUN2) utiliza FUN1(X1,Y1) para plotar os dados no eixo esquerda e
FUN2(X1,Y1) para plotar os dados no eixo direita.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Curvas no Espao Tridimensional
plot3(x,y,z) : produz uma perspectiva (projeo bi-dimensional) da curva linear-
por partes que passa pelos pontos cujas coordenadas so os elementos de x, y e z,
vetores de mesma dimenso.
4

x 10

Ex: 4

t = 0.01 : .05 : 10*pi; 3

x = cos(t); y = sin(t); z = t .^3; 2

plot3(x,y,z,'r') 1

0
1
0.5 1
0 0.5
0
-0.5 -0.5
-1 -1

Prof. Adade
% Load the spectra data
load spectraData masscharge time spectra;

% Create the 3D plot


figure;
plot3(masscharge, time, spectra);
box on;

% Set the viewing angle and the axis limits


view(26, 42);
axis([500 900 0 22 0 4e8]);

% Add title and axis labels


xlabel('Mass/Charge (M/Z)');
ylabel('Time');
zlabel('Ion Spectra');
title('Extracted Spectra Subset');

http://www.mathworks.com/matlabcentral/fileexchange/35262-matlab-plot-gallery-line-plot-3d/content/html/Line_Plot_3D.html

Prof. Adade
% Conjunto de registros de um sinal aleatrio.
t=0:0.05:2;
for k=1:10,
Y(1:length(t),k) = randn(length(t),1); end
k=1; plot3(t,k*ones(length(t)),Y(:,k)), hold
for k=2:10,plot3(t,k*ones(length(t)),Y(:,k))
end

Para obter a visualizao acima, foram utilizados recursos de rotate 3d e edio direta na tela grfica.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Curvas de Nveis e Preparao de Grades de Dados
Para se produzir um grfico de superfcie (ou de nveis) de vetores x, y e z (z =
f(x,y)), z deve ser mapeado para uma grade retangular x-y (dados igualmente
espaados).
griddata : interpola os dados permitindo gerar dados igualmente espaados para fins de
plotagem.
Ex. Sejam x, y, z (z funo de x e y) vetores de dados espaados de forma irregular:
x=-2:0.05:2; y=4*rand(1, length(x))-2; % y entre -2 e 2; z=x .* exp(-x.^2- y.^2);
xmin=min(x); ymin=min(y); xmax=max(x); ymax=max(y);
xi=xmin:0.01*(xmax-xmin):xmax; yi=ymin:0.01*(ymax-ymin):ymax;
zi = griddata (x,y,z,xi',yi); % preenche a grade definida por xi e yi interpolando
% valores originais de x,y,z.
contour (xi,yi,zi);
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Curvas de Nveis e Preparao de Grades de Dados
A funo contour permite traar grfico de curvas de nveis para uma superfcie.
Ex. Traar curvas de nveis para a funo z = x e
- x2- y 2
.

colormap winter 2

x = -2:0.1:2; y = -2:0.1:2; 1.5

[X,Y] = meshgrid(x,y); 1

Z = X .* exp(-X.^2 - Y.^2); 0.5

contour (x,y,Z) 0

-0. 5

A funo contour (x,y,z) representa -1

os valores de x e y que correspondem -1. 5

a um dado valor (nvel) de z. -2


-2 -1. 5 -1 -0. 5 0 0.5 1 1.5 2

Valores de z podem ser colocados no


grfico usando-se o comando clabel.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Grficos de Superfcies
mesh: mesh(v) cria uma perspectiva tridimensional dos elementos
da matriz v.
A superfcie em malha, criada pelo comando mesh, definida pelas
coordenadas-Z (alturas) dos pontos acima de uma grade retangular no
plano X-Y.
surf : semelhante funo mesh s que a superfcie sombreada.

meshc, surfc : semelhante mesh e surf, porm tambm


mostram as curvas de nveis para a funo.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Supor que se queira plotar z = f(x,y), onde x e y definem o domnio de f.
Procede-se como segue:

1) Definir os vetores x e y em seus intervalos de valores;


2) Gerar um plano correspondente ao domnio. A superfcie em malha
construda no topo deste plano com alturas determinadas pelos valores
da funo;
3) O comando meshgrid produz este plano criando duas matrizes com
linhas e colunas repetidas dos vetores x e y;
4) Finalmente, a funo calculada nos elementos das matrizes resultantes.
A funo mesh (ou a funo surf) ento aplicada sobre o resultado.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Ex. Plotar um grfico de superfcie do valor absoluto da funo,

G (s + j w ) = 1
(s - w + s + 1 ) + j ( 2 s w + w )
2 2

para -3 s 3 e -3 w 3.

w = linspace(-3,3,50); 8

% cria vetor com 50 elementos 6

% linearmente espaados entre -3 e 3 4

s = linspace(-3,3,50); 2
[W,S] = meshgrid(w,s);
re = S .^2 - W .^2 + S + 1; 0
4
2 4
im = 2 * S .* W + W; 0 2
0
den = re + j * im; g = 1 ./ abs(den); -2
-4 -4
-2

mesh(s,w,g)
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
n = 30; a = 1; r = 0.5;
teta = pi * (0 : 2 : 2 * n) / n;
fi = 2 * pi * (0 : 2 : n)' / n;
x = (a + r * cos(fi)) * cos(teta);
y = (a + r * cos(fi)) * sin(teta);
z = r * sin(fi) * ones(size(teta)); 1

0.5
surf(x,y,z)
0
q = (a + r)/sqrt(2); -0.5

axis([-q,q,-q,q,-q,q]) -1
1
0.5 1
0 0.5
0
-0.5 -0.5
-1 -1

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
A cor em que as malhas em mesh e surf so traadas pode ser definida (ou alterada)
utilizando-se a propriedade EdgeColor. Por exemplo,

figure 0.5

surf(x,y,z, 'EdgeColor', 'white') 0

q = (a + r)/sqrt(2); -0.5

-1
axis([-q,q,-q,q,-q,q]) 1
0.5 1
0 0.5
0
-0.5
-0.5
Tambm possvel iluminar um -1 -1

objeto com uma fonte de luz direcional,


o que pode dar mais realismo a grficos
3-D:

camlight left
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Nesses tipos de grficos utilizada a palheta (mapa) de cores vigente.

colormap : estabelece o mapa de cores a ser utilizado.


Os mapas de cores existentes so: hsv, hot, gray, cool, bone, copper, pink, white, flag,
lines, colorcube, vga, prism, jet (pr-ajuste), autumn, spring, summer e winter.

Prof. Adade
MATLAB BSICO
O comando help graph3d lista, entre outros, os mapas de cores e suas caractersticas.

colormap(cool(6)); % estabelece uso do mapa de cores cool ( tons variados


% de violeta e azul), em seis tonalidades, no caso.
Um mapa de n cores definido por uma matriz de dimenso n3.
Cada linha interpretada como uma cor, onde o primeiro elemento especifica a
intensidade de luz vermelha, o segundo, verde e o terceiro, azul.
A intensidade da cor pode ser especificada no intervalo de 0 a 1. Por exemplo, [0 0
0] preta, [1 1 1] branca, [1 0 0] vermelha pura, [.5 .5 .5] cinza e [127/255 1
212/255] gua-marinha.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Impresso de Grficos
print
print nome-do-arquivo - salva o grfico corrente no arquivo especificado;

print -append nome-do-arquivo - acrescenta o grfico corrente ao arquivo existente.

Matlab proporciona o recurso de salvar e recarregar um grfico. O comando,

print -dmfile nome-do-arquivo


cria um M-file contendo as informaes necessrias para posteriormente reproduzir a
figura.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Impresso de Grficos
Pode-se salvar figuras em vrios formatos, p. ex.:
print -dbitmap nome-do arquivo % formato Windows Bitmaps (*.bmp)
print -dmeta nome-do-arquivo % formato Windows Metafile (*.wmf)
print -dhpgl nome-do-arquivo % formato HP Graphic Language (*.hgl)
print -deps nome-do-arquivo % formato Encapsulated Postscript (*.eps)
A opo Copy Figure do menu Edit na janela da figura tambm pode
ser usada para se transferir uma figura do MATLAB para outra
aplicao Windows.
A opo Save as (Export na verso 6) do menu File na janela de
figura permite gravar uma figura em diferentes formatos.
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Grficos log-log
% Create a set of values for the damping factor
zeta = [0.01 .02 0.05 0.1 .2 .5 1 ];

% Define a color for each damping factor


colors = ['r' 'g' 'b' 'c' 'm' 'y' 'k'];

% Create a range of frequency values equally spaced


% logarithmically
w = logspace(-1, 1, 1000);

% Plot the gain vs. frequency for each of the seven


% damping factors
figure;
for i = 1:7
a = w.^2 - 1;
b = 2*w*zeta(i);
gain = sqrt(1./(a.^2 + b.^2));
loglog(w, gain, 'color', colors(i), 'linewidth', 2);
hold on;
end
% Set the axis limits
axis([0.1 10 0.01 100]);

% Add a title and axis labels


title('|G|(\omega) vs \omega');
xlabel('\omega');
ylabel('|G|(\omega)');
grid on;

http://www.mathworks.com/matlabcentral/fileexchange/35265-matlab-plot-gallery-log-log-plot/content/html/Loglog_Plot.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Grficos tipo "pizza"
Ex. Representar a distribuio dos conceitos dos alunos na 1 prova de MP-702 (2002).
distribuicao_por_conceito = [4 5 15 5 9 1];
conceitos = {'D', 'I', 'R', 'B', 'MB', 'L'};
pie(distribuicao_por_conceito, conceitos) pie3(distribuicao_por_conceito, conceitos)
M P -702 (2002) - Dis t ribui o dos conc eitos obtidos na 1 a prova
L
D
a
M P -702 (2002) - Dis t ribui o dos conc eitos obtidos na 1 prova

MB
MB
I L

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Histogramas
% Load nucleotide data
load nucleotideData ncount;

% Create the histogram using the hist function


figure;
hist(ncount);
colormap summer;

% Add a legend
legend('A', 'C', 'G', 'T');

% Add title and axis labels


title('Histogram of nucleotide type distribution');
xlabel('Occurrences');
ylabel('Number of sequence reads');

http://www.mathworks.com/matlabcentral/fileexchange/35275-matlab-plot-gallery-histogram-plot/content/html/Histogram_Plot.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Grficos de barras (3D)
% Load monthly temperature data
load MonthlyTemps temperatures months years;

% Create the 3D bar chart


figure;
bar3(temperatures);
axis([0 13 0 12 0 80]);

% Add title and axis labels


title('Boston Monthly Temperatures 1900-2000');
xlabel('Month');
ylabel('Year');
zlabel('Temperature');

% Change the x and y axis tick labels


set(gca, 'XTickLabel', months);
set(gca, 'YTickLabel', years);

http://www.mathworks.com/matlabcentral/fileexchange/35274-matlab-plot-gallery-bar-graph-3d/content/html/Bar_Plot_3D.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Area plot
% Load population data
load PopulationAge years population groups;

% Create the area plot using the area function


figure;
area(years, population/1000000);
colormap winter;

% Add a legend
legend(groups, 'Location', 'NorthWest');

% Add title and axis labels


title('US Population by Age (1860 - 2000)');
xlabel('Years');
ylabel('Population in Millions');

http://www.mathworks.com/matlabcentral/fileexchange/35280-matlab-plot-gallery-area-plot/content/html/Area_Plot.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Graph plot
% Create the connectivity graph of the Buckminster Fuller geodesic dome
[B, V] = bucky;
H = sparse(60, 60);
k = 31:60;
H(k, k) = B(k, k);

% Visualize the graph using the gplot function (blue)


figure;
gplot(B - H, V, 'b-');
hold on;

% Visualize a rotation of the graph (red)


gplot(H, V, 'r-');
axis off equal;

http://www.mathworks.com/matlabcentral/fileexchange/35292-matlab-plot-gallery-graph-plot/content/html/Graph_Plot.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Omitir partes de uma curva num grfico
Partes de uma curva em um grfico podem ser omitidas por meio do uso de NaN como
valores de coordenadas.
Ex. Plotar a funo f(t) = sen(t), Ilus trac ao de c om o om itir partes de um a c urva em um grafic o

somente para |f(t)| 0,707.


1

0.8

0.6

t = 0:pi/100:4*pi; 0.4

f = sin(t); 0.2

indice = find(abs(f) > (sqrt(2)/2));

sin(t)
0

t1 = t; -0.2

t1(indice) = NaN * t(indice); -0.4

-0.6
plot(t1,f); -0.8

O efeito como o de suspender a pena do -1


0 2 4 6 8 10 12 14
plotter nos valores NaN da coordenada. t

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Omitir parte de uma superfcie num grfico 3D
Outro uso de NaN est em fazer omitir parte de uma superfcie ("fazer um buraco")
tornando visveis superfcies internas.
Ex. Plotar duas esferas, uma dentro da outra, ilustrando essa situao no grfico.

view(3) % estabelece o pre-ajuste de vista em 3-D, AZ = -37.5, EL = 30.


[X,Y,Z] = sphere(20); % cria esfera representada pelas matrizes (XxYxZ) 21x21
z1 = Z;
z1(:,1:4) = NaN * z1(:,1:4); % substitui valores da coordenada-Z por NaN
% isso vai ser responsavel por "criar o buraco"
c1 = ones(size(z1)); % define caracteristicas de cor a ser utilizada em surface
s1 = surface(2*X, 2*Y, 2*z1, c1); % cria superficie representada pelas matrizes
% coordenadas, no caso a esfera exterior.

Prof. Adade
hold
z2 = Z;
c2 = 2*ones(size(z2));
c2(:,1:4) = 3 * ones(size(c2(:,1:4)));
s2 = surface(1.5*X, 1.5*Y, 1.5*z2, c2); % cria a esfera interior
colormap([0 1 0; .5 0 0; 1 0 0]);
grid
set(gca,'box', 'on')

-1

-2
2
1 2
0 1
0
-1
-1
-2 -2

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Variando a cor de uma linha num grfico
possvel criar uma linha que assume cores especificadas por uma expresso matemtica,
ou que muda em funo da coordenada-y. A tcnica consiste em usar um objeto grfico
tipo superfcie (surface) e criar uma linha virtual (perspectivas).
Uma aplicao desse recurso usar a cor como uma quarta dimenso. Por exemplo, ao
plotar a trajetria de um corpo, a cor da curva pode ser usada para representar a sua
velocidade ou a acelerao.
Ex. Criar uma linha virtual em que a cor uma funo dos valores da coordenada-y.
% definir as coordenadas da linha virtual
x = 0:pi/100:5*pi; y = sin(x); z = 0*x;
% definir os valores da cor de cada coordenada da linha
c = y;
% gerar o grafico

Prof. Adade
figure
surface([x;x], [y;y], [z;z], [c;c], ...
'facecolor', 'none', ...
'edgecolor', 'flat', ...
'linewidth', 3); % cria o grafico a partir da superficie definida
set(gca, 'box', 'on', 'xtick', [0:pi:5*pi], ...
'XTickLabel', '0 |p |2p |3p |4p |5p', 'FontName', 'Symbol');
axis([0 5*pi -1.1 1.1])

0 .8

0 .6

0 .4

0 .2

- 0 .2

- 0 .4

- 0 .6

- 0 .8

-1

0 p 2p 3p 4p 5p

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Criando uma imagem
Arranjos 2-D podem ser apresentados como imagens, onde os elementos da matriz
determinam brilho ou cor.
Ex.
load durer.mat % carrega as matrizes X (imagem) e map (colormap)
% e o array de caracteres caption
image (X)
colormap(map)
title(caption)

Quando X for uma matriz MN, os seus elementos so usados como ndices no
COLORMAP atual para determinar a cor.

Prof. Adade
Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Misturando superfcies e imagens (mapeamento de textura)
A propriedade FaceColor do objeto grfico tipo surface possui as seguintes escolhas:

[none | {flat} | interp | texturemap] ou uma ColorSpec

Quando a propriedade FaceColor ajustada para texturemap, no h limite para as


dimenses da matriz Cdata.

Ex. Fundir uma imagem em uma esfera

load earth; % carrega uma imagem da Terra


% como uma matriz X
% e uma matriz de cores, map.
figure('Colormap', map); image(X);

Prof. Adade
[x,y,z] = sphere(30);
figure('Colormap', map);
view(60,5); % estabelece o ponto de visada
surface_handle = surface(x, y, z);
set(surface_handle, ...
'FaceColor', 'texturemap', ...
'CData', flipud(X));
set(gca, 'box', 'on')

Obs. As figuras foram exportadas do Matlab como .jpg e


inseridas nestes slides.

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Como colocar um grfico dentro de outro grfico.
% Create data
t = linspace(0,2*pi);
t(1) = eps;
y = sin(t);

% Place axes at (0.1,0.1) with width and height of 0.8


figure;
handaxes1 = axes('position', [0.1 0.1 0.8 0.8]);

% Main plot
plot(t, y);
xlabel('t'); ylabel('sin(t)');
set(handaxes1, 'box', 'off');

% Adjust XY label font


handxlabel1 = get(gca, 'xlabel');
set(handxlabel1, 'fontsize', 16, 'fontweight', 'bold');
handylabel1 = get(gca, 'ylabel');
set(handylabel1, 'fontsize', 16, 'fontweight', 'bold');

% Place second set of axes on same plot


handaxes2 = axes('position', [0.6 0.6 0.2 0.2]);
fill(t, y.^2, 'g');
set(handaxes2, 'box', 'off');
xlabel('t'); ylabel('(sin(t))^2');

% Adjust XY label font


set(get(handaxes2, 'xlabel'), 'fontname', 'times')
set(get(handaxes2, 'ylabel'), 'fontname', 'times')

Prof. Adade
% Add another set of axes
handaxes3 = axes('position', [0.25 0.25 0.2 0.2]);
plot(t, y.^3);
set(handaxes3, 'box','off');
xlabel('t'); ylabel('(sin(t))^3');

http://www.mathworks.com/matlabcentral/fileexchange/35245-matlab-plot-gallery-plot-in-plot/content/html/Plot_in_Plot.html

Prof. Adade
MATLAB BSICO
Traando Grficos no Matlab
Como criar animao e GIFs animados.
This is an example of how to create animations and animated GIFs in MATLAB. In this example, we will animate the motion of a double-pendulum.
We solve the ordinary differential equation using ode45.

Read about the getframe and imwrite functions in the MATLAB documentation.

function dy = double_pendulum(t, y, m, L)
% System of ODEs for a double pendulum (mass m and link length L)
%
% See http://en.wikipedia.org/wiki/Double_pendulum for the differential
% equations

% Copyright 2010 The MathWorks, Inc.

g = 9.81;
theta1 = y(1); % angle 1
theta2 = y(2); % angle 2
p1 = y(3); % momentum
p2 = y(4); % momentum

% The derivatives
dy(1) = 6/(m*L^2) * (2*p1-3*cos(theta1-theta2)*p2) / ...
(16-9*cos(theta1-theta2)^2);

dy(2) = 6/(m*L^2)*(8*p2-3*cos(theta1-theta2)*p1) / ...


(16-9*cos(theta1-theta2)^2);

dy(3) = -1/2*m*L^2*(dy(1)*dy(2)*sin(theta1-theta2)+3*g/L*sin(theta1));

dy(4) = -1/2*m*L^2*(-dy(1)*dy(2)*sin(theta1-theta2)+g/L*sin(theta2));

dy = dy(:);
Prof. Adade
% Parameters and initial conditions
% mass, link length, initial angles, simulation time
m = 1;
L = 1;
theta1 = 3*pi/4;
theta2 = 3*pi/8;
t = linspace(0, 10, 200);

% Solving ODE of a double pendulum


[T,Y] = ode45(@(t, x) double_pendulum(t, x, m, L), t, [theta1, theta2, 0, 0]);

% Calculating joint coordinates for animation purposes


x = [ L*sin(Y(:,1)), L*sin(Y(:,1))+L*sin(Y(:,2))];
y = [-L*cos(Y(:,1)), -L*cos(Y(:,1))-L*cos(Y(:,2))];

% Convert radians to degrees


ang = Y(:,1:2)*180/pi;

% Set up first frame


figure('Color', 'white');
subplot(2,1,1);
plot(T, ang, 'LineWidth', 2);
hh1(1) = line(T(1), ang(1,1), 'Marker', '.', 'MarkerSize', 20, ...
'Color', 'b');
hh1(2) = line(T(1), ang(1,2), 'Marker', '.', 'MarkerSize', 20, ...
'Color', [0 .5 0]);
xlabel('time (sec)'); ylabel('angle (deg)');

subplot(2,1,2);
hh2 = plot([0, x(1,1);x(1,1), x(1,2)], [0, y(1,1);y(1,1), y(1,2)], ...
'.-', 'MarkerSize', 20, 'LineWidth', 2);
axis equal
axis([-2*L 2*L -2*L 2*L]);
ht = title(sprintf('Time: %0.2f sec', T(1)));

% Get figure size


pos = get(gcf, 'Position');
width = pos(3); height = pos(4);

% Preallocate data (for storing frame data)


mov = zeros(height, width, 1, length(T), 'uint8');

Prof. Adade
% Loop through by changing XData and YData
for id = 1:length(T)
% Update graphics data. This is more efficient than recreating plots.
set(hh1(1), 'XData', T(id) , 'YData', ang(id, 1));
set(hh1(2), 'XData', T(id) , 'YData', ang(id, 2));
set(hh2(1), 'XData', [0, x(id, 1)] , 'YData', [0, y(id, 1)]);
set(hh2(2), 'XData', x(id, :) , 'YData', y(id, :));
set(ht, 'String', sprintf('Time: %0.2f sec', T(id)));

% Get frame as an image


f = getframe(gcf);

% Create a colormap for the first frame. For the rest of the frames,
% use the same colormap
if id == 1
[mov(:,:,1,id), map] = rgb2ind(f.cdata, 256, 'nodither');
else
mov(:,:,1,id) = rgb2ind(f.cdata, map, 'nodither');
end
end

% Create animated GIF


imwrite(mov, map, 'animation.gif', 'DelayTime', 0, 'LoopCount', inf);

Prof. Adade
http://www.mathworks.com/matlabcentral/fileexchange/35251-matlab-plot-gallery-animation/content/html/Animation.html

Prof. Adade
MATLAB BSICO
Criando um Filme/Animao.
(1) Continuamente apagar e redesenhar os objetos na tela, fazendo alteraes incrementais
em cada retraado; ou
(2) Salvar um nmero de quadros distintos e ento apresent-los como um filme.
Ex. Chaturvedi, D.K. - Modeling and Simulation of Systems Using Matlab and Simulink.
CRC Press, 2010, p. 643-644. "Ilustrao do Movimento Browniano"
n=300; s = 0.02; nframes = 50;
x = rand(n,1) - 0.5; y = rand(n,1) - 0.5;
h = plot(x,y,'.'); % gera pontos aleatoriamente posicionados no plano (x,y)
set(h,'MarkerSize',18);
axis([-1 1 -1 1]), axis square
grid off
for k=1:nframes
x = x + s*randn(n,1); y = y + s*randn(n,1); % efetua movimento aleatrio de cada ponto
set(h, 'XData', x, 'YData', y)
M(k) = getframe; % captura em M o novo frame
end
movie(M,30) % apresenta a sequencia de 30 frames guardados em M
Prof. Adade
MATLAB BSICO
Programao em MATLAB

Prof. Adade
MATLAB BSICO
Fluxo de Programao
i. malhas for
Ex: m= ; n= ;
for j = 1: m
for k = 1: n
A(j,k) = 1 / (j+k-1);
end
end
produz a matriz de Hilbert mxn.

ii. malhas while


while relao
comandos
end
Os comandos so repetidamente executados enquanto a relao for verdadeira.
Prof. Adade
MATLAB BSICO
Fluxo de Programao
Ex. Determinar o primeiro valor >= 1.5 e sua posio no vetor x.

x = randn(200,1);
k = 1; m = 0; valor = 0; ref = 1.5;
while x(k) < ref
k = k+1;
if k > length(x), break, end
end
if (k <= length(x)), m=k, valor = x(k), end

m= 6
valor = 1.6342

Prof. Adade
MATLAB BSICO
Fluxo de Programao
iii. Condicionais e Ramificaes

Forma geral:

if relao
comandos
elseif relao
comandos
else
comandos
end
Os comandos so executados somente se a relao for verdadeira.
Prof. Adade
MATLAB BSICO
Fluxo de Programao
switch : permite programar a execuo condicionada de comandos quando h muitas opes a
considerar. Faz comutar entre vrios casos com base em uma expresso.
As palavras reservadas case e otherwise delineiam os grupos de comandos.
switch expresso
case expresso_do_caso
comandos
case {expresso1_do_caso, expresso2_do_caso,... }
comandos
...
otherwise,
comandos
end
No exemplo, so executados os comandos do primeiro caso em que expresso (que deve ser um escalar
ou uma string) casar com a expresso_do_caso. Quando a expresso do caso for um array de
clulas, como o segundo caso acima, os comandos so executados se expresso "casar" com quaisquer
dos elementos do array. Se nenhuma das expresses_dos_casos "casar" com a expresso de switch,
so executados os comandos do caso otherwise (se existir).
Prof. Adade
Ex.
h = 3.5;
switch h
case 2.0, f= 2*h
case {1.0, 3.0, 4.0, 5.0}, f = sqrt(h)
otherwise
f = h^2
end

f=

12.2500

Prof. Adade
MATLAB BSICO
Fluxo de Programao

O comando break interrompe a (sai da) execuo de um lao for ou while.


Usualmente segue um comando if para concluir um lao na ocorrncia de uma
condio especfica.
Para laos aninhados, break interrompe o mais interno.

O comando continue passa o controle para a prxima iterao da malha for ou while
na qual aparece, ignorando quaisquer comandos restantes no corpo da malha. Para
laos aninhados, o controle passado para a prxima iterao contem continue.

Um lao (for, while, if, switch) s executado aps a finalizao de sua sintaxe
(comando end).

O comando return termina a sequncia atual de comandos e retorna o controle para a


funo chamadora ou para o teclado.

Prof. Adade
MATLAB BSICO
Fluxo de Programao
try ... catch
Altera o controle de fluxo se um erro for detectado durante a execuo.
try,
comando.
...,
comando,
catch,
comando,
...,
comando,
end
Os comandos entre try e catch so executados at ocorrer um erro. Na ocorrncia de erro, os comandos entre
catch e end ento so executados. (Sem try ... catch a execuo seria terminada na ocorrncia de erro).

Se ocorrer um erro entre catch e end a execuo terminada a menos que outra sequncia try ... catch tenha
sido estabelecida.

Prof. Adade
M-files
Consistem de uma sequncia de comandos Matlab, possivelmente incluindo
referncia a outros m-files.
Automatizar uma sequncia longa de comandos (script)
Incluir novas funes ao Matlab (function)
1. Script

% Um m-file para calcular nmeros de Fibonnaci


f = [1 1]; k = 1;
while f(k) + f(k+1) < 1000
f(k+2) = f(k) + f(k+1);
k = k+1;
end
arquivo
stem(f) fibno.m
Entrando-se o comando,
fibno
Matlab executa os comandos em fibno.m, que calculam os 1000 primeiros nmeros da
srie de Fibonnaci, e cria um grfico.
Script: no recebe parmetros; utiliza e cria variveis no espao-base de trabalho.
Prof. Adade
M-files
2. Function

A primeira linha de um m-file implementando uma funo traz a palavra function.


Argumentos podem ser passados.
Variveis definidas dentro do m-file so variveis locais.
Podem ser chamadas de outros m-files.

function y = mean(x)
% MEAN Valor mdio. Para vetores, mean(x) retorna o valor mdio.
% Para matrizes, mean(x) um vetor linha contendo o valor
% mdio de cada coluna.
[m,n] = size(x);
if m == 1,
m = n; % trata vetor linha isolado arquivo
end
y = sum(x)/m;
mean.m

Chamada, por exemplo,


z = mean(v)

Prof. Adade
MATLAB BSICO
Procedimentos para criar/alterar um m-file
Procedimento bsico: editar ou reeditar um arquivo, que deve ser gravado com
extenso .m, utilizando-se um editor de arquivos tipo texto.
Usar o editor/depurador de arquivos de texto (Matlab Editor/Debugger) que vem

integrado ao Matlab (vide figura): selecionar a opo File/HOME New ou Open.


Usar o comando edit: esse editor o programa meditor.exe localizado no subdiretrio
\bin\win32\ do Matlab.
Usar outro editor: pode ser definido por meio da opo File/Preferences na barra de
menus.

Prof. Adade
MATLAB BSICO
Procedimentos para criar/alterar um m-file

Ex. Criar um m-file para clculo da funo de Rosenbrock:

h( x , x ) = 100 ( x - x ) + (1 - x )
1 2 2
2
1
2
1
2

Seja a funo chamada de banana e o m-file de banana.m:

function y = banana(x1,x2)
y = 100 .* (x2 - x1.^2) .^2 + (ones(size(x1)) - x1) .^2;

Prof. Adade
Esta funo pode ento ser visualizada, por exemplo, pelo uso dos comandos:

x1 = 0 : .01 : 2 ; x2 = 0 : .01 : 4;
[X1,X2] = meshgrid(x1,x2);
z = BANANA(X1,X2);
v = logspace(-2,0,5);
contour(x1,x2,z,v) % o vetor v controla quais
% nveis so plotados, no caso, so plotadas 5
% curvas de nveis de z entre 0.01 e 1.0.
xlabel('x1'), ylabel('x2')
title('Curvas de nvel da funo banana de Rosenbrock')

2 2 2
Funo de Ros enbroc k , z = 100 (x - x ) + (1 - x )
2 1 1

Uma outra visualizao desta funo pode ser obtida


com o uso da funo mesh: 8

log(1+z)
4
x1 = 0 : .1 : 2 ; x2 = 0 : .1 : 4;
[X1,X2] = meshgrid(x1,x2); 2

z = banana(X1,X2); 0
4
3 2

logz = log(1 + z); % usa-se 1+z para se evitar log(0) x


2
2
1
1
1.5

mesh(x1,x2,logz)
0.5 x
1
0 0

Prof. Adade
MATLAB BSICO
Procedimentos para criar/alterar um m-file
O acesso a m-files e seus diretrios pode ser feito tambm utilizando o browser de
diretrio atual (Current Directory Browser), ativado no Desktop.

Por meio desse browser pode-se visualizar, criar, renomear e alterar diretrios, abrir,
substituir e executar contedo de arquivos.

Vrias operaes podem ser selecionadas utilizando o menu de contexto que se


apresenta, ao selecionar-se o arquivo e pressionando o boto direito do mouse.

Havendo um erro na execuo de um m-file, ao mover-se o cursor para a mensagem de


erro e teclando-se Enter, faz abrir o m-file no Editor, posicionado na linha contendo o erro.
Reiniciar Matlab ou usar a funo rehash para recarregar o diretrio e
atualizar a informao guardada na memria computacional (cache), antes de
usar um arquivo novo ou reeditado gravado na rvore de diretrios do Matlab.

Prof. Adade
MATLAB BSICO
M-files de funo podem conter cdigo de mais de uma funo. A primeira, que
evocada com o nome do M-file, chamada de funo primria. As outras so
subfunes, s visveis para a funo primria ou para subfunes no mesmo arquivo.

As subfunes aparecem consecutivamente. Cada subfuno inicia com a sua prpria


linha de definio de funo.

Funes particulares so funes que residem em subdiretrios nominados private.

Elas so visveis somente por funes no diretrio antecessor. Isto til quando se quer
criar uma verso prpria de uma funo enquanto retendo a original em outro diretrio.

Matlab procura primeiro as funes particulares antes dos M-files de funes padres.

Prof. Adade
MATLAB BSICO
P-codes
Arquivo em P-code (parsed code): verso pr-processada de uma function ou script.

Finalidade: ganhar tempo na sua utilizao pelo Matlab ou ainda no revelar algoritmos
utilizados na preparao do m-file.

pcode mean % gera verso em p-code

mean.m processado (parsed) e o pseudo-cdigo resultante gravado como mean.p.

Prof. Adade
MATLAB BSICO
Trajeto de Busca do MATLAB
O trajeto ("path") de busca de funes pelo MATLAB est na varivel matlabpath.
Ao teclar-se o comando pathdef esse caminho mostrado na tela.
Durante uma sesso, para se incluir algum diretrio no trajeto de busca do MATLAB
pode-se proceder da seguinte maneira:

P = pathdef % coloca em P uma string contendo o trajeto atual


path(P, 'c:\diretorio') % inclui no trajeto o diretrio especificado na string

Opo (boto) SetPath do menu File (HOME): permite visualizar e modificar o


trajeto. Alteraes se efetivam imediatamente. (ou comando pathtool)

Obs. Para alteraes permanentes, usar o boto Save.

Prof. Adade
MATLAB BSICO
Variveis Globais
Todas as variveis no MATLAB so armazenadas em um espao-de-trabalho-base (cujo contedo
mostrado pelo comando whos).
M-files do tipo funes tm seus prprios espaos-de-trabalho; as variveis definidas no espao de
trabalho de uma funo so removidas da memria automaticamente, quando retorna-se da
funo.
Um M-file do tipo script armazena as suas variveis no espao de trabalho do qual foi chamada;
H um terceiro tipo de espao de trabalho, denominado global, onde as variveis globais so
armazenadas (seu contedo pode ser visualizado pelo comando whos global). As variveis de um
outro espao de trabalho podem ser declaradas globais atravs do comando,

global nome-da-varivel
Obs. A varivel deve estar declarada como global em todas as funes em que
compartilhada, inclusive no espao de trabalho base.

Os espaos de trabalho base e de funes podem ser acessados na depurao de m-files usando-se o
campo Stack no Workspace browser e por meio do Editor/Debugger .

Prof. Adade
MATLAB BSICO
Variveis Persistentes
Uma varivel local a uma funo pode ser declarada persistente, tal que seu valor retido
na memria e no se altera entre chamadas sucessivas da funo.

Variveis so declaradas persistentes na forma,

persistent nome-da-varivel

Elas diferem das variveis globais na medida em que s so reconhecidas nas funes
em que so declaradas.

Variveis persistentes permanecem na memria at que o m-file da funo seja


removido da memria (o comando mlock mantm um m-file na memria at o
fechamento da sesso de Matlab) ou quando alterado.

Prof. Adade
MATLAB BSICO
Strings
Uma sequncia de dados alfanumricos (texto) define uma string e fornecida entre
apstrofos.
Ex.
s = 'Sistemas'
s=
Sistemas
O texto armazenado em um vetor, um caractere por elemento.
Ex. size(s)
ans =
1 8
Os caracteres so armazenados como valores ASCII e as funes abs e double determinam
esses valores:
double(s)
ans =
83 105 115 116 101 109 97 115
Prof. Adade
MATLAB BSICO
Strings
Ex. Eliminar de um texto as tags (caracteres que estejam entre < e > inclusive). Por exemplo,
Texto = 'A <b>computao</b> pode ser definida como a busca de uma soluo para um problema a partir de entradas
(<i>inputs</i>) e tem seus resultados (<i>outputs</i>) depois de trabalhada atravs de um algoritmo. com isto que lida a
<i>teoria da computao</i>, subcampo da cincia da computao e da matemtica.'

double(Texto); % Em ans retorna o codigo ASCII de cada caractere de Texto


m=0; n=1;
for k = 1:length(ans)
if m==0 & ans(k)~=60, % Obs. 60 o codigo ASCII do caractere <
TextoR(n) = ans(k);
n = n+1;
else
m = 1;
end
if ans(k) ==62, % Obs 62 o codigo ASCII do caractere >
m = 0;
end
end
TextoRchar = char(TextoR)

Obs. O programa acima no vai funcionar corretamente se o texto contiver o caractere < isoladamente, isto , ele no definir uma
tag.

Prof. Adade
MATLAB BSICO
A concatenao de texto feita como no seguinte exemplo:

s = [s , ' Dinmicos'], size(s)


s=
Sistemas Dinmicos
ans =
1 18

MATLAB tem disponvel algumas funes aplicadas a variveis do tipo string. Por exemplo,

disp ('Uma nova iterao vai ser iniciada')

mostra o texto entre apstrofos na tela;

char('Alunos', 'Matrias', 'Notas')


ans =
Alunos
Matrias
Notas

forma um array de caracteres.

Prof. Adade
MATLAB BSICO
Todo comando da forma,
nome_da_funo argumento
pode ser escrito na forma,
nome_da_funo ('argumento')
na qual o modificador argumento fornecido como um argumento de tipo string da funo.
Isso pode ser explorado convenientemente quando se precisa compor um argumento a partir de
vrias partes.
Ex. Deseja-se processar dados experimentais que foram armazenados em 8 arquivos,
denominados Teste1.dat, Teste2.dat, ..., Teste8.dat. Esses dados poderiam ser carregados utilizando-
se os seguintes comandos,
for m = 1:8
dados = ['Teste' int2str(m) '.dat']
% a funo int2str converte um inteiro em string
load(dados)
M % comandos para processar os dados do m-simo arquivo
end

Prof. Adade
MATLAB BSICO
Comando eval
O comando eval (s), onde s uma string, permite que uma string seja executada como uma
expresso ou comando Matlab.

Ex. F = 'exp(-X) ';


X = [ 0 1 2];
eval(F)

ans =

1.0000 0.3679 0.1353

No exemplo anterior a esse, usando-se eval:

for m = 1:8
dados = ['load Teste' int2str(m) '.dat']
eval(dados)
M % comandos para processar os dados do m-simo % arquivo
end
Prof. Adade
MATLAB BSICO
Comando eval

O uso do comando eval permite o clculo, repetidas vezes, de uma funo ou frmula
matemtica sem ser necessria a sua redigitao durante uma sesso Matlab.
Exemplo. Calcular a funo polinomial f(x) = x5 2 x4 + x3 3 x2 + 5 x 1 em vrios
pontos.

f = 'x^5 2*x^4 + x^3 3*x^2 + 5*x 1';

x = 3; eval(f)

ans = 95

x = -7; eval(f)

ans = -22135

Prof. Adade
MATLAB BSICO
Entrada de Dados pelo Teclado

A funo input permite que o usurio fornea dados interativamente, pelo teclado.

Ex.

n = input ('Fornecer o nmero de iteraes: ')


ou
n = input ('Fornecer o nmero de iteraes: ', 's') % n string

mostra a mensagem na tela e h uma pausa no programa enquanto o usurio digita o dado
de entrada; ao pressionar a tecla enter o dado atribudo a n e a execuo tem
prosseguimento.

Prof. Adade
MATLAB BSICO
Mostrar na Tela uma Mensagem

A funo fprintf imprime na tela uma string definida como argumento no comando.

Ex. fprintf('Clculo da funo sen(x)/x \n ')

Obs. O uso de \n no comando fprintf faz saltar uma linha na impresso.

Prof. Adade
MATLAB BSICO
Operaes em Arquivos (I/O)
fread, fscanf, fgets, fgetl, dlmread, textread, csvread, imread : usadas para ler
fwrite, dlmwrite, imwrite : usadas para escrever dados
Leitura e gravao em variados formatos, em um arquivo identificado, portanto,
propiciando recursos adicionais (alm dos comandos save e load) para importar e exportar
dados. Estas funes permitem especificar o formato de leitura ou gravao.
Exs.
idr = fopen('dados.dat','r');% abre o arquivo de dados para leitura edefine um identificador p/ele
F = fread(idr); % l todo o arquivo de dados binrios colocando-os na matriz F
status = fclose(idr); % fecha o arquivo associado ao identificador idr
idw = fopen('magic5.bin','wb'); % abre arquivo binrio para gravao
fwrite(idw,magic(5),'integer*4'); % grava um arquivo binrio contendo os 25 elementos da
% matriz gerada por magic(5), armazenados como inteiros
% de 4-bytes.

Prof. Adade
MATLAB BSICO
Som no MATLAB
sound sound(y) converte um vetor y de valores em som. O vetor auto-escalonado de modo
que mximo e mnimo valores em y correspondam mxima e mnima amplitude
permitidas pelo hardware de som do computador. O som produzido na taxa de
amostragem pr-ajustada; sound(y,Fs) reproduz o som numa freqncia de
amostragem de Fs Hz.
wavread Permite carregar para o ambiente Matlab um arquivo de som;
[y,Fs,Bits] =wavread(wavefile) carrega um arquivo em formato .wav retornando os
dados amostrados na varivel y (amplitudes no intervalo [-1,1]), a taxa de
amostragem, em Hertz, na varivel Fs e o nmero de bits por amostra usado para
codificar os dados no arquivo .wav, na varivel Bits.
wavwrite Grava um arquivo .wav;
wavwrite(y,Fs,Nbits, wavefile):
y Os dados amostrados a serem gravados
Fs Taxa na qual os dados foram amostrados
Nbits Fora gravar um formato de arquivo de Nbits (<=16)
wavefile Uma string com o nome do arquivo .wav a ser criado
Prof. Adade
soundsc Escalona um vetor e produz som; soundsc (Y,...) o mesmo que sound(Y,...)
exceto que os dados so escalonados tal que o som produzido to alto quanto
possvel sem clipping; soundsc (Y,...,SLIM) onde SLIM = [SLOW SHIGH]
ajusta o escalonamento tal que os valores em Y entre SLOW e SHIGH so mapeados
no intervalo sonoro total (o valor pr-ajustado SLIM = [MIN(Y) MAX(Y)]
Funes que permitem tocar ou gravar som atravs de dispositivos de audio do computador tipo-PC
so wavplay e wavrecord.
Ex. Carregar o arquivo train.mat, reproduzir o som (apito de uma locomotiva) e plotar o grfico
correspondente:
load train
sound(y,Fs)
t=(0:length(y)-1)/Fs;
plot(t,y)

Prof. Adade
MATLAB BSICO
Uso de subrotinas/programas em C ou FORTRAN
recurso MEX-file do MATLAB (que conecta dinamicamente, em tempo de execuo, o
interpretador MATLAB subrotina C ou FORTRAN) permite carregar e executar uma
subrotina em C ou FORTRAN de dentro de um programa MATLAB.
Tambm possvel chamar uma funo MATLAB de dentro de uma subrotina C ou
FORTRAN.

Essa biblioteca que fornece esses e outros recursos de interfaceamento externo


proporcionados pelo Matlab, que possibilitam a comunicao entre o Matlab e programas
e dispositivos externos (inclusive tecnologias orientadas a objetos como Java e ActiveX),
so denominados de Interface para Programas de Aplicao (Matlab Application Program
Interface API).

H documentao do programa especfica de orientao para o uso desses recursos,


acessada atravs do help on-line: MATLAB Using MATLAB External
Interfaces/API.
Prof. Adade
Representao de Funes Matemticas,
Equaes e Clculos Associados

Prof. Adade
MATLAB BSICO
Representao de Funes Matemticas
Uma classe de funes do MATLAB trabalha no com matrizes numricas, mas com funes
matemticas. Funes matemticas so representadas por M-files (arquivos com extenso .m) ou
como objetos inline (na linha de comando). Por exemplo, a funo,
1 1
y( x) = + -6
( x - 0,3) + 0,01 ( x - 0,9) + 0,04
2 2

tornada disponvel ao ambiente MATLAB editando-se um M-file chamado, por exemplo,


humps.m:
function y = humps(x) 100

y = 1 ./ ((x - 0.3) .^2 + 0.01) + 1 ./ ((x - 0.9) .^2 + 0.04) - 6; 80

Esta funo pode ento ser visualizada: 60

40

x = -1 : .01 : 2 ; 20

plot(x, humps(x),'r') 0

-20
-1 -0.5 0 0.5 1 1.5 2

Prof. Adade
MATLAB BSICO
Representao e Plotagem de Funes Matemticas
Alternativamente, a funo "humps" poderia ser representada na linha de comando criando-se um
objeto inline a partir de uma string:
y = inline('1 ./ ((x - 0.3) .^2 + 0.01) + 1 ./ ((x - 0.9) .^2 + 0.04) 6');
Calculando-se y em x = 2, por exemplo,
y(2.0)
ans =
-4.8552
Funes de mais de uma varivel podem ser criadas com inline especificando-se os nomes dos
argumentos de entrada juntamente com a string definindo a expresso.
A funo fplot proporciona uma maneira eficiente para se plotar um grfico de uma funo
matemtica. Por exemplo, o comando fplot('humps', [-1,2]) produz o grfico da funo dada acima
no domnio x indicado.

Prof. Adade
A funo matemtica pode ser definida por uma expresso simblica, evitando-se, com isso, a
criao de um M-file. No exemplo dado,

fplot('1 ./ ((x - 0.3) .^2 + 0.01) + 1 ./ ((x - 0.9) .^2 + 0.04) - 6', [-1,2])

Outra funo que pode ser usada para plotagem de funes matemticas ezplot (e tambm
ezmesh, ezsurf, ezcontour, ezpolar etc.)

ezplot(f, [a,b]) % plota a f(x) no intervalo a < x < b.

Para funes definidas implicitamente, isto , f(x,y) = 0,

ezplot(f, [xmin,xmax,ymin,ymax])

plota f(x,y)=0 nos intervalos especificados. Por exemplo,

ezplot('x^3 + y^3 - 5*x*y + 1/5',[-3,3])

Prof. Adade
% Cria uma srie de curves para a funo f(x,y) = y^2 - x^2 + c
figure;
ezplot('y^2 - x^2 + 4', [-3 3], [-3 3]); hold on;
ezplot('y^2 - x^2 + 2', [-3 3], [-3 3]);
ezplot('y^2 - x^2', [-3 3], [-3 3]);
ezplot('y^2 - x^2 - 2', [-3 3], [-3 3]);
ezplot('y^2 - x^2 - 4', [-3 3], [-3 3]);

% Ajusta o mapa de cores, colormap, para plotar a funo


% em azul
colormap([0 0 1]);
grid on;

% Acrescenta ttulo
title('y^2 - x^2 - c = 0 para c = [-4, 4]');

Prof. Adade
MATLAB BSICO
Representao e Plotagem de Funes Matemticas
O comando ezplot(x,y, [tmin,tmax]) plota a curva planar definida parametricamente,
x = x(t) e y = y(t) no domnio tmin < t < tmax. Por exemplo,

ezplot('t*cos(t)','t*sin(t)',[0,4*pi])

Prof. Adade
MATLAB BSICO
Representao e Plotagem de Funes Matemticas
% Create the plot using the functions
% x = sin(pi*u)*sin(pi*u)*cos(v) ; y = sin(pi*u)*sin(pi*u)*sin(v) ; z = u
% with - 1 < u < 1 and 0 < v < 2*pi
figure;
ezsurf('sin(pi*u)*sin(pi*u)*cos(v)', ...
'sin(pi*u)*sin(pi*u)*sin(v)', ...
'u', [-1 1 0 2*pi]);

% Change the view angle for the plot


view(135,15);

http://www.mathworks.com/matlabcentral/fileexchange/35307-matlab-plot-gallery-function-surface-plot/content/html/Function_Surface_Plot.html

Prof. Adade
MATLAB BSICO
Equaes No Lineares e Otimizao

fminbnd - mnimo de uma funo de uma varivel.

fminsearch - mnimo de uma funo multivarivel.

fsolve - soluo de um sistema de equaes no-lineares (zeros de uma


funo multivarivel)

fzero - zero de uma funo de uma varivel.

Prof. Adade
MATLAB BSICO
Equaes No Lineares e Otimizao
Ex. Localizar o mnimo da funo humps(x) na regio [0.5 , 1]:
xm = fminbnd ('humps', 0.5, 1)
xm =
0.6370
O valor da funo no mnimo ,
y = humps(xm)
y=
11.2528
fplot(@humps,[0 2]);
grid; hold on
plot(xm, humps(xm), 'ro')
hold off

Prof. Adade
MATLAB BSICO
Equaes No Lineares e Otimizao
Ex. Localizar o zero de humps(x) que est prximo a 1:
xz1 = fzero('humps', 1)
xz1 = 1.2995

fplot('humps', [0 2]);
grid
hold on
plot(xz1,0, 'ro')
hold off

Prof. Adade
MATLAB BSICO
Equaes No Lineares e Otimizao
Resolver o Sistema de Equaes:
Passo 2 : definir o clculo de f1, f2 e f3
2
sen x + y + log(z) = 7 em um m-file (xyzf.m, p.ex.)
3 x + 2y z-3 = -1
x+y+z=5 function q = xyzf(p)
x = p(1); y = p(2); z = p(3);
Passo 1: definir um sistema equivalente, q = zeros(3,1); % pr-alocao
q(1) = sin(x) + y^2 + log(z) - 7;
f1(x,y,z) = 0 q(2) = 3*x + 2^y - z^3 + 1;
f2(x,y,z) = 0 q(3) = x + y + z - 5;
f3(x,y,z) = 0

Passo 3 : chamar a funo fsolve

[xsol,valor] = fsolve(@xyzf, [1 1 1]') ou [xsol,valor] = fsolve('xyzf', [1 1 1]')


Prof. Adade
MATLAB BSICO
Equaes No Lineares e Otimizao
Ex. Determinao de mnimo de funo multivarivel usando definio da funo na linha
de comando. Seja,
z = f(x,y) = x2 + x y + y2 + 3 x 3 y + 1
z = inline('X(1) .^ 2 + X(1) .* X(2) + X(2) .^ 2 + 3 .* X(1) - 3 .* X(2) + 1','X')
z=
Inline function:
z(X) = X(1) .^ 2 + X(1) .* X(2) + X(2) .^ 2 + 3 .* X(1) - 3 .* X(2) + 1
X = [1 2];
fminsearch(z,X)
ans =
-3.0000 3.0000
Ou, simplesmente,
fminsearch(inline('X(1) .^ 2 + X(1) .* X(2) + X(2) .^ 2 + 3 .* X(1) - 3 .* X(2) + 1','X'),[1 2])
Prof. Adade
MATLAB BSICO
Integrao Numrica
MATLAB propicia as funes quad, quadl, dblquad (integral dupla) e trapz para
integrao numrica de funes. As funes quad e quadl requisitam como argumento de
entrada o nome (ou o handle) da funo, enquanto que trapz requer os valores da funo a
ser integrada.
Ex. Determinar a rea sob a curva da funo "humps" no intervalo [0,1]. A funo
"humps" est definida em um M-file denominado humps.m:
fplot(@humps, [-1 2]) 100

hold on 80

patch([ 0 0:0.02:1 1 0.5], [0 humps(0:0.02:1) 0 0], 'r') 60

hold off 40

20

q = quad(@humps, 0, 1) 0

-20
-1 -0.5 0 0.5 1 1.5 2

q=
29.8583

Prof. Adade
MATLAB BSICO
Soluo de Equaes Diferenciais
Funes MATLAB para resolver equaes diferenciais ordinrias so:

ode23 : mtodo Runge-Kutta, frmula (2,3)


ode45 : mtodo Runge-Kutta, frmula (4,5)
ode23s : mtodo de Rosenbrock
ode23t : regra trapezoidal
ode23tb: regra trapezoidal-frmula de diferenciao para trs de ordem 2
ode113 : mtodo de Adams
ode23, ode45 e ode113 so usadas para equaes diferenciais nonstiff;
ode15s, ode23s e ode23tb so usadas para equaes diferenciais stiff;
ode15s tambm se aplica a equaes diferenciais-algbricas;
ode23t a equaes diferenciais algbricas e equaes diferenciais moderadamente stiff.

Prof. Adade
MATLAB BSICO
Soluo de Equaes Diferenciais
Problemas classificados como stiff apresentam dinmicas em escalas de tempo muito
distintas (muito grandes e muito pequenas comparadas ao intervalo de integrao).
Ex. A equao diferencial,
&y&(t ) + 100 y& (t ) + 0,9999 y (t ) = 0 , y(0) = 1 , y& (0) = 0

tem como soluo,


y(t) = -0,0001 e-99,99t + 1,0001 e-0,01t
O primeiro termo inicia com magnitude 0,0001 e decai rapidamente, e o segundo termo
inicia com magnitude 10000 vezes maior e decai muito lentamente relativamente ao
primeiro termo.

Exerccio. Verificar que o solver ode15s fornece soluo rapidamente, enquanto que
ode45 no.
Prof. Adade
MATLAB BSICO
Soluo de Equaes Diferenciais
A sintaxe bsica de chamada para todas essas funes :
[t,y] = solver(nome da funo, faixa, x0)
t - o vetor de instantes de tempo;
y - array soluo; cada linha em y corresponde soluo em um instante de tempo
retornado na linha correspondente de t;
solver - uma das funes que solucionam equaes diferenciais, listadas acima;
nome da funo - a funo que calcula dy/dt;
faixa - um vetor especificando o intervalo de soluo, p. ex. [t0 tf], onde t0 especifica o
instante inicial e tf o instante final da soluo; e
x0 - vetor de condies iniciais.

A sintaxe acima pode conter novos elementos dependendo do solver utilizado.

Prof. Adade
MATLAB BSICO
Soluo de Equaes Diferenciais
Matlab possui vrios outros recursos para soluo de equaes diferenciais, por exemplo, para
resolver problemas de valor de contorno (boundary value problems) e alguns tipos de equaes
diferenciais parciais. Recomenda-se olhar o tutorial disponibilizado no Matlab sobre o assunto,
acessado por meio do comando odedemo.

Prof. Adade
MATLAB BSICO
Soluo de Equaes Diferenciais
Ex. 1. Equao de Van der Pol

d y + (y -1) d y + y = 0
2
2
2
dt dt
Na forma de espao de estados, definindo x2 = y e x1 = dy/dt, tem-se,
d
x = x (1 - x
1 1
2
2 )-x 2
dt

d
x =x
2 1
dt
Criar um M-file, denominado vderpol.m, representando essas equaes diferenciais:
function xdot = vderpol (t,x) function xdot = vderpol (t,x)
xdot = [ 1 -(1 + x(1)*x(2)) ; 1 0 ] * x; xdot = zeros(2,1);
xdot(1) = x(1) .* (1 - x(2) .^2) x(2);
Alternativamente, xdot(2) = x(1)
Prof. Adade
Alternativamente, usando o Editor de Equaes Diferenciais (DEE):

>> dee

Prof. Adade
Simular a equao diferencial no intervalo 0 t 20 :
t0 = 0 ; tf = 20;
x0 = [0 0.25]' ; % condies iniciais
[t,x] = ode23('vderpol', [t0 tf],x0);
plot(t,x(:,1), 'r-', t,x(:,2),'b-.')
xlabel('t'), title('Soluo da equao de Van der Pol')
legend('dy/dt', 'y')

S olu o da equa o de V an der P ol


3

-1

-2
dy /dt
y
-3
0 2 4 6 8 10 12 14 16 18 20
t

Prof. Adade
MATLAB BSICO
Polinmios e Ajustes de Curvas
Polinmios so representados no Matlab por vetores-linha de coeficientes em potncias
descendentes. Algumas funes do MATLAB aplicadas a polinmios so:
polyval : calcula o valor do polinmio para um dado valor de sua varivel;
poly : poly(A) acha o polinmio caracterstico da matriz A (coeficientes em potncia
descendente); poly(r) retorna os coeficientes do polinmio que tem como razes os
valores no vetor r;
roots : roots(P) acha as razes do polinmio cujos coeficientes esto definidos no vetor P;
conv : conv(P,Q) faz o produto dos polinmios cujos coeficientes esto definidos nos
vetores P e Q;
deconv : [Q,R] = deconv(B,A), A e B vetores de coeficientes, efetua a diviso de polinmios
B por A. Resultado: polinmio quociente Q e polinmio resto R.
polyder: computa a derivada de um polinmio; computa, tambm, a derivada de produto e
quociente de dois polinmios.
polyfit : ajuste polinomial de dados: acha os coeficientes de um polinmio que ajusta um
conjunto de dados no sentido de mnimos quadrados.
Prof. Adade
MATLAB BSICO
Polinmios e Ajustes de Curvas
Exs:
A = [ 1 2 3; 4 5 6 ; 7 8 0 ]
P = poly(A)
P=
1 -6 -72 -27
polyval(P,2)
ans =
-187.0000
r = roots(P)
r=
12.1229
-5.7345
-0.3884
p2 = poly(r)
p2 =
1 -6 -72 -27

Q=[1 2 1 ]; c = conv(P,Q) c= 1 -4 -83 -177 -126 -27


Prof. Adade
Ex. Um polinmio tem razes em -2, 2, -2+3j e -2-3j. Determinar o polinmio e plotar a
funo polinomial para o intervalo (-5,5) em passos de 0,01.
r = [-2 ; 2; -2+3j; -2-3j];
p = poly(r);
t=(-5+eps:0.01:5-eps);
plot(t,polyval(p,t),'r')

1400

1200

1000

800

600

400

200

-200
-5 0 5

Prof. Adade
Ex. Uma das maneiras mais usuais para se ajustar uma curva no MATLAB usar a funo
polyfit, que ajusta um polinmio aos dados especificados.

x=1:10;
y=exp(x); % gera dados exponenciais a serem ajustados
c=polyfit(x,y,9); % determina os coeficientes de um polinmio de ajuste de grau 9
yfit = polyval(c,x); % calcula o polinmio definido por c nos valores de x
plot (x,y,'bo',x,yfit,'r-')
4
x 10
2.5

1.5

0.5

0
1 2 3 4 5 6 7 8 9 10

Prof. Adade
MATLAB BSICO
Interpolao
Matlab proporciona vrios recursos para a interpolao, processo de estimar valores
que se situam entre pontos de dados conhecidos. Algumas das funes para esse fim so:
interp1: yi = interp1(x, y, xi, mtodo) efetua interpolao unidimensional, usando
tcnicas polinomiais; x e y so vetores de pontos de dados e respectivos valores
da funo y(x); xi o vetor de pontos a serem interpolados e mtodo um
alfanumrico (string) especificando o mtodo de interpolao (linear, spline
cbica e outros). yi = interp1(x, y, xi, mtodo, 'extrap') : efetua extrapolao.

interpft: efetua interpolao unidimensional usando mtodo baseado na transformada


rpida de Fourier.

interp2/interp3: efetua interpolao bidimensional / 3-D. Permitem especificar o mtodo


de interpolao: 'nearest',
interpn: efetua interpolao multidimensional. 'linear', 'cubic', 'spline'.

spline: efetua interpolao por spline cbica.


Prof. Adade
MATLAB BSICO
Interpolao
Ex. Considere-se a matriz census.mat que contm dados do censo populacional dos E.U.A.
load census % carrega dados de censo populacional
plot(cdate,pop,'or'), hold on % plota os dados originais
xi = [1905 1915 1925 1935 1945 1955 1965 1975 1985 1995 2005 2010]';
% define vetor de pontos a interpolar
yi = interp1(cdate,pop,xi,'linear','extrap'); % efetua interpolao linear com extrapolao
plot(xi,yi,'*b')
300

250

200
Populao (em milhes)

150

100

50

0
1750 1800 1850 1900 1950 2000 2050
A no

Prof. Adade
MATLAB BSICO
Interpolao
Ex. Considere-se Z uma funo das variveis altitude e nmero de Mach e a seguinte tabela de
dados (altitude a abcissa, nmero de Mach a ordenada e Z os valores correspondentes dessa
funo) medidos para essas variveis:
altitude = [0; 5000; 10000; 15000; 20000; 25000; 30000; 35000; 40000];
NumMach = [0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9];
Z =[122059 111997 105356 100676 97798 87118 84516 82292;
110667 102135 96157 92224 92167 84769 77963 75619;
94226 88879 83835 81251 81011 82950 72590 73395;
80997 76295 71861 70032 69872 70339 70766 71140;
69023 65228 61643 60179 60073 60678 61429 63293;
58449 55611 52911 50011 51759 52382 53227 56310;
47039 46061 45104 44166 44313 44887 45843 48369;
39593 38801 38027 37267 37365 37974 38886 40861;
29251 28695 28139 27583 27788 28046 28651 30167];
Deseja-se interpolar os dados para valores da altitude:
y = 0:100:40000; A = interp2(NumMach, altitude, Z, NumMach, y');
Prof. Adade
MATLAB BSICO
Anlise de Dados
Matlab bsico apresenta um conjunto de funes para anlise de dados, por exemplo, para
organizar os dados, funes estatsticas e de anlise incluindo regresso, ajuste de curvas,
filtragem e transformada de Fourier.
Recursos adicionais so obtidos atravs de toolboxes como o Signal Processing, System
Identification e Statistics.
As funes processam colunas de dados. Algumas das funes para essa finalidade so:
mean: calcula valor mdio.
std: calcula desvio padro.
cov: calcula varincia.
corrcoef: calcula coeficiente de correlao.
fft: efetua a transformada discreta de Fourier.
ifft: efetua a transformada discreta inversa de Fourier.

Prof. Adade
MATLAB BSICO
Anlise de Dados
Anlise orientada por coluna:

variveis

observaes matriz de dados


(medidas) M

Prof. Adade
MATLAB BSICO
Anlise de Dados
Exemplo. % Carrega a matriz de dados Idata

longley % m-file com a matriz de dados Idata

% Tratamento dos dados


[n,p] = size(Idata);
e = ones(n,1);
X = Idata e * mean(Idata); % remove a mdia
% mean(Idata) retorna vetor-linha com o valor mdio
% de cada coluna de Idata

X = X ./ (e * std(X)); % normaliza para desvio padro unitrio


% std(X) retorna vetor-linha com o desvio padro de
% cada coluna de X

Teste: mean(X) [0 0 0] , std(X) [1 1 1]

Prof. Adade
MATLAB BSICO
Anlise de Dados
Exemplo (cont.).

% Regresso da ltima coluna (que corresponde a desemprego neste exemplo) nas colunas
anteriores:

y = Idata(:,7);
A = [ Idata(:,1:6) ones(size(y)) ];
coef = A \ y % resolve o sistema de eqs. lineares A coef = y
% proporciona o melhor ajuste no sentido de mnimos-quadrados

Prof. Adade

Vous aimerez peut-être aussi