Uma Introducao Ao MATLAB

download Uma Introducao Ao MATLAB

of 20

Transcript of Uma Introducao Ao MATLAB

  • 8/6/2019 Uma Introducao Ao MATLAB

    1/20

    UMA INTRODUO AO MATLABEliana Silva de Almeida

    e-mail: [email protected]

    AGOSTO-2001

    UNIVERSIDADE FEDERAL DE ALAGOAS/UFALCCEENNTTRROO DDEE CCIINNCCIIAASS EEXXAATTAASS EE NNAATTUURRAAIISS / / CCCCEENN

    D ep a r t a m e n t o d e Te c n o l o g i a d a I n f o r m a o - T CI Campus A. C. Simes BR 104-Norte Km 14 BL 12 Tabuleiro dos Martins

    Macei/AL - Brasil CEP: 57.072-970 CGC: 24.464.109/0001-48Telefone:(082) 214-1401 / FAX:(082) 214-1615

    E-mail: [email protected]

  • 8/6/2019 Uma Introducao Ao MATLAB

    2/20

    Uma Introduo ao MATLAB Pgina 2 de 2

    I. INTRODUO

    O MATLAB (MATrix LABoratory) um software de computao cientfica quetem como caracterstica ser um ambiente de programao interativa. Como um ambientede programao, o MATLAB possui seu prprio editor de programas, simplificandobastante o seu uso e seus programas so escritos e gravados em arquivos, chamados scriptfiles, cujos nomes possuem extenso .m.

    Este texto tem por objetivo apresentar uma introduo ao uso do MATLAB para adisciplina de Introduo a Computao do curso de graduao em Engenharia Civil. Eleconter um resumo de como utilizar este ambiente no seu modo interativo, ao tratar da

    manipulao de matrizes e inteiros, e tambm apresentar os comandos bsicos deprogramao, permitindo a compreenso de como um programa ou uma funo pode serconstruda em MATLAB.

    Aps a sua execuo (entrada no ambiente), o MATLAB apresenta em sua janelainicial a primeira linha de comando iniciada atravs do prompt:

    >>

    O prompt indica que o MATLAB est esperando que seu usurio digite algumcomando para ser interpretado. Por exemplo:

    - Para sair do ambiente MATLAB basta digitar exit na linha de comando:

    >> exit

    - Para entender o significado de um comando, utiliza-se o comando help:

    >> help nome-do-comando

    Neste texto deixaremos implcito para o leitor a indicao de que a tecla ENTERdever ser digitada aps cada comando para que o mesmo seja interpretado.

    II. CONSTRUO DE MATRIZES:

    O MATLAB possui vrios tipos de matrizes que so construdas no sistema. Porexemplo, uma matriz 7x7 com entradas aleatrias (random) produzida digitando:

    >> rand(7)

    Uma matriz com entrada aleatria, de outro tamanho, por exemplo, uma matriz 2x5, bastadigitar:

  • 8/6/2019 Uma Introducao Ao MATLAB

    3/20

    Uma Introduo ao MATLAB Pgina 3 de 3

    >> rand(2,5)

    Para conhecer mais sobre o comando rand digite:>> help rand

    Algumas matrizes padres da lgebra linear so facilmente produzidas, por exemplo:

    >> eye(6)

    Produz uma matriz 6x6 cujos elementos da diagonal principal so iguais a 1 e todos osoutros iguais a zero.

    >> zeros(4,7)

    Produz uma matriz 4x7 cujos elementos so iguais a 0.

    >> ones(5)

    Produz uma matriz 5x5 cujos elementos so iguais a 1.

    possvel tambm construir matrizes com qualquer tamanho e com qualquer entradadesejada da seguinte forma:

    >> [1 2 3 5 7 9]

    Produz uma matriz com 1 linha e 6 colunas.

    >> [1, 2, 3; 4, 5, 6; 7, 8, 9]

    Produz uma matriz 3x3. Observe que o ; separa as linhas da matriz. Logo, no exemplo, aprimeira linha composta pelos elementos 1 2 3, a Segunda por 4 5 6 e a terceira por7 8 9. Estes elementos podem ser separados por , ou por um espao.

    >> [1 2 ENTER 3 4 ENTER 5 6]

    Neste exemplo, temos uma matriz 3x2, onde a separao das linhas est sendo realizadaatravs do ENTER.

    A sintaxe do MATLAB tambm facilita a construo de matrizes a partir de matrizesexistentes. Por exemplo:

    >> [eye(2);zeros(2)]

    >> [eye(2),ones(2,3)]

  • 8/6/2019 Uma Introducao Ao MATLAB

    4/20

    Uma Introduo ao MATLAB Pgina 4 de 4

    III. VARIVEIS:

    O MATLAB possui variveis pr-definidas tais como pi e ans. Podemos saber seusrespectivos valores, a partir do interpretador:

    >> pi

    Aparecer como resposta o valor de pi (3,1416)

    ans =

    3.1416

    A qualquer momento que se deseje saber quais variveis esto ativas, utiliza-se o comandowho.

    >> who

    Para saber mais sobre este comando, basta utilizar o help:

    >> help who

    A varivel ans ir informar a ltima sada que no foi atribuda a nenhuma outravarivel. Por exemplo:

    >> eye (4)

    ans =1 0 0 00 1 0 00 0 1 00 0 0 1

    >> x = ans

    x =1 0 0 00 1 0 00 0 1 00 0 0 1

    >> x = [x, eye(4)]

  • 8/6/2019 Uma Introducao Ao MATLAB

    5/20

    Uma Introduo ao MATLAB Pgina 5 de 5

    x =1 0 0 0 1 0 0 00 1 0 0 0 1 0 00 0 1 0 0 0 1 00 0 0 1 0 0 0 1

    Desde que uma nova varivel, x, foi criada, ela aparecer como uma varivel ativa:

    >> who

    Your variables are:

    ans x

    Para remover uma varivel, digita-se o comando clear:

    >> clear x

    IV. FUNES:Seja a uma matriz definida por:

    >> a = [1 2 3;4 5 6;7 8 9]

    a =1 2 34 5 67 8 9

    a) A matriz transposta de a definida por:

    >> a'

    b) A multiplicao de todos os elementos de a por um nmero:

    >> 3*a

    c) Multiplicao por 1:

    >> -a

    d) A operao soma:

    >> a+(-a)

    e) A funo abaixo retorna a linha onde o valor mximo da matriz ocorre:

  • 8/6/2019 Uma Introducao Ao MATLAB

    6/20

    Uma Introduo ao MATLAB Pgina 6 de 6

    >> b = max(a)

    b =7 8 9

    >> max(b)

    ans =9

    f) Esta funo max tambm pode retornar mais de um valor, por exemplo:

    >> [m, i] = max(b)

    m =9

    i =3

    g) Outros exemplos:

    >> b = 2*a

    b =2 4 68 10 1214 16 18

    >> a*b

    ans =60 72 84132 162 192204 252 300

    O MATLAB tem a conveno de que o ponto na frente de uma operao altera osignificado da operao. Por exemplo, no caso da multiplicao, a.*b executar amultiplicao entrada por entrada no lugar da multiplicao usual entre matrizes:

    >> a.*b

    ans =2 8 1832 50 72

    98 128 162

  • 8/6/2019 Uma Introducao Ao MATLAB

    7/20

    Uma Introduo ao MATLAB Pgina 7 de 7

    >> x = 5

    >> x^2 (fornece o quadrado de x)

    ans =25

    >> a*a

    >> a^2

    ans =30 36 4266 81 96102 126 150

    >> a.^2 ((outro ponto) fornece o quadrado de cada elemento de a)

    ans =1 4 916 25 3649 64 81

    >> triu(a) (gera uma matriz com os elementos acima da diagonal principal de a e zera oselementos que esto abaixo)

    >> tril(a) (gera uma matriz com os elementos abaixo da diagonal principal de a e zera oselementos que esto acima)

    >> diag(a) (fornece os elementos da diagonal principal)

    >> diag(diag(a)) (gera uma matriz com os elementos da diagonal principal de a e comzeros nas outras posies)

    >> c=rand(4,5)

    >> size(c) (fornece o tamanho da matriz c)

    >> [m,n] = size(c)

    h) Algumas funes aplicadas aos escalares podem tambm ser aplicadas as matrizes:

    >> sin(d)

    >> exp(d)

  • 8/6/2019 Uma Introducao Ao MATLAB

    8/20

  • 8/6/2019 Uma Introducao Ao MATLAB

    9/20

    Uma Introduo ao MATLAB Pgina 9 de 9

    V. RELAES E OPERAES LGICAS:

    Nesta seo devemos imaginar que 1 corresponder ao valor verdade verdadeiro(true) e 0 ao valor verdade falso(false) desta forma que o MATLAB interpreta osvalores verdade. As notaes &, |, ~ correspondem a "and", "or" e "not", respectivamente,e a notao == corresponde a igualdade (lembre-se que = corresponde ao comando deatribuio).

    >> a=[1 0 1 0]

    >> b=[1 1 0 0]

    >> a==b

    >> a> ~a

    >> a&b

    >> a & ~a

    >> a | b

    >> a | ~a

    VI. NOTAO UTILIZANDO O DOIS PONTOS ( : )

    Atravs desta notao o MATLAB permite criar arrays e tirar proveito deles, comopor exemplo:

    >> x=-2:1

    x =-2 -1 0 1

    >> length(x)

    ans =4

    >> 3:.5:5

  • 8/6/2019 Uma Introducao Ao MATLAB

    10/20

    Uma Introduo ao MATLAB Pgina 10 de 10

    ans =3.0000 3.5000 4.0000 4.5000 5.0000

    >> a = [1:3;4:6;7:9]

    a =1 2 34 5 67 8 9

    >> a(2,:)

    ans =4 5 6

    >> a(:,2)

    ans =258

    >> a(2:3,:)

    >> a(:,2:3)

    >> a(2:3,1:2)

    >> a(1:2:3,:)

    Para fazer atribuies:

    >> b=rand(3)

    b =0.0579 0.0099 0.19870.3529 0.1389 0.60380.8132 0.2028 0.2722

    >> b([1 2],:)=a([1 2],:)

    b =1.0000 2.0000 3.00004.0000 5.0000 6.00000.8132 0.2028 0.2722

  • 8/6/2019 Uma Introducao Ao MATLAB

    11/20

    Uma Introduo ao MATLAB Pgina 11 de 11

    a(:,[1 2])=b(:,[2 3])

    VII. OBSERVAES GERAIS:

    1. MATLAB case sensitive, isto , a no o mesmo que A. A funo casesenfaz esta propriedade ser ativada ou desativada.

    2. display do MATLAB mostra apenas 5 dgitos no seu modo padro. O MATLABsempre armazena e computa em preciso dupla com 16 dgitos decimais e arredonda odisplay para 4 dgitos. Logo, quando um nmero inteiro, o MATLAB o mostra comoum inteiro mas, no caso de um nmero real, o MATLAB mostra uma aproximaocom at 4 casas decimais e caso os dgitos significativos estejam alm desta faixa, oMATLAB os apresentar em notao cientfica. O comando:

    >> format long

    Apresenta o display com todos os 16 dgitos e o comando:

    >> format short

    retorna ao display reduzido. possvel tambm colocar o display para notao cientficacom os comandos

    >> format short ee

    >> format long e

    3. Nem, sempre necessrio para o MATLAB apresentar os resultados de um comandona tela. Para isto, basta colocar um ponto e vrgula, ; , aps o comando. Desta forma,aps o ENTER, o prompt do MATLAB ir aparecer sem que o resultado daexecuo do comando seja mostrado na tela. Desta forma, podemos escrever vrioscomandos em uma mesma linha, separados por ponto e vrgula, e aps suas respectivasinterpretaes, nada ser mostrado na tela. Por exemplo:

    >> x=1; y=2; z=5;>> soma = x + y + z

    soma =8

    Observe que o mesmo no acontece se as atribuies fossem separadas por vrgula:

    >> x = 1, y = 2, z = 5

  • 8/6/2019 Uma Introducao Ao MATLAB

    12/20

    Uma Introduo ao MATLAB Pgina 12 de 12

    x =1

    y =2

    z =5

    >> x = 1, y = 2; z = 5

    x =1

    z =5

    Neste ltimo exemplo, o valor de y no foi mostrado pois est seguido por ponto e vrgula.

    4. Algumas vezes, em uma seo do MATLAB so criadas vrias variveis que seronecessrias em uma outra vez em que o MATLAB for utilizado. possvel salvar osvalores destas variveis em um arquivo digitando:

    >> save nome-do-arquivo

    Este comando ir criar um arquivo do tipo nome-do-arquivo.mat que, para ser utilizadoposteriormente, basta utilizar o comando

    >> load nome-do-arquivo

    VIII. PROGRAMANDO NO MATLAB:

    O MATLAB tambm uma linguagem de programao. Criando um arquivo coma extenso .m possvel facilmente escrever e executar programas. Uma vez que um

    arquivo de programa nome.m no MATLAB criado, este arquivo ser considerado umcomando do MATLAB e ser executado como qualquer outro comando ou funo doMATLAB. No necessrio compilar o programa uma vez que o MATLAB umalinguagem interpretada. Este arquivo chamado de m-file.

    Algumas construes bsicas de programao:

    a) ATRIBUIO

    x = a

  • 8/6/2019 Uma Introducao Ao MATLAB

    13/20

  • 8/6/2019 Uma Introducao Ao MATLAB

    14/20

    Uma Introduo ao MATLAB Pgina 14 de 14

    if mod(n,2)==0,b=1;

    else b=0;end

    c) REPETIO DEFINIDA (For Loops): comando for:

    O comando for uma construo da forma:

    for i=1:n, , end

    Este comando indica que ser repetido um nmero definido de vezes, nmeroeste indicado por cada valor assumido pelo ndice i, que neste caso ir variar de 1 (menorvalor) at n (maior valor) . Alguns exemplos so:Uma funo para adicionar duas matrizes:

    function c=add(a,b)% esta funo soma duas matrizes, a e b.% tem a mesma funo da funo do MATLAB a+b.[m,n]=size(a);[k,l]=size(b);if m~=k | n~=l,

    r='ERRO no uso do add: as matrizes no possuem a mesma dimenso';return,endc=zeros(m,n);for i=1:m,

    for j=1:n,c(i,j)=a(i,j)+b(i,j);

    endend

    funo que fornece a multiplicao de duas matrizes:

    function c=mult(a,b)% esta funo multiplica duas matrizes, a e b.% tem a mesma funo da funo do MATLAB a*b.[m,n]=size(a);[k,l]=size(b);if n~=k,

    c='ERRO no uso do mult: as matrizes no so compatveis para realizar umamultiplicao;

    return,

  • 8/6/2019 Uma Introducao Ao MATLAB

    15/20

    Uma Introduo ao MATLAB Pgina 15 de 15

    end,c=zeros(m,l);

    for i=1:m,for j=1:l,for p=1:n,

    c(i,j)=c(i,j)+a(i,p)*b(p,j);end

    endend

    Vale observar que as mensagens de erro so apresentadas entre ` `. tudo que se encontraentre ` ` deve ser tratado como texto. Nos exemplos, as mensagens correspondem aocontedo da varivel c.O comando RETURN indica o retorno do controle do programa para a funo que ochamou ou o retorno para o prompt. Recomenda-se que o return seja usado unicamente nocontexto de uma mensagem de erro.Na construo for i=1:n, , end , o ndice i pode ocorrer dentro do programa. OMATLAB permite que seja colocado qualquer vetor no lugar do vetor 1:n.Logo, a construo:

    for i=[2,4,5,6,10], , end

    perfeitamente legtima e, nesse caso, program executado 5 vezes e os valoresassumidos por i durante a execuo so 2, 4, 5, 6 e 10, sucessivamente.

    d) REPETIO INDEFINIDA (While Loops):

    O comando while uma construo da forma:while , , endOnde condition uma funo do MATLAB como uma construo condicional que deveretornar o valor 1 (verdadeiro) ou 0 (falso). O programa program ser executadosucessivamente enquanto o valor da condio condition seja diferente de 0.

    SCRIPTS

    Um script um m-file sem a declarao de funo no topo. Um script se comportadeferente da funo pois no necessrio retornar um valor como na funo. Para seconstruir um script, da mesma forma que uma funo, utiliza-se o editor do matlab, escrevea sequencia de comandos e salva com um nome desejado. Para executar um script bastaescrever o nome do arquivo que o contm no prompt do MATLAB.

    Ao utilizar um script, muitas vezes tem-se a necessidade de fazer uso de comandosde entrada e sada. Apresentaremos a seguir duas funes que podem ser utilizados para

    este fim.

  • 8/6/2019 Uma Introducao Ao MATLAB

    16/20

    Uma Introduo ao MATLAB Pgina 16 de 16

    e) FUNO DE ENTRADA:

    R = input (mensagem de texto)Esta funo mostra na tela a mensagem de texto e aguarda que o usurio digite umvalor ou uma expresso que ser avaliada e armazenada na varivel R.

    R = input (mensagem de texto , s)Esta funo mostra na tela a mensagem de texto e aguarda que o usurio digite um

    texto (string) que ser armazenado (mas no alvaliado) na varivel R.

    f) FUNO DE SADA:

    disp (X) apresenta o contedo da matriz X na tela, sem mostrar o seu nome. Se X um texto (string) este tambm mostrado.Exemplo:

    >>disp ([12 13 15])

    12 13 15

    >> a = 14

    a =14

    >>disp (a)

    14

    >>disp (maria dd)

    maria dd

    f) FORMATAO NO COMANDO DISP

    Os dados que so apresentados no comando de sada disp podem ser formatados utilizandoa funo sprintf cujo formato :

    Sprintf (, )

    Onde a especificao do formato tem a seguinte forma:

    % I1. I2 f , onde I1 um nmero inteiro indicando o quanto de espao existe paraescrever o nmero e I2 um nmero inteiro indicando o quanto deste espao definido por

    I1 ser considerado como a parte decimal.

  • 8/6/2019 Uma Introducao Ao MATLAB

    17/20

    Uma Introduo ao MATLAB Pgina 17 de 17

    Ex:

    >> disp(sprintf ( %2.0f %3.0f %6.3f , K, D, y(K)))

    >> disp (sprintf (um grau = %5.3e radianos, pi/180))

    f) SUGESTES:

    - Utilize sempre o estilo de programao indentado. Isto permite uma maior legibilidadedo programa, facilitando sua leitura e tambm a descoberta de erros de sintaxe.

    - Coloque o mximo de comentrios no programa para facilitar a sua compreenso.- Procure sempre estruturar o programa de forma tal que o seu resultado seja entradapara alguma outra funo.- Utilize o mximo possvel funes pr-definidas do MATLAB. Lembre-se que o

    MATLAB otimizado para executar estas funes.

    g) PROGRAMAS DEMONSTRATIVOS NO MATLAB:

    O MATLAB possui um grande nmero de programas demonstrativos. Para acessarestes programas digite:

    >>demo

    IX. LISTA DE ALGUMAS FUNES DEFINIDAS NO MATLAB:

    A seguir ser apresentada uma lista com algumas funes que esto disponveis noMATLAB e que pode ser consultada como um simples lembrete. Para saber os detalhes decada funo basta utilizar o comando help.

    intro < chol end function lu quit sprintf help > clc eps global macro qz sqrt

    demo = clear error grid magic rand startup[ & clg eval hess max rcond string] | clock exist hold memory real subplot( ~ conj exit home mesh relop sum) abs contour exp ident meta rem svd. all cos expm if min return tan, ans cumprod eye imag nan round text; any cumsum feval inf nargin save title% acos delete fft input norm schur type! asin det filter inv ones script what: atan diag find isnan pack semilogx while

    ' atan2 diary finite keyboard pause semilogy who

  • 8/6/2019 Uma Introducao Ao MATLAB

    18/20

    Uma Introduo ao MATLAB Pgina 18 de 18

    + axis dir fix load pi setstr xlabel- balance disp floor log plot shg ylabel

    * break echo flops loglog polar sign zeros \ casesen eig for logop prod sin / ceil else format ltifr prtsc size

    chdir elseif fprintf ltitr qr sort

    acosh demo hankel membrane print table1angle demolist hds menu quad table2asinh dft hilb meshdemo quaddemo tanhatanh diff hist meshdom quadstep tekbar eigmovie histogram mkpp rank tek4100bench ergo hp2647 movies rat terminalbessel etime humps nademo ratmovie toeplitzbessela expm1 idft nelder readme tracebesselh expm2 ieee neldstep residue translatebesseln expm3 ifft nnls retro trilblanks feval ifft2 null roots triucdf2rdf fft2 info num2str rot90 unmkppcensus fftshift inquire ode23 rratref vdpolcitoh fitdemo int2str ode45 rratrefmovie versacla fitfun invhilb odedemo rref vt100compan flipx isempty orth rsf2csf vt240computer flipy kron pinv sc2dc whycond funm length plotdemo sg100 wowconv gallery log10 poly sg200 xtermconv2 gamma logm polyfit sinh zerodemocorr getenv logspace polyline spline zeroincosh ginput matdemo polymark sqrtmctheorem gpp matlab polyval squaredc2sc graphon mean polyvalm stddeconv hadamard median ppval sun

    addtwopi buttap cov fftdemo freqz kaiser specplotbartlett butter decimate filtdemo fstab numf spectrumbilinear chebap denf fir1 hamming readme2 triangblackman chebwin detrend fir2 hanning remez xcorrboxcar cheby eqnerr2 freqs interp remezdd xcorr2yulewalk

    >> helptpicos do HELP:

    matlab/general - General purpose commands.matlab/ops - Operators and special characters.

    matlab/lang - Language constructs and debugging.

  • 8/6/2019 Uma Introducao Ao MATLAB

    19/20

    Uma Introduo ao MATLAB Pgina 19 de 19

    matlab/elmat - Elementary matrices and matrix manipulation.matlab/specmat - Specialized matrices.

    matlab/elfun - Elementary math functions.matlab/specfun - Specialized math functions.matlab/matfun - Matrix functions - numerical linear algebra.matlab/datafun - Data analysis and Fourier transform functions.matlab/polyfun - Polynomial and interpolation functions.matlab/funfun - Function functions - nonlinear numerical methods.matlab/sparfun - Sparse matrix functions.matlab/plotxy - Two dimensional graphics.matlab/plotxyz - Three dimensional graphics.matlab/graphics - General purpose graphics functions.matlab/color - Color control and lighting model functions.matlab/sounds - Sound processing functions.matlab/strfun - Character string functions.matlab/iofun - Low-level file I/O functions.matlab/demos - The MATLAB Expo and other demonstrations.toolbox/chem - Chemometrics Toolboxtoolbox/control - Control System Toolbox.fdident/fdident - Frequency Domain System Identification Toolboxfdident/fddemos - Demonstrations for the FDIDENT Toolboxtoolbox/hispec - Hi-Spec Toolboxtoolbox/ident - System Identification Toolbox.toolbox/images - Image Processing Toolbox.toolbox/local - Local function library.toolbox/mmle3 - MMLE3 Identification Toolbox.mpc/mpccmds - Model Predictive Control Toolboxmpc/mpcdemos - Model Predictive Control Toolboxmutools/commands - Mu-Analysis and Synthesis Toolbox.: Commands directorymutools/subs - Mu-Analysis and Synthesis Toolbox -- Supplementtoolbox/ncd - Nonlinear Control Design Toolbox.nnet/nnet - Neural Network Toolbox.nnet/nndemos - Neural Network Demonstrations and Applications.toolbox/optim - Optimization Toolbox.toolbox/robust - Robust Control Toolbox.toolbox/signal - Signal Processing Toolbox.toolbox/splines - Spline Toolbox.toolbox/stats - Statistics Toolbox.toolbox/symbolic - Symbolic Math Toolbox.toolbox/wavbox - (No table of contents file)simulink/simulink - SIMULINK model analysis and construction functions.simulink/blocks - SIMULINK block library.simulink/simdemos - SIMULINK demonstrations and samples.toolbox/codegen - Real-Time Workshop

  • 8/6/2019 Uma Introducao Ao MATLAB

    20/20

    Uma Introduo ao MATLAB Pgina 20 de 20

    Para cada um destes tpicos bastante digitar o help seguido do tpico desejado e obtertodos os detalhes a cerca de cada um dos tens acima.

    X. REFERNCIAS:

    R. Smith, MATLAB Tutorial.http://www.math.ufl.edu/help/matlab-tutorial/index.html#SEC5, novembro, 1988.

    D. Hanselman & B. Littlefield, MATLAB Verso Estudante Guia do Usurio Verso 4, MAKRON Books do Brasil. So Paulo, 1997.

    C.F. Van Loan Introduction to Scientific Computing