MATLAB2009_manual

download MATLAB2009_manual

of 50

Transcript of MATLAB2009_manual

  • 8/18/2019 MATLAB2009_manual

    1/50

     

    Matlab

  • 8/18/2019 MATLAB2009_manual

    2/50

     

    Índice Analítico

    1.1  Matlab Básico ....................................................................................... 2 1.1.1  Introdução ......................................................................................... 2 1.1.2  Operações Matriciais ........................................................................ 8 1.1.3  Operações em Array ........................................................................ 10 1.1.4  Manipulação Matricial e Vetorial ................................................... 13 1.1.5  Análise de Dados ............................................................................ 18 1.1.6  Funções Matriciais .......................................................................... 20 1.1.7  Polinômios e Processamento de Sinais ........................................... 21 1.1.8  Funções de Funções ........................................................................ 24 1.1.9  Gráficos ........................................................................................... 28 1.1.10  Controles de Fluxo ...................................................................... 38 1.1.11  Arquivos M ................................................................................. 40 1.1.12  Arquivos de Disco ....................................................................... 47 1.1.13  O Depurador do Matlab .............................................................. 49 

  • 8/18/2019 MATLAB2009_manual

    3/50

     

    2

    1.1 Matlab Básico

    MATLAB é um ambiente de computação técnica de visualização e processamento numérico de alto desempenho. Ele integra análise numérica,cálculo matricial, processamento de sinais, vários aplicativos e gráficos numambiente amigável onde problemas e soluções são expressos como eles sãorepresentados matematicamente sem a necessidade da programação tradicional.

    O nome MATLAB é acrônimo de laboratório de matrizes. Ele foioriginalmente escrito para permitir um acesso fácil aos programas de cálculomatricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos

    representavam o estado da arte em programas de cálculo matricial.

    MATLAB também contempla uma família de aplicativos específicoschamados “toolboxes”  na forma de coleções de funções MATLAB (M-files),estendendo o ambiente MATLAB na solução de problemas particulares. Entreoutros, temos os seguintes toolboxes: Processamento de Sinais; ControleRobusto; Identificação de Sistemas; Redes Neurais; Otimização, e etc.

    Provavelmente a característica mais importante do MATLAB é sua

    ampliabilidade. Isto permite que qualquer um possa criar uma toolbox.Aplicativos matemáticos complexos são facilmente desenvolvidos em poucaslinhas no ambiente MATLAB sem a necessidade de programação de uma únicalinha de código C ou outro código de baixo nível.

    1.1.1  Introdução

    O MATLAB trabalha essencialmente com um tipo de objeto: Matrizretangular numérica (real ou complexa). Em algumas situações existesignificado especial agregado à matrizes de dimensão 1 (escalares) e matrizescom uma só linha ou coluna (vetores). A linguagem MATLAB não usadeclaração preliminar ou dimensionamento de variáveis. Isso é feito de formaautomática.

    Matrizes podem ser adicionadas no ambiente de várias formas, contudo aforma mais simples para matrizes pequenas é entrando com a lista doselementos, seguindo a seguinte convenção:

  • 8/18/2019 MATLAB2009_manual

    4/50

     Tutorial do MATLAB 3

      Separe os elementos com espaços ou vírgulas.  Delimite os elementos com colchetes [ ]. 

      Use ;  (ponto-e-vírgula) para indicar o final da linha.

    Exemplo:

    »  A = [ 1 2 3; 4 5 6; 7 8 9 ]

    Resulta: A =

    1 2 34 5 67 8 9

    Elementos de uma matriz podem ser quaisquer expressões MATLAB. Porexemplo:

    »  x = [ -1.3 sqrt(3) (1+2+3)*4/5 ]

    Resulta:x =

    -1.3000 1.7321 4.8000

    Elementos individuais podem ser referenciados pelo seu índice (linha,coluna).Veja o exemplo a seguir: 

    »  x(5) = abs(x(1))

    Resulta:x =

    -1.3000 1.7321 4.8000 0 1.3000

    Ao atribuir um valor numérico à x(5), automaticamente x(4) é criado com valornulo. Você pode construir matrizes maiores usando matrizes menores como seuselementos. Por exemplo, vamos adicionar uma linha à matriz A:

    »  r = [ 10 11 12 ];

  • 8/18/2019 MATLAB2009_manual

    5/50

     Tutorial do MATLAB 4

    »  A = [ A; r ]

    Isto resulta em:

     A =1 2 34 5 67 8 9

    10 11 12

    Você pode extrair sub-matrizes de uma matriz maior usando “: ”  (dois pontos).Por exemplo:

    »  A = A( 1:3 , : );

    Remove as três primeiras linhas e todas as colunas da matriz atual  A e coloca oresultado em A.

     A =

    1 2 34 5 67 8 9

    Variáveis e Declarações do MATLAB

    Declarações no MATLAB são freqüentemente feitas da seguinte forma:

    »  variável = expressão

    ou simplesmente,

    »  expressão

    Quando o nome da variável é omitido, o nome ans é usado como variáveldefault .

  • 8/18/2019 MATLAB2009_manual

    6/50

     Tutorial do MATLAB 5

    Uma definição normalmente termina com ENTER. Se o último caracter éum ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça aatribuição da mesma forma. Isto é especialmente importante nas situações que o

    resultado é muito grande, tal como uma matriz de 10 linhas e 10 colunas.

    Se a expressão é muito grande e não cabe em uma linha, use (...)  paracontinuar a definição na linha seguinte. Exemplo:

    »  s = 1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + 1/7 ...- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

    Você pode formar uma variável ou nome de função com uma letraseguida de qualquer quantidade de letras (ou underscore). O MATLABdiferencia letras maiúsculas de minúsculas e usa somente os primeiros 19caracteres do nome.

    Obtendo Informação da Área de Trabalho (workspace )

    Para listar as variáveis ativas use o comando who . Para obter maisinformações sobre as variáveis como: nome, tamanho, número de elementos,etc., use o comando whos .

    O Utilitário de HELP  

    O comando help   produz informações resumidas sobre funçõesespecíficas ou sobre tópicos do MATLAB. Para listar um grupo de funções,digite help  seguido do nome do grupo de funções. Exemplo:

    »  help matfun

    Para obter auxílio sobre uma função específica digite help  e o nome dafunção. Exemplo:

  • 8/18/2019 MATLAB2009_manual

    7/50

     Tutorial do MATLAB 6

    »  help inv

    Para localizar palavras-chaves em todos os arquivos do MATLAB, use o

    comando lookfor . Exemplo:

    »  lookfor inverse

    invhilb - Inverse Hilbert matrix.ipermute - Inverse permute array dimensions.acos - Inverse cosine, result in radians.acosd - Inverse cosine, result in degrees.acosh - Inverse hyperbolic cosine.ACSCH

       

    Salvando e Saindo

    Para sair do MATLAB digite exit . Encerrando uma seção do MATLAB,apaga-se todas as variáveis da área de trabalho (workspace). Se for necessário,salve suas variáveis digitando save . Este comando salvará todas as variáveis emum arquivo chamado matlab.mat. Para recuperar as variáveis use o comando

    load . Você também pode salvar somente algumas variáveis e usar o nome deum arquivo qualquer. O exemplo a seguir salva as variáveis  x, y e  z  no arquivotemp.mat.

    »  save temp x y z

    Números e Expressões Aritméticas

    O MATLAB usa notação convencional com potência de dez ou unidadecomplexa como sufixo:

    -4.534i1.760217e-11

    O MATLAB usa 16 dígitos significativos e expressões aritméticas sãocalculadas com a seguinte prioridade, de cima para baixo

    ^ potenciação

  • 8/18/2019 MATLAB2009_manual

    8/50

     Tutorial do MATLAB 7

    \ divisão à esquerda/ divisão à direita* multiplicação- subtração

    + adição

    Algumas funções internas retornam valores especiais. A função pi  retornao valor de , a função inf   retorna , etc. O MATLAB dispões das funçõesmatemáticas elementares normalmente encontradas em calculadores científicas.Essas funções incluem, por exemplo: abs , sqrt , log , sin . Se uma operaçãoresultar em infinito isso não implica em erro, simplesmente aquela variável teráo valor infinito. O mesmo ocorre para operações inválidas como / ou 0/0. Oresultado é NaN ( Not a Number ).

    Formato de Saída

    Para alterar a formatação do número a ser apresentado na tela, utilize ocomando format . Exemplos:

    »  x = [ 4/3 1.2345e-6 ]

    »  format short

    1.3333 0.0000

    »  format short e

    1.3333e+00 1.2345e-06

    Funções

    Grande parte do poder do MATLAB vem do enorme conjunto de funções.Algumas das funções são internas ao processador MATLAB e outras sãodisponíveis como bibliotecas externas na forma de M-files. O conjunto defunções aplicadas a uma área específica é denominado toolbox. Cada usuário

     pode criar suas próprias funções que se comportam como se fossem funçõesinternas. As seções adiante discutem cada uma das diferentes categorias defunções analíticas do MATLAB básico.

  • 8/18/2019 MATLAB2009_manual

    9/50

     Tutorial do MATLAB 8

    É possível combinar funções de várias formas. Exemplo:

    »  x = sqrt( log(z) )

    Algumas funções usam dois ou mais argumentos, e cada argumento podeser uma expressão. Exemplo:

    »  angulo = atan2(y,3*x)

    Existem funções que retornam dois ou mais valores. Nestes casos, os

    valores de saída devem estar entre colchetes [ ]  e separados por vírgula.Exemplo:

    »  [ V, D ] = eig( A )

    A função eig   calcula os autovetores e os autovalores de  A,respectivamente.

    1.1.2 

    Operações Matriciais

    Transposta de uma Matriz

    O caracter ' (apóstrofe) denota transposta de uma matriz. Se  z   forcomplexo, z ' é o transposto conjugado complexo de z . Exemplo:

    »  A = [ 1 2; 3 4 ] A =

    1 23 4

    »  B = A'B =

    1 32 4

    Adicionando e Subtraindo Matrizes

  • 8/18/2019 MATLAB2009_manual

    10/50

     Tutorial do MATLAB 9

    Os símbolos +  e -  denotam adição e subtração de matrizes. Portanto, aoperação é definida se as matrizes têm a mesma dimensão. Exemplo:

    »  C = A + BC =

    2 55 8

    A adição e subtração é definida também para o caso que um dosoperandos é um escalar. Exemplo:

    »  D = C - 2D =

    0 33 6

    Multiplicação de Matrizes

    O símbolo *  denota multiplicação de matrizes e é válida sempre que

    dimensões internas dos dois operandos for igual. Exemplo:

    »  E = A * BE =

    5 1111 25

     Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou sermultiplicado por qualquer matriz. Exemplo:

    »  F = 2*EF =

    10 2222 50

    Divisão de Matrizes

    Existe dois símbolos de divisão de matrizes: / e \. Os significados são:

  • 8/18/2019 MATLAB2009_manual

    11/50

     Tutorial do MATLAB 10

    X = A\B é solução do sistema A*X = BX = B/A é solução do sistema X*A = B

    Funções Elementares e Transcendentais

    O MATLAB considera expressões como exp(A) e sqrt(A) como operaçãosobre cada um dos elementos de um vetor (linha ou coluna). Existem funções

     para calculo de funções transcendentais de matrizes, quando essas sãoquadradas. Exemplos:

      expm exponencial de uma matriz

      logm logaritmo de uma matriz  sqrtm raiz quadrada de uma matriz

    Outras funções elementares sobre matrizes incluem:

       poly polinômio caraterístico  det determinante  trace traço

    1.1.3  Operações em Array  

    Refere-se às operações com array  as operações aritméticas realizadas

    elemento a elemento ao invés da operação matricial algébrica usual definida pelos símbolos * \ / ^ e '. Para indicar que a operação é elemento-a-elemento usa-se um ponto (.) antes do símbolo da operação.

    Somando e Subtraindo Arrays  

    Para a adição e subtração, as operações de arrays e as de matrizes são asmesmas. Neste caso + e - podem ser usados sem o ponto.

    Multiplicando e Dividindo Arrays  

  • 8/18/2019 MATLAB2009_manual

    12/50

     Tutorial do MATLAB 11

    O símbolo .*  denota multiplicação elemento-a-elemento. Se  A  e  B  têmmesma dimensão, então  A.*B resulta num array cujos elementos são o produtodos elementos individuais de A e de B. Exemplo:

    »  x = [1 2 3]; y = [4 5 6];»  z = x.*y

    z =4 10 18

    A expressão A./B e A.\B resulta no quociente de cada elemento. Exemplo:

    »  z = x.\yz =

    4.0000 2.5000 2.000

    Usando Potenciação com Arrays

    O símbolo .^ denota potenciação elemento-a-elemento. Exemplo:

    »  z = x.^yz =

    1 32 729

    Operadores Relacionais

    Para se comparar matrizes de dimensões idênticas, existem operadores

    relacionais:

    < menor maior>= maior ou igual== igual~= diferente

  • 8/18/2019 MATLAB2009_manual

    13/50

     Tutorial do MATLAB 12

    O MATLAB compara os pares de elementos correspondentes. Oresultado é uma matriz de "uns" e "zeros", onde "um" representa "verdadeiro" e"zero" representa "falso". Exemplo:

    »  2 + 2 ~= 4ans =

    0

    O exemplo abaixo, ilustra como encontrar os elementos da matriz  A quesão divisíveis por 3:

    »  A = [8 1 6; 3 5 7; 4 9 2];»  G = rem(A,3);»  P = (G == 0)

    P =0 0 11 0 00 1 0

    A função rem(A,3) retorna a matriz dos restos da divisão por 3. Cada umdos elementos de G informa se a operação relacional é falsa (0) ou verdadeira(1).

    A função f ind  é muito usada em conjunto com operadores relacionais. Oexemplo abaixo ilustra como localizar todos os elementos de Y  que são maioresque 3 e substituí-los por 10.

    »  Y = [1 2 3 4 5 6 7 8 9];»  i = find(Y > 3.0);»  Y(i) = 10*ones(size(i));

    Operadores Lógicos

    Os operadores &, |, e ~  são os operadores lógicos "e", "ou" e "não"respectivamente. As funções any   e al l   são muito utilizadas em conjunto com

    operadores lógicos. A função any(x)  retorna "1" se qualquer elemento de  x fornão nulo e retorna "0" caso contrário. A função all(x)  retorna "1" somente se

  • 8/18/2019 MATLAB2009_manual

    14/50

     Tutorial do MATLAB 13

    todos os elementos de x são não nulos. Essas funções são particularmente úteisna declaração de um comando i f .

    if all(A < 0.5)faça alguma coisa

    end

    Funções Matemáticas

    Um conjunto de funções matemáticas elementares são aplicáveiselemento-a-elemento. Exemplo:

    »  A = [ -1 2 -3; 4 -5 6];»  B = abs(A)

    B =1 2 34 5 6

    1.1.4  Manipulação Matricial e Vetorial

    A capacidade de indexação do MATLAB permite manipulação de linhase colunas, elementos individuais e submatrizes de matrizes. Os vetores são o

     ponto central da indexação e eles são gerados com o uso de “: ”  (dois pontos).

    Gerando Vetores

    A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos:

    »  x = 1:5x =

    1 2 3 4 5

    Você pode também criar o vetor com incrementos diferentes da unidade. No exemplo a seguir o passo é de /4.

  • 8/18/2019 MATLAB2009_manual

    15/50

     Tutorial do MATLAB 14

    »  y = 0 : pi/4 : piy =

    0.0000 0.7854 1.5708 2.3562 3.1416

    »  z = 6: -1 : 1z =

    6 5 4 3 2 1

    A uso de (:) permite a criação rápida de tabelas como ilustrado a seguir:

    »  x = (0 : 0.2 : 3)';»  y = exp(-x) .* sin(x);»  [x y]

    ans =0 0

    0.2000 0.16270.4000 0.26100.6000 0.30990.8000 0.32231.0000 0.30961.2000 0.28071.4000 0.2430

    1.6000 0.20181.8000 0.16102.0000 0.12312.2000 0.08962.4000 0.06132.6000 0.03832.8000 0.02043.0000 0.0070

    Existem outras funções para a geração de vetores tal como logspace  que

    gera um vetor espaçado logaritmicamente:

    »  w = logspace(-1,1,5)w =

    0.1000 0.3162 1.0000 3.1623 10.0000

    Indexando

  • 8/18/2019 MATLAB2009_manual

    16/50

     Tutorial do MATLAB 15

    Elementos individuais de matrizes podem ser referenciados inserindoseus índices de linha e coluna entre parênteses. Se uma expressão for usadacomo índice, o índice é aproximado paro o inteiro mais próximo.

    »  A = [1 2 3; 4 5 6; 7 8 9];»  A(3,3) = A(1,3) + A(3,1)

     A =1 2 34 5 67 8 10

    Usando (:) dois pontos, podemos indexar todas as linhas ou colunas ou

    uma parte:

    »  A(:,1) A =

    147

    »  A(2:3,1:2)

     A = 4 57 8

    O exemplo a seguir mostra como fazer referência explícita a algumaslinhas ou colunas. Colocam-se os números das linhas e colunas dentro decolchetes:

    »  A( [1 3], [1 3] ) A =

    1 37 10

    Um outro uso para os dois pontos (:) é no empilhamento das colunas deuma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna:

    »  A = [1 2; 3 4; 5 6];

    »  B = A(:)B =

  • 8/18/2019 MATLAB2009_manual

    17/50

  • 8/18/2019 MATLAB2009_manual

    18/50

     Tutorial do MATLAB 17

    Matrizes Especiais

    Existe uma coleção de funções que geram matrizes que são normalmente

    encontradas nos problemas de álgebra linear e processamento de sinais.Exemplos:

      compan - gera a matriz a partir do polinômio caraterístico  diag - matriz diagonal  pascal - constrói o triângulo de Pascal  zeros - matriz de "zeros"  ones - matriz de "uns"  eye - matriz identidade  logspace - vetores espaçados logaritmicamente  linspace - vetores espaçados linearmente  rand - elementos randômicos uniformemente distribuídos  randn - elementos randômicos normalmente distribuídos  etc ...

    Construindo Matrizes a partir de Matrizes

    É possível formar matrizes maiores a partir de matrizes menores,envolvendo as matrizes menores entre colchetes. Por exemplo, se  A  é umamatriz quadrada,

    »  C = [ A A'; ones(size(A)) A.^2 ]

    cria a matriz C   com o dobro do tamanho de  A. Note que na construção de

    matrizes usando matrizes, as dimensões das matrizes menores devem sercompatíveis ou então aparecerá uma mensagem de erro.

    Manipulando Matrizes

    Várias funções estão disponíveis para a manipulação matricial como:rot90   (rotação anti-horária de 90º), tril  (parte triangular superior), triu  (partetriangular inferior), reshape  (alteração da dimensão), etc.

  • 8/18/2019 MATLAB2009_manual

    19/50

     Tutorial do MATLAB 18

    1.1.5  Análise de Dados

    Esta seção apresenta uma introdução à análise de dados usando oMATLAB. Técnicas mais poderosas estão disponíveis usando funções deálgebra linear e funções de processamento de sinais na seção 1.1.7 (polinômiose processamento de sinais).

    Convenção

    Por convenção, as diferentes variáveis em um conjunto de dados sãocolocadas em colunas, permitindo observação vertical dos dados através das

    linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis éarmazenado numa matriz de dimensão 50-por-13.

    O conjunto de dados armazenados na matriz count será usado para ilustraro uso de algumas funções

    »  count = [11 57 29143 178 101138 163 109561 420 240712 59 287 ]

    Para esse exemplo temos 5 observações para 3 variáveis. Isso pode serobtido como segue:

    »  [n,p] = size(count)

    n =5

    p =3

    Um grupo de funções (abaixo) confere a capacidade de análise de dados básica:

      max  - máximo valor  min  - mínimo valor  mean  - valor médio  median - mediana

  • 8/18/2019 MATLAB2009_manual

    20/50

     Tutorial do MATLAB 19

      std  - desvio padrão  sort - ordenação  sum  - soma dos elementos

      prod  - produto dos elementos  cumsum  - soma cumulativa dos elementos  cumprod  - Produto cumulativos dos elementos  diff   - Aproximação da derivada  corrcoef - Coeficientes de correlação  cov  - Matriz de covariância  var  - Variância

    Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna.Para arrays as funções são orientadas por colunas.

    Continuando com o exemplo anterior, as declarações abaixo

    »  mx = max(count);»  mu = mean(count);»  sigma = std(count);

    resultam em:mx =

    61 420 2407mu =

    1.0e+003 *

    0.0330 0.1754 1.0182sigma =

    21.4126 147.9503 865.7639

    Ajuste de Curvas

    Uma das alternativas possíveis no MATLAB para encontrarmos oscoeficientes de  p(x)  a partir de dados tabelados é através da função polyfit ,onde n é o grau do polinômio.

  • 8/18/2019 MATLAB2009_manual

    21/50

     Tutorial do MATLAB 20

     p x c x c x cd d  n

    1 2

    1  

    A sintaxe usada é a seguinte, onde x é a abscissa, p o valor da função para

    cada x(i) e n o grau do polinômio.

    »  c = polifit(x,p,n)

    1.1.6  Funções Matriciais

    Autovalores e Autovetores

    Se  A  é uma matriz n-por-n, os n  números    que satisfazem a equação Ax =   x, são os autovalores de A. Eles são encontrados usando

    »  eig(A)

    Se o comando for usado com dois parâmetros de saída, obteremos osautovalores em D e os autovetores em X :

    »  [X,D] = eig(A)

    Norma, Posto e Condicionamento

    As funções MATLAB que calculam a norma, posto e número decondicionamento de uma matriz são:

      cond  - número de condicionamento usando norma-2  norm  - norma-1, norma-2, norma-F e norma-   rank   - posto da matriz  rcond  - estimativa do condicionamento

  • 8/18/2019 MATLAB2009_manual

    22/50

     Tutorial do MATLAB 21

    1.1.7  Polinômios e Processamento de Sinais

    O MATLAB possui funções para manipulação polinomial e para o processamento digital de sinais. Essas funções operam primordialmente comvetores.

    Representação de Polinômios

    O MATLAB representa polinômios como vetores linha contendo oscoeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o

     polinômio característico de

     A =1 2 34 5 67 8 0

    é calculado com

    »  p = poly(A)p =

    1 -6 -72 -27

    Esta é a representação MATLAB do polinômio  s s s3 26 72 27 . As raízes dessaequação são

    »  r = roots(p)

    r = 12.1229-5.7345-0.3884

    Essas raízes são os mesmos que os autovalores da matriz  A. Você podereconstruir o polinômio original com a função poly

    »  p2 = poly(r)p2 =

    1 -6 -72 -27

  • 8/18/2019 MATLAB2009_manual

    23/50

     Tutorial do MATLAB 22

    Considere os polinômios a s s s( )  2 2 3  e b s s s( )  4 5 62 . O produtodos polinômios é a convolução dos seus coeficientes

    »  a = [1 2 3]; b = [4 5 6];»  c = conv(a,b)

    c =4 13 28 27 18

    Você pode utilizar a convolução inversa para dividir dois polinômios, eno caso do exemplo, obter b novamente.

    »  [q,r] = deconv(c,a)q =

    4 5 6r =

    0 0 0 0 0

    A lista de funções de polinômios inclui:

      poly  - polinômio característico  roots  - raízes de um polinômio  polyval - cálculo do valor numérico do polinômio  polyvalm  - cálculo do polinômio de matrizes  conv  - multiplicação (convolução)  deconv  - divisão (deconvolução)  residue  - expansão em frações parciais  polyder  - derivada do polinômio  polyfit  - ajuste polinomial de curva

    Processamento de Sinais

    Vetores são usados para armazenar sinais de dados amostrados, ouseqüências, para o processamento dos sinais. Para sistemas com múltiplasentradas, cada linha da matriz corresponde a uma amostra. O MATLAB básicocontém as funções a seguir, enquanto que o Signal Processing Toolbox contémmuitas funções adicionais.

  • 8/18/2019 MATLAB2009_manual

    24/50

     Tutorial do MATLAB 23

      abs  - magnitude complexa  angle  - ângulo de fase  conv  - convolução

      deconv  - deconvolução  fft - transformada rápida de Fourier  ifft  - transformada rápida inversa de Fourier  fftshift  - alterna quadrantes de matrizes  fft2  - FFT de duas dimensões  ifft2  - FFT inversa de duas dimensões  fftshift  - rearranja os resultados da FFT  conv2  - convolução de duas dimensões

    Filtragem de Dados

    A função,

    »  y = filter(b,a,x)

    filtra os dados do vetor  x  com o filtro descrito pelos vetores a  e b, criando o

    dado y filtrado.

    x yH(z)

     

    A estrutura do filtro é dada a seguir pela sua função de transferência detempo discreta

    )1(1

    )1(1

    )()2(1)()2()1(

    )()()(

    na

    nb

     z naa z a z nbb z bb

     z  X  z Y  z  H 

     

    A função freqz   do Signal Processing Toolbox  calcula a resposta emfreqüência de filtros digitais. Além dessa, exemplificada abaixo, esse   Toolboxcontém inúmeras funções para o projeto de filtros digitais.

    »  [h,w] = freqz(b,a,n);

    »  mag = abs(h);»  fase = angle(h);

  • 8/18/2019 MATLAB2009_manual

    25/50

     Tutorial do MATLAB 24

    »  semilogy(w,mag)»  plot(w,fase)

    1.1.8  Funções de Funções

    A classe de funções MATLAB para cálculo que não é sobre matrizesnuméricas, mais sim com funções matemáticas é aqui designada por funções defunções ( funfun) e incluem:

      Integração Numérica  Equações não lineares e Otimização  Solução de Equações Diferenciais  etc

    Para o uso das funções de funções, é usual representar as  funfun atravésde arquivos-M (M-files). Por exemplo, a função

     f x x x

    ( )( , ) , ( , ) ,

    1

    0 3 0 01

    1

    0 9 0 046

    2 2 

    foi codificada num arquivo com extensão .m, por exemplo chamado humps.m,cuja listagem é mostrada a seguir: 

    % listagem do arquivo humps.mfunction y = humps(x)y = 1/.((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

    O gráfico dessa função é obtido como segue

    »  x = -1:.01:2;»  plot(x,humps(x))

  • 8/18/2019 MATLAB2009_manual

    26/50

     Tutorial do MATLAB 25

    -1 -0.5 0 0.5 1 1.5 2-20

    0

    20

    40

    60

    80

    100

     

    Integração Numérica

    Uma função, tal como humps , pode ser integrada numericamente pelo processo chamado de quadratura que é uma funfun. Exemplo:

    »  q = quad('humps',0,1)q =

    29.8583

    O MATLAB oferece duas funções para o processo de quadratura:

      quad  - regra de Simpson adaptativa  quad8  - regra de Newton adaptativa

     Note que o primeiro argumento da função quad   é uma  string   que contém onome de uma função. Isso mostra porque essa função é chamada função defunção (é uma função que opera com outras funções). Os outros doisargumentos são os limites de integração.

    Equações Não Lineares e Funções de Otimização

  • 8/18/2019 MATLAB2009_manual

    27/50

     Tutorial do MATLAB 26

     No MATLAB básico encontramos algumas funções para a manipulaçãode equações não lineares e para otimizações. Exemplos:

      fminsearch  - mínimo de uma função multivariável  fzero  - zero de uma função de uma variável

    Continuando com o exemplo definido pela função humps.m, a localizaçãodo mínimo da função na região de 0.5 a 1 é calculada com fminsearch :

    »  xm = fminsearch('humps',0.5, 1)

    xm =0.6370

    e o seu valor no mínimo é

    »  y = humps(xm)y =

    11.2528

    A localização do zero da função que está próximo de x = 0 e de x = 1 é,

    »  xz1 = fzero('humps',0)xz1 =

    -0.1316»  xz2 = fzero('humps',1)

    xz2 =1.2995

     No Optimization Toolbox  temos inúmeras outras funções como, porexemplo,

      fgoalattain  - consecução de metas  fmincon  - minimização com restrições  fminsearch  - minimização sem restrições  fsolve  - solução de equações não lineares

      fzero  - busca de zeros  fminimax - solução do problema minimax

  • 8/18/2019 MATLAB2009_manual

    28/50

     Tutorial do MATLAB 27

      linprog  - programação linear  quadprog  - programação quadrática

    Equações Diferenciais

    Duas das funções disponíveis para a solução de equações diferenciaisordinárias são:

      ode23  - método Runge-Kutta de ordem baixa  ode45  - método Runge-Kutta de ordem média

    Considere a equação diferencial de segunda ordem conhecida comoequação de Van der Pol.

      ( ) x x x x 2 1 0 

    Esta equação pode ser escrita como um sistema de equações diferenciais de primeira ordem

      ( )

     x x x x x x

    1 1 2

    2

    2

    2 1

    1

     

    O primeiro passo para simular este sistema é criar um arquivo que contem estesistema de equações diferenciais. Chamaremos este arquivo de vdpol.m

    function xponto = vdpol(t,x)xponto(1,1) = x(1).*(1-x(2).^2)-x(2);xponto(2,1) = x(1);

    Para simular a equação diferencial no intervalo 0 20 t  , use a função ode23 .

    »  t0 = 0; tf = 20;»  x0 = [0 0.25]'; % condicoes iniciais»  [t,x] = ode23( 'vdpol', [t0 tf], x0 );»  plot(t,x)

  • 8/18/2019 MATLAB2009_manual

    29/50

     Tutorial do MATLAB 28

    0 5 10 15 20

    -3

    -2

    -1

    0

    1

    2

    3

     

    Para aqueles que trabalham com equações diferenciais recomenda-setambém o SIMULINK que é uma extensão gráfica do MATLAB para asimulação de equações diferenciais.

    1.1.9  Gráficos

    O sistema gráfico do MATLAB oferece uma variedade de técnicassofisticadas para representar e visualizar dados. São funções gráficas em 2-D e3-D.

    Gráficos 2-D

    O MATLAB fornece uma variedade de funções para a visualização dedados em duas dimensões (2-D).

    Funções Gráficas Elementares

    A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenasna escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalassão ajustadas automaticamente para acomodar os dados de entrada.

      plot  - gráfico de vetores ou de colunas de matrizes  loglog  - escala logarítmica nos dois eixos

      semilogx  - escala logarítmica no eixo x e linear em y   semilogy  - escala logarítmica no eixo y e linear em x 

  • 8/18/2019 MATLAB2009_manual

    30/50

     Tutorial do MATLAB 29

      title  - adiciona um título ao gráfico  xlabel  - adiciona um nome ao eixo x   ylabel  - adiciona um nome ao eixo y 

      text  - mostra um texto na posição especificada  gtext  - coloca o texto no gráfico usando o mouse   grid  - coloca linhas de grid  

    Criando um Gráfico

    Se  y é um vetor, plot(y) produz um gráfico linear dos elementos de  y emfunção do indexador de  y. Se você especificar dois vetores como argumentos,plot(x,y) produz um gráfico de y versus x. Você pode também especificar váriosconjuntos de dados e definir o estilo da linha e sua cor para cada conjunto dedados, tudo isso num mesmo comando:

    »  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+)')

  • 8/18/2019 MATLAB2009_manual

    31/50

     Tutorial do MATLAB 30

    -1 -0.5 0 0.5 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    x=sin(t)

    y=sin(t+)

    Defasagem

     

    Estilos de Linhas, Marcadores e Cores

    Tal como se mostrou no exemplo anterior, você pode passar um caracterecomo um argumento à função plot   para especificar um dos vários estilos delinha, símbolos e cores. Na declaração plot(X,Y,S), S  é uma  string  de 1, 2 ou 3caracteres (delimitados por apóstrofes) com as funções definidas pela tabela aseguir. Se você não especificar uma cor, ele usa as cores da tabelaautomaticamente.

  • 8/18/2019 MATLAB2009_manual

    32/50

     Tutorial do MATLAB 31

    Símbolo Cor Símbolo Linha

    y

    m

    c

    r

    g

    b

    w

    amarela

    magenta

    ciano

    vermelha

    verde

    azul

     branca

     preta

    .

    o

    x

    +

    *

    -

    :

    -.

    --

    s

    d

    v

    ^

    <

    >

    P

     ponto

    círculo

    marca x

    marca +

    marca *

    sólida

     pontilhada

    traço-ponto

    tracejada

    quadradodiamante

    triângulo (p/ baixo)

    triângulo (p/ cima)

    triângulo (p/esquerda)

    triângulo (p/diereita)

     pentragrama

    hexagrama

    Adicionando Linhas num Gráfico Existente

    Você pode adicionar outras curvas em um gráfico que já foi construídousando o comando hold . Quando você seleciona hold on , o MATLAB não

    remove as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráficoatual.

    O que ele pode fazer é mudar a escala dos eixos automaticamente se os novosdados não se acomodarem dentro da escala anterior. Exemplo:

    »  plot(x)»  hold on»  plot(y1,'--')»  plot(y2,'-.')»  hold off

  • 8/18/2019 MATLAB2009_manual

    33/50

     Tutorial do MATLAB 32

    Resulta,

    0 50 100 150 200 250-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

     

    Dados Imaginários e Complexos

    Quando os argumentos da função plot   são complexos, isto é, eles têm parte imaginária diferente de zero, a parte imaginária é ignorada exceto quandoplot   é usado com um único argumento. Nesta situação, o comando é umcomando gráfico resumido da parte real versus a parte imaginária. Portanto,plot(z),  quando  z   é um vetor ou matriz complexa, é equivalente à,plot(real(z),imag(z)). Para ilustrar isso, o exemplo a seguir usa a distribuição dosautovalores de uma matriz 20-por-20 randômica:

    »  plot(eig(randn(20,20)),’x’) 

  • 8/18/2019 MATLAB2009_manual

    34/50

     Tutorial do MATLAB 33

    -4 -2 0 2 4 6-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

    Distribuição de Autovalores

     

    Exibindo Gráficos de Matrizes

    A função plot  pode ter um único argumento, como plot(Y). Ela desenhauma curva para cada coluna de Y . O eixo x é formado pelo índice de cada linha.Se X  e Y  são matrizes, plot(X,Y) exibe o gráfico das colunas de X   versus colunasde Y .

    »  X = 0:pi/50:2*pi;»  Y = sin(X); Z = cos(X); W = log(X);»  A = [Y' Z' W'];»  plot(A)

    Resulta,

  • 8/18/2019 MATLAB2009_manual

    35/50

     Tutorial do MATLAB 34

    0 20 40 60 80 100 120-3

    -2.5

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

     

    Importando Dados

    Você pode importar e exibir o gráfico de dados gerados fora doMATLAB. Suponha você tenha um arquivo chamado dados.dat  contentovalores de duas funções e da variável independente.

    dados.dat

    2.3 1.0 1.03.1 1.9 2.04.5 2.2 3.05.6 2.6 4.04.8 3.5 5.04.7 4.7 6.04.4 5.3 7.04.0 6.0 8.04.2 7.1 9.0

    O comando load dados.dat  produz uma matriz chamada dados, 9-por-3. Aseguir, mostra-se como renomear cada uma das variáveis e como exibir ográfico de cada função separadamente.

    »  load dados.dat»  F1 = dados(:,1);»  F2 = dados(:,2);

    »  X = dados(:,3);»  subplot(211), plot(X,F1)

  • 8/18/2019 MATLAB2009_manual

    36/50

     Tutorial do MATLAB 35

    »  subplot(212), plot(X,F2)

    Resulta,

    0 2 4 6 8 102

    3

    4

    5

    6

    0 2 4 6 8 100

    2

    4

    6

    8

     

    Funções Gráficas Especializadas em 2-D

    O MATLAB inclui uma variedade de funções especializadas, conformedescrito resumidamente a seguir.

      bar  - gráfico de barras  compass - gráfico de ângulos com setas  errorbar - gráfico de barras de erros

      feather  - gráfico de ângulos  fplot  - calcula e exibe o gráfico de uma função  hist - cria um histograma  polar - gráfico em coordenadas polares  quiver  - cria um gráfico de um gradiente  rose  - histograma em ângulo  stairs  - gráfico similar ao de barras sem linhas internas  fill  - desenha um polígono e preenche o interior

  • 8/18/2019 MATLAB2009_manual

    37/50

     Tutorial do MATLAB 36

    Gráfico de Funções Matemáticas

    Você pode exibir o gráfico de uma função,  y f x   ( ). A solução pela força

     bruta é calcular a função para algumas centenas de pontos no intervalo deinteresse. Por exemplo, a função a seguir oscila com freqüência tendendo parainfinito quando  x   0 5, .

    »  x = (0:1/2000:1)';»  plot(x,cos(tan(pi*x)))

    Resulta,

    . . . .- 1

    - 0 . 8

    - 0 . 6

    - 0 . 4

    - 0 . 2

    0

    0 . 2

    0 . 4

    0 . 6

    0 . 8

    1  y = c o s ( t a n ( p i* x ) )

     

     No exemplo, a função é exibida no intervalo [0,1]. Neste caso, a funçãofplot  é mais efetiva para obtermos a representação gráfica da função, pois elaescolhe automaticamente uma quantidade maior de pontos na faixa que énecessário maior resolução gráfica. Para usar a função fplot , primeiro crie umarquivo que conterá a função a ser exibida por meio de um gráfico, por exemplocom o nome fofx.m 

  • 8/18/2019 MATLAB2009_manual

    38/50

     Tutorial do MATLAB 37

    function y = fofx(x)y = cos(tan(pi*x));

    Agora basta passar o nome da função como argumento de fplot. 

    »  fplot('fofx',[0 1], 25,20,10)

    Resulta,

    0 0.2 0.4 0.6 0.8 1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1y = cos(tan(pi*x))

    Gráficos 3-D

    O MATLAB oferece uma variedade de funções para a visualização dedados em 3-D, conforme sumarizado pelas funções a seguir. Contudo, nãofaremos um detalhamento, visto que o assunto é muito longo e poucointeressante para os nossos objetivos.

      plot3 - desenha linhas e pontos em 3-D.  contour, contour3 - gráficos de contornos

      pcolor - desenha uma matriz retangular de células cujas coressão determinadas pelos elementos da matriz.

  • 8/18/2019 MATLAB2009_manual

    39/50

     Tutorial do MATLAB 38

      image  - mostra uma matriz como uma imagem mapeando oselementos da matriz para o mapa de cores atuais.

      mesh, meshc, meshz  - cria uma perspectiva em 3-D dos

    elementos da matriz.  fill3 - cria um polígono 3-D e preenche com uma cor sólida ou

    interpola cores.  zlabel - cria um label   para o eixo z.  clabel - adiciona um label  ao gráfico de contorno.  view - determina o ponto de visualização atual.  viewmtx - calcula uma transformação 4x4.

    1.1.10  Controles de Fluxo

    O MATLAB possui declarações para controle de fluxo tal como aquelesencontrados na maioria das linguagens de computador. O controle de fluxotorna o MATLAB mais do que uma calculadora científica, permitindo que sejausado como uma linguagem de programação de alto nível completa.

    FOR

    O MATLAB possui a sua versão própria dos loops DO ou FOR. Com issoé possível repetir um grupo de declarações por um número predeterminado devezes. Por exemplo,

    »  for i = 1:n, x(i) = 0, end

    impõe o valor "0" para todos os primeiros n elementos de x. Se n é menor que"1", a construção ainda é permitida, mas as declarações internas ao loop não são

    executadas. Se  x  não existe ou tem menos elementos que  x, então espaçosadicionais são alocados automaticamente.

    Você pode criar loops  dentro de loops  e pode fazer as declaraçõesdiretamente no  prompt   do MATLAB, embora o uso de um M-fi le   sejarecomendado nestes casos.

    »  for i = 1:1:m

    »  for j = 1:1:n»  A(i,j) = 1/(i+j-1);

  • 8/18/2019 MATLAB2009_manual

    40/50

     Tutorial do MATLAB 39

    »  end»  end»  A

    A expressão do for  é usualmente do tipo m : i : n, onde m é o valor inicial,n o final e i o incremento, sendo que esse pode ser negativo.

    WHILE

    Tal como o for , a declaração while  também é para realizar um grupo dedeclarações um certo número de vezes. A diferença básica é que no while , ocontrole do loop é feito por uma condição lógica. Para ilustrar, vamos resolverum problema: Qual é o primeiro inteiro n  para o qual n!  (fatorial de n) é umnúmero de 100 dígitos ?

    »  n = 1;

    »  while prod(1:n) < 1.e100, n = n+1; end»  n

    A função prod  realiza os produtos dos elementos do argumento. Logo, prod(1:n) é o fatorial de n.

    Declarações IF e BREAK

    Os exemplos a seguir ilustram a utilização da declaração i f . O primeiro

    exemplo mostra como um cálculo pode ser dividido em três casos dependendodo sinal e da paridade de n.

    if n < 0 A = -1;

    elseif rem(n,2) == 0 A = 0

    else A = 1

    end

  • 8/18/2019 MATLAB2009_manual

    41/50

     Tutorial do MATLAB 40

    O segundo exemplo envolve um problema não resolvido da teoria dos números:

    "Pegue um número 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 iguala um. O problema é saber se existe algum inteiro para o qual o processo nunca

    termina".

    Este programa MATLAB ilustra as declarações while  e i f . Também é mostradoo uso da função input  que interrompe a execução para a entrada de dados e dadeclaração break  que permite interromper um loop.

    % Problema classico "3n+1" da teoria dos números

    while 1n = input('Entre com n [negativo aborta] = ');if n 1if rem(n,2) == 0

    n = n/2else

    n = 3*n+1

    endendend

    1.1.11  Arquivos M

    A maneira mais simples de se usar o MATLAB é no modo de comando.

    Quando você entra com uma linha de comando, ele processa e imediatamentemostra o resultado. O MATLAB também pode executar uma seqüência decomandos que está armazenada num arquivo. Estes dois modos formam umambiente interpretativo. Os arquivos que contém declarações MATLAB sãochamados M-files porque usam a extensão “.m”. Por exemplo, o arquivobessel.m contém declarações MATLAB para o cálculo de funções Bessel.

    Um M-file consiste de uma seqüência de declarações MATLAB normais, podendo incluir referencias a outros M-files. Um M-file pode chamar ele

     próprio de forma recursiva. Você pode criar um M-file usando um editor detexto tal como o  Notepad  do Windows, ou outro qualquer. Dois tipos de M-

  • 8/18/2019 MATLAB2009_manual

    42/50

     Tutorial do MATLAB 41

    files podem ser usadas: lotes ( scripts) e funções ( functions). Arquivos  scripts automatizam uma seqüência de comandos. Arquivos de função permitem criarnovas funções às existentes. Ambos,  scripts  e funções são arquivos texto tipo

    ASCII.

    Arquivos Scripts  

    O exemplo a seguir ilustra como calcular os primeiros 16 números deFibonacci usando um arquivo  script . Suponha que o nome do arquivo sejafibno.m. Digitando fibno (sem a extensão) no  prompt  do MATLAB, faz com oscomandos contidos no arquivo sejam executados. Note que depois da execuçãodo programa as variáveis  f  e i permanecem na área de trabalho (workspace) do

    MATLAB. Verifique isso com who . Isso acontece porque os  scripts  operamglobalmente com dados no workspace. Os demos  fornecidos junto comoMATLAB são bons exemplos de como usar  scripts  para realizar tarefas maiscomplexas. Para chamar os demos digite demo no prompt  do MATLAB.

    % M-file (script) para calcular números de Fibonacci

    f = [ 1 1]; i = 1;

    while f(i) + f(i+1) < 1000f(i+2) = f(i) + f(i+1);i = i + 1;

    end

    plot(f)

    Arquivos de Funções

    Um M-file que contém a palavra function no início da primeira linha é umarquivo de função. Uma função difere de um  script  no fato de que argumentos

     podem ser passados; variáveis definidas e manipuladas no arquivo são locais àfunção e não operam globalmente no workspace. A função listada à seguir temo nome media1.m.

  • 8/18/2019 MATLAB2009_manual

    43/50

     Tutorial do MATLAB 42

    function y = media1(x)% calculo da media% soma / m

    % inico do programa[m,n] = size(x);if m == 1

    m = n;endy = sum(x) / m;

    Por exemplo, se z  é um vetor de inteiros de 1 à 99, sua média pode ser calculadacomo segue:

    »  z = 1:99;»  media1(z)

    ans =50

    A seguir, descreve-se alguns detalhes de mean.m:

      A primeira linha declara o nome da função, os argumentos de

    entrada e os de saída. Sem esta linha, o arquivo é um  script  aoinvés de função;

      O símbolo % indica que o resto da linha é um comentário edeve ser ignorado;

      As primeiras linhas documentam um M-file e são mostradasquando pedimos help media1;

      As variáveis m, n  e  y  são locais à função e não existem noworkspace depois que do término da função. (Caso a variável

     já existisse antes da chamada de media1, ela continuariaexistindo depois e inalterada);

       Não foi necessário colocar os inteiros de 1 a 99 numa variávelchamada  x. De fato, nós usamos media1 com uma variávelchamada z. O vetor  z  foi passado ou copiado dentro da funçãoonde ela tornou-se uma variável local chamada x.

    Você pode criar uma função um pouco mais complexa que media1,chamada stat, que também calcula o desvio padrão. Neste exemplo ilustramos ouso de múltiplos argumentos de saída.

  • 8/18/2019 MATLAB2009_manual

    44/50

     Tutorial do MATLAB 43

    function [mean,stdev] = stat(x)

    [m,n] = size(x);

    if m == 1m = n;

    endmean = sum(x) / m;stdev = sqrt(sum(x.^2)/m - mean.^2);

    Uma função que calcula o posto de uma matriz usa múltiplos argumentosde entrada: No caso geral teríamos múltiplos argumentos de entrada e de saída.

    function r = rank(x,tol)% rank (posto em Portugues) da matrix

    s = svd(x);if (nargin == 1)

    tol = max(size(x)) * s(1) * eps;endr = sum(s > tol);

    Este exemplo também mostra o uso da variável permanente nargin  paraencontrar o número de argumentos de entrada. A variável nargout, embora nãousada neste exemplo, contém o número de argumentos de saída.

    Criando um Help  para Seus Arquivos Pessoais

    você pode criar um help online para os seus M-files pessoais entrando otexto em uma ou mais linhas de comentário, começando sempre pela segundalinha do arquivo. Por exemplo, o arquivo da função angle,

    function p = angle(h)

    % ANGLE Phase angle.% ANGLE(H) returns the phase angles, in radians, of a% matrix with complex elements.%% See also ABS, UNWRAP.

    p = atan2(imag(h), real(h));

    têm 5 linhas contíguas de comentário a partir da segunda linha. Quandodigitamos help angle, todo esse bloco é mostrado. O mecanismo de help ignora

  • 8/18/2019 MATLAB2009_manual

    45/50

     Tutorial do MATLAB 44

    linhas de comentário que aparecem mais a frente, depois de uma declaração oumesmo uma linha em branco.

    Informações Úteis

    Quando você chama uma função pela primeira vez, o MATLAB compilaa função e a coloca na memória. Ela estará então disponível para os usossubseqüentes sem a necessidade de ser compilada. Permanecerá na memória atéo final da seção ou até que você fique com pouca memória, acarretando na suaeliminação automática.

    O comando what  mostra uma listagem dos M-files no diretório atual do

    disco. O comando type  lista os M-files.

    De uma maneira geral, quando você digita um nome de algo noMATLAB, por exemplo, whoopie , o interpretador do MATLAB executa osseguintes passos:

    1.  Procura por whoopie como variável;2.  Verifica se whoopie é uma função interna;3.  Procura um o arquivo whoopie.m no diretório atual;4.  Procura um o arquivo whoopie.m  nos diretórios especificados

     pelo path do MATLAB.

    INPUT, KEYBOARD, PAUSE

    A função input  permite obter dados do usuário. por exemplo,

    n = input('Entre com o valor de n = ')

    interrompe a execução, mostra a frase na tela, espera, e então atribui o valor ouexpressão digitada para a variável n.

  • 8/18/2019 MATLAB2009_manual

    46/50

     Tutorial do MATLAB 45

    Similar à input   é a função keyboard . Esta função torna o teclado docomputador um  script . Quando colocada dentro de M-files, torna ágil adepuração e permite a modificação de variáveis durante a execução.

    O comando pause   interrompe a execução até que o usuário pressionauma tecla qualquer. pause(n) interrompe por n segundos antes de continuar.

    Variáveis Globais

    Cada função MATLAB possui suas próprias variáveis locais que sãoseparadas daquelas de outras funções e daquelas que estão no workspace.Contudo, se você declarar uma variável como global, todas as funções e oworkspace  vão enxergar a mesma variável. Para diferenciar das demaisvariáveis, costuma-se identificar uma variável global declarando-a com umnome longo e em letras maiúsculas, embora isso não seja uma imposição.

    Suponha que você queira estudar o comportamento dos coeficientes   e    no problema do modelo predador-vítima de Latka-Volterra.

     y y y y

     y y y y

    1 1 2 1

    2 2 2 1

     

    Crie o arquivo lotka.m:

    function yp = lotka(t,y)% modelo Votka-Volteraglobal ALFA BETAyp = [y(1) - ALFA*y(1)*y(2); -y(2) + BETA*y(1)*y(2)];

    Interativamente, entre como as seguintes declarações:

    »  global ALFA BETA»  ALFA = 0.01;»  BETA = 0.02;»  [t,y] = ode23( 'lotka', [0 10], [1; 1] );»  plot(t,y)

  • 8/18/2019 MATLAB2009_manual

    47/50

     Tutorial do MATLAB 46

    Uma vez que  ALFA e BETA  são globais você pode alterá-las interativamente enovas soluções podem ser obtidas sem ter que editar nenhum arquivo e sem

     passar os valores como argumentos.

    Variáveis Alfanuméricas

    Variáveis do tipo texto são introduzidas no MATLAB envolvendo o textocom quotas simples (apóstrofos). Por exemplo,

    »  s = 'Ola's =

    Ola

    O texto é armazenado num vetor, um caracter por elemento. Desejandoconcatenar textos, use colchetes:

    »  s = [s, ' Pessoal']s =

    Ola Pessoal

    Valores numéricos são convertidos em variáveis do tipo texto viasprintf , num2str   e int2str . Exemplo,

    »  c = 23;»  title(['A temperatura é ',num2str(c),' graus C'])

    A Função EVAL

    A função eval   é usada com variáveis do tipo texto para implementarrecursos de macros de texto. A função eval(t)  força que o texto contido navariável t   seja "resolvido". O exemplo a seguir mostra como usar o comandoload   para carregar 10 arquivos seqüencialmente numerados: dados1.mat,dados2.mat, ...

    »  fname = ‘dados’;»  for i = 1:10»  eval( [ 'load ', fname, int2str(i) ] )»  end

  • 8/18/2019 MATLAB2009_manual

    48/50

     Tutorial do MATLAB 47

    A função eval   é especialmente útil na passagem de argumentos defunções cujo parâmetro é um nome de outra função. Um exemplo típico é ofunção fplot   que passa como argumento o nome da função a ser exibida,

    exemplo:

    »  fplot( 'sin', [0 10] )

    1.1.12  Arquivos de Disco

    Os comandos load  e save  recuperam e armazenam dados do workspace 

    no disco.

    Manipulação de Arquivos de Disco

    Os comandos dir , type , delete  e cd  servem à manipulação de arquivos.Para a maioria desses comandos devemos especificar o  path, wildcards  e odrive de destino como normalmente se faz no DOS.

    O comando type  difere do comando type usual de uma forma importante.

    Se nenhuma extensão é especificada, o MATLAB considera a extensão “.m” como default . Portanto, esse comando é normalmente usado para obtermos umarápida listagem de um M-file na teta do computador.

    O comando diary  cria um diário (log ) da sua seção MATLAB na formade um arquivo ASCII. Todos os comandos e resultados, exceto gráficos, sãoautomaticamente acrescentados ao arquivo de diário.

    Transferência de Dados

    Você pode introduzir dados de outros programas dentro do MATLAB.Similarmente, você pode exportar dados do MATLAB para outros programas.Também é possível usar o formato que o MATLAB usa para armazenar dados:MAT-files.

    Importando Dados

    O melhor método de importar dados depende de quantos dados existem,qual o seu formato, etc. A seguir, listamos algumas opções:

  • 8/18/2019 MATLAB2009_manual

    49/50

     Tutorial do MATLAB 48

      Entre com os dados como uma lista explícita dos elementos. Seo número de elementos for pequeno (10-15 elementos) é mais

    simples digitar os dados explicitamente usando colchetes.

      Crie um M-file e escreva os dados de forma explícita usandoum editor de texto.

      Carregue os dados de um arquivo ASCII.

      Escreva um programa em C ou FORTRAN para converter seusdados no formato dos MAT-files e então use o comando load .

      Importe os dados do Excel.

    Exportando dados do MATLAB

    Para exportar dados também existem várias opções, das quais algumassão listadas a seguir:

      Para matrizes pequenas use o comando diary   para criar umaarquivo de diário e então liste as variáveis neste arquivo. Você

     pode, mais tarde, usar um editor de texto para manipular osdados.

      Salve os dados num formato ASCII usando o comando save  com a opção -ascii. Por exemplo,

    »  A = rand(4,3);»  save temp.dat A -ascii

    cria um arquivo ASCII chamado temp.dat 

      Salve os dados como MAT-files usando o comando save   eentão escreva um programa em C ou FORTRAN parareformatar os dados conforme necessário para a aplicação.

  • 8/18/2019 MATLAB2009_manual

    50/50

     Tutorial do MATLAB 49

      Exporte os dados para o Execl.

    1.1.13  O Depurador do Matlab

    Embora o MATLAB seja uma linguagem menos complexa que outraslinguagens de programação, ele tem sua sintaxe própria e você pode precisarcorrigir alguns erros. O MATLAB encontra erros de sintaxe durante a fase decompilação e esses erros, em geral, são simples de corrigir. O MATLABtambém encontra erros na fase de execução do programa; esses erros tendem aser mais difíceis de solucionar por causa do workspace  local às funções ser

     perdido quando um erro interrompe a execução. Quando isto ocorre, retornamosao workspace base do MATLAB. Se você usou ponto-e-vírgula para suprimir osresultados intermediários da tela, não terá como saber onde o erro ocorreu.

    Para mostrar os resultados intermediários, você pode usar um dosmétodos a seguir:

      Remova os ponto-e-vírgula de interesse;  Use a declaração keyboard  para permitir que o workspace seja

    examinado no ponto da declaração;  Torne a primeira linha da função uma linha de comentário, de

    tal forma que a função possa ser executada como um  script ,fazendo com que os resultados intermediários sejam acessíveisno workspace base do MATLAB;

      Use o depurador do MATLAB.