Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução ao MATLAB 2 1. Apresentação...................................................................................................5 1.1. Solução de Problemas ...................................................................................... 5 1.1.1. Enunciado do Problema ............................................................................ 5 1.1.3. Exemplo Manual ......................................................................................... 6 1.1.4. Solução MATLAB ....................................................................................... 7 1.1.5. Testando ...................................................................................................... 7 1.2. Apresentação...................................................................................................... 8 1.2.1. Ambiente de Trabalho.............................................................................. 10 1.2.2. Editor de Linhas de Comando ................................................................ 11 2. Introdução......................................................................................................13 2.1. Introdução a Matrizes Simples....................................................................... 13 2.2. Elementos de Matrizes.................................................................................... 14 2.3. Decaração de Variáveis .................................................................................. 15 2.4. Informações sobre a Área de Trabalho ........................................................ 16 2.5. Números e Expressões Aritméticas .............................................................. 17 2.6. Números e Matrizes Complexas ................................................................... 18 2.7. Formatação de Saída ...................................................................................... 19 2.8. Utilização do Help (Ajuda) .......................................................................... 20 2.9. Funções ............................................................................................................. 20 3. Manipulação de Matrizes e Vetores......................................................................21 3.1 . Operações com Matrizes ......................................................................... 21 3.1.2 Adição e Subtração ............................................................................. 22 3.1.3 Multiplicação ......................................................................................... 22 3.1.4 Divisão ................................................................................................... 23 3.1.5 Potenciação .......................................................................................... 23 3.2 Operações Elemento a Elemento (Conjuntos) ................................... 23 3.2.1 Adição e Subtração ............................................................................. 23 3.2.2 Multiplicação e Divisão ....................................................................... 24 3.2.3 Potenciação .......................................................................................... 24 3.3. Matrizes Elementares...................................................................................... 24 3.3.1 Geração de Vetores ............................................................................ 24 3.3.2 . Matriz Identidade ............................................................................... 25 3.3.3 Matriz Composta por Elementos Unitários ...................................... 25 3.3.4 Matriz Nula ............................................................................................ 25 3.3.5 Matriz Aleatória .................................................................................... 26 3.4 Elementos de Matrizes ............................................................................... 26 3.5 Manipulação de Matrizes............................................................................ 27 3.5.1 Matriz Diagonal ou Diagonal de uma Matriz ......................................... 27 3.5.2 Matrizes Triangulares.......................................................................... 28 3.5.3 Redimensionamento de Matrizes...................................................... 28 3.5.4 Rotação dos Elementos da Matriz .................................................... 29 4. Funções..........................................................................................................30 4.1 Funções Escalares ...................................................................................... 30 4.2. Funções Vetoriais ............................................................................................ 30 Sumário Introdução ao MATLAB 3 4.3 Funções Matriciais....................................................................................... 31 5. Polinômios......................................................................................................33 6. Gráficos..........................................................................................................35 6.1 – Gráficos X-Y ................................................................................................... 35 6.1.1 Acessórios para os Gráficos .............................................................. 37 6.1.2 Números Complexos........................................................................... 38 6.2 Gráficos Polares ................................................................................................ 39 6.3. Gráficos 3D ....................................................................................................... 39 7. Programação..................................................................................................43 7.1 Arquivo.m ........................................................................................................... 43 7.2 Operadores Lógicos e Relacionais ........................................................... 44 7.2.1 Operadores Relacionais ..................................................................... 44 7.2.2 Operadores Lógicos ............................................................................ 44 7.3. Comandos For – While - If............................................................................. 46 7.3.1. Comando If ........................................................................................... 46 7.3.2. Ciclo For ................................................................................................ 47 7.3.3 Ciclo While ............................................................................................ 48 7.4. Declarando Funções ....................................................................................... 48 8. Sistemas de Equações Lineares....................................................................56 8.1. Interpretação gráfica ................................................................................... 56 8.2. Solução usando operação com matrizes................................................. 58 8.3. Divisão de matrizes ..................................................................................... 58 9. Cáculo............................................................................................................61 9.1. Zeros de Funções ........................................................................................ 61 9.2. Minimização de Funções........................................................................... 62 9.3. Limites ........................................................................................................... 62 9.4. Limites à esquerda e à direita....................................................................62 10. Integração Numérica....................................................................................64 10.1. Integrais..................................................................................................... 64 10.2. Integrais Definidas ................................................................................... 64 10.3. Integrais Definidas (outros métodos).................................................... 65 10.2.1 Regra Trapezoidal ............................................................................... 65 10.2.2 Regra de Simpson ............................................................................... 66 10.2.3 Regra de Newton-Cotes ..................................................................... 67 11. Diferenciação Numérica...............................................................................70 11.1. Derivação por expressões de diferenças............................................. 70 11.2. Comando diff ............................................................................................ 71 11.3. Derivadas Superiores.............................................................................. 72 11.4. Derivadas Trigonométricas: ................................................................... 72 12. Ajuste de Curvas..........................................................................................73 12.1. Ajuste de Curvas............................................................................................ 73 12.2. Interpolação Unidimensional.................................................................. 74 13. Análise Polinomial........................................................................................78 13.1. Avaliação do polinômio ........................................................................... 78 13.2. Comando polyval ..................................................................................... 78 13.3. Operações Aritméticas........................................................................... 79 13.3.1 Soma e subtração ................................................................................... 79 13.3.2. Multiplicação............................................................................................ 80 Introdução ao MATLAB 4 13.3.3. Divisão...................................................................................................... 80 13.4. Raízes de polinômios .............................................................................. 81 15. Transformadas.............................................................................................84 15.1. Funções Degrau e Impulso .................................................................... 84 15.3. Transformada de Fourier ........................................................................ 85 15.4. Transformada Z........................................................................................ 85 16. SIMULINK....................................................................................................86 16.1. Introdução ....................................................................................................... 88 16.1.1. Diagrama de Blocos............................................................................... 88 16.1.2. Símbolos .................................................................................................. 90 16.2. Conhecendo o SIMULINK ............................................................................ 90 16.2.1. Acessando o SIMULINK........................................................................ 90 16.2.2. Construindo um Modelo Simples ......................................................... 91 16.3. Construindo Modelos no SIMULINK......................................................... 104 16.3.1 - Elementos de Modelos....................................................................... 104 16.3.2. Manipulando Blocos............................................................................. 105 16.3.3. Fontes..................................................................................................... 105 16.3.3.1. Fontes Comuns ............................................................................. 107 16.3.4. Importando do MATLAB (From Workspace Block)......................... 108 16.3.4.1. Importando Arquivos Gerados no MATLAB (From File Input Block) ....... 110 16.3.5. Dispositivos de Saída .......................................................................... 110 16.3.6. Osciloscópio (Scope) ........................................................................... 110 16.3.6.1. Ferramenta Zoom na tela do Osciloscópio ............................... 112 16.3.6.2. Propriedades do Osciloscópio .................................................... 113 16.3.7. Gráfico XY ............................................................................................ 114 16.3.8. Configurando a Simulação.................................................................. 115 16.3.8.1. Solver Page.................................................................................... 116 16.3.9. Executando uma Simulação ............................................................... 117 16.4. Exemplos Práticos ....................................................................................... 118 16.4.1. Visão geral do Simulink ....................................................................... 118 16.4.2. Simulando um salto de bungee jumping........................................... 123 Apêndice A. Lista de Exercícios.......................................................................126 Referências Bibliográficas................................................................................127 Introdução ao MATLAB 5 1. Apresentação 1.1. Solução de Problemas A solução de problemas é parte essencial não somente dos cursos de engenharia, mas também dos cursos de Matemática, Física, Química e Ciência da Computação. Logo, é importante uma base sólida em solução de problemas. Também é de grande auxílio um embasamento suficiente para trabalhar em todas estas áreas, para que não tenhamos que aprender uma técnica para problemas de matemática, e uma técnica diferente para problemas de física, e assim por diante. A técnica de solução de problemas que apresentamos trabalhos para problemas de engenharia e pode ser seguida de perto para resolver problemas em outras áreas; mas, supõe-se que estamos usando o MATLAB para ajudar a resolvê-los. O processo ou metodologia para resolução de problemas que usaremos ao longo do texto possui cinco passos: 1. Enunciar o problema claramente. 2. Descrever a informação de entrada e saída. 3. Trabalhar o problema manualmente. 4. Desenvolver uma solução MATLAB. 5. Testar a solução usando uma variedade de grupo de dados. Descreveremos cada um dos passos usando o exemplo do cálculo da distância entre dois pontos em um plano. 1.1.1. Enunciado do Problema O primeiro passo é enunciar o problema claramente. É extremamente importante que o enunciado seja conciso para evitar desentendimentos. Para este exemplo, o enunciado do problema é: Calcule a distância em linha reta entre dois pontos num plano. 1.1.2. Descrição Entrada/Saída O segundo passo é descrever cuidadosamente a informação que é dada para resolver o problema e então identificar os valores a serem calculados. Estes itens representam a entrada e a saída para o problema e agregadamente podem ser chamados entrada/saída, ou I/0. Para muitos problemas, é útil usar um diagrama que mostra a entrada e a saída. Algumas vezes, este tipo dediagrama é chamado de “caixa preta” porque não estamos definindo para este ponto todos os passos para determinar a saída, mas estamos mostrando a informação que é usada para calcular a saída. Para este exemplo, poderíamos usar o diagrama na figura 1.1. Solução de Problemas Introdução ao MATLAB 6 1.1.3. Exemplo Manual O terceiro passo é trabalhar o problema manualmente ou com uma calculadora, usando um pequeno grupo de dados. É um passo muito importante e não deve ser ignorado por mais simples que seja o problema. É um item no qual você trabalha os detalhes da solução do problema. Se você não pode pegar um simples grupo de números e calcular a saída (seja manualmente ou com uma calculadora), então você não está pronto para executar o próximo passo; você deve reler o problema e talvez consultar material de referência. Uma vez que pode trabalhar o problema de um simples grupo de dados, então você está pronto para desenvolver um algoritmo ou um esboço passo a passo da solução. Este esboço é convertido para os comandos MATLAB para que possamos usar o computador para fazer todos os cálculos. O exemplo manual para este exemplo é mostrado a seguir: Suponha que os pontos p1 e p2 tenham as seguintes coordenadas: p1 = (1,5), p2 = (4,7) Queremos calcular a distância entre dois pontos, que é a hipotenusa de um triângulo retângulo, conforme mostra a figura 1.2. Usando o Teorema de Pitágoras, podemos calcular a distância d com a seguinte equação: 21 ssd += ( ) ( )22 5714 −+−=d 13=d 61,3=d Introdução ao MATLAB 7 1.1.4. Solução MATLAB No próximo capítulo, falaremos sobre os comandos MATLAB. Contudo, da solução você pode ver que os comandos são muito similares às equações que foram usadas no exemplo manual. O sinal de percentagem é usado para anteceder comentários que explicam os comandos MATLAB. 1.1.5. Testando O passo final em nosso processo de solução de problemas é testar a solução. Primeiramente, devemos testar a solução com os dados do exemplo manual, já que calculamos a solução. Quando os comandos MATLAB na solução são executados, o computador mostra a seguinte saída: d = 3.6056 Esta saída coincide com o valor que calculamos no exemplo manual. Se a solução MATLAB não coincidir com o exemplo manual, devemos rever ambas soluções a fim de encontrar o erro. Uma vez que a solução trabalha com o exemplo manual, devemos também testá-la com vários grupos de dados para certificar que a solução é válida para outras séries de dados. % % Este programa calcula e imprime % distância, em linha reta, entre dois pontos. p1 = [1,5]; % ponto 1 inicial p2 = [4,7]; % ponto2 inicial d = sqrt (sum ((p2-p1).^2)) % calcular distância Introdução ao MATLAB 8 1.2. Apresentação O MATLAB® pode ser usado como uma linguagem de programação ou como uma ferramenta de cálculo interativa. Em ambos os casos, o ambiente MATLAB permite a realização de cálculos, visualização de resultados e desenvolvimento de algoritmos usando uma sintaxe muito próxima da notação matemática usual. O nome MATLAB vem de MATrix LABoratory e representa bem o seu modo de funcionamento. Todas as variáveis são definidas de forma matricial, o que faz com que este ambiente seja ideal para resolver problemas de cálculo envolvendo matrizes e vetores. Um arquivo de programa MATLAB recebe a extensão .m e, por isso, também é chamado de m-file ou arquivo .m. Ele pode ser criado e/ou modificado no editor próprio do MATLAB - MATLAB Editor/Debugger - que possui características que auxiliam bastante na edição de programas como auto-colorização de palavras de acordo com a sintaxe e interação com o ambiente de cálculo do MATLAB. Existem também os arquivos .mat que são arquivos binários que contém as variáveis da Workspace. Estes arquivos são gerados indo em File => Save Workspace => nomedoarquivo.mat. É importante diferenciar, portanto, arquivos .m dos arquivos .mat. Os arquivos .m contém uma série de comandos que, ao serem chamados no Workspace, são executados. Já os arquivos .mat contém somente as variáveis e os seus valores armazenados. Uma das grandes virtudes do MATLAB é que todas as suas funções são escritas em m-files, sendo que algumas delas podem ser modificadas e várias outras criadas. Este fato possibilitou a criação de diversos conjuntos de funções específicas para determinadas áreas, como controle, análise de sinais, finanças, entre outras. Estes conjuntos de funções, ou de m-files, são chamados de toolbox. Toolboxes direcionados para diversas áreas são distribuídos pela The MathWorks Inc. – empresa que desenvolve o software MATLAB (http://www.mathworks.com) - e inúmeros outros são desenvolvidos em todo o mundo, com e sem reconhecimento da MathWorks, e podem geralmente ser encontrados na internet. Um dos toolboxes desenvolvidos pela MathWorks é chamado Simulink. Ele é uma ferramenta interativa para desenvolvimento, simulação e análise de sistemas dinâmicos através da criação de modelos baseados em diagramas de blocos. Conjuntos de blocos podem ser usados para modelar sistemas específicos. Esses conjuntos de blocos são chamados Blocksets. Assim como ocorre com os toolboxes, blocksets direcionados a várias áreas são também desenvolvidos em todo o mundo. Para ilustrar a vastidão do campo de aplicação do MATLAB, abaixo segue uma pequena listagem de toolboxes e blocksets desenvolvidos pela MathWorks. Apresentação Introdução ao MATLAB 9 Aerospace Blockset Biblioteca que utiliza os fundamentos do SIMULINK para prover ferramentas especializadas para o desenvolvimento de ferramentas de modelagem, integração e simulação de aeronaves, naves espaciais, mísseis e sistemas de propulsão ou subsistemas. Bioinformatics Toolbox Aplicativo MATLAB que possui ferramentas especializadas para análise de genoma, visualização e normalização de micro vetores e análise das propriedades de proteínas. Communications Blockset Aplicativo SIMULINK composto por cerca de 150 blocos do SIMULINK dedicados às áreas de desenvolvimento de projeto, simulação e análise de sistemas de comunicação digitais e analógicos. Control System Toolbox Aplicativo MATLAB para área de modelagem e análise de sistemas automáticos de controle. Este Toolbox permite modelar, simular e analisar sistemas contínuos e discretos, com múltiplas entradas e múltiplas saídas (MIMO). Data Acquisition Toolbox Aplicativo MATLAB composto por funções para importação de dados obtidos a partir de placas de aquisição de dados. Curve Fitting Toolbox Aplicativo MATLAB de ajuste de curvas. Este Toolbox permite modelar, simular e analisar sofisticados métodos de ajuste de curvas de forma prática e flexível. Financial Toolbox Aplicativo MATLAB para área financeira (estudo de preços, cálculo de juros e investimentos, análise de derivativos e otimização de portifólios). Statistics e Optimization Toolboxes são necessários para o funcionamento do Financial Toolbox. Image Processing Toolbox Aplicativo MATLAB para área de processamento de imagens (estudo, tratamento e análise de sinais analógicos/digitais transformados em imagens gráficas). Signal Processing Toolbox é necessário para o funcionamento deste Toolbox. Mapping Toolbox Aplicativo MATLAB composto por funções para tratamento de mapas e informações cartográficas (por exemplo: coordenadas cartográficas, deformações, representações tri-dimensionais). Introdução ao MATLAB 10 Partial Differential Equation Toolbox Aplicativo MATLAB composto por funções para resolução deequações diferenciais parciais em espaço bidimensional utilizando método de elementos finitos. Statistics Toolbox Aplicativo MATLAB para área de estatística, incluindo além de ferramentas estatísticas básicas de análise de dados, recurso de modelagem e análise estatística de modelos lineares e não-lineares. SimMechanics Biblioteca de blocos do SIMULINK que possibilita a modelagem e simulação de sistemas mecânicos, tais como: componentes mecânicos (corpos e juntas), simulação de movimentos, etc. 1.2.1. Ambiente de Trabalho Quando o MATLAB é inicializado, três janelas são exibidas: a Workspace, a Command History e a Janela de Comando (Command Window). Na aba Workspace aparecem as variáveis, seu tamanho e valor atual, as variáveis são arrays onde cada elemento tem 8 bytes e podem ser editadas utilizando o Array Editor através de um clique duplo no nome da variável. Na janela Command History são armazenados todos os comandos já utilizados, sendo que estes podem ser reescritos na Command Window apenas utilizando as teclas UP e DOWN do teclado, sem necessidade de serem digitados novamente. Por sua vez, a Janela de Comando é a parte principal do MATLAB, onde serão escritos os códigos, funções e demais comandos. Nessa janela, o "prompt" padrão (>>) é exibido na tela e, a partir deste ponto, o MATLAB espera as instruções do utilizador. Para introduzir uma pequena matriz, por exemplo, utiliza-se: >> A = [1 2 3; 4 5 6; 7 8 7] Colocam-se colchetes em torno dos dados e separam-se as linhas por ponto e vírgula. Quando se pressiona a tecla <enter> o MATLAB responde com: A = 1 2 3 4 5 6 7 8 7 Introdução ao MATLAB 11 Para inverter esta matriz, utiliza-se: >> B = inv(A) B = -2.1667 1.6667 -0.5000 2.3333 -2.3333 1.0000 -0.5000 1.0000 -0.5000 1.2.2. Editor de Linhas de Comando As teclas UP e DOWN podem ser usadas para se encontrar comandos usados anteriormente, para nova execução ou reedição. No caso de pretender efetuar o cálculo de: 5 tanlog pi Introduz-se na janela de comando: >> log (sqt(tan(pi/5))) Como para calcular a raiz quadrada o comando certo é sqrt, o MATLAB responde com uma mensagem de erro: ??? Undefined function or variable sqt. O comando com a resposta apropriada seria: >> log (sqrt(tan(pi/5))) ans= -0.1597 NOTA: Todas as funções que façam uso de um argumento em ângulo são calculadas com o dito argumento expresso em radianos. O Matlab possui diversas variáveis predefinidas, incluindo pi, Inf, NaN, i e j. Três exemplos são mostrados abaixo: >> z = 3 + 4*i z = 3.0000 + 4.0000i >> Inf ans = Inf >> 0/0 Introdução ao MATLAB 12 Warning: Divide by zero. ans = NaN O termo NaN significa, em inglês, Not-a-Number (símbolo de indeterminação) e resulta de operações de valor indeterminado. Inf representa +∞ e pi representa π. A variável 1−=i é usada para representar números complexos. A variável 1−=j pode ser usada em vez de i nas operações aritméticas com números complexos por aqueles que a preferem. Estas variáveis predefinidas podem ser inadvertidamente redefinidas. É claro que elas podem ser redefinidas intencionalmente a fim de liberar o nome da variável para outros usos. Por exemplo, pode-se querer usar i como inteiro e reservar j para a aritmética com números complexos. Seja cauteloso e deixe estes nomes de variáveis predefinidas intocados, pois há uma infinidade de nomes alternativos que podem ser usados. As variáveis predefinidas podem ser realocadas aos seus valores default usando o comando clear nome_da_variável (por exemplo, clear pi). Introdução ao MATLAB 13 2. Introdução O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz numérica retangular podendo conter elementos complexos. Observa-se que um escalar é uma matriz de dimensão 1x1 e que um vetor é uma matriz que possui somente uma linha ou uma coluna. 2.1. Introdução a Matrizes Simples As matrizes podem ser introduzidas no MATLAB de diferentes modos: - Introduzida na Janela de Comando (lista explícita de elementos). - Geradas por comandos e funções. - Criadas em arquivos ".m". - Carregadas a partir de um arquivo de dados externo. O método mais fácil de introduzir pequenas matrizes no MATLAB é utilizando uma lista explícita. Os elementos de cada linha da matriz são separados por espaços em branco ou vírgulas e as colunas separadas por ponto e vírgula, colocando-se colchetes em volta do grupo de elementos que formam a matriz com o objetivo de limitá-la. Por exemplo, introduzindo-se a expressão: >> A=[1 2 3; 4 5 6; 7 8 7] A = 1 2 3 4 5 6 7 8 7 A matriz A é guardada na memória RAM do computador, ficando armazenada para uso posterior. As matrizes podem, também, ser introduzidas linha a linha, o que é indicado para matrizes de grande dimensão. Por exemplo: A= [1 2 3 4 5 6 7 8 7] Outra maneira para introduzir matrizes no MATLAB é através de um arquivo no formato texto com extensão ".m". Por exemplo, se um arquivo chamado "matriz.m" contiver estas três linhas de texto: A= [1 2 3 4 5 6 7 8 7] Introdução Introdução ao MATLAB 14 Então a expressão "matriz" lerá o arquivo e introduzirá a matriz A. >>matriz O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos binários ou matrizes geradas por outros programas armazenadas em arquivos ASCII. Assim, para ler um arquivo .mat chamado matriz.mat segue-se a seguinte estrutura: load matriz.mat, e as variáveis salvas no arquivo binário matriz.mat serão carregadas na Workspace. NOTA: Em todos os exemplos, m e n são inteiros positivos. Para especificar um único elemento da matriz utilizam-se os índices referentes ao número de linha e número de coluna entre parênteses da matriz onde se encontra o elemento: A(m,n). Outra forma de gerar matrizes é através de ciclos for. Por exemplo, para gerar uma matriz M com i linhas e j colunas, a seguinte estrutura pode ser utilizada: >> for i = 1:3, for j = 1:3, M(i,j) = i+j; end end E obtemos como resultado a matriz: >> M M = 2 3 4 3 4 5 4 5 6 OBS: o índice das matrizes começa em 1, não em 0. 2.2. Elementos de Matrizes Os elementos das matrizes podem ser quaisquer expressões do MATLAB. Por exemplo: >> x = [-1.3 sqrt(2) ((1+2+3)*4/5)^2] x = -1.3000 1.4142 23.0400 Introdução ao MATLAB 15 Um elemento individual da matriz pode ser referenciado com índice entre parênteses. Continuando o exemplo: >> x(6) = abs(x(1)) x = -1.3000 1.4142 23.0400 0 0 1.3000 Nota-se que a dimensão do vetor x é aumentada automaticamente de 1x3 para 1x6 de modo a acomodar o novo elemento, e que os elementos indefinidos do intervalo são estabelecidos como zero. Matrizes de maior dimensão podem ser construídas a partir de pequenas matrizes. Por exemplo, pode-se anexar outra linha à matriz A usando: >> r= [ 10 11 12]; >> A= [A;r]A = 1 2 3 4 5 6 7 8 7 10 11 12 Nota-se que o vetor r não foi listado porque ao seu final foi acrescentado ";". Podem ser extraídas matrizes pequenas da matriz original utilizando “:”. Por exemplo: >> A = A(1:3,:) A = 1 2 3 4 5 6 7 8 7 Seleciona da linha 1 até a linha 3 e todas as colunas da matriz A atual. 2.3. Decaração de Variáveis O MATLAB é uma linguagem de expressões. As expressões usadas são interpretadas e avaliadas pelo sistema. As declarações no MATLAB são freqüentemente da forma: >> variável = expressão Introdução ao MATLAB 16 Ou simplesmente: >> expressão As expressões são compostas de operadores e outros caracteres especiais, de funções e dos nomes das variáveis. As avaliações das expressões produzem matrizes, que são então mostradas na tela e atribuídas às variáveis para uso futuro. Se o nome da variável e o sinal de igualdade "=" são omitidos, a variável com o nome ans, que representa a palavra "answer" (resposta), é automaticamente criada. Por exemplo, introduzindo a expressão: >> 1900/81 ans= 23.4568 Se o último caractere da declaração é um ponto e vírgula, ";", a impressão na tela é suprimida, mas a tarefa é realizada. Esse procedimento é usado em arquivos com extensão ".m" e em situações onde o resultado é uma matriz de grandes dimensões e há interesse em apenas alguns dos seus elementos. Se a expressão é tão grande que não cabe em apenas uma linha, pode- se continuar a expressão na próxima linha usando um espaço em branco e três pontos," ...", ao final das linhas incompletas. Por 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 + 1/13; Calcula o resultado da série, atribuindo o somatório à variável s, mas não imprime o resultado na tela. As variáveis e funções podem ser formadas por um conjunto de letras, ou por um conjunto de letras e números, onde somente os primeiros 19 caracteres do conjunto são identificados. O MATLAB faz distinção entre letras maiúsculas e minúsculas, assim a e A não são as mesmas variáveis. Todas as funções devem ser escritas em letras minúsculas: inv(A) calcula a inversa de A, mas INV(A) é uma função indefinida. 2.4. Informações sobre a Área de Trabalho Os exemplos de declarações mostrados nos itens acima criaram variáveis que são armazenadas na Área de Trabalho do MATLAB. Executando: >> who Obtém-se uma lista das variáveis armazenadas na Área de Trabalho: Your variables are: Introdução ao MATLAB 17 A B ans r s x que mostra as seis variáveis geradas nos exemplos, incluindo ans. Observe que o comando who está em letras minúsculas. Todo comando no MATLAB deve ser inserido dessa forma. Uma informação mais detalhada que indica a dimensão de cada uma das variáveis correntes é obtida com whos, que para o exemplo produz: >> whos Name Size Bytes Class A 4x3 96 double array B 3x3 72 double array ans 3x3 72 double array r 1x3 24 double array s 1x1 8 double array x 1x3 24 double array Grand total is 37 elements using 296 bytes Cada elemento de uma matriz real requer 8 bytes de memória, assim a matriz A de dimensão 4x3 faz uso de 96 bytes e todas as variáveis utilizadas um total de 296 bytes. 2.5. Números e Expressões Aritméticas A notação decimal convencional, com ponto decimal opcional e o sinal negativo, é usada para números. A potência de dez pode ser incluída como um sufixo. A seguir são mostrados alguns exemplos de números aceitos: 3 -99 0.00001 9.637458638 1.602E-20 6.06375e23 As expressões podem ser construídas através dos operadores aritméticos usuais e das regras de precedência: 1 ^ Potenciação 2 / Divisão à direita 2 \ Divisão à esquerda 3 * Multiplicação 4 + Adição 4 - Subtração Deve-se notar que existem dois símbolos para divisão: as expressões 1/4 e 4\1 possuem o mesmo valor numérico, isto é, 0.25. Introdução ao MATLAB 18 São usados parênteses na sua forma padrão para alterar a procedência usual dos operadores aritméticos. 2.6. Números e Matrizes Complexas Os Números Complexos são permitidos em todas as operações e funções no MATLAB. Os números complexos são introduzidos utilizando as funções especiais i ou j que correspondem à parte imaginária de um número complexo. Por exemplo: >> z= 3 + 4*i ou >> z= 3 +4*j Sabendo que um número complexo é constituído por uma parte real {Re} e por uma parte imaginária {Im}, tal que: z = {Re} + {Im}*i ele pode ser expresso na forma: >> z= r*exp(i*theta) em que : >> r = abs(z) >> theta = angle(z)*180/pi As seguintes declarações mostram dois caminhos convenientes para se introduzir matrizes complexas no MATLAB: >> A= [1 2; 3 4]+i*[5 6;7 8] ou >> A= [1+5*i 2+6*i; 3+7*i 4+8*i] Ambas produzem o mesmo resultado. Se quisermos determinar a parte real da matriz A usamos a função real(A), já a parte imaginária pode ser visualizada com a função imag(A) como pode ser visualizado abaixo: >> real(A) ans = Introdução ao MATLAB 19 1 2 3 4 >> imag(A) ans = 5 6 7 8 2.7. Formatação de Saída O formato numérico exibido na tela pode ser modificado utilizando o comando format, que afeta somente o modo como as matrizes são mostradas, e não como elas são calculadas ou guardadas (o MATLAB efetua todas as operações em dupla precisão). Se todos os elementos da matriz são inteiros exatos, a matriz é mostrada num formato sem qualquer ponto decimal. Por exemplo: >> x = [-1 0 1] x = -1 0 1 Se pelo menos um dos elementos da matriz não é inteiro exato, existem várias possibilidades de formatar a saída. O formato padrão, chamado de formato short, mostra aproximadamente 5 dígitos significativos ou usam notação científica. Para modificar o formato da saída, devemos inserir o comando format. A tabela abaixo mostra os principais formatos: Com o formato short e long, se o maior elemento da matriz é superior a 1000 ou inferior a 0.001, é aplicado um fator de escala comum para que a matriz completa seja mostrada. Por exemplo: >> X = 1e20*x X = 1.0e+020 * 1.3333 0 0.0000 short 5 dígitos significativos short e 5 dígitos significativos em notação científica long 15 dígitos significativos long e 15 dígitos significativos em notação científica hex em sistema hexadecimal rat em formato de número racional bank duas casas após a vírgula + Mostra o sinal do número sem o seu valor, a parte imaginária do número é ignorada Introdução ao MATLAB 20 Com o comando format + os símbolos "+", "-", e "espaço em branco" são mostrados, respectivamente para representar elementos positivos, elementos negativos e zeros. 2.8. Utilização do Help (Ajuda) O MATLAB possui um comando de ajuda: help, que fornece informações sobre a maior parte dos tópicos: >> help Para obter informações sobre um tópico específico, referir help tópico. Por exemplo, >> help plot fornece uma lista de todos os comandos relacionados com gráficos bidimensionais. A mesmasintaxe é usada para obter informações sobre um comando específico. 2.9. Funções As potencialidades do MATLAB residem no seu extenso conjunto de funções. O MATLAB possui um grande número de funções intrínsecas que não podem ser alteradas pelo utilizador. Outras funções estão disponíveis numa biblioteca externa distribuída com o programa original (MATLAB TOOLBOX), que são na realidade arquivos com a extensão ".m" criados a partir das funções intrínsecas. As categorias gerais de funções matemáticas disponíveis no MATLAB incluem: - Matemática elementar; - Funções especiais; - Matrizes elementares; - Matrizes especiais; - Decomposição e fatoração de matrizes; - Análise de dados; - Polinômios; - Solução de equações diferenciais; - Equações não-lineares e otimização; - Integração numérica; - Processamento de sinais; - Entre outras As seções subseqüentes mostram mais detalhadamente as diferentes categorias de funções. Qualquer informação adicional sobre os conteúdos das diversas categorias poderá ser encontrado no respectivo help. Introdução ao MATLAB 21 3. Manipulação de Matrizes e Vetores 3.1 . Operações com Matrizes O MATLAB possui dois tipos diferentes de operações aritméticas. As operações aritméticas matriciais são definidas pelas regras da Álgebra Linear. As operações aritméticas com arrays (conjuntos) são efetuadas elemento por elemento. O caractere de ponto decimal “.” distingue as operações matriciais das operações com arrays. No entanto, como as operações matriciais e com arrays são iguais para a soma e para a subtração, o par de caracteres “.+” e “.-“ não é usado para estas. As operações com matrizes no MATLAB são as seguintes: - Transposta; - Adição; - Subtração; - Multiplicação; - Divisão à direita; - Divisão à esquerda; - Potenciação; A seguir cada uma destas operações é apresentada com maior detalhe. 3.1.1 Transposta O caractere apóstrofo ( ' ) indica a transposta de uma matriz, por exemplo: >> B = A' % A variável B recebe a matriz transposta de A Se Z for uma matriz complexa, Z’ será a matriz conjugada complexa transposta. Para obter simplesmente a transposta de Z deve-se usar Z.’, como mostra o exemplo: >>Z = [1 2; 3 4] + [5 6; 7 8]*i Z = 1.0000+ 5.0000i 2.0000+ 6.0000i 3.0000+ 7.0000i 4.0000+ 8.0000i >>Z1 = Z' Z1 = 1.0000- 5.0000i 3.0000- 7.0000i 2.0000- 6.0000i 4.0000- 8.0000i Manipulação de matrizes e vetores Introdução ao MATLAB 22 Caso desejar apenas a matriz complexa conjugada de Z deve-se usar Z.’’ >> Z3=Z.'' Z3 = 1.0000 - 5.0000i 2.0000 - 6.0000i 3.0000 - 7.0000i 4.0000 - 8.0000i 3.1.2 Adição e Subtração A adição e a subtração de matrizes são indicadas, respectivamente, por "+" e "-". As operações são definidas somente se as matrizes possuírem as mesmas dimensões. A adição e a subtração também são definidas se um dos operadores for um escalar, ou seja, uma matriz 1x1. Neste caso, o escalar é adicionado ou subtraído de todos os elementos do outro operador. Por exemplo: >> y = [1 2; 3 8] - 1 y = 0 1 2 7 3.1.3 Multiplicação A multiplicação de matrizes é indicada por "*". A multiplicação x*y é definida somente se a segunda dimensão de x for igual à primeira dimensão de y. Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz. Por exemplo: >> x=[-1; 0; 2]; >> pi*x ans= -3.1416 0 6.2832 Se os tamanhos das matrizes forem incompatíveis para a operação matricial, será gerada uma mensagem de erro, com exceção do caso de operações entre escalares e matrizes (para adição, subtração, divisão e multiplicação). 3.1.4 Divisão >>Z2 = Z.' Z2 = 1.0000+ 5.0000i 3.0000+ 7.0000i 2.0000+ 6.0000i 4.0000+ 8.0000i Introdução ao MATLAB 23 A divisão de matrizes requer especial atenção, pois existem dois símbolos para divisão de matrizes no MATLAB "\" e "/". Se A for uma matriz inversível quadrada e b for um vetor coluna (ou linha) compatível, então A\b e b/A corresponderão respectivamente à multiplicação à esquerda e à direita da matriz b pela inversa da matriz A, ou inv(A)*b e b*inv(A), mas o resultado é obtido diretamente: X = A\b é a solução de A*X = b X = b/A é a solução de X*A = b Deve-se ter o cuidado de observar as dimensões das matrizes que estão envolvidas na operação, o número de colunas de A deve ser igual ao número de linhas de b (em A\b), já em b/A o número de linhas de A deve ser igual ao número de colunas de b (em A\b). A divisão à direita é definida em termos da divisão à esquerda por: b/A = (A'\b) 3.1.5 Potenciação A expressão A^p eleva A à p-ésima potência e é definida se A é matriz quadrada e p um escalar. Se p é um inteiro maior do que um, a potenciação é calculada como múltiplas multiplicações. Se A é uma matriz e a é um escalar, a^A calcula o escalar elevado à matriz A fazendo uso dos autovalores e autovetores. NOTA: X^A, sendo X e A matrizes, apresenta erro. 3.2 Operações Elemento a Elemento (Conjuntos) O termo operações com conjuntos é utilizado quando as operações aritméticas são realizadas entre os elementos que ocupam as mesmas posições em cada matriz (elemento por elemento). As operações com conjuntos são efetuadas como as operações usuais, utilizando-se os mesmos caracteres ("*", "/", "\", "^" e " ‘ ") precedidos por um ponto "." (".*", "./", ".\", ".^" e " .‘ "). 3.2.1 Adição e Subtração Para a adição e a subtração, as operações com conjuntos e as operações com matrizes são iguais. Deste modo os caracteres "+" e "-" são empregados do mesmo modo e considerando as mesmas restrições de utilização. 3.2.2 Multiplicação e Divisão Introdução ao MATLAB 24 A multiplicação de conjuntos é indicada por ".*". Se A e B são matrizes com as mesmas dimensões, então A.*B indica um conjunto cujos elementos são simplesmente o produto dos elementos individuais de A e B. As expressões A./B e A.\B formam um conjunto cujos elementos são simplesmente os quocientes dos elementos individuais de A e B. Assim: >> a=[1 2 3]; >> b=[2 4 6]; >> x=a./b >> x=b./a x = x = 0.5000 0.5000 0.5000 2 2 2 3.2.3 Potenciação A potenciação de conjuntos é indicada por ".^". A seguir são mostrados alguns exemplos utilizando os vetores x e y. A expressão: A potenciação pode usar um escalar: >> x=[1 2 3]; >> a=x.^3 a = 1 8 27 Ou a base pode ser um escalar: >> 2.^x ans = 1 4 8 3.3. Matrizes Elementares Além das já descritas, o MATLAB dispõe de diversas funções que permitem a rápida elaboração de matrizes padrão, dentre elas: 3.3.1 Geração de Vetores O caractere dois pontos, ":", permite a geração de vetores no MATLAB. A declaração: >> x = 1 : 5 Gera um vetor linha contendo os números de 1 a 5 com incremento unitário. Produzindo: x = 1 2 3 4 5 Outros incrementos, diferentes da unidade podem ser utilizados, como seja o caso do seguinte exemplo que impõe um incremento de pi/4. Introdução ao MATLAB 25 >> y = 0 : pi/4 : pi y = 0 0.7854 1.5708 2.3562 3.1416 Também são possíveis incrementos decrescentes (negativos). Pode-se, também, gerar vetores linearmenteespaçados fazendo uso da função linspace. Por exemplo, >> k = linspace (0, 1, 6) k = 0 0.2000 0.4000 0.6000 0.8000 1.0000 Cria um vetor linearmente espaçado de 0 a 1, contendo 6 elementos. Ao pretender-se um espaçamento logarítmico desde o valor inicial 10x1 até ao valor final 10x2 do vetor composto por k elementos, a função a utilizar será: >> logspace (x1 , x2 , k) A exceção para essa função é quando x2 = π. Caso isso ocorra, os k pontos estarão espaçados desde 10x1 até π. 3.3.2 . Matriz Identidade De modo a construir uma matriz identidade (quadrada ou com dimensão n x m, a função a utilizar é dada por): >> eye(m,n) 3.3.3 Matriz Composta por Elementos Unitários No caso de ser necessário a obtenção de uma matriz composta apenas por elementos unitários, temos que: >> ones(m,n) 3.3.4 Matriz Nula Para efetuar qualquer tipo de manipulação matricial, poderá ser útil a construção de uma matriz composta por elementos nulos: >> zeros(n,m) 3.3.5 Matriz Aleatória Introdução ao MATLAB 26 A elaboração de testes a qualquer programa desenvolvido no MATLAB, ou para utilização de um outro qualquer modo, poderá fazer uso de matrizes compostas por números aleatórios uniformemente distribuídos no intervalo entre 0 e 1. A função que realiza esta operação é: >> rand(m,n) onde m representa o número de linhas e n o número de colunas da matriz desejada. No caso de se pretender uma distribuição normal dos números aleatórios, com média zero, variância um e devio padrão um, a função a ser utilizada será: >> randn(m,n) Cabe salientar que em uma distribuição normal, 68% dos valores estão compreendidos entre –1 e 1. O comando magic(n) cria uma matriz quadrada integral de dimensões n x n (linhas e colunas têm a mesma soma). >>x=magic(4) 3.4 Elementos de Matrizes Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre parênteses. Por exemplo, dada a matriz A: A = 1 2 3 4 5 6 7 8 9 A declaração: >> A(3,3) = A(1,3) + A(3,1) A = 1 2 3 4 5 6 7 8 10 Um subscrito pode ser um vetor. Se X e V são vetores, então X(V) é [X(V(1)), X(V(2)), .... X(V(n))]. Para as matrizes, os subscritos vetores permitem o acesso às submatrizes contínuas e descontínuas. Por exemplo, suponha que A é uma matriz 10x10. Introdução ao MATLAB 27 A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 >> A(1:5,7:10) ans = 7 8 9 10 17 18 19 20 27 28 29 30 37 38 39 40 47 48 49 50 É uma submatriz 5x4 que consiste nas primeiras cinco linhas e nas últimas quatro colunas. Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha ou coluna. Por exemplo, >> A(1:2:5,:) ans = 1 2 3 4 5 6 7 8 9 10 21 22 23 24 25 26 27 28 29 30 41 42 43 44 45 46 47 48 49 50 É uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas colunas da matriz A. 3.5 Manipulação de Matrizes Do mesmo modo, estão implementadas no código diversas funções que permitem a manipulação e construção de matrizes genéricas. 3.5.1 Matriz Diagonal ou Diagonal de uma Matriz Se x for um vetor, diag(x) será a matriz diagonal com x na diagonal; >> x=[1 2 3 1 -1 4]; >> diag(x) ans = 1 0 0 0 0 0 Introdução ao MATLAB 28 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 0 4 Se A for uma matriz quadrada, então diag(A) será um vetor cujos componentes são os elementos da diagonal de A. >> A=[3 11 5; 4 1 -3; 6 2 1] A = 3 11 5 4 1 -3 6 2 1 >> diag(A) ans = 3 2 1 3.5.2 Matrizes Triangulares O código possui duas funções que permitem a extração das matrizes triangular superior e triangular inferior de uma matriz quadrada. São elas, respectivamente: triu(A); tril(A); 3.5.3 Redimensionamento de Matrizes Dada a matriz A composta por m linhas e n colunas A(m,n); poderá ser redimensionada, através do comando reshape (A,n,m), desde que o produto de mxn se mantenha constante. >>A(m,n) >> B = reshape(A,n,m) >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> B=reshape(A,3,2) B = 1 5 4 3 2 6 3.5.4 Rotação dos Elementos da Matriz Introdução ao MATLAB 29 Os elementos da matriz A poderão ser rodados 90º no sentido anti- horário (ou rodados k*90º) através do uso da função: >>rot90(A,k) A = 1 2 3 4 5 6 >> rot90(A,1) ans = 3 6 2 5 1 4 4. Funções Funções Introdução ao MATLAB 30 4.1 Funções Escalares Algumas funções no MATLAB operam essencialmente sobre escalares, mas operam sobre cada elemento se aplicadas a uma matriz. As funções escalares mais comuns são: Exp Exponencial; Abs Valor absoluto; Log Logaritmo natural; Log10 Logaritmo base 10; sqrt Raiz quadrada; sin Seno; asin Arco seno; cos Coseno; acos Arco Coseno; tan Tangente; atan Arco Tangente; round Arredondamento ao inteiro mais próximo; floor Arredondamento ao inteiro mais próximo na direção de menos infinito; ceil Arredondamento ao inteiro mais próximo na direção de mais infinito; rem Resto da divisão; sign Para cada elemento de x, sign(x) retorna 1 se o elemento é maior que zero, 0 se é igual a zero e -1 se ele é menor que zero 4.2. Funções Vetoriais Opera com elementos de colunas desejadas, caso seja desejado operar com linhas ao invés de colunas deve-se transpor a matriz e então operá-la com a sua coluna que antes era sua linha. Abaixo estão alguns exemplos de funções: Introdução ao MATLAB 31 4.3 Funções Matriciais Uma boa aplicação do MATLAB é suas funções matriciais. Dentre as mais usadas estão essas: eig Valores próprios e vetores próprios; chol Fatorização de Cholesky; Svd Decomposição em fator singular; inv Inversa; lu Fatorização triangular LU; qr Fatorização ortogonal QR; hess Forma de Hessenberg; schur Decomposição de Schur; expm Matriz Exponencial; sqrtm Matriz de raiz quadrada; poly Polinômio característico; det Determinante; size Tamanho; norm Norma 1, Norma 2, Norma F, Norma Infinita; cond Número de condição na norma 2; rank Número de linhas linearmente independentes. Vamos dar um exemplo parailustrar algumas funções: max Valor máximo dos elementos de cada coluna; sum Soma dos elementos de cada coluna; Median Valor mediano dos elementos de cada coluna; any Devolve 1 se qualquer elemento da coluna for diferente de 0; min Valor mínimo dos elementos de cada coluna; prod Produto dos elementos de cada coluna; all Devolve 1 se todos os elementos de cada coluna forem diferentes de 0; sort Organização dos elementos da coluna por ordem decrescente de valor; Std Desvio padrão dos elementos de cada coluna. Introdução ao MATLAB 32 » P=[1 0 0; 0 2 2; 2 3 1] P = 1 0 0 0 2 2 2 3 1 » inv(P) ans = 1.0000 0 0 -1.0000 -0.2500 0.5000 1.0000 0.7500 -0.5000 » poly(P) ans = 1 -4 -1 4 » size(P) ans = 3 3 » det(P) ans = -4 5. Polinômios Polinômios Introdução ao MATLAB 33 Embora o MATLAB não permita trabalhar diretamente com polinômios, dispõe de um conjunto de funções dedicadas à sua manipulação. Os polinômios são representados no MATLAB por vetores linhas que contêm os coeficientes das sucessivas potências do polinômio ordenados por ordem significativa decrescente. Vamos ilustrar com um exemplo: » p = [1 -6 -72 -27] p = 1 -6 -72 -27 » x=roots(p) x = 12.1229 -5.7345 -0.3884 » p=poly(x) p = 1.0000 -6.0000 -72.0000 -27.0000 No exemplo acima definimos um polinômio qualquer p sendo (p = s³ - 6s² -72s -27) a seguir calculamos suas raízes através do comando roots e na seqüência pegamos os resultados das raízes e aplicamos a função poly chegando novamente no polinômio inicial p. É válido relembrar de uma importante observação caso o nosso polinômio inicial tivesse um coeficiente diferente de 1 para o maior grau (s³) quando aplicássemos a função poly sobre as raízes o novo polinômio seria com coeficiente 1 para o maior grau, o que não mudaria nada pois é uma equação em que um lado tem um polinômio p e de outro zero, logo podemos multiplicar ambos os lados por qualquer variável. x²+2x+4=0 ax²+2ax+4a=0a ax²+2ax+4a=0 Além das duas operações já citadas há ainda as básicas, soma, subtração, multiplicação e divisão. Soma e subtração faz-se normalmente sem maiores problemas, para multiplicação usa-se conv e para a divisão deconv. Exemplo: » p=[3 2 1] {definindo um primeiro polinômio} p = 3 2 1 » q=[4 3 1] { definindo um segundo polinômio } q = 4 3 1 » M=conv(p,q) {efetuando a multiplicação entre os dois polinômios} M = 12 17 13 5 1 » [d,r]=deconv(M,q) {vamos dividir a multiplicação feita anteriormente, por o polinômio q e isto deverá resultar no polinômio p, a variável r corresponde ao resto que nesse caso, será 0} d = 3 2 1 r = 0 0 0 0 0 Introdução ao MATLAB 34 6. Gráficos A construção de gráficos no MATLAB é mais uma das potencialidades do sistema. Através de comandos simples pode-se obter gráficos bidimensionais ou tridimensionais com qualquer tipo de escala e coordenada. No MATLAB existe uma vasta biblioteca de comandos gráficos. Gráficos Introdução ao MATLAB 35 6.1 – Gráficos X-Y Comandos de geração de gráficos bidimensionais: plot Gráfico linear. loglog Gráfico em escala logarítmica. semilogx Gráfico em escala semi-logarítmica (eixo x). semilogy Gráfico em escala semi-logarítmica (eixo y). fill Desenhar polígono 2D. polar Gráfico em coordenadas polar. bar Gráfico de barras. stem Gráfico de seqüência discreta. stairs Gráfico em degrau. errorbar Gráfico do erro. hist Histograma. rose Histograma em ângulo. compass Gráfico em forma de bússola. feather Gráfico em forma de pena. fplot Gráfico da função. comet Gráfico com trajetória de cometa. Se Y é um vetor, plot(Y) produz um gráfico linear dos elementos de Y versus o índice dos elementos de Y. Por exemplo, para exibir os números [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14], basta introduzir o vetor e executar o comando plot: >> Y = [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0.14]; >> plot(Y) O MATLAB pode também exibir múltiplas linhas em apenas um gráfico. Existem duas maneiras, a primeira resulta no uso de apenas dois argumentos, como em plot(X,Y), onde X e/ou Y são matrizes. Então: - Se Y é uma matriz e X um vetor, plot(X,Y) exibe sucessivamente as linhas ou colunas de Y versus o vetor X. - Se X é uma matriz e Y é um vetor, plot(X,Y) exibe sucessivamente as linhas ou colunas de X versus o vetor Y. - Se X e Y são matrizes com mesma dimensão, plot(X,Y) exibe sucessivamente as colunas de X versus as colunas de Y. - Se Y é uma matriz, plot(Y) exibe sucessivamente as colunas de Y versus o índice de cada elemento da linha de Y. O segundo método (e mais fácil) de exibir gráficos com múltiplas linhas faz uso do comando plot com múltiplos argumentos. Exploremo-lo em um exemplo mais detalhado. Primeiramente, preparemos os dados, escolhendo o domínio e as funções a serem mostradas: >> x = 0:0.3:30; Introdução ao MATLAB 36 >> y1 = exp(-.01*x).*sin(x); >> y2 = exp(-.05*x).*sin(.7*x); >> y3 = exp(-.1*x).*sin(.5*x); Escolhamos uma janela para traçar o gráfico: >> figure(1) O comando figure abre uma janela gráfica intitulada “Figure No.1”. Este comando é opcional; se não for utilizado, o MATLAB abrirá uma janela gráfica padrão. Agora utilizaremos a função plot para plotar os três gráficos na mesma janela: >> h = plot(x,y1,’b+:’,x,y2,’ro-‘,x,y3,’gx-.’); O terceiro, o sexto e o nono argumento representam a seqüência de propriedades: cor, ponto e traço. Em ‘ro-.‘ temos uma linha vermelha com cada ponto representado por um círculo e o espaço entre ele preenchido por ponto- e-traço. Observa-se que ‘h’ é uma referência ao gráfico plotado (neste caso, ‘h’ é um vetor de referências). Através do comando set, após os gráficos terem sido desenhados, é possível alterar os tipos de linhas, marcadores e cores para as curvas. Por exemplo, poderíamos fazer: >> set(h,'LineWidth',2,'LineStyle','--') >> set(h,'Color','r') Se desejássemos alterar apenas uma das curvas, passaríamos para o comando ‘set’ um elemento do vetor (h(2), por exemplo). Vejamos resumidamente os principais tipos de linhas e cores: 6.1.1 Acessórios para os Gráficos Definamos agora os limites dos eixos, pelo comando axis. Linhas em grelha podem ser ativadas pela propriedade grid: >> axis([0 20 -1 1]); >> grid on Introdução ao MATLAB 37 Para adicionarmos anotações no gráfico, como identificação dos eixos, título e legenda, usamos os seguintes comandos: Eixos: >> xlabel('Tempo'); ylabel('Amplitude'); Legenda e título: >> legend(h,'Primeiro','Segundo','Terceiro'); title('Resposta no Tempo'); Obs.: Se dois gráficos tiverem sido adicionados separadamente em uma janela gráfica, o argumento de referência não é utilizado no comando ‘legend’. E eis o gráfico resultante: Para plotar mais de um gráfico na mesma janela, têm-se três opções. A primeira foi utilizada no exemplo anterior, que seria usar um único comando com vários argumentos.A segunda é ativar a propriedade hold, que permite a inserção de dois ou mais gráficos, inserindo os comando separadamente. >> hold on Dessa forma, os gráficos serão sobrepostos em uma mesma janela gráfica. No entanto, se não desejarmos mais essa função ativa, basta digitar: >> hold off E por última opção temos o comando subplot, que divide uma janela gráfica em várias janelas no seu interior. Introdução ao MATLAB 38 >>subplot(2,2,3) Este comando divide a janela gráfica em uma matriz 2x2 (4 elementos, portanto) e prepara o terceiro elemento (linha 2, coluna 1) para receber futuros gráficos. 6.1.2 Números Complexos Quando os argumentos a exibir são complexos, a parte imaginária é ignorada, exceto quando é dado simplesmente um argumento complexo. Para este caso especial é exibida a parte real versus a parte imaginária. Então, plot(Z), quando Z é um vetor complexo, é equivalente a plot(real(Z),imag(Z)). >> Z=[1+i*1;3+i*3;5+i*5;7+i*10;9+i*15]; >> plot(real(Z),imag(Z)) 6.2 Gráficos Polares Gráficos polares são úteis quando valores são representados por ângulo e grandeza (magnitude). Por exemplo, se medirmos a intensidade luminosa ao redor de uma fonte de luz, podemos representar a informação com um ângulo fixando eixos e magnitude representando intensidade. Coordenadas Polares: Um ponto é representado em coordenadas polares por um angulo θ e uma magnitude r. O valor de θ é geralmente dado entre 0 e 2θ. A magnitude é um valor positivo que representa a distância do eixo que fornece o angulo até o ponto. polar(theta,r): Este comando generaliza gráficos polares com ângulo θ (em radiano) e magnitude r correspondente. Exemplo: Os comando para a construção do gráfico da figura abaixo: >> theta = 0:2*pi / 100 : 2*pi; >> r = theta / (2*pi); >> polar(theta,r); Introdução ao MATLAB 39 Transformação retangular / polar ; polar / retangular: As vezes, devido a praticidade é interessante transformarmos coordenadas de um sistema para outro. As equações abaixo relacionam os sistemas polar e retangular: polar / retangular _________________________ x = r cos q ; y = r sin q ; retangular / polar _________________________ r = Ö x² + y² ; q = atan (y/x); 6.3. Gráficos 3D A rede de superfície pode ser gerada por um conjunto de valores em uma matriz. Cada ponta na matriz representa o valor da superfície que corresponde ao ponto na tela. Para gerar um arquivo que representa uma superfície 3D, primeiramente calculamos o conjunto dos valores de x e y que representam as variáveis independentes e depois calculamos os valores de z que representam os valores da superfície. O comando no MATLAB para plotar gráficos 3D é mesh(z). O comando meshgrid tem os argumentos do vetor x e y, ou seja transforma o domínio especificado pelos vetores x e y em vetores que podem ser usados em cálculos de funções de 2 variáveis e construção de gráfico 3D. Exemplo: Gerar o gráfico 3D da função -0.5 < x < 0.5 ; -0.5 < y < 0.5 ; f(x ,y)= z = _1 - x²- y² 1 = |x² + y² + z²| Solução: [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5,-0.5:0.1:0.5); z=sqrt(abs(1 - xgrid.^2 - ygrid.^2)); mesh(z); Introdução ao MATLAB 40 Estes são alguns dos comandos de exibição de gráficos tridimensionais e de contornos: Quando geramos redes de superfície 3D podemos querer escolher a posição de visão que será definida com os termos azimuth ( rotação horizontal ) e vertical elevation que especifica os graus (rotação vertical ). Exemplo: Rotação horizontal: plot3 Exibição do gráfico em espaço 3D. fill3 Desenhar polígono 3D. comet3 Exibir em 3D com trajetória de cometa. contour Exibir contorno 2D. contour3 Exibir contorno 3D. clabel Exibir contorno com valores. quiver Exibir gradiente. mesh Exibir malha 3D. meshc Combinação mesh/contour. surf Exibir superfície 3D. surfc Combinação surf/contour. surfil Exibir superfície 3D com iluminação. slice Plot visualização volumétrica. cylinder Gerar cilindro. sphere Gerar esfera. Introdução ao MATLAB 41 f(x ,y) = z = 1 - x²- y² 1 = |x² + y² + z²| Solução: Exemplo: Rotação vertical: f(x ,y)= z = _1 - x²- y² 1 = |x² + y² + z²| Solução: >> [xgrid,ygrid] = meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5); >> z=sqrt(abs(1 - xgrid.^2 - ygrid.^2)); >> mesh(z,[-37.5,0]); >> [xgrid,ygrid]=meshgrid(-0.5:0.1:0.5;-0.5:0.1:0.5); >> z=sqrt(abs)1 - xgrid.^2 - ygrid.^2)); >> mesh(z,[-37.5,-30]); Introdução ao MATLAB 42 Introdução ao MATLAB 43 7. Programação 7.1 Arquivo.m Os comandos do MATLAB são normalmente introduzidos através da janela de comando, onde uma única linha de comando é introduzida e processada imediatamente. O MATLAB é, no entanto, capaz também de executar seqüências de comandos armazenadas em arquivos. Os arquivos que contêm as declarações do MATLAB são chamados arquivos “.m”, e consistem em seqüências de comandos normais do MATLAB, possibilitando incluir outros arquivos “.m” escritos no formato texto (ASCII). Para editar um arquivo texto na janela de comando do MATLAB selecione New M-File para criar um novo arquivo ou Open M-File para editar um arquivo .m já existente, a partir do menu File. Os arquivos podem, também, ser editados fora do MATLAB utilizando qualquer editor de texto. Para isso, basta salvar os arquivos com a extensão “.m”. Para executar um programa do tipo M-File, deve-se selecionar Run Script, também a partir do menu File. Existem alguns comandos e declarações especiais para serem usadas nos arquivos. Alguns comandos importantes para se trabalhar com arquivos.m são: % Usado para inserir comentários no texto; clear Apaga todo os dados da memória; input Usado quando se deseja adicionar um dado ao problema pela janela de comando; pause Causa uma pausa na execução do programa até que uma tecla seja digitada; clc Limpa a janela de comando figure(n) Mostra a janela gráfica de número n; close all Fecha todas as janelas gráficas. 7.2 Operadores Lógicos e Relacionais Os operadores usados para a comparação de duas matrizes com as mesmas dimensões são expressos por: 7.2.1 Operadores Relacionais Programação Introdução ao MATLAB 44 Símbolo Descrição < Menor < = Menor ou igual > Maior > = Maior ou igual = = Igual ~ = Diferente A comparação é feita entre os pares de elementos correspondentes e o resultado é uma matriz composta de números um(1) e zero(0), representando respectivamente verdadeiro e falso. Por exemplo: » 2+2 ~ = 4 ans = 0 Observação: Apenas os operadores “= =” e “~ =” testam tanto a parte real como a imaginária, os demais, apenas a parte real. » x=5; y=3*(x= =3) y = 0 » x=5; y=3*(x= =5) y = 3 » x=5; y=3*(x~ =5) y = 0 » x=5; y=3*(x~ =3) y = 3 7.2.2 Operadores Lógicos Símbolo Função & AND | OR ~ NOT xor XOR Esses operadores operam da mesma forma que os operadores relacionais, dando como resposta verdadeiro ou falso. Exemplo: INPUTS AND OR XOR Introduçãoao MATLAB 45 A B & | xor 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 » A = [ 1 0 1 0 0 0 1 1 1] A = 1 0 1 0 0 0 1 1 1 » B= [ 0 1 0 0 0 1 -1 10 0] B = 0 1 0 0 0 1 1 1 0 » A&B ans = 0 0 0 0 0 0 1 1 0 Note que foi aplicado o operador lógico AND e esse comparou cada elemento da matriz A com cada elemento da matriz B, sendo que sua resposta pode ser apenas 0 ou 1. Sendo que qualquer número diferente de 0, inclusive os negativos, é considerado 1 pois o MATLAB trabalha na linguagem binária. Os operadores lógicos possuem a precedência mais baixa relativamente aos operadores aritméticos e relacionais. A precedência entre os operadores lógicos se dá da seguinte maneira: NOT Maior precedência; AND e OR Têm igual precedência após NOT; 7.3. Comandos For – While - If Os comandos FOR, WHILE e IF controlam o fluxo e especificam a ordem e a estrutura de cálculo do programa. No MATLAB estes comandos são semelhantes aos usados na linguagem de programação C, mas com uma estrutura diferente. Nas próximas seções deste capítulo apresentaremos a estrutura de tomada de decisões IF e os dois comandos para gerar loops no MATLAB: o comando FOR e o comando WHILE. 7.3.1. Comando If Introdução ao MATLAB 46 Esta instrução permite que executemos um comando se a expressão lógica é verdadeira e um diferente comando se a expressão é falsa. A forma geral do comando if combinada à instrução else é mostrada a seguir: if expressão grupo de comandos A else grupo de comandos B end A seguir é apresentado um exemplo do uso da declaração if no MATLAB. Você pode fazê-lo na janela de comando ou ainda através do método .m novamente. for i = 1:5, for j = 1:5, if i = = j A(i,j)=2; else if abs(i-j) = =1 A(i,j) = -1; else A(i,j) = 0; end end end end A A = 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 -1 0 0 0 -1 2 Neste exemplo fizemos o uso do comando if, sendo que utilizamos, o que é normal, um dentro de outro. Sempre lembrando que no uso do comando if devemos ter uma seqüência que executa caso a condição seja verdadeira e outra que não é requerida, mas pode-se ter também, que execute um outro processo caso a condição seja falsa (else). Após o ciclo, pediu-se o valor da variável A para sabermos se realmente o comando funcionou. 7.3.2. Ciclo For Introdução ao MATLAB 47 O ciclo for é controlador de fluxo mais simples usado na programação MATLAB. Analisando a expressão: for i=1:5, x(i)=i^2; end Pode-se notar que o ciclo for é dividido em três partes: 1. i =1 é realizado antes do ciclo começar. 2. Testando a condição que controla o ciclo (i<=5). Se for o ciclo é executado. 3. Se o teste do ciclo for falso o ciclo termina devido ao comando end. Exemplo: for i = 1:8 for j = 1:8, A(i,j) = i + j; B(i,j) = i - j; end end C= A + B C = 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 12 12 12 12 12 12 12 12 14 14 14 14 14 14 14 14 16 16 16 16 16 16 16 16 Neste exemplo fizemos duas matrizes através de dois ciclos variando de 1 a 8 e ao fim disso fizemos a operação da soma dessas duas matrizes gerando uma matriz C que é dada por: C = A + B → C = (i + j) + (i - j) → C = 2i 7.3.3 Ciclo While No ciclo while apenas a condição é testada. Vamos fazer um exemplo agora utilizando o arquivo.m: Primeiro abra o menu File vá em New e em seguida seleciona M-file Agora na janela correspondente ao M-File escreva o seguinte comando: a=1;b=15; while a<b, clc disp('loop em curso') a=a+1 b=b-1 Introdução ao MATLAB 48 pause(2) end clc disp('fim do loop') Antes de mais nada, salve o arquivo como loop.m na mesma pasta onde você está rodando o programa. Nesse comando teremos uma comparação de dados entre as variáveis a e b começando com a valendo 1 e b valendo 15 e enquanto a for menor que b o ciclo segue e a cada ciclo a variável a é incrementada em 1 e a b perde uma unidade, isso ocorrerá até que a fique maior que b. Também é importante salientar o comando pause que é o tempo que o ciclo irá levar a mais que o normal, pois como sabemos o processamento se daria em frações de segundos e consequentemente não poderíamos observar o comando, por isso o pause de 2 segundos. Agora volte a janela de comando e digite loop que a instrução toda será processada. 7.4. Declarando Funções Para criarmos funções necessitamos trabalhar na janela de M-Files, para tanto, como você já sabe, vá em File→New→M-File. Antes de apresentarmos vamos dar as 3 regras principais para a criação de funções no MATLAB: 1. Deve-se ter ao menos o nome da função, a variável de entrada e a função f. 2. O arquivo .m deve ser salvo com o mesmo nome da função. 3. A função f deve ser igualada a função operacional. Vamos tornar mais claro esses pontos com um exemplo: function f = hema(x) f = x/24/30/12 Abrimos o M-File e digitamos function f e após isso igualamos a uma função que criaremos, no caso hema, que significa horas em ano sendo uma transformação. Na linha abaixo igualamos a função f ao corpo da função hema. E por último temos a nossa variável de entrada que é o x, que representa as horas. Pronto, agora basta salvar esse arquivo com o nome idêntico da função hema, após isso vamos à janela de comando principal e chamamos pela nova função: » hema(8640) f = 1 ans = Introdução ao MATLAB 49 1 No caso, está digitado exatamente o valor de um ano em horas, portanto a resposta é 1. Aplicação à Solução de Problemas: Fibras Óticas Se a luz está direcionada para o extremo de uma longa haste de vidro ou plástico, a luz será totalmente refletida pelas paredes, ziguezagueando e segue adiante até chegar a outra extremidade. Este interessante fenômeno ótico pode ser usado para transmitir luz e imagens regulares, de um lugar para outro. Se “guia de luz”, a luz seguirá a forma da haste e emergirá somente na extremidade, como mostramos na figura a seguir: A fibra ótica é uma fibra de vidro muito fina. Se os extremos das fibras são polidos e o arranjo espacial é o mesmo em ambos extremos (um feixe coerente), a fibra pode ser usada para transmitir uma imagem, e o feixe é chamado condutor de imagem. Se as fibras não têm o mesmo arranjo para ambos extremos (feixe incoerente), a luz é transmitida em vez da imagem, e por esta razão é chamada guia de luz. Por causa da flexibilidade das fibras óticas, as guias de luz e condutores de imagens são usadas em instrumentos projetados para permitir a observação visual de objetos ou áreas que de outro modo seriam inacessíveis. Por exemplo, um endoscópio é um instrumento usado por físicos para examinar o interior do corpo de um paciente com somente um pequeno corte. Um endoscópio usa uma fibra ótica para transmitir a luz necessária dentro do corpo de um paciente. As fibras óticas podem ser usadas para transmitir feixes de luz LASER, o qual
Compartilhar