Anda di halaman 1dari 18

Curso Bsico de MATLAB

( Captulo 2 - USERS'S GUIDE )

1.1 Entrando matrizes simples 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= 123 456 789 tambm poderia ser digitado: A=[123 456 789] 1.2 Elementos de uma matriz 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= 123 456 789 10 11 12

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 1.3 Comandos e Variveis varivel = expresso ou simplesmente, expresso 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'. 1.4 Obtendo informaes do espao de trabalho O comando who mostra quais variveis foram definidas durante a sesso.

O comando whos: Name Size A ans Total 3 by 3 9 1 by 1 1 Complex Sparsity No Full No Full

Grand Total is (10*8) = 80 bytes Varivel internas eps contem a tolerncia para funes que calculam singularidade e rank. Por default, igual 2.22e-16. 1.5 Nmeros e expresses aritmticas 3 -99 0.00011.6E-20 10.0e+7

Operadores aritmticos A constante pi interna.

+ - * / \(divisao esquerda) ^(exponeciao)

Representao para infinito. A diviso por zero produz uma advertncia e gera um inf. Exemplo: s = 1/0 produz Diviso por zero s= inf s = 0/0 produz s= NaN 1.6 Nmeros e matrizes complexas 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 ]

1.7 Formato de Sada Os formatos possveis para x = [4/3 1.2345e-6] so: format format format format format short 1.3333 0.0000 short e 1.3333E+000 1.2345E-006 long 1.333333333333333 1.234500000000000E-006 hex 3FF55...553 3EB0....4ED + ++

1.8 HELP Facility Para obter um help on-line digite: help Para obter help em um tpico especfico digite: help tpico Para obter help sobre o help digite: help help 1.9 Saindo e salvando o espao de trabalho quit ou exit para sair do MATLAB save para salvar todas as variveis do espao de trabalho (matlab.dat) load para recuperar as variaveis do arquivo (matlab.dat). Salvar em (ou carregar de) outro arquivo digite save arquivo (ou load arquivo). Para salvar apenas a varivel X no arquivo temp digite save temp X. 2. Operaes com matrizes. 2.1 Transposio. A=[12;34] B = A' produz A= 1 2 3 4 B= 1 3 2 4

2.2 Adio e Subtrao (+,-) C=A+B produz C= 2 5 5 8

C=2+A produz C= 3 4 5 6

2.3 Multiplicao de Matrizes (*) 3.14 * A produz ans = -3.14 0 6.28 2.4 Diviso de Matrizes (/,\) 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.5 Potenciao de Matrizes (^) 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

2.6 Funes elementares sobre matrizes expm(A) logm(A) sqrtm(A) poly det trace kron 3 Operaes com Array Operao de elemento elemento. So precedidos por um ponto (.) 3.1 Soma e subtrao de array 3.2 Multiplicao e diviso de array. .* ./ .\ a multiplicao elemento elemento. a diviso de elemento elemento. eA log A polinomio caracteristico determinante trao (soma dos elementos da diagonal) delta de Kronecker

3.3 Potenciao de arrays. .^ a potenciao elemento elemento.

3.4 Operaes relacionais. 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.

3.5 Operadores Logicos & | ~ And Or Not

Operam elementos elemento da matriz. Elementos no nulos so considerados verdadeiros. Zero (0) falso. Outras funes lgicas so: any all find exist isnan finite isinf isempty isstr issparse isglobal algum elemento do array por coluna verdadeiro. todos elementos do array so verdadeiros. indices do array que so verdadeiros. checa se varivel existe. detecta NAN (not a number). checa valores finitos. detecta infinitos. detecta matrizes vazias. detecta variavel tipo string. detecta matrizes esparsas. detecta variveis globais.

3.6 Funes Matematicas Elementares Aplicadas em cada elemento de um array. sin, cos, tan, asin, acos, atan ... abs, angle, sqrt, real, imag, round, fix, floor, ceil, sign, ... 3.7 Funes matemticas especiais. bessel gamma rat erf inverf

aproximao racional. error function

4. Manipulao de Matrizes e Vetores. 4.1 Gerao de Vetores. X = inicio:incremento:fim

Exemplos: x = 0:pi/4:pi y = 6:-1:1 z = 1:5 k=linspace(-pi,pi,4) k=logspace(1,6,6) 4.2 Subscritos Accessar elementos individuais de uma matriz. A= 123 456 ento A(2,3) produz 6 produzx= 0.0 0.78 1.57 2.35 3.14 produzy= 6 5 4 3 2 1 produzz= 1 2 3 4 5 (incremento foi omitido) produzk = -3.16 -1.04 1.04 3.16 produzk = 1 10 100 1000 10000 100000

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 13 15 16

As dimensoes de A(3x2) j foram definidas antes. 4.3 Subscritos com vetores 0-1. 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. 4.4 Matrizes Vazias X = [] x tem dimenso 0x0. No ocupa espao de memria. Podem ser testados com a funo exist.

A(:,[2 4])=[] deleta as colunas 2 e 4 da matriz A. 4.5 Matrizes especiais. (utilizadas em Algebra LInear). compan diag hadamard haenkel hilb zeros ones rand eye matriz companheira matriz diagonal

matriz de zeros. matriz de uns. matriz randmica matriz identidade

4.6 Construindo matrizes maiores. Digitando-se C = [A eye(4); ones(A) A^2] produz C= A ones(A) eye(4) A^2

4.7 Manipulao de Matrizes. 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. 5 Anlise de Dados max min mean median std sort sum valor mximo valor mnimo valor mdio valor mediano desvio padro ordenao 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. 6. Funes de Matrizes Tem como argumento matrizes e retornam matrizes como resultado. Esto baseadas no LINPACK e EISPACK. Esto divididas em quatro grupos: Fatorao Triangular Fatorao Ortogonal Decomposio em Autovalores Decomposio em Autovetores 6.1 Fatorao Triangular (Fatorao 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) X = inv(A) X = inv(U) * inv(L) onde A=L*U det(A) = det(L) * det(U)

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 6.2 Fatorao Ortogonal (Fatorao QR) 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 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 6.3 Fatorao do Valor Singular. 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. 6.4 Autovalores 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. 6.5 Rank e Condio. cond norm rank rcond nmero de condio em 2-norm. 1-norm,2-norm,F-norm,oo-norm rank de uma matriz estimativa da condio.

7 Polinmios e Processamento de Sinal 8. Funo FUNO 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(x2) + cos2(x) dentro de um M-file como: function y = forca(x) y = sin(x .^ 2) + cos(x) .^ 2; As funes FUNO so: Integrao 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. 9. Grficos plot loglog semilogx semilogy polar bar 9.2 Forma Bsica Se Y um vetor, ento plot(y) 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 plot(X,Y,'+') pontos do grfico. traa um grfico do vetor X versus o vetor Y usando marcas '+' nos grafico x-y linear escala logaritmica em X e Y escala logaritmica em X escala logartmica em Y grfico de barras

Tipo de Linha 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 magenta cyan vermelho verde azul brancow preto y m c r g b k

9.3 Mltiplos Grficos. [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. 10. Controle de Fluxo 10.1 Comando FOR 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 for tem a seguinte forma geral: for v = expresso comandos end 10.2 Comando WHILE n = 1; while prod(1:n) < 1.e100, n=n+1; end n O comando while tem a seguinte forma geral: while expresso comandos end

10.3 IF e BREAK 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 n, 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 11. M-Files: Scripts e Funes 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 arquivos de funes quando contem a definio de uma nova funo. Os M-files so arquivos ASCII comuns e so criados com qualquer editor de texto. 11.1 Arquivos Script Um arquivo fib.m com o contedo abaixo pode ser executado com fib: f = [ 1 1]; i=1; while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i=i+1; end plot(f)

11.2 Arquivos de Funes um M-file cuja primeira palavra no arquivo function. Exemplo arquivo mean.m function y=mean(x) [m,n] = size(x); if m==1 m=n; end y = sum(x)/m; Exemplo: arquivo stat.m 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); Observaes: * 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 what mostra todos os M-files que esto disponveis no diretrio corrente. O comando type mostra o conteudo do arquivo na tela. 11.3 Dicas de Memria e Velocidade * 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) 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 12 Arquivos 12.1 Manipulao de Arquiivos em Disco dir Mostra o diretorio corrente. type Lista um arquivo qualquer. Se for M-file no precisa '.m' delete Deleta um arquivo especificado. chdir Muda de diretorio. diary Coloca os comandos de uma sesso MATLAB em um arquivo de texto. (Por default gera um arquivo de nome diary na area do usuario). Exemplo: diary aula1 diary on comandos MATLAB diary off

12.2 Rodando programas externos. Use a exclamao, !, seguido de um comando UNIX qualquer. Exemplos: !lp arquivo.m Imprime o arquivo.m !matrizes Executa o programa matrizes 12.3 Importando e exportando dados. * O comando diary pode ser usado para salvar pequenas matrizes, que podem ser recuperadas com um editor de texto qualquer. * Os comandos save/load podem ser usados para salvar/recuperar grandes matrizes. Exemplo: A = rand(4,3); save temp.dat A /ascii load temp.dat A * possvel escrever um programa em C ou FORTRAN para ler arquivos gerados com o comando load.

Anda mungkin juga menyukai