Você está na página 1de 20

Curso Bsico de MATLAB ( Captulo 2 - USERS'S GUIE !

1
"#" E$tra$do %atri&es si%ples
As matrizes so geradas por uma das seguintes formas:
* Digitando uma lista explcita de elementos.
* Gerando atravs de comandos internos e funes.
* Carregando partir de M-files (MATLAB files).
* Carregando de arquivos de dados externos.
A = [ 1 2 3; 4 5 6; 7 8 9 ] que produz
A =
1 2 3
4 5 6
7 8 9
tambm poderia ser digitado:
A = [ 1 2 3
4 5 6
7 8 9 ]
"#2 Ele%e$tos de u%a %atri&
x = [ -1.3 10 1500.5 ]
x(1) = -1.3
x(2) =10
x(3) =1500.6
Executando x(5)=2001 produz x = [ -1.3 10 1500.5 0 2001 ]
Se r = [ 10 11 12 ], fazendo A = [A ; r ] produz
A =
1 2 3
4 5 6
7 8 9
10 11 12
2
Se r = [10; 11; 12], fazendo A = [A r ] produz
A =
1 2 3 10
4 5 6 11
7 8 9 12
Se A = [ 1 2
3 4]
ento A = A(1:2,1) produz
1
3
"#' Co%a$dos e (ari)eis
)ari)el * e+press,o
ou simplesmente,
e+press,o
Por exemplo, 100/30 produz ans = 3.3333
'-' (ponto-e-vrgula) no mostra na tela uma expresso avaliada.
s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - ...
1/6 - 1/7;
Nomes de variveis e funes so formados por letra seguido de at 18 letras ou
nmeros.
Letras minsculas so diferentes de letras maisculas.
A varivel 'a' diferente da varivel 'A'.
"#. /0te$do i$1or%a23es do espa2o de tra0al4o
O comando who mostra quais variveis foram definidas durante a sesso.
3
O comando whos:
5a%e Si&e Total Co%ple+ Sparsit6
A 3 by 3 9 No Full
ans 1 by 1 1 No Full
Gra$d Total is ("789! * 97 06tes
Varivel internas eps contem a tolerncia para funes que calculam singularidade e
rank. Por default, igual 2.22e-16.
"#: 5;%eros e e+press3es arit%<ticas
3 -99 0.00011.6E-20 10.0e+7
Operadores aritmticos + - * / \(divisao esquerda) ^(exponeciao)
A constante pi interna.
Representao para infinito. A diviso por zero produz uma advertncia e gera um i$1.
Exemplo:
s = 1/0 produz
Diviso por zero
s =
inf
s = 0/0 produz
s =
NaN
"#= 5;%eros e %atri&es co%ple+as
z = 3+4*i ou z=3+4*j ou ento w=r*exp(i*theta)
Matrizes complexas
A = [ 1 2; 3 4] + i*[5 6; 7 8]
ou
A = [1+5*i 2+6*i; 3+7*i 4+8*i ]
4
"#> ?or%ato de Sada
Os formatos possveis para x = [4/3 1.2345e-6] so:
format short 1.3333 0.0000
format short e 1.3333E+000 1.2345E-006
format long 1.333333333333333 1.234500000000000E-006
format hex3FF55...553 3EB0....4ED
format + ++
"#9 @ELA ?acilit6
Para obter um help on-line digite:
4elp
Para obter help em um tpico especfico digite:
4elp tpico
Para obter help sobre o help digite:
4elp 4elp
"#B Sai$do e sal)a$do o espa2o de tra0al4o
Cuit ou e+it para sair do MATLAB
sa)e para salvar todas as variveis do espao de trabalho (%atla0#dat)
load para recuperar as variaveis do arquivo (%atla0#dat).
Salvar em (ou carregar de) outro arquivo digite sa)e arCui)o (ou load arCui)o).
Para salvar apenas a varivel X no arquivo te%p digite sa)e te%p D.
2# /pera23es co% %atri&es#
2#" Tra$sposi2,o#
A = [ 1 2 ; 3 4 ]
B = A'
produz
A = 1 2 B = 1 3
3 4 2 4
5
2#2 Adi2,o e Su0tra2,o (EF-!
C = A + B
produz
C = 2 5
5 8
C = 2 + A
produz
C = 3 4
5 6
2#' Multiplica2,o de Matri&es (8!
3.14 * A
produz
ans = -3.14
0
6.28
2#. i)is,o de Matri&es (GFH!
X = A\B a soluo de A * X = B obtido por inv(A) * B
X = B/A a soluo de X * A = B obtido por B * inv(A)
2#: Aote$cia2,o de Matri&es (I!
A^p onde A uma matriz quadrada e p um escalar.
Se p > 1 e inteiro, ento equivalente uma multiplicao convencional.
Caso contrrio, calculado por
[V,D] = eig(A) e ento A^p = V * D.^p/V
6
2#= ?u$23es ele%e$tares so0re %atri&es
expm(A) e
A
logm(A) log A
sqrtm(A)
poly polinomio caracteristico
det determinante
trace trao (soma dos elementos da diagonal)
kron delta de Kronecker
' /pera23es co% Arra6
Operao de elemento elemento. So precedidos por um ponto (.)
'#" So%a e su0tra2,o de arra6
'#2 Multiplica2,o e di)is,o de arra6#
.* a multiplicao elemento elemento.
./ .\ a diviso de elemento elemento.
'#' Aote$cia2,o de arra6s#
.^ a potenciao elemento elemento.
'#. /pera23es relacio$ais#
A comparao feita entre dois pares correspondentes de elementos.
1 (verdadeiro) ou 0 (falso).
< menor que
<= menor ou igual que
> maior que
>= maior ou igual que
== igual
~= diferente de
A matriz resultante composta de 0 e 1.
7
'#: /peradores LoJicos
& And
| Or
~ Not
Operam elementos elemento da matriz.
Elementos no nulos so considerados )erdadeiros.
Zero (0) falso.
Outras funes lgicas so:
any algum elemento do array por coluna verdadeiro.
all todos elementos do array so verdadeiros.
find indices do array que so verdadeiros.
exist checa se varivel existe.
isnan detecta NAN (not a number).
finite checa valores finitos.
isinf detecta infinitos.
isempty detecta matrizes vazias.
isstr detecta variavel tipo string.
issparse detecta matrizes esparsas.
isglobal detecta variveis globais.
'#= ?u$23es Mate%aticas Ele%e$tares
Aplicadas em cada elemento de um array.
sin, cos, tan, asin, acos, atan ...
abs, angle, sqrt, real, imag, round, fix, floor, ceil, sign, ...
'#> ?u$23es %ate%ticas especiais#
bessel
gamma
rat aproximao racional.
erf error function
inverf
.# Ma$ipula2,o de Matri&es e (etores#
.#" Gera2,o de (etores#
8
X = inicio:incremento:fim
Exemplos:
x = 0:pi/4:pi produzx= 0.0 0.78 1.57 2.35 3.14
y = 6:-1:1 produzy= 6 5 4 3 2 1
z = 1:5 produzz= 1 2 3 4 5
(incremento foi omitido)
k=linspace(-pi,pi,4) produzk = -3.16 -1.04 1.04 3.16
k=logspace(1,6,6) produzk = 1 10 100 1000 10000 100000
.#2 Su0scritos
Accessar elementos individuais de uma matriz.
A = 1 2 3 ento A(2,3) produz 6
4 5 6
B(1:5,3) a submatriz 5x1 das 5 primeiras linhas e a terceira coluna de B.
B(1:5,7:10) a submatriz 5x4 das 5 primeiras linhas e as colunas de 7 at 10.
B(:,3) a submatriz com todas as linhas da terceira coluna, ou seja, a
terceira coluna.
B(1:5,:) a submatriz com as 5 primeiras linhas e todas as colunas de B.
A(:) = 11:16 produzA = 11 14
12 15
13 16
As dimensoes de A(3x2) j foram definidas antes.
.#' Su0scritos co% )etores 7-"#
L vetor de dimensoes m de 0-1
A matriz de dimenso mxn
A(L,:) so linhas de A onde o elemento L no for nulo.
L = X(:,3) > 100;
X = X(L,:); coloca em X as linhas cuja terceira coluna seja maior que 100.
.#. Matri&es (a&ias
X = [] x tem dimenso 0x0. No ocupa espao de memria.
9
Podem ser testados com a funo e+ist.
A(:,[2 4])=[] deleta as colunas 2 e 4 da matriz A.
.#: Matri&es especiais# (utili&adas e% AlJe0ra LI$ear!#
compan matriz companheira
diag matriz diagonal
hadamard
haenkel
hilb
zeros matriz de zeros.
ones matriz de uns.
rand matriz randmica
eye matriz identidade
.#= Co$strui$do %atri&es %aiores#
Digitando-se C = [A eye(4); ones(A) A^2]
produz
C = A eye(4)
ones(A) A^2
.#> Ma$ipula2,o de Matri&es#
rot90 rotacao da matriz
fliplr reflete matriz da esquerda para a direita.
flipud reflete matriz de cima para baixo.
diag extrai ou cria a matriz diagonal.
tril triangular inferior.
triu triangular superior.
reshape remodela uma matriz.
size retorna um vetor com dois elementos [linhas colunas]
length se um vetor ento retorna o tamanho.
: A$lise de ados
max valor mximo
min valor mnimo
mean valor mdio
median valor mediano
10
std desvio padro
sort ordenao
sum soma dos elementos
prod produto dos elementos
cumsum soma cumulativa dos elementos
cumprod produto cumulativo dos elementos
diff derivada aproximada
hist histograma
corrcoef coeficientes de correlao
cov matriz de covarincia
polyfit ajuste de curvas e regresso linear.
=# ?u$23es de Matri&es
Tem como argumento matrizes e retornam matrizes como resultado.
Esto baseadas no LNPACK e ESPACK.
Esto divididas em quatro grupos:
Fatorao Triangular
Fatorao Ortogonal
Decomposio em Autovalores
Decomposio em Autovetores
=#" ?atora2,o Tria$Jular (?atora2,o LU!
Decompor uma matriz quadrada como o produto de duas matrizes (uma
permutao de uma trinagular inferior e outra uma matriz triangular superior).
Exemplo: [L,U] = lu(A) onde A=L*U
X = inv(A) det(A) = det(L) * det(U)
X = inv(U) * inv(L)
Dado o sistema Ax= b ento x = A\b. Usando a decomposio LU o mesmo sistema linear
de equaes resolvido como:
y = L\b; x =U\y
=#2 ?atora2,o /rtoJo$al (?atora2,o KR!
Usado para fatorar tanto matrizes quadradas como retangulares, expresso como
o produto de uma matriz ortogonal e uma matriz triangular superior.
Exemplo: [Q,R] = qr(A) onde Q ortogonal e R trinagular superior. A fatorao QR
11
usada onde o nmero de equaes maior que o nmero de variaveis.
Para o sistema Ax = b a soluo obtida como:
y = Q' * b;
x = R\y
=#' ?atora2,o do (alor Si$Jular#
Exemplo: [U,S,V] = svd(A) onde os tres fatores de decomposio so A = U * S *
V' onde as matrizes U e V so ortogonais e S uma matriz diagonal.
Esta decomposio usada em muitas outras funes: pseudoinversas, rank,
norma euclideana e nmero de condio.
=#. Auto)alores
Se A uma matriz nxn, os n nmeros L que satisfazem Ax=Lx so os autovalores
de A. Exemplo:
[X,D] = eig(A) onde X so os autovetores e D os autovalores tal que
A*X = X*D.
A forma de Hessenberg, hess(A), e a forma de Schur, schur(A), so resultados
intermedirios obtidos no clculo dos autovalores.
=#: Ra$L e Co$di2,o.
cond nmero de condio em 2-norm.
norm 1-norm,2-norm,F-norm,oo-norm
rank rank de uma matriz
rcond estimativa da condio.
> Aoli$M%ios e Arocessa%e$to de Si$al
9# ?u$2,o ?U5NO/
Uma funo FUNO uma funo que pode ser aplicada outra funo matemtica.
Uma funo matemtica pode ser representada em MATLAB, por exemplo:
fora(x) = sin(x
2
) + cos
2
(x)
dentro de um M-file como:
function y = forca(x)
y = sin(x .^ 2) + cos(x) .^ 2;
12
As funes FUNO so:
ntegrao Numrica:
quad Regra de Simpson quad('forca',0,1)
quad8 Regra de Newton
OtimizaO e Equaes No-Lineares:
fmin minimo de uma funo de 1 varivel.
fmins minimo de uma funo de vrias variveis.
fsolve soluo de um sistema de equaes no-lineares.
fzero zero de uma funo de uma varivel.
Equaes Diferenciais:
ode23 Runge-Kutta de segunda/terceira ordem.
ode45 Runge-Kutta-Fehlberg de quarta/quinta ordem.
B# Gr1icos
plot grafico x-y linear
loglog escala logaritmica em X e Y
semilogx escala logaritmica em X
semilogy escala logartmica em Y
polar
bar grfico de barras
B#2 ?or%a Bsica
Se Y um vetor, ento plot(6! produz um grfico dos elementos versus o ndice dos
elementos de Y. Exemplo:
Y = [ 1 2 5 7 10];
plot(Y)
As escalas so feitas automaticamente.
title('titulo')
xlabel('tempo')
ylabel('forca')
text(5,10,'potencia') coloca a palavra 'potencia' nas coordenadas (5,10)
gtext('potencia') coloca 'potencia' posicionando com o mouse.
grid
13
plot(X,Y,'+') traa um grfico do vetor X versus o vetor Y usando marcas '+' nos
pontos do grfico.
Tipo de Li$4a
slida -
tracejada --
pontilhada :
mista -.
Tipo de Marca
ponto .
circulo o
marca-x x
sinal ++
sinal * *
plot(x,Y,'c+') produz um grfico na cor cyan com marcas '+'.
Cores
amarelo y
magenta m
cyan c
vermelho r
verde g
azul b
brancow
preto k
B#' M;ltiplos Gr1icos#
[1] Y uma matriz e X um vetor, ento plot(X,Y) produz uma curva para cada coluna de
Y e o vetor X com tipo de linha diferente.
[2] X matriz e Y um vetor, ento so aplicadas as mesmas regras de [1].
[3] Se X e Y so ambas matrizes do mesmo tamanho, ento plot(X,Y) produz uma curva
com cada coluna de X versos outra coluna de Y.
[4] Se X no especificado , ento so plotados as colunas de Y versos o ndice da linha.
"7# Co$trole de ?lu+o
"7#" Co%a$do ?/R
14
for i=1:n, x(i)=0, end
for i=1:n
for j=1:n
A(i,j) = 1/(i+j-1);
end
end
A
Seja t = -1
0
1
3
5
n = max(size(t));
for j=1:n
for i=1:n
A(i,j) = t(i)^(n-j);
end
end
Variao mais eficiente que a anterior:
A(:,n) = ones(n,1); Matriz com n linhas e 1 coluna (ultima coluna OK)
for j = n-1:-1:1 Gera as demais colunas.
A(:,j) = t .* A(:,j+1); Coluna anterior (j+1).
end
O comando 1or tem a seguinte forma geral:
for v = xprss!o
co"an#os
n#
"7#2 Co%a$do P@ILE
n = 1;
while prod(1:n) < 1.e100, n=n+1; end
n
O comando Q4ile tem a seguinte forma geral:
15
$%il xprss!o
co"an#os
n#
16
"7#' I? e BREAR
if n < 0
A = negative(n)
elseif rem(n,2)==0
A = even(n)
else
A = odd(n)
end
%Problema '3n+1' da teoria dos numeros
while 1
n = input('Entre $, negativo sai. ');
if n <= 0, break, end
while n > 1
if rem(n,2)==0
n=n/2
else
n=3*n+1
end;
end
end
""# M-?ilesS Scripts e ?u$23es
O MATLAB capaz de executar comandos que estejam armazenados em arquivos,
chamados M-Files. (Estes arquivos tm extenso .m)
Um M-File pode conter todos os comandos normais do MATLAB e chamado scripts#
So chamados arCui)os de 1u$23es quando contem a definio de uma nova funo.
Os M-files so arquivos ASC comuns e so criados com qualquer editor de texto.
""#" ArCui)os Script
Um arquivo fib.m com o contedo abaixo pode ser executado com 1i0:
f = [ 1 1]; i=1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1);
i=i+1;
end
17
plot(f)
""#2 ArCui)os de ?u$23es
um M-file cuja primeira palavra no arquivo 1u$ctio$.
Exemplo arquivo %ea$#%
function y=mean(x)
[m,n] = size(x);
if m==1
m=n;
end
y = sum(x)/m;
Exemplo: arquivo stat#%
function [mean,stdev] = stat(x)
[m,n] = size(x);
if m==1
m=n;
end
mean = sum(x)/m;
stdev = sqrt(sum(x .^ 2)/m - mean .^ 2);
&'srva()s:
* Quando um arquivo de funo chamado pela primeira vez, os comandos so
compilados e colocados em memria, de modo que esto sempre prontos para executar.
E permanecem assim enquanto durar a sesso MATLAB.
* O comando Q4at mostra todos os M-files que esto disponveis no diretrio corrente. O
comando t6pe mostra o conteudo do arquivo na tela.
""#' icas de Me%Tria e (elocidade
* Sempre que possvel vetorizar as operaes.
Exemplo:
% gera 1000 numeros (gasta 15 segundos)
i=0;
for t=0:0.01:10
i=i+1;
y(i)=sin(t);
end
% Forma mais eficiente (gasta 0.6 segundos)
18
t = 0:0.01:10;
y = sin(t);
*Prealocar vetores de saida.
Exemplo:
y = zeros(1,100);
for i=1:100
y(i) = det(x^i);
end
"2 ArCui)os
"2#" Ma$ipula2,o de ArCuii)os e% isco
dir Mostra o diretorio corrente.
t6pe Lista um arquivo qualquer. Se for M-file no precisa '.m'
delete Deleta um arquivo especificado.
c4dir Muda de diretorio.
diar6 Coloca os comandos de uma sesso MATLAB em um arquivo de
texto. (Por default gera um arquivo de nome diar6 na area do usuario).
Exemplo: diary aula1
diary on
comandos MATLAB
diary off
"2#2 Roda$do proJra%as e+ter$os#
Use a exclamao, !, seguido de um comando UNX qualquer.
Exemplos:
!lp arquivo.m mprime o arquivo.m
!matrizes Executa o programa %atri&es
"2#' I%porta$do e e+porta$do dados#
* O comando diar6 pode ser usado para salvar pequenas matrizes, que podem ser
recuperadas com um editor de texto qualquer.
* Os comandos sa)eGload podem ser usados para salvar/recuperar grandes matrizes.
Exemplo:
A = rand(4,3);
save temp.dat A /ascii
load temp.dat A
19
* possvel escrever um programa em C ou FORTRAN para ler arquivos gerados com o
comando load.
20

Você também pode gostar