matlab 7 - fundamentos - Élia yathie matsumoto

Upload: francox778

Post on 06-Jul-2018

234 views

Category:

Documents


1 download

TRANSCRIPT

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    1/377

    OPENCADD

    FUNDAMENTOS

    I n t e r f a c e M a t l a b ®D e s k t o p   • M a n i p u l a ç ã o  d e  M a t r i z e s

    In t r o d u ç ã o  à  P r o g r a m a ç ã o   • T r a t a m e n t o  d e  A r q u i v o s  d e  D a d o s  

    G r á f i c o s   • D e s e n v o l v i m e n t o  d e  In t e r f a c e s   G r á f i c a s  

    F u n ç õ e s  E s p e c i a l i z a d a s   • In t r o d u ç ã o  a o   Sy m b o l i c  M a t h  T o o l b o x

    ÉLIAYATHIEMATSUMOTO

    2a EDIÇÃO

     Exemplos do livro, respostas dos exercícios e 

    apêndice, complementar disponíveis na INTERNET.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    2/377

    MATLAB® 7 Fundamentos

    EDITORA AFILIADA

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    3/377

    Seja Nos so Parceiro no Co m bate à Cóp ia Ilegal

     A cópia ilegal é crime. Ao efetuá-la, o infrator estará cometendo um grave erro, que é inibir

    a produção de obras literárias, prejudicando profissionais que serão atingidos pelo crime

    praticado.

    Junte-se a nós nesta corrente contra a pirataria. Diga não à cópia ilegal.

     Ao preencher e remeter a ficha de cadastro constante no final desta publicação, você

    passará a receber informações sobre nossos lançamentos em sua área de preferência.

    Conhecendo melhor nossos leitores e suas preferências, vamos produzir títulos que atendam suas necessidades.

    Obrigado pela sua escolha.

    Eventuais problemas referentes ao conteúdo deste livro serão encaminhados ao(s)

    respectivo(s) autor(es) para esclarecimento, excetuando-se as dúvidas que dizem respeito

    a pacotes de softwares, as quais sugerimos que sejam encaminhadas aos distribuidores e

    revendedores desses produtos, que estão habilitados a prestar todos os esclarecimentos.

    Os problemas só podem ser enviados por:

    1. E-mail: [email protected] 

    2. Fax: (11) 6197.4060

    3. Carta: Rua São Gil, 159 - Tatuapé - CEP 03401-030 - São Paulo - SP

    Seu Cadastro É Mui to Importante para Nós

    Fale Conosc o!

    INVISTA EM VOCÊ.

    mailto:[email protected]:[email protected]

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    4/377

    Élia Yathie Matsumoto

    MATLAB® 7

    F u n d a m e n t o s

    Ed i to r a É r ica L tda .

    2006 - 2aEdição

    C o n s e lh o E d i t o r i al :Diretor Editorial:

    Diretor Comercial:

    Diretor de Publicidade:

    Capa:Editoração:

    Revisão Gramatical:

    Revisão de Diagramação:Coordenação e Revisão:

     Antonio Marco Vicari Cipelli

    Paulo Roberto Alves

    Waldir João Sandrini

    Maurício S. de FrançaÉrica Regina Pagano

    Pedro Paulo Vieira HerruzoDirce Yukie Yamamoto

    Rosana Ap. Alves dos SantosRosana Arruda da Silva

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    5/377

    Copyright © 2004 da Ed i to ra É r ica L tda .

    Dados In te rnac iona is de Ca ta logação na Pub l i cação (C IP)(Câmara Bras i le i ra do L iv ro , SP, B ras i l )

    Matsumoto, Élia YathieMATLAB® 7: Fundamentos / Élia Yathie Matsumoto. — 1. ed. —São Paulo:

    Érica, 2004.

    Bibliografia.ISBN 85-365-0032-8

    1. Cálculo numérico - Programas de computador. 2. MATLAB. I. Título.

    04-4725 CDD-519.40285

    Índices para catálogo sistemático1. MATLAB: Cálculo numérico: Programas: Processamento de dados 519.40285

    T o d o s o s d i r ei t o s r e s e r v ad o s . Proibida a reprodução total ou parcial, por qualquer meioou processo, especialmente por sistemas gráficos, microfílmicos, fotográficos, reprográfi-cos, fonográficos, videográficos, internet, e-books. Vedada a memorização e/ou recuperação total ou parcial em qualquer sistema de processamento de dados e a inclusão dequalquer parte da obra em qualquer programa juscibernético. Essas proibições aplicam-setambém às características gráficas da obra e à sua editoração. A violação dos direitos

    autorais é punível como crime (art. 184 e parágrafos, do Código Penal, conforme Lein² 10.695, de 07.01.2003) com pena de reclusão, de dois a quatro anos, e multa, conjuntamente com busca e apreensão e indenizações diversas (artigos 102, 103 parágrafo único,104, 105, 106 e 107 itens 1, 2 e 3 da Lei n2 9.610, de 19/06/98, Lei dos Direitos Autorais).

     A Autora e a Editora acreditam que todas as informações aqui apresentadas estão corretase podem ser utilizadas para qualquer fim legal. Entretanto, não existe qualquer garantia,explícita ou implícita, de que o uso de tais informações conduzirá sempre ao resultadodesejado. Os nomes de sites e empresas, porventura mencionados, foram utilizadosapenas para ilustrar os exemplos, não tendo vínculo nenhum com o livro, não garantindo asua existência nem divulgação. Eventuais erratas estarão disponíveis no site da EditoraÉrica para download.

    Ed i to ra É r ica L tda .

    Rua São Gil, 159 - Tatuapé

    CEP: 03401-030 - São Paulo - SP

    Fone: (11) 2295-3066 - Fax: (11) 6197-4060

    w w w . e d i t o r a e r i c a . c o m . b r  

    http://www.editoraerica.com.br/http://www.editoraerica.com.br/

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    6/377

    Fabricante

    Produto: MATLAB® 7 (Release 14)

    Desenvolvedor:The MathWorks, Inc.

    e-mail: [email protected] 

    site: www.mathworks.com

    Distribuidor no Brasil:

    Opencadd Advanced Technolog y

     Av. Brig. Faria Lima, 1931 - Cj. 42 - 4oandar

    São Paulo - SP -01452-001

    Tel/Fax: (11)1816-7864

    e-mail: [email protected]  

    www.opencadd.com.br 

    mailto:[email protected]://www.mathworks.com/mailto:[email protected]://www.opencadd.com.br/http://www.opencadd.com.br/mailto:[email protected]://www.mathworks.com/mailto:[email protected]

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    7/377

    Sobre o Material Disponível na Internet

    O material disponível no site da Editora Érica contém todos os arquivos de exemplos eexercícios apresentados no livro, as respostas dos exercícios propostos no Apêndice Ae um apêndice complementar contendo um resumo das novidades do CD Release 14.

    Para utilizar este material, é necessário ter o software MATLAB® 7 corretamentenstalado em seu equipamento e o Adobe Acrobat Reader 3 ou versão mais recente.

    MATLAB7_A.exe -1 .08 M B MATLA B7_B.exe - 2.00 MB

    Procedimento para Download

    Acesse o site da Editora Érica Ltda.: www.editoraerica.com.br . A transferência dosarquivos disponíveis pode ser feita de duas formas:

    ♦ Por meio do módu lo pesquisa. Localize o livro desejado, digitando palavras-c haves (nome do livro ou do autor). Aparecerão os dados do livro e os arquivospara download, então dê um clique sobre o primeiro arquivo executável que serátransferido. Repita o procedimento para o segundo arquivo.

    ♦ Por meio do botão " Download" . Na página principal do site, clique no item

    "Download". Será exibido um campo, no qual devem ser digitadas palavras-chaves(nome do livro ou do autor). Serão exibidos o nome do livro e os arquivos paradownload. Dê um clique sobre o primeiro arquivo executável que será transferido.Repita o procedimento para o segundo arquivo.

    Procedimento para Descom pactação

    Primeiro passo:  após ter transferido os arquivos, verifique o diretório em que se

    encontram e dê um duplo-clique sobre eles. Será exibida uma tela do programa WINZIPSELF-EXTRACTOR que conduzirá você ao processo de descompactação. Abaixo doUnzip To Folder, existe um campo que indica o destino dos arquivos que serãocopiados para o disco rígido do seu computador.

    C:\MATLAB7 Fundamentos

    Segundo passo:  prossiga com a instalação, clicando no botão Unzip, o qual seencarrega de descompactar os arquivos. Logo abaixo dessa tela, aparece a barra de

    status a qual monitora o processo para que você acompanhe. Após o término, outra telade informação surgirá, indicando que os arquivos foram descompactados com sucessoe estão no diretório criado. Para sair dessa tela, clique no botão OK. Para finalizar oprograma WINZIP SELF-EXTRACTOR, clique no botão Close.

    http://www.editoraerica.com.br/http://www.editoraerica.com.br/

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    8/377

    Requisi tos de Hardware e de Software

    Este livro foi escrito com base na versão MATLAB® 7 para ambiente Windows XP.

    Para este ambiente, os requisitos básicos são:

    ♦ microcomputador com processador:Pentium III, IV, Xeon, M

     AMD Athlon

    - Athlon XP/MP

    ♦ monitor de vídeo gráfico (16,24, ou 32 bits, OpenGL recomendável);

    ♦ unidade de CD-ROM (4x ou superior);

    ♦ unidade multimídia;♦ mouse ou outro dispositivo de entrada;

    ♦ impressora ou outro dispositivo de saída gráfica;

    ♦ no caso de licenças individuais: porta USB para instalação do dispositivo deproteção (hardware lock)

    ♦ no caso de licenças em rede: TCP/IP com acesso ao equipamento servidor da redeno qual o programa de gerenciamento de licenças FLEXIm deve estar correta e

    adequadamente instalado.Os requisitos de espaço em disco para instalação, memória RAM, espaço livre em discopara execução podem variar de acordo com o tipo de instalação e necessidade dedesempenho:

    Requisito Mínimo Necessário Recomendável

    Espaço em disco para

    instalação

    1.0 GB (instalação sem

    documentação)

    1.5 GB (instalação com

    documentação completa)Memória RAM 256 MB 1.0 GB

    Espaço livre para execução 1.0 GB 3.0 GB

    Sistema operacional para plataforma Windows

    ♦ Windows XP

    ♦ Windows 2000 (Service Pack 3 ou 4)

    ♦ Windows NT 4.0 (Service Pack 5 ou 6 a)

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    9/377

    Software

    ♦ MATLAB® 7.0 (Release 14)

    ♦ Symbolic Math Toolbox 3.1 (Release 14)

    Aplicativos adicionais

    ♦ Internet Browser (ex.: Internet Explorer, Netscape);

    ♦ Adobe Acrobat Reader 3.0 (ou superior);

    ♦ Microsoft Office 2000/XP;

    ♦ Compilador C/C++ (ex.: Microsoft Visual .NET).

    Outras plataformas suportadas pelo MATLAB® 7

    Sistema Operacional Processador  

    Sun Solaris 2.8/2.9 SPARC ULTRA

    HP-UX 11.0/11i PA-RISC 2.0

    Linux 2.4.x Pentium, AMD, Athlon

    glibc (glibc6 ) 2.2.5 Pentium, AMD, Athlon

    Mac OS X 10.3.2 (Panther) Power Mac G4 / G5

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    10/377

    Dedicatória

    Para Gabriel e Yasmin.

    "... e que eu seja tão bondoso e alegreque todos quantos se aconcheguem

    a mim sintam a Tua presença."

    Oração da Manhã São Francisco de Assis

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    11/377

    Sobre a Autora

    Élia Yathie Matsumoto, bacharel em Ciência da Computação pelo Instituto deMatemática e Estatística da Universidade de São Paulo, com extensão universitária emCapacitação Gerencial na FIA/USP, é sócia-diretora da Opencadd Advanced

    Technology, na qual coordena a área de tecnologia e treinamento desde 1990.

    É autora dos seguintes livros, publicados pela Editora Érica:

    ♦ AutoCAD® R14 Fundamentos (1997)

    ♦ AutoLISP® Linguagem de Programação do AutoCAD (1998)

    ♦ AutoCAD® 14 em Português (1999)

    ♦ AutoCAD® 2000 Fundamentos (2000)

    ♦ MATLAB® 6 Fundamentos (2001)

    ♦ AutoCAD® 2002 Fundamentos (2001)

    ♦ AutoLISP® 2002 Linguagem de Programação do AutoCAD (2001)

    ♦ MATLAB® 6.5 Fundamentos de Programação (2002)

    ♦ Simulink® 5 Fundamentos (2003)

    ♦ AutoCAD® 2004 Fundamentos (2004)

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    12/377

    Prefácio

    "O mundo anda tão complicado e hoje eu quero fazer tudo ..."

    Renato Russo

    Hoje, já não é suficiente que as indústrias produzam com eficiência e busqueminovações. É quase obrigatório que elas estejam comprometidas com a melhoria dosprocessos de produção para reduzir impactos ambientais negativos e garantir umcrescimento auto-sustentável.

    No caso do mercado financeiro, o estabelecimento de uma infra-estrutura eficiente eacessível de intercomunicação mundial (Internet, e-mail, comunicação wireless,  etc.)

    permitiu o surgimento de sofisticados produtos financeiros tão difíceis de serementendidos quanto de terem seu risco gerenciado.

    Nas universidades e faculdades, professores e estudantes desesperam-se com acomposição dos currículos escolares. O tempo disponível para os cursos parece sersempre insuficiente para cobrir todos os assuntos gerados pelo acelerado crescimentoda produção de informação e inovação tecnológica.

    Desta forma, todos acabamos tendo que enfrentar o grande desafio de resolver

    questões complexas aparentemente insolúveis.Nas áreas técnicas, a busca de soluções para esses problemas demanda estudo epesquisa que podem ser extremamente beneficiados com a adoção de ferramentascomputacionais adequadas.

    Neste contexto, o MATLAB® é tido como produto líder na área de computação numéricae científica, adotado como ferramenta padrão de desenvolvimento pelas principaisuniversidades e empresas, contando com mais de 1 milhão de usuários no mundo. No

    Brasil, o este software está presente em todas universidades de primeira linha (porexemplo: USP, UNICAMP, ITA, UnB, UNESP, Federais, PUCs), bem como nosdepartamentos de engenharia e desenvolvimento das principais empresas do país, taiscomo: Embraer, Petrobrás, Banco Central do Brasil, BankBoston, Banco Itaú, Citibank.

    Preparamos este livro para ser um material introdutório, objetivo e didático, quepossibilite a rápida capacitação de estudantes e profissionais para utilização doMATLAB® 7, podendo ser utilizado como material de apoio de cursos em vários níveisde ensino (técnico, superior ou pós-graduação), treinamentos empresariais e até em

    escolas de segundo grau.

    O escopo do livro é a utilização dos recursos do MATLAB®, ou seja, não temos apretensão de ensinar teorias e conceitos básicos de matemática, engenharia oulinguagem de programação. Na verdade, esses conhecimentos são pré-requisitosfundamentais para o completo aproveitamento do conteúdo apresentado.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    13/377

    Para facilitar a leitura e compreensão dos assuntos, principalmente para os iniciantes,procuramos utilizar uma linguagem simples e acessível, sem muito rigor formal, semcontudo comprometer a precisão técnica das informações.

    Desde a sua primeira versão, lançada comercialmente em 1984, o MATLAB® vemsendo utilizado por estudantes, professores, pesquisadores, cientistas, engenheiros eprofissionais de tecnologia de informação como ambiente de trabalho básico para

    criação, análise e simulação de modelos matemáticos aplicados às mais diversas áreas,desde automação e controle industrial, passando por gerenciamento de risco financeiro,até pesquisas avançadas em biotecnologia e bioinformática.

    Em junho de 2004, foi lançado o CD "Release 14" com as novas versões dos produtosda The MathWorks (empresa desenvolvedora do MATLAB®): MATLAB® 7, Simulink® 6,12 novos produtos e 17 atualizações.

    Esperamos que este trabalho acelere os "primeiros passos" de usuários novatos, e

    facilite os "passos de transição" para o MATLAB® 7 de usuários veteranos, de tal formaque todos possam rapidamente aproveitar as vantagens oferecidas por esta novaversão.

    Como informação complementar, o livro contém um capítulo de introdução ao uso doSymbolic Math Toolbox, aplicativo do MATLAB® dedicado à matemática simbólica.

    Todos os exemplos utilizados no livro e as respostas dos exercícios estão disponíveisno site da Editora Érica para download.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    14/377

    Apresentação

    O objetivo deste livro é capacitar o leitor para utilização do MATLAB® 7 naimplementação de soluções neste ambiente, que integra:

    ♦ biblioteca de funções matemáticas extremamente eficiente em processamento

    numérico baseado em matrizes;

    ♦ sofisticados recursos de geração de gráficos para visualização e análise de dados;

    ♦ poderosa linguagem de programação de alto nível e de codificação simples;

    ♦ interface de troca de dados com sistemas externos.

    Programar em MATLAB® é, sem dúvida, mais simples, rápido e eficiente do que emqualquer outra linguagem de programação convencional como C/C++, VBA ou Fortran.

    Tanto que a própria The Mathworks, com o apoio de empresas e consultoriasespecializadas, desenvolve e comercializa bibliotecas de rotinas MATLAB® (m-files), denominadas 'Toolbox',  aplicadas a áreas específicas como estatística, otimização,controle, redes neurais, finanças, totalizando mais de 70 títulos.

     Além disso, estudantes e profissionais em instituições acadêmicas e centros de pesquisa ao redor do mundo costumam disponibilizar, na Internet, os m-files desenvolvidospara resolver problemas em áreas específicas.

    Este livro está organizado em sete capítulos:Capítulo 1: Introdução - Descreve o ambiente interativo do MATLAB® 7 na plataformaPC/Windows XP.

    Capítulo 2: Conceitos - Apresenta os principais conceitos de utilização do MATLAB® 7por meio de exemplos, exercícios práticos e tutoriais.

    É recomendável que a leitura deste capítulo seja feita com o programa aberto e emexecução, para que o leitor possa praticar os exercícios ao longo da leitura.

    Capítulo 3: Programação - Expõe os principais comandos e as principais funções dalinguagem de programação do software, com suas sintaxes mais típicas.

    Este capítulo não precisa, necessariamente, ser lido do início ao fim. Pode ser utilizadocomo um manual de consulta e referência.

    Capítulo 4: Leitura e Gravação de Arquivos - Descreve as principais funções deleitura e gravação de arquivos de vários tipos de formatos.

    Capítulo 5: Gráficos e Handle Graphics ® - Apresenta os recursos gráficos doMATLAB® 7 e as funções Handle Graphics®, que gerenciam objetos gráficos.

    Capítulo 6: Criação de Interface Gráfica com Usuário - Mostra como desenvolverimplementação de interface com usuário utilizando as funções de caixa de diálogopredefinidas e os recursos do GUIDE.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    15/377

    Capítulo 7: Introdução Symbolic Math Toolbox - Faz uma introdução ao uso doSymbolic Math Toolbox, aplicativo do MATLAB® para matemática simbólica.

    Possui também um apêndice com exercícios propostos.

    Além disso, no site da Editora Érica, estão disponíveis todos os arquivos de exemplos eexercícios apresentados no livro, as respostas dos exercícios propostos no Apêndice A

    e um apêndice complementar contendo um resumo das novidades do CD Release 14.

    Convenções Utilizadas no Livro

    ♦ Nom enclaturas e Expressões Estrangeiras

    Optamos por não traduzir nomenclaturas e expressões estrangeiras. Nestes casos, aspalavras são grafadas em itálico.

    Exemplo: menu pop-up, workspace, online help, prompt.

    ♦ Opçõ es de menus e caixas de diálogo

    São grafadas entre [ ].

    Exemplo: Opção [Set Path...] do menu pop-up [File]-------►

    ♦ Linhas de com ando do MATLAB®

    São delimitadas por um retângulo e grafadas com fonte Courier.

    Exemplo:

    ♦ Linhas de prog rama do editor do MATLAB® (Edit)

    São delimitadas por um retângulo de fio duplo e grafadas com fonte Courier.

    Exemplo:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    16/377

    Índice Analítico

    Capítulo 1. introdução...............................................................................................................19

    Capítulo 2. Conceitos................................................................................................................252.1. O Que É MATLAB®7...........................................................................................................25

    2.2. Números, Vetores e Matrizes............................................................................................26

    2.3. Operadores e Funções........................................................................................................31

    2.3.1. Operadores................................................................................................................... 31

    2.3.2. Funções..........................................................................................................................35

    2.3.3. Manipulação de Matrizes............................................................................................372.3.4. Indexação de Elementos de Matrizes......................................................................38

    2.3.5. Vetores Seqüenciais...................................................................................................42

    2.3.6. Funções Matriciais Elementares...............................................................................44

    2.4. Outros Tipos de Objetos..................................................................................................... 45

    2.4.1. Matriz Tridimensional..................................................................................................45

    2.4.2. Cadeia de Caracteres (String)...................................................................................462.4.3. Matriz de Células (Cell Array).....................................................................................47

    2.4.4. Estrutura (Struct)..........................................................................................................49

    2.5. Outros Tipos de Dados Numéricos...................................................................................50

    2.6. Gráficos..................................................................................................................................53

    2.6.1. Gráfico Bidimensional..................................................................................................54

    2.6.2. Gráfico Tridimensional.................................................................................................60

    2.7. Leitura e Armazenamento de Dados................................................................................62

    2.7.1. Arquivo MAT..................................................................................................................62

    2.7.2. Arquivo ASCII................................................................................................................63

    2.7.3. Arquivo MS-Excel.........................................................................................................67

    2.7.4. Utilitário de Importação de Dados.............................................................................68

    2.8. Programação no MATLAB® 7 ............................................................................................69

    2.8.1. Editor de Programas: edit...........................................................................................70

    2.8.2. Depuração de Programas: Debug Mode...................................................................72

    2.8.3. Analisador de Sintaxe de Programas:M-Lint............................................................74

    2.8.4. Elementos de Programação do MATLAB® 7...........................................................75

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    17/377

    2.8.5. Estatística de Execução de Programa.......................... ..........................................84

    2.9. Criação de Interface Gráfica com Usuário........................................................................86

    Capítulo 3. Programação........................................................................................................97

    3.1. Ambiente MATLAB® 7 .........................................................................................................98

    3.1.1. MATLAB® Desktop.......................................................................................................99

    3.1.2. Utilitários e Arquivos Especiais...............................................................................118

    3.2. Operações Matemáticas no MATLAB® 7........................................................................121

    3.2.1. Funções Matemáticas Elementares........................................................................121

    3.2.2. Vetores e Matrizes.....................................................................................................123

    3.2.3. Álgebra Linear............................................................................................................138

    3.2.4. Análise de Dados e Transformada de Fourier..................................................... 147

    3.2.5. Polinômios..................................................................................................................155

    3.2.6. Interpolação................................................................................................................158

    3.2.7. Conversão de Sistemas de Coordenadas............................................................. 164

    3.2.8. Métodos Numéricos Não-lineares...........................................................................165

    3.2.9. Matrizes Esparsas......................................................................................................175

    3.3. Programação......................................................................................................................1803.3.1. Estrutura e Tratamento de Dados.........................................................................181

    3.3.2. Operadores.................................................................................................................199

    3.3.3. M-files.........................................................................................................................207

    3.3.4. Fluxo de Programação............................................................................................. 213

    Capítulo 4. Leitura e Gravação de Arquivos.....................................................................2194.1. Construção de Nome de Arquivo...................................................................................219

    4.2. Utilitários de Abertura e Gravação de Arquivos............................................................ 221

    4.3. Funções de Entrada/Saída de 'baixo nível1.................................................................. 226

    4.4. Arquivos de Formatos Específicos.................................................................................233

    4.4.1. Arquivos ASCII...........................................................................................................233

    4.4.2. Planilhas *.XLS e *.WK1..........................................................................................2364.4.3. Arquivos de Áudio.................................................... ................................................239

    4.4.4. Arquivos de Imagem.................................................................................................242

    4.4.5. Dados de Animação..................................................................................................245

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    18/377

    4.4.6. Troca de Dados com Internet

    4.4.7. Outros Tipos de Funções.....

    247

    252

    Capítulo 5. Gráficos e Handle Graphics ® .........................................................................255

    5.1. Gráficos...............................................................................................................................255

    5.1.1. Utilitário Plot Tools ....................................................................................................2555.1.2. Exportação e Impressão de Figuras.......................................................................266

    5.1.3. Utilitário Basic Fitting................................................................................................268

    5.1.4. Utilitário Data Statistics.............................................................................................269

    5.1.5. Funções Gráficas 2D................................................................................................270

    5.1.6. Funções Gráficas 3D................................................................................................278

    5.1.7. Gráficos de Fórmulas Matemáticas........................................................................2865.1,8. Acabamento de Superfícies....................................................................................290

    5.1.9. Visualização 3D.........................................................................................................295

    5.2. Handle Graphics®..............................................................................................................296

    5.2.1. Criação de Figuras e Objetos Gráficos.................................................................297

    5.2.2. Manipulação de Figuras e Objetos Gráficos........................................................300

    Capítulo 6. Criação de Interface com Usuário ...............................................................305

    6.1. Caixas de Diálogo..............................................................................................................305

    6.2. Entrada Interativa de Dados............................................................................................314

    6.3. Utilitário GUIDE.................................................................................................................317

    6.3.1. Menu Pop-up do GUIDE...........................................................................................320

    6.3.2. Barra de Ferramentas do GUIDE............................................................................321

    6.3.3. Objetos de Controle.................................................................................................325

    Capítulo 7. Introd ução ao Symbolic Math Too lbox .......................................................339

    7.1. Conceitos............................................................................................................................ 340

    7.1.1. Símbolos.....................................................................................................................340

    7.1.2. Criação de Variáveis e Expressões Simbólicas...................................................341

    7.1.3. Substituição de Variáveis Simbólicas porNúmeros.............................................343

    7.1.4. Gráficos de Expressões Simbólicas.......................................................................344

    7.2. Funções por Categoria.....................................................................................................344

    7.2.1. Cálculo........................................................................................................................344

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    19/377

    7.2.2. Simplificação e Substituição..................................................................................348

    7.2.3. Aritmética de Precisão Variada.............................................................................352

    7.2.4. Álgebra Linear...........................................................................................................353

    7.2.5. Solução de Equações...........................................................................................354

    7.2.6. Funções de Conversão..........................................................................................357

    7.2.7. Transformadas......................................................................................................... 3597.2.8. Funções de Formatação.......................................................................................361

    7.2.9. Funções Especiais..................................................................................................363

    Apêndice A. Exercícios Pro po sto s ...................................................................................365

    Índice Remissivo ................................................................................................................... 369

    Referências Bibliográficas ................................................................................................. 375

    Marcas Registradas...............................................................................................................376

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    20/377

    C a p í t u l o 1

    Introdução

    Neste capítulo, descrevemos os aspectos genéricos do ambiente interativo e da tela detrabalho principal do MATLAB® 7

    O  MATLAB® 7 possui versões para os seguintes ambientes operacionais: Windows,LINUX, Sun-Solaris e Mac OS (veja página 8).

    Este livro está baseado na versão para ambiente Windows XP.

    Neste caso, após a correta instalação, o aplicativo pode ser acionado pormeio de seu ícone de tela.

    Em seguida, você vê a tela do MATLAB® 7 Desktop,  cuja configuração padrão tem o

    seguinte layout:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    21/377

    A. [Command Window] - janela de trabalho na qual são digitados dados e instruçõespara o MATLAB® 7 e são exibidos os resultados das operações executadas.

    B. [Current Directory] - janela na qual é exibida a lista de arquivos contidos no diretóriocorrente.

    C. [Workspace] - janela na qual é exibida a lista de variáveis definidas na janela de

    trabalho [Command Window],D. [Command History] - janela na qual ficam armazenadas todas as instruções

    executadas na janela de trabalho [Command Window].

    E. Menus pop-up: comandos de configuração e acesso a utilitários do MATLAB® 7.

    F. Barra de Ferramentas (menus de ícones): ícones de acesso rápido a comandos eutilitários.

    G. Botão [Start]: opções de acesso rápido a comandos e utilitários.

    H. Ícone de encerramento da sessão. A sessão do MATLAB® 7 pode ser encerradapelo comando quit:

    Todos esses componentes estão detalhados no tópico 3.1 deste livro.

    O MATLAB® 7 utiliza tecnologia Java Virtual Machine  (JVM) e segue as mesmas

    convenções de interatividade típicas deste tipo de ambiente:

    ♦ Botão esquerdo do mouse   (botão de seleção): executa ação de acordo com ocontexto no qual o objeto é selecionado.

    Por exemplo: indicação, com botão esquerdo do mouse, do arquivo de programa(m-file) circuito.m na janela• [Current Directory], abre arquivo no editor deprogramas EDIT.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    22/377

    ♦ Botão direito do mouse  (botão de menu contextuai): abre menu contextuai, ouseja, um menu flutuante cujas opções variam de acordo com o contexto no qual omenu foi aberto.

    Por exemplo: indicação,com botão direito domouse,  do arquivo

    circui to.m na janela[Current Directory], abre omenu contextual comopções de operações válidas para o arquivo. Nocaso da janela [CommandHistory], abre o menucontextual com opções de

    operações válidas para oconjunto de instruçõesselecionadas.

    ♦ Tec las [ ^ ] [ ^ ] na janela [Command Window]: repetem os comandos digitados.

    ♦ Resizing Tools:  tanto os tamanhos das janelas quanto os espaçamentos dasdivisões internas podem ser modificados com o cursor:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    23/377

    ♦ M oving Tools within the Desktop: as janelas podem ser movidas de uma posiçãopara outra por meio de 'drag-and-drop'.

    Por exemplo: 'drag-and-drop', ou seja, clique a arraste a janela [Current Directory]:

    ela pode ser deslocada para baixo e ocupar a mesma área que a janela[Command History], que passa a acomodar duas pastas;

    ou, para a área da janela [Command Window], que é dividida em duas.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    24/377

    ♦ M o v i n g T o o l s o u t o f / in t o t h e M A T L A B ® 7 D e s k to p : 'undock' (retira) / 'dock'(encaixa) a janela na tela principal do MATLAB® 7.

    Por exemplo:

    clique na janela [Current Directory] para retirá-la da tela.

    clique para restaurar.

    O menu pop-up  [Desktop] contém opções de configuração de posicionamento de janelas (Desktop Layout).

    Essas configurações podem ser armazenadas e restauradas.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    25/377

    Todos esses recursos estão descritos minuciosamente no tópico 3.1 deste livro.

    Para finalizar este capítulo introdutório sobre aspectos genéricos de interatividade doMATLAB® 7, um último assunto merece atenção.

    O MATLAB® 7 permite que comandos do sistema operacional sejam acionados a partirde instruções digitadas na janela [Comando Window]:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    26/377

    Capít u l o   2

    Conceitos

     Acreditamos que uma das formas mais eficientes de se aprender a utilizar um softwareé trabalhar com ele.

    Com o MATLAB® 7 não é diferente; portanto, na medida do possível, use-o e repita osexemplos e exercícios descritos neste capítulo pois, por meio deles, apresentamos osprincipais conceitos de utilização do MATLAB® 7.

    2.1. O Que É MATLAB® 7

    Pode ser definido como um software cujo elemento básico de trabalho são matrizes (o

    nome MATLAB vem do inglês 'MATrix LABoratory),  no qual problemas podem serfacilmente expressos em notação matemática e rapidamente solucionados por meio decálculos computacionais eficientes e confiáveis.

     Aplicações típicas deste software incluem:

    ♦ matemática e computação;

    ♦ desenvolvimento de algoritmos;

    ♦ aquisição e análise de dados;

    ♦ visualização de resultados;

    ♦ modelamento, simulação e prototipação;

    ♦ desenvolvimento de aplicativos.

    Neste contexto, os recursos do MATLAB® 7 podem ser divididos em cinco grandescategorias:

    I. Am biente de desenvolvim ento: consiste no ambiente interativo do programa

    propriamente dito, ou seja, o MATLAB® 7 Desktop  ([Command Window], outras janelas e menus), no qual o usuário pode facilmente elaborar instruções ecomandos para testar idéias e verificar resultados.

    II. Bibl ioteca de fun çõ es matemátic as do MATLAB® 7: núcleo do MATLAB® 7,composto por mais de 1.000 funções, desde as mais elementares, como soma e

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    27/377

    subtração, até as mais sofisticadas, como inversa de matrizes, transformadas deFourier, solvers de equação diferencial ordinária.

    III. Ling uagem de pro gram ação MATLAB® 7: linguagem de alto nível, cuja estruturade dados principal são matrizes que não precisam ser previamente dimensionadas. Além disso, a linguagem é 'orientada por objetos', o que torna suaprogramação mais simples e eficiente do que a programação em C/C++, Fortranou qualquer outra linguagem de programação tradicional.

    IV. Recursos gráfico s do MATLAB® 7: biblioteca de funções gráficas do MATLAB,que disponibiliza recursos poderosos e flexíveis para a criação de gráficos paravisualização de resultados.

    V. MATLAB® 7 App licati on Prog ram Interface (AP I): biblioteca que permite integraro programa com funções desenvolvidas em C e Fortran.

    No capítulo 1 deste livro, introduzimos os principais elementos do ambiente dedesenvolvimento do MATLAB® 7 Desktop (item I da lista anterior). Nos próximos tópicos

    deste capítulo, apresentamos os conceitos básicos dos itens II, III, IV.

    2.2. Números, Vetores e Matrizes

    Como já mencionado, o tipo de objeto (estrutura de dados) básico do MATLAB® 7 sãomatrizes, que podem ser:

    ♦ um escalar (número): matriz com dimensão 1x1:

    ♦ um vetor linha: matriz com dimensão 1x n:

    ♦ um vetor coluna: matriz com dimensão n x 1:

    ♦ uma matriz bidimensional: matriz com dimensão m x n:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    28/377

    ♦ um matriz tridimensional (ou vetor multi-dimensional): matriz com dimensão m x n x p

    O MATLAB utiliza a seguinte notação para representar números:

    ♦ sinal - para indicar número negativo;

    ♦ para indicar casa decimal;♦ 'e' para notação científica;

    ♦ 'i 'e 'j' para notação de números complexos (raiz imaginária).

    Por exemplo, na janela [Com m nd Window] do MATLAB® 7, digite:

    Observação: 'ans' é o nome da variável reservada do MATLAB® 7 que armazena o resultado

    da última operação executada na linha de comando do programa. _________________________ 

    O MATLAB® 7 possui constantes numéricas predefinidas, cujos valores são determinados pela precisão numérica do processador matemático do equipamento no qual osoftware está instalado:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    29/377

     Além disso, o MATLAB® 7 possui dois símbolos não-numéricos utilizados para representar situações de descontinuidade:

    Exemplos (arquivo cap2_exemplo_01.m):

    O formato de exibição dos números é configurado pelo comando format.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    30/377

    Vetores e matrizes são definidos com a seguinte notação:

    ♦ '[' indica início de definição de matriz;

    ♦ ']' indica final de definição de matriz;

    ♦ ' ' ou ',' separa elementos na mesma linha, definindo colunas;

    ♦ finaliza definição de linha.

    Exemplos (arquivo cap2_exemplo_02.m):

    Números, vetores e matrizes podem ser armazenados em variáveis. No MATLAB® 7,nome de variável segue a seguinte convenção:

    ♦ Deve ser uma seqüência alfanumérica começando com letra. Exemplo: x i , m a t2,V a l o r ;

    ♦ É case-sensitive,  ou seja, diferencia letras minúsculas e maiúsculas. Exemplo:v a l o r é diferente de v a l o r.

    ♦ Aceita no meio do nome. Exemplo: m a t _ 2 _ x _ 3 ,

    ♦ A função namel engthma x retorna o tamanho máximo do nome de variável emnúmero de caracteres. No ambiente Windows, este valor é 63.

    Exemplo:

    Observação: as informações digitadas na janela [Command Window] ficam armazenadas na janela [Command History], Visualmente, o conteúdo da janela [Command Window] pode serapagado pelos comandos: _________ 

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    31/377

    » clc

     Apaga a janela e leva o cursor para o topo da tela.

    » home

    Leva o cursor para o topo da tela, mantendo as linhas anteriores.

    Conforme mencionado no capítulo 2 , as variáveis definidas na janela [CommandWindow] ficam armazenadas na memória do MATLAB® 7, em uma área denominadaWorkspace, cujo conteúdo é exibido na janela [Workspace],

    O conteúdo das variáveis é exibido pelo editor de variáveis, [Array Editor], acionável porum 'duplo-clique' no nome da variável listada na janela [Workspace].

    ;

    : ï

    Os principais comandos de consulta e manipulação do [Workspace] são: :

    Comando Descr ição Exemplo

    who lista os nomes das variáveis» whoYour variables are: ans mat_2_x_3

    whos lista os nomes ecaracterísticas das variáveis

    » whos Name Size Bytes Classans lxl 8 double array

     mat_2_x_3 2x3 48 double array

    clear  elimina variáveis da lista» clear mat_2_x_3

    elimina todas as variáveis » clear

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    32/377

    2,3. Operadores e Funções

    No MATLAB® 7, expressões matemáticas são compostas por:

    ♦ números, vetores, matrizes;

    ♦ variáveis;

    ♦ resultados de execução de operadores e funções.

    2.3.1. Operadores 

    Operadores aritméticos trabalham com números, vetores e matrizes.

    Considere (arquivo eap2_exemplo_03.m):

    Operador  Descrição Exemplo

    + Soma

    » a+b ans =

    6 8 10 12

    - Subtração

    » a-b ans =

    -4 -4 -4 -4

    * Multiplicação matricial

    » a*b ans =

    19 22 43 50

    * Multiplicação escalar » a.*b ans =

    5 12 21 32

    /Divisão matricial(a/b equivale a a*b'1)

    » a/b ans =

    3.0000 -2.00002.0000 -1.0000

    ./ Divisão escalar 

    » a./b ans =

    0.2000 0.3333 

    0.4286 0.5000

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    33/377

    Operador Descrição Exemplo

    \Divisão 'esquerda'(a\b equivale a a~1*b)

    » a\b ans =

    -3.0000 -4.0000 4.0000 5.0000

     A Potência (matrizAescalar)(aA3 equivale a a*a*a)

    » a~3 ans =

    37 54 81 118

     A  Potência escalar (matriz ,Amatriz - elemento a elemento)

    » a.^b ans =1 64 

    2187 65536

    1 Transposta

    » a' ans =

    1 32 4

    ( ) Precedência

    » a+b*a ans =

    24 36 34 50 

    » (a+b)*a ans =

    30 44 46 68

    Observação: para inibir a exibição do resultado da operação na tela, coloque o sinalnofinal da linha de comando.

    » c=a*b;'

    » cc =

    19 2243 50

     As matrizes devem ter dimensões compatíveis com as operações solicitadas.

    » a = [1 2 3 4 3 ; % a 2x2» b=[5 6 % b lx2» a*b % Erro: as dimensões incompatíveis a 2X2  * b lx2

    ??? Error using ==> mtimesInner matrix dimensions must agree.

    » b*a % Dimensões compatíveis b ix2 * a 2x2, o resultado é um vetor1x2

    ans =23 34

    Para recordar alguns conceitos de matemática relacionados à álgebra matricial e ilustrara utilização dos operadores, propomos dois exercícios.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    34/377

    Exercício 1 O

    Considere as seguintes tabelas com dados de uma montadora de automóveis:

    a. Quantidade de carros do tipo C1 e C2 produzidos em Janeiro e Fevereiro:

    Tipo de Carro / Mês Produção em Janeiro Produção em Fevereiro

    Carro C1 1 0 0 1 2 0Carro C2 2 0 0 180

    b. Custo de produção, em milhares de unidades monetárias, de cada carro tipo C1 eC2 em Janeiro e Fevereiro.

    Tipo de Carro / Mês Custo em Janeiro Custo em Fevereiro

    Carro C1 $ 10 .0 $9.8

    Carro C2 $ 6 .0 $ 6.1

    I. Crie duas matrizes no MATLAB para representar as tabelas precedentes.

    II.  Armazene na variável m1 a multiplicação escalar das matrizes a e b.

    III. Qual é o significado do resultado obtido na variável m1?

    Solução dos itens I e II (arquivo cap2_exercicio_01.m):

    % Solucao do item I » a = [100 120; 200 180] a =

    100  120200 180 

    » b = [10 9.8; 6 6.1]  b =

    10.0000 9.80006.0000  6.1000

    % Solucao do item II » ml=a.*b 

     ml =1000 11761200 1098

    Solução do item II):

     A multiplicação escalar multiplica os elementos das matrizes elemento a elemento:

    m1 (1 ,1 ) = a(1 ,1 ) * b(1 ,1 )

    m1 (1 ,2 ) = a(1 ,2 ) * b(1 ,2 )

    f> Fonte: programação 'Vestibulando Digital' exibido pela TV Cultura - São Paulo.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    35/377

    m1 (2 ,1 ) = a(2 ,1 ) * b(2 ,1 )

    m1 (2 ,2 ) = a(2 ,2 ) * b(2 ,2 )

    Desta forma, m1 (1,1) contém a quantidade de carros tipo C1 produzidos em Janeirovezes o custo de produção de cada carro C1 em Janeiro, ou seja, o custo de produçãode todos os carros tipo C1 produzidos em Janeiro.

    Portanto, m1 é uma tabela que mostra o custo de produção, em milhares de unidadesmonetárias, de todos os carros C1 e C2 produzidos em Janeiro e Fevereiro:

    Tipo de Carro / Mês Custo em Janeiro Custo em Fevereiro

    Carro C1 1 0 0 * 10 = 1000 120*9.8 = 1176Carro C2 2 0 0  * 6 = 1200 180 *6.1 = 1098

    Exercício 2 (*)

    Considere mais uma tabela da mesma montadora do Exercício 1: quantidade de peçasdos tipos P1 e P2 utilizadas na produção dos carros C1 e C2.

    Tipo de Peça/ Carro Carro C1 Carro C2

    Peça P1 25 28

    Peça P2 42 55

    I. Crie uma matriz c no MATLAB para representar a tabela anterior.

    II.  Armazene na variável m2 a multiplicação matricial das matrizes c e a, do exercícioanterior.

    III.  Qual é o significado do resultado obtido na variável m2?

    Solução dos itens I e II (arquivo cap2_exercicio_02.m):

    % Solucao do item I» c = [25 28;42 55]c =

    25 2842 55

    % Solucao do item II» m2 = c*a

     m2 =8100 8040

    15200 14940

    0 Fonte: programação ‘Vestibulando Digital' exibido pela TV Cultura - São Paulo.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    36/377

    Solução do item III:

    Na multiplicação matricial:

    m2 (1 ,1 ) = c(1 ,1 )*a(1 ,1 ) + c(1 ,2 )*a(2 ,1 )

    m2 (1 ,2 ) = c(1 ,1 )*a(1 ,2 ) + c(1 ,2 )*a(2 ,2 )

    m2 (2 ,1 ) = c(2 ,1 )*a(1 ,1 ) + c(2 ,2 )*a(2 ,1 )

    m2 (2 ,2 ) = c(2 ,1 )*a(1 ,2 ) + c(2 ,2 )*a(2 ,2 )

    2 esta forma, m2 (1 ,1 ) contém a quantidade de peças do tipo P1 utilizadas no carro C1. ezes a quantidade de carros C1 produzidos em Janeiro mais a quantidade de peças do: do P1 utilizadas no carro C2 vezes a quantidade de carros C2 produzidos em Janeiro,: ̂ seja, a quantidade total de peças do tipo P1 consumidas no mês de Janeiro.

    -crtanto, m2 é uma tabela que mostra a quantidade total de peças P1 e P2 consumidase~ Janeiro e Fevereiro.

    Tipo de Peça / Mês Utilizadas em Janeiro Utilizadas em FevereiroPeça P1 25* 100 + 28*200 = 8100 25*120 + 28*180 = 8040

    Peça P2 42*100 + 55*200 = 15200 42*120 + 55*180 = 14940

    2.3.2. Funções 

    - sintaxe básica para chamada de qualquer função do MATLAB® 7, seja própria do-TLAB® 7 (built-in function) seja desenvolvida pelo usuário, segue este formato:

    ;3ai dal , Sai daN] = Funcao (Entradal , . . . , Entrada2)

    ♦ [S ai d al , SaidaN]: parâmetros de saída;

    ♦ Funcao: nome da função;

    ♦ [En trad al,..., EntradaN]: parâmetros de entrada.

    Exemplo 1 - Funções trigonométricas:

    [ » x = 0.5;» v=[0 1] ;» sin(x)=r.s =

    0.4794I » cos (v)

    ar.s =

    1.0000 0.5403

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    37/377

    Exemplo 2 - Funções matemáticas:

    »  sqrt(x)ans =

    0.7071» exp(v)ans =

    1.0000 2.7183

    Exemplo 3 - Funções matriciais:

    » a = [2 3 ; 5 -8]a =

    2 35 -8

    » det(a)ans =

    -31

    » i nv (a )ans =0.2581 0.0968

    0.1613 -0.0645

    No próximo exercício, utilizamos a função sum, que:

    ♦ dado um vetor Vixnou „xi, retorna a soma de todos os elementos do vetor; ■

    ♦ dada uma matriz Mmxn, retorna um vetor linha Vixn com a soma por coluna da matriz

    M.

    Exercício 3

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    38/377

    % Criar vetor para representar os salários >>salarios=[50 100 150] salarios =

    50 100 150% Criar vetor para representar as frequencias» freq=[30 60 10] freq =

    30 60 10% Calcular a media ponderada» media = sum(salarios.*freq)/ surti (freq) 

     media =90

    Solução do item II:

     A variância dos salários é a soma do quadrado da diferença entre cada valor de salárioe a média, multiplicada pela sua freqüência, dividida pela soma das freqüências. Desviopadrão é a raiz quadrada da variância.

    » variancia=sum((salarios-media). ̂2.*freq)/sum(freq) variancia =

    » dp=sqrt(variancia) dp =

    30

    Observação: as principais funções da biblioteca matemática do MATLAB® 7 estão listadas nocapítulo 3.___________________________________________________________________ 

    2.3.3. Manipulação de Matrizes 

     Apenas para relembrar, com relação à criação de matrizes:

    ♦ definição de matrizes é delimitada por'[' e

    ♦ 1  ' ou separa elementos na mesma linha, definindo colunas;

    ♦ delimita linhas.

    Elementos de matrizes podem ser números e expressões.

    » m = [38-log(65) sqrt(0.04); 3+i pi] m =

    33.8256 0.20003.0000 + 1.0000Í 3.1416

    Os símbolos ' ' e também podem ser utilizados para concatenar matrizes (arquivocap2_exemplo_04.m):

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    39/377

    Observação: as matrizes devem ter dimensões compatíveis com a operação deconcatenação solicitada.________________________________________________________ 

    2.3.4. Indexação de Elementos de Matrizes 

    O padrão de identificação de elementos de matrizes no MATLAB® 7 segue a sintaxeintuitiva da linguagem matemática tradicional:

    Exemplo: elemento da 2- linha e 4ãcoluna da matriz a = a(2,4) = 9.

    a =1 2 3 4 56 7 8 9 10

    11» a(2,4)ans =

    9

    12 13 14 15

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    40/377

    Os elementos também podem ser identificados seqüencialmente. A indexação começano primeiro elemento e segue de cima para baixo, da esquerda para a direita:

    O símbolodefine intervalos de indexação.Por exemplo (arquivo cap2_exemplo_05.m):

    ♦ criar b com os elementos da 2- a 4- coluna da 2- linha da matriz a.

     b=a (2 ,,-2 :4) b =

    7 8 9

    ♦ criar c com os todos os elementos da 3- coluna da matriz a.

    » c= a(:,3) c =

    38

    13

    ♦ criar d com os todos os elementos da 1 - linha da matriz a.

    » d=a(l,:) d =

    1 2 3 4 5

    ♦ 'end' indica fim de intervalo, ou seja, para criar e com todos os elementos da 2 -linha da matriz a a partir da 2- coluna, digite:

    >> e=a(2,2:end)e =

    7 8 9 10

    É possível utilizar a indexação seqüencial com '[ ]' para definir submatrizes. Porexemplo, criar h a  com a 1- linha composta pelos 3ee 102 elementos de a, e a 2- linhapelos 59e 12aelementos.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    41/377

    » f=[ a(3) a (10) a (5) a (12) ]f =

    11 47 14

    Vejamos, agora, como resolver um sistema linear do tipo A * X = B no MATLAB®7.

    Exercício 4__________________________________________________________

    Resolvamos um problema típico de curso básico de eletricidade, ilustrado no esquemaapresentado a seguir:

    Ri- WAMV-

    +

    2-VWMV-

    R3-VMWv-

    +

    PT

    Dados de Entrada:

    ♦ Quais são os valores das correntes 11,12 e I3?

    ♦ Qual é a potência total (PT) do circuito?

    Solução (arquivo cap2_exercicio_04.m):

    A resposta do item I deste problema é obtida com a resolução do sistema linear de três

    equações e três incógnitas seguinte:(R1 + R4) * 11 -(R4)*I2 =V1

    -R 4* 11 +(R2 + R4 + R5)*I2 - (R5) * I3 =0

    - (R5) * I2 + (R3 + R5) * I3 =-V 2

    Variáveis Valor  Voltagem V1 10 VVoltagem V2 5 VResistência R1 1 Q

    Resistência R2 2Q.

    Resistência R3 3QResistência R4 4 £2

    Resistência R5 5 Q

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    42/377

    E a do item II é dada por esta fórmula: PT = V1 * 11—V2 * 13

    Devemos criar as variáveis no MATLAB®7:

     £      or  HI     

    I     

    v H> 

    > >L  DI     I     

     C M> 

    »   M    I    I

    »   t    o    I    I     t    o

    > > R3 = 3»

      I     I     

    » R5 = 5

    E 'montar' a matriz A e o vetor coluna B do sistema linear A * X = B:

    » A=[(R1+R4) -R4 0;-R4 (R2+R4+R5) -R5;0 -R5 (R3+R5)]  A =

    5 - 4 0-4 11 -50 - 5 8

    » B- [VI; 0; -V2 ]B =

    100

    -5

    Para verificar se o sistema linear tem solução, podemos consultar:

    ♦ o posto de A: se for 3, então o sistema tem solução;

    ♦ ou o determinante de A: se for diferente de 3, então o sistema tem solução.

    » rank(A) % posto de A ans =

    3

    » det(A) % determinante de A ans =

    187

     A solução do sistema A * X = B é armazenada no vetor X, obtido da seguinte forma:X = A” 1  * B (inversa de A vezes B) ou A \ B (divisão pela esquerda):

    » X=inv(A) *BX =

    2.8342 % X (1) = 111.0428 % X (2) = 120.0267 % X (3) = 13

    » X=A\BX =

    2.83421.04280.0267

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    43/377

    0 vetor X contém os valores das três correntes: X(1) = 11, X(2) = 12 e X(3) = 13. Paracalcular a potência, execute:

    » PT = VI * X(l) - V2 * X (3) PT =

    28.2086

    Ou seja, o resultado final é:

    Variáveis Valor 

    Corrente 11 2.8342 A

    Corrente 12 1.0428 A

    Corrente 13 0.0267 A

    Potência Total PT 28.2086 W

    2.3.5. Vetores Seqüenciais 

    Além das formas de definição de vetores e matrizes apresentadas nos tópicos anteriores, o MATLAB® 7 possui recursos que facilitam a construção de vetores seqüenciais,essenciais para o tratamento de séries de tempo.

    A sintaxe mais simples para definir um vetor seqüencial é feita com o símboloDevemos fornecer, também, os valores inicial, de incremento e final.

    [ Valor_Inicial : Incremento : Valor_Final

    Por exemplo (arquivo cap2_exemplo_06.m):

    ♦ criar v1 contendo valores de 0  a 1 0  com incremento 2 .

    » vl =[0:2:10]

    vl =

         O t

        o

    4 6 8 10

    ♦ criar v2 contendo valores de 15 a 5 com incremento -3.

    » v2 =[15:-3:5]v2 =

    15 12 9 6

    Observação: o último elemento nunca ultrapassa o limite estabelecido pelo valor final.Por exemplo, o último elemento do vetor v2 é 6 , pois o próximo elemento, 6 -3 = 3, seriamenor que 5._________________________________________________________________ 

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    44/377

     Algumas omissões são permitidas:

    ♦ os‘[ ]' podem ser omitidos;

    ♦ se o parâmetro de incremento for omitido, assume-se incremento 1 .

    » v3 = l : 5 v3 =

    1 2 3 4 5

    Vetores seqüenciais também podem ser criados peia função l inspace.

     A função l inspace recebe como dados de entrada os valores inicial e final da seqüênciae o número desejado de divisões uniformemente espaçadas.

    Por exemplo (arquivo cap2_exemplo_07.m):

    ♦ criar w1 com 5 divisões uniformemente espaçadas entre de 0 a 10. Equivale a[0:2.5:10],

    » wl=linsp ace{0,10,5)wl =

    0 2.5000 5.0000 7.5000 10.0000

    ♦ criar w2 com 6  divisões uniformemente espaçadas entre 0 e 10. Equivale a [0:2:10].

    » w2=linspace (0,10, 6)w2 =

    0 2 4 6 8 10

    Se o número de elementos for omitido, a função assume 100 elementos.

    Exemplo: criar 100 elementos igualmente espaçados entre 0 e pi.

    » w3=linspace(0,pi);» whos w3 Name Size Bytes Classw3 1x100 800 double array

    Grand total is 100 elements using 800 bytes

    Examine o conteúdo da variável w3 no [Array Editor] (duplo-clique no nome da variávelna janela [Workspace]):

    ' ’ f j i , o * X i l £ A r r a y Editor - w 3

    l â f i á S %

    Name Í Value j Class

    ■H 01 éü stack.H , 1  _ EB Q ] 0 Ö [ 1 (

    i 1 1 2  3 i 4 j 5 ; 6 '

    ? X

    0 3 w1 [0 2.5 5 7,... double

    Ï B w 2 [ 0 2 4 6 8 . , . d ou ble j

    f f i j w S

    : i 1 01 0.03173 3: 0.063 467! 0.0952!

    2   ___ r3 ;1.......... ...|...........................-j  _______   .

    : 4 I  j  j j !: 51 j  ____ I __   S 1! 6 j j j j I

    1.7.’]

    8 j

    : 9 1

    .......0.126931......0.15867;  A

    Workspace Current Directory 101

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    45/377

    2.3.6. Funções Matriciais Elementares 

    Assim como a função l inspace, apresentada no tópico anterior, o MATLAB® 7 possuiinúmeros recursos para facilitar a criação e manipulação de matrizes elementares.

    Criação de matrizes elementares:

    Matriz Função Exemplo

    Identidade eye

    » eye(2) ans =

    1 0 0 1 

    >> eye(2,3) ans =

    1 0 0 0 1 0

    Composta por 0 zeros

    » zeros(3,2) ans =

    0 0 0 0 0 0

    Composta por 1 ones

    » ones(3) ans =

    1 1 11 1 11 1 1

    Composta pornúmeros aleatórios

    (distribuição uniforme)rand

    » rand(3,4) ans =

    0.9501 0.4860 0.4565 0.4447 0.2311 0.8913 0.0185 0.6154 0.6068 0.7621 0.8214 0.7919

    Composta pornúmeros aleatórios(distribuição normal)

    randn

    » rand n(3,4) ans =

    -0.4326 0.2877 1.1892 0.1746 -1.6656 -1.1465 -0.0376 -0.1867 0.1253 1.1909 0.3273 0.7258

    Observação: essas funções aceitam um ou dois parâmetros. No caso do fornecimento deapenas um parâmetro n, a função gera uma matriz quadrada n x n. No caso de doisparâmetros, n e m, a função gera uma matriz retangular n x m. _________________________

    Manipulação de matrizes: considere a matriz a=[1 2;3 4]

    Operação Função Exemplo

    Informa o número de linhas ecolunas da matriz

      size» size(a) 

    ans =

    2 2

    Informa o número deelementos da matriz

      numel» numel(a) ans =

    4

    Hl

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    46/377

    Operação Exemplo

    Calcula posto de matriz rank» rank(a) ans =

    2

    Calcula determinante de matriz det» det(a) ans =

    -2

    Calcula inversa de matriz inv

    » inv(a) ans =

    -2.0000 1.0000 1.5000 -0.5000

    2.4. Outros Tipos de Objetos

    Neste tópico, apresentamos os principais tipos de objetos utilizados nas funções doMATLAB® 7, além de vetores e matrizes numéricos.

    2.4.1. Matriz Tridimensional 

    O MATLAB® 7 permite criar matrizes tridimensionais a partir da composição dematrizes bidimensionais concatenadas com o símbolo

    ♦ m x n x p

    Por exemplo: criar matriz A 3x3x2, a partir de duas matrizes bidimensionais 3x3(arquivo cap2_exemplo_08.m).

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    47/377

     A ( : : , 2 ) =

    1 0 00 1 00 0 1

    2.4.2. Cadeia de Caracteres (String) 

    É o tipo de dado char,  ou seja, caractere ou texto ASCII, armazenado em 2 bytes dememória.

    No MATLAB® 7, cadeias de caracteres são delimitadas por" e exibidas em cor púrpura.

    Exemplo: a variável txt recebe o texto 'Resultado', que é armazenado no MATLABcomo classe char array de dimensão 1x9, ocupando 18 bytes na memória.

    » txt='Resultado'txt =

    Resultado

    » whos txt Name Size Bytes Classtxt 1x9 18 char array

    Grand total is 9 elements using 18 bytes

    Cadeias de caracteres podem ser manipuladas como matrizes, ou seja, aceitam operações de transposição e concatenação, desde que as dimensões sejam compatíveis.

    Exemplos (arquivo cap2_exemplo_09.m):

    » t x t l ' % Transposicaoans =R es

    u1tad o

    >>txt2 = [txtl 1 da Provai'] % Concatenacao horizontaltxt2 =

    Resultado da Provai

    >>txt3 = [ txtl ; ’da Provai ] % Concatenacao verticaltxt3 =

    Resultadoda Provai

    Observação: no caso de concatenação vertical, uma nova linha de caracteres é adicionada.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    48/377

    » txt3(1,:) ans = Resultado

    » txt3 (2,:) ans = da Proval

     A concatenação vertical com sinal só foi possível porque as duas cadeias decaracteres possuem o mesmo número de letras.

    Cadeias de caracteres com números diferentes de letras não podem ser concatenadascom

    » txt4 = [ txtl ; 'da Prova']??? Error using ==> vertcat

     All rows in the bracketed expression must have the same number of columns.

    Nesse caso, deve-se usar a função strvcat, que executa a concatenação, ajustando ostamanhos das cadeias de caracteres com a inclusão de1

    »  txt4=strvcat(txt l,'da Pro va 1)txt4 =

    Resultadoda Prova

    » whos txt4

     Name Size Bytes Classtxt4 2x9 36 char array

    Grand total is 18 elements using 36 bytes

    2.4.3. Matriz de Células (CelIArray) 

    Matriz de célula (cell array)  é um tipo de dado que permite o armazenamento deelementos de naturezas diferentes em uma única estrutura, identificáveis por um único

    nome.Internamente, cell array  é uma tabela de apontadores que endereça as regiões dememórias nas quais os elementos estão efetivamente armazenados.

     A função cell cria uma matriz de células vazias (ou seja, uma tabela de apontadoresvazios), que podem ser preenchidas posteriormente por meio de atribuições de dados:

    '{ }' são usadas para definir o conteúdo de células.

    Exemplo (arquivo cap2_exemplo_10.m): criar uma matriz de célula celula 2x2  comquatro elementos diferentes:

    ♦ ceiula(1,1): matriz identidade 3x3

    ♦ celula(1,2): texto 'matriz identidade 3x3'

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    49/377

    ♦ celula(2 ,1 ): constante pi

    ♦ celula(2,2): vetor 0:5

    » celula=cell(2) celula =

    [ ] [ ][ ] [ ]

    » celula(1,1}={eye (3)} 

    celula =[3x3 double] []

    [ ] [ ]» cel ula(1,2)={'matriz identidade 3x3'} celula =

    [3x3 double] [1x21 char]

    [ ] [ ]» celula(2,1)={pi} celula =

    [3x3 double] [1x21 char][ 3.1416] []

    » celula(2,2)={1:5} celula =[3x3 double] [1x21 char ][ 3.1416] [1x5 double]

    Cell arrays são visualizáveis no [Array Editor], Um duplo-clique no elemento da célulaexibe o seu conteúdo.

    Cell arrays podem ser definidos apenas com'{ }':» cel={ ones(2) 'texto' pi }cel =

    [2x2 double] 'texto' [3.1416]

    O acesso indexado ao conteúdo da célula é feito com'{ }':

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    50/377

    2.4.4. Estrutura (Struct) 

    Estrutura (struct)  é um tipo de dado que permite o armazenamento de elementos denaturezas diferentes em uma única estrutura, identificáveis individualmente por nomesde campos (.fields).

    Internamente, struct  é semelhante ao cell array,  isto é, é também uma tabela deapontadores. A diferença está na forma de acesso aos elementos internos. Enquantocell arrays trabalham com índices, structs usam nomes (campos ou fields).

    A função struct cria estruturas. No exemplo seguinte, criamos uma estrutura com nomes, com três campos com os seguintes conteúdos:

    ♦ nome: 'Dolar Comercial'

    ♦ iden: 'DOL'

    ♦ valor: 3.19

    »s=struct ( 'Nome' , { 1 Dolar Comercial' }, ' Iden' , { 'DO L ' }, ' Valor ',{3.19})

     Nome: 'Dolar Comercial'Iden: 'DOL'

     Valor: 3.1900

    O conteúdo da estrutura é identificado pelo nome da estrutura seguido por efinalizado pelo nome do campo:

    É possível criar vetores de estruturas. A indexação é feita com'( )':I»   s (2).Nome='Ouro 250g'; » s (2).Iden='OZ 1';» s (2) .Valor=39.65;» s (2) ans =

     Nome: 'Ouro 250g'Iden: 'OZl'

     Valor: 39.6500

    Structs  são visualizáveis no [Array Editor], Um duplo-clique no elemento da estruturaexibe seus campos.

    » s.Nome ans =Dolar Comercial » s.Iden ans =DOL» s.Valor ans =

    3.1900

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    51/377

     A função f ieldnames lista o nome dos campos da estrutura em um cell array,  cujoconteúdo pode ser utilizado posteriormente.

    »   campos=fieldnames(s)campos =

    1 Nome''Iden''Valor'

    » whos campos Name Size Bytes Classcampos 3x1 206 cell array

    Grand total is 16 elements using 206 by te s» whos campos

    » campos{l}ans =

     Nome

    Observação: esses exemplos estão armazenados no arquivo cap2_exemplo_11.m.

    2.5. Outros Tipos de Dados Numéricos

    O MATLAB® trabalha tradicionalmente com matemática de ponto flutuante de precisãodupla. A partir do MATLAB® 7, números podem ser armazenados e manipulados com

    precisão simples e como números inteiros. A tabela seguinte mostra as propriedades dos tipos de dados numéricos suportados:

    ♦ Nome: identificação padrão do tipo de dado numérico no MATLAB®;

    ♦ Bits: tamanho, em bits ( 8  bits = 1 byte), do dado na memória;

    ♦ Valor Mínimo: valor mínimo do tipo de dado numérico:

    - função realmin para números reais (precisão dupla e simples);

    - função intmin para números inteiros.♦ Valor Máximo: valor máximo do tipo de dado numérico:

    - função realmax para números reais (precisão dupla e simples);

    função intmax para números inteiros.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    52/377

    Tipo de Dado Nome Bits Valor Mínimo Valor Máximo

    PrecisãoDupla

    double 64 bits» realmin 

    2.2251e-308

    » realmax 

    1.7977e+308

    PrecisãoSimples

    single 32 bits» realmi n(1 single') 

    1.1755e-038

    » realma x(1 single ') 

    3. 4028e+038

    Inteiro 8 bitscom sinal

    int8 8 bits» intmin('int8') 

    -128

    » intm ax(1int8 ' )

    127

    Inteiro 8 bitssem sinal

    uint8 8 bits » intmin(1uint 8') 0

    » intmax(1uin t8') 255

    Inteiro 16 bitscom sinal

    intl6 16 bits» intminf'intl6') 

    -32768

    » intmax('intl61)

    32767

    Inteiro 16 bitssem sinal

    uintl6 16 bits» intmin('uintl6 ') 

    0

    » intmax('uintl61)

    65535

    inteiro 32 bitscom sinal

    int32 32 bits» intmin('int32') 

    -2147483648

    » intmax('int32') 

    2147483647

    Inteiro 32 bitssem sinal uint32 32 bits» intmin('uint32')

    0

    » intmax('uint32') 

    4294967295

    Inteiro 64 bitscom sinal

    int64 64 bits» intmin(1int641)

    -9223372036854775808

    » intmax('int64 ') 

    9223372036854775807

    Inteiro 64 bitssem sinal

    uint64 64 bits» intm in('uint64') 

    0

    » intma x('uint 64') 

    18446744073709551615

    0 MATLAB® 7 consegue tratar aritmeticamente as operações combinando os tipos dedados numéricos: double  (real com precisão dupla) e nondouble  (real com precisãosimples e números inteiros).

    Esta capacidade é essencial para a solução de problemas em áreas como otimização etratamento de sinais.

     Além disso, a escolha do tipo de dado numérico mais adequado permite umasubstancial redução do espaço ocupado em memória.

    Os tipos de dados são indicados pela utilização das funções de conversão (arquivo

    cap2_exemplo_12.m):

    Função Descrição Exemplodouble converte para doubie » a01=double(10) ;

    s ingle converte para single » a 0 2= s in g le (1 0) ;

    int8 converte para ints » a 03 =in t8 (1 0) ;

    uint8 converte para uints » a04=uint8(10) ;

    int l6 converte para in t i6 » a 0 5= in tl 6(1 0) ;

    uintl6 converte parauint iõ » a06=u int l6 (10) ;int32 converte para int32 » a 07 =in t3 2( 10 );

    uint32 converte para u in t32 » a08=uint32(10) ;

    int64 converte para int64 » a 09 =in t6 4( 10 );

    uint64 converte parauint64 » a l0 = ui nt 64 (1 0) ;

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    53/377

    Na janela [Workspace], é possível verificar a classe das variáveis criadas pelas funçõesde conversão.

    1 i f á g m w  I fc!m -níis«'.'1iName •* jValue ClassÈBiaoí! 10 doubleSa02 10 singleEBa03 10 int8

    S a04 10 uint8R-la05 10 int16f̂ aOB 10 uinl16EBa07 .10 int32ffia08 10 uint32H]a09 10 int64(®]a10 10 uint64

    < >Current Directory Workspace;

    Os tipos de dados numéricos podem ser combinados da seguinte forma:

    ♦ Tipo double pode ser combinado com qualquer outro tipo de dado nondouble.  Oresultado é sempre do tipo nondouble.

    Exemplo:

    » 10+int8(pi) ans =

    13

    ♦ Os nondoubles  (s i ngl e, i nt 8, ui nt 8, i nt l 6, ui nt l 6, i nt 32,ui nt 32) só aceitam operações com dados do mesmo tipo ou com double.

    »   int8(10)+single(pi)??? Error using ==> plus

    Integers can only be combined with integers of the same class, or scalar doubles.

    » in t8 (10)+int8(pi) ans =

    13

    Veja este exemplo sobre precisão dupla e precisão simples:

    ♦ a variável p recebe a soma de três números de precisão dupla (0.3+0.3+0.4). Esseresultado é o número 1 armazenado com precisão dupla.

    ♦ a variável q recebe a soma de quatro números de precisão dupla(0.3+0.3+0.3+0.1). Esse resultado é o número 1.000 armazenado com precisãodupla.

    » p= 0.3+0.3+0.4 P =

    1

    » q = 0 . 3 +0 .3 +0 .3 +0 .1

    q =1 . 0 0 0 0

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    54/377

    Porém p é diferente de q, pois o resultado da soma em q, em precisão dupla, éuma dízima binária. Podemos usar a função format hex do MATLAB paravisualizar o valor de p e q em formato hexadecimal e confirmar esse fato.

    » format hex » P P =

    3ff0000000000000  

    » qq =

    3fefffffffffffff

    ♦ Vamos criar a variável q1 com a soma de quatro números:

    - três com precisão dupla: 0.3+0.3+0.3

    um com precisão simples: single(0 .1 )

    O resultado é um número com precisão simples. Vamos observar o resultado numéricoe o resultado em formato hexadecimal.

    » format» ql= 0.3+0.3+0.3+single(0.1)

    q i =1

    » format hex» ql= 0.3+0.3+0.3+singl e(0.1) ql =

    3f800000

    Com precisão simples, o resultado não é uma dízima. Sendo assim, p é diferente de q com precisão dupla, e p é igual a q1 com precisão simples.

    » p == q   ans =

    0» p == qians =

    1

    2.6. Gráficos

    Neste tópico, mostramos os recursos disponíveis no MATLAB® 7 de criação e manipulação de figuras para apresentação de resultados em formato gráfico.

    O conjunto destes recursos, denominado Handle Graphicsi®, é descrito com detalhes no

    capítulo 5.A operação de geração de gráficos pode ser organizada nos seguintes passos:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    55/377

    Passo 0: Preparação dos dados

    Fase que precede a geração do gráfico propriamente dita. Em geral, envolveleitura de dados externos e cálculos.

    Passo 1; Chamada das fun ções de criação de gráficos

    O MATLAB® 7 possui funções de criação de gráficos 2D e 3D.

    Os gráficos são criados em janelas para figuras (figure window).  Dentrodessas janelas, o usuário define o eixo no qual seus dados são exibidos.

    Passo 2: Conf igur ação da aparência dos gráficos

    No MATLAB®7, é possível configurar a aparência das curvas do gráfico (cor,tipo de linha e marcador), bem como a aparência do próprio gráfico (título,divisão dos eixos, grades, legendas, etc.).

    Passo 3: Impress ão e expo rtação do gráfico

    Gráficos do MATLAB® 7 podem ser facilmente impressos e exportados paraoutros sistemas, agilizando a geração de documentos e relatórios.

    Vamos executar cada um desses passos no próximo exercício, utilizando duas funçõesbásicas de geração de gráficos no MATLAB®7: plot (gráfico bidimensional) e surf   (superfície tridimensional).

    2.6.1. Gráfico Bidimensional 

    Neste tópico, utilizamos a função plot para gerar o gráfico da curva dada pela fórmulax * cos(2 x), seguindo os passos listados anteriormente.

    Exercício 5___________________________________________________________________

    Passo 0: Preparação dos dados.

    ♦ Gerar o gráfico da função f(x) = x * cos (2 x) entre [~2n,2n].

    Digite no MATLAB:

    » x = - 2 * p i : O . 1 : 2 * p i ;

    » y = x .* cos(2*x) ;

    Passo 1: Chamada das funções de criação de gráficos.

    A função plot cria um gráfico na figura corrente. Caso não exista nenhuma figura, elacria uma nova.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    56/377

    Essa função espera como dados de entrada:

    ♦ Dois vetores l inhas (ou colunas) com dimensões iguais: neste caso, o 15 vetordeve conter os valores do eixo X e o 22vetor os do eixo Y; ‘

    » plot(x,y)

    Este deve ser o aspecto do gráfico gerado pela função plot.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    57/377

    ♦ Uma matriz: neste caso, considera que cada coluna da matriz contém o valor doeixo Y de uma curva, e assume os valores 1:m (número de linhas da matriz) como-valores do eixo X.

    Exemplo: duas curvas x*cos(2*x) e x*sin(2*x).

    » m= [y' (x.*sin(2*x))'];

    » plot(m)

    Fie Edit Víew Insert Tools DesViop Wndow Help

    d 7 í # | k  «iVA® * DB

     e1---- 1----   ----- 1---- 1---- -----  j----0 20 40 60 ao 100 120 140

    Passo 2: Configuração da aparência dos gráficos.

    A função plot aceita um terceiro parâmetro, que define as propriedades de exibição dacurva do gráfico: cor, marcador, tipo de linha.

    Digite a instrução seguinte para obter um gráfico com curva marcador'+' de cor vermelha:

    » plot(x,y,'+ r ')

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    58/377

    Tipos aceitos pela função plot, para exibição de curva:

    Cor  Marcador Tipo de linha

    y (amarela) . (ponto) : (pontilhada)m(magenta) o (círculo) -. (ponto-traço)c (azul-claro) x (x's) -- (tracejada)r (vermelha) + (cruz) solid (sólida)

    g (verde) * (estrela)b (azul) s (quadrado)w (branca) d (losango)k (preta) v (triângulo p/ baixo)

     A (triângulo p/ cima)< (triângulo p/ esquerda)> (triângulo p/ direita)

    p (pentagrama)h (hexagrama)

    Também é possível configurar títulos e textos de anotações. Para configurar título dográfico, rótulos dos eixos e legenda digite:

    >> titl e( Gráfico f(x) = x*cos( 2x)1)>> xlabel ('Eixo X ')» y labei ('Eixo Y ')

    » legend ('x*cos(2x)')

    Estes parâmetros também podem ser configurados de modo interativo, por meio da

     janela [Plot Tools], acionável pelo ícone de mesmo nome, na janela do gráfico.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    59/377

    Janela [PIot Tools]: os recursos disponíveis nesta janela estão descritos no item 5.1.1.

    Fite Edit View :

    Q ^ y i :

    SEI▼ New Subplots

    I...J 20 Axes

    30 Axes

    Insert Tools Desktop Windc

    'k

    1x126

    1x126

    ▼ Annotations

    \ Ime

    'X . A-row

    \ Double Arrow

    ^ Text Arrow

    T Tex18ox

    I I Rectangle

    O Ellipse

    Figure Name j

    :Cotormep

    :Foure Color 

    □ :y □ fc*Gfäfico f(x) - x’co&{2>.)

    £3 Gráfico f(x) = x*cos(2x)I ED 4 x'cos(2x)

    ; [v j Show Figure Number 

    Export Setup . "1

    Além disso, é possível criar vários eixos (gráficos) em uma mesma janela de figura

    utilizando-se a função subplot, cuja sintaxe é dada por:

    subplot(m,n,p)

    Parâmetros de entrada:

    ♦ m: números de eixos (gráficos) na vertical (número de linhas).

    ♦ n: números de eixos na horizontal (número de colunas).

    ♦ p: índice do eixo corrente (a contagem do índice é da esquerda para a direita e decima para baixo).

    Por exemplo, a seqüência de comandos abaixo gera a figura exibida a seguir:

    » x = -2*pi:0.1:2*pi;» yl = x .* cos(2*x) ;» y2 = x . * exp (x) ;» subplot(1,2,1)»  plot(x,yl)» ti tle(1x*cos(2*x )')

    » subplot(1,2,2)»  plot(x,y2)» ti tle('x*ex p(x)')» subplot(m,n,p)

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    60/377

    Passo 3: Impressão e exportação do gráfico.O ícone print da barra de ferramentas da janela do gráfico abre a janela de impressãoda figura:

    Fie Edt View Insert Toots Desktop Window Help ;

    f Print Figure | I

    Name: j \\einster;sjp

    Status: Paused; S documents wa*ng

    T>çe HP LaserJet 5

    Where \-*n5t«n'ip

    Comment:

    Properties...

    I f~ PnnttoSe

    Pnnt range Copie*

    fii Number of ccp

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    61/377

    ♦ formato de gravação. No exemplo, a figura é gravada em formato 'jpeg' comresolução alta;

    ♦ nome do arquivo. No exemplo, a figura é armazenada em um arquivo com nome'exercicio5.jpg'.

    >>h=gc f;» p r i n t (h,'-djpeg901,1exercicio5.jp g');

    Para visualizar o arquivo 'exercicio5.jpg' podemos:

    ♦ usar a função imread para 1er as informações da imagem;

    ♦ usar a função image para visualizar a imagem.

    » a=imrea d(1exercicio5.jp g1);» image(a);

    Observação: a solução deste exercício está armazenada no arquivo cap2_exercicio_05.m.

    2.6.2. Gráfico Tridimensional 

    Neste tópico, empregamos a função surf para gerar o gráfico da superfície gerada pelafórmula x * cos(2y), com (x,y) entre [—rc,7i:].

    Exercício 6__________________________________________________________

    Passo 0: Preparação dos dados

    ♦ Gerar o gráfico da superfície Z(X,Y) = X * cos (2Y) entre [-71,71].

    Digite no MATLAB:

    » x = -pi:0.2:pi;» y = -pi:0.2:pi;

    Utilizamos a função meshgrid, que cria duas matrizes, resultantes do cruzamento dosvalores dos vetores x e y.  As duas matrizes servem de entrada à geração dascoordenadas tridimensionais necessárias para a definição da superfície.

    » x = -pi : 0.2:pi ;» y = -pi : 0.2:pi;

    » [X,Y] = meshgrid(x,y);

    Veja 0  conteúdo das matrizes X e Y geradas a partir dos vetores x e y:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    62/377

    \%£ Ar ray Editor X :..... *

    f ic A  f y ® L

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    63/377

    Passo 2: Configuração da aparência dos gráficos.

    No caso de gráficos tridimensionais, além de configurar tipo de títulos e textos deanotação, é possível configurar mapas de cores, posicionamento de câmera(visualização tridimensional), transparência e iluminação. Este assunto está detalhadono tópico 5.1.8.

    Observação: a solução desse exercício está armazenada no arquivo cap2_exercicio_06.m.

    2.7. Leitura e Arm azenamento de DadosNeste tópico, apresentamos os recursos de leitura e armazenamento de dados, emformato MAT, ASCII e MS-Excel, bem como o utilitário de importação de dados. Osoutros recursos do MATLAB® 7 de manipulação de arquivos de dados são apresentadosno capítulo 4.

    2.7.1. Arquivo MAT 

    O MATLAB® possui um formato binário próprio de armazenamento de dados, usualmente chamado de formato MAT, pois os arquivos de dados neste formato possuemextensão .MAT (mat-file).

    MAT é o formato de armazenamento de dados mais eficiente (rápido e compacto)disponível no MATLAB®. A funções que manipulam dados .MAT são:

    ♦ load: lê arquivo .MAT

    ♦ save: grava arquivo .MAT

    Exemplos:

    ♦ grava um arquivo com nome dadosl .mat contendo todas as variáveis definidas no[Workspace]:

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    64/377

    » a = [1 2 3;4 5 6;7 8 9] ;» b=[10 50 100] 1 ;» save dadosl

    ♦ grava um arquivo com nome dados2.mat contendo todas as variáveis fornecidas.No caso, contendo apenas a variável a:

    » save dados2 a

     A função save é acionável pelo menu contextual do [Workspace] para gravar oconteúdo da variável selecionada em arquivo.

    S lp r " .tl.Q.3:X.CG;7.Q 9n T j Open Selection

    Copy Ctrl+C

    Duplicate Ctrl+D

    Delete

    Hfnax   [SSBIPaces

    Save as type: jMAT-fi iesf 

    ♦ lê um arquivo com nome dadosl .mat.  As variáveis contidas no arquivo aparecemno [Workspace],

    >> load dadosl

     Arquivos de dados .MAT também podem ser lidos pelo utilitário de importação de dadosque é apresentado no tópico 4.2.

    2.7.2. Arquivo ASCII 

    Neste tópico mostramos como utilizar as funções de leitura e gravação de arquivos ASCII em formato delimitado (delimited file: dados separados por caractere delimitador):

    ♦ dlmread: lê arquivo ASCII delimitado;

    ♦ dlmwri te: grava arquivo ASCII delimitado.

    No exercício proposto a seguir, vamos ler o arquivo 'cap2_dados1 ,txt', que contém duascolunas de dados numéricos.

  • 8/18/2019 MatLab 7 - Fundamentos - Élia Yathie Matsumoto

    65/377

    Exercício 7

    O arquivo 'cap2_dados1 .txt1contém dados sobre o crescimento da população de águas--vivas em um viveiro a 19°C.

     As informações estão organizadas em 2 colunas e 50 registros (linhas):

    ♦ 1-  coluna: % tempo de observação (de 0 a 100%);

    ♦ 2-  coluna: tamanho da população de águas-vivas.

    I. Ler o arquivo 'cap2_dados1.txt' e criar o gráfico tempo x tamanho dapopulação.

    II.  Obter valores da reta ax+b que melhor aproxime os pontos dados (mínimosquadrados / regressão linear). E crie um gráfico com os pontos dados e a retade aproximação.

    III.  Criar um arquivo 'cap2_saida.txt' com 3 colunas:1- coluna: % tempo de observação (de 0 a 100%);

    - 2- coluna: tamanho da população de águas-vivas;

    3ãcoluna; os valores obtidos pela regressão linear.

    Solução do item I:

     A função dlmread recebe, como parâmetro de entrada, o nome do arquivo a ser lido eretorna uma matriz com os valores lidos.

    » m=dl mread(1cap2_dadosl .t xt ' );

     A variável m recebe uma matriz 50 x 2 com os valores numéricos armazenados noarquivo:

    ♦   1a co luna: % tempo de observação (de 0 a 100%);

    ♦ 2-  coluna: tamanho da população de águas-vivas. A variável x recebe a 1? coluna transposta (ou seja, é um vetor linha) e a variável yrecebe a 2- coluna transposta:

    » x=m( : , 1 ) ' ;

    » y=m( : , 2 )' ;

    Use a função plot, apresentada no item anterior,