Beruflich Dokumente
Kultur Dokumente
ndice Analtico
1.1 Introduo
2
Tutorial do Matlab 3
Exemplo:
A = [ 1 2 3; 4 5 6; 7 8 9 ]
Resulta:
A=
1 2 3
4 5 6
7 8 9
Elementos de uma matriz podem ser quaisquer expresses Matlab. Por exemplo:
Resulta:
x=
-1.3000 1.7321 4.8000
x(5) = abs(x(1))
Resulta:
x=
-1.3000 1.7321 4.8000 0 1.3000
r = [ 10 11 12 ];
A = [ A; r ]
Tutorial do Matlab 4
A=
1 2 3
4 5 6
7 8 9
10 11 12
Voc pode extrair sub-matrizes de uma matriz maior usando : (dois pontos).
Por exemplo:
A = A( 1:3 , : );
A=
1 2 3
4 5 6
7 8 9
varivel = expresso
ou simplesmente,
expresso
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.
Para listar as variveis ativas use o comando who. Para obter mais
informaes sobre as variveis como: nome, tamanho, nmero de elementos,
etc., use o comando whos.
O utilitrio de HELP
help matfun
Para obter auxlio sobre uma funo especfica digite help e o nome da
funo. Exemplo:
Tutorial do Matlab 6
help inv
lookfor inverse
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
-4.534i
1.760217e-11
^ potenciao
Tutorial do Matlab 7
\ diviso esquerda
/ diviso direita
* multiplicao
- subtrao
+ adio
Formato de sada
x = [ 4/3 1.2345e-6 ]
format short
1.3333 0.0000
format short e
1.3333e+00 1.2345e-06
Funes
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 3
2 4
C=A+B
C=
2 5
5 8
D=C-2
D=
0 3
3 6
Multiplicao de matrizes
E=A*B
E=
5 11
11 25
F = 2*E
F=
10 22
22 50
Diviso de matrizes
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
< 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
Funes matemticas
A = [ -1 2 -3; 4 -5 6];
B = abs(A)
B=
1 2 3
4 5 6
Gerando vetores
x = 1:5
x=
1 2 3 4 5
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 1.0000 3.1623 10.0000
Indexando
Tutorial do Matlab 15
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 5
7 8
A( [1 3], [1 3] )
A=
1 3
7 10
A = [1 2; 3 4; 5 6];
B = A(:)
B=
Tutorial do Matlab 16
1
2
3
4
5
6
A(L,:)
Matrizes vazias
A declarao,
X=[]
A( :, [2 4] ) = [ ]
Tutorial do Matlab 17
Matrizes especiais
Manipulando matrizes
Conveno
count = [
11 57 291
43 178 1011
38 163 1095
61 420 2407
12 59 287 ]
Para esse exemplo temos 5 observaes para 3 variveis. Isso pode ser
obtido como segue:
[n,p] = size(count)
n=
5
p=
3
mx = max(count);
mu = mean(count);
sigma = std(count);
resultam em:
mx =
61 420 2407
mu =
1.0e+003 *
Ajuste de curvas
px c1x d c2x d 1 cn
c = polifit(x,p,n)
Autovalores e autovetores
eig(A)
[X,D] = eig(A)
Representao de polinmios
A=
1 2 3
4 5 6
7 8 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
Tutorial do Matlab 22
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
Processamento de sinais
Filtragem de dados
A funo,
y = filter(b,a,x)
x y
H(z)
[h,w] = freqz(b,a,n);
mag = abs(h);
fase = angle(h);
Tutorial do Matlab 24
semilogy(w,mag)
plot(w,fase)
Integrao Numrica
Equaes no lineares e Otimizao
Soluo de Equaes Diferenciais
etc
1 1
f (x ) 6
(x 0,3) 0,01 (x 0,9)2 0,04
2
foi codificada em um arquivo com extenso .m, por exemplo chamado humps.m,
cuja listagem mostrada a seguir:
x = -1:.01:2;
plot(x,humps(x))
Tutorial do Matlab 25
100
80
60
40
20
-20
-1 -0.5 0 0.5 1 1.5 2
Integrao numrica
Uma funo, tal como humps, pode ser integrada numericamente pelo
processo chamado 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.
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
Equaes diferenciais
x (x 2 1)x x 0
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)
Tutorial do Matlab 28
-1
-2
-3
0 5 10 15 20
1.1.8 Grficos
Grficos 2-D
Criando um grfico
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+)')
Tutorial do Matlab 30
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 0.5 1
x=sin(t)
O que ele pode fazer mudar a escala dos eixos automaticamente se os novos
dados no se acomodarem dentro da escala anterior. Exemplo:
plot(x)
hold on
plot(y1,'--')
plot(y2,'-.')
hold off
Tutorial do Matlab 32
Resulta,
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 50 100 150 200 250
plot(eig(randn(20,20)),x)
Tutorial do Matlab 33
Distribuio de Autovalores
4
-1
-2
-3
-4
-4 -2 0 2 4 6
A funo plot pode ter um nico argumento, como plot(Y). Ela desenha
uma curva para cada coluna de Y. O eixo x formado pelo ndice de cada linha.
Se X e Y so matrizes, plot(X,Y) exibe o grfico das colunas de X versus colunas
de Y.
X = 0:pi/50:2*pi;
Y = sin(X); Z = cos(X); W = log(X);
A = [Y' Z' W'];
plot(A)
Resulta,
Tutorial do Matlab 34
1.5
0.5
-0.5
-1
-1.5
-2
-2.5
-3
0 20 40 60 80 100 120
Importando dados
load dados.dat
F1 = dados(:,1);
F2 = dados(:,2);
X = dados(:,3);
subplot(211), plot(X,F1)
Tutorial do Matlab 35
subplot(212), plot(X,F2)
Resulta,
2
0 2 4 6 8 10
0
0 2 4 6 8 10
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 frequncia tendendo para
infinito quando x 0,5.
x = (0:1/2000:1)';
plot(x,cos(tan(pi*x)))
Resulta,
1 y = c o s ( t a n ( p i* x ) )
0 .8
0 .6
0 .4
0 .2
-0 .2
-0 .4
-0 .6
-0 .8
-1
0 0 .2 0 .4 0 .6 0 .8 1
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.2
-0.4
-0.6
-0.8
-1
0 0.2 0.4 0.6 0.8 1
Grficos 3-D
FOR
O Matlab possui a sua verso prpria dos loops DO ou FOR. Com isso
possvel repetir um grupo de declaraes por um nmero predeterminado de
vezes. Por exemplo,
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
n = 1;
while prod(1:n) < 1.e100, n = n+1; end
n
Declaraes IF e BREAK
if n < 0
A = -1;
elseif rem(n,2) == 0
A=0
else
A=1
end
"Pegue um nmero inteiro. Se ele for par, divida por dois; se for impar,
multiplique ele por 3 e some 1. Repita esse processo at que o inteiro seja igual
a um. O problema saber se existe algum inteiro para o qual o processo nunca
termina".
while 1
n = input('Entre com n [negativo aborta] = ');
if n <= 0, break, end
while n > 1
if rem(n,2) == 0
n = n/2
else
n = 3*n+1
end
end
end
1.1.10 Arquivos M
Arquivos Scripts
f = [ 1 1]; i = 1;
plot(f)
Arquivos de funes
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
[m,n] = size(x);
if m == 1
m = n;
end
mean = sum(x) / m;
stdev = sqrt(sum(x.^2)/m - mean.^2);
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);
voc pode criar um help online para os seus M-files pessoais entrando o
texto em uma ou mais linhas de comentrio, comeando sempre pela segunda
linha do arquivo. Por exemplo, o arquivo da funo angle,
function p = angle(h)
p = atan2(imag(h), real(h));
Informaes teis
Quando voc chama uma funo pela primeira vez, o Matlab compila a
funo e a coloca na memria. Ela estar ento disponvel para os usos
subsequentes sem a necessidade de ser compilada. Permanecer na memria at
o final da seo ou at que voc fique com pouca memria, acarretando na sua
eliminao automtica.
Variveis globais
y1 y1 y2 y1
y2 y2 y2 y1
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)];
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
Tutorial do Matlab 46
s = 'Ola'
s=
Ola
c = 23;
title(['A temperatura ',num2str(c),' graus C'])
A funo EVAL
fname = dados;
for i = 1:10
eval( [ 'load ', fname, int2str(i) ] )
end
Transferncia de dados
Importando dados
Para exportar dados tambm existem vrias opes, das quais algumas
so listadas a seguir:
A = rand(4,3);
save temp.dat A -ascii