Escolar Documentos
Profissional Documentos
Cultura Documentos
ndice Analtico
1.1
Matlab Bsico ....................................................................................... 2
1.1.1 Introduo ......................................................................................... 2
1.1.2 Operaes Matriciais ........................................................................ 8
1.1.3 Operaes em Array........................................................................ 10
1.1.4 Manipulao Matricial e Vetorial ................................................... 13
1.1.5 Anlise de Dados ............................................................................ 18
1.1.6 Funes Matriciais .......................................................................... 20
1.1.7 Polinmios e Processamento de Sinais ........................................... 21
1.1.8 Funes de Funes ........................................................................ 24
1.1.9 Grficos ........................................................................................... 28
1.1.10 Controles de Fluxo ...................................................................... 38
1.1.11 Arquivos M ................................................................................. 40
1.1.12 Arquivos de Disco....................................................................... 47
1.1.13 O Depurador do Matlab .............................................................. 49
1.1.1 Introduo
O MATLAB trabalha essencialmente com um tipo de objeto: Matriz
retangular numrica (real ou complexa). Em algumas situaes existe
significado especial agregado matrizes de dimenso 1 (escalares) e matrizes
com uma s linha ou coluna (vetores). A linguagem MATLAB no usa
declarao preliminar ou dimensionamento de variveis. Isso feito de forma
automtica.
Matrizes podem ser adicionadas no ambiente de vrias formas, contudo a
forma mais simples para matrizes pequenas entrando com a lista dos
elementos, seguindo a seguinte conveno:
Tutorial do MATLAB
Exemplo:
A = [ 1 2 3; 4 5 6; 7 8 9 ]
Resulta:
A=
1
4
7
2
5
8
3
6
9
x = [ -1.3
sqrt(3)
(1+2+3)*4/5 ]
-1.3000
1.7321
Resulta:
x=
4.8000
x(5) = abs(x(1))
Resulta:
x=
-1.3000
1.7321
4.8000
1.3000
r = [ 10 11 12 ];
Tutorial do MATLAB
A = [ A; r ]
A=
1
4
7
10
2
5
8
11
3
6
9
12
Voc pode extrair sub-matrizes de uma matriz maior usando : (dois pontos).
Por exemplo:
A = A( 1:3 , : );
A=
1
4
7
2
5
8
3
6
9
varivel = expresso
ou simplesmente,
expresso
Tutorial do MATLAB
Voc pode formar uma varivel ou nome de funo com uma letra
seguida de qualquer quantidade de letras (ou underscore). O MATLAB
diferencia letras maisculas de minsculas e usa somente os primeiros 19
caracteres do nome.
O Utilitrio de HELP
O comando help produz informaes resumidas sobre funes
especficas ou sobre tpicos do MATLAB. Para listar um grupo de funes,
digite help seguido do nome do grupo de funes. Exemplo:
help matfun
Para obter auxlio sobre uma funo especfica digite help e o nome da
funo. Exemplo:
Tutorial do MATLAB
help inv
lookfor inverse
invhilb
ipermute
acos
acosd
acosh
Salvando e Saindo
Para sair do MATLAB digite exit. Encerrando uma seo do MATLAB,
apaga-se todas as variveis da rea de trabalho (workspace). Se for necessrio,
salve suas variveis digitando save. Este comando salvar todas as variveis em
um arquivo chamado matlab.mat. Para recuperar as variveis use o comando
load. Voc tambm pode salvar somente algumas variveis e usar o nome de
um arquivo qualquer. O exemplo a seguir salva as variveis x, y e z no arquivo
temp.mat.
save temp x y z
potenciao
Tutorial do MATLAB
\
/
*
+
diviso esquerda
diviso direita
multiplicao
subtrao
adio
Formato de Sada
Para alterar a formatao do nmero a ser apresentado na tela, utilize o
comando format. Exemplos:
x = [ 4/3 1.2345e-6 ]
format short
1.3333
0.0000
format short e
1.3333e+00
1.2345e-06
Funes
Grande parte do poder do MATLAB vem do enorme conjunto de funes.
Algumas das funes so internas ao processador MATLAB e outras so
disponveis como bibliotecas externas na forma de M-files. O conjunto de
funes aplicadas a uma rea especfica denominado toolbox. Cada usurio
pode criar suas prprias funes que se comportam como se fossem funes
internas. As sees adiante discutem cada uma das diferentes categorias de
funes analticas do MATLAB bsico.
Tutorial do MATLAB
possvel combinar funes de vrias formas. Exemplo:
x = sqrt( log(z) )
angulo = atan2(y,3*x)
[ V, D ] = eig( A )
A = [ 1 2; 3 4 ]
A=
1
2
3
4
B = A'
B=
1
2
3
4
Tutorial do MATLAB
C=A+B
C=
2
5
5
8
D=C-2
D=
0
3
3
6
Multiplicao de Matrizes
O smbolo * denota multiplicao de matrizes e vlida sempre que
dimenses internas dos dois operandos for igual. Exemplo:
E=A*B
E=
5
11
11
25
F = 2*E
F=
10
22
22
50
Diviso de Matrizes
Existe dois smbolos de diviso de matrizes: / e \. Os significados so:
10
Tutorial do MATLAB
X = A\B soluo do sistema A*X = B
X = B/A soluo do sistema X*A = B
expm
logm
sqrtm
poly
det
trace
polinmio caraterstico
determinante
trao
11
Tutorial do MATLAB
x = [1 2 3]; y = [4 5 6];
z = x.*y
z=
4
10
18
z = x.\y
z=
4.0000
2.5000
2.000
z = x.^y
z=
1
32
729
Operadores Relacionais
Para se comparar matrizes de dimenses idnticas, existem operadores
relacionais:
<
<=
>
>=
==
~=
menor
menor ou igual
maior
maior ou igual
igual
diferente
Tutorial do MATLAB
12
2 + 2 ~= 4
ans =
0
A = [8 1 6; 3 5 7; 4 9 2];
G = rem(A,3);
P = (G == 0)
P=
0
0
1
1
0
0
0
1
0
Y = [1 2 3 4 5 6 7 8 9];
i = find(Y > 3.0);
Y(i) = 10*ones(size(i));
Operadores Lgicos
Os operadores &, |, e ~ so os operadores lgicos "e", "ou" e "no"
respectivamente. As funes any e all so muito utilizadas em conjunto com
operadores lgicos. A funo any(x) retorna "1" se qualquer elemento de x for
no nulo e retorna "0" caso contrrio. A funo all(x) retorna "1" somente se
13
Tutorial do MATLAB
Funes Matemticas
Um conjunto de funes matemticas elementares so aplicveis
elemento-a-elemento. Exemplo:
A = [ -1 2 -3; 4 -5 6];
B = abs(A)
B=
1
2
4
5
3
6
x = 1:5
x=
1
14
Tutorial do MATLAB
y = 0 : pi/4 : pi
y=
0.0000 0.7854 1.5708 2.3562 3.1416
z = 6: -1 : 1
z=
6 5 4 3 2 1
x = (0 : 0.2 : 3)';
y = exp(-x) .* sin(x);
[x y]
ans =
0
0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
2.0000 0.1231
2.2000 0.0896
2.4000 0.0613
2.6000 0.0383
2.8000 0.0204
3.0000 0.0070
Existem outras funes para a gerao de vetores tal como logspace que
gera um vetor espaado logaritmicamente:
w = logspace(-1,1,5)
w=
0.1000 0.3162
Indexando
1.0000
3.1623 10.0000
15
Tutorial do MATLAB
A = [1 2 3; 4 5 6; 7 8 9];
A(3,3) = A(1,3) + A(3,1)
A=
1 2 3
4 5 6
7 8 10
A(:,1)
A=
1
4
7
A(2:3,1:2)
A=
4
7
5
8
A( [1 3], [1 3] )
A=
1 3
7 10
A = [1 2; 3 4; 5 6];
B = A(:)
B=
16
Tutorial do MATLAB
1
2
3
4
5
6
A(L,:)
Matrizes vazias
A declarao,
X=[]
A( :, [2 4] ) = [ ]
Tutorial do MATLAB
17
Matrizes Especiais
Existe uma coleo de funes que geram matrizes que so normalmente
encontradas nos problemas de lgebra linear e processamento de sinais.
Exemplos:
18
Tutorial do MATLAB
1.1.5 Anlise de Dados
count = [
11
43
38
61
12
57
178
163
420
59
291
1011
1095
2407
287 ]
Para esse exemplo temos 5 observaes para 3 variveis. Isso pode ser
obtido como segue:
[n,p] = size(count)
n=
5
p=
3
19
Tutorial do MATLAB
std
sort
sum
prod
cumsum
cumprod
diff
corrcoef
cov
var
- desvio padro
- ordenao
- soma dos elementos
- produto dos elementos
- soma cumulativa dos elementos
- Produto cumulativos dos elementos
- Aproximao da derivada
- Coeficientes de correlao
- Matriz de covarincia
- Varincia
mx = max(count);
mu = mean(count);
sigma = std(count);
resultam em:
mx =
61
420
2407
mu =
1.0e+003 *
0.0330
0.1754
1.0182
sigma =
21.4126 147.9503 865.7639
Ajuste de Curvas
Uma das alternativas possveis no MATLAB para encontrarmos os
coeficientes de p(x) a partir de dados tabelados atravs da funo polyfit,
onde n o grau do polinmio.
20
Tutorial do MATLAB
px c1x d c2x d 1 cn
A sintaxe usada a seguinte, onde x a abscissa, p o valor da funo para
cada x(i) e n o grau do polinmio.
c = polifit(x,p,n)
eig(A)
[X,D] = eig(A)
cond
norm
rank
rcond
21
Tutorial do MATLAB
1.1.7 Polinmios e Processamento de Sinais
A=
1
4
7
2
5
8
3
6
0
calculado com
p = poly(A)
p=
1 -6 -72 -27
r = roots(p)
r=
12.1229
-5.7345
-0.3884
p2 = poly(r)
p2 =
1 -6 -72 -27
22
Tutorial do MATLAB
a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
c=
4 13 28 27 18
[q,r] = deconv(c,a)
q=
4 5 6
r=
0 0 0 0 0
poly
roots
polyval
polyvalm
conv
deconv
residue
polyder
polyfit
- polinmio caracterstico
- razes de um polinmio
- clculo do valor numrico do polinmio
- clculo do polinmio de matrizes
- multiplicao (convoluo)
- diviso (deconvoluo)
- expanso em fraes parciais
- derivada do polinmio
- ajuste polinomial de curva
Processamento de Sinais
Vetores so usados para armazenar sinais de dados amostrados, ou
seqncias, para o processamento dos sinais. Para sistemas com mltiplas
entradas, cada linha da matriz corresponde a uma amostra. O MATLAB bsico
contm as funes a seguir, enquanto que o Signal Processing Toolbox contm
muitas funes adicionais.
23
Tutorial do MATLAB
abs
angle
conv
deconv
fft
ifft
fftshift
fft2
ifft2
fftshift
conv2
- magnitude complexa
- ngulo de fase
- convoluo
- deconvoluo
- transformada rpida de Fourier
- transformada rpida inversa de Fourier
- alterna quadrantes de matrizes
- FFT de duas dimenses
- FFT inversa de duas dimenses
- rearranja os resultados da FFT
- convoluo de duas dimenses
Filtragem de Dados
A funo,
y = filter(b,a,x)
H(z)
X ( z)
1 a(2) z 1 a(na) z ( na1)
[h,w] = freqz(b,a,n);
mag = abs(h);
fase = angle(h);
24
Tutorial do MATLAB
semilogy(w,mag)
plot(w,fase)
Integrao Numrica
Equaes no lineares e Otimizao
Soluo de Equaes Diferenciais
etc
1
1
6
2
(x 0,3) 0,01 (x 0,9)2 0,04
foi codificada num arquivo com extenso .m, por exemplo chamado humps.m,
cuja listagem mostrada a seguir:
% listagem do arquivo humps.m
function y = humps(x)
y = 1/.((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;
x = -1:.01:2;
plot(x,humps(x))
25
Tutorial do MATLAB
100
80
60
40
20
-20
-1
-0.5
0.5
1.5
Integrao Numrica
Uma funo, tal como humps, pode ser integrada numericamente pelo
processo chamado de quadratura que uma funfun. Exemplo:
q = quad('humps',0,1)
q=
29.8583
Note que o primeiro argumento da funo quad uma string que contm o
nome de uma funo. Isso mostra porque essa funo chamada funo de
funo ( uma funo que opera com outras funes). Os outros dois
argumentos so os limites de integrao.
Equaes No Lineares e Funes de Otimizao
26
Tutorial do MATLAB
fminsearch
fzero
xm = fminsearch('humps',0.5, 1)
xm =
0.6370
y = humps(xm)
y=
11.2528
xz1 = fzero('humps',0)
xz1 =
-0.1316
xz2 = fzero('humps',1)
xz2 =
1.2995
fgoalattain
fmincon
fminsearch
fsolve
fzero
fminimax
- consecuo de metas
- minimizao com restries
- minimizao sem restries
- soluo de equaes no lineares
- busca de zeros
- soluo do problema minimax
27
Tutorial do MATLAB
linprog
quadprog
- programao linear
- programao quadrtica
Equaes Diferenciais
Duas das funes disponveis para a soluo de equaes diferenciais
ordinrias so:
ode23
ode45
x (x 2 1)x x 0
Esta equao pode ser escrita como um sistema de equaes diferenciais de
primeira ordem
x1 x1 (1 x22 ) x2
x 2 x1
O primeiro passo para simular este sistema criar um arquivo que contem este
sistema de equaes diferenciais. Chamaremos este arquivo de vdpol.m
t0 = 0; tf = 20;
x0 = [0 0.25]'; % condicoes iniciais
[t,x] = ode23( 'vdpol', [t0 tf], x0 );
plot(t,x)
28
Tutorial do MATLAB
3
-1
-2
-3
0
10
15
20
plot
loglog
semilogx
semilogy
29
Tutorial do MATLAB
title
xlabel
ylabel
text
gtext
grid
Criando um Grfico
Se y um vetor, plot(y) produz um grfico linear dos elementos de y em
funo do indexador de y. Se voc especificar dois vetores como argumentos,
plot(x,y) produz um grfico de y versus x. Voc pode tambm especificar vrios
conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de
dados, tudo isso num mesmo comando:
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--')
title('Defasagem')
xlabel('x=sin(t)')
ylabel('y=sin(t+)')
30
Tutorial do MATLAB
Defasagem
1
0.8
0.6
0.4
0.2
y=sin(t+)
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0.5
x=sin(t)
31
Tutorial do MATLAB
Smbolo
y
m
c
r
g
b
w
k
Cor
amarela
magenta
ciano
vermelha
verde
azul
branca
preta
Smbolo
.
o
x
+
*
:
-.
-s
d
v
^
<
>
P
h
Linha
ponto
crculo
marca x
marca +
marca *
slida
pontilhada
trao-ponto
tracejada
quadrado
diamante
tringulo (p/ baixo)
tringulo (p/ cima)
tringulo (p/esquerda)
tringulo (p/diereita)
pentragrama
hexagrama
plot(x)
hold on
plot(y1,'--')
plot(y2,'-.')
hold off
32
Tutorial do MATLAB
Resulta,
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
50
100
150
200
250
plot(eig(randn(20,20)),x)
33
Tutorial do MATLAB
Distribuio de Autovalores
4
-1
-2
-3
-4
-4
-2
Resulta,
X = 0:pi/50:2*pi;
Y = sin(X); Z = cos(X); W = log(X);
A = [Y' Z' W'];
plot(A)
34
Tutorial do MATLAB
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
-3
0
20
40
60
80
100
120
Importando Dados
Voc pode importar e exibir o grfico de dados gerados fora do
MATLAB. Suponha voc tenha um arquivo chamado dados.dat contento
valores de duas funes e da varivel independente.
dados.dat
2.3
3.1
4.5
5.6
4.8
4.7
4.4
4.0
4.2
1.0
1.9
2.2
2.6
3.5
4.7
5.3
6.0
7.1
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0
load dados.dat
F1 = dados(:,1);
F2 = dados(:,2);
X = dados(:,3);
subplot(211), plot(X,F1)
35
Tutorial do MATLAB
subplot(212), plot(X,F2)
Resulta,
6
5
4
3
2
0
10
10
8
6
4
2
0
bar
compass
errorbar
feather
fplot
hist
polar
quiver
rose
stairs
fill
- grfico de barras
- grfico de ngulos com setas
- grfico de barras de erros
- grfico de ngulos
- calcula e exibe o grfico de uma funo
- cria um histograma
- grfico em coordenadas polares
- cria um grfico de um gradiente
- histograma em ngulo
- grfico similar ao de barras sem linhas internas
- desenha um polgono e preenche o interior
36
Tutorial do MATLAB
Grfico de Funes Matemticas
Voc pode exibir o grfico de uma funo, y f (x) . A soluo pela fora
bruta calcular a funo para algumas centenas de pontos no intervalo de
interesse. Por exemplo, a funo a seguir oscila com freqncia tendendo para
infinito quando x 0,5.
x = (0:1/2000:1)';
plot(x,cos(tan(pi*x)))
Resulta,
y = c o s ( t a n ( p i* x ) )
1
0 .8
0 .6
0 .4
0 .2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
0
0 .2
0 .4
0 .6
0 .8
37
Tutorial do MATLAB
function y = fofx(x)
y = cos(tan(pi*x));
Resulta,
y = cos(tan(pi*x))
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.2
0.4
0.6
0.8
Grficos 3-D
O MATLAB oferece uma variedade de funes para a visualizao de
dados em 3-D, conforme sumarizado pelas funes a seguir. Contudo, no
faremos um detalhamento, visto que o assunto muito longo e pouco
interessante para os nossos objetivos.
Tutorial do MATLAB
38
for i = 1:1:m
for j = 1:1:n
A(i,j) = 1/(i+j-1);
Tutorial do MATLAB
39
end
end
A
WHILE
Tal como o for, a declarao while tambm para realizar um grupo de
declaraes um certo nmero de vezes. A diferena bsica que no while, o
controle do loop feito por uma condio lgica. Para ilustrar, vamos resolver
um problema: Qual o primeiro inteiro n para o qual n! (fatorial de n) um
nmero de 100 dgitos ?
n = 1;
while prod(1:n) < 1.e100, n = n+1; end
n
if n < 0
A = -1;
elseif rem(n,2) == 0
A=0
else
A=1
end
Tutorial do MATLAB
40
1.1.11 Arquivos M
A maneira mais simples de se usar o MATLAB no modo de comando.
Quando voc entra com uma linha de comando, ele processa e imediatamente
mostra o resultado. O MATLAB tambm pode executar uma seqncia de
comandos que est armazenada num arquivo. Estes dois modos formam um
ambiente interpretativo. Os arquivos que contm declaraes MATLAB so
chamados M-files porque usam a extenso .m. Por exemplo, o arquivo
bessel.m contm declaraes MATLAB para o clculo de funes Bessel.
Um M-file consiste de uma seqncia de declaraes MATLAB normais,
podendo incluir referencias a outros M-files. Um M-file pode chamar ele
prprio de forma recursiva. Voc pode criar um M-file usando um editor de
texto tal como o Notepad do Windows, ou outro qualquer. Dois tipos de M-
Tutorial do MATLAB
41
files podem ser usadas: lotes (scripts) e funes (functions). Arquivos scripts
automatizam uma seqncia de comandos. Arquivos de funo permitem criar
novas funes s existentes. Ambos, scripts e funes so arquivos texto tipo
ASCII.
Arquivos Scripts
O exemplo a seguir ilustra como calcular os primeiros 16 nmeros de
Fibonacci usando um arquivo script. Suponha que o nome do arquivo seja
fibno.m. Digitando fibno (sem a extenso) no prompt do MATLAB, faz com os
comandos contidos no arquivo sejam executados. Note que depois da execuo
do programa as variveis f e i permanecem na rea de trabalho (workspace) do
MATLAB. Verifique isso com who. Isso acontece porque os scripts operam
globalmente com dados no workspace. Os demos fornecidos junto como
MATLAB so bons exemplos de como usar scripts para realizar tarefas mais
complexas. Para chamar os demos digite demo no prompt do MATLAB.
Arquivos de Funes
Um M-file que contm a palavra function no incio da primeira linha um
arquivo de funo. Uma funo difere de um script no fato de que argumentos
podem ser passados; variveis definidas e manipuladas no arquivo so locais
funo e no operam globalmente no workspace. A funo listada seguir tem
o nome media1.m.
Tutorial do MATLAB
42
function y = media1(x)
% calculo da media
% soma / m
% inico do programa
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x) / m;
Por exemplo, se z um vetor de inteiros de 1 99, sua mdia pode ser calculada
como segue:
z = 1:99;
media1(z)
ans =
50
Voc pode criar uma funo um pouco mais complexa que media1,
chamada stat, que tambm calcula o desvio padro. Neste exemplo ilustramos o
uso de mltiplos argumentos de sada.
Tutorial do MATLAB
43
Uma funo que calcula o posto de uma matriz usa mltiplos argumentos
de entrada: No caso geral teramos mltiplos argumentos de entrada e de sada.
function r = rank(x,tol)
% rank (posto em Portugues) da matrix
s = svd(x);
if (nargin == 1)
tol = max(size(x)) * s(1) * eps;
end
r = sum(s > tol);
function p = angle(h)
% ANGLE Phase angle.
% ANGLE(H) returns the phase angles, in radians, of a
% matrix with complex elements.
%
% See also ABS, UNWRAP.
p = atan2(imag(h), real(h));
Tutorial do MATLAB
44
1.
2.
3.
4.
45
Tutorial do MATLAB
y1 y1 y2 y1
y2 y2 y2 y1
Crie o arquivo lotka.m:
function yp = lotka(t,y)
% modelo Votka-Voltera
global ALFA BETA
yp = [y(1) - ALFA*y(1)*y(2); -y(2) + BETA*y(1)*y(2)];
Tutorial do MATLAB
46
Uma vez que ALFA e BETA so globais voc pode alter-las interativamente e
novas solues podem ser obtidas sem ter que editar nenhum arquivo e sem
passar os valores como argumentos.
Variveis Alfanumricas
Variveis do tipo texto so introduzidas no MATLAB envolvendo o texto
com quotas simples (apstrofos). Por exemplo,
s = 'Ola'
s=
Ola
c = 23;
title(['A temperatura ',num2str(c),' graus C'])
A Funo EVAL
A funo eval usada com variveis do tipo texto para implementar
recursos de macros de texto. A funo eval(t) fora que o texto contido na
varivel t seja "resolvido". O exemplo a seguir mostra como usar o comando
load para carregar 10 arquivos seqencialmente numerados: dados1.mat,
dados2.mat, ...
fname = dados;
for i = 1:10
Tutorial do MATLAB
47
48
Tutorial do MATLAB
Tutorial do MATLAB
49