Você está na página 1de 29

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE MINAS GERAIS DEPARTAMENTO DE ENSINO SUPERIOR DEPARTAMENTO ACADMICO DE ENGENHARIA ELTRICA

1 8 6 4 2 0 4

0 3 0 2 0 1 0 0 0 1 0 3 2 0 0 4 0

Introduo ao MATLAB

Prof. MSc. Eduardo Nunes Gonalves Agosto de 1997

Introduo ao MATLAB

1.

Fundamentos Bsicos do MATLAB

MATLAB um programa iterativo desenvolvido para o processamento de clculos numricos cientficos e de engenharia. O nome MATLAB significa MATrix LABoratory sendo uma marca registrada da The MathWorks (http://www.mathworks.com). Ao executar o MATLAB, aberta uma janela para entrada de comandos, onde o prompt representado pelo smbolo: . A medida que os comandos forem digitados, o MATLAB os executar e apresentar os resultados. Os comando previamente executados podem ser reaproveitados atravs das teclas e . Entrando com matrizes O MATLAB trabalha essencialmente com um nico tipo de objeto, as matrizes retangulares, cujos elementos podem ser nmeros reais ou complexos. Os comandos e operadores do MATLAB so naturalmente do ponto de vista matricial. As matrizes podem ser introduzidas no MATLAB por diferentes modos: como uma lista de elementos digitados como um comando, geradas por expresses e comandos internos do MATLAB, criadas em arquivos com extenso .M. carregadas a partir de arquivos externos

A maneira mais simples de entrar pequenas matrizes utilizar uma lista explcita de elementos. Em uma lista de elementos, os elementos aparecem entre colchetes separados por espaos ou vrgula, sendo o ponto-e-vrgula utilizado para indicar o fim de uma linha. As matrizes so criadas e dimensionadas automaticamente no sendo necessrio nenhuma declarao inicial de tipo ou dimenso. Por exemplo, digitando A = [1 2 3; 4 5 6; 7 8 9] resulta A= 1 4 7 2 5 8 3 6 9

A matriz A armazenada na memria para uso posterior. Matrizes grandes podem ser separadas em vrias linhas de entrada com a tecla substituindo os ponto-e-vrgulas: A=[123 456 7 8 9]

Prof. Eduardo Nunes Gonalves

Elementos de matrizes As constantes numricas podem assumir uma das formas mostradas a seguir: 6 5.3856091 -56 2.3265E-12 0.0005 8.00412e9

onde 2.3265E-12 significa 2.3265x10-12. Alm das constante, os elementos de matrizes podem ser expresses do MATLAB: x = [-2.5 sqrt(5) 2*(3+4+5)/6] resulta em x = -2.5000 2.2361 4.0000

Os elementos das matrizes podem ser referenciados com ndices entre parntesis: x(6) = abs(x(1)) que produz x = -2.5000 2.2361 4.0000 0 0 2.5000

Note que o tamanho do vetor x redimensionado para acomodar o novo elemento, sendo que os elementos indefinidos so considerados nulos. Matrizes grandes podem ser construdas usando outras matrizes como elementos. Por exemplo, para inserir uma nova linha na matriz A: B = [A; [10 11 12]] resulta em B= 1 4 7 10 2 5 8 11 3 6 9 12

ou B = [A [10 11 12]] resulta em B= 1 4 7 2 5 8 3 6 9 10 11 12

Introduo ao MATLAB

Matrizes podem ser extradas de outras matrizes: B = A(1:2,2:3) resulta B= 2 5 3 6

(O uso do comando dois-pontos ser detalhado mais adiante). Expresses e Variveis As expresses digitadas no MATLAB so interpretadas e avaliadas aps a tecla . As expresses no MATLAB so da forma: varivel = expresso ou simplesmente expresso O resultado de uma expresso uma matriz que armazenada na memria para uso futuro. Se o nome da varivel e o sinal = so omitidos, ento o resultado da expresso armazenado em uma varivel chamada de ans que significa "answer". Por exemplo: 19/8 produz ans = 2.3750 Finalizando a expresso com ponto-e-vrgula faz com que o MATLAB no apresente o resultado da operao: 20/5; Para ver o valor de uma varivel basta entrar com o seu nome: ans produz ans = 4 O uso do ponto-e-vrgula necessrio em programas para aumentar a velocidade de execuo, principalmente em operaes dentro de loops, eliminando a necessidade da impresso de resultados que no sero utilizados.

Prof. Eduardo Nunes Gonalves

Quando uma expresso no couber em uma nica linha, pode-se usar trs pontos (separados de um nmero por um espao) antes da tecla para indicar que a expresso prossegue na prxima linha: s = 1 - 1/2 + 1/3 - 1/4 + ... 1/5 - 1/6 + 1/7 - 1/8 Os nomes das variveis e funes so formados por uma letra seguida de qualquer numero de letras e dgitos (ou _). Apenas os primeiros 19 caracteres so considerados. O MATLAB diferencia entre letras maisculas e minsculas, de modo que a e A no so as mesmas variveis. Todas as funes do MATLAB so definidas em letras minsculas. Funes para Construir Matrizes O MATLAB possui funes para gerar matrizes especiais. As funes mais utilizadas so apresentadas abaixo: eye( ) ones( ) zeros( ) rand( ) diag( ) tril( ) triu( ) gera matriz identidade gera matriz com todos os elementos iguais a um gera matriz com todos os elementos iguais a zero gera matriz com nmeros aleatrios entre 0 e 1 extrai a diagonal ou cria uma matriz diagonal extrai a parte triangular inferior de uma matriz extrai a parte triangular superior de uma matriz

As funes eye( ), ones( ) e zeros( ) podem ser usadas para gerarem matrizes quadradas ou retangulares: C = eye(3) gera uma matriz quadrada 3x3: C= 1 0 0 0 1 0 0 0 1

Para gerar uma matriz retangular passe para a funo o nmero de linhas e colunas: C = eye(3,4) resulta C= 1 0 0 0 1 0 0 0 1 0 0 0

Introduo ao MATLAB

Como a funo eye( ), as funes ones( ) e zeros( ) podem gerar matrizes quadradas ou retangulares conforme mostrado abaixo: x = ones(2) y = zeros(1,4) w = ones(3,2) resultam x= y= w= 1 1 0 1 1 1 1 1 0 1 1 1 0 0

Voc pode usar estas funes para construir matrizes grandes. Por exemplo, para obter a matriz: F= 0 0 0 2 1 0 0 1 0 1 0 3 0 0 1 2

utilize o seguinte comando: F = [zeros(3,1) eye(3); 2 1 3 2] Para gerar uma matriz identidade com a mesma dimenso de uma outra matriz utilize o comando size( ) que retorna o nmero de linhas e colunas de uma matriz: A = [1 2 3; 4 5 6; 7 8 9] C = eye(size(A)) resulta C= 1 0 0 0 1 0 0 0 1

Obs: O uso do comando eye(A) produz o mesmo efeito, s que existe a previso de no ser mais aceito em futuras verses do MATLAB. A matriz C = (A-2I), por exemplo, pode ser obtida atravs de C = A - 2*eye(size(A))

Prof. Eduardo Nunes Gonalves

A funo rand( ) funciona de meneira simular s anteriores: G=rand(2,4) resulta por exemplo em G = 0.2190 0.6789 0.9347 0.5194 0.0470 0.6793 0.3835 0.8310

A funo diag( ) pode ser usada tanto para extrair a diagonal de uma matriz como para criar uma matriz diagonal: C = diag([-3 -1 -5]) resulta C= -3 0 0 0 -1 0 0 0 -5

x = diag(A) resulta x= 1 5 9

C = diag(diag(A)) resulta C= 1 0 0 0 5 0 0 0 9

A seguir so apresentados exemplos do uso das funes tril( ) e triu( ): L = tril(A) resulta L= 1 4 7 0 5 8 0 0 9

U = triu(A) resulta U= 1 0 0 2 5 0 3 6 9

Introduo ao MATLAB

Comando who e as variveis permanentes O comando who apresenta a lista de variveis criadas: who produz, por exemplo, a resposta: Your variables are: A ans s x

Alm das variveis criadas, existe um grupo de variveis permanentes: eps, pi, Inf, NaN, realmin e realmax. A varivel eps = 2-52 = 2,2204x10-16 o menor nmero que somado a 1 cria um nmero de ponto flutuante maior que 1. As variveis realmin = 2-1022 = 2,2251x10-308 e realmax = 21024 = 1,7977x10308 so respectivamente o menor e o maior nmeros positivos de ponto flutuante que o computador pode representar. A varivel pi equivale a constante . A varivel Inf significa infinito. Um modo de gerar Inf por uma diviso por zero: s = 1/0 resulta em Warning: Divide by Zero. s= Inf

Ao contrrio das maiorias das linguagens de programao, uma diviso por zero apenas emite uma mensagem de aviso sem abortar o programa ou o comando em execuo. A varivel NaN significa "Not a Number" sendo gerada por uma indefinio: s = 0/0 resulta em Warning: Divide by Zero. s= NaN

Prof. Eduardo Nunes Gonalves

Uma viso mais detalhada das variveis obtida atravs do seguinte comando: whos que produz Name A ans s x Size 3 by 3 1 by 1 1 by 1 1 by 5 Element s 9 1 1 5 Bytes 72 8 8 40 Density Full Full Full Full Comple x No No No No

Grand total is 16 elements using 128 bytes Operadores aritmticos As expresses podem ser construdas utilizando os seguintes operadores matemticos apresentados da menor para a maior prioridade de execuo: + * / \ ^ adio subtrao multiplicao diviso direita diviso esquerda potenciao

Em operaes com matrizes, interessante possuir dois smbolos para a diviso. A varivel sob a barra ser o denominador em uma diviso de escalares, ou a matriz que ser invertida em uma operao matricial: 2/4 resulta ans = 0.5000 2\4 resulta ans = 2.0000 Nmeros e matrizes complexas Na verso inicial para DOS, para entrar com nmeros complexos era necessrio utilizar uma das variveis predefinidas: i ou j; que so definidas como i=sqrt(-1) Deste modo para entrar com o numero complexo z = 3 + 4i comando: usava-se o seguinte

Introduo ao MATLAB

z = 3 + 4*i Nas novas verses j possvel escrever os nmeros complexos diretamente como: z = 3 + 4i ou z = 3 + 4j Uma outra opo escrever o nmero complexo na forma: w = r*exp(i*theta), onde r e theta so as variveis contendo o mdulo e o ngulo do vetor, respectivamente. As matrizes com elementos complexos podem ser geradas de duas formas: A = [1+5i 2+6i; 3+7i 4+8i] ou A = [1 2;3 4] + i*[5 6;7 8] que produzem o mesmo resultado. No primeiro modo deve-se ter o cuidado de no utilizar espaos em branco entre os dgitos de um mesmo elemento para que este no seja considerado como dois elementos distintos. Formatos de sada O formato de apresentao padro do MATLAB pode ser modificado atravs de uma das variaes do comando format apresentadas a seguir. Format format short format long format short e format long e format hex format + padro, o mesmo que short formato de ponto fixo com 5 dgitos formato de ponto fixo com 15 dgitos formato de ponto flutuante com 5 dgitos formato de ponto flutuante com 5 dgitos formato hexadecimal formato compacto com os smbolos +, - e branco representando nmeros positivos, negativos e zero respectivamente formato financeiro (duas casas decimais) suprime linhas em branco mantm linhas em branco aproximao por uma razo de nmeros inteiros

format bank format compact format loose format rat

No formato padro, se todos os elementos da matriz so inteiros, ento a matriz apresentada sem a parte decimal: x = [-1 0 1] resulta em x = -1 0 1

Prof. Eduardo Nunes Gonalves

10

Se pelo menos um dos elementos da matriz no um nmero inteiro, ento os nmeros so apresentados no formato short: y = [4/3 1.2345e-6] resulta y = 1.3333 0.0000 A seguir so apresentados vrios exemplos de tipos de formatos e os seus resultados: format short e y produz y = 1.3333E+000 1.2345E-006 format long y produz y = 1.333333333333333 0.000001234500000 format long e y produz y = 1.333300000000000E+000 1.234500000000000E-006 format rat y produz y = 4/3 1/810045

Com os formatos short e long, se existir pelo menos um elemento cujo mdulo maior que 1000 ou menor que 0,001, um fator de escala comum aplicado a todos os elementos da matriz: format y = 1e20*y resulta y= 1.0E+020 * 1.3333 0.0000

Introduo ao MATLAB

11

Pedindo auxlio Para obter uma lista dos tpicos que possuem auxlio, digite: help Para obter o auxlio de um tpico especfico, digite help tpico. Por exemplo, help inv Para verificar se uma palavra mencionada no auxlio de alguma funo utilize o comando lookfor como no exemplo abaixo: lookfor integration Esse comando muito til para descobrir quais as funes disponveis no MATLAB que executam determinada operao. Matrizes Vazias A expresso x=[] fixa x com dimenso zero por zero. Subseqentes usos da varivel x no levam a uma condio de erro. Esta expresso diferente do comando: clear x que elimina a varivel da lista de variveis existentes. A funo exist( ) permite verificar a existncia de uma matriz, ao passo que a funo size( ) permite verificar as dimenses de uma matriz: x = [ ] size(x) exist(x) clear x exist(x) size(x)

% produz erro de varivel inexistente

Observe que para a funo exist( ), o MATLAB retorna 1 para indicar verdadeiro e 0 para indicar falso. Salvando as variveis e saindo do MATLAB Para sair do MATLAB digite quit ou exit. Antes de sair do MATLAB, pode-se salvar as variveis para uso posterior atravs do comando:

Prof. Eduardo Nunes Gonalves

12

save Este comando salva todas as variveis no arquivo matlab.mat. A forma mais geral deste comando save nome_arquivo lista_variveis Por exemplo, save temp A y salva as variveis x e y no arquivo temp.mat. Para recuperar as variveis armazenadas no arquivo matlab.mat utilize o comando load como no exemplo a seguir, onde o camando clear usado para apagar todas as variveis da memria: clear whos load whos ou para ler as variveis no arquivo temp.mat: clear load temp whos Salvando o trabalho realizado Para salvar em um arquivo de texto todos os comandos efetuados e as respectivas respostas, pode-se usar o comando diary seguido pelo nome do arquivo. Caso seja omitido o nome do arquivo, criado um arquivo chamado diary. Aps esse comando, todo o contedo da tela de comandos copiado dentro do arquivo de texto. Para parar temporariamente a gravao use o comando diary off e para retornar a gravao use o comando diary on.

2.

OPERAES MATRICIAIS

Matriz Transposta O caracter acento agudo ' determina a transposta de uma matriz: A = [1 2 3;4 5 6;7 8 0] B = A' resulta em B= 1 2 4 5 7 8

Introduo ao MATLAB

13

3 e x = [-1 0 2]' produz x= -1 0 2

Se a matriz A possuir elementos complexos, ento A' ser a transposta conjugada de A. Adio e Subtrao As operaes de adio e subtrao matricial s so definidas para matrizes com mesmas dimenses: C=A+B resulta C= 2 6 10 6 10 14 10 14 0

A adio e a subtrao tambm so definidas se um dos operandos um escalar (dimenso 1 x 1). Neste caso o escalar somado ou subtrado de todos os elementos do outro operando: y=x-1 fornece y= -2 -1 0

Multiplicao de Matrizes A multiplicao de matrizes definida quando as dimenses internas dos operandos so iguais (nmero de colunas do primeiro operando igual ao nmero de linhas do segundo operando). Por exemplo:

Prof. Eduardo Nunes Gonalves

14

x'*y resulta ans = 4 x*y' fornece ans = 2 0 -4 b = A*x resulta b= 5 8 -7 Um escalar pode multiplicar ou ser multiplicado por uma matriz, como por exemplo: pi*x Diviso de Matrizes Existe dois smbolos de diviso no MATLAB: / e \: A\B = inv(A)*B B/A = B*inv(A) De maneira geral: X = A\B soluo de A*X = B X = B/A soluo de X*A = B Por exemplo, deste que o vetor b foi calculado a partir de A*x, ento a expresso z = A\b resulta z= -1 0 1 0 -2 -1 0 2

Introduo ao MATLAB

15

2 o qual o valor do vetor x. Potenciao de Matrizes A expresso A^p significa A elevado p e definida se A uma matriz quadrada e p um escalar. Por exemplo, A^3 ter o mesmo resultado que A*A*A Funes Transcendentais Matriciais No MATLAB, funes como exp(A) ou sqrt(A) operam em cada elemento da matriz A individualmente. Existe um conjunto especial de funes que so definidas para matrizes quadradas: expm logm sqrtm Por exemplo, expm(A) produz um resultado diferente que exp(A) o qual calcula a funo ex para cada elemento individual de A. Da mesma forma, sqrt(A) calcula a raiz quadrada de cada elemento de A, ao passo que B = sqrtm(A) Calcula a matriz B tal que B*B=A Funes Matriciais teis O MATLAB possui uma srie de funes para tratamento de matrizes que incluem fatorizao, decomposio, clculo da matriz inversa, etc. Entre com as seguintes matrizes: A = [ 1 2 3; 4 5 6; 7 8 0 ] B = [ 1 2 3; 4 5 6; 7 8 9 ] exponencial de matriz logaritmo de matriz raiz quadrada de matriz

Prof. Eduardo Nunes Gonalves

16

Por exemplo, para determinar as inversas das matrizes A e B, basta digitar: inv(A) inv(B)

Para obter o determinante das matrizes, utilize, det(A) det(B)

Para determinar o posto da matriz (maior nmero de linhas ou colunas linearmente independentes) utilize a funo rank(): rank(A) rank(B)

Os autovalores da matriz A podem ser calculados pela funo eig() que pode ser usada de dois modos distintos: eig(A) que retorna os autovalores em um vetor coluna. Ou, [V,D] = eig(A) que retorna nas colunas da matriz V os autovetores associados com os autovalores de A que aparecem como os elementos da diagonal principal da matriz D.

3.

Operaes sobre Arranjos

O termo "operaes de arranjos" se refere as operaes aritmticas elemento por elemento de dois arranjos ou conjuntos. A adio e subtrao de arranjos possui a mesma definio das operaes matriciais. A multiplicao de arranjos, isto , a multiplicao elemento por elemento feita atravs do operador .* como mostrado a seguir: x = [1 2 3] y = [4 5 6] z = x.*y resulta z= 4 10 18

onde z dado por z = [1x4 2x5 3x6]. As expresses A./B ou A\.B fornece as divises do elementos individuais, z = x.\y resulta z= 4.0000 2.5000 2.0000

Introduo ao MATLAB

17

A potenciao de arranjos pode assumir vrias formas: z = x.^y resulta z= 1 32 729

que dado por z = [14 25 36], z = x.^2 fornece z= 1 4 9

correspondendo z = [12 22 32], z = 2 .^[x y] produz z= 2 4 8 16 32 64

Quando usando operaes sobre arranjos deve-se ter o cuidado de deixar um espao entre um nmero e o smbolo da operao. Caso isto no seja feito, o MATLAB interpretar o ponto como ponto decimal e a operao passa a ser matricial.

4.

Vetores e ndices

Gerando Vetores O operador dois-pontos, :, utilizado pelo MATLAB para gerar vetores: x = 1:5 gera um vetor linha com os elementos variando de 1 a 5 com incremento de um: x= 1 2 3 4 5

Incrementos diferentes de um podem ser utilizados: y = 0:pi/4:pi resulta em y= 0.0000 0.7854 1.5708 2.3562 3.1416

Prof. Eduardo Nunes Gonalves

18

Incrementos negativos tambm so permitidos: z = 5:-1:1 gera z= 5 4 3 2 1

Um bom exemplo do uso do operador dois-pontos e de operao com arranjos a gerao de uma tabela de e-xsenox: x = (0:0.02:3)' y = exp(-x).*sin(x) [x y] Para ver o grfico dessa funo utilize o seguinte comando: plot(x,y) O MATLAB abre uma janela grfica para apresentar o grfico. Alm do uso do dois-pontos, o MATLAB possui a funo linspace( ) que cria um vetor com um nmero definido de valores igualmente espaados entre dois valores limites. Para criar um vetor de valores entre 2 e 5 com 6 elementos utilize o comando: x = linspace(-2, 5, 6) que resulta x= ndices Os elementos individuais de uma matriz podem ser referenciados atravs de ndices entre parntesis (sendo o primeiro ndice para a linha e o segundo para coluna). Por exemplo, A = [1 2 3;4 5 6;7 8 0] A(3,3) = A(1,2) + A(3,1) resulta A= 1 4 7 2 5 8 3 6 9 -2.0000 -0.6000 0.8000 2.2000 3.6000 5.0000

onde o elemento da linha 3, coluna 3 passa a ser a soma do elemento da linha 1, coluna 2, mais o elemento da linha 3, coluna 1.

Introduo ao MATLAB

19

Os ndices podem ser vetores quando se deseja selecionar mais que uma linha ou coluna: B=A(1:2,3) resulta B= 3 6

ou x = A(2,1:3) que fornece x= 4 5 6

Quando se deseja uma linha completa ou uma coluna completa, como no exemplo acima, pode se usar o dois-pontos como ndice: x = A(2,:) Para obter a terceira coluna usar: y = A(:,3) Para eliminar uma linha ou coluna de uma matriz pode-se usar a matriz vazia []. Por exemplo para eliminar a coluna 2 da matriz A basta executar o comando: A(:,2) = [] Tambm pode-se usar ndices decrescentes ou com ordem aleatria: y = x(3:-1:1) resulta y= ou y = x([3 1 2]) que fornece y= 6 4 5 6 5 4

Prof. Eduardo Nunes Gonalves

20

5.

Polinmios

Os polinmios so representados no MATLAB atravs de um vetor linha contendo os coeficientes em ordem decrescente de potncia. Por exemplo, para entrar com o polinmio: p() = 25 + 4 + 33 + 4 + 8 digite, p = [2 1 3 0 4 8] Para calcular as razes do polinmio use, roots(p) Para obter o polinmio para um determinado conjunto de razes, pode ser utilizada a funo poly( ): r = [-1 -2] p = poly(r) resultando p= 1 3 2 A funo poly( ) tambm pode ser utilizada para obter a equao caracterstica de uma matriz quadrada: Q() = det(I - A) = n + an-1n-1 + ... + a1 + a0 Por exemplo, A = [1 2 3;4 5 6;7 8 0] q = poly(A) resulta p= 1 -6 -72 -27

Para obter os autovalores (que so as razes do polinmio caracterstico), pode-se utilizar o seguinte comando r = roots(q) ou usar diretamente a funo eig(A) vista anteriormente. Para calcular os valores de um polinmio p, para um conjunto de valores x, utiliza-se a funo polyval(): x = 0:10; y = polyval(p,x)

Introduo ao MATLAB

21

possvel tambm determinar os coeficientes do polinmio de ordem n que mais se aproxima dos valores de y=f(x). Para isto utiliza a funo: polyfit(x,y,n). Para somar ou subtrair dois polinmios pode se usar a soma ou subtrao matriciais. Caso a ordem dos polinmios seja diferente necessrio completar o vetor de menor dimenso com zeros para garantir que os dois vetores tenham a mesma dimenso. Por exemplo, para somar f(x) = 2x2+1 e g(x) = 3x3+5x+4 basta proceder do seguinte modo: f = [0 2 0 1] g = [3 0 5 4] h=f+g que resulta g= 3 2 5 5

Para multiplicar ou dividir polinmios deve-se utilizar as funes conv( ) e deconv( ) respectivamente. Para os mesmos polinmios f(x) e g(x) do exemplo anterior, pode-se calcular h(x) = f(x).g(x) e m(x) = f(x) = h(x)/f(x) atravs dos seguintes comandos: f = [2 0 1] g = [3 0 5 4] h = conv(f, g) [q, r] = deconv(h, f) que resultam h= q= 6 3 0 2 13 5 8 5 5 4 e h(x) = 6x5 + 13x3 + 8x2 + 5x + 4 r= 0 0 0 0 0 0

% q(x) = quociente e r(x) = resto da diviso

O MATLAB tambm possui a funo polyder( ) para calcular a derivada de um polinmio: h = polyder(g) resulta h= 9 0 5

6.

Grficos

O MATLAB possui vrios tipos diferentes de grficos. Para ver os tipos de grficos e comandos disponveis use o comando help para os tpicos plotxy e plotxyz para grficos de duas e trs dimenses respectivamente. A tabela a seguir apresenta os tipos de grficos mais comuns. Plot loglog ambos os eixos lineares ambos os eixos logartmicos

Prof. Eduardo Nunes Gonalves

22

semilogx semilogy polar mesh bar

eixo x logartmico e eixo y linear eixo x linear e eixo y logartmico coordenadas polares superfcies em 3 dimenses grfico de barras

Uma vez que o grfico foi criado, pode-se adicionar as seguintes caractersticas: title xlabel ylabel zlabel text gtext grid escreve ttulo no grfico escreve o nome do eixo x escreve o nome do eixo y escreve o nome do eixo z para grficos 3D escreve texto sobre o grfico posiciona o texto no grfico atravs do mouse inclui grade de linhas no grfico

Alm disto, existem comandos para controle do vdeo, escalonamento manual de eixos e impresso que so apresentados a seguir. shg clc clg axis hold subplot whitebg cinvert ginput print mostra a tela grfica limpa a tela de comandos limpa a tela grfica escalonamento manual de eixos cria o prximo grfico sobre o grfico atual divide a tela grfica em at 4 partes troca cor de fundo dos grficos para branco inverte as cores do grfico retorna as coordenadas selecionada pelo mouse imprime grfico na impressora

O MATLAB pode trabalhar com vrias janelas grficas ao mesmo tempo. Para esse fim existe um conjunto de comandos especficos. Grficos Lineares Se y um vetor, o comando plot(y) produz um grfico linear de y em funo dos ndices. Por exemplo, y = [0 .48 .84 1 .91 .6 .1] plot(y) Observe que o grfico resultante dimensionado automaticamente. Experimente agora os seguintes comandos (use o comando shg se a janela do grfico no estiver visvel): title(Meu segundo grfico) xlabel(eixo x) ylabel(eixo y) grid

Introduo ao MATLAB

23

O comando a seguir escreve o texto na posio selecionada pelo mouse (observe que o cursor sobre a janela grfica assume a forma de uma cruz): gtext(Curva 1) Voc tambm pode ler os valores do grfico selecionados pelo mouse atravs da funo ginput onde o terceiro parmetro o nmero de pontos que sero selecionados: [x y] = ginput(3) Se x e y so vetores de mesma dimenso, ento o comando plot(x,y) cria o grfico de y versus x. Por exemplo: t = 0:0.05:4*pi; y = sin(t) plot(t,y) Grficos com Mltiplas Linhas A maneira mais simples de se obter grficos com mltiplas linhas utilizar o comando plot() na seguinte forma: plot(X1, Y1, X2, Y2, ..., Xn, Yn) onde X1, Y1, ..., Xn, Yn so os pares de vetores necessrios para cada curva. Pode-se definir a cor ou o tipo de linha para cada uma das curvas. Os tipos de linhas, marcas e cores disponveis so listados na tabela a seguir. Tipos de linhas slida tracejada pontilhada trao-ponto -: -. Tipos de pontos ponto cruz estrela crculo marca x . + * o x Cores vermelho verde azul escuro branco amarelo rosa escuro azul claro preto invisvel r g b w y m c k i

Como exemplo, vamos verificar o uso das funes polyval() e polyfit(): p = [1 2 4 1 3] x = 0:0.1:1 y = polyval(p,x) pe = polyfit(x,y,2) ye = polyval(pe,x) plot(x,y,x,ye)

Prof. Eduardo Nunes Gonalves

24

Para escolher o tipo de linha, marca ou cor, passe um terceiro parmetro entre aspas como no exemplo abaixo cujo grfico resultante apresentado a a seguir. plot(x,y,'*r',x,ye,'--')
11 10 9 8 7 6 5 4 3 0 0.2 0.4 0.6 0.8 1

Escalonamento Manual dos Eixos dos Grficos Para alterar o escalonamento automtico dos eixos dos grficos utilizado pelo MATLAB pode-se usar o comando axis(V), onde V um vetor com quatro elementos especificando os valores mnimo e mximo do eixo x e os valores mnimo e mximo do eixo y. O uso do comando axis() pode ser verificado atravs do seguinte exemplo: v = [0 0.5 3 4]; axis(v) Grficos 3D O comano plot3( ) o equivalente do comando plot( ) para trs dimenses. O comando plot3(x,y,z), onde x, y e z so trs vetores de mesma dimenso, desenha uma curva nos espao 3D atravs dos pontos cujas coordenadas so os elementos de x, y e z. Execute o exemplo a seguir para obter a figura a seguir: t = 0:pi/50:10*pi;

Introduo ao MATLAB

25

4 3 2 1 0 1

0 0 0 0

. 5 0 0 . 5 1 1 0 . 5 0 0 . 5

plot3(sin(t),cos(t),t); Outra forma de criar grficos 3D atraves da funo mesh(). A forma mais simples de usar essa funo passar como argumento uma matriz com os valores do eixo z como no exemplo a seguir que gera o patamar mostrado na figura a seguir: A = zeros(10) A(4:6,4:6) = ones(3) mesh(A)

1 0.8 0.6 0.4 0.2 0 10 10 5 0 0 5

O MATLAB possui vrios outros recursos e tipos de grficos. Utilze o comando help com os tpicos graphics, plotxy e plotxyz para ver os comandos disponveis.

Prof. Eduardo Nunes Gonalves

26

7. Escrevendo Programas no MATLAB


O MATLAB pode se usado como uma linguagem matricial de alto nvel completa, possuindo os comandos de controle de fluxo encontrados na maioria das linguagens. Operadores Relacionais Existe seis operadores relacionais que podem ser utilizados para comparar duas matrizes de mesma dimenso elemento por elemento. O resultado uma matriz com a mesma dimenso dos operandos composta de 0's e 1's, onde o 0 representa falso e o 1 representa verdadeiro. Os operadores relacionais so apresentados na tabela a seguir. Operadores Relacionais menor que menor igual maior que maior igual igual diferente

< <= > >= == ~=

A funo find() til para determinar os elementos da matriz que no so nulos. Se no houver nenhum elemento no nulo, esta funo retorna uma matriz vazia. Operadores Lgicos Existe trs operadores lgicos que trabalham normalmente com escalares ou matrizes de mesma dimenso contendo elementos 0's ou 1's: Operadores Lgicos AND OR NOT

& | ~

Comandos IF, ELSE e ELSEIF O comando if ilustrado com o exemplo abaixo onde deseja-se determinar o maior entre dois nmeros: if a > b maior = a else maior = c end

Introduo ao MATLAB

27

Quando se deseja testes em sequncia, o comando elseif pode ser til. No exemplo a seguir a varivel sinal receber os valores 0, -1 ou 1 caso a varivel a seja nula, negativa ou positiva respectivamente. if a == 0 sinal = 0 elseif a < 0 sinal = -1 else sinal = 1 end O comando de Repetio FOR O comando for permite que um grupo de comandos seja repetido por um nmero determinado de vezes. A forma geral do comando for for v = expresso comandos end O exemplo a seguir calcula
e At = I + At + ( At ) 2 ( At ) 3 + + ... 2! 3!

usando 11 termos para t = 0,1. A = [ 0 1; -2 -3] t = 0.1 termo = eye(size(A)) serie = termo for i=1:10 termo = termo*A*t/i; serie = serie+termo; end serie expm(A*t) Comando de Repetio WHILE O comando while possibilita que um determinado grupo de comandos seja repetido enquanto a expresso lgica associada permanecer verdadeira. A forma geral do comando while while expresso comandos end

Prof. Eduardo Nunes Gonalves

28

A varivel eps que representa a diferena entre 1 e o nmero mais prximo pode ser calculada atravs de eps = 1; while (1+eps) > 1, eps=eps/2; end eps=2*eps O comando break pode ser usado em conjunto com o comando while para forar o fim da repetio em um ponto diferente do incio. O seguinte exemplo ilustra o uso do comando break. while 1 n = input('Entre n (0 para terminar):'); if n == 0, break, end sqrt(n) end Arquivos .M : Programas e Funes O MATLAB capaz de executar uma seqncia de comandos armazenada em um arquivo. Estes arquivos podem ser escritos em qualquer editor de textos e devem possuir a extenso .M e serem armazenados em um dos diretrios pesquisados pelo MATALB (ver arquivo MATLABRC.M). Alm dos arquivos com seqncias de comandos, o MATLAB tambm aceita um segundo tipo de arquivo que permite ao usurio escrever as suas prprias funes. Os arquivos com funes comeam com o comando function como no exemplo a seguir: function y = media(x) % y = media(x) retorna a mdia dos elementos da matriz ou vetor x [m, n] = size(x); if m*n == 0 error(No possvel calcular a mdia de uma matriz vazia.) end y = sum(sum(x))/(m*n); A funo acima pode ser escrita em um arquivo denominado media.m presente em um dos diretrios pesquisados pelo MATLAB (a lista de diretrio apresentada pelo comando help). Observe que de acordo com o comando function, a varivel y ir armazenar o valor de retorno da funo media(). O smbolo % significa que o restante da linha um comentrio que no interpretado como um comando pelo MATLAB. Os comentrios entre o comando function e o primeiro comando da funo so apresentados pelo comando help. Experimente a sua funo criada: help media v = [1 2 4 6] m = media(v)

Você também pode gostar