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 ip u l a ç ã o In t r o d u ç ã o
à
P r o g r a m a ç ã o • T ratam ento
G r á f ic o s • D e s e n v o l v im e n t o
2a EDIÇÃO
Exemplos do livro, respostas dos exercícios e apêndice, complementar disponíveis na INTERNET.
ao
M a t r iz e s
A r q u iv o s
d e In t e r f a c e s
F u n ç õ e s E s p e c ia l iz a d a s • I n t r o d u ç ã o
ÉLIA YATHIE M A T S U O
de
de
de
D ados
G r á f ic a s
S y m b o l ic M a th T o o l b o x
MATLAB® 7 Fundamentos
EDITORA AFILIADA
Seja Nosso Parceiro no Com bate à Cópia Ilegal A c ó pia ilegal é crim e. A o efetuá-la, o in fra to r estará com e te n d o um grave erro, que é inibir a produção de obras literárias, p rejudicando p rofissionais que serão atingidos pelo crim e praticado. Junte-se a nós nesta corrente co n tra a pirataria. D iga não à cópia ilegal.
Seu Cadastro É Muito Im portante para Nós A o preencher e rem eter a fich a de c a d a stro co n sta n te no final desta publicação, você passará a receber inform ações sobre nossos lançam entos em sua área de preferência. C onhecendo m elhor nossos leitores e su a s preferências, vam os produzir títu lo s que a te n dam suas necessidades. O brigado pela sua escolha.
Fale Conosco! E ventuais problem as referentes ao conteúdo deste livro serão enca m in h a d o s ao(s) respectivo(s) a utor(es) para e sclarecim ento, excetuando-se as dúvidas que dizem respeito a pacotes de softw ares, as quais su gerim os que sejam encam inhadas aos distribuidores e revendedores desses produtos, que e stão habilitados a prestar todos os esclarecim entos. O s problem as só podem se r enviados por: 1.
E -m ail: producao @ erica .co m .b r
2.
Fax: (11) 6 197 .4060
3.
C arta: R ua S ão G il, 159 - Tatuapé - C E P 0 3 4 0 1-030 - S ão P aulo - SP
INVISTA EM VOCÊ.
MATLAB® 7- Fundamentos
Élia Yathie Matsumoto
MATLAB® 7 F u n d a m e n to s
E ditora Érica Ltda. 2006 - 2a E dição
C onselh o Editorial: D iretor Editorial: D iretor C om ercial: D iretor de P ublicidade: Capa: Editoração: R evisão G ram atical: R evisão de D iagram ação: C oordenação e R evisão:
A nto n io M arco V icari C ipelli P aulo R oberto A lves W a ld ir Jo ã o S andrini M aurício S. de França É rica R egina Pagano P edro P aulo V ieira H erruzo D irce Y ukie Y am am oto R osana Ap. A lves dos S antos R osana A rru d a da S ilva
C o p y rig h t © 2004 da E ditora Érica Ltda. Da d o s In ternacionais de C atalogação na P ublicação (C IP) (C âm ara B rasileira do Livro, S P, B rasil) M atsum oto, É lia Y athie MATLAB® 7: Fu ndam entos / Élia Y athie M atsum oto. — 1. ed. — S ão Paulo: É rica, 2004.
B ibliografia. IS BN 85-365-0032-8
1. C álculo num érico - P rogram as de com putador. 2. M A TLAB . I. Título. 04-4725
C D D -5 19.40285
Índices para catálogo sistem ático 1. M A TLAB : C álculo num érico: P rogram as: P rocessam ento de dados 5 1 9 .40285 T o d o s os d ireitos reservado s. P roibida a reprodução total ou parcial, por q u a lquer m eio ou processo, e specialm ente por sistem as gráficos, m icro fílm icos, fotográficos, reprográficos, fonográficos, videográficos, internet, e-books. V edada a m em orização e/ou re cu p e ra ção total ou parcial em q ua lq u e r s iste m a de p rocessam ento de dados e a inclusão de qualquer parte da obra em qua lq u e r program a ju s c ib e rnético. E ssas proibições aplicam -se tam bém às características gráficas da obra e à sua editoração. A vio la çã o dos direitos autorais é punível com o crim e (art. 184 e parágrafos, do C ódigo Penal, conform e Lei n² 10.695, de 0 7 .0 1.2003) com pena de reclusão, de dois a quatro anos, e m ulta, c o n ju n ta m ente 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 .6 10, de 19/06/98, Lei dos D ireitos A utorais). A A utora e a E ditora acreditam que todas as inform ações aqui apresentadas estão corretas e podem ser utilizadas para q u a lquer fim legal. E ntretanto, não existe q u a lquer garantia, e xplícita ou im plícita, de que o uso de ta is inform ações conduzirá sem pre ao resultado desejado. O s nom es de sites e em presas, porventura m encionados, foram utilizados a penas para ilustrar os exem plos, não ten d o vínculo nenhum com o livro, não g arantindo a sua existência nem divulgação. E ventuais erratas estarão disponíveis no site da E ditora É rica para dow nload.
E ditora É rica Ltda. Rua S ão G il, 159 - T atuapé C EP: 0 3 4 0 1-030 - S ão Paulo - SP Fone: (11) 2295-3066 - Fax: ( 11) 6 197-4060 w w w .ed ito raerica .co m .b r
4
MATLAB® 7-Fundamentos
Fabricante Produto: MATLAB® 7 (Release 14)
Desenvolvedor: The MathWorks, Inc. e-mail:
[email protected] site: www.mathworks.com
Distribuidor no Brasil: Opencadd Advanced Technology Av. Brig. Faria Lima, 1931 - Cj. 42 - 4o andar São Paulo - SP - 01452-001 Tel/Fax: (1 1 )1 816-7864 e-mail:
[email protected] www.opencadd.com .br
Sobre o Material Disponível na Internet O material disponível no site da Editora Érica contém todos os arquivos de exemplos e exercí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. Para utilizar este material, é necessário ter o software MATLAB® 7 corretamente instalado em seu equipamento e o Adobe Acrobat Reader 3 ou versão mais recente. MATLAB7_A.exe - 1 .08 M B MATLAB7_B.exe - 2.00 MB
Procedimento para Download Acesse o site da Editora Érica Ltda.: www.editoraerica.com.br. A transferência dos arquivos disponíveis pode ser feita de duas formas: ♦
Por meio do módulo pesquisa. Localize o livro desejado, digitando palavrasc haves (nome do livro ou do autor). Aparecerão os dados do livro e os arquivos para 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 para download. Dê um clique sobre o primeiro arquivo executável que será transferido. Repita o procedimento para o segundo arquivo.
Procedimento para Descompactaçã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 WINZIP SELF-EXTRACTO R que conduzirá você ao processo de descompactação. Abaixo do Unzip To Folder, existe um campo que indica o destino dos arquivos que serão copiados 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 se encarrega 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 tela de informação surgirá, indicando que os arquivos foram descompactados com sucesso e estão no diretório criado. Para sair dessa tela, clique no botão O K. Para finalizar o programa WINZIP SELF-EXTRACTOR, clique no botão Close.
MATLAB® 7 - Fundamentos
Requisitos 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 (1 6 ,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 de proteção (hardware lock)
♦
no caso de licenças em rede: TCP/IP com acesso ao equipamento servidor da rede no 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 disco para execução podem variar de acordo com o tipo de instalação e necessidade de desempenho: 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)
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
MATLAB® 7-Fundamentos
Dedicatória Para Gabriel e Yasmin.
"... e que eu seja tão bondoso e alegre que todos quantos se aconcheguem a mim sintam a Tua presença."
Oração da Manhã São Francisco de Assis
Sobre a Autora Élia Yathie Matsumoto, bacharel em Ciência da Computação pelo Instituto de Matemática e Estatística da Universidade de São Paulo, com extensão universitária em Capacitaçã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)
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 busquem inovações. É quase obrigatório que elas estejam comprometidas com a melhoria dos processos de produção para reduzir impactos ambientais negativos e garantir um crescimento auto-sustentável. No caso do mercado financeiro, o estabelecimento de uma infra-estrutura eficiente e acessível de intercomunicação mundial (Internet, e-mail, comunicação wireless, etc.) permitiu o surgimento de sofisticados produtos financeiros tão difíceis de serem entendidos quanto de terem seu risco gerenciado. Nas universidades e faculdades, professores e estudantes desesperam-se com a composição dos currículos escolares. O tempo disponível para os cursos parece ser sempre insuficiente para cobrir todos os assuntos gerados pelo acelerado crescimento da 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 e pesquisa que podem ser extremamente beneficiados com a adoção de ferramentas computacionais adequadas. Neste contexto, o MATLAB® é tido como produto líder na área de computação numérica e científica, adotado como ferramenta padrão de desenvolvimento pelas principais universidades 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 (por exemplo: USP, UNICAMP, ITA, UnB, UNESP, Federais, PUCs), bem como nos departamentos de engenharia e desenvolvimento das principais empresas do país, tais como: Embraer, Petrobrás, Banco Central do Brasil, BankBoston, Banco Itaú, Citibank. Preparamos este livro para ser um material introdutório, objetivo e didático, que possibilite a rápida capacitação de estudantes e profissionais para utilização do MATLAB® 7, podendo ser utilizado como material de apoio de cursos em vários níveis de 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 a pretensão de ensinar teorias e conceitos básicos de matemática, engenharia ou linguagem de programação. Na verdade, esses conhecimentos são pré-requisitos fundamentais para o completo aproveitamento do conteúdo apresentado.
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, sem contudo comprometer a precisão técnica das informações. Desde a sua primeira versão, lançada comercialmente em 1984, o MATLAB® vem sendo utilizado por estudantes, professores, pesquisadores, cientistas, engenheiros e profissionais 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 produtos da 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 forma que todos possam rapidamente aproveitar as vantagens oferecidas por esta nova versão. Como informação complementar, o livro contém um capítulo de introdução ao uso do Symbolic 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íveis no site da Editora Érica para download.
MATLAB® 7- Fundamentos
Apresentação O objetivo deste livro é capacitar o leitor para utilização do MATLAB® 7 na implementaçã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 em qualquer 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 consultorias especializadas, 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 pesqui sa ao redor do mundo costumam disponibilizar, na Internet, os m-files desenvolvidos para 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 plataforma PC/Windows XP. Capítulo 2: Conceitos - Apresenta os principais conceitos de utilização do MATLAB® 7 por meio de exemplos, exercícios práticos e tutoriais. É recomendável que a leitura deste capítulo seja feita com o programa aberto e em execuçã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 da linguagem 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 utilizado como um manual de consulta e referência. Capítulo 4: Leitura e Gravação de Arquivos - Descreve as principais funções de leitura e gravação de arquivos de vários tipos de formatos. Capítulo 5: Gráficos e Handle Graphics® - Apresenta os recursos gráficos do MATLAB® 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 desenvolver implementação de interface com usuário utilizando as funções de caixa de diálogo predefinidas e os recursos do GUIDE.
Capítulo 7: Introdução Symbolic Math Toolbox - Faz uma introdução ao uso do Symbolic 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 e exercí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 ♦
Nomenclaturas e Expressões Estrangeiras
Optamos por não traduzir nomenclaturas e expressões estrangeiras. Nestes casos, as palavras 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 [F ile ]-------►
♦
Linhas de comando do MATLAB®
São delimitadas por um retângulo e grafadas com fonte Courier. Exemplo:
♦
Linhas de programa do editor do MATLAB® (Edit)
São delimitadas por um retângulo de fio duplo e grafadas com fonte Courier. Exemplo:
MATLAB® 7-Fundamentos
Índice Analítico Capítu lo 1. int ro d u çã o ...............................................................................................................19 Capítulo 2. C o n c e ito s ................................................................................................................25 2.1. O Que É MATLAB® 7 ........................................................................................................... 25 2.2. Números, Vetores e M atrizes............................................................................................26 2.3. Operadores e Funções........................................................................................................ 31 2.3.1. O peradores................................................................................................................... 31 2.3.2. Funções..........................................................................................................................35 2.3.3. Manipulação de Matrizes............................................................................................ 37 2.3.4. Indexação de Elementos de M atrizes...................................................................... 38 2.3.5. Vetores Seqüenciais................................................................................................... 42 2.3.6. Funções Matriciais Elem entares...............................................................................44 2.4. Outros Tipos de O bjetos..................................................................................................... 45 2.4.1. Matriz Tridim ensional..................................................................................................45 2.4.2. Cadeia de Caracteres (String)................................................................................... 46 2.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. G rá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
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. P ro g ra m a ç ã 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 M atrizes.....................................................................................................123 3.2.3. Álgebra Linear............................................................................................................ 138 3.2.4. Análise de Dados e Transformada de Fourier..................................................... 147 3.2 .5. Polinôm io s ..................................................................................................................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...................................................................................................................... 180 3.3.1. Estrutura e Tratamento de Dados......................................................................... 181 3.3.2. Operadores.................................................................................................................199 3.3.3. M-file s ......................................................................................................................... 207 3.3.4. Fluxo de Programação............................................................................................. 2 13 Capítulo 4. Leitura e Gravação de A rq u iv o s .....................................................................2 19 4.1. Construção de Nome de A rquivo................................................................................... 2 19 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 *.W K 1..........................................................................................236 4.4.3. Arquivos de Áudio.................................................... ................................................ 239 4.4.4. Arquivos de Im agem.................................................................................................242 4.4.5. Dados de Animação..................................................................................................245
MATLAB® 7 - Fundamentos
4.4.6. Troca de Dados com Internet
247
4.4.7. Outros Tipos de Funções.....
252
Capítulo 5. Gráficos e Handle Graphics® .........................................................................255 5.1. G ráficos...............................................................................................................................255 5.1.1. Utilitário Plot Tools ....................................................................................................255 5.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........................................................................286 5.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 G ráficos.................................................................297 5.2.2. Manipulação de Figuras e Objetos G rá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 D ados............................................................................................314 6.3. Utilitário GUID E ................................................................................................................. 317 6.3.1. Menu Pop-up do GUIDE...........................................................................................320 6.3.2. Barra de Ferramentas do G UIDE............................................................................321 6.3.3. Objetos de C ontrole................................................................................................. 325 Capítulo 7. Introdução ao Symbolic Math Toolbox....................................................... 339 7.1. Conceitos............................................................................................................................ 340 7.1.1. Sím bolos.....................................................................................................................340 7.1.2. Criação de Variáveis e Expressões Sim bó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
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......................................................................................................... 359 7.2.8. Funções de Formatação....................................................................................... 361 7.2.9. Funções Especiais..................................................................................................363 Apêndice A. Exercícios Propostos...................................................................................365 Índice Remissivo................................................................................................................... 369 Referências Bibliográficas................................................................................................. 375 Marcas Registradas...............................................................................................................376
MATLAB® 7 - Fundamentos
C a p ít u lo
1
Introdução
Neste capítulo, descrevemos os aspectos genéricos do ambiente interativo e da tela de trabalho 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 por meio de seu ícone de tela. Em seguida, você vê a tela do MATLAB® 7 Desktop, cuja configuração padrão tem o seguinte layout:
Introdução
A. [Command Window] - janela de trabalho na qual são digitados dados e instruções para 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ório corrente. 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 e utilitá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 encerrada pelo 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 o contexto 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 de programas EDIT.
MATLAB® 7-Fundamentos
♦
Botão direito do m ouse (botão de menu contextuai): abre menu contextuai, ou seja, um menu flutuante cujas opções variam de acordo com o contexto no qual o menu foi aberto. Por exemplo: indicação, com botão direito do mouse, do arquivo circuito.m na janela [Current Directory], abre o menu contextual com opções de operações váli das para o arquivo. No caso da janela [Command History], abre o menu contextual com opções de operações válidas para o conjunto de instruções selecionadas.
♦
Teclas [ ^ ] [ ^ ] na janela [Command Window]: repetem os comandos digitados.
♦
Resizin g Tools : tanto os tamanhos das janelas quanto os espaçamentos das divisões internas podem ser modificados com o cursor:
♦
M oving Tools w ith in the D esktop: as janelas podem ser movidas de uma posição para outra por meio de 'drag-and-drop'. Por exemplo: 'd rag-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.
MATLAB® 7 - Fundamentos
♦
M o v in g T o o ls o u t o f / in t o th e M A T L A B ® 7 D e s k t o p : 'undock'
(retira) / 'dock'
(encaixa) a janela na tela principal do MATLAB® 7. Por exemplo: clique
clique
na janela [Current Directory] para retirá-la da tela.
para restaurar.
O menu pop-up [Desktop] contém opções de configuração de posicionamento de janelas (D esktop Layout). Essas configurações podem ser armazenadas e restauradas.
Introdução
23
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 do MATLAB® 7, um último assunto merece atenção. O MATLAB® 7 permite que comandos do sistema operacional sejam acionados a partir de instruções digitadas na janela [Comando Window]:
24
MATLAB® 7• Fundamentos
C a p í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 os exemplos e exercícios descritos neste capítulo pois, por meio deles, apresentamos os principais 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 'M ATrix LABoratory), no qual problemas podem ser facilmente expressos em notação matemática e rapidamente solucionados por meio de cá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 grandes categorias:
I.
Ambiente de desenvolvimento: 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 e comandos para testar idéias e verificar resultados.
II.
Biblioteca de funções matemáticas do MATLAB® 7: núcleo do MATLAB® 7, composto por mais de 1.000 funções, desde as mais elementares, como soma e
Conceitos
25
subtração, até as mais sofisticadas, como inversa de matrizes, transformadas de Fourier, solvers de equação diferencial ordinária.
III.
Linguagem de programação MATLAB® 7: linguagem de alto nível, cuja estrutura de dados principal são matrizes que não precisam ser previamente dimen sionadas. Além disso, a linguagem é 'orientada por objetos', o que torna sua programação mais simples e eficiente do que a programação em C/C++, Fortran ou qualquer outra linguagem de programação tradicional.
IV.
Recursos gráficos 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 para visualização de resultados.
V.
MATLAB® 7 Application Program Interface (API): biblioteca que permite integrar o programa com funções desenvolvidas em C e Fortran.
No capítulo 1 deste livro, introduzimos os principais elementos do ambiente de desenvolvimento 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ão matrizes, que podem ser: ♦
um escalar (número): matriz com dimensão 1x1:
♦
um vetor linha: matriz com dimensão 1 x n:
♦
um vetor coluna: matriz com dimensão n x 1:
♦
uma matriz bidimensional: matriz com dimensão m x n:
26
MATLAB® 7 - Fundamentos
♦
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úm eros: ♦
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 determi nados pela precisão numérica do processador matemático do equipamento no qual o software está instalado:
Conceitos
27
Além disso, o MATLAB® 7 possui dois símbolos não-numéricos utilizados para repre sentar situações de descontinuidade:
Exemplos (arquivo cap2_exemplo_01.m):
O formato de exibição dos números é configurado pelo comando format.
28
MATLAE® 7 - Fundamentos
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 lo r ;
♦
É case-sensitive, ou seja, diferencia letras minúsculas e maiúsculas. Exemplo: é diferente de v a l o r .
val or
♦
Aceita
no meio do nome. Exemplo: m a t _ 2 _ x _ 3,
♦
A função n a me l e n g t h m a x retorna o tamanho máximo do nome de variável em nú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 ser apagado pelos comandos:_________ Conceitos
29
» 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 [Command Window] ficam armazenadas na memória do MATLAB® 7, em uma área denominada W orkspace, cujo conteúdo é exibido na janela [Workspace], O conteúdo das variáveis é exibido pelo editor de variáveis, [Array Editor], acionável por um 'duplo-clique' no nome da variável listada na janela [Workspace].
;
:
Os principais comandos de consulta e manipulação do [Workspace] são: Comando
Descrição
who
lista os nomes das variáveis
whos
lista os nomes e características das variáveis
clear
elimina variáveis da lista elimina todas as variáveis
- 3
Exemplo » who Your variables are: ans mat_2_x_3 » whos Name Size Bytes ans lxl 8 mat_2_x_3 2x3 48 »
clear mat_2_x_3
»
clear
Class double array double array
MATLAB® 7 - Fundamentos
ï :
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 +
Soma
-
Subtração
*
Multiplicação matricial
*
Conceitos
Descrição
Multiplicação escalar
/
Divisão matricial (a/b equivale a a*b'1)
./
Divisão escalar
Exemplo » a+b ans = 6 8 10 12 » a-b ans = -4 -4 -4 -4 » a*b ans = 19 22 43 50 » a.*b ans = 5 12 21 32 » a/b ans = 3.0000 -2.0000 2.0000 -1.0000 » a./b ans = 0.2000 0.3333 0.4286 0.5000
Operador
Descrição
\
Divisão 'esquerda' (a\b equivale a a~1*b)
A
Potência (matrizAescalar) (aA3 equivale a a*a*a)
A
Potência escalar (matriz ,Amatriz - elemento a elemento)
1
Transposta
Precedência
( )
Exemplo » a\b ans = -3.0000 -4.0000 4.0000 5.0000 » a~3 ans = 37 54 81 118 » a.^b ans = 1 64 2187 65536 » a' ans = 1 3 2 4 » 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 s in a ln o final da linha de comando. » c=a*b;' » c c = 19 22 43 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 ==> mtimes Inner matrix dimensions must agree. » b*a 1x2 ans = 23
% Dimensões compatíveis b ix2 * a 2x2 , o resultado é u m vetor
34
Para recordar alguns conceitos de matemática relacionados à álgebra matricial e ilustrar a utilização dos operadores, propomos dois exercícios.
MATLABP 7 - Fundamentos
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 Carro C1 Carro C2
b.
Produção em Janeiro
Produção em Fevereiro
100
120
200
180
Custo de produção, em milhares de unidades monetárias, de cada carro tipo C1 e C2 em Janeiro e Fevereiro. Tipo de Carro / Mês Carro C1 Carro C2
Custo em Janeiro $ 1 0 .0 $ 6 .0
Custo em Fevereiro $9.8 $ 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 120 200 180 » b = [10 9.8; 6 6.1] b = 10.0000 9.8000 6.0000 6.1000 % Solucao do item II » ml=a.*b ml = 1000 1176 1200 1098
Solução do item II): A multiplicação escalar multiplica os elementos das matrizes elemento a elemento: m 1 ( 1 ,1 ) = a( 1 , 1 ) * b( 1 ,1 ) m 1 ( 1 ,2 ) = a( 1 ,2 ) * b( 1 ,2 ) f> Fonte: programação 'Vestibulando Digital' exibido pela TV Cultura - São Paulo. Conceitos
m 1 (2 ,1 ) = a(2 ,1 ) * b( 2 ,1 ) m 1 (2 ,2 ) = a(2 ,2 ) * b(2 ,2 ) Desta forma, m1 (1,1) contém a quantidade de carros tipo C1 produzidos em Janeiro vezes o custo de produção de cada carro C1 em Janeiro, ou seja, o custo de produção de todos os carros tipo C1 produzidos em Janeiro. Portanto, m1 é uma tabela que mostra o custo de produção, em milhares de unidades monetárias, de todos os carros C1 e C2 produzidos em Janeiro e Fevereiro: Tipo de Carro / Mês Carro C1 Carro C2
Custo em Janeiro 1 0 0 * 1 0 = 1000 2 0 0 * 6 = 1200
Custo em Fevereiro 120*9.8 = 1176 180 *6.1 = 1098
Exercício 2 (*) Considere mais uma tabela da mesma montadora do Exercício 1: quantidade de peças dos tipos P1 e P2 utilizadas na produção dos carros C1 e C2. Tipo de Peça/ Carro Peça P1 Peça P2
Carro C1 25 42
Carro C2 28 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ício anterior.
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 28 42 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.
MATLAB® 7-Fundamentos
Solução do item III: Na multiplicação matricial: m 2 ( 1 ,1 ) = c( 1 ,1 )*a( 1 , 1 ) + c( 1 ,2 )*a(2 ,1 ) m 2 ( 1 ,2 ) = c( 1 , 1 )*a( 1 ,2 ) + c( 1 ,2 )*a(2 ,2 ) m 2 (2 , 1 ) = c( 2 , 1 )*a( 1 ,1 ) + c( 2 ,2 )*a(2 ,1 ) m 2 (2 ,2 ) = c( 2 , 1 )*a( 1 ,2 ) + c(2 ,2 )*a(2 ,2 ) 2 esta forma, m 2 ( 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 consumidas e~ Janeiro e Fevereiro. Tipo de Peça / Mês Peça P1 Peça P2
Utilizadas em Janeiro 25* 100 + 28*200 = 8100 42*100 + 55*200 = 15200
Utilizadas em Fevereiro 25*120 + 28*180 = 8040 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: ;3aidal,SaidaN] = Funcao (Entradal, ..., Entrada2)
♦
[S a id a l,
SaidaN]: parâmetros de saída;
♦
Funcao: nome da função;
♦
[Entradal,..., EntradaN]: parâmetros de entrada.
Exemplo 1 - Funções trigonométricas: [ » x = 0.5; » v=[0 1] ; » sin(x) =r.s = 0.4794 I » cos (v) ar.s = 1.0000
0.5403
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 3 5 -8 » det(a) ans = -31 » i n v (a ) ans = 0.0968 0.2581 -0.0645 0.1613
No próximo exercício, utilizamos a função sum, que: ♦
dado um vetor V ixn ou „xi, retorna a soma de todos os elementos do vetor;
♦
dada uma matriz Mmxn, retorna um vetor linha V ixn com a soma por coluna da matriz M.
Exercício 3 <*)
----------------------------------------------------- — ---------------------Numa pequena ilha, há 100 pessoas que trabalham na única empresa ali existente. Seus salários (em moeda local) têm a seguinte distribuição de freqüências: Salário
Freqüência
$ 50.00
30
$100.00
60
$150.00
10
I.
Qual é a média dos salários das pessoas?
II.
Qual é a variância dos salários? Qual o desvio padrão dos salários?
Solução do item I (arquivo cap2_exercicio_03.m): Média dos salários é igual à soma de cada valor do salário multiplicado por sua freqüência, dividida pela soma das freqüências. (*) Fonte: questão 1 da Prova de Matemática da 2- fase da Fundação Getúlio Vargas 2002 - (11/Nov/2001) MATLAB® 7 - Fundamentos
■
% Criar vetor para representar os salários > > s a l a r i o s = [50 100 150] salarios = 50 100 150 % Criar vetor para representar as frequencias » f r e q = [30 60 10] freq = 30 60 10 % Calcular ame d i a ponderada » m e d i a = s u m ( s alarios.*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ário e a média, multiplicada pela sua freqüência, dividida pela soma das freqüências. Desvio padrão é a raiz quadrada da variância. » v a r i a n c i a=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 no capítulo 3.___________________________________________________________________
2.3.3. Manipulação de Matrizes Apenas para relembrar, com relação à criação de matrizes: ♦
definição de matrizes é delimitada p o r'[' 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 3.0000 + 1.0000Í
0.2000 3.1416
Os símbolos ' ' e também podem ser utilizados para concatenar matrizes (arquivo cap2_exemplo_04.m):
l i Conceitos
Observação: as matrizes devem ter dimensões compatíveis com a operação de concatenaçã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 sintaxe intuitiva da linguagem matemática tradicional:
Exemplo: elemento da 2- linha e 4ã coluna da matriz a = a(2,4) = 9. a = 1 6 11
2 7 12
3 8 13
4
9 14
5 10 15
» a (2 ,4 ) ans = 9
MATLAB® 7 ■Fundamentos
Os elementos também podem ser identificados seqüencialmente. A indexação começa no primeiro elemento e segue de cima para baixo, da esquerda para a direita:
O s ím b o lo d e fin e 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 = 3 8
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 linha da matriz a a partir da 2- coluna, digite: >> e=a(2,2:end) e = 7 8
9
2
-
10
É possível utilizar a indexação seqüencial com '[ ]' para definir submatrizes. Por exemplo, criar h a com a 1- linha composta pelos 3e e 102 elementos de a, e a 2- linha pelos 59e 12a elementos.
» f=[ a(3) a (10) f = 11 4 7 14
a (5) a (12) ]
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 esquema apresentado a seguir: Ri
R3 -VMWv-
2
-VWMV-
-WAMV-
+
+
PT
Dados de Entrada: Variáveis Voltagem V1 Voltagem V2 Resistência R1
Valor 10 V 5V 1 Q
Resistência R2
2Q.
Resistência R3 Resistência R4 Resistência R5
3Q 4 £2 5Q
♦
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
-(R 4 )* I2
=V1
- R 4 * 11
+ (R 2 + R4 + R 5 )*I2
- (R5) * I3
=0
- (R5) * I2
+ (R3 + R5) * I3
= -V 2
MATLAB® 7 - Fundamentos ;
E a do item II é dada por esta fórmula: PT = V1 * 11 —V2 * 13 Devemos criar as variáveis no MATLAB®7:
>
to M II II to
o
>
rH LD II II vH CM
£ > > » »
R3 = 3
> >
II
»
R5 = 5
»
E 'montar' a matriz A e o vetor coluna B do sistema linear A * X = B: » A=[(R1+R4) A =
» B =
-R4 0;-R4
(R2+R4+R5)
- R 5 ;0 -R5
(R3+R5)]
5 - 4 0 -4 11 -5 0 - 5 8 B- [VI;0; -V2 ]
10 0 -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) ans = 3
» det(A) ans = 187
% posto de A
% determinante de A
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) *B X = 2.8342 % X (1) = 11 1.0428 % X (2) = 12 % X (3) = 13 0.0267 » X=A\B X = 2.8342 1.0428 0.0267
0 vetor X contém os valores das três correntes: X(1) = 11, X(2) = 12 e X(3) = 13. Para calcular a potência, execute: » PT = VI * X(l) PT = 28.2086
- V2 * X (3)
Ou seja, o resultado final é: Variáveis Corrente 11 Corrente 12 Corrente 13 Potência Total PT
Valor 2.8342 A 1.0428 A 0.0267 A 28.2086 W
2.3.5. Vetores Seqüenciais Além das formas de definição de vetores e matrizes apresentadas nos tópicos ante riores, 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ímbolo Devemos 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
10
com incremento 2 .
♦
to
O
» v l = [0:2:10] vl = 4
6
8
10
criar v2 contendo valores de 15 a 5 com incremento -3.
» v 2 = [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, seria menor que 5._________________________________________________________________
.
0
MATLAB® 7 - Fundamentos
Algumas omissões são permitidas: ♦
o s ‘[ ]' 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 linspace. A função linspace recebe como dados de entrada os valores inicial e final da seqüência e 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],
» w l = l i n s p a c e {0,10,5) wl = 0 2.5000
♦
criar w2 com
6
7.5000
5.0000
10.0000
divisões uniformemente espaçadas entre 0 e 10. Equivale a [0:2:10].
» w 2 = l i n s p a c e (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. » »
w 3 = l i n s p a c e (0 , p i ) ; whos w3 Bytes Class Name Size 800 double array w3 1x100 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ável na janela [Workspace]): ' ’ f ji, l
â
o f
i
Name 0 3 w1
* á
S
X
il£ A rra y
Í V alu e
i
j Class
[0 2 .5 5 7 , .. .
:
d o u b le
Ï B w2
[024 68.,.
d o u b le
j
f fijw S
<1x100
d o u b le
]
d o ...
i1 2
3 ;1.......... :4
I
: 51 ! 6j 1.7.’] 8j < W o rk s p a c e
> C urren t D irectory
Editor - w 3
■H
%
:9 1 101
01
1
éü
1 01
___ r
j j j
s ta c k .H , 1
2
3
0 .0 3 1 7 3 3 :
i
0 .0 6 3 4 6 7 !
4
j j
j
EB Q ] 0 j
5
;
Ö
[1 ( ? X
6
'
0 .0 9 5 2 ! .......0.126931...... 0.15867;
...|........................... - j _______
____ I__
_
.
j
!
S
1 I
A
2.3.6. Funções Matriciais Elementares Assim como a função linspace, apresentada no tópico anterior, o MATLAB® 7 possui inúmeros recursos para facilitar a criação e manipulação de matrizes elementares. Criação de matrizes elementares: Função
Matriz
eye
Identidade
Composta por 0
zeros
Composta por 1
ones
Composta por números aleatórios (distribuição uniforme)
rand
Composta por números aleatórios (distribuição normal)
randn
Exemplo » e y e (2) ans = 1 0 0 1 >> e y e (2,3) ans = 1 0 0 1 » z e r o s (3,2) ans = 0 0 0 0 0 0 » o n e s (3) ans = 1 1 1 1 1 1 » r a n d (3,4) ans = 0.9501 0.2311 0.6068 » r a n d n (3,4) ans = -0.4326 -1.6656 0.1253
0 0
1 1 1
0.4860 0.8913 0.7621
0.4565 0.0185 0.8214
0.4447 0.6154 0.7919
0.2877 -1.1465 1.1909
1.1892 -0.0376 0.3273
0.1746 -0.1867 0.7258
Observação: essas funções aceitam um ou dois parâmetros. No caso do fornecimento de apenas um parâmetro n, a função gera uma matriz quadrada n x n. No caso de dois parâ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
Informa o número de linhas e colunas da matriz
size
Informa o número de elementos da matriz
numel
Exemplo » s i z e (a) ans = 2 2 » numel(a) ans = 4
Hl
III
MA TLAEP 7 - Fundamentos
Operação Calcula posto de matriz
Exemplo rank
Calcula determinante de matriz det
Calcula inversa de matriz
inv
» r a n k (a) ans = 2 » det(a) ans = -2 » inv(a) ans = -2.0000 1.5000
1.0000 -0.5000
2.4. Outros Tipos de Objetos Neste tópico, apresentamos os principais tipos de objetos utilizados nas funções do MATLAB® 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 de matrizes bidimensionais concatenadas com o símbolo ♦
mx nx p
Por exemplo: criar matriz A 3x3x2 , a partir de duas matrizes bidimensionais 3x3 (arquivo cap2_exemplo_08.m).
A( :
: ,2 ) 1 0 0
= 0 1 0
0 0 1
2.4.2. Cadeia de Caracteres (String) É o tipo de dado char, ou seja, caractere ou texto ASCII, armazenado em 2 bytes de memória. No MATLAB® 7, cadeias de caracteres são delimitadas p o r" e exibidas em cor púrpura. Exemplo: a variável tx t recebe o texto 'Resultado', que é armazenado no MATLAB como classe char array de dimensão 1x9, ocupando 18 bytes na memória. » t x t = 'R e s u l t a d o ' txt = Resultado »
whos txt Name Size Bytes txt 1x9 18 Gra n d total is 9 elements using 18 bytes
Class char array
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): »txtl' ans = R e s u
% Transposicao
1 t a d o >>txt2 = [txtl 1 da Provai'] txt2 = Resultado da Provai
% Concatenacao horizontal
>>txt3 = [ txtl txt3 = Resultado da Provai
] % Concatenacao vertical
; ’da Provai
Observação: no caso de concatenação vertical, uma nova linha de caracteres é adicionada.
MATLAB® 7- Fundamentos
» t x t 3 (1,:) ans = Resultado » t x t 3 (2,:) ans = da Proval
A concatenação vertical com sinal só foi possível porque as duas cadeias de caracteres possuem o mesmo número de letras. Cadeias de caracteres com números diferentes de letras não podem ser concatenadas com » txt4 = [ txtl ; 'da P r o v a '] ??? 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 os tamanhos das cadeias de caracteres com a inclusão d e 1 » t x t 4 = s t r v c a t (t x t l ,'da P r o v a 1) txt4 = Resultado da Prova »
whos txt4 Bytes Name Size txt4 2x9 36 Grand total is 18 elements using 36 bytes
Class char array
2.4.3. Matriz de Células (CelIArray) Matriz de célula (cell array) é um tipo de dado que permite o armazenamento de elementos 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 de memó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 apontadores vazios), 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 com quatro elementos diferentes: ♦
ceiula(1,1): matriz identidade 3x3
♦
celula(1,2): texto 'matriz identidade 3x3'
Conceitos
♦
celula( 2 ,1 ): constante pi
♦
celula(2,2): vetor 0:5 » c e l u l a = c e l l (2) celula =
[] []
[] []
» c e l u l a (1,1}= { e y e (3)} celula = [3x3 double] []
[]
[]
» c e l u l a (1,2)={'matriz identidade 3x3'} celula = [3x3 double] [1x21 char]
[]
[]
» c e l u l a (2,1)={pi} celula = [3x3 double] [1x21 char] [ 3.1416] [] » c e l u l a (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élula exibe o seu conteúdo.
Cell arrays podem ser definidos apenas c o m '{ }': » cel={ o n e s (2) cel = [2x2 double]
'texto' pi } 'texto'
[3.1416]
O acesso indexado ao conteúdo da célula é feito c o m '{ }':
2.4.4. Estrutura (Struct) Estrutura (struct) é um tipo de dado que permite o armazenamento de elementos de naturezas diferentes em uma única estrutura, identificáveis individualmente por nomes de campos (.fields). Internamente, struct é semelhante ao cell array, isto é, é também uma tabela de apontadores. A diferença está na forma de acesso aos elementos internos. Enquanto cell arrays trabalham com índices, structs usam nomes (campos ou fields). A função struct cria estruturas. No exemplo seguinte, criamos uma estrutura com nome s, com três campos com os seguintes conteúdos: ♦
nome: 'Dolar Comercial'
♦
iden: 'DOL'
♦
valor: 3.19 » s = s t r u c t ( 'Nome', { 1Dolar C o m e r c i a l '}, 'I d e n ', { 'D O L '}, 'Valor ',{3.19}) Nome: Iden: Valor:
'Dolar Comercial' 'DOL' 3.1900
O conteúdo da estrutura é identificado pelo nome da estrutura seguido por finalizado pelo nome do campo:
e
» s.Nome ans = Dolar Comercial » s.Iden ans = DOL » s.Valor ans = 3.1900
I
É possível criar vetores de estruturas. A indexação é feita c o m '( )': » s (2).Nome='Ouro 250g'; » s (2).I d e n = 'O Z 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 estrutura exibe seus campos.
I I Conceitos
A função fieldnames lista o nome dos campos da estrutura em um cell array, cujo conteúdo pode ser utilizado posteriormente. » campos=fieldnames(s) campos = 1N o m e ' 'I d e n ' 'Valor' »
whos campos Name Size Bytes Class campos 3x1 206 cell array Gr a n d total is 16 elements using 206 b y t e 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ão dupla. 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
♦
Valor Mínimo: valor mínimo do tipo de dado numérico:
♦
(8
bits = 1 byte), do dado na memória;
-
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.
MATLAB® 7- Fundamentos
Tipo de Dado Precisão Dupla Precisão Simples Inteiro 8 bits com sinal Inteiro 8 bits sem sinal Inteiro 16 bits com sinal Inteiro 16 bits sem sinal inteiro 32 bits com sinal Inteiro 32 bits sem sinal Inteiro 64 bits com sinal Inteiro 64 bits sem sinal
Nome
Bits
double
64 bits
single
32 bits
int8
8 bits
uint8
8 bits
intl6
16 bits
uintl6
16 bits
int32
32 bits
uint32
32 bits
int64
64 bits
uint64
64 bits
Valor Mínimo
Valor Máximo
»
»
realmin
»
r e a l m i n (1s i n g l e ')
»
i n t m i n ('i n t 8 ')
»
i n t m i n (1u i n t 8 ')
»
0 »
i n t m i n f 'i n t l 6 ')
»
i n t m i n ('u i n t l 6 ')
»
i n t m i n ('i n t 3 2 ')
»
i n t m a x ('i n t 3 2 ') 2147483647
i n t m i n ('uint32')
»
i n t m a x ('uint32') 4294967295
0 »
i n t m a x ('uintl61) 65535
-2147483648 »
i n t m a x ('i n t l 6 1) 32767
0 »
i n t m a x (1u i n t 8 ') 255
-32768 »
i n t m a x (1int8 ') 127
-128 »
r e a l m a x (1s i n g l e ') 3. 4028e+038
1.1755e-038 »
realmax 1.7977e+308
2.2251e-308
i n t m i n (1i n t 6 4 1)
»
i n t m a x ('i n t 6 4 ')
-9223372036854775808
9223372036854775807
»
»
i n t m i n ('u i n t 64')
i n t m a x ('u i n t 6 4 ')
18446744073709551615
0
0 MATLAB® 7 consegue tratar aritmeticamente as operações combinando os tipos de dados numéricos: double (real com precisão dupla) e nondouble (real com precisão simples e números inteiros). Esta capacidade é essencial para a solução de problemas em áreas como otimização e tratamento de sinais. Além disso, a escolha do tipo de dado numérico mais adequado permite uma substancial 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):
Conceitos
Função
Descrição
Exemplo
double
converte para doubie
»
a01=double(1 0 );
sin gle
converte para s in g l e
»
a 0 2 = s in g le (1 0 ) ;
in t8
converte para in t s
»
a 0 3 = in t8 (1 0 );
uint8
converte para u in ts
»
a04=uint8(10) ;
in tl6
converte para i n t i 6
»
a 0 5 = i n t l 6 (1 0 );
u in t l 6
converte p arau in tiõ
»
a 0 6 = u in t l6 (10) ;
int32
converte para int32
»
a 0 7 = in t3 2 (1 0 );
uint32
converte para u i n t 3 2
»
a08=uint32(1 0 );
int64
converte para int64
»
a 0 9 = in t6 4 (1 0 );
uint64
converte parauint64
»
a l0 = u in t 6 4 (1 0);
Na janela [Workspace], é possível verificar a classe das variáveis criadas pelas funções de conversão. 1 i f á g m w Ifc!m iName •* jValue ÈBiaoí! 10 Sa02
EBa03 S a04 R-la05 f^aOB EBa07 ffia 0 8
H]a09 (®]a10
10 10 10 10 10 .10 10 10 10
<
-níis«'.'1 Class
double single int8 uint8 int16 uinl16 int32 uint32 in t6 4 u in t6 4
>
Current Directory W o rk s p a c e ;
Os tipos de dados numéricos podem ser combinados da seguinte forma: ♦
Tipo double pode ser combinado com qualquer outro tipo de dado nondouble. O resultado é sempre do tipo nondouble.
Exemplo: » 10+int8(pi) ans = 13
♦
Os nondoubles (single, int8, uint8, intl6, uintl6, int32, uint32) só aceitam operações com dados do mesmo tipo ou com double. » i n t 8 (10)+single(pi) ??? Error using ==> plus Integers can o nly be combined with integers of the same class, scalar doubles.
or
» i n t 8 (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). Esse resultado é 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ão dupla.
» p = 0 .3+0.3+0.4 P = 1 » q = 0 .3+0.3+0.3+0.1
q = 1.0000
MATLAEP 7 - Fundamentos
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 para visualizar o valor de p e q em formato hexadecimal e confirmar esse fato. » format hex » P P = 3ff0000000000000
» q q = 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érico e o resultado em formato hexadecimal. » »
format q l = 0 .3+0.3+0.3 + s i n g l e (0.1)
qi =
1
» format hex » q l = 0 .3+0.3+0.3 + s i n g l e (0.1) ql = 3 f 800000
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 == q i
ans =
1
2.6. Gráficos Neste tópico, mostramos os recursos disponíveis no MATLAB® 7 de criação e manipu laçã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:
Passo 0: Preparação dos dados Fase que precede a geração do gráfico propriamente dita. Em geral, envolve leitura 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). Dentro dessas janelas, o usuário define o eixo no qual seus dados são exibidos. Passo 2: Configuraçã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 exportação do gráfico Gráficos do MATLAB® 7 podem ser facilmente impressos e exportados para outros sistemas, agilizando a geração de documentos e relatórios. Vamos executar cada um desses passos no próximo exercício, utilizando duas funções bá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órmula x * 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
»
y = x
= - 2 * p i : O. 1 : 2 * p i ;
.* 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, ela cria uma nova.
MATLAEP 7 - Fundamentos
Essa função espera como dados de entrada: ♦
Dois vetores linhas (ou colunas) com dimensões iguais: neste caso, o 15 vetor deve conter os valores do eixo X e o 22 vetor os do eixo Y; ‘ »
plot(x,y)
Este deve ser o aspecto do gráfico gerado pela função plot.
♦
Uma matriz: neste caso, considera que cada coluna da matriz contém o valor do eixo 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 W nd ow
Help
d 7 í # | k « iV A ® * 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 da curva do gráfico: cor, marcador, tipo de linha. Digite a instrução seguinte para obter um gráfico com curva marcador'+' de cor vermelha: »
p l o t ( x , y , '+ r ')
Tipos aceitos pela função plot, para exibição de curva: Cor y (amarela) m (magenta) c (azul-claro) r (vermelha) g (verde) b (azul) w (branca) k (preta)
Marcador . (ponto) o (círculo) x (x's) + (cruz) * (estrela) s (quadrado) d (losango) v (triângulo p/ baixo) A (triângulo p/ cima) < (triângulo p/ esquerda) > (triângulo p/ direita) p (pentagrama) h (hexagrama)
Tipo de linha : (pontilhada) -. (ponto-traço) -- (tracejada) solid (sólida)
Também é possível configurar títulos e textos de anotações. Para configurar título do gráfico, rótulos dos eixos e legenda digite: >> >> » »
title( xlabel y labei legend
Gráfico f(x) = x * c o s ( 2 x ) 1) ('Eixo X ') ('Eixo Y ') ('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.
Conceitos
57
Janela [PIot Tools]: os recursos disponíveis nesta janela estão descritos no item 5.1.1.
Fite
Edit
View : Insert
Q ^ y
i :
SEI
Tools
Desktop
Windc
'k
□: y □ fc* Gfäfico f(x) -
x ’co&{2>.) £ 3 Gráfico f(x ) = x*cos(2x) I ED 4 x 'c o s (2 x)
▼ N ew Subplots I...J 20 Axes
30 Axes
1x126 1x126
▼ Annotations \
Im e
'X . A -ro w \
Double A rro w
^
Text A rro w
T
Tex18ox
I I Rectangle O
Ellipse
Figure Name j
; [ v j S how Figure Number
: Cotormep
Export Setup .
"1
: Foure Color
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: s u b p l o t (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 de cima para baixo).
Por exemplo, a seqüência de comandos abaixo gera a figura exibida a seguir: »
» » » » » » » » »
x = - 2 * p i :0.1:2 * p i ; yl = x .* cos(2*x) ; y2 = x .* exp (x) ; s u b p l o t (1,2,1) plot(x,yl) t i t l e (1x * c o s ( 2 * x ) ') s u b p l o t (1,2,2) plot(x,y2) t i t l e ('x * e x p ( x ) ') subplot(m,n,p)
- 3
MATLAB® 7- Fundamentos
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ão da figura:
F ie
Edt
View
In se rt
Toots
Desktop
W indow
Help ;
f Print Figure | I
Properties...
Name:
j \\e in ste r;sjp
Status:
Paused; S docum ents w a *n g
T>çe
HP LaserJet 5
W here
\-* n 5 t« n 'ip
Comment:
I f ~ P n n tto S e
Pnnt range
fii f P-scj-íi .íoin j
Copie* Number of ccp
í ]
[T
r..r.""| „.r~i L ijiH m Jí h
Além desse recurso, a função print permite que a figura seja armazenada em arquivo em vários formatos bitmap: Parâmetros da função print: ♦
Conceitos
identificador (handle) da janela da figura a ser armazenada. No exemplo, esta informação é fornecida pela função gcf, que retorna o identificador (handle) da janela de figura corrente;
♦
formato de gravação. No exemplo, a figura é gravada em formato 'jpeg' com resoluçã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,'- d j p e g 9 0 1, 1exe r c i c i o 5 .j p 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 = i m r e a d (1e x e r c i c i o 5 .j p g 1); i m a g e (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 pela fó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 = - p i :0.2:pi;
Utilizamos a função meshgrid, que cria duas matrizes, resultantes do cruzamento dos valores dos vetores x e y. As duas matrizes servem de entrada à geração das coordenadas tridimensionais necessárias para a definição da superfície. » » »
Veja
x = -pi :0.2:pi ; y = -pi :0 . 2 :pi; [X,Y] = m e s h g r i d ( x , y ) ;
0
conteúdo das matrizes X e Y geradas a partir dos vetores x e y:
MATLAB® 7 - Fundamentos
\%£Ar ray Editor fic A fy ® L
X
*
:.....
b J » \ im \ StackU 2 3 ! t ~T -3.Í41Ü -2.9416 ... ~~— -2'7416;.... s i ~g.... lé -3.1416! -2"9416 ' 3: .....-3.1416! .... -2.9416 -2 7416 -277416!.... u i .... -3714161 .... -2.9416 M -3^1416]” -2.9416 -2.7416] ” íjj ......-3.14Í6Í .... -2.9416 .......-277416!.... -3.14161“ -2.9416 -2.7416! M ü .... --3"l416j' .....-2.9416 ...... -27416:..... ..... -3.1416]” .....-Z94Í6 ......-2.7 416Í..... . li 10 -Í1416| -2.9416 -2.74161 m .....--3.1416! .....-2.9416 ......277416!..... m. -3.14161" -2,9416: -2.7416] <ü
EB CD 0 & \□ h ' . .... 1.... ....í......j 6 I 7 -2 5416 -2 3416 -271416 ...... -1.9416".......--2:1416! -2 5416 -2 3416 -19416 -2 5416 -2 3416 -2.1416! -1 9416 -27Í4Í6I ; -j794iâ!: 7 ”7 ’■'Í2.’5416|7'” '"'*2-34Í6Í...... -2 5416 -2 3416> -2.1416; -1.94167 -271416;.......-Í.94Í6!....... 2: -2 5416 -2 3416 -2 5416 -2 3416 -2.1416! 4.9416} ...‘7 -2 5416 -2 3416 -2 1416 -1.9416? | 7794161.......| -2.5416!.......-2.3416!...... -2714161 -2.1416] -179416! -2,5416! ' -2.3416] :-2.54161....... -2.3416;....... -27Í 4Í6: .......-79416:....... -1.9416! -:i; -2.5416! ' -2.3416j -2.14161
5
4
Ar ray Editor - Y ffl m b a i d ’ ? x | *•03 | 1^1* ‘■m'•Stack;^ j .....S..........L 6 i t 2 ’ .... 3........777 4 7 ! ! .....-37l4Í6].... -3.14161 -3,1416! 73.14161 -3.1416= ....-3.14161.... ""-3Í1416Í...... i r 7.2.;... -2.94161 ~ -2.9416] ' -2.9416! -2.9416: -2.9416]_ -2.9416Í 2.9416! 3 ; '''''-274167 -2 7416 "-2.7416! ’ -2 7416’“ ’ -2.74Í6Í ....‘-274167... "‘-277416;.....- | 7 1 g t ....-254167 .....-25416!:... ...-25416!..... ....-254161... .... 2754167 ....-25416j:.... -2.5416Í ; SJ... -2.3416! -2.34161 -2.3416] -2.34161 -2.3416í 4 | -2.3416! -2.3416; I.sj... ....-2714167'.....7214161....'”'-27Í4l'6l.... "-271416Í... ...-2Ü4Í6Í7 ....-21416!..... '-2 1 4 1 6 '...... - 1 -779416! -1.9416] -1.94161 "TÍ79416Í -1.9416? -1.94167 -1.9416[ 1: 1 ri.74Í6l 3 -1:7416! -1 7416 -1.7416] ^ ]: -1 7416 ...-77416].... -1.7416] : S t ...-1.5416! .....-1.54161.......-Í.5416].... 7Í7S4Í6|7 ...“754167' ....-15416!..... -1.34161 -1.34167” | ho:... '■-1.3416! .....-1.34167... ...-734161.... -1.3416?... ...-1 34161 1 :11j ....-1:1416? .....-17Í 416Í.... ...-714Í6!.... '-71416!... ... -7l4 1 6 [- ....-7 l4 Í6 j‘.... • “-7T416j )12j -0.94159! -0.94159T"' -0.941591 -0:941591 -0.94159] -0.94159Í -0.941591 -o7p|
T
m
_
'“-Í7_ p ^
As coordenadas da superfície são calculadas com os valores armazenados nas matrizes X e Y: »
Z = X
.*
COS
(2*Y) ;
Passo 1: Chamada da função de criação de superfície. A função surf cria uma superfície. A matriz Z contém os valores da coordenada Z da superfície. »
||II
surf(Z)
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 de anotação, é possível configurar mapas de cores, posicionamento de câmera (visualização tridimensional), transparência e iluminação. Este assunto está detalhado no 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 Armazenamento de Dados Neste tópico, apresentamos os recursos de leitura e armazenamento de dados, em formato MAT, ASCII e MS-Excel, bem como o utilitário de importação de dados. Os outros recursos do MATLAB® 7 de manipulação de arquivos de dados são apresentados no capítulo 4.
2.7.1. Arquivo MAT O MATLAB® possui um formato binário próprio de armazenamento de dados, usual mente chamado de formato MAT, pois os arquivos de dados neste formato possuem extensã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.m at contendo todas as variáveis definidas no [Workspace]: I 62 )
MATLAB ®7-Fundamentos
» » »
♦
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 o conteúdo da variável selecionada em arquivo.
S lp r" .tl.Q .3 :X .C G ;7 .Q 9 nTj Open Selection Copy
Ctrl+C
Duplicate
Ctrl+D
Paces
Delete
♦
Hfnax
[SSBI
Save as type:
jM A T -fiie s f
lê um arquivo com nome dadosl.m at. As variáveis contidas no arquivo aparecem no [Workspace], >> load dadosl
Arquivos de dados .MAT também podem ser lidos pelo utilitário de importação de dados que é 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;
♦
dlmwrite: grava arquivo ASCII delimitado.
No exercício proposto a seguir, vamos ler o arquivo 'cap2_dados1 ,txt', que contém duas colunas de dados numéricos.
S-
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 da população.
II.
Obter valores da reta ax+b que melhor aproxime os pontos dados (mínimos quadrados / regressão linear). E crie um gráfico com os pontos dados e a reta de 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 e retorna uma matriz com os valores lidos. » m=dlmread(1cap2_dadosl.txt');
A variável m recebe uma matriz 50 x 2 com os valores numéricos armazenados no arquivo: ♦
1a
coluna: % 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 y recebe a 2- coluna transposta: »
x = m( : , 1 ) ' ;
» y=m(: , 2 )';
Use a função plot, apresentada no item anterior, para gerar o gráfico: » plot(x,Y, 1*') ;
- 3
MATLAEP 7 ■Fundamentos
’> F igure 1 Ne
Edd
Vtew
In s e rt
Tools
□ t» B S I fe i O.
D esktop
W indow
®. à © ..€
Help
□ B !■ Q
120
0
10
20
40
50
60
70
80
80
100
Solução do item II: Para resolver o item II, usamos a função polyfit, que calcula aproximação por polinómio. Dados de entrada: ♦
dois vetores colunas, x e y, correspondentes a coordenadas de pontos;
♦
um número n correspondente ao grau de um polinómio.
Dados de saída: ♦
um vetor p de dimensão 1 x n+1, contendo os coeficientes do polinómio que melhor aproxima os pontos dados: Pol(t) = p(1)*tn + p(2)*tn_1 + ...+ p(n)*t + p(n+1)
No caso de regressão linear, usamos a função polyfit para obter um polinómio de grau 1. » p=polyfit(x,y,1) P
=
1.2363
B
2.4225
A reta que melhor aproxima os pontos dados é f(x) = 1,233*x + 2.4225. Para calcular o valor de polinómio para todos os valores de x, usamos a função polyval.
Conceitos
Dados de entrada: ♦
um vetor p de coeficientes do polinómio;
♦
um vetor x com os valores para os quais o polinómio deve ser calculado.
Dados de saída: ♦
um vetor yp com os valores do polinómio calculados em x deve ser calculado.
♦
um vetor p de dimensão 1 x n+1, contendo os coeficientes do polinómio que melhor aproxima os pontos dados: » yp=polyval(p,x);
Para criar um gráfico com as duas curvas, digite: » plot(x,y,'*',x,yp)
Solução do item III: Para resolver o item, vamos criar mais uma coluna na matriz m contendo os elementos do vetor yp (concatenar horizontalmente m com a transposta do vetor yp) e gravar a variável m no arquivo 'cap2_saida.txt1usando a função dlmwrite. Para compor m, digite: » m= [m yp ’];
Para gravar o arquivo, digite: » dlmwrite('cap2_saidal.txt1,m);
Observação: a solução desse exercício está armazenada no arquivo cap2_exercicio_07.m.
MATLAB®7-Fundamentos
2.7.3. Arquivo MS-Excel Considere o exercício 7 apresentado no tópico anterior, porém os arquivos de entrada e saída no exercício seguinte constituem arquivos no formato MS-Excel. Exercício 8___________________________________________________________________ Como os dados estão armazenados em arquivo do MS-Excel (*.xls), basta substituir as funções de leitura e gravação de arquivos dlmread e dlmwrite por: ♦
xlsread: lê arquivo *.xls;
♦
xlswrite: grava arquivo *.xls.
A função xlsread recebe, como parâmetro de entrada, o nome do arquivo *.xls a ser lido e retorna uma matriz com os valores lidos. >> m = x l s r e a d ( 'cap2_dadosl.xls');
Essa função aceita dois parâmetros de entrada opcionais: »
m=xlsread ( 'cap2_dadosl .xis 1, 'PlanX ■, 1Al :B50 1)
♦
2- parâmetro: nome da pasta que contém os dados a serem lidos;
♦
32 parâmetro: intervalo que contém os dados desejados.
Além disso, xlsread pode retornar os dados separados em até 3 categorias: »
[Num, Txt,
Ra w ] = x l s r e a d ( 'cap2_dadosl.xis 1);
♦
Num: matriz numérica contendo o conjunto de dados numéricos da planilha;
♦
Txt: cell array contendo o conjunto de dados alfanuméricos;
♦
Raw: cell array contendo todos os dados, sem formatação específica.
A função xlswrite recebe, como parâmetro de entrada, o nome do arquivo *.xls no qual o dado dever ser gravado e a variável a ser armazenada. Para gravar o arquivo, digite: »
x l s w r i t e (1c a p 2_saidal.xis',m);
Esta função aceita dois parâmetros de entrada opcionais: »
♦
x l s w r i t e ('cap2_saidal.xis 1, m , 'P l a n l ',1A l : C 5 0 ')
2° parâmetro: nome da pasta na qual os dados devem ser gravados; 39 parâm etro: intervalo que vai conter os dados.
Conceitos
ES
Microsoft Excel - cap2„saida1
I ,f§ P ) A rq u iv o l b
JEditar
&
Q
i i
111 M
â
f : A ria í ' Í 2
E xjb ir
t í ,
« -
^
In s e rir
10
Ó
F o r m a ta f
V ,
t à
- : H
! Q.
3í l
^ s
F e rra m e n ta s
m
- < *
; m
m
m
fia d o s '
-
M
8P
%
CK
'-;r
% ; (iã
.......... H11........... A B s C \ A. 1 0 11.0703! 12,42253: 2 ] 2 ,0 4 0 8 11,3917! 14.94553! ~3 ! 4 ,0 3 1 6 12,31381 1 7,4 6 8 5 2 4 > 6 ,1 2 2 4 S 26.4991 19.99151! 5": ...... 8.1 63 3 2 6 ,1 0 2 2 2,51 4 63 ' FS '1 ...... 10,204:" 3.3166; 25,0375! 7 12,24 5 1 “ 2 7 .0 9 8 2 7.56074: ...... 14V 236Í ....3 9 ‘3 1 5 ^ 3Q,Ò8 3 9 8 1
2: &
D
j
E
F
i
Observação: a solução desse exercício está armazenada no arquivo cap2_exercicioJ)8.m.
2.7.4. Utilitário de Importação de Dados O comando im portdata do MATLAB® 7 é um utilitário de importação de dados, que verifica o formato do arquivo selecionado e executa seu carregamento utilizando a função de leitura mais conveniente disponível no MATLAB®7. Este comando pode ser acionado pelo [Command Window] ou pela opção [Import Data...] no menu pop-up [File],
• a n EH iFrog_R ed i E dit
1 1 1 I
View
Graphics
D e b u g : D<
New
C trl+ N
Save
C trl+ 5
O pe n...
C trl+ O
Close W orkspace
C trl+ W
% Recent Doctments.
-Q g ra fO S
figrafôS •Qgrafll § license Lotus l. w k l íÉ fjL o tu s Z w k l
S ave W orkspace A s ...
C trlfS
Set P a th ... P re fe re nc es ... Page S e tu p ... P rin t...
^matisbl § re d e y e d fro g •BxdYd ffixy
C trl+ P
l c ; \ . • .\cap02_Exercicio6.m 2 ...rk \ca p 0 2 _ E x e rc jc io 7 l.m 3 c : \ . . .7\w o rk \c irc u ito0 2 .m 4 c: \ . . .7\w o rk\circu ito 01 ,m E xit MATLAB
C trl+ Q
Recognized Data Be$
Exemplo: leitura de arquivos 'cap2_dados1 .xis1. ♦
Identifica o tipo de arquivo;
♦
Abre a planilha;
♦
Identifica a pasta;
♦
Exibe os dados.
MATLAB® 7 - Fundamentos
*.)■
Impor» W izard
0 8 0 8 0
Select variables to import using checkboxes........
--------------------------------------------------- --------
—
@ Create variables matching preview.: f
tp^vijçíi - r
Cr p & j n c!c-i s Í---XA esc h fow
»(■
3
f, f . r v M * •nairsji.
Variables r i C:Vnat(ab7Wvorkfcap2_saida1 xls | Name *
Import
El
i W
f .Size 5 0x3
j B y te s ........ j Class I
\
• ■ .......M r_
2 | 3 11.0703112.42253160...: 11.3917:14.94552505..4 4 0316 12.3138117.46851849...! 3 4j 61224 26.499:19.99151194...! 5: 81633 26.102122.51462901...! 3.3166:25.03749883...“ B i....... 10 204 7: 12 245 27.098Í27.56073953...! 8I 14.285! 3 9.315^.08398023.. J 16 327 34.798I32.60722093..J 9j 18.367138.51300000...3S.12922535..J 10] 1.1]_____ 20.403 36 36799999 37.65246605...
1200 double! i f ___
i¥ — >|
< |
2.8.
Help
|
24 4 9 " 26.531 28.571 i
<
4
: iffii
36.27 42 69894746 . 51.093 4522218816.. 54 066 47.74419258..
v
.............................................................................. |
« Back
i
j
>«>;
[ Fimsh
J
m
( Cancel
ii |
Programação no MATLAB® 7
Desenvolver soluções e efetuar manutenções em programas no MATLAB® é, sem dúvida, mais eficiente e rápido do que em qualquer outra linguagem de programação convencional como C/C++, Fortran ou Visual Basic. Isto se apresenta em dois grandes aspectos: i
♦
Núcleo do MATLAB® 7: Composto por um conjunto de bibliotecas matemáticas eficientes e confiáveis, desenvolvidas por especialistas e validadas por professores, cientistas e engenheiros no mundo todo. O MATLAB® 7 utiliza a tecnologia 'JIT accelerator1 (Just-In-Time Accelerator), que aumenta a velocidade de execução, tanto das funções do núcleo do MATLAB® 7, quanto das aplicações desenvolvidas pelo usuário.
♦
Plataforma de desenvolvimento composta por: Linguagem de programação de alto nível, flexível, de codificação simples e, portanto, fácil de ser aprendida. Edit: editor de programas, composto por ferramentas de apoio a desenvolvi mento (por exemplo, ce ll m ode: célula de código) e depuração de código (debug mode). M -Lint: analisador de sintaxe de programas para auxiliar o processo de depuração, manutenção e melhoria de código.
Por estarem baseados em um núcleo extremamente eficiente, programas executados no MATLAB são mais lentos do que códigos gerados manualmente em linguagem C/C++ ou Fortran. Neste tópico, apresentamos os conceitos básicos de programação na plataforma de desenvolvimento. I Conceitos
2.8.1. Editor de Programas: Edit Arquivos de programa do MATLAB® têm extensão '.m' e, por este motivo, são usualmente chamados de m-files. Existem dois tipos de m-files: ♦
Script: é uma sequência de comandos do MATLAB® e serve, basicamente, para automatizar algum processo repetitivo. Não tem parâmetros de entrada, nem de saída, e utiliza as variáveis do Workspace. É semelhante a um arquivo '.bat' do DOS. Os exemplos deste capítulo, até este ponto, foram codificados como scriptfile.
♦
Function/Program :tam bém é uma seqüência de comandos do MATLAB®, mas aceita parâmetros de entrada e retorna parâmetros de saída. Funções utilizam seu próprio espaço de memória para armazenar variáveis locais.
Os elementos do editor de programas são detalhados, posteriormente, no capítulo 3 deste livro. Neste tópico apresentamos os aspectos de aplicação mais imediata dos recursos de edição e depuração de m-files. O MATLAB possui um ambiente para edição de programas que pode ser acionado de duas formas: ♦
digitando edit na linha de comando;
♦
acionando ícones da barra de ferramenta do MATLAB »
Pi úZ
.
edit cap2_exercicio_07
f- í l t t o r - c : V nía t l a b / \ w o r k ^ 4 p Z .e x í í r c ic io ^ O 1. m
ü
f» jf e jlX )
Ed* Text Cel Tods Debug DesWop Window Help d
a?
a
x
* • * >
=»
&
*
f.
e
a
: -a «
a r
o
m
sm a
» •*
■- pcho on % Arquives: :c&p2_jã>:ercic'ió _G7 3 % C&PITÜLO Z - êõluçao do Exercício 7 4 * leitura e gravacao d* aequive .ASCII
1 2
? 6 1 7 1 8 9 ||
10
% % %.
m=dlairead ( *cap£.jSadosa. t x t 1) ; % Ssparacao dos dados
12 r í
x = m ( : , 1) •;
13 -
y -m ( : , 2 )• ;
W.
□ A. !
Solueac- cU? itan? X Leitura do arquivo 1cap2_dadosl;. txt* ccic a. funeso dlmread.
li
!■
e
!^ 15
%
Exifcicao dos pontes
V
■seriei
;Ln 1
Col 1
II ♦
o editor abre uma pasta para cada arquivo;
♦
na margem esquerda da tela, é exibida a numeração das linhas do programa em edição;
♦
'%' indica texto 'comentário';
♦
J
indica que a linha de comando continua na próxima linha;
MATLAB® 7 - Fundamentos
♦
os textos são exibidos em cores diferentes conforme sua classe sintática: palavras reservadas (ex.: for, end, if): azul
♦
-
textos de comentário (indicados p o r'%'): verde
-
cadeia de caracteres em edição: púrpura
-
funções e variáveis: preto
'%%' indica delimitação de célula código (cell modé), ou seja, trecho de código que é executado em bloco durante a operação de depuração (debug modé) do programa.
Principais recursos de apoio à codificação de programas: ♦
cor de texto: identificação de texto com cores diferentes por classe sintática;
♦
balanceamento de expressões: o editor verifica se os elementos de expressões ( ), [ } estão balanceados. Basta posicionar o cursor em um dos elementos para que o editor identifique seu par, sublinhando ambos. Caso o par não seja encontrado, o editor exibe um traço.
Exemplo de par balanceado: % Leitura do arquivo 'cap2_dadosl.txt' m=dlmreadj_'c a p 2 _ d a d o s l .t x t 1) |;
com
Exemplo de par não-balanceado:
♦
'indentação1automática: o editor organiza automaticamente os recuos de texto de acordo com as estruturas de programação definidas no código selecionado. Basta selecionar o trecho do programa e digitar [CTRL+I],
Exemplo (arquivo triangulo_pascal.m): H
E d it o r - e : \ m a t la b 7 \ w o r k \ t r ia n g u I o _ p a s c a L ia *
1 Füe lü
Edt G?
s i U 1
T e xt. Cell Tools
B
j
& %
Desktop
:■*
P U S
[L.
W ndow
Heip
.fà f,
? X
a = e y e (n );
3 4 -
a ( :, l) = l; f o r i= 3 :n :
5 -
fo r
\
I n ic ia
a c o rs id e n t i d a d e
la í e ia
p r iif K iic a
end end
D £3? c r
*■' (d í
c c l u u a cosei;
% C o ic p c e o s d e m % is
j=2: i
CTRL+I
c s
%
m
Tools s
Debug -
- f i o ...... +
i
f u n c tio n
2 -i
a **e y e ( n ) ;
3 4 -
a ( : , 1) * 1; fo r
Desktop
m
W indow
Help
fà k
-
a = t n a n g u lo
fo r
6 -
*o
X I ”
! x pascal
d
v l
* (n )
% I n ic ia
*
'-i I n i d s
p n n ie ir a
I
coa> i d e n t - i d a d *
id ff;|
o - o lu r , « cc-tn
: i a li,] ]= a ( i- l, ] - l) + a |i- l,] ) ;
end S
5 :triangulo_pascal
Lr. 13
Col 5
Antes da 'indentação1
Conceitos
\^
end
9
1
T e x t -Cell
S
5-
a [ i,j) = a ( i- l, j- 1 ) + a ( i- l, j) ;
7 8
m
File; Edit
*Õ _ v [
•f - r 1.1 : K : c i i B s ;ll£ . f u n c t io n , a = c r ia n g u lo _ p a s c a l (n )
2 -
6 -
Debug
> 1 I
V
<
> tnangufo_pascel
; ln
9
Col 1
Depois
( 71
..
2.8.2. Depuração de Programas: Debug Mode Principais recursos de apoio à depuração de programas: ♦
B reakp oint (tecla F12): configura um ponto de parada na execução do programa. Basta indicar o traço à direita do número da linha, o qual passa a ser indicado por um ponto vermelho.
Em debug mode, é possível monitorar o conteúdo das variáveis do programa em execução, tanto na janela [Workspace], quanto no editor. Basta aproximar o cursor da variável a ser observada.
-fã]
®
#
N am e
i
File
<50x2 double> <1 x50 double>
1
Edit
View
Graphics
Value
# 1
1J 2! 3! 4i 5j 6!
T °l. 2.0408' 4.08161 6.1224] 8.1633] 10.204}
Debuç
II .2 11.07 11.392 12.314 26.499 26.102 3.3166
E d ito r - c :\r o d tId b 7 \w o rk \c a p 2 _ e x e rc ic ío _ ü 7 ,m
I File
E dit
Text
1 8
CeS Tools D ebug D esktop W indow
1K ä
L e it - u r a % a
o \ ã>
ä do
fu c e a o
a r q u iv o
M
jr .I ©
:
?* ? X
' © ! ' © : ® [IP i£ÜI í £ l h [c a p ... : y - |
; □ v-
Help
1c a p 2 _ d a d o s l . t x t '
cc
ttfi
«V
d Im re a d .
9 10 -
tn ” d l m r e a d ( ' c a p 2 _ d a d o a l . t x r , ! ) ;
11
=1 S e p a r a e a o
12 -
X-» ( :/ !) '; |y = ro : 5 0 x 2
13 O 14
**
15 16 -
Pi
17 18 i -
dos
dados
: !
i
;
j
d o u b le . = 0
1 1 .0 7 0 0
2 .0 4 0 8
1 1 .3 9 2 0
4 .0 8 1 6
1 2 .3 1 4 0
6 .1 2 2 4
2 6 .4 9 9 0 (
__a..... U c r ip t
! ln
13
Col
1
lo v iS .
A execução do m-file, após a configuração do breakpoint, é efetuada em modo de depuração (debug modé), que aparece identificado com o prompt
72
MATLAEP 7 - Fundamentos !
0 promtp
(k » )
Função dbstop n dbclear n dbcont dbstack dbstatus" dbstep dbtype dbup dbquit
habilita as funções debug: Informação configura breakpoint na linha n desconfigura breakpoint na linha n avança execução até o final (tecla F5) exibe pilha de chamadas de função (quem chamou quem) exibe lista dos breakpoints configurados avança um passo de execução (tecla F10) lista o arquivo que está sendo depurado muda o contexto da janela [Workspace] encerra modo debug
Exemplo: %% m = d l m r e a d ('c a p 2 _ d a d o s l .t x t '); % Separacao dos dados x = m (:,1)1; y = m {:,2) K » dbstop 22 % Configura breakpoint na linha K » dbstatus % Exibe breakpoints Breakpoints for cap2_exercicio_07 are on lines 13, 22. K » dbstack % Funcao chamada > In cap2_exercicio_07 at 13 K » dbstep % Executa proximo passo
22
%% % Exibicao dos pontos plot(x,y, 1*') 16 plot(x,y, '*') K » dbclear 22 % Desconfigura breakpoint na linha 22 K » dbstatus % Exibe breakpoints Breakpoint for cap2_exercicio_07 is on line 13. K » dbquit % Encerra modo debug
>> ♦
(t Conceitos
Tecla de função [F10]: em debug mode, a tecla de função [F10] aciona a execução linha a linha do código. A última linha executada é indicada por uma seta verde.
Ü Editor - c;\matiob/\work\côp2_exerciGÍo_0/,m Fite
Edit
T ext
D 3 S
Cell
Tools. Debug
Desktop
&
* fe
j*.jíWjfWj
W in d o w . Kelp
M f.iC fi
^
C
B Q ©
? X
5 "v
:c.p;:x f
eiC'MC'a do. arquivo funcao diisread. 9 10 11 12 -
13 O 14 H Exíbic&o dos pontos - >$• plot (x, y, •* )
Sciúcsc •:1o ate ..Cíu.!.í:uí.(;
...q u e .e iy r o x .
;SCrçit____
r-~-
L
Tecla de função [F5]: executa o arquivo até o final. ♦
Ce/l: o s in a l'%%' delimita blocos de código, ou células de código (cell), que podem ser isoladamente, Este modo de execução é habilitado na opção [Evaluate Current Cell] do menu pop-up [Cell] do editor. Quando o cell mode está habilitado, as células de código ficam destacadas com fundo laranja-claro. it
T ext
□ Q» "~7~--- \
Cell
Tools
Debug
Desk
* A X
- •- # Í M f. Le 1 1 u ra do arqu'ivo *cap2 _
% a funeao diitiread.
• cap2- dados! »ixt-1}; ; %:?-Separac«o dds dados x-»(:,l)';
7=m(:/2j1;
5i> % -Exifeioao das .porit-as plot(x,y,1?<) In s e rt T e x t Mar
Previous C ? !
O rf-K ip
2.8.3. Analisador de Sintaxe de Programas: M-Lint Além do modo debug, a plataforma de desenvolvimento do MATLAB® 7 fornece a ferramenta de apoio M-Lint, um analisador de sintaxe de programas que verifica se códigos de programas m-files estão sintaticamente corretos e sugere melhorias na codificação. Gera um relatório de ocorrência de falhas e possibilidades de melhoria detectadas. 0 M-Lint pode ser acionado dentro do editor de programas edit, pela opção [Check Code with M-Lint], no menu [Tools], H Editor e:\matIabAworkttrianguio_pascal.i File
Edit
Text
Cell
D & B
o
t % "S sl -
Show Dependency Report Open Profiler
MATLAEP 7- Fundamentos ;
Vamos executar a verificação no arquivo ,triangulo_pascal.m': ** M i i n t C o d e C h e c k R e p o r t F ie
E d it
View
Go
D ebug
D e s k to p / W indow
Help
G I# 1 M -Lint Code C hecker Report Report for file c:\matlab7\work.\triancrulo pascal c:\aatlab7\work\ triangulo_pascal.m
0 M-Lint gera o relatório no Web Browser do MATLAB® 7. As informações podem ser exportadas para .HTML. No caso de arquivos com erros de sintaxe, o M-Lint emite o relatório com a indicação da linha e a descrição do erro detectado. Vamos executar a verificação no arquivo 'triangulo_pascaI_erro.m': V M-Lint Code Check Report Fie t d t D
a
is ’S
Text
C el
Toots
i % « T o
Q t i% a
10
, +
Debug ■-
Desktop a
* t.H _ j
H
“ I
Window
Help
f. i ' : * '
File
Edft
View
Go
Debug Desktop
Window
Help'
-B
^
-- ' r i a n g u i o _ p s 3 c a l _ e r r o f a )
function a = triangulo_pascal_erro (n) a*eye(n); ^ Inicia a core ider-.ticlad M-Lint Code Checker Report i;(diagonal corcpcsi-& p: — . a(:,l)=l; % Inicia prirasira coiuna Report for file c: \aatlab7WorkN triângulo pascal erro for i=*3:n % Ccaspoe os dexaais c :\matlab7\work.\ tr iangulo_pascal_err o.m
-
for j=2:i-1 a(i,3*ai-l, j-l)+a(i-.l, j); end end
3 messages 8l Parse 18: Parse ;8: Parse
errorat 1= 1 appears to be invalid HATLAB syntax errorat 151 appears to be invalid MATLAB syntax errorat ')1 appears to be invalid MATLAB syntax
2.8.4. Elementos de Programação do MATLABw7 Neste tópico, apresentaremos os elementos de programação de funções no MATLAB®. Essas funções aceitam múltiplos parâmetros de entrada e retornam múltiplos parâmetros de saída (esta é uma característica muito peculiar e extremamente prática do MATLAB). A sintaxe básica de definição de função segue o formato abaixo, no editor edit: function
Psl,
.. ., PsN ] = nome_funcao
Pel,
. . PeM )
♦
function: palavra reservada (é grafada em azul no editor), que indica início de definição de função;
♦
Ps1,..., PsN: parâmetros de saída;
♦
nome_funcao: nome da função (é case-sensitive);
♦
Pe1,..., PeM: parâmetros de entrada;
♦
... : expressões que definem as ações a serem executadas pela função.
A sintaxe básica de chamada de função segue o formato abaixo, na linha de comando no [Command Window]: »
[Psl,...,PsN]
= nome_funcao
(Pel,...,P e M ) ;
Para ilustrar a construção de uma função, criamos o arquivo 'cap2_exemplo_13.m' com as seguintes características: ♦
função principal: 'cap2_exemplo_13';
♦
implementa a mesma operação do script-file 'cap2_exercicio_07.m';
♦
parâmetros de entradas: nomes do arquivos de entrada e de saída;
♦
parâmetros de saída: matriz m (completa com as três colunas); vetor coef (com os coeficientes da reta a*x + b). Edit:
cap2_exemplo_13.m________________________________________________________
% CAPITULO 2 - Exemplo de funcao % [m, coef] = cap2_exemplo_13 (Arq_Entrada, Arg_Saida) % 1. Le arquivo Arq_Entrada com dlmread % 2. Executa as mesmas instruções em 'cap2_Exercicio_071 % 3. Gera arquivo Arq_Saida com dlmwrite % 4. Retorna a matriz m e o vetor coef function [m, coef] = cap2_exemplo_13 ( Arq_Entrada, Arq_Saida ) % Leitura do arquivo Arq_Entrada com a funcao dlmread. m=dlmread(Arq_Entrada); % Separacao dos dados x = m {■.,!) '; y= m ( : , 2 ) 1; % Exibicao dos pontos p l o t (x,y, 1* 1) % Calculo do a*x + b que aproxima os pontos coef=polyfit(x,y,1); % Calculo do valor do polinomio yp=polyval(coef,x); % Exibicao dos pontos e da reta de aproximacao p l o t ( x , y , '*',x,yp) % Montagem da matriz m: m concatenada com % o vetor yp transposto m = [ m y p '] ; % gravacao do arquivo de saida contendo a matriz m dlmwrite(Arq_Saida,m);
MATLAB® 7-Fundamentos
Com relação a esse exemplo, note que:
a.
A execução da função 'cap2_exemplo_13' permite indicar os arquivos de entrada e saída e as variáveis de retorno:
» [resultado, coeficientes]=cap2_exemplo_13('c a p 2 _ d a d o s l .t x t ',1x . d a t ');
b. »
c.
O texto de comentário no início do arquivo, além de documentar o programa, é exibido pelo comando help: help cap2_exemplo_13 CAPITULO 2 - Exemplo de funcao m = cap2_exemplo_13 (Arq_Entrada, Arq_Saida) 1. Le arquivo Arq_Entrada com dlmread 2. Executa as mesmas instruções em 'cap2_exercicio_7' 3. Gera arquivo Arq_Saida com dlmwrite 4. Retorna a matriz m e o vetor coef
0 arquivo m-file e a função principal devem ter o mesmo nome. W Editor - c:\m atíab7\workkap2_exempto_J3.m 1 Fite Ed* Text Cel Tods Debug Desktop Window Help
mmm *
^2 1 ’ 1
Ia
H
7 8 y 10 11 12 13 14 -
: - h ° . . j + i * L i,!
. x
I
X
’□ v
l.T i.Ê z ......
function [ m, coe£] = cap2 exemplo_l3 ( Arq Entrada, Arq Saida ) funcao diasread. m=dlinread(Arq_Entrada) ; % Sepsaaciao cios .3ac3o3 x~w(:,1 )'; 7=m(:,2)' ; t Kxihicao do» ponto» paot(x, 7 ,’ .< . cap2_exemplo_13
d.
Stack •
Ln 24
Ä
.'; V >
Cot 32
A partir do MATLAB® 7, nomes de função são case-sensitive, isto é, letras minúsculas e maiúsculas são consideradas diferentes. O MATLAB® 7 exibirá uma mensagem de aviso caso alguma diferença desse tipo seja detectada.
» [resultado,coeficientes]=Cap2_exemplo_13(1cap2_ d a d o s l .t x t 1, 1x . d a t '); Warning: Function call Cap2_exemplo_13 invokes inexact match c :\matlab7\work\cap2_exemplo_13.m.
Com relação aos parâm etros de saída, se a chamada da função for feita: ♦
com menos parâmetros que o declarado, a função retorna apenas os parâmetros fornecidos: »
♦
resultado=ca p 2 _exemplo_13('cap2_dadosl.txt', 'x.dat');
com mais parâmetros que o declarado, o MATLAB® acusa erro Too many output arguments' (parâmetros de saída em excesso):
Conceitos
&
» [resultado,coeficientes,m]=cap2_exemplo_13(1cap2_ d a d o s l .t x t ' 'x.dat1) ??? Error using ==> cap2_exemplo_13 Too m a n y output a r g u m e n t s .
♦
se nenhum parâmetro for indicado, a função retorna apenas o valor do primeiro parâmetro.
Com relação a escopo de variáveis: ♦
Como já sabemos, o MATLAB® armazena suas variáveis em uma área de memória denominada workspace;
♦
Parâmetros de entrada e saída são a forma (interface) mais adequada para trocar dados entre o workspace do MATLAB® e ambientes internos de funções.
Variável Local ♦
Funções trabalham com variáveis locais, isto é, variáveis que ficam armazenadas em áreas de memória próprias, independentemente do workspace do MATLAB®;
♦
Os escopos das variáveis do w orkspace e das variáveis locais de funções são distintos: -
variáveis do workspace não são reconhecidas dentro das funções;
- variáveis locais não são reconhecidas fora do escopo das funções nas quais foram definidas. ♦
Variáveis locais podem ser do tipo 'variável persistente1 (persistent}. Variáveis persistentes são variáveis locais que mantêm seu conteúdo de uma execução para outra, dentro de uma mesma sessão de execução do MATLAB®.
♦
Devem ser definidas explicitamente dentro da função como persistent: e d i t : cap2_varpersistent_exeir.plo .m___________________________________________
% Arquivo: cap2_varpersistent_exemplo % Retorna Var_Persistent * (matriz identidade nxn) function m=cap2_varpersistent_exemplo (n) persistent Var_Persistent if isempty(Var_Persistent) % se vazia, recebe 1 Var_Persistent = 1; else Var_Persistent = Var_Persistent+n; % soma n end m=Var_Per s i s t e n t * e y e (n); Pi
♦
No exemplo precedente, a função inicializa o conteúdo da variável persistente com valor 1 (verifica se seu conteúdo é vazio). Posteriormente, a variável recebe seu conteúdo mais o valor de n (parâmetro de entrada).
- 3
MATLAB® 7 - Fundamentos
Chamada da função cap2_varpersistent_exempIo: » cap2_va ans = 1 0 » cap2_va ans =
r p e r s is te n t_ e x e m p lo (2 ) 0 % P rim e ira ex ec u cao 1 r p e r s i s te n t_ e x e m p lo (2 )
: V a r_ P e rs is te n t
= 1
0 % Segunda ex ecu cao : V a r_ P e rs is te n t = 1 + 2 0 3 » c a p 2 _ v a r p e r s i s te n t_ e x e m p lo (2 ) ans = 5 0 % T e rc e ira ex ecu cao : V a r_ P e rs is te n t = 1 + 2 + 2 0 5
3
Variável Global ♦
Variáveis globais são variáveis que podem ser reconhecidas no workspace e dentro de funções. Devem ser definidas no workspace como variáveis globais e ser explicitamente declaradas no código das funções.
♦
Por exemplo, Var_Global deve ser definida como global no workspace e declarada dentro da função 'cap2_varglobal_exemplo'. Quando executada, a função reconhece a variável Var_Global do workspace:
e d it:
c a p 2 _ _ v a r g l o b a l _ e x e m p l o ,m _______________________
% A rq u iv o : c a p 2 _ v a rg lo b a l_ e x e m p lo % R e to r n a V a r_ G lo b a l * (m a tr iz i d e n t i d a d e f u n c t i o n m = c a p 2 _ v a r g lo b a l_ e x e m p lo (n ) g l o b a l V a r_ G lo b a l m = e y e (n )* V a r_ G lo b a l;
nxn)
Chamada da função cap2_varglobal_exemplo: » g l o b a l V a r_ G lo b a l » V a r_ G lo b a l= 5 ; >> c a p 2 _ v a r g l o b a l _ e x e m p l o ( 3 ) ans = 5 0 0 0 5 0 _________0 0 5________________________________________________________________________________
Dicas para utilização de variáveis persistentes e globais: ♦
evite usar variáveis persistentes e globais;
♦
se precisar usar de qualquer jeito: -
evite conflito de nomes (não use nomes como 'x', 'm1, 'i'); utilize whos, clear, isglobal, ispersistent para gerenciar variáveis globais e persistentes.
ui Conceitos
Com relação a escopo de funções:
♦
Quanto a escopo, o MATLAB® 7 possui quatro classes de funções: primárias, auxiliares (subfunctions), 'aninhadas'(nesfec/ functions) e particulares (private functions).
♦
Funções primárias: contêm o código da rotina principal e devem ter o mesmo nome do arquivo m-file.
♦
Funções auxiliares (subfunctions): um m-file pode conter várias funções desde que apenas uma seja a principal e as demais sejam auxiliares: o escopo das funções auxiliares é o próprio m-file, ou seja, subfunções só podem ser chamadas por outras funções definidas no mesmo m-file no qual estão contidas; -
♦
cada função auxiliar possui seu próprio workspace. As variáveis utilizadas em uma subfunction só existem dentro deste escopo.
Funções 'aninhadas' (nested functions): uma função pode conter várias funções aninhadas. As palavras reservadas function e end indicam, respectivamente, início e final de definição de nested function. edit: cap2__exemplo_.14.nl____________________________________________
% Arquivo: cap2_exemplo_14.m % Exemplo: item 2.5.8 - nested-function function m = c a p 2 _ e x e m p l o _ 1 4 ( n ) m = [n ni v e l l ( n - 1 ) ]; function ml = nivell ( nl ) % Funcao aninhada 1 ml = [nl n i v e l2(n-2)]; function m2 = nivel2 ( n2 ) % Funcao aninhada 2 m2 = [n2 n i v e l3(n-3)]; function m3 = nivel3 ( n3 ) % Funcao aninhada 3 m3 = [n3 n 3 - l ] ; end end end end
Chamada da função cap2_exemplo_14: » m = cap2_exem.plo_l4 ( 5 m = 5 4 3 2
♦
1
Funções particulares (private functions): são funções auxiliares codificadas em m-files diferentes mas que só podem ser acessadas por sua rotina principal. Caso você queira que um determinado conjunto de arquivos só seja acessível por um arquivo, basta armazenar esses arquivos em um subdiretório denominado 'private1.
MATLAB® 7 - Fundamentos
Com relação a estruturas de programação:
♦
Expressões booleanas: o MATLAB® possui características de linguagem de programação estruturada e emprega expressões booleanas na implementação dos testes utilizados pelas estruturas de seleção e repetição para implantar o fluxo de programação. No MATLAB®, resultados de testes lógicos são armazenados em logical arrays, vetor de bits, que podem assumir valor 0 ou 1: 0 (zero) ou rtil (nulo, vazio) indica condição falsa (F - false)', 1 (um) ou diferente de 0 (zero) indica condição verdadeira (T - true).
Símbolos de testes e operadores booleanos: Símbolo
(eq) ~= (ne)
=
< (lt)
> (gt) <= (le) >= (ge) Símbolo ~ (not) & (and) 1 (or)
Teste Igual Diferente Menor que Maior que Menor ou igual Maior ou igual
Exemplo 1== J (1 igual a J) 1~= J (1 diferente de J) l J (1 maior que J) 1<= J (1 menor ou iguala J) 1>= J (1 maior ou igual a J)
Operador Negação E OU
Exemplo de composição ~l ( negação de 1) 1& J (1 e J verdadeiros) 11J (1 ou J verdadeiro)
Além dos operadores booleanos, o MATLAB possui funções booleanas para vários tipos de classes de dados. Por exemplo: Funções booleanas matriciais: Função isempty isequal isnumeric ischar issparse
n j Conceitos
Teste retorna verdadeiro se matriz M é vazia matriz M1 é igual a matriz M2 matriz M é numérica matriz M é alfanumérica matriz M é esparsa
Exemplo isempty(M) isequal(M1,M2) isnumeric(M) ischár(M) issparse(M)
Funções booleanas de teste de tipo de dado: Função iscell iscellstr isfield isstruct
Teste retorna verdadeiro se A é célula A é célula de cadeia de caracteres F é campo da estrutura S S é estrutura
Exemplo iscell(A) iscellstr(A) istield(S.F) isstruct(S)
1
Funções booleanas de tipo numérico: Função isfinite isint isnan isreal ♦
Teste retorna verdadeiro se N é finito N é infinito N não é número N é número real
Exemplo isfinite(N) isinf(N) isnan(N) isreal(N)
Estruturas de seleção: utilizam as expressões booleanas como critério de seleção do trecho de código a ser executado.
if, elseif, else if < E x p r .B o o l .1> elseif < E x p r e . B o o l .2> else end
switch switch case case case otherwise end
♦
Estruturas de repetição: utilizam as expressões booleanas como critério de repetição de execução de trecho de código.
while while end
for for < V a l o r > = < I n i c >:< I n c r > : end
Exemplo: função triangulo_pascal - dado um número inteiro n, retorna uma matriz triangular inferior contendo o desenvolvimento do Triângulo de Pascal até n - 1 . 1
1 1
3"r
n! r! ( n - r ) i
1 v r J
2
1
1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6
15
20 15 6
1
edit: triangulo_pascal.m % a = triangulo_pascal(n) function a = triangulo_pascal (n) a=eye(n); % Inicia a com identidade (diagonal composta por 1 1s ) a(:,l)=l; % Inicia primeira coluna com l's for i=3:n % Cornpoe os demais elementos for j = 2:i -1 a ( i , j )= a ( i - 1 ,j-1)+a(i-1,j); end end
Ao invés de usar a fórmula, a função gera os números do Triângulo de Pascal da seguinte maneira: ♦ inicia a com matriz identidade n x n (a diagonal é composta por 1’s); ♦ inicia a 1- primeira coluna de a com 1's; ♦ gera os demais elementos a partir da fórmula: a;,,- = ai-i,H + a w j •
Conceitos____. _______________________________________________^83^
Execução: » a5= tria n g u l o _ p a s c al(5) a5 = 1 0 0 0 1 1 0 0 1 2 1 0 1 3 3 1 1 4 4 6
0 0 o 0 1
x \ \
2.8.5. Estatística de Execução de Programa O comando profile do MATLAB® 7 permite extrair relatórios com informações estatís ticas detalhadas de execução de programa, que podem fazer parte da documentação de sistemas. Para utilizar este recurso, digite: »
profile on
A partir deste momento, o MATLAB® 7 passa a registrar a execução de todas as operações e chamadas de funções executadas na linha de comando. Por exemplo: » »
m = t r i a n g u l o _ p a s c a l (5000); cap2_exercicio_08;
Para desativar o comando, digite: »
profile off
Para visualizar o relatório: »
profile viewer
4 Profiler File Edit
*■
Debug
O f f ®t| Desktop Window
Help
+ c Prelims Rur>tHsccrfe; j
-
1 ^ P r o f ile tine: 0 sec
*
Profile Summary
Generated08-Jun-200418:32:31 Qsúli COM excel application fOoaaue-function)
Total Time i Self Time’ Total Time Plot !0.070 s
0.070 s
.9tos do Microsoft Excel 5 0 Intetvalo (Opaque-function)
2
0 010 s
0 010 s
...soft Excel 10.0 Object Librarv.Sheets fOpaque-functionl
2
0.010 s
0.010 s
t Excel 10 0 Object Library Workbooks fOpaaus-functionl 2
0.140 s
0.140 s
3
Os
0 000 s
. Excel 10 0 Obiect l ibrary Worksheet fOpaque-functionl 2
Os
0.000 s
t Excel 10 0 Obiecl Librarv Workbook (Ooaaue-functionl
a c tx s e tY e r........
3 ....
! 0.080 s
1
1
J
J
MATLAB®7-Fundamentos
0 relatório é detalhado por função. Localize o nome da função 'triangulo_pascar para visualizar e examine o relatório detalhado da função. §r fo p ]
*}. P r o f i l e r [ rs e
E dit
D ebug
D eskto p
« S ta rt P rotiling
W indow
Help
I
m
R i^ i th is code:
iV f i 9
P ro file tim e: 0 s e c
I
triangulo_pascal (1 call, 9.614 sec)
Generated 08-Jun-200418:35:53 M-function in file c:\matlab7\work\trianaulo pascal.m [Copy to new window for comparing multiple runs)
H Show parent files
0 Show busy lines
0 Show child files
E l Show M-Lint results 0 Show file coverage 0 Show file listing Parents (calling functions) No parent L ines w h e re th e m ost tim e w a s spent Line Number
Code
Calls
Total Time % Time
lim e Plot
3
a(i(])=a(i-l,i-l)+a(i-l,i);
12492501
6 275 s
65.3%
—
2
a=eye(r.);
2
0.431 s
4.5%
1
9
end
12492501
0 163 s
1.7%
1
I
for j=2:i-l
4998
0.015 s
0.2%
H Inicia
a coa
i . ..
i
Os relatórios podem ser armazenados em formato HTML. Digite: >> profsave
'J* Profile S u m f m r y - Microsoft Internet Explorer Pâe
E dit
View
F a v orites
Tods
Media Âçfcress £ -
i
^
-1
e
^
“
L -J
L ' >*
f i* - -
C :’íT>ãtiãb7iW ork’p r o f:íe _ re s iits \ffe 0 .h tm ; rrA ;-1' PSRSONNAiiTE
7
-
Help
X tre n e t
s ? *
éj Goo ale ,%} Yahoo! M a i • T he b e s t fre e v*eb-besed e r r « '
3
a
>y
é] Eric W eastern's T reasure Trov es o fS d e n i •X H
This is a static copy of a profile report
i Home Profile Summary | G enerated OS-Jun-2004 18:28:31
1
Fancdoa name
CaBs Total Time Self Time* ! Total Time Plot (dark band - self time)
COM.excel application (Opaque-tunction)
3
0.070 s
0.070 s
0.010 s
0.010 s
2
0.010 s
0.010 S
!
...t Excel 10.0 Object Librarv.Workbooks (Opaque-function) ; ->
0.140 s
0.140 s
1
0s
0.000 s
i
...etos do X'licrosoft ExceI5>0.interv‘aio(Opaque-function') ...soft Excel 10.0 Object Librarv.Sheets (Opaque-fiinction)
...t
Excel 10.0 Obiect Library. Workbook(Opaque-function) 3
Done
1
v -J, M y Com puter
2.9.
Criação de Interface Gráfica com Usuário
Neste tópico, apresentamos os conceitos básicos sobre como desenvolver programas com interface gráfica com usuário. As explicações são dadas por meio do desenvolvimento de várias versões do programa criado no exercício 7 do tópico 2.7.2: ♦
Dados de entrada: -
vetores x e y: coordenadas de pontos; número n: grau de polinómio.
♦
Saída: gráfico dos pontos e do polinómio de grau n que melhor aproxima os pontos dados.
A partir da versão original, criamos três variações para ilustrar três formas diferentes de desenvolvimento de interface com usuário: I.
interação por linha de comando (interface não-gráfica);
II.
interação por caixa de diálogo;
III.
interação por GUIDE.
0. Versão original: utilizar parâmetros de entrada. edit: cap2_exercicio_07_0.m % CAPITULO 2 - Geracao de interface grafica % cap2_exercicio_07_0 (x,y,n): versão original function c a p 2 _ e x e r c i cio_07_0(x,y,n) % Calculo dos coeficientes do polinomio coef=polyfi t (x,y,n); % Calculo do valor do polinomio y p = p o l y v a l ( c o e f ,x ) ; % Exibicao dos pontos e ca reta de aproximacao p l o t (x,y,'*',x,yp) t i t l e (['Aproximacao por polinomio de grau ' n u m 2 str(n)])
Execução com os dados contidos no arquivo 'cap2_dados1 .txt' e grau 3: » » »
»
m = d l m r e a d ('c a p 2 _ d a d o s l .t x t '); x = m (:,1)'; y = m (:,2)'; cap2__exercicio_07_0 (x,y,3);
§
'ß figure 1 Fiie
Edit
View
In se rt
To d s
D esktop
W indow
Help
□ o s a a . VQ .<3 if ?© ’< ■ D b
:□
Aproxim3C30 por poiincmio de grau 3
I. Versão 1: utilização da função input. 0 modo de interação mais simples é o disponibilizado na própria linha de comando do MATLAB®. A entrada de dados na linha de comando é implementada pela função input, cuja sintaxe é dada por: » » dado = i n p u t (1Texto de p r o m p t : ') Texto de prompt: 10 dado =
10
edit:
cap2_exercicio_07__l .m
% CAPITULO 2 - 2.9. Geracao de interface grafica % c a p 2 _ e x e r c i c i o_07_l(x,y): versão 1 function cap2_exercicio_07_l (x,y) % Solicita grau do polinomio: n = input('Grau do Polinomio: '); % Calculo dos coeficientes do polinomio c o e f = polyfit(x,y,n); % Calculo do v a l or do polinomio yp=polyva]>tcoef,x) ; % Exibicao dos^pontos e da reta de aproximacao p l o t (x,y,,*',x,yp) t i t l e (['Aproximacao p o r polinomio de grau ' num2str(n)])
Execução com os dados contidos no arquivo 'cap2_dados1 M e grau 2: » m = d l m r e a d (1c a p2_ d a d o s l .t x t '); » x = m ( : ,1)1; >> y = m ( :,2)'; » cap2_exercicio_07_l (x,y) Grau do Polinomio: 2
II. Versão 2: função in putdlg (caixa de diálogo predefinida). O MATLAB® fornece funções muito práticas e de fácil implementação, que exibem caixas de diálogo e possibilitam a construção de programas com interface com usuário mais amigável. Nesta versão, usamos a função inputdlg, cuja sintaxe é dada por: » dado = i n p u t d l g ('Texto de p r o m p t ' 'Titulo da Caixa') dado = '10' » num=dado{l} n u m =10 Titula da Gwxt*
N
Observação: a função inputdlg retorna a informação digitada como uma cadeia de caracteres (string) armazenada em um cell array. Portanto é necessário converter a informação para número._______________________________________________________ edit:
cap2_exercicio_07_2.m
% CAPITULO 2 - Geracao de interface grafica % c a p 2 _ exercicio_07_2(x,y): versão 2 function c a p 2 _ exercicio_07_2(x,y) % Solicita grau do polinomio: dado = i n p u t d l g (1Grau do Polinomio: Exemplo Item 2.9'); n=str2num(dado{l>); % Extrai o dado do cell array e converte % Calculo dos coeficientes do polinomio
MATLAEP 7 - Fundamentos í
coef=polyf i t ( x , y ,n); % Calculo do va l o r do polinomio yp=p o l y v a l ( c o e f , x); % Exibicao dos pontos e da reta de aproximacao plot(X/y, '* 1,X/yp) t i t l e (['Aproximacao por polinomio de grau ' num2str(n)])
Execução com os dados contidos no arquivo 'cap2_dados1 .txt' e grau 4: » >> » >>
m = d l m r e a d ( 1c a p2_ d a d o s l .t x t 1); x = m (:,1)'; y = m (:,2)'; c a p 2 _ e x e r c i c i o_07_2{x,y)
G ra u fio Polinomio: 4
1 <*
| C ancel J
III. Versão 3: interface desenvolvida por GUIDE (Graphic User Interface Design Environment). Nesta versão, com o utilitário GUIDE - Graphic User interface Design Environment, criamos uma interface gráfica com a seguinte interação:
IConceitos
89
0 utilitário GUIDE auxilia a criação de janelas gráficas, compostas por objetos de interação. As janelas gráficas são armazenadas como arquivos de figura (*.fig), tal qual na figura anterior, e são utilizadas como 'painéis de entrada de dados' para funções callback, como mostramos a seguir. Passo 1: Criar o m-file 'cap2_exercicio_07_3.m' que implementada a função callback que executa a ação. edit: cap2_exercicio_07_3,m_________________________________ % CAPITULO 2 - Geracao de interface grafica % cap2_ e x e r c i c i o _ 0 7 _ 3 : versão 3 function cap2_exercicio_07_3 () a r q u i v o = 1c a p 2 _ d a d o s l .t x t 1; n = 1; m=dlmread(arquivo); % Separacao dos dados x = m (:,1) '; y = m (:,2) % Exibicao dos pontos p l o t ( x , y , '* 1) % Calculo do a*x + b que aproxima os pontos co e f = polyfit(x,y,n); % Calculo do valor do polinomio yp=p o l y v a l ( c o e f , x ) ; % Exibicao dos pontos e da reta de aproximacao plot(x,y, 1* ' ,x,yp) t i t l e (['Aproximacao por polinomio de grau ' n u m 2 str(n)])
Passo 2: Criar a interface gráfica com GUIDE. A ferramenta GUIDE permite criar objetos de controle de interface com usuário, em janelas gráficas, para implementar caixas de diálogo no estilo 'Visual Basic'. Para conceber uma nova interface gráfica GUIDE, digite: »
guide
Create New GUI I Open Existing GUI GUIDE templates GUI with Uicontrols •4$. GUI with Axes and Menu Modal Question Dialog
Q Save on startup as:
BLANK
rio OK;
I)
Cancel
|[
Help
|
MATLAEP 7 - Fundamentos
E selecione a opção [Blank GUI (Default)] na pasta [Create New GUI]:
Ríe
E d it
Vtev*
d :^ • i
Laycut
Tods
Help
* m
m
\ i►
Insira dois objetos: ♦
Push Button: ícone de acionamento da função 'cap2_exercicio_07_3';
♦
Axes: eixo no qual o gráfico será exibido.
Conceitos
Dê um duplo-clique no objeto [Push Button], para abrir o menu de propriedades e configurar dois itens: ♦
Callback: cap2_exercicio_07_3 (nome da função); E i P ro p e rty Inspector 1SO
f l T jf Õ jjX j
uicoM tol (p u sh b u ito fil "O K “)
t.- BackeroundCclor BeingDeleted \ BusyAction ButtonDownFcn
(O il
[
:A
Q queue
CDa!3
s cap2_exercicio_07_3 Clipping Son Í___ ______________________________________________
♦
String: OK (texto exibido no ícone). E» P roperty Inspector
B @ g
S3 uioonirol (pushbuttonl "OK1) i-'s iid e rs te p
style
Û
[0,01 0,1] E |OK E [pushbutton
pushbuttonl ■-Tag j~ TooliipString !.... UlContextMenu g | ■ Units [characters : UserData § « .. Value [h í 1[ 0-01 ...Visible :[▼ 1on U............................... ■■■■■■■■■■■■.....■■■■.................... ........... ..................... ...1
Finalize a criação da interface e salve-a por meio da opção [Save As] do menu [File], Forneça o nome 'Exem plol'. O MATLAB® gera e armazena automaticamente as informações necessárias para a composição da interface gráfica em dois arquivos: ♦
Exemplol .fig: imagem do painel da interface gráfica;
♦
Exemplol .m: código que implementa a interface gráfica. O MATLAB® abre o arquivo no editor de texto. >aUab7vwofk\Exemplo1. m
[*
JfOjfX |
1 File Edit Text CeH Tools Debug Destóop Window Hefci
I
1
12 3 4 5 6 7
I?
M ü £ l < i % Í ? 4 Q € l stack c«» ; fflCDBSp [function varargout » Exemplol (varargin) fc ZXSHPLOl H-fi le for Exeiuplol.fig "i EXEKPLÔ1, i t s e l f , creates a x-.ew EXEHPLÔ1 raise» the existing singleton*. M
% **
!c %
9 ■: 10 ■ 4 11 % 12 % 13 : * 14 %
m
*1 C * . ®
hy
or
H = EXSKPLGi returns the handle to a new EXESPLOl cr the handle to the existing singleton*. EXEHPLG1(1CALLBACK1,hOfojeçt,eventData,handles,...} calls the local function named CALLBACK in EXEHPLOi.ÎI with the given input argumenta. EXE’îPLOl (1Property1, 1Value creates a new EXEHPLOi or raises the existing singleton*. Starting trois the left, property value pairs ace applied to the GUI before Exeajpiol Openingî'unction gets called. An
..’.....v
> ‘ Exem plol
- 3
In
1
Col 1
MATLAEP 7- Fundamentos
Passo 3: execute o programa com a interface gráfica criada pelo GUIDE. Feche o editor de texto, chame a função Exemplol e clique em [OK]: »
Exemplol
A %
80 60 40
20 20
40:
60:
100:
OK
IV. Versão 4: vamos incrementar a interface gráfica com a inclusão de entrada de parâmetros. Nesta versão, criamos uma interface gráfica na qual podemos configurar o grau do polinómio e o arquivo de entrada. Para isto, além dos objetos Axes e Push Button, utilizamos os objetos: ♦
Static Text: texto estático;
♦
Edit Text: caixa de edição de texto, na qual indicamos o grau do polinómio;
♦
Pop-up Menu: lista de opções, na qual designamos os nomes dos arquivos de entrada.
Passo 1: Antes de criar a interface gráfica, devemos preparar a função callback para que ela possa utilizar os parâmetros de entradas fornecidos na caixa de diálogo. A nova função callback, 'cap2_exercicio_07_4.m', utilizamos: ♦
Dois itens de propriedade de objetos importantes na entrada de parâmetros: -
Tag: identificador do objeto; Síring: conteúdo do objeto.
♦
Três funções: gcf; retorna identificador da figura corrente; -
II 1 Conceitos
findobj: retorna o identificador do objeto, dado o conteúdo de um dos itens de propriedade. No caso, utilizamos Tag;
get: retorna o conteúdo do item fornecido; str2num: converte cadeia de caracteres em número. edit: cap2_exercicio_07_4,m_________________________________ % CAPITULO 2 - Geracao de interface grafica % cap2_exercicio_07_4: versão 4 function cap2_exercicio_7_4 () % Obtem identificador da figura corrente h=gcf; % Identifica objeto com Tag = grau ob j = £ i ndobj(h,'Tag', 'grau'); % Obtem o conteúdo do campo 'String' s t r = g e t (o b j 1,■S t r i n g ') ; % Converte cadeia de caracteres em numero n=str2num(str )s % Identifica objeto com Tag = arquivo obj= f i n d o b j ( h , 'Tag', 'arquivo'); % Obtem o conteúdo do campo 'o p c o e s ' o p c o e s = g e t ( o b j String'); % Lista de opcoes indice=get(obj, 'Value');% índice da opcao selecionada arquivo=opcoes{indice};
Passo 2: preparar a figura com o GUIDE, tendo como referência a função callback 'cap2_exercicio_07_4.m'. Abra o GUIDE com a figura anterior: »
guide Exemplol
Reorganize os objetos Axes e Push Button ao abrir espaço para acomodar os novos elementos.
94 )
MATLAíP 7 - Fundamentos
Insira o objeto Static Text duas vezes e altere o campo [String] de cada um deles para: ♦
texto da esquerda: 'Grau do Polinomio1;
♦
texto da direita: 'Nome do Arquivo'.
Introduza o objeto Edit Text no qual vamos digitar o grau do polinómio. Esse objeto deve ter as seguintes propriedades: ♦
[Tag]: grau;
♦
[String]: 1 (valor inicial).
Insira o objeto Pop-up Menu no qual vamos escolher o arquivo a ser lido. Esse objeto deve ter as seguintes propriedades: ♦
[Tag]: arquivo;
♦
[String]: {'cap2_dados1.txt' 'cap02_dados2.txt'} (cell array com os nomes - as opções são digitadas neste campo).
icap2_dados1
Observação: na função callback, a lista de opções é obtida consultando-se o campo String e o índice da opção selecionada consultando-se o campo Value._________________________
Modifique o nome da função callback do objeto Push Button: 'cap2_exercicio_07_4'. , yUftórtUòWhl-ért CData
i I : ! i OK
H
cao2 exercício 07 4 y on
Clipping
Passo 3: salve a nova configuração de interface por meio da opção [Save As] do menu [File] com nome 'Exemplo2'. Modifique os parâmetros de entrada: grau do polinómio 2, arquivo 'cap2_dados1.txt'. »
Exemplo2
Aproximacao por polinomio de grau 2 1800 1600
yi « /♦
1400
1200
|1000
/+
800 600 400
*
200
00
20
G rsu do PolIrtotrtuD f
40
60
80
100
Nome do A rq u w o j cap2_dados2 . -
Todos os arquivos que compõem as quatro versões apresentadas neste tópico estão disponíveis no site da Editora Érica.
- 3
MATLAfP 7 - Fundamentos
3
C a p ítu lo
Programação
Neste capítulo, apresentamos os principais comandos e as principais funções da linguagem de programação MATLAB® 7, com suas sintaxes mais típicas. O capítulo pode ser utilizado como um manual de referência para os principais recursos e funções do programa. As informações estão organizadas, basicamente, em três formatos: 1.
Descrição de Recursos de Utilitários
Por exemplo, janelas do MATLAB® 7 Desktop ou edit estão identificadas por meio de lista de itens e tabelas nas quais descrevemos os recursos à disposição nos menus. Exemplo: ♦
Descrição das opções do menu pop-up [Windows], Opções
Conteúdo
Help Close All Docum ents 0 Com mand W indow
C trl+ 0
1 Com mand H istory
C trl+ 1
2 C urren t D irectory
C trl+ 2
3 W orkspace
C trl+ 3
4 Help
Gerencia janelas.
C trl+ 4
Editor
C trl+ S h ift+ Q
A c a p2_exem plo_l 1. m
♦
Descrição das opções da barra de ferramentas. Nome New m-file Open file
Programação
leone D
Ação Cria arquivos m-file. Abre arquivos do MATLAB®.
0 -
II. Descrição de Grupos de Funções de Mesma Classe Por exemplo, funções de testes lógicos com cadeia de caracteres estão apresentadas em forma de tabela. Função
Testa se
iscellstr
é cell array de strings
ischar
é cadeia de caracteres
Exemplo » i s c e l l s t r ('abc 1) ans = 0 » i s c h a r ('a b c ') ans =
1
III. Descrição Detalhada de Funções Por exemplo, funções de álgebra matricial estão pormenorizadas com sintaxe típica, descrição dos parâmetros e exemplo de utilização: ^
det
Retorna determinante da matriz. Sintaxe típica: »
d = det (m)
Parâmetros: Entrada m: matriz
Saída d: determinante da matriz
Exemplo (arquivo cap3_det_exemplo.m) % determinante e' diferente de zero d e t ([-1 2 3;4 -5 6;7 8 -9]) ans = 360 % determinante é zero d e t ([1 2 3;4 5 6;7 8 9]) ans =
_____ 0________________________________________________________________
3.1. Ambiente MATLAB® 7 Este tópico mostra os comandos e recursos relacionados aos aspectos de interface com usuário (user usability) do ambiente MATLAB® 7.
MATLAEP1 - Fundamentos
3.1.1. MATLAB® Desktop MATLAB® Desktop nada mais é que uma tela de apresentação composta por várias janelas de gerenciamento de informações, 'acomodadas' dentro da janela principal do ambiente MATLAB® 7: ♦
[Command Window]: janela de entrada de comandos;
♦
[Current Directory]: janela de gerenciamento de arquivos;
♦
[Workspace]: janela de gerenciamento de variáveis;
♦
[Command History]: janela de gerenciamento de instruções.
Esta é a configuração padrão da tela do MATLAB® 7: Desktop layout default.
Esse arranjo pode ser modificado de acordo com suas necessidades de redimen sionamento, inclusão ou remoção de qualquer uma das janelas. Principais elementos: I.
Start Button
ícone localizado no canto inferior esquerdo da janela do programa, semelhante ao menu [Start] do ambiente Windows, abre um menu que dá acesso aos utilitários e aplicativos instalados no ambiente MATLAB®. ♦
[MATLAB]: exibe utilitários como Import Wizard e Plot Tools; caso estejam instalados, aplicativos como Excel Link, MATLAB Builder for COM.
Programação
Toolboxes L^j Shortcuts
it
Desktop Tools Web Preferences... ($4 Find Files... ^ Help •Q- Demos 0
♦
[Toolboxes]: lista dos Toolboxes instalados;
♦
[Shortcuts]: atalhos (veja o item II);
♦
[Desktop Tools]: gerenciamento de janelas;
♦
[Web]: lista de URLs relacionados com MATLAB;
♦
[Preferences]: aciona o comando preferences (veja o tópico 3.1.2);
♦
[Find Files...]: abre a janela de busca de arquivos (veja o tópico 3.1.2);
♦
[Help]: bre Help Browser (veja o tópico 3.1.2);
♦
[Demos]: abre pasta [Demo] do Help Browser.
II. Shorcuts Shortcut ('atalho') é uma forma prática de executar um grupo de comandos. De forma simplificada, podemos definir shortcut como um script-file, cuja chamada pode ser colocada no menu de opções do [Start Button], Por exemplo: considere o arquivo 'cap2_exemplo_11.m' apresentado no item anterior, que cria um elemento struct. edit: cap2_e:xemplo_ll,m________________________________________________ echo on % Arquivo: cap2_exemplo_ll.m % Exemplos do item 2.4.4: Struct % Cria struct com 1 elemento s = s t r u c t (1N o m e ', { 1Dolar C o m e r c i a l 1}, 'I d e n ',{'D O L '}, 1V a l o r ',{3.19}) % Cria vetor de struct s (2).N o m e = 'Ouro 250g'; s (2).I d e n = 'O Z 1 '; s (2) .Valor=3 9.65; s(2) % nome dos campos campos=fieldnames(s)
Selecione a subopção [New Shortcut], na opção [Shortcut] do [Start Button]:
Labei: Callback:
cap 2 _e X ernp1 o_ 1 1
Help Browser F avo rite s Toolbar S hortcuts W h a t a re Shortcuts?
Category:
leoa-
I S S tandard ic on
S a v e s s h o rtc u t to S tart butto n . S electing "Toolbar S ho rtc u ts " c a te g o ry also s a v e s to S h o rtc u ts toolbar.
MATLAB®7-Fundamentos
E configure as opções do [Shortcut]: ♦
[Labei]: nome (Exemplo);
♦
[Callback]: m-file a ser executado (cap2_exemplo_11 .m).
E clique em [Save] para criar a opção [Exemplo], que pode ser executada. % Exemplos do item 2.4.4: Struct % Cria struct co m 1 elemento s = s t r u c t ('Nome',{'Dolar C o m e r c i a l '},'I d e n ',
1 4 MATLAB Toolboxes
►b _ 2 3 é ► ifgf^ Help Browser Favorites ► ► Desktop Tools ►1^ Toolbar Shortcuts 1 0 Web > $ What are Shortcuts? \%j Preferences... o | ^ ] New Shortcut... Find Files... Qp Organize Shortcuts... \0 Heip
s = Nome: 'Dolar Comercial' Iden: 'DOL' Valor: 3.1900
I-.Ô* Demos | ( 4 S ta rt]
1
A opção [Organize Shortcuts] abre a janela de gerenciamento de shortcuts. ■ *) :Shortcuts
Organize
| New Category...
B
U
B
ij 8 .Ü3 Shortcuts
im
j New Shortcut... ;
Help Browser Favorites | | j Toolbar Shortcuts
J Edit Shortcut...
W hat are Shortcuts?
| Move to Category... J
\E
m
a
| Delete Shortcut
*
| Close j j Help |
III. Web Browser As telas de interação do MATLAB® 7 seguem os padrões de Web Browsers, e muitos recursos de apresentação e publicação de informação fazem uso deste tipo de padrão de interatividade: ♦
Opção [Web] do [Start Button]: lista de URLs relacionadas. |n te
j Desktop Tools > [ V Web ►^ ^ ^ Preferences...
a ta u u a i. . ,ui) ! ; The MathWorks Web Site
if j
Products
(14 Find Files...
^
0 %
Help
^
Membership Technical Support Knowledge Base
Demos
^
Check for Updates
S tart j
@ MATLAB Central jjp l MATLAB File Exchange MATLAB Newsgroup Access ®
Programação
MATLAB Newsletters
j
♦
[Help Browser]: utilitário de help.
File
Edit
D ebug
IJi'O? j :
D esktop
ß
W indow
* ff
Help
''
S Cf
(Ö
Current D irectory:; í c :V natlab7\w ork
S h o rtc u ts
Help File
la
Edit
© View
Go
F avorites
D esktop
W indow
.+
X
4
Name
Search I Release Notes
Contents I index |
camf | IB i f * & 0 H 3s
fr;
♦
1
)
I
C
£ !M
Dem os : a
In s t a lla tio n
.:
MATLAET
Q Getting Started
a? Si
0
-X
Hefci
Examples l l j Desktop Tools and Development Environme {£ Startup and Shutdown & Desktop ££ Overview of the Desktop $ Arranging the Desktop-Overview
Functions: « By..Categojy ®
Handle Graphics:
;:1
In A lp h a be tical O rder o b je c t "P ro p e rtie s
1
[P rofiler]: gerador de relatórios de estatística de execução (veja tópico 2.8.4). Profile Summary - Microsoft Internet Explorer File
E dit
V iew
F a v o rite s
Tools
■r
Help
’ U 9 , , , f e e : Vnatiab7\!A ork’ï)ro f)le _ re s ü ts ’>iie0.htm l Ú & 3 ^ IÍ A Ú P B * S O W M L I T É
$ |] | X tra n e t
G oogle .
| | ] 1 Go Yahoo! Mai! - T h e b e s t fre e v*eb-based en w ä r
Eric W eisstein's T re a s u re T ro v e s o f Science
y>
Tfeis is a static copy o f a profile report
Home P rofile Sum m aiy
Generated 0S-Jun-2004 18:38:31 Function name
Calls Total Time Self Time* Total Time Plot (dark band = self dine)
COM excel application (Opaque-function)
3
0.070 s
0.070 s
1
...etos do Microsoft Excel 5.0.Interval© (Opaque-function)
2
0.010 s
0.010 s
1
...soft Excel 10.0 Obiect Librarv’.Sheets (Opaque-function)
0.010 s
0.010 s
1
...t Excel 10.0 Obiect Librar/. W orkbooks (Opaque-function)
0.140 s
0.140 s
1
...t Excel 10.0 Obiect Librar.-. W orkbook (Opaque-function) 3
0s
0.000 s
1 I M y C om puter
♦
[P ublish to HTML]: utilitário disponível no edit que publica o código do m-file, bem como os resultados de sua execução, em formato HTML.
102
MATLAB® 7 - Fundamentos
tit
View
Go
Debug
Desktop
W in dow
Help
Location: ] C:rtnatlab7/work/htmlA:ap2_exemplQ_11 .html V A r q u iv o ;
I Edit
T ext
...“ Open...
Cell
Tools
Debug
........
D esktop
W indow
H
► \ « /. a i Qrl+O
fï,
„
e a p 2 _ e x e w p lo _ X .l. »
% E x a ia p lo « d o I c e » 2 , 4 . 4 : .S e e u c t % C r i a s t r u c t c o a l i e le m e n t o ' s=struct ( l'K o n e ‘ , < 1 P o X a r.- C o m e E C la I 1 > , 1 s ( 2 ) .N o m e = 'O tt tr o 250g‘;
%
s(2). I d e n - ' O
Z t 'i
3(2).Valor=39.65; s(2)
Home: 'Dclsz Vç&ççcàäl’ Ztíaa; 'SOW. Valor: 3:1900
IV. Menus Pop-up Os principais menus pop-up do MATLAB® 7 são: ..._____ File
Menu
Edit ; Debug
Desktop
Opções
Window
Help
!
Conteúdo Acesso a arquivos e dados:
I j I I I I Edit ^ :I
D ebug
Desktop
W indow
O p e n ...
C trl+ O
M-File
Open: abertura de arquivos.
Figure Variable
Close Com mand W indow
Import Data: importação de dados.
Model
Im p o rt D a ta ... Save W orkspace A s ...
File
New: criação de arquivos.
Selp
’:........................................ .....................
C trl+ S
GUI
Save Workspace As: salva variáveis.
S et P a th ,.. P re fe re n c e s .. Page S etu p..
Set Path: configuração de path.
P rin t...
Preferences: preferências.
1 c :\...k \c a n ? exem olo l l . m C trl+ Q
Page Setup, Print: configuração de impressão. Edição 'padrão Windows':
I É | M D ebug
D esktop
W indow
Undo
H
Undo, Redo.
C trl+ Z
R edo
Edit
Cut, Copy, Paste, Paste Special.
C opy
A lt+ W
Paste
C trl+ Y
Select All, Delete.
C trl+ D
Find: busca palavra na janela corrente.
Paste Special... Select All D elete Fin d ... Find F iles... Clear C om rrand W indow Clear Com m and History Clear W orkspace
Programação
♦
Find Files: chama utilitário de busca de arquivo.
Instruções de limpeza do conteúdo de janela.
Menu
Opções
Conteúdo D esktop
w in d o w
Help
<✓ O pe n M-Files w hen Debugging
Debug
Step
F10
S tep In
F ll
S tep O ut
S h ift + F ll
Continue
F5
Clear B reakpoints in All Files S to p if E rrors /W a rn in g s ...
Instruções de depuração de programa quando este modo está ativo. Semelhante ao menu [Debug] disponível no edit.
E xit D ebug M ode
W indow
Help
Organização do layout das janelas: D efault Com mand W indow Only
♦
Default: restaura configuração padrão.
♦
Save Layout: armazena configuração.
♦
Organize Layouts: gerencia layout.
H istory and Com mand W indow AH Tabbed
Com mand W indow
Desktop
v* Com mand H istory y< C u rre n t D irectory ✓ W orkspace w Help Profiler
As outras opções ativam/desativam exibição de janela.
v* Toolbar ✓ S h ortcu ts Toolbar
>/Titles
Help Close All Docum ents
Window
0 Command W indow
C trl+ 0
1 Command History
C trl+1
2 C u rren t D irectory
C trl+ 2
3 W orkspace
C trl+ 3
4 Help
C trl+ 4
E ditor
Gerencia janelas.
C trl+S hift+O
A c a p2 _exem plo_l 1 .m
.. Full P ro d u c t Fam ily Help
Opções de acesso a textos de ajuda e consultas a documentação eletrônica (manuais) do MATLAB® 7 Help Browser.
MATLAB Help Using th e Desktop Using th e Com m and W indow
Help
W eb Resources C heck fo r U pdates Dem os A b o u t MATLA3
V. Barra de Ferramentas D lã" i ^ % S Nome
^
^ üâ ; ^
Current Directory: j c:Vrcatlab7\work
V ; ... [t]
Ação
ícone
New m-file
□
Cria arquivos m-file.
Open file
fe 7
Abre arquivos do MATLAB®.
Cut, Copy, Paste
Cut, Copy, Paste do Windows®.
MATLAB® 7 - Fundamentos
Nome
Ação
ícone
Undo, Redo
o
Undo, Redo do Windows®.
n*
Simulink
*
Chama o Simulink®.
GUIDE
£ f
Chama o comando GUIDE.
Help
Chama Help Browse.r
Current Directory
] c:Vnatlab7\work
v
Define diretório de trabalho.
\
VI. Menus Contextuais Menu aberto pelo botão direito do mouse. É um menu flutuante cujas opções variam de acordo com o contexto no quai o menu foi aberto.
Current Directory - c:\matlab7\work
? x
È o fiS @0 A IIFifca [ I B
Por exemplo: indicação, com botão direito do mouse, do arquivo circuito.m na janela [Current Directory], abre o menu contextual com opções de operações válidas para o arquivo.
í F ile T ,p e
S
Open
l l à c ir c u it;
Run
^ c ir c u it;
View Help
Ü
c ir c u it;
[ / $ C irc u it
$ L a s t M o d ifie d
”“ ^002 a i 72002
Q002
72002 72004
Open as T e x t O pen O utside MATLAB
c irc u it;
im p o rt D ata
(2002
c lo c k .;
New
>2001
; —•— ------ 1 C urren t Dt
11
Rename De)ete
C trl+X Copy
C trl+ C
File Filter Add to Path Refresh
VII. Editor de Programas: Edit O editor de programas pode ser aberto digitando-se 'edit1 na linha de comando, ou com qualquer ícone dos tipos: LrrJ ou Editor - c:\mâtiab7\work\cap2__exfircic30_ô7_4,m File
Edit
Text
n^u to
&
1 2 3 4 5 6 7 9 10 11
-
■<. in
Cell
Tools
tu a -
D ebug
D esktop
W indow
Help
"o. m a /.. -7)fi
[1o ~T*
“
t l
}■; CAPITULO 2 - Geracao ci* interlace yraljica % cap2__exercicio_07_-{: versa© 4 function cap2_exercicio_07_4 () H Cbr.era identificador da figuracorrente h=gcf; k Iciencxfica cbjeto com Tar = «ran obj=findobj(h,'Tag','gr&u'); % Cktern o conteuuc <:io ca»pc 'String' str=get(obj ' , 'String*); % Convex: te cade j.a
Programação
«a B 1) p
X
iLn
1
Menus pop-up do edit:
Menu
Opções I 2 I I I E dit
Conteúdo
T ext
Cell
Tool?
D ebug
N ew
C ►
Acesso a arquivos e dados: ♦ New, Open, Close, Save, Save As. Publicação de Script-file: ♦ Publish To HTML: exporta o código e o resultado da execução em HTML.
Publish To
►
So u rce C o ntro l
►
♦ Publish To: outros formatos. Abertura de arquivos: ♦ Import Data, Save Workspace As.
O p e n ...
C trl+ O
S efeciibn
C H 40
Close E ditor .Close cap 2_ e xercicio_07_4 .m C trl+W . S svr S ave A s ... S s v *« 8 Publish T o HTML
File
Im p o rt D a ta ... S ave W orksp ace A s ... S e t P a th ... P re fe re n c e s ... P age S e tu p ... P rin t...
C trl+ P
P ont S s b c f e v E x it MATLAB
♦
Set Path, Preferences: preferências.
♦
Page Setup, Print: configuração de impressão.
C trl+ Q
U S ' T e x t. Cell h ls o ls . D ebug
De;
U n do Piidi"}
C ïrlî-V
Cut
C trl+ X
C o py
C trl+ C . C td t-V
P a s te Spe cia l... S ele ct All
Edit
C trl+ A
D e le te
D elete
F in d a n d R e p la c e ...
C trl+ F
F in d f t e i
r'4
F in d P rp y h v ? F in d Selection
C trl+ F 3
F in d File s... Go To Line
C trl+ G
S e t/C le a r B ookm ark
C trl+ F 2 .
t b f t Bookmark-
nt
Edição 'padrão Windows': ♦ Undo, Redo, Cut, Copy, Paste, Paste Special, Select All, Delete, Find. ♦
Find Files: chama utilitário de busca de arquivo.
♦ Go To Line: localiza linha. Instruções de limpeza do conteúdo de janela.
PttvSookiiiftrk. C le ar Com m and W indow C le ar Com m and H is to ry C le ar W orkspa ce
rata texto de código: Evaluate Selection: executa código. F9
Wrap Select Comment: coloca os textos de comentário selecionados em uma só linha.
Com m ent
C trl+ R
Comment: transforma em comentário.
Uncom m ent
C trl+ T
§11111 Cell
Tools /D e b u g
E va lu a te Selection
Desktop
W ra p Selected Com m ents
Text |
D ecrease In d e n t
C trl+ [
Incre a s e In d e n t
C trl+ ]
Sm art In d e n t
C trl+ I
Uncomment: desfaz Comment. Decrease Indent: tira um nível de parágrafo. Increase Indent: avança um nível de parágrafo. Smart Indent: organiza níveis de parágrafo no código selecionado.
106
MATLAB® 7 - Fundamentos ;
Conteúdo
Menu
ata célula de programação. Disable/Enable: desabilita/habilita modo cell. Evaluate Current Cell: executa célula
atual. Evaluate Current Cell and Advance:
Disable CeS Mode
Cell
Evaluate Current Cell
Ctrl+Enter
Evaluate Current Cell and Advance
C trl+S hift+E nter j
executa célula atual e avança.
Evaluate Entire File
Evaluate Entire File: executa o arquivo
In se rt Cell Divider
todo. In se rt Text Markup
►
N ext Cell
Ctrl+Down
Previous Cell
Ctrl+Up
Insert Cell Divider: insere Insert Text Markup: insere textos de
comentário. Next Cell: vai para a próxima célula. Previous Cell: retorna para célula
anterior. erramentas: Check Code with M-Lint: chama M-Lint. D ebug
D esktop
Windc
Show Dependency Report: gera relatório de dependências ('quem chama quem').
C heck C ode w ith M -Lint
Tools
S how D epende ncy R e p o rt O pe n P rofiler
Open Profiler: gera relatório de estatística de execução. D esktop
w in d o w
Help
✓ O pen M T iIe s w hen Debugging
Debug
Step
F10
S tep In
F ll
S tep O u t
S h ift + F ll
C ontinue
F5
G o U ntil C ursor S et/C le ar Breakpoint
Instruções do modo debug: i
♦
Step, Step In, Step Out: passo a passo.
♦
Continue, Go Until Cursor: execução.
♦
Set/Clear Breakpoint: ponto de parada.
♦
Exit Debug Mode: sai do modo debug.
F12
S et/M o d ify Conditional B reakpoint.. E nable/D isable Breakpoint C lear Breakpoints in All Files S top if E rro rs /W a rn in g s ... E xit D ebug Mode
I W indow
Help
V Undock cap2_exerdcio_07_4.m
Desktop
Dock Editor ✓ Editor Toolbar ✓ Cell Toolbar Docum ent Bar
Programação
Exibe opções análogas ao menu pop-up [Desktop] do MATLAB®7.
Menu
Opções
Conteúdo Help ►
E B Tile f T l L e ft/R ig h t Split H
T o p /B o tto m Split
[ 5 F lo at ✓
n
Exibe opções semelhantes ao menu pop-up [Windows] do MATLAB®7. As opções de layout do edit são apresentadas a seguir.
M axim ize
C ascade Docum ents
Window
Minim ize D ocum ents Close D ocum ents 0 Com m and W indow
C trl+Q
1 Com m and H istory
C trl+ 1
2 C u rre n t D ire c to ry
C trl+ 2
3 W orksp ace
C trl+ 3
E ditor
C trl+ S h ift+ O
A c a p2 _e xercicio_07_4 .m
MATLAB Help Using th e M -file Editor
Help
Exibe opções similares ao menu pop-up [Help] do MATLAB®7.
W eb Resources C h eck'for Updates
Opções da Barra de Ferramentas □ Ä U U O
■*! t S |R
’
' “
Nome
10
t ; + ! » : 1.1
! X
Ê I
«a ■d HP 1 0 0
1cep2_exercicio_07_4
v]
ffl D] B S _□
___________________________________________________________________________________________
(cone
Ação
New m-file
D
Cria arquivos m-file.
Open file
&
Abre arquivos do MATLAB®.
Save
y
Armazena arquivo.
% (1
Cut, Copy, Paste do Windows®.
Cut, Copy, Paste
1
Undo, Redo Print
Undo, Redo do Windows®. a
Procura texto.
Find Show functions
- 3
Imprime.
f,
Exibe nome das funções.
MATLAEP 7 - Fundamentos
Nome
ícone
Ação
Set/Clear breakpoint
ë
Contigura/desconfigura breakpoint.
Clear breakpoint
m
Desconfigura todos os breakpoints.
Debug
m -M M
Instruções em modo debug.
Tiling
ffl m
s
5
□
Arranjo de layout para vários arquivos em edição.
Barra de Ferramenta com Cell mode habilitado: Nome
leone
Ação
Publish to HTML
Gera relatório em HTML.
-mo pÉr i s m te is
Cell
- ;JTo
Operators
Instruções em modo cell.
i + l "v \ 1.1 ] k Operações com conteúdo de variáveis.
Cell divisor
Insere/remove delimitadores de células.
Opções de layout para vários arquivos em edição. Por exemplo:
File
Edit ; T e x t
D
fb l |
Cell
Tools
% ''l-> I H O
Debug
D esktop
W indow
#4
| Q
'*
1 -
fs c h o
2
*i A r q u i v o : c a p 2 e x e m p l o 0 4 . »
3
.
,! y Í? X
4 1 K') f i~ - O t i ü
Stack-
ffl t u B
i<>:
&\n
o il
% C o n c a te n c a o
4 -i
a= [ 1 2 ; 3 4]
5-
b = [1 0
6 -
c = [a
7
1ÊÊÊÊÊÊÊ ................... ....... —.........
Help
20
3 0 ;4 0
por 50
I ir t h a 60]
to]
C c n c a te n c a o
8 -
d = [l 2 3]
9 -
e = [d ;b ]
p o r - c o lu n a
10
> cap2_exem plo_01
m * :c*p'2_exemplo _ 0 2 m 'X cap2_exem plo_03.m * s c rip t
Programação
cep2_exem plo 04 m
x\ Ln
1
Col
1
;
3
E d ito r
I File
Edit
D
Or U
Text
a
i l
Cell
Tools
Debug
;
Desktop
< I Ä
W indow
«
Help
fifi
A
%
'% 1
a
* - 1
(sc h o o n
j
! 2 I 3
X A r q u i v o : c a p 3 ^ c ^ é f e V p r c j_ -Ü 4 , in h C o n c a te n c & o p o r l i n h a
i|
: 4 -
a=®[ 1 2 ; 3
4]
; s 6 -
b * [1 0
3 0 ;4 0
1 7 -,
% C a r .c a te n c a o
> 8 -
d = [1
;
e = [d ;b ]
,i -
c = [a
9 -
20
5 0 .6 0 ]
2
por
3]
s -
3 e -S
6 -
2 -S i P i
i| II
8 “ 9 -•
r e a lm in
-
x
1 .............. “ a l r a l s
?
■
File
Edit
Text
Ceii
Tools
Debug
D eskicp
W indow
c 2? a \ %«, ilÈ É S H E i1'!
’□ X A
n t a o t- r .C O
J l
eps r e a lm a x cap2_exem plo_04.m 'x f
íT j Z T .................... .... ......................... SI n ........................................................................ .................................... - ...... - .................................—
1
ö
on
7 “
11 Í 0
S
-1 .5
i{
* ’ cap2_exempJo_03 .m
' 10 I ;< cap2_exem plo J31 .m * : ; : cap2_exem plo_02 j n
echo
:
1
c o lu n a
! Í 3* P
% A r e / u i v o : e a p 2 e x i î ï r t p l o _G 1 . ir % E x e m p lo
2
1 3 " !j 4 -
b]
! '1 l ®
1
( 'n i -----------
1
,
H , i i il in i
Help
oj e
%® a i
□ 5:5 n
11 12 3 4 5 : 6 c a p 2 _ e x e m p io _ 0 l m
echo Arquivo: cap^cxeispio Oi.m % Concafcencaopor iinha a=[l 2:3 1] b=[10 20 30;40 SO 60} c = [a
b]
x ; c a p 2 _ e x e m p io _ 0 2 .m
*
c a p 2 _ e x e m p ‘c _ 0 3 m
Click and drag to m o v e e a p 2 _ e x e m p lo _ 0 ô m ...
* ; cap2_exem plo_04 rn
sc-k<___________________
VIII. Janela [Current Directory] Exibe a lista de arquivos contidos no diretório corrente, com informações organizadas em quatro colunas (peias quais os arquivos podem ser ordenados): ♦ [A li Files]: nome do arquivo; ♦ [File Type]: tipo do arquivo; ♦ [Last M odified]: data da última modificação; ♦ [D escription]: descrição. EBä
C ú r r e o i & í r é c t o f v - ê : V r w it la b ? \w o r k
a tf õ j í A li Files -■*
cap2_exemplo_01. m Íècap2_exemplo_02.m §efr cap2_exemplo_03.m :[|§i cap2_exemplo 04.m n c ap2_e x emp Io_05. m H§i cap2_exemplo_06.m í[^c a p 2 exemplo 07.m i ü cao2 'exemplo ,08.m
File Type!-
•xtSTfre"“ M-fiIe M-file M-flíe M-file M-fi Ie M-file M-file ,’.M-file
La s t M odified
[ D e s c n p ti.. I
10/06/2004 09:55:50 Arquivo... 10/06/2004 09:56:35 Arquivo... 10/06/2004 09:57:27 Arquivo... 10/06/2004 10:02:18 Arquivo... 10/06/2004 10:05:48 Arquivo... 10/06/2004 10:09:44. Arquivo... 10/06/2004 10:11:03 Arquivo... 10/06/2004 10:12:22 ...Arquivo.,.,....
i W o rk s p a c e j C urren t D ire c to ry ] " "
MATLAB® 7- Fundamentos.
Opções da barra de ferramenta ícone
Nome
Ação
Go up one level
S
Vai para o diretório 'pai1.
New folder
&
Cria um novo subdiretório. Chama o utilitário de busca de arquivo.
Find Files Show Visual Directory
Muda o modo de visualização do diretório (*).
& :
M l i a M j ,iivKf ^ '- ■ f - k '^ - ^ e p o r t TO DO / PI XM £ r "°
t
Help R eport
Directory Reports
C ontents R eport ?;g D ependency R eport File Com parison Report
Configura o tipo de relatório a ser gerado para o conjunto de arquivos contidos no diretório. 0 padrão é chamar a execução do M-Lint para verificar a sintaxe dos m-files.
(^3 C overage R eport
Menu contextual [Current Directory]
(*) Modo 'Visual'
File;; Edit
View
Debug
Deski oc
W indow
help
;i c:Vnatlab7\work
v]
:■» . ta
0
S o rt b y C o n te n ts m
f D S h o w a c t io n s
0
S h o w file s iz e s
L J S h o w f u n c tio n /s c rip t
D
«
us>>ü3G
S h o w t h u m b n a ils
SCf &&> I File Type
A:
[ run. c o n te n ts r p t 1 n e w file ]
___ i
|H -£ ile
f o r E x e m p lo l.f ig
E x e m p lo 2
jM - f ile
f o r E x e m p lo 2 .fig
G r A r ó u iv o
! r u n e a o G r A r q u i v o ( A R Q U IV O , V E TO R )
c a p 2 e x e a p ln 01
A r q u iv o :
ca j> 2 e x e m p lo 0 2
A r q u iv o :
c a p 2 _ e x e a ip l.o _ 0 1 .B L
cat>2 e x e a p l o 0 3
A r q u iv o :
c a p 2 _ e x e a p lo _ Q 3 .i&
c a p 2 e x e m p lo 0 4
A r q u iv o :
c a p 2 _ e x e a p lo _ D 4 .m
/2002
Run
c irc u it
view Help
c irc u it
Open as Text
b0O2!h k2002 j ;/2002i;
Open Outside MAUAB
&004
[ ^ c ir c u it
In port Data
jk -l d o c k !
New
/2Ü02
------- Renam e Cyn-ertW De!ete I Source Coibol }................ Ctrl+X j Cut
c a p 2 _ e x e a p lo _ 0 1 . a
Í
■V
'
c irc u it
Cire Uit
E x e m p lo i
I Last Modified
Open
Copy
>/200i^
Ctrl+C
j__ ___________________ Í
F ie Filter
j
Add to Path
IX. Janela [Workspace] Exibe a lista de variáveis definidas na janela [Command Window] durante a sessão corrente. As informações estão dispostas em três colunas: Name (nome da variável), Value (conteúdo) e Class (classe). As variáveis podem ser ordenadas pelas colunas Name ou Class. Depois da execução dessas instruções, a janela [Workspace] deve conter:
>> clear >> [m, coef]
= c a p 2 _ e xemplo_13('cap2_ d a d o s l .t x t ','c a p 2 _ s aida.txt’); W orkspace
Name S c °e f
Ml
......... ...
*
X]
"H.â Í *É llE lP llf^ ......I j Value I Class [1.2363 12,423] double <50x3 double> double
Opções da barra de ferramenta Nome
Ação
ícone
Cria uma nova variável.
New variable Open selection
gf
Abre o Array Editor com as variáveis selecionadas.
Load data file
#
Chama o import Data.
ffl ~A
Save
Armazena variáveis em arquivo.
Print
a
Imprime variáveis selecionadas.
Delete
%
Elimina variáveis selecionadas.
Plot selection
Escolhe operação para geração de gráfico a partir das variáveis selecionadas.
[ 3 ^ contour (m, coef) More Plots...
Menu contextual da janela [Workspace]: 4 F ig u re
■•íâ É
S
Name .a
Fie
- 1 1112
D «
E ci
view
u 3
Insert
Teots Desktop window
k c c o
®
® n
| V alu e
[1 .2 3 6 3 1 2 .4 2 3 ] 3 3 c o íi f I...............iCSily . ..d m ih l Q.■>..... O pe n Selection
33Ü
120\ 100
Save A s ... C opy
C trl+ C
Duplicate
C trl+ D
D e le te
D elete
n L f
i !'AA\ > 60
E dit Value
C u rre r
I
Hi
b a r (m )
■
60
Renam e
<___
Help
■*: o m
— 1
(/'I
W
'
40
im agesc (m ) c o n to u r (m ) s u rf (m ) m esh (m )
25
0) I
5
10
15
20
- 25
30
35
40
45
S3
M ore P lo ts ...
112)
MATLAEP 7 -Fundamentos
X. Array Editor 0 Array Editor exibe o conteúdo das variáveis na janela [Workspace], ro
s á A r r a y E d it o r nie
E ilt
'
Graphics Defcpjg DesKIop W indow
View#
’Ù * '•£ f i s t
-
m
;
æ
- \ 3 4 2 f 1 2 .4 2 3 1 1 .0 7 1 '" 1 1 .3 9 2 1 4 .9 4 6 ' 12 31 4, i/.4 b y ?r 19997 2 6 .1 0 2 ; 22 515 3.3 1 6 6 ! 2 5 .0 3 8 ........2 7 0 9 0 ...... .....2 7 .5 6 1 -........ JÜ 084° 3 9 .3 1 6 ! 34 7 9 8 3 2 607; 38513 35 .1 2 9 ° 36' x a ' 37 .6 5 2 ° 4 0 17 6' 4 2 .0 0 6 ' 3 6 27 4 2 .6 9 5 ; «ii m Y IÂ T > 7
■À .....
2 2 .0 4 0 0 : 3 4.Ö 816; 4 Fi 1 2 24 5; 0 1633 6 1 0 .2 0 4 ] 7 ............12 2 4 5 8 ............. 14 .2 3 6 9 1R y ? 7 10, 18 357: 11 ; 2 0 408! 12 22 443 13 2 4 .4 3 ' il C " :
■» ? X
H eb
'3. ,.Stóck-
m
5
m
s
e
6
’
4991
>
v
Os menus pop-up do Array Editor são: Menu
Opções l & j t i E dit. View
Conteúdo Graphics
D ebug
Des t o p
W indow
M-File O p e n ...
C trl+ O
Figure
Save
C trl+S
Variable Model
Close A rra y Editor Close m
C trl+W
GUI
Acesso a arquivos e dados. Exibe opções semelhantes ao menu pop-up [File] do MATLAB® 7.
Im p o rt D a ta ...
File
Help
C trl+N
5 a v e W orkspace A s ...
C trl+S
S et P a th ... P refe re n c e s ... Page S e tu p ... P rin t...
C trl+ P
P rint S election... E xit MATLAB
H § !1 1 View :; Graphics
C trl+ Q
Debug
D esktop
Undo
• Oxil-Z
Cut
C trl+ X
Copy
C trl+ C
W ind
O r!*y
Pas?» ir.xv.nioafca
CfelrfV xmi w v r t
Paste S pecial... Select All
Edit
D e le te ,.. Clear C ontents
C re a te Variable fro m Selection r in d ... Find Files...
♦
Insert: insere dados.
♦
Delete: elimina dados.
♦
Clear Contents: limpa conteúdo.
♦
CreateVarlable from Selection: cria nova variável a partir da seleção de valores.
C trl+ A
In s e rt...
'OpftnSi&eiian
Edição 'padrão Windows':
D elete
Instruções de limpeza do conteúdo de janela.
Clear Com mand W indow Clear Com mand H istory Clear W orkspace
Programação
( 113
Menu
Conteúdo
Opções
s h o r tE < ✓ s h o rtG
Configura formato de exibição de dados numéricos.
. lo n g
View
lo n g E lo n g G ' hex bank
Opções de geração de gráficos a partir dos dados selecionados no Array Editor.
Graphics
1 D e s k to p
W in d o w
H e lp .
y» O p e n M -F H es w h e n D e b u g g in g
&ÆP
10 r ii
S tep ï n
Debug
•Stóg O -ã
sh ift
C o ntiftus
R3
Exibe opções semelhantes ao menu pop-up [Debug] do MATLAB® 7.
C le a r B r e a k p o in ts in A ll F ile s S to p i f E r ro r s /W a r n in g s ...
E x it D eb u g M a te
I W in d o w
H e lp
Mostra opções similares ao menu pop-up [Desktop] do MATLAB® 7.
? U ndock m
Desktop
D o c k A r r a y E d ito r V A r r a y E d ito r T o o lb a r D o cu m e n t B ar
Help :
H
fflT te
►I
H I L e ft/R ig h t Split R
T o p /B o tto m S p lit
[ 5 F lo a t Q
Exibe opções semelhantes ao menu pop-up [Windows] do MATLAB® 7. As opções de layout do Array Editor são apresentadas a seguir.
M a x im iz e
C a s c a d e D o c u m e n ts
Windows
M in im iz e D o c u m e n ts C lo s e D o c u m e n ts 0 C o m m a n d W in d o w
C t r l+ 0
1 C o m m a n d H is to r y
C trl+ 1
2 C u r r e n t D ir e c to r y
C t r l+ 2
3 W o rk s p a c e
C t r l+ 3
A r r a y E d ito r
C t r l+ S h ift + 3
:
A F ig u re 1 Bm
MATLAB ®7■Fundamentos
Menu
Opções
Conteúdo ESI M A T L A B H e lp
FI
U s in g th e A r r a y E d ito r
Help
W e b R e s o u rc e s
Exibe opções similares ao menu pop-up [Help] do MATLAB®7.
►
C h e c k f o r U p d a te s Dem os A b o u t M A T IA B
Opções da barra de ferramenta I ffl I
m
!
u *
rrv_ N I
\ im i m
Nome
N
* | tg g
I sta ck
ícone
S
□
Ação a ■*
Save
I
Cut, Copy, Paste
EB CD B
]
%
Armazena variável em arquivo. Cut, Copy, Paste do Windows®.
m
a
Print
Imprime seleção.
9 ] 0 1 % I Stack:| ô-íòí Plot selection]*»®®*
ITÍll bár'(m (l:50,2:3))
Plot selection
f .0.
Escolhe operação para geração de gráfico a partir dos valores selecionados.
imagesc (m(l:50,2:3)) contour (m( 1:50,2 :3)) surf (m (l:50,2:3)j mesh (m(l :50,2:3)) More Plots...
Up
No caso de variáveis compostas (struct, cell array), sobe um nível.
m
Tiling
ffl m
Fife Edit View Graphics Debug Desktop:•Wndow ■■■Beis : : *sj i M M i 1 f~ 2: 2.0408; 4.0816] 4 j ’’ .....R1224Í 8.1633! 6 | " .....10 204! "iX 12.245! sJ 141286; 16 3271 .9 ! 0 f ......18.367? .11.]... 20.4081 .....22.449!
B
&
□
•*
í- X
Slack , “ \ • .........m m B s - p • m * 2~ !.... 3 . 4 " 5 , 6 j ::*i ..........11 07! 12 423 ........ÍÍÍ 3 9 2 ]...... 14 945:'...................... 1 2 3 1 4 ! ..... 17.469: ........26.499!..... 19.9921......................f 26.102! 22 515! ; ...... 3.31 66 !...... ' 25 02 3:...................... ! 27.098! 27.561] ]" ......39.315:...... 30.084?......................I ' ” 34.7981 32.607! : 38.513: 35129 ' 36.258: ’ "37.6 52 ! 1 ........42.006:..... '"43 .1 76 !....................... f " J _______
Programação
B e E t*
v
vi«w ; &aphcs DebugDesktop Window : Help.1!:
& Rà © .
a
> .....
Opções de organização do layout para exibição de mais de uma variável.
á í
1
*
CZ jS I
V
Slack. ' >
% ■:
;|..v
■2423'
M
mz
jim je
11.07] 2.0408; 11 392 4 0816 12 314 6 12241 26 499 8 1 6 3 3 '" 26.102; 10:204? 3 3166" 12.245; 27 098 Í 4.286: 16.327] 34.798! 18.367V ' 38 513{ ' 20.408: 36.368=
"39m"
&
19.9:
□
""225 ” 25$ 27.5 30"0: 32.6
Sé A r ra y F rfito r fils
Ed* View &sphics Debug Desktop . Window Help i.
•> .($
a
s
Stack -
-
4
ffl [D B ilf ?
□ !
f 3
2 ’ 1.23 63 ...... 12.423:
•
i
4
5
SCj
6 '?*.■
................ : ....................... !....................... [ ................
<. ■ i :2 !3 4
§ 1
■ ■ ■ ■ ■ 2 11.07! 1 i 332: 12.314! 26 499
»
; cr2.0408! 4.0816: 6 1224
~TM 3 12.423! 14.946! 17.469! 19 992
4
:
5
:
6 A
>
i....................
.........................
XI. Janela [Command History] Janela na qual ficam armazenadas todas as instruções executadas na janela de trabalho [Command Window], As instruções ficam armazenadas permanentemente (não são eliminadas após o encerramento do MATLAB®). As informações da janela [Command History] só são eliminadas se o usuário acionar a opção [Clear Command History] do menu pop-up [Edit] ou a opção [Clear Entire History] do menu contextual. No caso de dúvida, o sistema pede confirmação, pois as instruções são totalmente perdidas: C o iw n a a a H is to r y cap2
*
Cut
Ctrl+X
Copy
Ctrl+C
X M
Evaluate Selection Create M-Fle Create Shortcut c ic c le a r
Profile Code Delete Selection
Delete to Selection 1 ( Clear Entire History Cm, c o i e f ] = c a p 2 _ e x e m p lo _ i ; 3 ( :y . p l o c (m , ' t i s p l a f N o r o e 1 , ' n i 1 , >'
Cm, c ç % i.-.. j o / 0 |
r f \
A re y o u s u e y o u w a n t to d e a r y o u r com m and h is to ry ?
Q Q
Opções do menu flutuante da janela [Command History] Opção Cut, Copy Evaluate Selection Create M-file Create Shortcut Profile Code Delete Selection Delete to Selection Clear Entire History
116
Ação Corta/Cola as instruções selecionadas. Executa o conjunto de instruções selecionadas. Cria um m-file com as instruções selecionadas. Cria um atalho com as instruções selecionadas. Chama o utilitário profile. Elimina o conjunto de instruções selecionadas. Elimina todas as instruções executadas até a instrução selecionada. Apaga todas as informações da janela.
MATLAB® 7-Fundamentos I
XII. Teclas de Atalho A maioria das teclas de atalho estão indicadas nas opções dos menus pop-ups.
Programação
Tec la
Ação
Alt+S
abre menu [Start].
Ctrl+0
configura [Command Window] como janela corrente.
Ctrl+1
configura [Command History] como janela corrente.
Ctrl+2
configura [Current Directory] como janela corrente.
Ctrl+3
configura [Workspace] como janela corrente.
Ctrl+4
configura [Help] como janela corrente (se estiver aberta).
Ctrl+A (select all)
seleciona tudo.
Ctrl+C (copy)
copia.
Ctrl+D (duplicate)
duplica.
Ctrl+F (find)
procura.
Ctrl+I (smart indent)
organiza parágrafos de m-files (editor de texto).
Ctrl+N (new)
cria novo arquivo.
Ctrl+O (open)
abri arquivo.
Ctrl+P (print)
imprime.
Ctrl+Q (quit)
fechar sessão e sai do MATLAB® 7.
Ctrl+S (save)
salva a rq u ivo .
Ctrl+Shift+O
configura [Edit] como janela corrente (se estiver aberto),
Ctrl+V (paste)
cola.
Ctrl+W
fecha janela [Command History],
Ctrl+X (cut)
corta.
Ctrl+Y (redo)
refaz.
Ctrl+Z (undo)
desfaz.
ESC (escape)
cancela comando em execução.
F10 (next step)
executa próxima instrução (debug mode).
F11 (step in)
entra na execução da próxima função ( debug mode).
F11+Shift (step out)
sai da execução da função corrente (debug mode).
F5 (run)
executa a função até o final (debug mode).
Tab
avança para o próximo campo.
Tab+Ctrl
avança para a próxima janela.
0 -
3.1.2. Utilitários e Arquivos Especiais 0 MATLAB® 7 possui utilitários e arquivos especiais para facilitar a configuração e o gerenciamento de arquivos neste ambiente. I. Utilitário Preferences Pode ser executado pela opção [Preferences] do menu pop-up [File] ou pelo comando Preferences. Por meio de sua caixa de diálogo, é possível ajustar os parâmetros de preferência do sistema: ♦
fonte e cor de texto por janela;
♦
cor de fundo por janela;
♦
padrões de exibição de informações.
MAT-Files Source Control ; Ss Forts Custom Colors s Command W indow Keyboard & hdenting Command History B Editor/Debugger Display Keyboard & Indenting Language Publishing Publishing Images Autosave Help Web Current Directory Workspace Array Editor GUIDE 53 Figure Copy Template Copy Options Instrument Control
General Preferences Toolbox path caching............ P I Enable toolbox path cache □ Enable toolbox path cache diagnostics I Update Toofciox Path Cache
|
Specify how colored Snes and text w e sent to the prrter ® Use printer defaults O Always send as black and white
O Always send as color Default behavior o f the delete function O
Move !ies to the Recycle &n
< 5 Delete lie s permanently
1 OK
1 1 Cancel
| | Apply
|
f
Help
j
II. Utilitário Pathtool Pode ser acionado pela opção [Set Path] do menu pop-up [File] ou pelo comando pathtool. Por intermédio de sua caixa de diálogo, é possível configurar os diretórios reconhecidos pelo MATLAB® 7: ♦
adicionar novos diretórios;
♦
mover diretórios (mudar prioridade de busca);
♦
eliminar diretórios.
li 1
MATLAB®7 - Fundamentos J
A3 ;nar«jfis Uwe eltect rnneJtatsff
Aod FoCíf
WATLABiesr-.hpalh
.
| Act! w*n Subtoide»s .
|
Move Down
j
■ Move tc Rottom J
| Remove | ío v j
j I C.lfisB I
I » .. . ■ . ..................................... _ J C.Vnatlab7\íoolbox\mailab\ops C:\ni3tlabAtiolbnx\m allab\Jang C \matlab7\ioolbox\m 3il3b\elm at C \mallab7\loolbox\m allab\elfun 1 ) C.\rnallab/\lc.>lbux\ínatld'a\specfun CJ C .\natIabAioolbox\m allab\m alfun C:\m atlab7\toolbox\mailab\datafun C.\m atlab7Mcolbox\fn3il3b\po!yfun C.\rnatlab7McDlbox\mafIab\íiinfun :2 íí C:\m allabAloolbox\m ailah\sparfun '_ j C \ro.itlah7\luulbox\iny|!ab\scribe C.VnollabAloolbox\ínal.ab\graph2d J C:Vna{lab7Mooibox\mal!3b\graph'J(i _ J C;VnatlabAtoo'b3x\mat!3b\specgraph ;£2 C Ynatlab7\i30ib0x\m ailab\grapfiics _ J C:Vnatlab7\t50Íbox\m atl3b\uilools ■£ ] C \matlah7Mooibo*\matlab\strlur. C \m atIab7\toolbox\m ailab\imagpsei
_
L3 C:\m allab7\loolbox\ma1l3b\iofun ;í iJ C.\ni3llab7\loolbox'mallob\au
J i
"--« n
III. Utilitário Find Files Pode ser executado pela opção [Find Files] do menu [Start], Por meio de sua caixa de diálogo, é possível procurar arquivos. Sua interação é semelhante ao comando Search do Windows®. A particularidade do [Find Files] é a existência da opção de busca nos diretórios definidos no pathtool do MATLAB® 7. nA F in d f ile s j F ind files n am ed: r
Find files co n tain in g t e x t
Look h: C u rren t d irec to ry
C lo se j
j
Help
IV. Utilitário MATLAB® Help Browser Acionável pelo ícone 1311, este utilitário abre uma caixa de diálogo semelhante às janelas de help de aplicativos Windows em geral. Porém como particularidades do MATLAB® Help Browser podemos citar:
Programação
(119
♦
pasta [Contents]: toda a documentação do MATLAB está acessível em formato eletrônico nesta pasta;
♦
pasta [Demo]: contém exemplos de utilização do MATLAB® 7. F8e Edit
View- Go Favorites Desktop Window
Help :
0 | # :(î4 Contents [ Index §-Search | Demos?
|
@ Begin Here
m. ^R elease Notes !B-0 Installation
i [Title: I MATLAB
IMATLAB'
'ti.0 Excel Link B: 0 MATLAB Builder for COM H0 MATLAB Builder for-Excel S ^ MATLAB Compiler r'0 MATLAB Webserver S. 0 Bioinformatics Toolbox s 0 Communications Toolbox s 0 Control System Toolbox s 0 Cujve Fitting Toolbox 5; 0 Data Acquisition Toolbox s 0 Database Toolbox s '0 Datafeed Toolbox Ü0 Filter Design Toolbox Financial Toolbox i 0 Financial Derivatives Toolbox $ Financial Time Series Toolbox
Functions: « BiL.Cateao.iy. 8 In
Handle Graphics:
Alphabetical Order object Properties
Documentation Set
» Getting Started Introduces MATLAB and gets you started using it
«User Guides
Provides tutorials and comprehensive information about MATLAB v List o f User Guides
i■Of Fiypri In rn rn p TonlK oy
V. Arquivos Especiais Os arquivos especiais do MATLAB® 7 são m-files, cujos nomes são reservados e possuem as seguintes propriedades: Nome do Arquivo
Definição - E o arquivo de 'inicialização' do MATLAB® 7.
matlabrc.m
startup.m
pathdef.m restoredefaultpath.m
- Contém a configuração padrão do MALTAB® 7. - Este arquivo é executado quando o MATLAB® é aberto. - Não é recomendável alterar este arquivo. - Este arquivo pode ser criado e alterado pelo usuário. - Se o MATLAB® 7 detectar a existência do startup.m, este arquivo é executado imediatamente após o matlabrc.m. - Equivale ao antigo arquivo 'autoexec.bat' do DOS. ■Contém a configuração de path padrão. - Este arquivo é alterado pelo utilitário pathtool. - Restaura o path padrão.
MATLAB ®7-Fundamentos
3.2. Operações Matemáticas no MATLAB® 7 Neste tópico, listamos as principais funções de operações matemáticas disponíveis no programa, organizadas por disciplina.
3.2.1. Funções Matemáticas Elementares Funções Trigonométricas Elementares Nome
Retorna
ac o s ,
acosd,
acosh
arco-coseno: radianos, graus e hiperbólico
ac o t ,
acotd,
acoth
arco-cotangente: radianos, graus e hiperbólico
ac s c ,
acscd,
acsch
arco-cosecante: radianos, graus e hiperbólico
as e c ,
asecd,
asech
arco-secante: radianos, graus e hiperbólico
as i n ,
asind,
asinh
arco-seno: radianos, graus e hiperbólico
at a n ,
atand,
atanh
arco-tangente: radianos, graus e hiperbólico arco-tangente (quatro quadrantes)
atan2(x,y) cos,
cosd,
cosh
co-seno: radianos, graus e hiperbólico
cot,
cotd,
codh
co-tangente: radianos, graus e hiperbólico
csc,
cscd,
csch
co-secante: radianos, graus e hiperbólico
sec,
seed,
sech
secante: radianos, graus e hiperbólico
sin,
sind,
sinh
seno: radianos, graus e hiperbólico
tan,
tand,
tanh
tangente: radianos, graus e hiperbólico
Funções Exponenciais Elementares Nome
Retorna
exp(x)
exponencial (ex)
expml(x)
exponencial de x menos (ex - 1 )
l o g (x)
logaritmo natural (In) - base e
loglp(x)
logaritmo natural de x+1 (ln(x+1))
log2(x)
logaritmo na base 2
loglO(x)
logaritmo na base 10
nextpow2(x)
próxima potência de 2, tal que x < 2n
pow2(x)
potência de 2
reallog(x)
logaritmo natural real
realpow(x,y)
potência real x*
sqrt(x)
raiz quadrada
Funções de Números Complexos Nome
Retorna
a b s (z )
valor absoluto
a n g l e (z )
ângulo em radiano do número complexo
c o m p l e x (a,b)
número complexo a + bi
conj(z)
conjugado de z
cplxpair(m)
ordena números complexos conjugados
i m a g (z )
parte imaginária de z
isreal(z)
verdadeiro (trué), se o número é real
real(z)
parte real de z
s i g n (z)
sinal de z
Funções de Arredondamento e Resto Nome
Retorna
fix( X )
trunca o valor de x (arredonda para zero)
floor(x)
trunca o valor de x para o inteiro mais próximo menor
ceil(x)
trunca o valor de x para o inteiro mais próximo maior
round(x)
trunca o valor de x para o inteiro mais próximo
mod(x,y)
módulo da divisão x/y
rem (x, y)
resto da divisão de x/y
Exemplos: Função
x=1.6
x=-1.6
fix (x)
1
-1
floor (x)
1
-2
ceil (x)
2
-1
round (x)
2
-2
Números Primos e Fatoração (Matemática Discreta - Números Inteiros) Nome
Retorna
factor(n)
decomposição em fatores primos
factorial(n)
fatorial de n
gcd(nl,n2)
máximo divisor comum de n1 e n2
isprime(n)
verdadeiro (trué), se o número é primo
lcm(nl,n2)
mínimo múltiplo comum entre n1 e n2
nchoosek(n,k)
coeficiente binomial nl / (kl * (n - k)l)
MATLAEP 7 - Fundamentos
Retorna possíveis permutações dos valores em n lista de números primos menores que n fração aproximada de n
Nome p e r m s (n) primes(n) r a t ( n ) , r a t s (n)
Exemplos das funções mod e rem:
Exemplo da função factor: >> f = factor(210) f = 2 3 5
7
% 210 = 2*3*5*7
Exemplo da função perms: >> p e r m s ([1 5 10]) ans = 1 5 10 1 5 10 10 1 5 5 1 10 10 1 5 1 10 5
seis possiveis permutações
Exemplo das funções rat e rats:
3.2.2. Vetores e Matrizes Funções de Teste Lógico Retornam informação de classe lógica: 0 {false) /1 {trué).
Programação_________________________________________________
Nome isempty(m) isegual(ml,m2) isfloat(m) isinteger(m) islogical(m) isnumeric(m) isscalar(m) issparse(m) isvector(m)
Retorna true se: a variável é vazia uma variável é igual à outra a variável é numérica de ponto flutuante a variável é numérica inteira a variável é lógica (bit 0 /1 ) a variável é numérica a variável é escalar a variável é uma matriz esparsa a variável é um vetor
Informações básicas sobre matrizes Nome length(m) ndims(m) numel(m) size(m)
Retorna número máximo de elementos por dimensão número de dimensões da variável número total de elementos número de elementos por dimensão
Operações e Manipulações s
cumprod
Produto acumulado. Sintaxe típica: >> P = cumprod(m)
Parâmetros: Entrada m: vetor m: matriz
Saída P: vetor com produtos acumulados P: vetor com produtos acumulados por coluna
Exemplo: >> c u m p r o d ([1 2 3 4 5 ) ans = 1 2 6 24 » c u m p r o d ([1 2 ;3 4;5 6] ) ans = 1 2 3 8 15 48
120
MATLAB® 7 ■Fundamentos
S
cumsum
Soma acumulada. Sintaxe típica: »
S = cumsum(m)
Parâmetros: Saída S: vetor com somas acumuladas S: vetor com somas acumuladas por coluna
Entrada m: vetor m: matriz Exemplo:
15
V V o
» cumsum ( [1 2 3 4 5] ) ans = 6 10 1 3 [1 2; 3 4; 5 6] ) ans = 2 1 4 6 12 9
S
diag
Diagonal de matriz. Sintaxe típica: »
D = diag(m)
Parâmetros: Entrada m: vetor m: matriz Exemplo:
Programação
Saída D: retorna matriz com os elementos de m na diagonal D: retorna os elementos da diagonal de m
y
find
Localiza elementos dentro de uma matriz. Sintaxe típica: »
índice = f i n d (Critério)
Parâmetros: Entrada Critério: critério de localização
Saída Indice: vetor com os índices dos elementos que satisfazem o critério
Exemplo: » m=[-l 0 3 0 -5 6; 7 8 0]; » find(m) % indice dos elementos diferentes de zero » find(m) ans = 1 3 5 6 7 8 » find(m == 0) % indice dos elementos iguais a zero ans = 2 4 9 >> find(m<0) % indice de elementos < 0 ans = 1 5
S
fliplr/flipup
Move elementos da matriz da esquerda para a direita / de cima para baixo. f; Sintaxe típica: >> ml = fliplr(m)
/ flipup(m)
Parâmetros: Entrada m: matriz
Saída m1: matriz com elementos deslocados
Ii MATLAB® 7- Fundamentos j :
Exemplo:
s
kron
Produto de Kron. Sintaxe típica: >> k = kron(ml,m2)
Parâmetros: Saída k = matriz com produto de Kron de m1 e m2
Entrada m1, m2: matrizes Exemplo: » ml= [1 2 3,-4 5 6] ml = 1 2 3 4 56 » m2= [2 3;4 5]
m2 : 4 » kron(ml,m2) ans =
2 4 8 16
3 5 12 20
3 5
4 8 10 20
6 10 15 25
6 12 12
9 15 18
s
m ax/m in
Valor máximo /m ínim o. Sintaxe típica: »
v = max(m)
/ min(m)
Parâmetros: Entrada m: vetor m: matriz
Saída v: valor máximo / mínimo do vetor v: vetor com valores máximos / mínimos por coluna
Exemplo: » m a x ([1 2; 3 4; 5 6 ] ) ans = 5 6 » mi n ( [1 2 ;3 4 ;5 6 ] ) ans = 1 2
s
prod
Produto dos elementos. Sintaxe típica: »
P = prod(m)
Parâmetros: Entrada m: vetor m: matriz
Saída P: produto dos elementos P: vetor com produtos por coluna
Exemplo: » prod( [ 1 2 3 4 5]) ans = 120 » prod( 1 2 ;3 4 ;5 6 ] ) ans = 15 48
MATLAB® 7-Fundamentos
y
repm at
Replica matriz. Sintaxe típica: »
R = repmat(m,
lin, col)
Parâmetros: Entrada m: variável lin, col: números de linhas e colunas
Saída R: matriz com elementos replicados
Exemplo: » m=[l 2; 3 4] m = 1 2 3 4 » R = r epmat(m,2 , 3 ) R = 1 2 1 3 4 3 1 2 1 3 4 3
s
% replicar m em 2 linhas e 3 colunas 2 4 2 4
1 3 1 3
2 4 2 4
reshape
Redimensiona matriz. Sintaxe típica: »
R
=
reshape(m,
lin,
col)
Parâmetros: Entrada m: variável lin, col: números de linhas e colunas
Saída R: matriz redimensionada
Exemplo: » m= [1 2 3 4 5 6; 7 8 9 10 11 12] m = 1 2 3 4 5 6 7 8 9 10 11 12 » reshape(m,3,4) % dimensões devem ser compatíveis ans = 1 8 4 11 7 3 10 6 2 9 5 12
S
rot90
'Roda' matriz em 90°. Sintaxe típica: >> R = rot90(m)
Parâmetros: Entrada m: matriz
Saída R: matriz 'rodada'
Exemplo: » m= [1 2 3 4 5; 6 7 8 9 10] m = 4 5 1 2 3 9 10 6 7 8 >> rot90(m) ans 5 10 4 9 3 8 7 2 1 6 » m' % rot90 e' diferente de transposta ans = 1 6 2 7 3 8 4 9 5 10
S
sort
Ordena elementos. Sintaxes típicas: >> S = sort(m) >> S = sort(m, metodo)
Parâmetros:
_________ Entrada m: vetor ou matriz metodo: 'ascend', 'descend'
______________________________________________ Saída S: vetor ordenado S: matriz com colunas ordenadas
S
Exemplo: » s o r t ([1 3 4 5 2]) ans = 4 5 1 2 3 » s o r t ([1 3 4 5 2], 'd e s c e n d 1) ans = 5 4 3 2 1 » m=[5 1 3; 2 4 6] m = 5 1 3 2 4 6 » sort(m) % Os elementos estao em ordem por coluna ans = 2 1 3 5 4 6
S
sortrows
Ordena elementos de matrizes tendo uma coluna como chave de ordenação. Sintaxe típica: »
S = sortrows(m,
col)
Parâmetros: Entrada m: matriz col: índice da coluna Exemplo:
s
sum
Soma dos elementos. Sintaxe típica: »
S = sum(m)
Saída S: matriz ordenada
Parâmetros: Saída S: soma dos elementos S: vetor com somas por coluna
Entrada m: vetor m: matriz Exemplo: » s u m ( [1 2 3 4 5]) ans = 15 » s u m ([1 2;3 4;5 6]) ans = 9 12
•S tril/triu Matriz triangular inferior/superior. Sintaxe típica: »
R = tril(m)
/ triu(m)
Parâmetros: Entrada m: matriz Exemplo:
Saída R: matriz triangular
Construções Matriciais Elementares
s
blkdiag
Dadas n matrizes, cria uma matriz com a diagonal formada pelas matrizes fornecidas. Sintaxe típica: »
R = bkldiag
(ml, m2,
..., mn)
Parâmetros: Entrada matrizes
Saída R: matriz 'diagonal'
Exemplo:
v
eye
Cria matriz identidade. Sintaxe típica: »
M = eye(n)
/ eye(n,m)
Parâmetros: Entrada n, m: dimensões
Saída M: matriz identidade
e a s t«
Exemplo:
Programação
S-
y
linspace
Cria vetor com espaçamento linear. Sintaxe típica: »
V = linspace(Inicio,Final,N)
Parâmetros: Saída V: vetor com N elementos (se N for omitido, a função gera 100 divisões)
Entrada Inicio, Final: intervalo N: número de divisões Exemplo: »
V = l i n s p a c e (0,1,5) 0
S
0.2500
0.5000
0. 7500
1 . 0 0 0 0 » eye (2)
logspace
Cria vetor com espaçamento logarítmico. Sintaxe típica: »
V = logspace(In,Fi,N)
Parâmetros: Entrada ln,Fi: intervalo (10ln, 10Fi) N: número de divisões
Saída V: vetor com N elementos (se N for omitido, a função gera 50 divisões)
Exemplo: >> V = l o g s p a c e (1,2,5) % 5 divisões entre 10^1 a 10^2 V = 10.0000 17.7828 31.6228 56.2341 1 0 0 . 0 0 0 0 » V = l i n s p a c e (0,1,5)
S
m eshgrid
Cria duas matrizes resultantes do cruzamento dos valores dos vetores x e y. Sintaxe típica: I»
[mx,my]
= meshgrid(x,y)
MATLAEP 7 - Fundamentos
Parâmetros: Entrada x, y: vetores
Saída mx,my: matrizes com vaiores cruzados
Exemplo: >> x = l : 4 ; >> y = l :3; >> [mx,my]=meshgrid(x,y) mx = 1 2 3 4 1 2 3 4 1 2 4 3 my = 1 1 1 1 2 2 2 2 3 3 3 3 » s u r f (mx.*my)
s
ones
Cria matriz de 1's. Sintaxe típica: »
M = ones(n)
/ ones(n,m)
Parâmetros: Entrada n,m: dimensões
Saída M: matriz de 1's
Exemplo: » o n e s (2,3) ans = 1 1 1 1
S
1 1
rand
Cria matriz de números pseudo-aleatórios uniformemente distribuídos entre 0 e 1. Sintaxe típica: »
M = rand(n)
°rogramação
/ rand(n,m)
Parâmetros: Saída M: matriz de números aleatórios
Entrada n,m: dimensões Exemplo: » r a n d (2) ans = 0.9501 0.2311 » r a n d (2,3) ans = 0.8913 0.7621
0.6068 0.4860
0.4565 0.0185
0.8214 0.4447
Observação: a instrução seguinte configura 'semente' para iniciar a geração de números aleatórios. »
r a n d ( 1S t a t e s u m ( 1 0 0 * c l o c k ) )
■/ randn Cria matriz de números pseudo-aleatórios com distribuição normal entre -1 e 1. Sintaxe típica: »
M = randn(n)
/ randn(n,m)
Parâmetros: Saída M: matriz de números aleatórios
Entrada n,m: dimensões Exemplo: » r a n d n (2) ans = -0.4326 -1.6656
0.1253 0.2877
S
zeros
Cria matriz de 0's. Sintaxe típica: »
M = zeros(n)
/ zeros(n,m)
Parâmetros: Entrada n,m: dimensões
Saída M: matriz de 0's
Exemplo: »
z e r o s (2)
o
O o
1o
n 3
C onstru ções M atriciais Especiais S
compan
Cria matriz companheira do polinómio dado. Sintaxe típica: »
M = compan(p)
Parâmetros: Entrada p: vetor polinómio
Saída M: matriz cujos autovalores são raízes do polinómio
Exemplo: »
P=poly( [ 1
2
3] )
% coeficiente do polinomio de raizes
P = 1
-6
11
» m=compan(p) m = 6
-11
6
1
0
0
0
1
0
» eig(m) ans = 3 .0000 2.0000
1.0000
Programação
-6
1,
2
e
3
y
pascal
Cria matriz de Pascal de ordem n. Sintaxe típica: »
P = p a s c a l (n)
Parâmetros: Saída P: matriz de Pascal
Entrada n: ordem da matriz Exemplo: »
p a s c a l (4) 1 1 1 1
1
1
2 3 4
1 3 6 10
4 10 20
3.2.3. Álgebra Linear A n á lis e M a tric ia l s
cond
Retorna condição de inversão da matriz. Sintaxe típica: »
c = cond(m)
Parâmetros: Entrada m: matriz
Saída c: condição de inversão
Exemplo: » m l = [-1 2 3; 4 -5 6; 7 8 -9] ; » cond(ml) %valor 'pequeno1, ml tem boas condicoes de ser inversivel ans = 4.3211 » m 2 = [1 2 3; 4 5 6, 7 8 9 ] ; g r a n d e 1, m2 nao tem boas condicoes de ser » cond(m2) %valor invers1v e 1 ans = 3 . 8131e+016
MATLAB ®7-Fundamentos
s
det
Retorna determinante de matriz. Sintaxe típica: »
d = det(m)
Parâmetros: Entrada m: matriz
Saída d: determinante da matriz
Exemplo (arquivo cap3_det_exemplo.m)
s
norm
Retorna norma do vetor ou da matriz. Sintaxe típica: »
n = norm
(m)
Parâmetros: Entrada m: vetor m: matriz
Saída n: comprimento do vetor n: maior valor singular da matriz
Exemplo (arquivo cap3_norm_exemplo.m) % normal de vetor norm([0 1 2 ] ) % s q r t (5)= sqrt(2A2 + 1 ) , comprimento de ans = 2.2361 %normal de matriz n o r m ( [-1 2 3;4 -5 6;7 8 -9]) ans 15.0079
i Programação
[0 1 2]
S-
S
null
Retoma subespaço nulo de uma matriz com determinante 0. Sintaxe típica: »
k = null
(m)
Parâmetros: Saída k: matriz do subespaço nulo
Entrada m: matriz com determinante 0 Exemplo: » m= [1 2 3; 4 5 6; 7 8 9]; » det(m) % determinante e' zero ans = 0 » null(m) ans = -0.4082 0.8165 -0.4082
S
orth
Retorna matriz ortogonal. Sintaxe típica: »
q = orth
(m)
Parâmetros: Saída q: matriz ortogonal
Entrada m: matriz Exemplo: » »
m=[-l 2 3; 4 -5 6; 7 8 -9] ; q=orth(m)
q = -0.0852 0.1046 -0.4072 -0.9113 0.9094 -0.3982 » q' *q % Identidade ans = 1.0000 -0.0000 -0.0000 1.0000 -0.0000 0.0000
0.9909 0.0611 0.1202
-0.0000 0.0000 1.0000
■/
rank
Retorna posto de matriz (número de linhas ou colunas linearmente independentes). Sintaxe típica: »
p = rank
(m)
Parâmetros: Entrada
Saída
m: matriz
p: posto da matriz
Exemplo (arquivo cap3_rank_exemplo.m) % posto=dimensao da matriz, entao o determinante e 1 diferente de zero r a n k ([-1 2 3;4 -5 6;7 8 -9]) ans = 3 % posto me n o r que dimensão da matriz, entao o determinante é zero r a n k ([1 2 3;4 5 6,-7 8 9]) ans = 2
S
subspace
Retorna ângulo entre os subespaços definidos pelas duas matrizes de entrada. Sintaxe típica: »
a = subspace
(ml,m2)
Parâmetros: Entrada
Saída
m1, m2: matrizes
a: ângulo em radianos
Exemplo: »
m l = [1 1; 1 1];
»
m 2 = [-1 -1;1
-1];
» subspace(ml,m2) ans = 1.5708 % pi/2 = 90 graus
(planos perpendiculares)
trace
S
Retorna soma dos elementos da diagonal da matriz. Sintaxe típica: »
d = trace(m)
Parâmetros: Saída d: soma dos elementos da diagonal
Entrada m: matriz Exemplo: » t r a c e ([-1 2 3;4 -5 6;7 8 -9]) ans = -15
E q u a ç ã o L in e a r s
inv
Retorna matriz inversa. Sintaxe típica: »
q = inv (m)
Parâmetros: Entrada m: matriz
Saída q: matriz inversa
Exemplo: » »
m = [-1 2 3; 4 -5 6; 7 8 -9]; q=inv(m)
q = -0.0083 0.1167 0.2167 -0.0333 0.0611 0.1861 » m*q % Identidade ans = 0 1.0000 1.0000 0.0000 0 -0.0000 » q*m % Identidade ans = 1.0000 0.0000 1.0000 0 0 -0.0000
0.0750 0.0500 -0.0083
-0.0000 0.0000 1.0000
0 -0.0000 1.0000
MATLAEP 7 - Fundamentos
S
linsolve
Resolve sistema de equações lineares, A*x = B. Sintaxe típica: | »
X = linsolve(a,b)
Parâmetros: Entrada a: matriz b: vetor, tal que a * x = b
Saída x: resultado do sistema
Exemplo:
s
lu
Decomposição LU (triangular inferior e superior). Sintaxe típica: >>
[L,U] = lu(m)
Parâmetros: Entrada m: matriz
Saída L: matriz triangular inferior U: matriz triangular superior
Exemplo:
Programação
O
o
» m=[-l 2 3; 4 -5 6; 7 8 -9]; » [L,U]=lu(m) L = -0.1429 -0.3284 1.0000 0.5714 1.0000 0 1.0000 0 0 U = 7.0000 8.0000 -9.0000 0 -9.5714 11.1429 5.3731
S
pinv
Retorna matriz pseudo-inversa para matriz com determinante igual a zero. Sintaxe típica: »
q = pinv(m)
_____________________________________________
Parâmetros: Saída q: matriz pseudo-inversa
Entrada m: matriz Exemplo: » »
q
m=[l 2 3; 4 5 6; 7 8 9]; q=pinv(m)
% det(m)
= 0
=
-0.1667 0.3056 -0.6389 0.0556 -0.0556 0.0000 -0.1944 0.1667 0.5278 >> m*q*m' % m = m*q*m' - propriedade da pseudo-inversa ans = 7.0000 1.0000 4.0000 8.0000 5.0000 2.0000 6.0000 9.0000 3.0000
S
qr
Decomposição ortogonal-triangular. Sintaxe típica: »
[Q,R]
= qr(m)
Parâmetros: Entrada m: matriz
Saída Q: matriz ortogonal R: matriz triangular
Exemplo: >> m = [-1 2 3; 4 -5 6; 7 8 -9] ; » [Q,R]=qr(m) » [Q,R] =qr (m) Q = % Ortogonal (det(Q) = 1) 0.2895 0.9492 -0.1231 0.8127 0.3117 0.4924 0.0425 0.8616 0 .5057 R = 8.1240 4.1851 -5.1698 8.6882 -8.5592 0 5.1004 0 0
MATLAB® 7 - Fundamentos
Autovalor, Autovetor
s
eig
Retorna autovalores e autovetores (usados para o cálculo de potência de matriz). Sintaxe típica: »
[V,D]
= eig(m)
Parâmetros: Saída V: matriz de autovetores D: matriz diagonal de autovalores
Entrada m: matriz
1
CO
Exemplo: -J
» m=[-l 2 3 ; 4 -5 6; » [V, D] =eig (m) % m * V = V * D V = -0.6019 -0.1182 -0.5250 -0.5918 0.7045 -0.4929 0.8620 -0.6116 ■0.3760 D = % as diagonais sao autovalores de m 4.7494 0 0 -5.2152 0 0 0 0 -14.5343
y
poly
Dada uma matriz m, retorna os coeficientes do polinómio característico de m: det(Hambda-m) = 0. Sintaxe típica: »
P = poly(m)
Parâmetros: Entrada m: matriz
Saída P: vetor com os coeficientes do polinómio característico de m
Observação: o primeiro elemento do vetor contém o coeficiente de maior grau: P(t) = P (1)*t3 + P (2)*t2 + P (3)*t + P(4).__________________________________________
■/
polyeig
Retorna as raízes do polinómio característico de m: det(Hambda-m) = 0. Sintaxe típica: »
R = polyeig(m)
Parâmetros: Saída R: vetor contendo as raízes do polinómio característico de m
Entrada m: matriz
Exemplo: » m=[-l 2 3; 4 -5 6; 7 8 -9]; » D=polyeig(m) % Auto-valores de m D = 4.7494 -5.2152 -14.5343
y
mm l|
svd
Retorna decomposição em valores singulares (U,S,V) tal que m = U*S*V'. Sintaxe típica: I»
[U,S,V]
= svd(m)
Parâmetros: Entrada m: matriz
Saída U: matriz unitária, det(U)=1 S: matriz diagonal com os valores singulares V: matriz unitária, det(V)=1
Exemplo: » m= [-1 2 3; 4 -5 6; 7 8 -9]; » [U,S,V]=svd(m) U =% U matriz unitaria, det(U)=l -0.0852 0.1046 0.9909 -0.4072 -0.9113 0.0611 0.9094 -0.3982 0.1202 S = % S matriz diagonal
MATLAB ®7-Fundamentos
15.0079 0 0 6.9064 0 0 0 0 3.4732 V = % V matriz unitaria, det(V)=1 0.3213 -0.9466 0.0274 0.6090 0.2287 0.7594 -0.7251 -0.2273 0.6500
3.2.4. Análise de Dados e Transformada de Fourier O perações Básicas y
cumtrapz
Soma acumulada 'trapezoidal' (integral por área de trapézio). Sintaxe típica: »
S = cumtrapz(m)
Parâmetros: Entrada m: vetor m: matriz
Saída S: vetor com somas acumuladas S: vetor com somas acumuladas por coluna
Exemplo: » cumtrapz( [ 1 2 3 4 5 ans = 0 1.5000
) 4.0000
7.5000
» c u m t r a p z ([1 2 ;3 4 ;5 6] ) ans = 0 0 2 3 6 8
S
mean/median/std/var
Média, mediana, desvio padrão e variância. Sintaxe típica:
12.0000
Parâmetros: Entrada
Saída
m: vetor
v: média/mediana/desvio padrão/variância dos valores no vetor
m: matriz
v: média/mediana/desvio padrão/variância por colunas
Exemplo: » m e a n ( [1 2 3 4 5]) ans = 3 » m e a n ( [1 2 ;3 4 ;5 6 ] ) ans = 4 3 » m e d i a n ([1 2;3 4;5 6]) ans = 4 3 » s t d ( [1 2 ;3 4 ;5 6 ] ) ans = 2 2 » v a r ([1 2 ;3 4 ;5 6] ) ans = 4 4
S
trapz
Integração discreta (trapezoidal). Sintaxe típica: >> R = trapz(m)
Parâmetros: Entrada
Saída
m: vetor
R: integral discreta do vetor
m: matriz
R: integral discreta por coluna
Exemplo: » a r e a ( [ 1 2 1 3 1]) » R=trapz([l 2 1 3 1]) R = 7
s
MATLAB® 7 ■Fundamentos
Diferenças Finitas ^
diff
Diferenças finitas. Sintaxe típica: »
D = diff(m)
Parâmetros: Entrada m: vetor m: matriz Exemplo:
Programação
Saída D: vetor de diferenças finitas: m(i)-m(i-1), i=2 a n D: vetor de diferenças finitas por coluna
s
gradient
Diferenças finitas parciais. Sintaxe típica: »
G = g r a d i e n t (m)
Parâmetros: Saída G: matriz de diferenças finitas parciais
Entrada m: matriz
Exemplo (arquivo cap3_gradient_exemplo.m): % Gerar superficie [X,Y]=meshgrid(- p i :0.2:pi,-pi:0.2:pi) ; Z = c o s ( X ) .*Y; % Calculo do gradiente % Derivadas parciais da curva [PX,PY]=gradient(Z,0.2, 0.2) ; % Visualizacao dos resultados s u b p l o t (2,1,1) s u r f (Z) t i t l e ('Su p e r f i c i e ’) s u b p l o t (2,1,2) c o n t o u r (Z) hold Current p lot held quiver(PX,PY) t i t l e (1G r a d i e n t e s ')
Gradientes
Superfície
I30 ■25
20
10 5
Correlação
s
corrcoef
Retorna matriz de coeficiente de correlação.
MATLAB® 7 - Fundamentos
Sintaxe típica: »
C = corrcoef(m)
Parâmetros: Entrada m: matriz
Saída C: matriz de coeficiente de correlação
Exemplo: » m=[-l 2 3; 4 -5 6; 7 8 -9] ; » corrcoef(m) ans = -0.6547 1.0000 0.3296 -0.9295 0.3296 1.0000 1.0000 -0.6547 -0.9295
■/
COV
Retorna matriz de covariância. Sintaxe típica: »
C = cov(in)
Parâmetros: Entrada m: matriz Exemplo: >> m = [-1 2 3; 4 -5 6; 7 8 -9]; » cov(m) ans = 8.6667 16.3333 -21.0000 8.6667 42.3333 -48.0000 -21.0000 -48.0000 63.0000
C onvolução e Filtros ■/ conv Retorna multiplicação de polinómios. Sintaxe típica: >> C = conv(p,q)
Saída C: matriz de covariância
Parâmetros: Entrada p, q: coeficientes de polinómios
Saída C: coeficientes do polinómio resultante da multiplicação
Exemplo: » p=[l 2 3]; % (x"'2 + 2*x + 3) » q=[l 1] ; % (x + 1) » C=conv(p,q) C = 1 3 5 3 % (x~3 + 3*x~2 + 5*x + 3)
s
deconv
Retorna divisão de polinómios. Sintaxe típica: »
D = deconv(p,q)
Parâmetros: Entrada p, q: coeficientes de polinómios
Saída D: coeficientes da divisão R: coeficientes do resto
Exemplo: » p=[i 2 3]; % (xA2 + 2 *x + 3) » q= [1 1] ; % (x + 1) % p = D*q + R » [D,R] =deconv(p,q) D = 1 1 % (x + 1) R = 0 2 % 2 0
S
filter
Aplica filtro nos valores fornecidos. Sintaxe típica: »
Y = filter(b,a,X)
MATLAB» 7 - Fundamentos
Parâmetros: Entrada b, a: coeficientes dos polinómios b/a X: valor a ser filtrado
Saída Y: valores depois da aplicação do filtro
Exemplo (arquivo cap3_filter_exemplo.m): % Gerar sinal c om frequencias 15 e 50 Mhz t=0:0.01:pi; s=sin(15*t)+sin(50*t); [b,a]=ellip(4,10,20,0.5); fs=filter(b,a,s); p l o t (t ,s ,t ,fs)
Transformada de Fourier v'
fft
Retorna transformada discreta de Fourier. Sintaxe típica: »
Y = fft (X)
Parâmetros: Entrada X: vetor de valores do sinal
Programação
Saída Y: valores da transformada
[ 153
Exemplo (arquivo cap3Jft_exemplo.m - retirado do Tutorial do MATLAB® 7) % cap3_fft_exemplo () echo on % Gerar sinal co m frequencias 50 e 120 Mhz t = 0:0.001:0.6; x = s i n ( 2 * pi*50*t)+sin(2*pi*120*t); ys = x + 2 * r a ndn(size(t)); s u b p l o t (1,2,1) pl o t ( 1 0 0 0 * t ( l : 5 0 ) ,y s (1:50)) t i t l e (1Sinal co m ruido') % Transformada de st Y = fft( y s ,512); % Conjugado de Yst Pyy = Y-* conj(Y)' / 512; s u b p l o t (1,2,2) f = 1000*(0:256)/512; p l o t (f ,P y y (1:257)) t i t l e (1F r e q u e n c i a 1)
✓
ifft
Retorna inversa da transformada discreta de Fourier. Sintaxe típica: »
X = ifft(Y)
Parâmetros: Entrada
Saíc,' ,
Y: valores da transformada
X: valores do sinal
Exemplo: % Apos executar cap3_ fft_exemplo: % ys, contem o sinal % Y, contem a transformada » ysi = ifft(Y); % Sinal obtido pela inversa » p l o t ([1:length ( y s ) ],y s ,[1:length(ysi)],y s i )
MATLAB ®7-Fundamentos
3.2.5. Polinómios S
poly
Dado um vetor R, retorna os coeficientes do polinómio cujas raízes são os elementos de R, Sintaxe típica: »
P = poly(R)
Parâmetros: Entrada R: vetor
Saída P: coeficientes do polinómio cujas raízes estão em R
Exemplo: » p l = p o l y ( [-1 1 2]) pl = % x~3 - 2*x~2 - x + 2, tem raizes -1,1,2
1 - 2 - 1
2
Observação: se a função poly recebe uma matriz, o retorno é o polinómio característico da matriz, conforme apresentado no item anterior.
Dmgramação
s
polyder
Dado um vetor P com coeficientes de um polinómio, retorna os coeficientes da derivada do polinómio. Sintaxe típica: »
PI = polyder(P)
Parâmetros: Entrada P: coeficientes do polinómio
Saída P1: coeficientes da derivada
Exemplo: » »
P=[l -2 -1 2] ; Pl=polyder(P) % derivada de x~3 - 2*x"2 - x + 2 = 3*x~2 - 4*x -1 PI = 3 -4 -1
■/ polyfit Aproximação por polinómio. Dados dois vetores X e Y, e um escalar g, retorna o polinómio de grau g que melhor aproxima os pontos dados por (X,Y). Sintaxe típica: »
P = polyfit(X,Y,g)
Parâmetros: Entrada X: vetor de coordenadas X dos pontos X: vetor de coordenadas Y dos pontos g: grau do polinómio
Saída P: coeficientes do polinómio de aproximação
?!
Exemplo (arquivo cap3_polyfit_exemplo.m) % Pontos (X,Y) x = l :10; y= [2 3 3.5 3.5 3 3 2.5 2.5 3 4 ] ; % Polinomio de grau 3 p3=polyfit(x,y,3) p3 = 0.0291 -0.4808 2.2780
I
0.1667
MATLAEP 7 - Fundamentos ;
s
polyint
Dado um vetor P contendo coeficientes de um poiinômio, retorna os coeficientes da integrai do polinómio. Sintaxe típica: »
PI = polyint(P)
Parâmetros: Entrada P: coeficientes do polinómio
Saída P1: coeficientes da integral
Exemplo: » »
P = [3 -4 -1]; Pl=polint(P) % x^3 - 2*x/'2 - x
1 S
- 2 - 1
0
polyval
Avalia polinómio. Dado um vetor P, que contém coeficientes de um polinómio, e um vetor X de valores, avalia polinómio para cada valor fornecido. Sintaxe típica: »
Y = polyval(P,X)
Parâmetros: Entrada P: coeficientes do polinómio X: vetor de coordenadas X
Saída Y: valores do polinómio calculados em cada valor em X
Exemplo (arquivo cap3_polyval_exemplo.m) % Pontos
(X,Y)
X = 1 :10;
y = [2 3 3.5 3.5 3 3 2.5 2.5 3 4 ] ; % Polinomio de grau 3 p3=polyfit(x,y,3); % Valores p ara avaliacao do polinomio x n = l i n s p a c e (1,10,20); % Avaliacao do polinomio y n = p o l y v a l ( p 3 ,x n ) ; % Visualizacao dos resultados p l o t ( x , y , 1 : 1,x n , y n , 1r 1) l e g e n d (1Pontos 1, 1Polinomio *)
|Programação
(157
Dado um vetor P com coeficientes de um polinómio, retorna as raízes. Sintaxe típica: »
1
R = r o o t s (P)
Parâmetros: Entrada P: vetor de coeficientes do polinómio
Saída R: raízes do polinómio
1
Exemplo: »
roots([l -2 -1 2])
-1.0000 2.0000
1.0000
3.2.6. Interpolação S
griddata
Interpolação de superfície por 'gradeamento' (ajuste de pontos no espaço). Dadas as matrizes (X, Y, Z) de pontos no espaço e (XI, Yl) pontos de interpolação, e um método de interpolação, retorna uma matriz Z1 com valores que formam a superfície (XI, Yl, Zl)
..............
MATLAEP 7 - Fundamentos
que melhor aproxima os pontos no espaço dados por (X, Y, Z), de acordo com o método solicitado. Sintaxe típica: »
ZI = g r i d d a t a (X,Y,Z,X I ,YI , m e t o d o ) ;
Parâmetros: Entrada X, Y, Z: matrizes tipo meshgrid XI, YI: matrizes tipo meshgrid metodo: 'linear', 'cubic', 'nearest', 'v4'
Saída ZI: coordenada Z para todos os pontos definidos por (XI,YI)
Exemplo (arquivo cap3_griddata_exemplo.m) % Pontos no espaco [X,Y]=meshgrid([1:5],[1:5]) ; Z = r a n d n (5); % Pontos de interpolacao [XI,YI]=meshgrid([1:0.2:5],[1:0.2:5]); % Superficie de interpolacao Z I = g r iddata(X,Y,Z,XI,YI,'cubic'); % Visualizacao dos resultados s u b p l o t (1,2,1) s u r f (X,Y,Z) t i t l e (1Pontos do espaco') s u b p l o t (1,2,2) s u r f (XI,YI,ZI) t i t l e ('Superfice i n t erpoladora')
Pont os do sspaco
S
Superlice interpoladora
interpl
Interpolação de pontos (ajuste de pontos no plano). Dados os vetores (X, Y) de pontos no espaço e XI valores de interpolação, e um método de interpolação, retorna um vetor Y1 com valores que formam a curva (XI, YI) que melhor aproxima os pontos no plano dados por (X, Y), de acordo com o método solicitado.
Programação
Sintaxe típica: »
Y = interpl(X,Y,XI,metodo) ;
Parâmetros: Entrada X, Y: vetores de coordenadas XI: vetor com valores de interpolação metodo: ‘linear1, 'cubic', 'nearest1, 'spline', 'pchip', 'võcubic'
Saída YI: valores interpolados para todos os elementos de XI
Exemplo (arquivo cap3Jnterp1_exemplo.m) % % Pontos no plano x = l :10; y = r a n d ( l ,10); % Pontos de interpolacao x i = l i n s p a c e (1,10,50); % Curva de interpolacao yi = i n t e r p l ( x , y , x i ,'c u b i c '); % Visualizacao dos resultados p l o t ( x , y , 1:',x i ,y i ,'r ') l e g e n d ( 1Pontos 1, ’Interpolacao C u b i c a ’,0)
S
interp2
Interpolação de superfície (ajuste de pontos no espaço). Dadas as matrizes (X, Y, Z) de pontos no espaço e (XI, YI) pontos de interpolação, e um método de interpolação, retorna uma matriz Z1 com valores que formam a superfície (XI, YI, Zl) que melhor aproxima os pontos no espaço dados por (X, Y, Z), de acordo com o método solicitado.
MATLAB ®7-Fundamentos
Sintaxe típica: »
ZI = interp2(X,Y,Z,XI,YI,metodo) ;
Parâmetros: Entrada X, Y, Z: matrizes tipo meshgrid XI, Yl: matrizes tipo meshgrid metodo: linear', 'cubic1, 'nearest', 'v4'
Saída ZI: coordenada Z calculada para todos os pontos definidos por (XI,Yl)
Exemplo (arquivo cap3Jnterp2_exemplo.m) % Pontos no espaco [X,Y] = m e s h g r i d ( [1:5], [1:5]); Z=cos(pi+randn (5)); % Pontos de interpolacao [XI,Y I ] = m e s h g r i d ( [1: 0.2 :5], [1:0 .2 :5]); % Superficie de interpolacao Z I l =griddata(X,Y,Z,XI,Y X , 'cubic'); ZI2=interp2(X,Y,Z,XI,Y I , 'cubic'); % Visualizacao dos resultados s u b p l o t (1,2,1) p l o t 3 ( X , Y , Z , 'o') hold Current plot held su r f ( X I , Y I ,Z I 1 ) t i t l e (1Superfice G RID D A T A ' ) s u b p l o t (1,2,2) plot3(X,Y , Z , 'o') hold Current plot held s u r f ( X I ,Y I ,Z I 2 ) t i t l e ('Superfice I N T E R P 2 ')
Observação: na figura obtida no exemplo é possível observar que as funções griddata e interp2 trabalham com os mesmos parâmetros de entrada mas processam interpolações diferentes.
Programação
^
interpft
Interpolação de pontos no plano com método FFT (Transformada Rápida de Fourier). Dado vetor X de valores no plano e escalar n, retorna vetor Y com n valores que interpolam os valores dados em X. Sintaxe típica: »
Y = in t e r p ft(X,n);
Parâmetros: Entrada X: vetor de valores n: número de valores a serem calculados
Saída Y: valores interpolados por FFT
Exemplo (arquivo cap3_interpft_exemplo.m) % Pontos no plano x = r a n d (1,20); % 100 pontos de interpolacao y = interpft(x,100); % Visualizacao dos resultados p l o t (linspace(1,100,20), x, l i n s p a c e (1,100,100),y) l e g e n d (1P o n t o s ',11 n t e r p f t ',0)
Fie
íd t
View laser:
!co!s üeíktoc Vender«
heb
Q « a s ;> ' « rç n ® '« QPi
■s
o
ppvaf
Avalia spline. Dado um struct com informações da spiine (retorna da função spline) e um vetor X, retorna um vetor Y que contém os valores da spline calculada para todos os valores em X.
MATLAEP 7- Fundamentos
Sintaxe típica: »
Y = ppval(S,X);
Parâmetros: Entrada S: struct da spline X: vetor de valores
Saída Y: valores da spline
Exemplo (arquivo cap3_spline_exemplo.m) % Pontos no plano x = l :10; y = r a n d ( l ,10); % Calculo dos coeficientes da spline S=spline(x,y); % Pontos de interpolacao x s = l i n s p a c e (1,10,100) ; % Calculo dos valores da spline ys=ppval(S,xs); % Visualizacao dos resultados p l o t (x,y,':',x s ,y s , 'r 1) l e g e n d (1P o n t o s ', 'Spline 1,0)
I
■
/
sp lin e
Interpolação de pontos no plano com método de spline. Dados os vetores (X,Y) de valores no plano e escalar n, retorna um struct contendo os polinómios de grau 3 que compõem a curva spline de aproximação. Sintaxe típica: »
S = s p l i n e (X,Y);
Programação
Parâmetros: Entrada X,Y : vetores com dois pontos
Saída S: struct com as informações da spline
Exemplo: » » »
x=l:10; y=rand(l ,10) ; s=spline(x,y)
form: breaks : coefs : pieces : order: dim: » s.coefs ans = 0.0523 0.0523 -0.3502 0.4610 -0.2375 -0.2539 0.4357 -0.0668 -0.0668
'pp' [1 2 3 4 5 6 7 8 9 10] [9x4 double] 9 4 1 % Coeficientes dos nove polinomios de grau 3 que % compoem a curva spline 0.0384 -0.4983 0.4514 0.1954 -0.2644 0.0439 0.3524 0.2833 0.0272 -0.6983 -0.0625 0.3127 0.6847 -0.0761 0.0129 -0.0278 0.5808 0.3840 -0.7895 -0.2365 0.6831 0.5176 -0.5084 0.0928 0.3173 0.3266 0.0353
3.2.8. Conversão de Sistemas de Coordenadas Função
Conversão de coordenada
cart2sph(x,y,z)
cartesiana para esférica
cart2pol(x,y)
cartesiana para polar
pol2cart(p,r) % p: angulo % r: distancia
poiar para cartesiana
sph2cart(t,p,r) % t : angulo e m X Y % p: angulo de XY % r: distancia
Exemplo » [t,p,r]=cart2sph(1,1,1) t = % angulo no plano XY 0.7854 p = % angulo com plano XY 0.6155 r = % distancia 1.7321 » [p,r]=cart2pol(1,1) p = % angulo 0.7854 r = % distancia 1.4142 » [x,y]=pol2cart(p,r) x =
1.0000 y = i » [x,y,z]=sph2cart(t,p,r) x = 1
esférica para cartesiana
Y
=
1.0000
z =
1.0000
Exemplo (arquivo cap3_cart2pol_exemplo.m): % Converte coordenada cartesiana p ara polar x = - p i :0.1:p i ; [p,r]=cart2pol( cos(x),s in(x)); polar(p,r) s u b p l o t (1,2,1) plot (cos (x) ,sin(x) ) t i t l e ('Coord.c a r t e s i a n a ') s u b p l o t (1,2,2) polar(p,r) t i t l e ('Coord.p o l a r ')
3.2.8. Métodos Numéricos Não-lineares Equações Diferenciais Ordinárias Solvers de equações diferenciais do tipo y' = f(t,y) disponíveis no MATLAB®:
I
♦
odel 13: solver de equações diferenciais non-stiff de ordem variável;
♦
ode15s: solver de equações diferenciais stiff de ordem variável;
♦
ode23: solver de equações diferenciais non-stiff de ordem baixa;
♦ ode23s: solver de equações diferenciais stiff de ordem baixa; Programação ♦
ode23t: solver de equações diferenciais de ordem baixa (regra trapezoidal);
Parâmetros: Entrada
Saída
■funcao': m-file que implementa a equação
t: vetor de tempo y: resultados da equação a cada instante
[Tinicial Tfinal]: tempos inicial e final Condlnic: vetor de condições iniciais
Exemplo (no arquivo cap3_ode45_exemp!o.m): modelar um 'bungie jum p' de forma bem simplificada, considerando apenas as forças indicadas no esquema:
Elasticidade k*y
Tração b*y’ +
f m ^
Peso m ‘ g
y” =g - k/m y - b/m * y'
em que: ♦
y: deslocamento em relação ao ponto de fixação da corda;
♦
m: massa do corpo;
♦
g: aceleração da gravidade;
♦
k: constante de elasticidade da corda, dependente do deslocamento (y);
♦
b: constante de tração, dependente da velocidade (y1);
Inicialmente, consideramos: Variável g (aceleração da gravidade) m (massa do corpo) k (constante de elasticidade da corda) b (constante de tração) Tinicial (tempo inicial) Tfinal (tempo final) Condlnic (y e y' iniciais)
166 )
Valor 9.8 60 0.1 1.0 0 1000 [0 0]
MATLAB®7- Fundamentos j
A função cap3_fbungie1 codifica a equação diferencial: edit: cap3 _ f b u ngiel.m function yp = cap3_fbungiel (t,y) % y (1) 1 = y (2) % y(2) ' = g - (k/m) * y (1) - (b/m) * y(2) g = 9.8; % aceleracao da gravidade k= 0.1; % fator de elasticidade b = 1.0; % fator de tracao m= 6 0; % massa K = k/m; B = b/m; yp= [y (2) g - K * y(l) - B*y(2) ] ;
A função cap3_ode45_exemplo1 chama o solver ode45 para função cap3_fbungie1. edit: cap3_ode45_exemplol.m_________________________ % cap3_ode45_exemplol () function cap3_ode45_exemplol ( ) Tinicial=0; Tfinal=1000;
Condlnic=[0 0] ; [t,y]=ode45('cap3_fbungiel1,[Tinicial Tfinal],Condlnic); subplot(2,1,1) plot(t,-y(:,1)); title(1Deslocamento 1) subplot(2,1,2) p l o t (t,y(:,2));
title('Velocidade')
De acordo com os retornos armazenados da função cap3_fbungie1, a função ode45 retorna em y uma matriz com duas colunas:
♦ y(:.1): 1ã coluna armazena o deslocamento do corpo; ♦
y(:,2): 2- coluna armazena a sua velocidade. »
cap3_ode45_exemplol
Programação
167
Os solvers também aceitam rotinas com passagem de parâmetros. Nesta segunda versão, a função cap3_ode45_exemplo2 recebe três parâmetros de entrada, que são repassados para o solver ode45 com para função cap3_fbungie2: ♦
m: massa do corpo;
♦
k: constante de elasticidade da corda, dependente do deslocamento (y);
♦
b: constante de tração, dependente da velocidade (y1).
A função cap3_fbungie2 codifica a equação diferencial com parâmetros: e d i t : cap3_fbungie2.m________________________ function yp = cap3_fbungie2(t,y , flag,m,k,b) % y (1)' = y(2) % y (2) ' = g - (k/m) * y(l) - (b/m) * y (2) g = 9.8; % aceleracao da gravidade % k = fator de elasticidade % b = fator de tracao % m = massa K = k/m; B = b/m; yp=[y(2) g - K * y(l) - B * y (2)];
Observação: o parâmetro flag é necessário para manter a compatibilidade de chamada de função.__________________ A função cap3_ode45_exemplo2 chama o solver ode45 para função cap3_fbungie2, com os parâmetros m, k e b. edit: cap3_ode45_exemplo2.m function cap3_ode45_exemplo2(m,k,b) Tinicial=0; Tfinal=1000; Condlnic=[0 0]; tt,y ] = o d e 4 5 ('c a p 3 _ f b u n g i e 2 1, [Tinicial T f i n a l ],C o n d l n i c , [ , m,k,b); s u b p l o t (2,1,1) p l o t (t ,- y ( :,1)); t i t l e ('D e s l o c a m e n t o 1) s u b p l o t (2,1,2) p l o t ( t , y (:,2)); t i t l e ('Velocidade')
Chamamos cap3_ode45_exemplo2 com: Variável m (massa do corpo) k (constante de elasticidade da corda) b (constante de tração) »
cap3_ode45_exemplo2
(80,0.2,0.5);.
Valor 80 0.2 0.5
Este é o resultado para os novos parâmetros:
Otimização
s
fminbnd
Dada uma função f(x) e um intervalo, retorna x tal que f(x) é mínimo no intervalo. Sintaxe típica: »
[xmin,fxmin]
= f m i n b n d (1f u n c a o x O ,x l )
Parâmetros: Entrada
Saída
'funcao': implementa f(x)
xmin: valor para o qual f(x) é mínimo
x0,x1: intervalo
fxmin: valor mínimo def(x)
Exemplo, função f(x) = x+sin(2*x)+cos(4*x) (arquivo cap3_funcao1 .m): edit: cap3_funcaol.m________ % funcao cap3_funcaol function Y = cap3_funcaol(x) y = x+sin(2*x) + c o s (4*x);
Chamamos a função fminbnd para obter o valor mínimo da função cap3_funcao1 nos intervalos de [0,1.5] e [1.5, 3] (arquivo cap3_fminbnd_exemplo.m):
Programação
( 169
edit: cap3_fminbnd_exemplo.m % cap3_fminbnd_exemplo () function ca p 3 _ f m i n b n d_exemplo( ) % x l , f x l : minimo no intervalo [0,1.5] [xl,fxl]=fminbnd('c a p 3 _ f u n c a o l ’,0,1.5); % x2, f x 2 : minimo no intervalo [1.5,3] [x2,f x 2 ] = f minbnd(1c a p 3 _ f u n c a o l 1,1.5,3); % Visualizacao do resultado x = 0 :0.1:pi; plot(x,cap3 _ f u n c a o l ( x ), ... % Funcao xl,fxl,'r*', ... % minimo entre [0,1 .5] x 2 ,f x 2 ,'r o ') % minimo entre [1.5 ,3] l e g e n d ('F u n c a o ',... 'Minimo entre [ 0 , 1 . 5 ] 'Minimo entre [1.5,3]•,0)
s
fzero
Dada uma função f(x) e um xO inicial, retorna x tal que f(x) = 0. Sintaxe típica: >> xO = f z e r o (1funcao',xinic)
Parâmetros: Entrada
Saída
'funcao1: implementa f(x)
xO: valor tal que f(xO) = 0
xinic: valor inicial de x
Exemplo, função f(x) = x-4*sin(x)+cos(x) (arquivo cap3_funcao2.m): edit: cap3_funcao2.m % funcao cap3_funcao2 function y = cap3_funcao2(x) y = x-4*si n ( x ) + c o s ( x );
MATLAEP 7-Fundamentos
Chamamos a função fzero para obter o x tal que cap3_funcao2 = 0, iniciando a busca a partir de 0 e a partir de 2 (arquivo cap3_fzero_exemplo.m): edit:
cap3_fzero_exemplo.m
% cap3_fzero_exemplo () function cap3 _ f z e ro_exemplo( % x l : busca a partir de 0 xl = f z e r o ('c a p 3 _ f u n c a o 2 ',0) ; % x 2 : busca a partir de 2 x l = f z e r o ('c a p 3 _ f u n c a o 2 1,2); % Visualizacao do resultado x = 0 :0.1:2 * p i ; p l o t (x,cap3_funcao2(x), ... % Funcao x l ,0,'r * ', ... % busca a partir de 0 x 2 , 0 , 1r o ') % busca a partir de 2 l e g e n d (1F u n c a o ',... 'Busca a partir de 0 ' , 'Busca a partir de 2',0)
S
optimset
Configura parâmetro de funções de otimização. Sintaxe típica: »
optim = optimset
( 'Param', Valor)
Parâmetros: Entrada
Saída
'Param': parâmetro
optim: estrutura de dados que contém os parâmetros de otimização
Valor: valor a ser configurado
Programação
Exemplo: » o p t i o n = o p t i m s e t (1M a x l t e r 1,10) option = Display [] MaxFunEvals [] Maxlter 10 TolXInteger TypicalX
[]
[]
A função optimset sem parâmetros retorna a estrutura de dados. Esta forma é muito utilizada com as funções fzero e fminbnd. fminbnd e fzero também aceitam funções com passagem de parâmetros. Sintaxe: » [xmin, fxmin] = f m i n b n d ('funcao',xO,xl,optimset,p l , p 2 ,...) >> xO = f z e r o ('funcao',xinic,optimset,pl,p2,...)
Onde p1 ,p2,..., são parâmetros de entrada da função a ser otimizada. Exemplo, função f(x) = x-a*sin(x)+cos(b*x) (arquivo cap3_funcao3.m): edit: cap3_funcao3.m % funcao cap3_funcao3 function y = cap3_funcao3(x,a,b) Y = x-a*sin(x) + c o s ( b * x);
Execução: usar os parâmetros a=2 e » » » de » de »
b-4
x = 0 :0.01:2; y=cap3_funcao3(x,2,4); x z e r o l = f z e r o (1c a p 3 _ f u n c a o 3 1,0,optimset,2,4); % Buscar zero a partir 0 xzero2 = f z e r o (1c a p 3 _ f u n c a o 3 1,1,optimset,2,4) ; % Buscar zero a partir 1 p l o t (x,y,xzerol, 0 , ’r o ’,xzero2, 0 , 1b * 1)
s
optimget
Obtém os valores configurados nos parâmetros de funções de otimização. Sintaxe típica: »
valor = optimget
( option,
'Param')
Parâmetros: Entrada option: estrutura que contém os parâmetros 'Param': parâmetro
Saída Valor: valor do parâmetro
Exemplo: » o p t i m g e t (option,'Maxiter1) ans = 10
Integração Num érica •/
quad/q uadl
Dada uma função f(x) e um intervalo, retorna a integral numérica f(x) no intervalo. Sintaxe típica: »
q
=
q u a d ( 1f u n c a o ' ,x0,x l )
/
quadl
1f u n c a o 1,x 0 ,xl
)
Parâmetros: Entrada 'funcao': implementa f(x) x0,x1: intervalo
Saída q: integral numérica
Exemplo, função f(x) = x+sin(2*x)+cos(4*x) (arquivo cap3_funcao1 .m). »
g = q u a d (’c a p 3 _ f u n c a o l 1,0,2)
% integral de f(x) entre 0 e 2
q = 3.0742
Para visualizar a área calculada (arquivo cap3_quad_exemplo.m): x = 0 :0.1:2; x = - l : 0.05:3; x q = 0 :0.05 :2 ; y=cap3 _ f u n c a o l ( x ) ; yq=cap3_funcaol (xq) ; p l o t (x,y) a r e a (xq,yq)
Programação
- /fig u r e 1 File
E d* ; View
Insert Tools Oeskiop Window
D^HiU
Help
O®:'* O S Io O
Observação: a função quad utiliza um método de ordem baixa, e a quadl, de ordem alta.
S
dblquad
Dada uma função f(x,y) e um intervalo, retorna a integral numérica dupla de f(x,y) no intervalo. Sintaxe típica: »
d = d b l q u a d ('f u n c a o x m i n , x m a x , y m i n , y m a x )
________________________
Parâmetros: Entrada 'funcao1: implementa f(x,y) xmin,xmax,ymin,ymax: intervalo
Saída d: integral numérica dupla
Exemplo, função f(x,y) = cos(x)+cos(y) (arquivo cap3_funcao3.m): edit: cap3_funcao3.m % funcao cap3_funcao3 function z = cap3_funcao2(x,y) z = cos (x) H-cos (y) ;
Integral de f(x,y) entre [-1,-1] e [1,1]
______
_____
— ____
—
» d = d b l q u a d (1c a p 3 _ f u n c a o 3 1,-1,1,-1,1) d = 6.7318
MATLAB® 7-Fundamentos
d=6.7318 é o volume objeto no interior da superfície exibida na figura. echo on % cap3_dblquad_exemplo.m d = d b l q u a d ( 'c a p 3 _ f uncao3',-1,1,-1,1) x= - 2 :0 .1: 2 ; y = - 2 :0.1:2; [X,Y]=meshgrid(x,y); x d = - l :0.1:1; y d = -1:0.1:1; [XD,Y D ] =meshgrid ( xd,yd); Z = c o s(X)+cos(Y); Z D = C O S ( X D ) + C O S (YD); s u r f (X,Y,Z) a l p h a (0.4) hold w a t e r f a l l (XD,YD,ZD)
3.2.9. Matrizes Esparsas Matrizes Esparsas Elementares
s
spdiags
Cria matriz esparsa de banda a partir de todas as diagonais não-nulas da matriz dada. Sintaxe típica: »
S = spdiags(a)
Parâmetros: Entrada a: matriz
Saída S: matriz esparsa diagonal
Exemplo: » a = [1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 % cada coluna de S e ' uma diagonal de a » S=spdiags(a) S = 7 4 1 0 0 0 8 2 5 0 0 0 9 6 3
Programação
v'
speye
Cria matriz esparsa de identidade. Sintaxe típica: »
S = speye(n)
/
speye(n,m)
Parâmetros: Entrada n,m: dimensões
Saída S: matriz esparsa de identidade
Exemplo: » » »
S = s p e y e (100); a=eye(100); whos Name Size S 100x100 a 100x100
S
sprand/sprandn
% Observe a diferenca de tamanho Bytes Class 1604 double array (sparse) 80000 double array
Cria matriz esparsa com números aleatórios (distribuição uniforme/distribuição normal). Sintaxe típica: »
S = sprand(n,m,D)
/ sprandn(n,m,D)
::: Parâmetros: Entrada n,m: dimensões D: densidade entre 0 e 1
Saida S: matriz esparsa de números aleatórios
Exemplo: »
S = s p r a n d ( 1 0 0 ,200,0.0001)
s = (85,45) (27,59)
0.2832 0.2259
% matriz 100x200 com apenas 2 elementos
Observação: a densidade D indica, aproximadamente, a proporção entre números aleatórios gerados e o total de elementos da matriz esparsa.
■S full Converte matriz esparsa em matriz comum.
MATLAB® 7 - Fundamentos
Sintaxe típica: »
a = f u l l (S)
Parâmetros: Entrada S: matriz esparsa
Saída a: matriz comum
Exemplo: » S=sprand(100,200,0.OOOl) OJ _ i — 0.2832 % matriz 100x200 com apenas 2 elementos (85,45) (27,59) 0.2259 >> a=full S ) ; % Converte S para matriz comum » whos % Observe a diferença de tamanho Name Size Bytes Class S 100x200 828 double array (sparse) a 100x200 160000 double array
S
sparse
Converte matriz comum em matriz esparsa. Sintaxe típica: »
S = s p a r s e (a)
Parâmetros: Entrada a: matriz comum
Saída S: matriz esparsa
Exemplo: » » »
a=eye(500); S = s p arse(a); whos Name Size S 500x500 a 500x500
Bytes 8004 2000000
Class double array (sparse) double array>>
Manipulação de Matrizes Esparsas
s
issparse
Verifica se a matriz é esparsa.
Programação
et
Sintaxe típica: »
issparse(a)
Parâmetros: Entrada
Saída
a: matriz
true se matriz for esparsa
Exemplo:
S
nnz
Retorna quantos elementos diferentes de zero a matriz esparsa contém. Sintaxe típica: »
n = nnz(S)
Parâmetros: Entrada
Saída
S: matriz esparsa
n: número de elementos diferentes de zero
Exemplo: » S = s p r a n d (100,100,0.1); » nnz(S) ans = 945
s
nonzeros
Retorna um vetor comum com todos os elementos diferentes de zero da matriz esparsa. Sintaxe típica: »
v n = nonzeros(S)
178 )
MATLAEP 7 - Fundamentos
Parâmetros: Entrada
Saída
S: matriz esparsa
vn: vetor de elementos diferentes de zero
Exemplo: » S = s p r a n d (100,200,0.0001); » nnz(S) ans =
2 » V=nonzeros(S) V = 0.6519 0.7082
spfun
S
Executa a função para os elementos diferentes de zero da matriz esparsa. Sintaxe típica: »
s p f u n (funcao,S)
Parâmetros: Entrada
Saída
funcao: função a ser executada
matriz resultado
S: matriz esparsa
Exemplo: » S = s p r a n d (1000,2000,0.001); » nnz(S) ans =
2000 >> tic;f= e x p ( S ) ;toc Elapsed time is 0.320000 seconds. » t ic;f=spfun(@exp,S);toc % Executa em menos tempo Elapsed time is 0.050000 seconds
S
spones
Substitui os elementos não-nulos por 1's. Sintaxe típica:
Parâmetros: Entrada
Saída
S: matriz esparsa
S1: matriz com as substituições
Exemplo: » S = s p r a n d n (100,200,0.0001) S = (28.2) -0.4326 (91.108) -1.6656 » spones(S) ans = (28.2) 1 (91.108) 1
✓
spy
Gera visualização gráfica dos elementos não-nulos da matriz esparsa. Sintaxe típica: »
spy(S)
Parâmetros: Entrada S: matriz esparsa
Exemplo: » » >> » »
s p y (sprand(100,100,0.01)) t i t l e ('Densidade 0.01') s u b p l o t (1,2,2) s p y ( s p r a n d (100,100,0.001)' t i t l e (1Densidade 0.001')
Saída
3.3. Programação Neste tópico, listamos os principais elementos e recursos referentes à linguagem de programação do MATLAB® 7.
3.3.1. Estrutura e Tratamento de Dados Classes
s
class
Retorna a classe do dado: logical, char, double, single, int8, int16, int32, etc. Sintaxe típica: c = c l a s s (m)
Parâmetros: Entrada m: variável
Saída c: classe
Exemplo: » n=pi; » c l a s s (n) ans = double
Classe logical char double single int8 uint8 int16 uint16 int32 uint32 int64 uint64 cell struct Drogramação
Tipo de Dado lógico (0 ou 1) / (verdadeiro ou falso) alfanumérico precisão dupia precisão simples inteiro 8 c/ sinal inteiro 8 s/ sinal inteiro 16 c/sinal inteiro 16 s/ sinal inteiro 32 c/ sinal inteiro 32 s/ sinal inteiro 64 c/ sinal inteiro 64 s/ sinal cellarray struct
Bytes 1 1 8 4 1 1 2 2 4 4 8 8 -
-
Testes lógicos com classes: Função
Testa se
isa
é da classe dada
iscell
é cell array
isequal
é igual
isfield
é campo de struct
isfloat
é número com ponto flutuante
isinteger
é número inteiro
iskeyword
é palavra reservada da linguagem MATLAB®
islogical
é variável lógica
isnumeric
é numérico
isreal
é número real
isscalar
é escalar
istruct
é struct
isvarname
pode ser nome de variável
isvector
é vetor
Exemplo » i s a ( p i , 'd o u b l e ') ans = 1 » i s c e l l ({1 2 3}) ans = • 1 » i s e q u a l ([1 0;0 l],eye(2)) ans = 1 » s = s t r u c t ('I d ',{1D ' 1Z ’}); » isfield(s, 1I d 1) ans = 1 » isfloat(pi) ans = 1 » isinteger(int8(pi)) ans = 1 » i s k e y w o r d ('function') ans = 1 » i s l o g i c a l (pi > 0) ans = 1 » isnumeric(3+i) ans = 1 » isreal(3+i) ans = 0 » isscalar(pi) ans = 1 » s = s t r u c t ('I d ',{'D ' 'Z '}); » isstruct(s) ans = 1 » i s v a r n a m e ('c a p 3 1) ans = 1 » i s v a r n a m e ('1231) ans = 0 » isve c t o r ( e y e (2)) ans = 0
Cadeia de Caracteres
(String,Char)
Testes lógicos com cadeia de caracteres:
y
Exemplo
Função
Testa se
iscellstr
é cellarray de strings
ischar
é cadeia de caracteres
isletter
é letra
isspace
é espaço em branco
strcmp strncmp
uma cadeia é igual a outra
strcmpi strncmpi
uma cadeia é igual a outra (sem diferenciar letras minúsculas de maiúsculas)
>> i s c e l l s t r ('a b c ') ans = 0 » i s c h a r ('abc 1) ans = 1 » i s l e t t e r ('a b c l 2 1) ans = 1 1 1 0 0 >> i s s p a c e (112 34') ans = 0 0 1 0 0 >> s l = 'C a d e i a l 1; >> s 2 = 'C a d e i a 2 1; » s trcmp(sl,s 2 ) ans = 0 » s l = 'C a r a c t e r e '; » s 2 = 'c a r a c t e r e '; >> s t r c m p i (s l ,s2 ) ans = 1
blanks
Cria cadeia de espaços em branco. Sintaxe típica: str = blanks(n)
Parâmetros: Entrada
Saída
n: números de espaços
str: cadeia de espaços em branco
Exemplo: » str=['123' str = 123 45
•/
b l a n k s (2)
'45']
char
Converte variável numérica em cadeia de caracteres (código ASCII).
Sintaxe típica: str = char(m)
Parâmetros: Saída str: cadeia de caracteres
Entrada m: variável numérica Exemplo: » c h a r ([65 66 67]) ans = ABC
■/ cellstr Cria um cellarray a partir de uma matriz de cadeia de caracteres. Sintaxe típica: cel = cellstr(str)
Parâmetros: Saída cel: cell array
Entrada str: matriz tipo char Exemplo: » s t r = [ '12345'; 1A B C D E '; » cel=cellstr(str) cel = ■ '12345' 'A B C D E ' 1X X X y y ' » whos Name Size cel 3x1 str 3x5
s
'XXXyy'],
Bytes 210 30
Class cell array char array
datestr
Converte data em número real para cadeia de caracteres. Sintaxe típica: str = datestr(data)
Parâmetros: Entrada data: número real
Saída str: data em cadeia de caracteres
Exemplo: » data=now data = 7.3211e+005 » datestr(data) ans = 12-Jun-2004 03:16:17_________________________________
s
deblank
Elimina espaço em branco de final de cadeia de caracteres. Sintaxe típica: str = deblank(m)
Parâmetros: Entrada m: string ou cell array
Saída str: m sem brancos no final
Exemplo: ' '2 brancos no final » cel = { '3 brancos no final cel = [1x21 char] [1x20 char] » deblank(cel) ans = '2 brancos no f i n a l 1 '3 brancos no f i n a l '
S
eval
Executa as instruções contidas em uma cadeia de caracteres. Sintaxe típica: eval(str)
Parâmetros: Entrada str: cadeia de caracteres
Saída resultado da execução
Exemplo: » e v a l ('s i n ( p i / 2 ) ') ans =
1 •/
low er/upp er
Converte cadeia de caracteres para letras minúsculas / maiúsculas. Sintaxe típica: str = lower(m)
/ upper(m)
Parâmetros: Entrada m: string ou cell array
Saída str: m convertida
Exemplo: » str='Cadeia de Caracteres'; » l o w e r (str) ans = cadeia de caracteres » u p p e r (str) ans = CADEIA DE CARACTERES
S
sprintf
Gera cadeia de'caracteres a partir de dado numérico formatado. Sintaxe típica: str = s p r i n t f (fo r m a t o ,a,...)
Parâmetros: Entrada formato: %f, %i a v a riá v e is
Saída str: cadeia de caracteres
Exemplo: » media=0.56; » dp=0.04; » s t r = s p r i n t f ('Media: %2.3f e Desvio P a d r a o : % 2 .3 f ',media,dp) str = Media: 0.560 e Desvio Padrao: 0.040
MATLAEP 7 - Fundamentos
S
sscanf
Lê dado numérico formatado em uma cadeia de caracteres. Sintaxe típica: m = sscanf(str,formato)
Parâmetros: Entrada str: cadeia de caracteres formato: %f, %i
Saída m: valores lidos
Exemplo: » str=' 0 . 5 6 0.04 ' ; » v = s s c a n f ( s t r , '%f % f ') v =
0.5600 0.0400
s
strcat
Concatena cadeias de caracteres. Sintaxe típica: str = strcat(strl,
str2,
...)
Parâmetros: Entrada strl, str2,...: cadeias de caracteres
Saída str: cadeia concatenada
Exemplo: » st rc at(' ans =
1234' ,
1234A B C D E F *
* *
S
' A B C D E F',
• * ** i j
strjust
Alinha texto na cadeia de caracteres. Sintaxe típica:
Parâmetros: Entrada str: cadeia de caracteres tipo: 'right', 'left', 'center'
Saída str1: cadeia com texto alinhado
Exemplo: » str=' Texto » strjust(str, 'r i g h t ') ans = Texto » strjust(str, ■left') ans = Texto » strjust(str, 1c e n t e r ') ans = Texto
S
';
strread
Lê dados numéricos e alfanuméricos formatados em uma cadeia de caracteres. Sintaxe típica: I [Txt, Num]
= strread(str,formato)
Parâmetros: Entrada str: cadeia de caracteres formato: % f... %s
Saída Txt: dados alfanuméricos Num: dados numéricos
Exemplo: » str='Media 0.9, Variancia 0.2'; » [Txt,Num]=strread(str,1%s % f , 1) Txt = 'Media' 'Variancia' Num = 0.9000 0.2000
s
strrep
Executa substituição de subcadeia de caracteres. Sintaxe típica:
Parâmetros: Entrada str: cadeia de caracteres s1, s2: substituir s1 pors2
Saída s trl: cadeia com substituição realizada
Exemplo: » s t r = 'ABC 123 ABC 453 1; » s t r l = s t r r e p (s t r , ABC 1, 'X Y Z ') strl = XYZ 123 XYZ 453
s
strtrim
Elimina espaços em branco do início e do fim da cadeia. Sintaxe típica: strl = strtrim(str)
Parâmetros: Entrada str: cadeias de caracteres
Saída s trl: cadeia sem brancos nos extremos
Exemplo: » str=’ Texto » strtrim str) ans = Texto
y
';
strvcat
Concatena cadeia de caracteres de comprimentos diferentes na vertical, completando as dimensões com branco. Sintaxe típica: strl = s t r v c a t ( s l,s2,..)
Parâmetros: Entrada s1 ,s2,...: cadeias de caracteres
Programação
Saída s trl: cadeia concatenada na vertical
Exemplo: » s t r = s t r v c a t (1abc 1 '123456 ’, ’X Y 1) str = abc 123456 XY » whos str Bytes Name Size 36 str 3x6
S
Class char array
strfind
Localiza subcadeias em uma cadeia de caracteres. Sintaxe típica: k = strfind{m,padrao)
Parâmetros: Saída k: índices das ocorrências
Entrada m: cell array ou string Exemplo: » s t r = 1aquilo, aquele, » strfind(str, 1a q u 1) ans = 17 1 9
s
aquela';
strtok
Localiza delimitador. Sintaxe típica: [sl,s2]
= strtok(str,d)
Parâmetros: Entrada str: cadeia d: caractere delimitador
Saída s1, s2: cadeias antes e depois do delimitador
Exemplo: » s t r = 1Procurar delimitador » [sl,s2]=strtok(str, ' : 1) sl = Procurar delimitador s2 : resto da cadeia
resto da cadeia';
MATLAB® 7- Fundamentos
Struct v'
cell2str
Converte cell array em struct. Sintaxe típica: s = cell2str
(cel,campos,dim)
Parâmetros: Entrada cel: cell array (conteúdo) campos: nome dos campos dim: dimensão
Saída s: struct
Exemplo: » cel={ 3 .19 'DOL' ; 39.65 '0 Z 1 '} » campos= { 'Valor' 1I d e n ' }; » s = cell2struct(cel,campos,2) ; » s(l) ans = Valor: 3.1900 Iden: 'DOL' » s (2) ans = Valor: 39.6500 I d e n : '0Z1 '■
■/ deal 'Distribui1valores campos de struct para variáveis. Sintaxe típica: [Varl, Var2,...]
= d e a l (fieldl,field2,...)
Parâmetros: Entrada fieldl, field2,...: campos de struct Exemplo: » [Prl,P r 2 ]= d e a l (s.Valor) Prl = 3.1900 Pr2 = 39.6500
Saída Var1, Var2,...: variáveis
y
fieldnames
Retorna os nomes dos campos da struct. Sintaxe típica: nomes = fieldnames(S)
Parâmetros: Entrada S: struct
Saída nomes: cell array com os nomes dos campos
Exemplo: » nomes=fieldnames(s) nomes = 'Valor' 'I d e n '
s
orderfields
Reorganiza struct com campos em ordem alfabética. Sintaxe típica: | Sl = orderfields(S)
Parâmetros: Entrada S: struct
Saída S1: struct com nomes dos campos em ordem alfabética
Exemplo: »
sl=orderfields(s)
sl = 2x1 struct array w ith fields: Iden Valor
S
rmfield
Remove campo de struct. Sintaxe típica: Sl = rmfield(S, campo)
192
MATLABP 7 - Fundamentos
Parâmetros: Entrada S: struct campo: nome do campo a ser removido
Saída S1: struct sem o campo
Exemplo: » s2=rmfield ( s , ' Valor') s2 = 2x1 struct array w ith fields: I den
y
struct
Cria struct. Sintaxe típica: S = struct
( campol, valorl,
campo2,
valor2,
...)
Parâmetros: Entrada c a m p o lstring com nomes dos campos valorl,..: cell array com valores
Saída S: struct
Exemplo: » s = s t r u c t ('I d e n ' , { 1DOL' 'O Z 1 1},'V a l o r ',{3.19 39.65}) s = 1x2 struct array with fields: Iden Valor
s
struct2cell
Converte struct em cell array. Sintaxe típica: cel = struct2cell(S)
Parâmetros: Entrada S: struct
Saída cel: cell array
Exemplo: % cell array com 2 dimensões » c l = s t r u c t 2 c e l l ( s (1)) cl = 'DOL' [3.1900] >> c2=struct2cell(s) % No caso de vetor de struct C 2 ( :,:,1) = % a cell array e' criada com 3 dimensões ’D O L ’ [3.1900] c2(:,:,2) = 'OZ1' [39.6500]
Cellarray y
cell
Cria cell array. Sintaxe típica: cel = cell(n)
/
cell(n,m)
Parâmetros: Saida cel: cell array
Entrada n, m: dimensões Exemplo: » c e l = c e l l (2,3) cel =
[] S
[]
[]
cellfun
Aplica uma função para todos os elementos do cell array. Sintaxe típica: R = c e l l f u n (funcao,cel)
Parâmetros: Entrada funcao: a ser aplicada cel: célula
Saída R: resultado da aplicação da função para cada elemento do cell array.
MATLAB ®7-Fundamentos
Exemplo: » cel={ 'DOL' 3.19; 'O Z 1 1 39.65 } cel = ■DOL’ [ 3.1900] 'OZ1' [39.6500] » c e l l f u n (1l e n g t h 1,c e l ) ans = 3 1 3 1
y
cell2mat
Converte c e lla rra ye m matriz numérica. Sintaxe típica: m = cell2mat(cel)
Parâmetros: Entrada cel: cell array
Saída m: matriz
Exemplo: » c e l = { 0 .1 [10 201} cel = [0.1000] [1x2 double] » m=cell2mat(cel)
m= 0.1000
10.0000
20.0000
Observação: para aplicar a função cell2mat, todos os elementos do cell array devem ser numéricos.___________________________________________________________________
y
celldisp
Lista o conteúdo de um cell array. Sintaxe típica: ce l l d i s p ( c e l )
Parâmetros: Entrada cel: cell array
.Programação
Saída
Exemplo: » c e l = { 'DOL' 3.19; » c e l l d i s p (cel) cel{l,1} =. DOL c e l {2,1} = OZ1 cel{l,2} = 3.1900 cel{2,2} = 39.6500
'OZ1'
39.65 };
■S cellplot Exibe graficamente o conteúdo de um cell array. Sintaxe típica: cellplot(cel)
Parâmetros: Entrada cel: cell array
Saída
Exemplo: » cel={ 'DOL' 3.19; >> cellpl o t ( c e l )
'OZ1'
39.65 };
He
View
E dit
d of
In s e rt
Mi.
021
y
Tools
□ □ D e s k to p
W in d o w
H elp
a m lw iW í
mat2cell
Converte matriz numérica em celt array.
196
MATLAB® 7 - Fundamentos
Sintaxe típica: cel = mat2cell(X,n,m)
Parâmetros: Entrada X: matriz n,m: dimensões em que a matriz vai ser dividida
Saída cel: cell array
Exemplo: » X = [1234; 5 6 7 8 9 10 11 12]; >> C = m a t 2 c e l l ( X , [1 2], [1 3] ) C = [ 1] [1x3 double] [2x1 double] [2x3 double]
S
num2cell
Converte matriz numérica em cell array. Sintaxe típica: cel = num2cell (m)
Parâmetros: Entrada m: variável numérica
Saída cel: cell array
Exemplo: » c e l = n u m 2 c e l l ([1 2 3]) cel = [11 [2] [3]
Conversão de Tipos de Dados Cadeia de caracteres para número: Função
Conversão
Exemplo
base2dec
número em caracteres na base dada para número em base decimal
bin2dec
número em caracteres em base binária para número em base decimal
hex2dec
número em caracteres em base hexade cimal para número em base decimal
>> b a s e 2 d e c (110',16) ans = 16 » b i n 2 d e c (11 0 0 0 0 1) ans = 16 » h e x 2 d e c ( '10 ') ans = 16
Programação
197
Função
Conversão
Exemplo
str2double
número em caracteres para número real (precisão dupla)
str2num
número em caracteres para número
>> st r 2 d o u b l e ('0.6') ans = 0.6000 » str2num ('0.6') ans = 0.6000
Número para cadeia de caracteres: Função
Conversão
Exemplo
char
matriz de números para cadeia de caracteres (código ASCII)
dec2base
número para cadeia de caracteres na base dada
dec2bin
número para cadeia de caracteres em base binária
dec2hex
número para cadeia de caracteres em base hexadecimal
int2str
número inteiro para cadeia de caracteres
mat2str
matriz numérica para cadeia de caracteres
num2str
número para cadeia de caracteres
» c h a r ([65 66]) ans = AB >> d e c 2 b a s e (16,16 ) ans = 10 » dec2bin(5) ans = 101 » dec2hex(16) ans = 10 » i n t 2 s t r (-123) ans = -123 m = 1.0000 2.0000 3.0000 3.1416 » mat2str(m) ans = [1 2 ;3 3.14159265358979] » num2str(pi) ans = 3.1416
Outras conversões: Função
Conversão
logical
matriz numérica em matriz lógica (matriz de 0's e 1's: os elementos da matriz numérica diferentes de zero são transformados em 1)
func2str
converte nome de função em cadeia de caracteres
str2func
converte cadeia de caracteres em handle de função
dec2hex
número para cadeia de caracteres em base hexadecimal
Exemplo a = 5 0 3 6 » logical(a) ans = 1 0 1 1 >> s=func2str(@sin) s = sin » dec2bin(5) ans = 101 » h = s t r 2 f u n c ('s i n ' ) h = @sin
MATLAB® 7-Fundamentos
3.3.2. Operadores Operadores
Bitwise(Operações sobre Números Inteiros) Função bitand bitcmp bitor bitmax bitset bitshift bitget bitxor
Operação AND (e) complemento OR (ou) máximo inteiro em ponto flutuante configura posição de bit desloca bits obtem posição de bit XOR (ou não e)
Exemplo: ♦
implementar tabelas'Verdade1:
» A = uint8([0 1; 0 1]) A =
0
1 1
0
» B = u i n t 8 ([0 0; 1 1]) B =
0 1
0 1
>> TTand = bitand(A,B) TTand =
0 0
0 1
» TTor=bitor(A,B) TTor =
0 1
♦
1 1
Complemento e shift: >> bitcmp(A) ans =
255 255
%
254 254
>> b i t shift(A,1) ans =
0 0
Programação
2 2
Operadores Relacionais (Símbolos de Testes e Operadores Booleanos) Símbolo (eq) ~= (ne) <(lt) >(gt) <= de) >= (ge)
Teste Igual Diferente Menor que Maior que Menor ou igual Maior ou igual
Exemplo 1== J (1 igual a J) 1~= J (1 diferente de J) 1< J (1 menor que J) 1> J (1 maior que J) 1<= J (1 menor ou igual a J) 1>= J (1 maior ou igual a J)
Símbolo ~ (not) & (and) && (and) 1(or) II (or)
Operador Negação E E para matrizes OU OU para matrizes
Exemplo de composição ~l ( negação de 1) 1& J (1 e J verdadeiros) M1 && M2 11J (I ou J verdadeiro) M1 II M2
Função lógica ali any false true xor
Teste testa se todos os elementos são diferentes de zero testa se algum elemento é diferente de zero testa se todos os elementos são false testa se todos os elementos são true testa elementos XOR
Operadores de Conjunto
y
intersect
Retorna 'intersecção' entre dois vetores. Sintaxe típica: c = i n t e r s e c t (ml,m2)
Parâmetros: Entrada m1, m2: variáveis
Saída c: conjunto de intersecção
Exemplo: » vl=[l 2 3 4 5]; » v 2 = [3 4 5 6 7]; » i n t e r s e c t (vl,v2) ans = 3 4 5
MATLAEP 7-Fundamentos
No caso de matrizes, é necessário fornecer o parâmetro 'rows'. Além disso, as matrizes devem ter o mesmo número de colunas e a operação de intersecção é efetuada coluna a coluna:
S
ismember
Verifica se o(s) valor(es) é elemento da matriz. Sintaxe típica: R = ismem b e r ( m , s )
Parâmetros: Entrada m: matriz s: elemento(s) Exemplo:
Programação
Saída R: vetor lógico
Dados dois vetores (ou matrizes) A e B, retoma os elementos que estão em A e não estão em B. Sintaxe típica: D = setdiff(a,b)
Parâmetros: Saída D: conjunto de diferenças
Entrada a, b: variáveis Exemplo: » v l = [1 2 3 4 5]; » v 2 = [3 4 5 6 7] ; » setdiff(vl,v2) ans =
1
2
No caso de matrizes, é preciso indicar o parâmetro 'rows'. Ademais as matrizes devem ter o mesmo número de colunas e a operação de verificação é efetuada coluna a coluna: »
m l = [1 2;3 4;5 6;7 8]; m2 = [3 4;5 6;7 8;9 10] s etdiff(ml,m2, ' rows '} ans = 1 2
» »
s
;
issorted
Verifica se o vetor está ordenado. Sintaxe típica:
.4'
\ *J
issorted(v)
' Á -d
--
Parâmetros: Entrada v: variáveis
Saída truel false
Exemplo: » issortedt [1 2 3 4]) ans = 1 » issorted) [1 2 4 3]) ans = 0
MATLAEP 7 - Fundamentos
S
setxor
Retorna os elementos que não estão na 'intersecção' entre dois vetores. Sintaxe típica: c = s e t xor(ml,m2)
Parâmetros: Entrada m1, m2: variáveis
Saída c: conjunto 'xor'
Exemplo: » vl=[l 2 3 4 5]; » v 2 = [3 4 5 5 7] ; » setxor(vl v 2 ) ans = 1 2 6
7
No caso de matrizes, o parâmetro 'rows' deve ser fornecido. Além disso, as matrizes devem ter o mesmo número de colunas e a operação é efetuada coluna a coluna: >> m l = [1 2;3 4; 5 6;7 8] ; >> m2=[3 4; 5 6; 7 8;9 10] ; >> setxor(ml m 2 , r o w s ') ans = 1 2 9 10 ■V:
; ■ I
/
union
Retorna a união de dois vetores. Sintaxe típica: c = u n i o n (ml,m2)
Parâmetros: Entrada m1, m2: variáveis
Saída d: conjunto de união
Exemplo: » vl=[l 2 3 4 5] ; » v 2 = [3 4 5 6 7] ; >> union(vl,v2 ans = 1 2 3
Programação
4
5
6
7
No caso de matrizes, o parâmetro 'rows' preciso ser indicado. Além disso, as matrizes devem ter o mesmo número de colunas e a operação é efetuada coluna a coluna: » m l = [1 2 ;3 4 ;5 6 ;7 8 ] ; » m 2 = [3 4;5 6;7 8;9 10] ; » u n i o n (ml,m 2 , 'rows') ans = 1 2 3 4 5 6 7 8 9 10
unique Elimina repetição de elementos em um vetor. Sintaxe típica: c = u n i q u e (m)
Parâmetros: Entrada m: variável
Saída C: conjunto sem repetição
Exemplo: >>v=[ 1 1 3 3 3 5 2 5 ]
»
1 1 u n i q u e (v) 1
2
3
3
3
5
3
5
2
5
A função também pode retornar os índices dos elementos 'únicos'. >>v=[ 1 1 3 3 3 5 2 5 ]
» vl
1 1 3 [vl,ind]=unique(v)
3
3
5
2
5
= 1
2
3
5
5
8
ind = 2
7
Operadores de Data e Hora
s
addtodate
Adiciona valor a uma data.
M4 71/40®7-Fundamentos
Sintaxe típica: R = addtodate
(D,N,Tipo)
Parâmetros: Entrada D: data em número real N: quantidade a ser adicionada Tipo: 'day1, 'month', 'year'
Saída R: data
Exemplo: adicionar 20 meses à data ’01 -Jan-2004' »
r=addtod a t e ( d atenum(101-Jan - 2 0 0 4 1),20,'month')
732556 » datestr(r) ans = 01-Sep-2005
•f
calendar
Gera uma matriz com o calendário da data solicitada. Sintaxe típica: c = calendar
(Ano, Mes)
Parâmetros: Entrada Ano, mês
Saída c: matriz
Exemplo: Junho de 2004 » c = c a l e n d a r (2004, 6) c = 0 0 1 2 6 7 8 9 13 14 15 16 20 21 22 23 27 28 29 30 0 0 0 0
s
3 10 17 24 0 0
4 11 18 25 0 0
5 12 19 26 0 0
clock
Retorna um vetor com 6 elementos: ano, mês, dia, data, hora, minuto e segundo atuais. Sintaxe típica:
Exemplo: » clock ans = 1.0e+003 * 2.0040 0.0060
0.0120
0.0140
0.0360
0.0530
■/ cputime / date / now cputime: retorna o tempo, em segundos, de uso do MATLAB® na sessão atual. date: retorna data em cadeia de caracteres. now: retorna data em valor numérico (data base 1:01-01-0000). Sintaxe típica: cputime / date / n o w
Exemplo: » cputime ans = 903.1496 » date ans = 08-Jun-2004 >> now ans = 7 . 3211e+005
S
datenum
Converte data (cadeia de caracteres) em número. A data base 1 é '01-01-0000'. Sintaxe típica: D = datenum(str)
Parâmetros: Entrada Saída str: data e m cadeia de caracteres
D: data numérica
Exemplo: » d a t e n u m ( 10 8 - J u n - 2 0 0 4 1) ans = 732106
S
datestr
Converte número em data (cadeia de caracteres). A data base 1 é '01-01-0000'. MATLAB® 7- Fundamentos
Sintaxe típica: str = datestr(D)
Parâmetros: Saída str: data em cadeia de caracteres
Entrada D: data numérica Exemplo: » d a t e s t r (732106) ans = 08-Jun-2004
y
datevec
Converte data de cadeia de caracteres para vetor numérico. Sintaxe típica: V
=
datevec(str)
Parâmetros: Saída V: vetor
Entrada str: data em cadeia de caracteres Exemplo: >> d a t e v e c ('08-Jun-2004 ans = 2004 6
10:30' ) 8
10
30
0
■s tic/toc Implementa contador de tempo de execução. Exemplo: >> m=rand(500) ; » tic ; m l = i n v ( m ) ;toc % Tempo gasto, em segundos, para Elapsed time is 0.221000 seconds. % inverter uma matriz 500x500
3.3.3. M-files Como já mencionado no Capítulo 2, arquivos de programa do MATLAB® têm extensão '.m1e, por este motivo, são usualmente chamados de m-files.
Existem dois tipos de m-files\ ♦
Script: é uma seqüência de expressões do MATLAB® e serve, basicamente, para automatizar algum processo repetitivo. Não tem parâmetros de entrada, nem de saída, e utiliza as variáveis do Workspace.
♦
Function: funções também são compostas por seqüências de expressões do MATLAB®, porém aceitam parâmetros de entrada e retornam parâmetros de saída. Funções utilizam seu próprio espaço de memória para armazenar variáveis locais.
A sintaxe básica de definição de funções segue este formato: function
Psl,
.•
., PsN
=
nome_funcao
Pel,
.. .
PeM )
♦
f u n c t io n : palavra reservada que indica início de definição de função.
♦
[ p s i , p s n ]
♦
nom e_funcao:
♦
p e l , . . . . Pen: parâmetros de entrada;
♦
< E x p ri>
...
: parâmetros de saída;
nome da função (é case-sensitive)', < ExprR >:
expressões que definem as ações a serem executadas
pela função. E a chamada de funções, este: [Saidal,
SaidaN]
= Funcao
(Entradal,
. .., Entrada2)
[Saidal, SaidaN] : parâmetros de saída Funcao: nome da função [Entradal,..., EntradaN] : parâmetros de entrada
Neste tópico, apresentamos recursos e funções relativos à construção e ao tratamento de m-fiies.
Funções de Consulta Função
Informação
Exemplo
mfilename
retorna o nome do m-fiie em execução
» mfilename ans =
namelengthmax
tamanho máximo de nome de variável
» namelengthmax ans = 63
nargin
número de parâmetros de Entrada fornecidos
cap3_inputname_exemplo.m
MATLAEP 7-Fundamentos
Funçãs
Informação
Exemplo
nargout
número de parâmetros de Saída solicitados
cap3_inputname_exemplo.m
iskeyword
lista as palavras reservadas da linguagem MATLAB®
» iskeyword ans = 'b r e a k ' 'case 1
Palavras reservadas da linguagem MATLAB® (aparecem em azul nos arquivos m-files na janela edit): Palavra
Descrição
break
quebra fluxo de execução implementa opção da função s w i t c h implementa alternativa da função t r y avança execução implementa alternativa da função if implementa alternativa da função if finaliza estruturas de repetição (for, estrutura de repetição define início de função define variável global estrutura de seleção implementa opção da função s w i t c h define variável persistente retorna implementa 'tentativa de execução1 estrutura de repetição
case catch continue else elseif end for function global if otherwise persistent return try while
U tilitários
1
■/ edit Chama editor de programas.
I I
Sintaxe típica: »
edit mfile
Parâmetros: Entrada mfile: nome do arquivo
Saída
w h iie)
e funções
S
mlint
Chama analisador para verificação de erros sintáticos em m-files. Sintaxe típica: »
mlint mfile
Parâmetros: Entrada mfile: nome do arquivo
Saída exibe resultado na linha de comando
Exemplo: » mlint triangulo_pascal_erro L 8 (C 14): Parse error at '=' appears to be invalid MATLAB syntax L 8 (C 23): Parse error at ')' appears to be invalid MATLAB syntax L 8 (C 32): Parse error at ')' appears to be invalid MATLAB syntax
S
mlintrpt
Chama analisador para verificação de erros sintáticos em m-files e gera um relatório no Web Browser. Sintaxe típica: >> mlintrpt mfile
Parâmetros: Entrada mfile: nome do arquivo
Saida exibe resultado no Web Browser
Exemplo: >> mlintrpt triangulo_pascal_erro
M -lm t Code Check Report Fie Edit View
j
C ;3
*
&
Refiesh |
M-Lint Code Checker Report Report Cot file Jttianculo pascal ecxo} c:\matlab7\vork\triangulo_pascal_erro.m 3 messages § 1 Pa-se error at appears to be invalid HATLAB syntax 8: Parse error at 1)' appears to be invalid HATLAB syntax §2. Parse error at ‘)' appears to be invalid HATLAB syntax
MATLAEF 7•Fundamentos
•/
pcode
Gera um código binário, 'pré-compiiado', de um m-file. Sintaxe típica: »
pcode mfile
Parâmetros: Entrada
Saída
mfile: nome do arquivo
arquivo com o mesmo nome do m-file e com extensão .p
Exemplo: » pcode cap3_gradient_exemplo » dir cap3_gradient_exemplo.* cap3_gradient_exemplo.m cap3_gradient_exemplo.p
P I ffe
c a p 3 _ g r < - i d í e r it _ e x e m p l o - N o t e p a d Edt
F o tm a t
V iew
m
m
m
H elp
o ê n -4 • Ê: 3 .1 : o : i ’ „ m t ò [ i c k í ^ O Õ A z v ^ s n ò ^ y ú O : ' t n —ckÆ XŒ J'^ " Û 0 y > g 7 : x : 1 ~ : B 0 :u * G 0 E o0 e iv _ : ] 2 k Y î • : o ê : 5 x & - « T ë S È ù - -*ov: * f
1 p - file
&/
✓
,< ,i* 1 1
Ln 1, C o l 1
.]
Observação: arquivos p-codes podem ser utilizados para proteger código fonte pois não são editáveis.
Funções Utilitárias e Linguagem
y
echo on/off
Habilita/desabilita exibição de código durante execução do programa. Exemplo: arquivo cap3_det_exempio.m (script)
s
function
Inicia definição de função. Exemplo: arquivo cap3_funcao1 .m % funcao cap3_funcaol function y = cap3_funcaol(x) y = x+sin(2*x) + c o s ( 4 * x);
S
inputname
Retoma o nome da variável de entrada fornecida na chamada da função. Sintaxe típica: n = inputname(ind)
Parâmetros: Entrada ind: índice da variável de Entrada
Saída n: nome
■ ÏSJ
Exemplo (cap3_inputname_exemplo.m): % funcao cap3_inputname_exemplo function [nl,n 2 ,ne,ns] = cap3_inputname_exemplo( entl,ent2 nl = i n p u t n a m e (1); % nome da primeira variavel de entrada n2 = i n p u t n a m e (2); % nome da segunda variavel de entrada ne=nargin; % numero de parametros de entrada ns=nargout; % numero de parametros de saída
)
Execução: » [nl,n2,ne,ns]=cap3_inputname_exemplo(x,0) nl = x % nome da I a variavel do 1* parametro n2 = 11 % 2- parametro e' u m numero, nao uma variavel ne = 2 % dois parametros de entrada ns = 4 % quatro de saida
■s pause Provoca uma pausa na execução do código. Sintaxe típica: I pause / pause(n)
MATLAEP 7 -Fundamentos
Parâmetros: Entrada n: número de segundos de pausa
Saída
Caso n seja omitido, espera um para prosseguir.
3.3.4. Fluxo de Programação Estruturas de Seleção ■/
if, else, elseif
Executa um teste lógico. Se o resultado for: ♦
true executa o conjunto de expressões seguinte;
♦
false: pula para o próximo conjunto de expressões.
Sintaxes típicas:
Exemplo i f : verifica se algum parâmetro de entrada foi fornecido. edit: cap3_if_exemplo.m % cap3_if_exemplo () function R = cap3_if_exemplo (a,b) if nargin == 0 R = 1N e n h u m parametro de e n t r a d a 1; else R = 1Pelo menos u m parametro de entrada 1 end
Programação __________________________________________ _____ ( ^13
Execução: » cap3_if_exemplo ans = Ne n h u m parametro de entrada » c a p 3 _ i f _ e x e m p l o (1) ans = Pelo menos u m p arametro de entrada » c a p 3 _ i f _ e x e m p l o (1,2) ans = Pelo menos u m parametro de entrada
Exemplo e i s e i f : examina quantos parâmetros de entrada foram fornecidos. edit:
cap3_elseif_exemplo.m____________
% cap3_elseif_exemplo () function R = cap3_elseif_exemplo (a,b) if nargin == 0 R='Nenhum parametro de entrada'; eiseif nargin == 1 R = '1 parametro de entrada'; else R = '2 parametros de entrada'; end
Execução: » cap3_elseif_exemplo ans = N e n h u m parametro de entrada » c a p 3 _ e l s e i f _ e x e m p l o(1) ans = 1 parametro de entrada » c a p 3 _ e l s e i f _ e x e m p l o(1,2) ans = 2 parametros de entrada
■S switch / case / otherwise Dado um valor para teste, verifica qual 1ã condição 'case' é satisfeita e executa o conjunto de expressões correspondente. Caso nenhuma condição seja satisfeita, executa as expressões 'otherwise'. Sintaxe típica: switch case case cCondicao N> otherwise end
-3
MATLAB® 7- Fundamentos
Exemplo s w itc h : analisa quantos parâmetros de entrada foram fornecidos. edit: cap3_switch_exemplo
()___________
% cap3_switch_exemplo () function R = cap3_switch_exemplo (a,b) switch nargin case 0 R = 1N e n h u m parametro de entrada'; case 1 R = 11 parametro de entrada'; otherwise R = 12 parametros de e n t r a d a 1; end
Execução: » cap3_switch_exemplo ans = N e n h u m parametro de entrada » c a p 3 _ s w i t c h _ e xemplo(1) ans = 1 parametro de entrada » c a p 3 _ s w i t c h _ e xemplo(1,2) ans = 2 parametros de entrada
Estruturas de Repetição ■J w h ile /e n d Executa o conjunto de expressões enquanto a condição for true. i
Sintaxe tipica: while end
Exemplo w h ile : retorna os múltiplos de n menores que m. edit: cap3_while_exemplo
j
()___________
% cap3_while_exemplo () % R: multiplos de n menores que m function R = cap3_while_exemplo (n,m) i=l; R= [] ; while i*n < m R=[R i * n ] ; i=i+l; end
Programação
Execução: » cap3_while_exemplo (2,11) ans = 2 4 6 8 » cap3_while_exemplo 5,42) ans = 5 10 15 20
s
10
25
30
35
40
for / end
Executa o conjunto de expressões para todo valor V a partir de Vinc, incrementado de Incr, até Vfinal. Sintaxe típica: for V = V i n c :I n c r :Vfinal end
Se Incr for omitido, a função assume valor de incremento igual a 1. Exemplo f o r : gera matriz com diagonal: n+1 ,...,n+n. edit:
cap3_for_exemplo
()
: 'I
% cap3_for_exemplo () % gera matriz diagonal (n+1,. . ,n+n) function R = cap3_for_exemplo (n) for i=l:n R(i,i)=i+n; end
Execução:
MATLAEP 7- Fundamentos
Tratam ento de Erros
s
error / errordlg
error: exibe mensagem de erro na linha de comando, errodlg: exibe mensagem de erro em caixa de diálogo. Sintaxe típica: I error(msg)
/ errordlg(msg)________
Exemplo e r r o r : repete a funcionalidade do exemplo cap3_while_exemplo, porém testa condição n deve ser menor que m. edit: cap3_error_exemplo
()_____________
% cap3_error_exemplo () % R: múltiplos de n menores que m function R = cap3_error_exemplo (n,m) if n > = m ms g _erro='n deve ser menor que m ' ; error(msg_erro) ; end i=l; R=[] ; while i*n < m R= [R i *n ] ; i=i+l; end
Execução: » c a p 3 _ e r r o r _ e x emplo(3,8) ans = 3 6 » c a p 3 _ e r r o r _ e x emplo(8,3) ??? Error using ==> cap3_error_exemplo n deve ser me n o r que m
s
lasterr/lastwarn
Retorna última mensagem de erro/aviso detectado pelo MATLAB®. Sintaxe típica:
s
try/catch/end
'Tenta' executar as expressões definidas entre try e catch. Se ocorrer algum erro, suspende a execução e executa as expressões definidas entre catch e end. Sintaxe típica: try catch end
Exemplo t r y / c a t c h : tenta multiplicar a*b. Se a*b retornar erro, exibe mensagem em caixa de diálogo. edit: cap3_try_exemplo
()
% cap3_try_exemplo () % resolve multiplicar a * b function x = cap3_try_exemplo (a,b) try x=a*b; catch e r r o r d l g (1Dimensões i n c ompativeis1); end
Execução: » c a p 3 _ t r y _ e x e m p l o ([1 2],[3;4]) ans =
11 » c a p 3 _ t r y _ e x e m p l o ([3;4],[1 2]) ans = 3 6 4 8 »
c a p 3 _ t r y _ e x e m p l o ([3 4],[1 2])
>>
:;
MATLAB® 7- Fundamentos
C a p ít u l o
4
Leitura e Gravação de Arquivos N este capítulo, lista m os os p rincipais recursos de leitura e gravação de arquivos de dados no M ATLAB® 7.
4.1. Construção de Nome de Arquivo Funções de Consulta Função
informação
Exemplo »
cd c :\matlab7\work >> pwd ans = c :\matlab7\work
cd / pwd
diretório corrente
filesep
caractere separador de nome de arquivo no sistema operacional corrente
matlabroot
diretório do MATLAB®
matlabroot ans = c : \matlab7
tempdir
diretório temporário
» tempdir ans = c : \Temp\
tempname
arquivo temporário
» tempname ans = c :\Temp\tp440124
>> filesep ans = \ »
Leitura e Gravação de Arquivos
Nome de Arquivo
S
fileparts
Dado nome completo do arquivo, retorna: caminho, nome, extensão. Sintaxe típica: [path,nome,ext]=fileparts(arquivo)
Parâmetros: Entrada
Saída
arquivo: nome do arquivo
path: caminho nome: nome principal do arquivo ext: extensão
Exemplo: » a r q u i v o = 1c : \matlab7\work\cap3_if_exemplo,m'; » [path,nome,ext]=fileparts(arquivo) path = c :\matlab7\work nome = cap3_while_exemplo ext = .m
s
fullfile
Dados caminho, nome e extensão, retorna o nome completo do arquivo. Sintaxe típica: arquivo = fullfile (dl,< 3 2 ,nome)
Parâmetros: Entrada
Saída
d 1 d ir e tó r io s
arquivo: nome completo do arquivo
nome: nome com extensão
Exemplo: » p a t h = 'c :\ matlab7\work'; » n o m e = 'cap3_whi l e _ e xemplo.m1; » a r q u i v o = f u l l f i l e (path,nome) arquivo = c :\matlab7\work\cap3_while_exemplo.m
MATLAB 8 7 - Fundamentos
■ / which Dado nome de arquivo, verifica se ele existe (faz a busca no diretório corrente e nos caminhos definidos no path do MATLAB®). Se existir, retorna o nome completo do arquivo, caso contrário, retorna" {string vazia). Sintaxe típica: nome_completo = which(nome)
Parâmetros: Entrada nome: nome do arquivo
Saída nome_completo: nome com path completo
Exemplo: »
n l=which ( ' det .ru' )
nl
:\matlab7\toolbox\matlab\matfun\det . m » n l = w h i c h ( ' detl .m' ) nl =
4.2. Utilitários de Abertura e Gravação de Arquivos ■/
impordata
Importa dados de arquivo. Sintaxe típica: m
=
importdata(arquivo)
Parâmetros: Entrada arquivo: nome do arquivo
Saída m: dados importados
Formatos de arquivo reconhecidos pela função importdata: Extensão
Descrição
Função
Retorno
MAT
formato MATLAB
load
variáveis no arquivo
CSV
números separados por
cvsread
matriz numérica
D A T /T X T
texto formatado
importdata
matriz numérica
DLM
números delimitados
dlmread
matriz numérica
TAB
números tabulados
dlmread
matriz numérica
Leitura e Gravação de Arquivos
Extensão
Descrição
Função
Retorno
XLS
planilha do MS-Excell
xlsread
matriz numérica e cell array
WK1
planilha do Lotus 123
wk1 read
matriz numérica e cell array
CDF*
Common Data Format
cdfread
cell array e registros CDF
FITS*
Flexible Image Transport System
fitsread
formato FITS
HDF*
Hierarchical Data Format
hdfread
formato HDF
AVI
formato AVI (animação)
aviread
formato MATLAB movie
TIFF
PCX
formato formato formato formato formato formato formato
TIFF (imagem) PNG HDF BMP JPEG GIF PCX
XDW CUR ICO RAS PBM
formato formato formato formato formato
XDW CUR ICO RAS (raster Sun) PBM
imread
matrizes de cores (truecoloi) e índice (mapeamento)
PGM PPM
formato PGM formato PPM
AU SND
formato AU (áudio Sun) formato SND (áudio Sun)
auread
dados e freqüência
WAV
formato WAV (áudio MS)
wavread
dados e freqüência
PNG HDF BMP JPEG GIF
(*) Padrão de arquivos para troca de dados criados peia NASA.
Exemplo: » m = i m p o r t d a t a ('c a p 2_dad o s l . x i s ') % Importa os dados da planilha m = % para a struct m no campo Planl P l a n l : [50x2 double]
S
load
Importa dados de arquivos nos formatos MATLAB e ASCII. Sintaxes típicas: » load arquivo s = l o a d (arquivo) s = l o a d (arq u i v o , v l , v2,. s = l o a d (tipo, arquivo)
MATLAB ®7-Fundamentos
Parâmetros:
Entrada
Saída
arquivo: nome do arquivo
s: dados importados
v1, v2,...: variáveis tipo: '-m a t', '-ascii'
Observação: a execução da função load sem parâmetros importa todas as variáveis do arquivo matlab.mat.______________ Exemplo: » s = l o a d ( 'c u r v a s . m a t ') s = curvas: [52x3 double] tempo: [1x52 double] » s t = l o a d ( 1c u r v a s . m a t 1, 't e m p o ') st = tempo: [1x52 double] » s l = l o a d ( 1- a s c i i 1,'d a d o s 2 .t x t 1)
sl = 0.9501 0.4860 0.4565
S
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
open
Reconhece o tipo de arquivo e 'abre' o arquivo no MATLAB®. Sintaxe típica: | m - open(arquivo)
Parâmetros: Entrada
Saída
arquivo: nome do arquivo
m: dados importados
Extensão
Descrição
MAT
formato MATLAB®
importa os dados do arquivo
FIG
arquivo de figuras
abre a janela com a figura
Ação retorno
M
m-file
abre o m-file no edit
MDL
modelo do Simulink®
abre o modelo no Simulink®
HTML
arquivo .html
abre o arquivo no Web Browser
Exemplo: »
o p e n ('E x e m p l o 2 .f i g ')
Leitura e Gravação de Arquivos
____________________________________
y
save
Armazena variáveis do workspace em arquivos nos formatos MATLAB e ASCII. Sintaxes típicas: » save arquivo s a v e (a r q u i v o ) s a v e (a r q u i v o ,v l ,v 2 , . . .) s a v e (arquivo, tipo)
Observação: a execução da função save sem parâmetros grava todas as variáveis no workspace no arquivo matlab.mat. |
Parâmetros: Entrada arquivo: nome do arquivo v1, v2,.,.: variáveis tipo: '-mat', '-ascii1
Saída
■S uiimport Abre janela de interface gráfica da função importdata. Sintaxe típica: »
uiimport
MATLAB® 7-Fundamentos
H
C H IM E S 1
í^iprofic resdts H f l orcuito
My Recent Docunents
© a rq
®
■ 0 a rq l
if) contagem
flg r a fô
jja r q l
T i curvas
•Qgrafll
^ a rq 3
Desktop
3
My Doofnerts
curvas1
| p license
pH bungie
U i OB-vas2
g§jLoíusl,wkl
í y cap2_dadosl
dados 1 í | j dados 1
|áLotus2.wki «^jmatiabl [ Ü r e d e y e d fr o g
^cap2_dados.l ífj cap2_dados2
0
5 ^ )c a p 2 _ d a d o s 2
[ U e s p ira i
ßxdY d
H l c a p 2 _ s a id a
§ 2 | e x a m p le
fjx y
10 cap2_saidal
% Computer
dock
§)jaFroq Red H)sraíD2 ^jgrafDS
dados2
e x e r c id o S
* * l c a p 2. s a l d a i
« j& je x e r d d o 9
§
y j fc u rv a s
C H IM E S
ß xyspi
My Network Pisces Ries of type:
s
jRecoyiized Data .Ries
uiload
Abre janela de interface gráfica da função load. Sintaxe típica: »
s
uiload
uiopen
Abre janela de interface gráfica da função open. Sintaxe típica: »
uiopen
jLeitura e Gravação de Arquivos
d "3
Open
I
i cei
I
L o o k f i; | C 2 w o ik
3
f
E a rq l J -ß a rq S
■ Q csp2_exem pio_ô 5
^ )c a p 2 _ e x e ir
ß
cap2_exem pfe_G6
^ ] c a p 2 exeir
^?)ca p2 _exsm pio_Q 1 'Q c a p 2 _ e x e m p ío _ 0 2
cap2_exem pfo_07 ■^1 cap2_exeroplo_ps
•@ c a p 2 _ e x e rr
^
■jp) cap2_exem pfo_09 f f i j cap2_exernpio_ 10
cdp2_exem pio_03
M cap2_exem p!o_04
^ v lc8p2_exeiT ^cap2_exen ^ H e a p 2 e x e ri ...........................................1:
\m * 1 Füe n a rr« :
|
Ries of tyo e :
[A li M ATLAB Fües
|
Q pen
|
Cance! ; |
■S winopen No sistema operacional Windows®, abre janela de acesso ao diretório fornecido. Sintaxe típica: »
w i n o p e n ('c :\ m a t l a b 7 ')
4.3. Funções de Entrada/Saída de 'baixo nível1 O MATLAB® disponibiliza funções de entrada/saída de 'baixo nível1, ou de acesso a dados binários, semelhantes às funções disponíveis na linguagem C/C++.
s
fclose
Fecha arquivo.
MATLAB® 7 - Fundamentos
Sintaxe típica:
s t = fc lo s e ( fid ) Parâmetros: Entrada fid: identificador de arquivo (file-handle) S
Saída st: status
feof
Testa condição de final de arquivo. Sintaxe típica: st
= f e o f (f id )
Parâmetros: Entrada fid: identificador de arquivo (file-handle) y
Saída st = 1 indica final de arquivo
terror
Retorna mensagem de erro. Sintaxe típica: | msg = f e r r o r ( f id ) Parâmetros: Entrada fid: identificador de arquivo (file-handle) S
Saída msg: mensagem de erro
fget!
Lê uma linha do arquivo sem caractere de final de linha f\n'). Sintaxe típica: tline = fgetl(fid)
Parâmetros: Entrada fid: identificador de arquivo (file-handle)
Leitura e Gravação de Arquivos
Saída tline: linha lida
y
fgets
Lê uma linha do arquivo com caractere de final de linha ('\n'). Sintaxe típica: tline = fgets(fid)
Parâmetros: Entrada fid: identificador de arquivo (file-handle) s
Saída tline: linha lida
fopen
Abre arquivo. Sintaxe típica: fid = fopen(arquivo, modo)
Parâmetros: Entrada arquivo: nome do arquivo modo: tipo de acesso Modo Y W 'a1 W 'w+' 'a+' y
Saída fid: identificador de arquivo (file-handle)
Tipo de Acesso Abre para leitura Abre ou cria para gravação, eliminando registros anteriores Abre ou cria para gravação, mantendo registros anteriores Abre para leitura e gravação Abre ou cria para gravação e leitura, eliminando registros anteriores Abre ou cria para gravação e leitura, mantendo registros anteriores
fprintf
Grava dados formatados. Sintaxe típica: nb = fprintf(fid,
formato, vl, v2,
...)
MATLAEP 7 - Fundamentos
Parâmetros:
Entrada fid: identificador de arquivo (file-handle) formato: string com a descrição do formato v1, v2,.„: variáveis
Saída nb: número de bytes gravados
A string com a descrição do formato é composta da seguinte maneira: % < F x T > .< P x C > \ + 0
Contre íamento e sinal alinhamento à esquerda sempre imprime sinal dos números preenche espaços com 0' em vez d e '
Exemplo %-6.4d %+6.4d %06.4d
Caractere : número mínimo de dígitos a serem impressos. Caractere : número de dígitos à direita do ponto decimal. %c %s %d ou %i %u %f %e %E %g %x %X %o
Notação caractere cadeia de caracteres decimal decimal sem sinal ponto flutuante exponencial exponencial 'maiúscula' forma compacta de %f ou %e hex. 'minúscula' hex. 'maiúscula' octal
Exemplo fprintf('%c','a') fprintf('%s','abc') fprintf('%5.3d',pi) fprintf('%5.3u',pi) fprintf('%5.3f',pi) fprintf('%5.3e',pi) fprintf('%5.3E',pi) fprintf('%5.3g',pi) fprintf('%x',27) fprintf('%X,27) fprintf(%o',27)
Resultado a abc 3.142e+000 3.142e+000 3.142 3.142e+000 3.142E+000 3.142 1b 1B 33
Caracteres especiais que podem ser utilizados nos formatos: Caractere Nome \b backspace \f form feed \n newline \r carriage return \t horizonal tab \\ backslash \" quotation mark %% percent character Leitura e Gravação de Arquivos
Descrição retorno de caractere avanço de linha pula linha retorno de linha tabulação horizontal caractere barra invertida \ caractere aspa" caractere porcentagem %
S
fread
Lê dados binários. Sintaxe típica: m = fread(fid,
nb, prec)
Parâmetros: Entrada fid: identificador de arquivo (file-handle) nb: número de bytes a serem lidos prec: precisão (mesmo critério da função fwrite)
S
Saída m: matriz de dados
frewind
Retorna para o início do arquivo. Sintaxe típica: f r e w i n d (fid)
Parâmetros: Entrada fid: identificador de arquivo (file-handle) S
Saída
fscanf
Lê dados formatados,
m■; lii
Sintaxe típica: [m,nb]
= fscanf (fid,
form.ato,
[nl nc] )
Parâmetros: Entrada fid: identificador de arquivo (file-handle) formato: string com a descrição do formato [nl nc]: dimensões, número de linhas e colunas
Saída m: matriz com dados nb: número de bytes gravados
Observação: se a dimensão for indicada com Inf, lê até final de arquivo.
MATLAEP 7 - Fundamentos
Exemplo: edit:
cap4_scanf_exempio
()____________________________
% c a p 4 _ s c a n f _ e x e m plo( ) % Le arquivo, retorna dados em u m vetor lxN function m=cap4_fscanf_exemplo(arquivo) fid=fo p e n (arquivo,'r '); % Abre arquivo para leitura m = f s c a n f ( f i d , '% f 1,[1 I n f 1]); % Le dados fclose(fid); % Fecha arquivo
Execução: ler arquivo 'dados2.txt'. » m = c a p 4 _ f s c a n f _ exemplo(1d a d o s 2 .t x t ') m = 0.9501 0.2311 0.6068 0.4860 0.8913 0.8214
■/
0.7621
0.4565
fseek
Posiciona apontador de arquivo. Sintaxe típica: status = fs e e k (fid,offs e t ,orig)
Parâmetros: Entrada fid: identificador de arquivo (file-handle) offset: número de bytes orig: base do posicionamento orig 'bof 'cof 'eof ✓
Saída status: índice de status
Descrição número de bytes a partir do início do arquivo número de bytes a partir da posição atual número de bytes a partir do final do arquivo
ftell
Retorna posição atual do apontador do arquivo. Sintaxe típica: pos = ftell(fid)
Leitura e Gravação de Arquivos
0.0185
Parâmetros:
Entrada fid: identificador de arquivo (file-handle)
Saída pos: posição em bytes
■/ fwrite Grava dados binários. Sintaxe típica: n b = fwrite(fid, m, prec)
Parâmetros: Entrada fid: identificador de arquivo (file-handle) m: matriz prec: precisão
Saída nb: número de bytes gravados
A precisão é dada por: Tipo de dado Descrição double Precisão Dupla single Precisão Simples int8 Inteiro 8 bits c/ sinal uint8 Inteiro 8 bits s/ sinal intl6 Inteiro 16 bits c/ sinal uintl6 Inteiro 16 bits s/sinal int32 Inteiro 32 bits c/ sinal uint32 Inteiro 32 bits s/ sinal int64 Inteiro 64 bits c/ sinal uint64 Inteiro 64 bits s/ sinal char Caractere
Precisão 'real*8' 'realM' 'integerT 'integerT 'integer*2‘ 'integer*2' 'integer*4' 'integer*4' 'integer‘ 8' 'integer‘ 8' 'char'
Exemplos: ♦
cap4_fwrite_exemplo: grava uma matriz com precisão dupla em arquivo binário;
♦
cap4_fread_exemplo: lê o arquivo em uma matriz com precisão dupla de arquivo binário.
MATLAEP 7-Fundamentos :
edit: cap4_fwrite_exemplo ()________________________ % c a p 4 _ f w r i t e _ e x e mplo( m, arquivo ) % Grava matriz m em arquivo com formato binário function cap4_fwrite_exemplo(m, arquivo) fid=fopen(arquivo,'w'); % Abre arquivo para gravacao f w r i t e (f i d , m , 'r e a l * 8 1); % Grava com precisão dupla fc l o s e (f i d ) ;
edit:
cap4_fread_exemplo
()____________________________
% c a p 4 _ f r e a d _ e x e mplo( arquivo ) % Le matriz m do arquivo com formato binário function m=cap4_fwrite_exemplo(arquivo) fid=fo p e n (arquivo,'r '); % Abre arquivo para leitura m = f r e a d (fi d , 1r e a l * 8 '); % Lê com precisão dupla fc l o s e (f i d ) ;
Execução: » a= [1 0 .5; -2 3] ; » cap4_fwrite_exemplo(inv(a),'i n v _ a . d a t '); % Grava a inversa de a » b = c a p 4 _ f r e a d _ exemplo(1i n v _ a . d a t '); % Le a inversa » a*reshape(b,2,2) % Testa os valores lidos ans =
1 0
0 1
4.4. Arquivos de Formatos Específicos 4.4.1. Arquivos ASCII S
cvsread
Lê arquivos em formato CSV (separado por vírgulas). Sintaxes típicas: m = cvsread(arquivo) m = cvsread(arquivo, nl, nc)
Parâmetros: Entrada
Saída
arquivo: nome do arquivo
m: dados lidos
nl, nc: números de linhas e de colunas
Leitura e Gravação de Arquivos
( 233
^
cvswrite
Grava arquivos em formato CSV (separado por vírgulas). Sintaxes típicas: c v s w r i t e (arquivo,m) cvswrite(arquivo, m, nl, nc)
Parâmetros: Entrada arquivo: nome do arquivo m: matriz com os dados a serem gravados nl, nc: números de linhas e de colunas S
Saída
dlmread
Lê arquivos em formato delimitado (separado por caractere delimitador). Sintaxes típicas: m = dlmread m = dlmread m = dlmread
(arquivo) (arquivo, (arquivo,
d) d, nl, nc)
Parâmetros: Entrada arquivo: nome do arquivo d: caractere delimitador nl, nc: números de linhas e de colunas ■S dlmwrite
Saída m: dados lidos
Parâmetros:
Entrada arquivo: nome do arquivo m: matriz com os dados a serem gravados d: caractere delimitador nl, nc: números de linhas e de colunas
Saída
Observação: se o caractere delimitador for omitido, a função a s s u m e o u '
■/ textread Lê arquivos com dados formatados por colunas, em variáveis separadas. Sintaxe típica: [vl,v2,..]
= textread(arquivo,formato)
Parâmetros: Entrada arquivo: nome do arquivo formato: string de formato
Saída v1,v2,.„: colunas lidas
Exemplo: lê o arquivo 'dados1.txt' composto por uma coluna de texto e duas de valores numéricos. »
[mes,vl,v 2 ]= t e x t r e a d ( 'd a d o s l .t x t 1, 1%s %f % f ‘);
a m m
1m â
■ N am e a . ) i: r n e s
I V alue ;
3vi" ' 3 v2
j
I
I :stack:j O { C la ss
<6x1 cell> cell [9.57;8.33;10.1... double [55.95;49.81;51... double
• / textscan Lê arquivos com dados formatados por colunas, em um cell array. Sintaxe típica: cel = t e x t s c a n (fid,formato)
Leitura e Gravação de Arquivos
Parâmetros:
Saída cel: cell array
Entrada fid: identificador de arquivo (file-handle) formato: string de formato Exemplo: lê o arquivo 'dadosl .txt'. » » »
fid=fo p e n ('d a d o s l .t x t ',1r 1); c e l = t e x t s c a n (fi d , '%s %f %f'), f c l o s e (fi d ) ;
i l Array Editor - cel ■ f i t í s s i I 1 r. y j ans H l cet
0
f f if id
3
%
File
O í
ij »82
<1 x3 cell>
E dit
V iew
&
§=i Ê Ü
1
G raphics #
Debug
í [Ü
-•
1
D e s k to p
W indoi
S ta c k . ' L
-
:
2 3 1 :(<6x1 ceÍÍ> H9.57.8.33... IÍ55.95'; 49... J 2] g J I I I ' I " ________ 1 _______ _.j_____
..r.
4
5
<
6 i 71
j 1
!
i
sC u rre n t D ire c to ry ! W n rk s n a n ft !
4.4.2. Planilhas *.XLS e *.WK1 S
xlsfinfo
Obtém dados de uma planilha MS-Excel (*.xls). Sintaxe típica: [tipo,pastas]
= xlsfinfo(arquivo)
Parâmetros: Entrada arquivo: nome do arquivo
Saída tipo: descritivo do tipo pastas: nomes das pastas (cellarray)
Exemplo: » [tipo,pastas]=xlsfinfo('cap2_dados2.xls') tipo = Microsoft Excel Spreadsheet pastas = 'P l a n l ' 1P l a n 2 1 'Plan3'
236
MATLAB ® 7- Fundamentos
s
xlsread
Lê planilhas MS-Excel (*.xls). Sintaxes típicas: [n,a] = xlsread(arquivo) [n,a] = xlsread(arquivo, [n,a] = xlsread(arquivo,
pasta) pasta,
intervalo)
Parâmetros: Entrada arquivo: nome do arquivo pasta: nome da pasta intervalo: range, por exemplo, 'A1 :B5'
Saída n: dados numéricos a: dados alfanuméricos
Exemplo: » m = x l s r e a d (1cap 2_dados2.xis' 1P l a n l ' 'Al :B 3 ') m = 0 34.16 2.04 58.74 4.08 75.82
■S xlswrite Grava planilhas MS-Excel (*.xls). Sintaxes típicas: xlswrite xlswrite xlswrite
(arquivo,m) (arquivo,m, (arquivo,m,
pasta) pasta,
intervalo)
Parâmetros: Entrada arquivo: nome do arquivo pasta: nome da pasta m: dados (pode ser cell array) intervalo: range, por exemplo, 'A1:B5'
Saída
Exemplo: gravar apenas dados numéricos. »
x l s w r i t e (1c a p 4 _dadosl.xis',magic 5) ) ;
Exemplo: gravar apenas dados alfanuméricos e numéricos. » cel= { 'DOL' 'O Z 1 '; .3.19 39.65; cel = 'DOL' 'OZ1' [3.19] [39.65] [3.18] [39.68] [3.17] [39.67]
3.18 39.68;
iS B
áíjPj Afcpyo D
gdiiar
ü Al
A l 1 DÜL í 2 .... 3,19 \ 3 - 3,18 4 3.17
>> x l s w r i t e (1cap4_dados2.xis 1,c e l );
S
3.17 39.67}
Exibir. Jpsenr.
ü S3 G l v y & ^ fx DOL € ; ....■ ■ B OZ1 39,S5 33.68 ■3-5,6?
wk1 read
Lê planilhas Lotus123 (*.wk1). Sintaxes típicas: m = wklsread(arquivo) m = w k l r e a d (arquivo, linha,
coluna)
Parâmetros: Entrada arquivo: nome do arquivo linha, coluna: intervalo de leitura (base é 0)
Saída m: dados
Exemplo: w k l r e a d (1lotusl w k l 1) 300. 00 1.00 2.00 400. 00 500. 00 3.00 4.00 600. 00 700. 00 5.00 >> m l = w k l r e a d (1l o t u s l .w k l 1,3,2) ml 49 19 51 29 50 53 50 67
238
50 50 50 51 50
69 82 71 29 67
50 48 51 49 50
26 94 42 19 53
MATLAEP 7 - Fundamentos 1
S
w klw rite
Grava planilhas Lotus123 (*.wk1). Sintaxes típicas: wklwrite wklwrite
(arquivo, m) (arquivo, m,
linha,coluna)
Parâmetros: Entrada arquivo: nome do arquivo m: dados linha, coluna: intervalo de leitura (base é 0)
Saída
Exemplo: gravar apenas dados numéricos. »
w k l w r i t e ('l o t u s 2 . w k l ', mag i c (5));
À * i 2 : 3 4 5 ;
B 1?J 23 4 10 11
C 2.4 5 b 12 18
4.4.3. Arquivos de Áudio S
sound / w avplay
Converte vetor numérico em som. Sintaxes típicas: sound(s,fs) wavplay(s,fs)
Parâmetros: Entrada s: vetor numérico fs: freqüência
Leitura e Gravação de Arquivos
E
D 1 7 13 19 25
Saída
8 14. 20 21 2
.15 16 22 3 9
s
wavread
Lê arquivo MS-Wave (*.wav). Sintaxe típica: [S,Fs]
= wavread(arquivo)
Parâmetros: Entrada arquivo: nome do arquivo
Saída S: sinal Fs: freqüência
Exemplo: edit:
cap4_wavread_exemplo
()__________
% cap4_wavread_exemplo function cap4_wavread_exemplo ( ) [S,fs]=wavread('TestSnd.wav'); % Le 'TestSnd.wav' s u b p l o t (2,1,1) % Exibe os dois canais p l o t ( S (:,1)) t i t l e ('Canal 1') s u b p l o t (2,1,2) p l o t (S (:,2)) t i t l e (1Canal 2') sound(S,fs) % Executa audio
Execução: »
cap4_wavread_exemplo
View
In s e rt
Q trB i
File
Ed-.t
fe :
Tools
D esktop
W indow
Si O © ;
3.6
Hep
1□ 0
0 .8
1
I 3
□
1 .2
éJààuL 08
1
1.2
1 .4
16
A 14
18
2\
16
1.8
2 X 10*
240
MATLAB® 7 - Fundamentos
S
wavrecord
Obtém sinal do dispositivo de entrada de som. Sintaxe típica: S = w a v r e c o r d ( n , Fs)
Parâmetros: Entrada n: tamanho da amostra (número de bytes) Fs: freqüência
Saída S: sinal obtido do dispositivo
Exemplo: grava 5 segundos de entrada do microfone e reproduz o som gravado. edit: cap4_wavrecord_exemplo
()________________________________________
echo on % cap4_waverecord_exemplo % Frequencia Fs = 11025; % Grava y = w a v r e c o r d (5*Fs, Fs, 1i n t l õ 1); % Reproduz pause w a v p l a y ( y ,F s );
•S
wavvvrite
Grava arquivo no formato *.wav. Sintaxes típicas: wavwrite(S,arquivo) w a v w r i t e ( S , F s ,arquivo)
Parâmetros: Entrada S: matriz com sinal numérico arquivo: nome do arquivo Fs: freqüência
Saída
Exemplo: lê dois arquivos *.wav, 'emenda' os sinais e grava no arquivo. edit:
I
cap4_wavwrite_exemplo
()______________________
% cap4_wavread_exemplo function cap4_wavread_exemplo ( ) [S ,f s ]= w a v r e a d ('T e s t S n d . w a v 1); % Le 'TestSnd.wav' s u b p l o t (2,1,1) % Exibe os dois canais p l o t (S (:,1))
Leitura e Gravação de Arquivos
t i t l e (1Canal 1 1 s u b p l o t (2,1,2) p l o t ( S (:,2)) t i t l e (1Canal 2' sound(S,fs)
% Executa audio
4.4.4. Arquivos de Imagem S
imfinfo
Obtém informações de arquivo imagem. Sintaxes típicas: fileinfo = iminfo(arquivo) fileinfo = iminfo(arquivo,
fmt)
Parâmetros: Entrada arquivo: nome do arquivo fmt: formatos de arquivo de imagem Formato 'bmp1 'cur' 'gif' 'hdf 'ico' 'jpg' / 'jpeg' 'pbm' 'pcx' 'pgm' / 'png' / 'pnm' / 'ppm' 'ras' 'tif'/'tiff' 'xwd' S
Saída fileinfo: struct com informações
Descrição Windows® bitmap (BMP) Windows® Cursor (CUR) Graphics Interchange Format (GIF) Hierarchical Data Format (HDF) Windows® Icon (ICO) Joint Photographic Expers Group (JPEG) Portable Bitmap (PBM) Windows® Paintbrush (PCX) Portable formats (PGM/PNG/PNM/PPM) Sun Raster (RAS) Tagged Image File Format (TIFF) X Windows® Dump (XWD)
image
Exibe conteúdo de uma matriz como imagem.
MATLAEP 7 ■Fundamentos
Sintaxe típica: image (RGB )
Parâmetros: Entrada RGB: dados da imagem
Saída
Observação: a matriz RGB deve ser uma matriz tridimensional. Cada plano deve conter os planos das cores vermelha, verde e azul.___________________________________________
■/ imread Lê arquivo de imagens. Sintaxes típicas: RGB = imread(arquivo) RGB = i m r e a d (a r q u i v o ,f m t )
Parâmetros: Entrada arquivo: nome do arquivo fmt: formatos de arquivo de imagem
Saída RGB: dados da imagem
Observação: a matriz RGB deve ser uma matriz tridimensional. Cada plano tem de incluir os planos das cores vermelha, verde e azul.___________________________________________
■S imwrite Grava arquivo de imagens. Sintaxes típicas: imwrite (A, arquivo, fmt) imwrite(A,ColorMap,arquivo,fmt)
Parâmetros: Entrada RGB: dados da imagem arquivo: nome do arquivo fmt: formatos de arquivo de imagem
Leitura e Gravação de Arquivos
Saída
Observação: a matriz RGB tem de uma matriz tridimensional. Cada piano deve incluir os planos das cores vermelha, verde e azul. Exemplo: edit: cap4_image_exemplo
()_________________________________
% cap4_image_exemplo (entrada,saida) function cap4_image_exemplo(entrada,saida) rg b = i mread(entrada); i m a g e (rgb) t i t l e (1Imagem O r i g i n a l ') figure s u b p l o t (2,2,1) i m a g e (r g b (:,:,1)) t i t l e ('Mapa da Cor Vermelha (RED)') s u b p l o t (2,2,2) i m a g e (r g b ,2)) t i t l e ('Mapa da Cor V e r d e (GREEN)') s u b p l o t (2,2,3) i m a g e (r g b (:,:,3)) t i t l e ('Mapa da Cor A z u l (BLUE)') s u b p l o t (2,2,4) rg bl=bit e m p (rgb); % Bit complementar i m a g e (r g b l ) t i t l e ('Cor c o m p l e m e n t a r 1) imwri t e ( r g b l ,s a i d a ) ; % Grava arquivo da imagem com cores invertidas
Execução: |»
c a p 4 _ i m a g e _ e x e m p l o ('NGJuly2002.j p g ' ,'c a p 3 .jpg ' );
Mapa da Cor-Vermelha (RED)
Mapa da€or¥&rde|GR£EN) !
200 3 0 04 0 0 500
Nota: imagem disponibilizada pela revista National Geographic: site http://www.nationalgeographic.com/photograpy._______
MATLAB® 7-Fundamentos
4.4.5. Dados de Animação
addframe
Adiciona um quadro ao objeto de animação. Sintaxes típicas: aviobj = a d d f r a m e (aviobj,frame) wavplay(s,fs)
Parâmetros: Entrada
Saída
aviobj: handle de animação
aviobj: handle atualizado
frame: handle de figura (quadro)
•/
avifile
Cria um arquivo de dados de vídeo (*.avi). Sintaxes típicas: aviobj = avifile(arquivo) wavplay(s,fs)
Parâmetros: Entrada
Saída
arquivo: nome do arquivo
aviobj: handle de animação
■S aviinfo Obtém informações de arquivo de dados de animação (*.avi). Sintaxe típica: fileinfo = aviinfo(arquivo)
Parâmetros: Entrada
Saída
arquivo: nome do arquivo
fileinfo: struct com informações
I
245
S
aviread
Lê arquivo de ciados de animação (*.avi) e armazena em uma struct. Sintaxe típica: m o v = aviread
(arquivo)
Parâmetros: Entrada arquivo: nome do arquivo •/
Saída mov: struct com informações
getframe
Armazena a figura corrente em uma struct de quadro de animação. Sintaxe típica: m o v = getframe
Parâmetros: Saída mov: struct de quadro de animação
Entrada
S
movie2avi
Grava conteúdo de struct em arquivo *.avi. Sintaxe típica: movie2avi
(mov,arquivo)
Parâmetros: Entrada mov: struct de quadro de animação arquivo: nome do arquivo S
Saída
movie
Exibe animação e armazena uma struct de quadro de animação. Sintaxe típica: movie(mov)
MATLAB® 7- Fundamentos
Parâmetros: E n trad a
S aíd a
mov: struct de quadro de animação Exemplo: edit:
cap4_avi_exemplo
()_______________________________________
% cap4_avi_exemplo ( ) % Cria uma animacao: surf(peaks) incremental function mov=cap4_avi_exemplo(inic,fim) ind=l; for i = i n i c :fim
surf(peaks(i)); % Gera superficie axis([0 fim 0 fim -10 10]) mov(ind)=getframe; ind=ind+l; end % Grava arquivo movie2avi(mov, 'cap4_avi_exemplo.a v i 1, 1C O M P R E S S I O N ', 'N o n e ')
Execução: »
c a p 4 _ a v i _ e x e m p lo(5,50)
*> F ig u r e 1 Ne
Eét
View
Q iiB S
In s e rt
Tools
D esktop
W in d o w
Help
ts
a Q
4.4.6. Troca de Dados com Internet S
ftp
Abre uma conexão com ftp.
Leitura e Gravação de Arquivos
( 247
Sintaxe típica: obj ftp=ftp(endereço,username,passcode)
Parâmetros: Entrada ftp: endereço ftp username, passcode: nome do usuário e senha
Saída objftp: objeto ftp
Observação: para acesso ftp 'anonimus' não é necessário fornecer username e passcode. O objeto ftp retornado pela função ftp é necessário para a execução das funções de acesso. Função ascii(objftp) binary(objftp) cd(objftp,diretorio) delete(objftp,arquivo) dir(objftp) close(objftp) mget(objftp, arquivo) mkdir(objftp,diretorio) mput(objftp, arquivo) rename(ftp, novo, velho)
Descrição estabelece protocolo ASCII estabelece protocolo binário muda de diretório apaga arquivo lista conteúdo de diretório fecha conexão download de arquivo cria diretório upload de arquivo muda nome de arquivo
Exemplo - execução do arquivo 'cap4_ftp_exemplo.m': » cap4_ftp_exemplo obj f t p = f t p (1f t p . m a t h works.c o m ' ) objftp = F T P Object host: ftp.mathworks.com user: anonymous dir: / m o d e : binary dir(obj ftp) READM E R E A D M E .incoming
incoming
matlab outgoing pickup
pub pubs
c d (obj f t p , 'p u b ' ) ans = /pub dir(obj ftp)
MATLAB9 7 -Fundamentos
:
INDEX NEWFILES
admin beta bin books compiler
conference connections contrib digest doc franee ftphelp
germany italy mathworks matweb.exe ops outgoing patch
Pentium pressroom proceedings product-info tech-support temp utilities
close(obj ftp)
S
sendmail
Prepara e-mail. Sintaxe típica: sendmail (email,assunto .mensagem, anexos)
Parâmetros: Entrada emaii: e-mail do destinatário assunto: assunto do e-maii mensagem: conteúdo do e-maii anexos: cell array com os nomes dos arquivos anexos
Exemplo: edit: cap4_sendmail_exemplo % cap4_sendmail_exemplo echo on setpref ( 'Internet' , 'E_mail' , '[email protected]' ) e m a i l = 'elia_mat s u [email protected] o m . b r '; a s s u n t o = 'Teste para livro'; m e n s a g e m = 'Email c om 2 arquivos a n e x o s '; an e x o s = {'cap4_ftp_exemplo.m' ... 'cap4_sendemail_exemplo.m'} s e n d m ail(email,assunto,mensagem,anexos)
S
unzip
Descompacta arquivo *.zip. Sintaxes típicas: unzip(arquivo_zip) u n z i p (a r q u i v o _ z i p ,diretorio)
Leitura e Gravação de Arquivos
Parâmetros:
Entrada____________________________________________ arquivo_zip: nome do arquivo zip diretorio: diretório no qual os arquivos vão ser descompactados Exemplo: » »
u n z i p {'j p g . z i p ','c :\ t e s t e 1) dir c:\teste
NGJuly2002.jpg
cap3.jpg exercicio5.jpg redeyedfrog.JPG
■ / urlread Retorna uma cadeia de caracteres com o conteúdo da uri indicada. Sintaxe típica: s = urlread(endereço)
Parâmetros: Entrada endereço: URL
Saída s: cadeia de caracteres
Exemplo: » s = u r l r e a d ( 1h t t p ://www.editoraerica.c o m . b r 1) s = < H T M L x H E A D x T I T L E > E d i t o r a Érica Ltda <META c o n t e n t = "te x t / h tml; charset=ISO-8859-l” http-equiv=Content-Type> <META content=master@ erica.com.br name=Edson> <META c o n t e n t = ”Copyright (c) 2003 b y Editora Érica Ltda" name=COPYRIGHT> <META . . .
S
urlwrite
Lê o conteúdo da uri indicada e grava em arquivo. Sintaxe típica: s = urlwrite(endereço,arquivo)
j
MATLAB® 7 - Fundamentos
Parâmetros:
Saída s: nome do arquivo
Entrada endereço: URL arquivo: nome do arquivo Exemplo:
» u r l = 1h t t p ://www.editoraerica.com.br/buscafinal.asp ? c o d = 9 2 0 4 1; » s=url w r i t e ( u r i , 'editora.html') s = C:\matlab7\work\editora.html » open(s) __________________________________________________ % > E d i t o r a E r ic a L t d a 1 File
Edit
View
Ç*
j ^
Go
B
D ebug
: £4
Desktop
W indow
I V o lta r | 1* ín d ic e d o liv ro 1 i Pesquisar peto título, autor, área ou código. utHizando acentuação .
i.
C a t á lo g u G e r a l
íx A d m in is tr a ç ã o e N e g ó c io s ^ A d m in is t r a ç ã o ^ A d m in is t r a ç ã o d o Tem po G r a m á tic a e R edação íS R e c u r s o s H u m a n o s 52 S e c r e ta r ia d o « - T e c n o lo g ia d a i ’ in f o r m a ç ã o
<
S
p j
g
j Location: j C:/m atlab7/w ork/editora.htm l
P e s q u is a r!
f B
Help j
D o w n lo a d
M A T L A B 6 .5 - F u n d a m e n to s d e P ro g ra m a ;! 0 objetivo d e s te liv ro é c a p a c ita r e s tu dantes e profissic superior e pós-gra d u a ç ã o ) a utilizarem o M A TLA B 6.5 < neste am biente, utilizando s u a linguagem de p rogram aç : em m a trizes. Ele d e s c re v e o s tip o s de da d o s fundam entais d e s s a fe re c u rs o s e fu n ç õ e s de im portação e arm azenam ento di fu n ç õ e s de ge ra ç ã o e m a nipulação de g rá fic o s e fig u r í dad o s , des envolvim ento de program as, m ecanism os de am igável com usuário, e ainda lista a s principais funçõe a p licações es p e c ífic a s , com o tratam ento de polinómio, 1 dife re n c ia d a s ordinárias e de ou tro s pro d u to s baseado abordagem s o b re o SymboBc M ath Toolbox. A s e x p lic a ç õ e s estã o sem pre ilus tradas c o n exem plos aprendizado. A u to r(e s ): É lia Y a th ie M a ts u m o to ISBN: 920 4 N Páginas: 344 Peso: 0,553 (Kg) Form ato 17 x 24 c m Categoria L in g u a g e m d e P r o g i R e«l - R * /H,U0 ;|
zip
Compacta arquivos. Sintaxe típica: zip(arquivo_zip,
arquivos)
Parâmetros: Entrada_________________________________________________ arquivo_zip: arquivo compactado arquivos: cell array com os nomes dos arquivos a serem compactados Exemplo: » z i p ('b m p .z i p ','*.b m p ') » dir *.zip bmp.zip jpg.zip
Leitura e Gravação de Arquivos
( 251
4.4.7. Outros Tipos de Funções y
serial
Acesso à porta serial. Sintaxe típica: s=serial(porta) serial(s,prop,valor)
Parâmetros: Entrada endereço: URL prop: propriedade val: valor
Saida s: handle de porta serial
Exemplo: » »
s = s e r i a l {1C O M 1 1); set(s) ByteOrder: [ {littleEndian} | bigEndian ] BytesAvailableFcn: string -or- function handle -or- cell array BytesAvailableFcnCount Re a d A s y n c M o d e : [ {continuous} | manual RequestToSend: [ {on} | off ] StopBits Terminator
]
A comunicação com portas seriais é feita pelas funções de entrada e saída de 'baixo nível'.
Parâmetros:
Entrada arquivo: nome do arquivo S
Saída node: objeto documento
xmlwrite
Grava as informações do document object model node em um arquivo. Sintaxe típica: s tr=xmlwri te (a r q u i v o ,node )
Parâmetros: Entrada arquivo: nome do arquivo node: objeto documento S
Saída str: conteúdo em cadeia de caracteres
xslt
Converte documentos XML. Sintaxe típica: xslt(origem,
estilo,
destino)
Parâmetros: Entrada origem: nome de arquivo ou URL origem estilo: estilo do arquivo ou URL destino: nome de arquivo ou URL destino
Leitura e Gravação de Arquivos
Anotações
254
MATLAB® 7-Fundamentos
C a p ítu lo
5
Gráficos e Handle Graphicsí®
Neste capítulo, apresentamos os recursos gráficos_ do MATLAB® 7 e os gráficos bi e tridimensionais e suas propriedades; configuração de acabamento de superfície, iluminação, sombreamento e controle de visualização. O conjunto desses recursos é denominado Handle Graphics
5.1. Gráficos Neste tópico, listamos os principais elementos e recursos relacionados à criação e manipulação de gráficos do software. Plot é a principal ferramenta para geração de gráficos do programa. Sua função básica é gerar gráficos bidimensionais a partir dos valores X e Y. Como já mostrado, sua sintaxe básica é: p l o t ( x l ,y l ,fml /x 2 ,y 2 ,f m 2 , ■ . ■)
H3
Além disso, existem funções que configuram aspectos informativos do gráfico. Por exemplo: title, xlabel, legend. Estes, e todos os outros parâmetros de configuração de gráficos, podem ser programados individualmente, por meio de funções de programação, ou interativamente por meio do utilitário [Plot Tools], acionável pelo ícone de mesmo nome, presente na barra de ferramentas da janela gráfica.
5.1.1. Utilitário Plot Tools Considere o gráfico gerado pela execução do arquivo cap2_exercicio_
Gráficos e Handle G r a p h i c _______ ______ ______________________ ________V 5 >
Figure 1 File
Edit
View
In s e rt
Tools
D esktop
W indow
Help
E A pro x im a c a o por pi
E E
+ —
▼ A nn o ta tio ns \
Line A r ro w
\
Double A r r o w
^
T ext A r ro w
T I
T ext B ox I Rectangle
Property Editor - Figure F ig ure Name.
G 3 S h o w Figure Num ber
[
Inspector...
Colo r map: F ig ure C o lo r
[Plot Tools] Tool Bar (opções da barra de ferramentas) □ B tcone
□
Nome
Ação
D
New figure
Cria nova figura
Qár
Open file
Abre arquivo
Q
Save
Armazena arquivo
<§
Print
Imprime
Edit plot
Habilita/desabilita modo de edição de objeto
! ♦
Identifique elemento para disponibilizar as opções de propriedades pertinentes ao objeto selecionado.
♦
O objeto também pode ser identificado na janela à direita [Plot Browser],
♦
As modificações são automaticamente exibidas no gráfico.
MATLAB »7-Fundamentos
No caso, o objeto selecionado é uma curva cujas propriedades configuráveis são: ♦
[Plot Type]: tipo de gráfico.
♦
[Line]: tipo de linha, espessura e cor.
♦
[Marker]: marcador, espessura e cor.
Para eixos, temos: ♦
[Title]: título do eixo.
♦
[Colors]: cor.
♦
[Grid]: grades nos eixos X, Y e Z.
Gráficos e Handle Graphics®
♦
[Box]: linha de contorno.
♦
[X Axis], [Y Axis], [Z Axis], [Font]: propriedades por coordenada: .. Labei]: título. .. Limits]: valores mínimo e máximo de coordenada. .. Scale]: escala linear ou logarítmica. .. Ticks]: divisões, configuráveis em uma outra janela. [Font]: fonte de texto.
r A nn ota tion s \
U ne A r ro w
\
ouble A r ro w T ext A r ro w
ÉmwaróniiHÊÉia Titta
A p ro xim a ca o por polm omio de g r a j 1
......... .. ™..... C oiors j f o >| j £ - j
0X 0
0Y
: X A x is
y A x is
...............................;
Z Axs
FonS
X Labei: ! Tempo
Q z
E3ox
ícone ® .
Nome
Ação
Zoom in/Zoom out
Aproxima / Afasta visualização
Pan
Desloca visualização
M/4TM0® 7-Fundamentos
ícone
Nome
Ação
Rotate 3D
Roda imagem em 3 dimensões
ou, para gráfico 3D: ícone 11=1
Nome
Ação
Data cursor
Insere informação dos pontos da curva
O gerenciamento dos datatips é feito pelo menu contextuai, acionável pelo botão direito do mouse. Aproxii
por poiínom lo de grau. 1 ;
140
120 +
100
. X: 63.27 , Y: 97.26 ! :
*
Selection Style D is p la y S ty le
80
+ A
60
Y
+ + y
/
y
* C r e a te N e w D a ta tip
+ ++
a
E x p o r t C u rs o r D c to t o W o rk s p a c e ...
/ + 20
leone
40
60
:
Nome
Ação
□
Insert colorbar
Habilita/desabilita exibição de barra de cores
m~
Insert legend
Insere legenda
Hide/Show plot tools
Habilita/desabilita exibição do Plot tools
□ a
Gráficos e Handle Graphics®
D e le te
D e le te A il D a ta tip s
! X: 32.55
40
20
A !t-C lic k
D e le te C u r re n t D a ta tip
Colorbar Apíoximacao por poiinomio de grau 1 dati
120
Cut
- dst
Copy Delete
100
C olor... Edge C olor... Line W idth
*Y * j. /
S0
►
F o n t...
: 40
In te rp re te r
►
O rie n ta tio n
►
P roperties...
20
S to w M-code J
20
60
...........!
100
.......
I
Inside N o rth East O utside N orth East Inside S outh East Inside N orth W est O utside N orth W est Inside S outh W est
Legenda
As propriedades da legenda e colorbar podem ser configuradas por seus menus contextuais. [Plot T ools]: Plot Brow ser (janela à direita)
MATLAB ® 7-Fundamentos
■
♦
Controla, por meio de check-box, a exibição dos objetos que compõem os eixos: textos de títuio, eixos (axes) e curvas (indicadas por legenda).
♦ O menu contextuai permite: desabilitar/habilitar exibição e eliminar objeto. ♦ [Add Data]: permite trazer variáveis do workspace para a figura e escolher o tipo de gráfico com o qual os valores vão ser exibidos. [Plot Tools]: Figure Palettes (janela à esquerda) ♦ [New Subplots]: cria novos eixos (2D e -
A subdivisão é definida pelo ícone
3D) na figura (subplot). EB ►(Create tiled subplots).
O novo eixo aparece no [Plot Browser].
♦
[Variables]: expõe variáveis do Workspace, que podem ser adicionadas aos gráficos.
Gráficos e Handle Graphics® _______________________
♦
[Annotations]: exibe elementos de anotação, que podem ser inseridos na figura. [Line]: linhas
▼ A nnotations
[Arrow]: setas
\
U ne
N-\
A rro w
[Double Arrow]: setas com duas pontas
Double A r ro w ^
[Text Arrow]: textos com seta
T
T e x t A r ro w T e x tB o x
1 1Rectangle
[Text Box]: textos
O
Ellipse
[Rectangle]: retângulos [Ellipse]: elipses jroxim acao por poin om io de gt
+
ij 3 A x e s (n o tile ) ;Í0 -------y ;
A n notations
\üne... \
A r ro w
\
Double A r ro w Toxt A r ro w
T I
T e x tB o x I Rectangle
|O
Ellipse
Observação: elementos de anotação são objetos pertencentes à figura; desta forma, podem ser posicionados em qualquer região da figura (não ficam restritos aos limites dos eixos) e não aparecem no [Plot Browser],________________________________________________ [Plot Tools]: Properties Editor ♦
( ja n e la
inferior)
Editor de propriedades. Seu conteúdo é variável de acordo com o objeto que está sendo editado.
Propriedades da seta com duas pontas: X
P r o p e r ty E d ito r - D o u b te a rra w Line Style:
j --------------
U n e Width: 10 5 C o lo r
\vmm *1
Head Style:
v v
;
iv b a c k l
V
; vback: 2
Head Width: [ 10.0
v
H e a d L e n ÿ h h 0.0
v j : 10.0
100
v ’
J
Insp ector...
--------
•v ; v;
Todas as propriedades da figura e dos eixos podem ser ajustadas pelas três janelas apresentadas: [Figure Pallete], [Plot Browser] e [Properties Editor],
MATLAB8 7 - Fundamentos
Essa configuração pode ser automaticamente armazenada em um m-file para uso posterior. Por exemplo, considere a configuração pronta com o aspecto ilustrado na figura seguinte:
Acione a opção [Generate M-file] no menu pop-up [File] do [Plot Tools], O m-file com as configurações é automaticamente gerado e exibido no edit. Editor - Untitled?* F ie
M Ê M E dit
View
In s e rt
N ew
►
O p e n ...
C trl+ O
Close
C trl+ W
Save
C trl+ S
S ave A s ...
.
E dit
Text
D a£ y
Tools
CeB
Tools
D ebug
D esktop
X % f t
W indow
Help
M f , \M ® ! 4
function createfigure(xl, yl, y2) %CRE ATE FICURE{XI,Yi,Y2) vector of x data
.
Im p o rt D a ta ... S ave W orksp ace A s.... P re fe re n c e s ... E x p o rt S e tu p ...
%% Create axes axesl = axes(1Parent*,figure1) ; title (axes 1 , 'AproxiííííiCcio poi; palifcosiio
Page S e tu p ... P rin t S e tu p ... P rin t P re v ie w ... P rin t..;
C trl+ P
________________________________ createfig ure___________
In
34
Col
1 ;
Esse recurso facilita a codificação das funções de configuração de atributos de geração de gráficos, pois o m-file gerado pode ser inserido dentro de outros códigos. Por exemplo:
Gráficos e Handle Graphics®
( 263
Função
Ação cria eixo na figura configura eixo formato de marcadores de eixos configura grades legenda cria subjanelas cria textos título do gráfico título do eixo X título do eixo Y título do eixo Z
axes axis datetick grid legend subplot text title xlabel ylabel zlabel
[Plot Tools] Menu Pop-up Menu
Opções P
Conteúdo New: criação de arquivos View
In s e rt
D esktop
Tools
ffe iV
Wine
Open/Close: abre/fecha arquivos
M-File
► C trl+ O
Figure
Close
C trl+ W
Variable
Save
C trl+ S
GUI
O p e n ...
Save, Save As: armazena arquivos Generate m-file: cria m-file
Save A s ... G en erate M -File...
File
Import Data: importação de dados
Im p o rt D a ta ... Save W orkspa ce A s ...
I
Save Workspace /4s; salva variáveis
P re fe re n c e s ... E x p o rt S e tu p ...
Preferences: preferências
:
Page S e tu p ...
Export Setup, Page Setup, Print: confi guração de exportação e impressão de figuras (veja o tópico 3.5.2).
P rin t S e tu p ... P rin t P re v ie w ... P rin t...
C trl+ P
P | l l View : In s e rt
Tools
D esktop
th b
V
Edição 'padrão Windows': ♦ Undo, Redo
R edo
♦
Cut, Copy, Paste, Paste Special
G r i* V
♦
Select All, Delete
C trl+ A
♦
Copy Figure: copia figura
♦
Copy Options: opções de cópia
♦
Figure Properties, Axes Properties, Current Object Properties: abre editor de proprie dades da janela inferior
♦
Colormap: opções de mapas de cores
Cut
G rH -X
C opy
GH +C
Paste Ctear Select All C o py Figure
Edit
C o py O p tio n s ... Fig ure P ro p e rtie s ... Ax e s P ro pe rtie s... C u rre n t O b je c t P ro p e rtie s ... Colorm ap ... Find Files... Clear Figure Clear Command W indow Clear Com mand H istory Clear W orkspace
♦ Find Files: busca de arquivos Instruções de limpeza de conteúdo de janela
MATLAB ®7 ■Fundamentos
Menu
Opções
Conteúdo Habilita/desabilita barra de ferramenta: Figure Toolbar In s e rt
Tools
Camera Toolbar
✓ Figure Toolbar Cam era Toolbar
View
Plot Edit Toolbar ■/ Figure Palette V Plot Browser
Plot Edit Toolbar abilita/desabilita exibição de janela: Figure Palette Plot Browser Property Editor sere elementos na figura: X Label: título do eixo X Y Label: título do eixo Y Z Labei: título do eixo Z
Tods
Desi
X Label Y Label
T itle Legend C olorbar Line
Insert
A rro w T e x t A rro w D ouble A rro w T e x tB o x R e ctangle Ellipse A xes
Title: título do gráfico Legend: legenda Colorbar: barra de mapeamento de cores Line: linha Arrow: seta Text Arrow: texto com seta Double Arrow: seta com duas pontas TextBox: texto
Light
Rectangle: retângulo Elipse: elipse Axes: eixo Light: luz D e s k to p : W indow . Hei
Zoom In . Zoom O u t Pan
Edit Plot: habilita/desabilita edição Zoom In, Zoom Out, Pan, Rotate 3D: con trole de visualização
R o ta te 3D D a ta Cursor R e s e t View
Tools
O ptions Pin to A x e s S nap To L a y o u t G rid View L a y o u t Grid S m a rt A lign a n d D is trib u te A lign D is trib u te T o o l... Align D is trib u te Basic F ittin g D a ta S tatistics
Desktop
Gráficos e Handle Graphics®
Dock Figure 1
Data Cursor: informação da curva Reset View: restaura vista ecursos de distribuição de elementos na janela Basic Fitting: recursos básicos de ajuste de curvas Data Statistics: estatística de dados (veja próximos tópicos)
Menu
Opções
Conteúdo Help
Window
Controle de janelas
0 MATLAB Com mand W indow 1 Fig ure 1
Ip G raphics Help P lo ttin g Tools A n n o ta tin g G raphs
Help
Recursos de help
P rin tin g an d E x porting W eb R esources
►
C h eck fo r U pdates Dem os A b o u t MATLAB
5.1.2. Exportação e Impressão de Figuras Os recursos de exportação e impressão de figuras estão acessíveis no menu pop-up [File], ♦
[Export Setup]: configuração de parâmetros de exportação de figuras. -
[Properties]: configura tamanho, tipo de acabamento, tipo de fonte e linha. [Export Styles]: estilo de exportação (MS-Word ou MS-PowerPoint).
-
[Export]: nome de arquivo e tipo (listados no tópico 3.4.2). ■«^'Export Setup: Figure 1 P ro p e rtie s ..................................................................................................
W lÍSÊÊÊÉÈÊÊ&
'! iFp®*'"'» o nts
!;
W idth: I auto H e ig h t; auto
Line s
:v í Units;! in c h e s
:'
f ~ l Expand a x e s to f i figure
Exp o rt S ty le s L oa d s e ttin g s from : S ave a s s ty le nam ed Delete a style.
♦
[Page Setup]: configuração da folha de impressão. [Size and Position]: tamanho e posicionamento. [Paper]: tipo do papel (A4, Letter, etc.). [Lines and Text]: tipos de linha e texto. [Axes and Figure]: definição de eixos.
MATLAB®7- Fundamentos
: M ode
; O Use screen size, centered on paga' I 0 Use manual size and position Manual size and position Top;
Í3.31
Left
Í7 [1.33
W id th :
-5.83
U s e d e fa u lts F ill p a g e v -' | F ix a s p e c t ra tio |
H e ig h t
U .38
U n i t s jm c h e s
Help..
OK
j[
Cancel
]
Name:
♦
[Print Setup]/[Print]: configuração de impressão. -
Janela de impressão padrão de aplicativos.
Status:
Ready
Type:
HP LaserJet 5
W ien»:
W enstetn'jp
Comment:
I
Paper
Source:
& Portrait
jJ
i Sue: | Automatical-y Select
j» ]
Landscape
C ancel ;
1 Print Preview-Figuro 1 Page S e tu p ..
♦
Refresh
Close
[Print Preview]: pré-visualização da página de impressão.
EE Gráficos e Handle Graphics®
267
5.1.3. Utilitário Basic Fitting Estes recursos encontram-se no menu pop-up [Tools], Definem e aplicam métodos de ajuste de curvas para os dados selecionados. B a s ic F i t t i n g - 1
j»
" J B a s ic F i t t i n g
Select data: .0
v ;
Center an d s ca le X data
v
[ j Center and s cale X data
C heck to display fits cut fig u re : j O spline interpolant i 1 C 3 s h a p e -p rese rving interpolant j . O line a r I :: |! _ ] q uadratic j !' | D c u bic ' ! | U 4th degree polynom ial | j O 5 th degree polynom ial i ;(_J 6th degree polynom ial h O 7th degree polynom ial j O 8th degree polynom ial i Q 9th degree polynom ial j 0 10 th degree polynom ial
C heck to dispiay tits on figure □ s p lr.e interpolant :[_ | shape-preserving interpolant
\n ! •
v
Sigrdficant digits:
I i Plot residuals
J2
v i
B ar plot
v
Subplot
v :
Subplot
v |
S h o w norm o 1residuals
j[
C lose
j
I j j
! ;
v |
□ Pic* residuals
: Bar plot
Help
v
C oefficients and norm o l resichjals 1
□ S h o w equations
S ignificant digits . 2
0
Fit s
• Q 6r|ear O quadratic Q cubic □ 4th degree polynom ial [_J 5th degree polynomial 0 6th degree polynomial \ | 7th degree polynomial j__I 8th degree polynom ial n 9th degree polynom ial | 1 10th degree polynom ial
[ j S h o w equations
|
1
Select d ata
j
(
0
\
•f
Hefei
S h o w norm c f residuals
jj
Close
,4
........
J i ......
]
L fc ir l:]
♦
[Select Data]: permite escolher o conjunto de dados a serem utilizados.
♦
[Center and Scale X data]: habilita/desabilita ajuste e centralização dos dados em X. [Plot fit]: método de ajuste de curvas. -
spline interpolant: usa função spline; shape-preserving interpolant: usa função pchirp;
-
linear: interpolação linear (aX + b); quadratic: interpolação quadrática; cubic: interpolação cúbica;
-
nth degree polynomial: interpolação de grau n.
[Show equations]: habilita/desabilita exibição das equações. [Significant digits]: dígitos significativos para exibição das equações. [Plot residuals]: habilita/desabilita exibição de gráficos de resíduos. [Bar/Scatter/Line Plot]: tipo de gráfico de resíduos. [Subplot/Separte Figure]: exibe gráfico de resíduos como subplot ou em outra janela. [Show norm residuals]: habilita/desabilita exibição de média residual.
268
MATLAB® 7 - Fundamentos
♦
[-» ]: abre janela de exibição de resultados.
Exemplo: ♦
Gráfico dos dados do arquivo 'cap2_dados1 .txt': método de interpolação linear com exibição de equações e gráficos de resíduos. A p f s r i m s c a c ;> ar p o i iü o m b d s g r a u 1 Select d a ta i data 1
y = 1 .2 *x * 12
D Center and sc ale X data
+
* dataT~M --------- lineaf ------------ d a ta 2
Pic* fits........................................................-
H
*
:: Check to display fits on figure : i D spline interpolant shape-preserving interpolant i .iP ] linear
iE P«
I f ! quadratic ■ H cubic 11 I 4th degree polynomial 5th th 7th 6th
de g re e de g re e de g re e de g re e
----- d a ta 2 ----- linear
S:l P I re sidu als
P
::]□ ii f i f :G ■if |
; ß A p ro x im a c a o por polinomio de gt ;P I 4- ' data 1 'iE 1 E
fe-síduaís
polynomial polynomial polynomial polynomial
;L j 9 th d e gre e polynomial : :[_] 10th deg ree polynomial
M
i
E S how equations Signitcant digits::.!2
;.V-:
R 1 Plot residuals j Bar plot
0
:V i
18
20
30
40
50
6Ü
70
80
30
; ; Subplot
Q
Show m
E3 S how Figure Number [
Help
] I
Close
[
: (
inspector ......
[ I
♦
j:
| Export Setup...
Gráfico dos dados do arquivo 'cap2_dados2.txt1: método de interpolação linear, quadrática e spline; com exibição de equações e gráficos de resíduos. Aproxsmacao po; polinomio de grau 1 i | E Ap'oxim acao por poinom o dc \
ïÉ + da*«»1
Select data: ; i data 1 P ] Center and scale X data •Plot fits ............................................................Check to display fits o n »igur#___ i j s 3 s plin e in te rp o ia rt :L J s h a p e -p re s e rv in g inte rpo la nt
1000
Cubic spline interpolant y = 17*x-2.3e+0Q2 y = 0.17*x2 - 0.27*x + 43
y (y!
----- data 2 ----- quadratic
jJE
-----
IE
500
f:iE
is '•«ear
;Vj quadratic P cubic
40
50
I
I ,
60
70 ;
SO
100
spline
-linear residua>s
E
;j7j
: i . n 4th deg ree polynomial O 5th deg re e polynomial H 6th deg ree polynomial j Q 7th deg re e polynomial 1f~l 8th deg re e polynomial H 9th deg re e polynomial 0 10th deg re e polynomial
Illiiil F
R S h o w equations Significant d ig is
2
í r
í 1
1P'T
j
Gij Plot residuals i Bar plot
v j
j Subplot
V ;
' n
ji |l
10
20
30 . 4 0
50
U.,. IlLI [Jilïï[ ' T f 60
70
80
90 !
3S
S h o w norm of residuals ::: E S h o w Figure Number
Inspector...
Export Setup...
5.1.4. Utilitário Data Statistics Estes recursos estão no menu pop-up [Toolsj. Exibem dados estatísticos.
Gráficos e Handle Graphics®
|
♦
[Statistics for]: permite escolher o conjunto de dados a serem utilizados.
♦
[Check to plot statistics on figure]: habilita/desabilita exibição da informação. -
p ia m a —
e g g
min: valor mínimo (X, Y) C heck to plot sta tis tic s on figure:
max: valor máximo (X, Y) mean: média (X,Y) median: mediana (X,Y)
, ,
X min max : mean i median i s td 1 range 1
Y
•o
3 .3 1 7
ioo O
1 3 9 .9
50 O
7424
50 Q
7 3 .6 5
2 9 .7 5 q
38 .1 1
100 !
I
_ —
1 3 6 .6
std: desvio padrão (X,Y) ♦
[Save to workspace]: armazena as informações em uma variável do workspace.
S ave to w o rk s p a c e ...
) |
Help
] [
C lose
)
Exemplo: ♦
Gráfico dos dados do arquivo 'cap2_dados1.txt' com todas as informações estatísticas para o eixo Y.
5.1.5. Funções Gráficas 2D Neste tópico, listamos as principais funções de gráficos bidimensionais.
Gráficos Tipo 'Plot' s
comet
Trajetória animada do gráfico de (x,y).
MATLAB® 7 - Fundamentos
Sintaxe típica: comet(x,y)
Parâmetros: Entrada (x,y): pontos do gráfico Exemplo: » x=-2*pi:0.01:2*pi; » y=x.*cos(3*x); » comet(x,y)
S
errorbar
Gráfico de (x,y) com barras de erro indicadas pelos vetores ei, es. Sintaxe típica: errorbar(x,y,ei,es,fmt)
Parâmetros: Entrada (x,y): pontos do gráfico ei: vetor de valores de erro inferior es: vetores de valores de erro superior fmt: formato da curva Exemplo: edit: cap5_errorbar_exemplo.m echo on % cap5_errorbar_exemplo( ) x=linspace(0,pi,20); y=cos(x); ei=std(y)*0.3*ones(1,20); es=std(y)*0.l*ones(1,20); errorbar(x,y,ei,es)
Gráficos e Handle Graphics®
S
hold
Habilita/desabilita sobreposição de gráficos na mesma janela de figura. Sintaxe típica: hold on/off
S
polar
Gráfico de coordenadas polares. Sintaxe típica: polar( ang,dist,fmt )
Parâmetros: Entrada_________________________________________________ (ang, dist): coordenada polar dada por ângulo em radianos e distância fmt: formato da curva Exemplo: » ang=linspace(-pi,pi,3 0 ) » dist=linspace( 0 , 1 , 3 0 ) ; » polar(ang,dist)
MATLAB3 7 - Fundamentos
S
plotyy
Cria gráficos de duas curvas com escalas Y diferentes: 1- curva com eixo na esquerda e 2- na direita. Sintaxe típica: plotyy (xl,yl,fmtl,x2,y2,fmt2)
Parâmetros: Entrada______________________ (x1 ,y1) e (x2,y2): pontos das curvas fmtl e fmt2: formatos da curva Exemplo: » » » » » » »
x=linspace(-2*pi,2*pi,20); subplot(1,2,1) plot(x,sin(x),x,exp(x)) title(1Plot') subplot(1,2,2) plotyy(x,cos(x),x,exp(x)) title('Plotyy')
Gráficos de Área Preenchida, Barra e Pizza
s
area/bar/barh
area: gráfico de área preenchida, bar: gráfico de barra vertical, barh: gráfico de barra horizontal. Sintaxes típicas: area(m) / area(x,Y) bar(m) / bar(x,Y) barh(m) / barh(x,Y)
Parâmetros: Entrada_____________________ m: matriz (exibe dados por coluna) (x,Y): dados do eixo X e eixo Y Exemplo: edit: cap5_area _exemplo.m % cap5_area_exemplo x=l:6; y=sin(x)+randn(1,6)*0.1; subplot(1,3,1) area(x,y) title('Area') subplot(1,3,2) bar(x,y) title('Bar1) subplot(1,3,3) barh(x,y) title('Barh')
pie
s
Gráfico de pizza. Sintaxes típicas: pie(x) 7 pie(x,ie) pie(x,xe,labels)
Parâmetros: Entrada x: dados ie: indicador de fatias 'explodidas' labels: nome das fatias Exemplo: >> » >> >>
x=[l 4 2 5 3 2 ] ; ie=[0 1 0 0 1 0] ; nomes={1Jan1 'Fev1 'Mar' 'Abr' 'Mai ’ 'Jun'); pie(x,ie,nomes)
G ráficos de D ireção y
compass
Desenha vetores com origem (0,0) dentro de eixo polar. Sintaxe típica: compass(u,v)
Gráficos e Handle Graphics®
Parâmetros: Entrada_______________________ u: vetor com valores no primeiro eixo v: vetor com valores no segundo eixo Exemplo: » u=[l 0 -1 0] ; » v=[0 1 0 -1]; » coinpass (u,v)
s
feather
Desenha vetores que deslocam a origem automaticamente. Sintaxe típica: feather(u,v)
Parâmetros: Entrada u: vetor com valores no primeiro eixo v: vetor com valores no segundo eixo Exemplo: >> u=0:0 .5 :2 ; » v=u+l; » feather(u,v)
■ / quiver Dadas 4 matrizes, desenha vetores de direção bidimensionais. Sintaxe típica: quiver(X,Y,U,V)
Parâmetros: Entrada (X,Y): pontos da 18 coordenada dos vetores (U,V): pontos da 2- coordenada dos vetores Exemplo: arquivo cap3_gradient_exemplo.m edit: cap3_gradient_exenplo.m_______ % cap3_gradient_exemplo () echo on % Gerar superficie [X,Y]=meshgrid(-pi:0.2:pi,-pi:0,2:pi); Z=cos(X).*Y; % Calculo do gradiente % Derivadas parciais da curva [PX,PY]=gradient(Z,0.2,0.2); % Visualizacao dos resultados subplot(2,1,1) surf(Z) title('Superficie1) subplot(2,1,2) contour(Z) hold quiver(PX,PY) title('Gradientes')
Gráficos e Handle Graphics®_______________________________ _________ ^277^
Gráficos de Dados Discretos
s
stem / stairs
stem: gráfico de hastes, stairs: gráfico de degraus. Sintaxes típicas: stem(x,y) stairs(x,y)
Parâmetros: Entrada x,y: pontos Exemplo: » >> » » » » » »
W
x=-pi:0.2:pi; y=sin(x); subplot(1,2,1) stem(x,y) title('Stem') subplot(1,2,2) stairs(x,y) title('Stairs’)
5.1.6. Funções Gráficas 3D Neste tópico, arrolamos as principais funções de gráficos tridimensionais.
Curvas 3D
s
plot3 / comet3
plot3: gráfico de curva 3D. comet3: gráfico de curva 3D com exibição de trajetória animada. Sintaxes típicas: plot3(x,y,z) comet3(x,y,z)
MATLAB ®7-Fundamentos
Parâmetros: Entrada_________________ (x,y,z): coordenadas da curva Exemplo: edit: cap5_plot3_exemplo.m % cap5_plot3_exemplo x=-5*pi:0.1:5 *pi; y=-5*pi:0.1:5*pi; z=x+y; subplot(1,2,1) plot3(cos(x),sin(y),x+y) title(1Plot31) subplot(1,2,2) comet3(cos(x),sin(y),x+y) title(1Comet31)
■S ribbon Gera um gráfico tipo 'fita' tridimensional. Sintaxe típica: ribbon(x,y)
Parâmetros: Entrada________________ (x,y): coordenadas da curva Exemplo: » x=-pi:0.1:pi; » y=x.*cos(3*x); » ribbon(x,y)
Gráficos e Handle Graphics®
Área e Pizza 3D y
bar3 / bar3h
bar3: gráfico de barra 3D vertical. bar3h: gráfico de barra 3D vertical. Sintaxes típicas: bar3(m) / bar3(x,Y) barh3(m) / barh3(x,Y)
Parâmetros: Entrada m: matriz (exibe dados por coluna) (x,Y): dados do eixo X e eixo Y Exemplo: » y=sin(x)+randn(1,6)*0.1; » subplot(1,2,1) » bar3(x,y) » title(’Bar31) » subplot(1,2,2) » bar3h(x,y) » title(1Bar3h')
li ■S pie3 Gráfico de pizza. Sintaxe típica: pie3 (x)
Parâmetros:
II
Exemplo: » >> >> >>
x—[1 4 2 5 3 2 ] ; ie=[0 1 0 0 1 0]; nomes={1Jan1 'Fev' 'Mar' 1Abr 1 'Mai ' 1Jun'}; pie3(x,ie,nomes)
Malhas e Superfícies y
cylinder
Retorna as matrizes com coordenadas MX, MY e MZ necessárias para criar uma superfície cilíndrica. Sintaxe típica: [MX,MY,MZ] = cylinder(Raio,N)
Parâmetros: Entrada Raio: raio do cilindro. Se for um vetor, gera cilindro com diâmetro variável N: número de faces ■ / ellipsoid Retorna as matrizes com coordenadas MX, MY e MZ necessárias para criar um elipsóide. Sintaxe típica: [MX,MY,MZ] = ellipsoid(XC,YC,ZC,XR,YR,ZR,N]
Parâmetros:
s
meshc / mesh I surf I surfc / waterfall
Variações de gráficos de superficies, meshc: malha com curva de nível, mesh/surf: m alha/superfície. surfc/surf: superfície com curva de nível / com efeito de iluminação, waterfall: malha fechada na lateral. Sintaxes típicas: mesh(MX,MY,MZ) mesh(MZ)
Parâmetros: Entrada_______________________________ MX, MY, MZ: matrizes de coordenadas X, Y e Z Exemplo: edit: cap5_mesh_exemplo,m % cap5_mesh_exemplo x=-pi:0.5:pi; y=-pi:0.5:pi; [MX,MY]=meshgrid(x,y); MZ=cos(MX)+sin(MY); subplot(2,2,1) meshc(MX,MY,MZ) title('Meshc1) subplot(2,2,2) surf(MX,MY,MZ) title('Surf 1) subplot(2,2,3) surfc(MX,MY,MZ) title('Surfc1) subplot(2,2,4) waterfall(MX,MY,MZ) title('Waterfall')
s
meshgrid
A partir dos vetores X e Y dos eixos, cria as matrizes com coordenadas MX, MY (resultantes do cruzamento de X e Y), necessárias para criar malhas e superfícies. Sintaxe típica: [MX,MY] = meshgrid(X,Y)
MATLAB3 7 ■Fundamentos
Parâmetros: Entrada X,Y: vetores com coordenadas dos eixos s
Saída MX,MY: matrizes de coordenadas
peaks
Retorna as matrizes com coordenadas MX, MY e MZ necessárias para criar a superfície peaks. Sintaxe típica: [MX,MY,MZ] = peaks(N)
Parâmetros: Entrada_________ N: número de faces s
sphere
Retorna as matrizes com coordenadas MX, MY e MZ necessárias para criar uma esfera. Sintaxe típica: [MX,MY,MZ] = sphere(N)_____________________________________________
Parâmetro: Entrada______________________________________________________________________ N: número de faces_____________________________________________________________ Exemplos: edit: cap5_£ormas3d_exemplo.m_____________ % cap5_formas3d_exemplo [MX1,MY1,MZ1]=cylinder([1 0.5 1],20); [MX2,MY2,MZ2]=ellipsoid(0,0,0,0.5,0.1,3,20); [MX3,MY3,MZ3]=peaks(10); [MX4,MY4,MZ4]=sphere(20); subplot(2,2,1) surf(MX1,MY1,MZ1) title(1Cylinder') subplot(2,2,2) surf(MX2,MY2,MZ2) title('Ellipsoid') subplot(2,2,3) surf(MX3,MY3,MZ3) title('Peaks') subplot(2,2,4) surf(MX4,MY4,MZ4) title('Sphere')
Gráficos e Handle Graphics®
( 283
Gráficos de Direção 3D e Dados Discretos v'
quiver3
Dadas 3 matrizes, desenha vetores de direção tridimensionais. Sintaxe típica: [MX,MY,MZ] = quiver3(X,Y,Z,U,V,W)
Parâmetros: Entrada______________________________ (X,Y,Z): pontos da 1a coordenada dos vetores (U,V,W): pontos da 2a coordenada dos vetores Exemplo: edit: cap5_quiver3_exemplo.m % cap5_quiver3_exemplo x=-pi:0.5:pi; y=-pi:0.5:pi; [MX,MY]=meshgrid(x,y) MZ=sin(MX)+ C O S (MY); [U,V,W]=surfnorm(MX,MY,MZ) ; quiver3(MX,MY,MZ,U,V,W); hold on surf(MX,MY,MZ)
MATLAB®7- Fundamentos I
y
stem3
Gráfico de hastes 3D. Sintaxe típica: stem3(x,y, z)
Parâmetros: Entrada x,y,z: pontos Exemplo: » » » » »
S
t=0:0.2 :2*pi; x=cos(t); y=sin(t); z=x+y; stem3(x,y,z)
surfnorm
Retorna os vetores normais de uma superfície. Sintaxe típica: [NX,NY,NZ] = surfnorm(MX,MY,MZ)
Parâmetros: Entrada MX,MY.MZ: coordenadas da superfície
Gráficos e Handle Graphics®
Saída NX,NY,NZ: vetores normal
Gráficos de Curva de Nível s
contour I contourS / contourc / contourf
Desenha curva de nível de superfície, conlour: curva de nível em 2D. contour3: curva de nível em 3D. contourf: curva de nível em 2D, preenchida. Sintaxe típica: c o n t o u r ( M X , M Y, M Z ) c o n to u r(M Z )
Parâmetros: Entrada_______________________________ MX, MY, MZ: matrizes de coordenadas X, Y e Z Exemplo: edit: cap5_contour _exemplo.m % cap5_contour_exemplo x = - p i :0.5:p i ; y = - p i :0.5:pi; [MX,MY]= m e s h g rid(x,y); M Z = c o s (MX)+ s i n (MY); s u b p l o t (2,2,1) s u r f (MZ) t i t l e (1Superficie 1) s u b p l o t (2,2,2) contour(MZ) t i t l e ('Curvas 2D') s u b p l o t (2,2,3) contour3(MZ) t i t l e ('Curvas 3D') s u b p l o t (2,2,4) contourf(MZ) t i t l e (1Curvas p r e e n c h i d a s ')
5.1.7. Gráficos de Fórmulas Matemáticas •/
ezcontour
Curva de nível de função matemática de duas variáveis.
Sintaxes típicas: ezcontour (f) ezcontour (f, dom)
S
ezcontourf
Curva de nível preenchida de função matemática de duas variáveis. Sintaxes típicas: ezcontourf (f) ezcontourf (f, dom)
Parâmetros: Entrada______________________________ f: função (descrita como cadeia de caracteres) dom: domínio Exemplo: I » ezcontour('cos(x)+sin(y)1) I >> ezcontourf(1cos(x)+sin(y) ')
ezmesh / ezm eshc ezmesh: malha de função matemática de duas variáveis. Hl
ezm eshc: malha de função matemática de duas variáveis com curva de nível. Sintaxes típicas:
§J
ezmesh (f) ezmesh (f, dom)
:';Gráficos e Handle Graphics®
Parâmetros: Entrada f: função (descrita como cadeia de caracteres) dom: domínio Exemplo: | » ezmesh('cos(x)+sin(y)')
s
ezplot / ezplot3
ezplot: curva de função matemática de uma variável. ezplot3: curva de função matemática paramétrica 3D. Sintaxes típicas: ezplot (f) ezplot (f, dom)
Parâmetros: Entrada______________________________ f: função (descrita como cadeia de caracteres) dom: domínio Exemplo: » »
ezplot('cos(x)+sin(x)1) ezplot3('cos(x)+sin(y)')
288
MATLAB® 7 - Fundamentos
S
ezpolar
Função matemática de uma variável, em coordenada polar. Sintaxes típicas: ezpolar(f) ezpolar(f, dom)
Parâmetros: Entrada f: função (descrita como cadeia de caracteres) dom: domínio Exemplo: |»
ezpolar('t') 90
8 ^ .6 0
1 2 0 ^ "
6 150/
■--?
/
/
\
\
\
30
2/
21ôV
/
2 4 ( 3 ^ —_
f
21 0
Gráficos e Handle Graphics®
\
33o
■ / ezsurf / ezsurfc ezsurf: superfície de função matemática de duas variáveis. ezsurfc: superfície de função matemática de duas variáveis com curva de nível Sintaxes típicas: ezsurf (f) ezsurfc (f, dom)
Parâmetros: Entrada______________ _______________ f: função (descrita como cadeia de caracteres) dom: domínio Exemplo: »
ezsurf(1cos(x)+sin(y) 1)
5.1.8. Acabamento de Superfícies As propriedades de acabamento de superfície podem ser configuradas pelas funções e no editor de propriedades no utilitário [Plot Tools], •/
alpha
Configura transparência. Sintaxe típica: alpha (factor)
MATLAB 117-Fundamentos
Parâmetro: Entrada____________________________ factor: 0 < factor < 1 (0: invisível /1 : opaco) s
brighten
Ajusta intensidade de brilho. Sintaxe típica: brighten (factor)
Parâmetro: Entrada factor: -1 < factor < 1 (-1: totalmente sem brilho /1: totalmente brilhante)
S
colormap
Configura mapeamento de cores utilizado para exibir a superfície. Sintaxe típica: colormap(RGB) colormap(Tipo)
l
Parâmetros:
[Colormap Editor]: menu pop-up [Edit] na janeia de figuras. s C o lo r m a p E d ito r
B
TooííEMÊÊÊÊ
m
S ta n d a r d c o lo m ia p s
W L ^
S
colordef
Restaura o mapeamento de cores padrão. Sintaxe típica: colordef(Tipo)
S
hidden
Remove linhas não visíveis de malhas. Sintaxe típica: hidden on/off
Exemplo:
292
MATLAB ® 7 - Fundamentos !
■/ light Configura propriedade de luz. Sintaxe típica: light (Propriedadel, Valorl, Propriedade2, Valor2, ...)
Parâmetros:
S
Nome da Propriedade 'Position'
Descrição Posição
'Style'
Tipo
'Color'
Cor
Exemplo light{'Position[0 0 1]) light(1Style 1,1Infinite') % Infinito light(1Style',1Local1) % Local light(1C o l o r [0 1 0]) % Verde
lighting
Ajusta tipo de iluminação. Sintaxe típica: lighting Tipo
Parâmetros: Tipo flat gouraud phong none s
Descrição plana (superfície com uma só cor) iluminação graduada iluminação com sombreamento sem iluminação
material
Configura propriedade de reflexo de superfície. Sintaxes típicas: material Tipo material ([ka kd ks])
Gráficos e Handle Graphic s®
Parâmetros: Tipo shiny dull metal default [ka kd ks] S
Descrição reflexo especular reflexo difuso reflexo metálico reflexo padrão coeficientes de reflexão: ambiente, difuso, especular
shading
Define tipo de sombreamento. Sintaxe típica: shading tipo
Parâmetros: Tipo flat faceted interp
Descrição plana (superfície com uma só cor) por face cor de sombreamento com variação
Exemplo: edit: cap5_render_exemplo.m____ function cap5_render_exemplo ( )
Original;
% Superficie x=-pi:0 -5:pi; Y=-pi:0.5:pi; [MX,MY]=meshgrid(x,y), MZ=cos(MX)+sin(MY); subplot(1,2,1) surf(MZ) title('Original1) % Mapa de cor subplot(1,2,2) surf(MZ) title('Com Luz e Sombreamento') colormap bone
Com Luz e Sombreamerjto;
% Luz phong light lighting phong % Sombra interp shading interp
294
MATLAB® 7- Fundamentos
5.1.9. Visualização 3D A visualização 3D é controlada pelos parâmetros de câmera, configuráveis pela barra de ferramenta [Camera] (menu [View]) e pelas funções listadas neste tópico.
Orbit Cameras
Faz a câmera 'orbitar1em torno do objeto: - Click-&-drag (clique e arraste) faz o movimento acompanhar o mouse. -
Click, drag-&-drop (clique, arraste e solte) faz o objeto 'girar' com o 'impulso1do mouse.
Orbit Scene Light
Faz a luz 'orbitar' em tomo do objeto.
Pan/Tilt Camera
Faz o eixo 'orbitar' na janela.
■
Move Camera HorizontaA/ertically
Move câmera na horizontal e vertical.
■t
Move Camera Forward/Back
Move câmera para frente e para trás.
Zoom Camera
Aproxima/afasta imagem.
Roll Camera
Gira câmera.
Principal Axes
Define o eixo principal para 'Orbit Cameras' e 'Pan/Tilt Camera1.
f
Toggle Scene Light
Habilita/desabilita iluminação.
S
Orthographic Projection
Projeção ortogonal.
[0
Perpesctive Projection Perspectiva.
Ä ■
Gráficos e Handle Graphic s®
%
Reset Camera and Scene Light
Restaura câmera e luz da cena.
(jjll
Stop Camera/Light Motion
Para movimentação 'orbital' de câmera e luz.
Funções de Configuração de Câmera c a m d o lly c a m lo o k a t c a m o r b it cam pan cam pos c a m p ro j c a m p r o ll c a m ta rg e t cam va cam zoom
Ação move ponto de vistà e ponto objetivo da câmera visualiza objeto específico ativa câmera em 'órbita' ativa movimentação de câmera horizontal/vertical posiciona vista da câmera muda tipo de projeção (ortogonal/perspectiva) gira câmera posiciona ponto objetivo da câmera configura ângulo de vista da câmera aproxima/afasta imagem
52. Handle Graphicss® 0 MATLAB® pode ser entendido com um objeto composto por uma janela principal, na qual subjanelas ( windows) e janelas gráficas (figures) são criadas para implementar seu ambiente interativo. Objetos gráficos são formas geométricas básicas usadas pelo programa para exibir dados em janelas de figuras. Cada instância de um objeto gráfico está associada a um único identificador chamado handle, por meio do qual podemos manipular suas características. Esta forma de organização de informações gráficas no MATLAB® é denominada Handle Graphicsi®. Todos as figuras criadas no tópico 5.1 fazem uso de objetos handle graphics, cuja estrutura hierárquica é representada pelo diagrama seguinte:
MATLAB® 7- Fundamentos
Onde: [Root]: janela principal do MATLAB. [Figure]: janelas gráficas. ♦
[UI Objects]: objetos de interface com usuário (User Interface object) ou UlControl, que serão apresentados no Capítulo 6.
♦
[Axes]: eixos [Core Objects]: objetos básicos [axes]: eixo de coordenadas [image]: imagem (matriz) -
[light]: luz [line]: linha ou curva [patch]: polígono preenchido [rectangle]: retângulo [surface]: superfície ou malha [text]: texto
[Plot Objects]: conjunto composto por Core objects [Group Objects]: conjunto composto por Axes ♦
[Hidden Annotation Axes]: títulos e textos de eixos [Annotation Objects]: objetos de anotação (textos)
5.2.1. Criação de Figuras e Objetos Gráficos As funções de criação de objetos handle graphics retornam um valor numérico que identifica univocamente o objeto criado. Este valor é denominado handle. Cada objeto possui propriedades que podem ser definidas na criação do objeto ou configuradas posteriormente. Exemplo (arquivo cap5_handle_exemplo.m): Passo 1: criar janela gráfica com a função figure. Hf =figure(l);
Passo 2: criar dois eixos com a função axes e configurar a propriedade 'Position'. Hal=axes('Position',[0.1 0.1 0.35 0.8]); Ha2=axes('Position',[0.55 0.1 0.35 0.8]);
Gráficos e Handle Graphics®
Passo 3: criar f(x) = sin(x), [0,2pi] no primeiro eixo. axes(Hal); % Configura o primeiro eixo como eixo corrente x=0:0.1:2*pi; plot(x,sin(x)) Figure 1 File Edit View Insert Tools Desktop Window Help
#T "km Wn W\11 o n i □ a " 1 ! 0 .9 08 0 ,7
06 05 0.4 0.3;
02 0,1 o;
0 .5
i
Passo 4: no segundo eixo, exibir a imagem do arquivo ‘NGJuly2002.jpg1. axes(ha2); a=imread('NGJuly2002.jpg1); image(a)
298
MATLAB-' 7 - Fundamentos ; 1
ö Füe
_______________ B _______ - J J M Edit
View
D áH â
Insert
Tools
Desktop
Window
ti s i e i f t ® «
Help
•* |
DB
Esta é a hierarquia dos objetos criados no exemplo:
Todas as funções de criação de objeto gráfico descritas em seguida retornam o handle do objeto criado. Nome axes('Position[XO YO DX DY]) % Janela toda axes(1Position1,[0 Oil]) figure(Indice) image(M) light(X,Y,Z) path(X,Y,Z)
Gráficos e Handle Graphic^®
Descrição Cria eixo na janela corrente: - (X0,Y0): origem do eixo - (DX,DY): dimensões Cria janela gráfica Cria imagem Cria luz Criar área preenchida
( 299
Nome rectangle{1Position', [XO YO DX DY]) % Retângulo na janela toda rectangle('P o s i t i o n 0 Oil]) surface(X,Y,Z) text(X,Y,texto)
Descrição Cria retângulo - (X0,Y0): origem do retângulo ■(DX,DY): dimensões Cria superfície Cria texto
5.2.2. Manipulação de Figuras e Objetos Gráficos Neste tópico, apresentamos as principais funções de acesso e identificação de objetos gráficos e as funções de consulta e configuração de propriedades de objeto. -/
delete
Elimina objeto gráfico. Sintaxe típica: delete (hlist)
Parâmetros: Entrada hlist: lista de handles S
Saída
findobj
Localiza objetos com uma determinada propriedade. Sintaxe típica: hlist = findobj(handle,pro,vai)
Parâmetros: Entrada handle: identificador do objeto 'pai' prop: propriedade vai: valor
Saída hlist: lista de handles
MATLAEP 7 ■Fundamentos |
Exemplo: considere a figura gerada pelo m-file cap5_mesh_exemplo.m. Vamos identificar todos os objetos do tipo Axes e eliminá-los. edit: cap5_findobj_exemplo_____________________________ % cap5_findobj_exemplo cap5_mesh_exemplo % Cria a figura h=gcf; % handle da figura corrente hlist=findobj(h, 'Type 1,1Axes') % Localiza os objetos 'Axes' delete(hlist) % Elimina todos os elementos
Execução do cap5_mesh_exemplo:
Execução do cap5_findobj_exemplo:
File Edit
View Insert Tools Desktop Window
Q"cS B ô
s
^ <3. f?
I
□
gca
Obtém o handle do eixo corrente. Sintaxe típica: h = gca
Parâmetros: Entrada
s
Saída h: handle
gcbo
Obtém o handledo objeto cuja função callbackestá em execução (veja próximo capítulo).
Gráficos e Handle Graphicé1
( 301
Sintaxe típica: h = gcbo
Parâmetros: Entrada
s
Saída h: handle
gcbf
Obtém o handle da figura cuja função callbackestá em execução (veja próximo capítulo). Sintaxe típica: h = gcbf
Parâmetros: Entrada
s
Saída h: handle
gco
Obtém o handle do objeto corrente. Sintaxe típica: h = gbo
Parâmetros: Entrada
S
Saída h: handle
ishandle
Verifica se o valor fornecido é um handle válido. Sintaxe típica: | r=ishandle (h)
Parâmetros: Entrada h: handle
302
Saída r: true/false
MATLAEP 7 - Fundamentos
^
get
Obtém o valor de uma determinada propriedade do objeto. Sintaxe típica: vai = get (handle) vai = get (handle, prop)
Parâmetros: Entrada handle: identificador do objeto 'pai' prop: propriedade
Saída vai: valor
Observação: se o parâmetro prop for omitido, a função retorna um struct com todas as propriedades do objeto.
s
set
Configura o valor de uma determinada propriedade do objeto. Sintaxe típica: set(handle, prop, vai)
Parâmetros: Entrada handle: identificador do objeto 'pai' prop: propriedade vai: valor
Saída
Exemplo: cria o gráfico de uma curva com linha sólida e muda triângulo (arquivo cap5_hg_exemplo.m).
■ ■
m
x=0:0.3 :2*pi; % Cria o grafico plot(x,x+sin(x)) % echo on h=gcf; % Obtem o handle da figura corrente hline=findobj(h,'Type1,'line') % Localiza objeto tipo 'line' hline = 152.0114 get(hline) % Lista de propriedades Color [0 0 1] EraseMode ’normal' LineStyle ZDataSource get(hline,'LineStyle') % Consulta propriedade LineStyle ans =
l i
V /:
Gráficos e Handle Graphics®
pause set(handle, prop, val) set(hline,'LineStyle1,1>’)% Modifica
Antes do pause
File. Edit : View Insert
D Í B S
*
Tools Desktop Window
«
Help. :
0 0
“ D
Depois do pause
Tanto o utilitário [Plot Tools], apresentado neste capítulo, quanto o utilitário GUIDE, que é apresentado no próximo, são capazes de gerar, automaticamente, m-files com as codificações das funções Handle Graphics@ que configuram as propriedades indicadas de modo interativo pelo usuário.
MATLAB®7-Fundamentos
Criação de Interface Gráfica com Usuário Conforme indicado no tópico 2.9, o modo de interação mais simples é o disponibilizado na própria linha de comando do MATLAB® 7. A entrada de dados na linha de comando é implantada pela função input, e a saída, pela função display. Neste capítulo, apresentamos os recursos disponíveis no software para desenvolvi mento de interfaces com usuário mais sofisticadas.
6 .1 . C a ix a s d e D iá lo g o O MATLAB® 7 provê funções práticas e de fácil implementação, que exibem caixas de diálogo, o que possibilita a construção de programas com interface com usuário mais amigável.
s
errordlg
Exibe caixa de diálogo com mensagem de erro. Sintaxe típica: errordlg(Msg,Titulo)
Parâmetros: Entrada________________________ Msg: mensagem de erro Titulo: título da caixa de diálogo Exemplo: » msg='Comando Inválido'; » titulo='Erros de comando'; » errordlg(msg,titulo)
Criação de Interface Gráfica com o Usuário
C om ando Invá lido
HH1
s
helpdlg
Exibe caixa de diálogo com mensagem de ajuda. Sintaxe típica: helpdlg(Msg,Titulo)
Parâmetros: Entrada__________________ Msg: mensagem de ajuda. Titulo: título da caixa de diálogo Exemplo: » msg=’Forneça apenas números1; » titulo='Dicas'; » helpdlg(msg,titulo)
S
im ageview
Exibe caixa de diálogo de visualização de imagem. Sintaxes típicas: imageview(arquivo) imageview(m)
Parâmetros: Entrada_______________ arquivo: arquivo de imagem m: matriz de imagem Exemplo: >> imageview('NGJuly2002.jpg')
li
306
MATLAEP 7- Fundamentos
■S inpudSg Exibe caixa de diálogo de entrada de dados. Sintaxe típica: dados = inputdlg(prompt,nome)
Parâmetros: Entrada prompt: cellarray com mensagens de prompt nome: título da caixa de diálogo Exemplo:
Saída dados: cell array com os dados digitados
N ô R íe s d o s A r q u iv o s
>> prompt={'Entrada' 1Saida'); » nome=1Nomes dos Arquivos'; » dados=inputdlg(prompt,nome) dados = 'NGJuly2002.jpg' 1cap3.jpg'
S
entrada ;......... .............. ........ ! NGJuly2002 jpg s a fc a
............. .....
|c a p 3 .jp g
listdlg
Exibe caixa de diálogo de entrada de dados por lista. Sintaxe típica: [sel,ok] = listdlg (propl,vall,prop2,val2, ...)
Criação de Interface Gráfica com o Usuário
M
...............................II I;- 1
.O K
1 1 C ancel )
Parâmetros: Entrada prop: propriedade vai: valor Propriedades 'ListString' 'ListSize' 'InitialValue' 'Name' 'PromptString' 'OKString' 'CancelString' 'SelectionMode'
Saída sei: índice da opção escolhida ok: 1 (ok) ou 0 (cancel) Valor cell array contendo a lista de opções tamanho da lista em pixel, default [160 300] índice do valor inicial título da caixa de diálogo texto de prompt nome da tecla 'OK' nome da tecla 'Cancel' modo de seleção: 'single' / 'multiple1
Exemplo: seleciona o nome de um arquivo *.jpg no diretório corrente. edit: cap6_listdlg_exemplo % cap6_listdlg_exemplo function cap6_listdlg_exemplo( ) djpg=dir('*.jpg1); % Struct contendo os arquivos *.jpg jpgnames={djpg.name}; % Nomes do arquivo [sel,ok] = listdlg ( ... 1ListString', jpgnames, ... % Lista de opcoes 1ListSize',[160 100], ... % Tamanho da lista 'InitialValue 1, 1, ... % Primeira opcao 'Name','Arquivos JPG', ... % Titulo da caixa de dialogo 'PromptString','JPG no diretorio corrente', ... % Prompt 'OKString1, 'Exibir', ... % Tecla OK 1CancelString1, 'Cancela', ... % Tecla Cancel 'SelectionMode', 'single'); % Modo de selecao if ok == 1 % Verifica retorno OK a=imread(jpgnames{sei}); % Exibe a imagem figure; image(a); end Arquives JPG JPG no diretorio co rre n te icsp3.jpg jexercicio5.jpg ;redeyedfrog.JPG
308
MATLAB® 7 - Fundamentos
•/
m sgbox
Exibe caixa de diálogo com mensagem. Sintaxe típica: msgbox(Msg,Titulo)
Parâmetros: Entrada__________________ Msg: mensagem Titulo: título da caixa de diálogo Exemplo: » msg=computer; >> titulo=1Máquina'; » msgbox(msg,titulo)
s
pagesetupdlg/printdlg/printpreview/printopt
Exibe as caixas de diálogo Windows like para impressão. É possível soli citar a impressão da figura a partir dessas caixas de diálogo. Exemplo: a=imread('NGJuly2002.jpg'); >> image(a); » pagesetupdlg » printdlg » printpreview » printopt
Criação de Interface Gráfica com o Usuário
309
s
questdlg
Mostra caixa de diáiogo com pergunta. Sintaxe típica: r = questdlg(Msg,Titulo,BI,B2 ,default)
Parâmetros: Entrada Msg: mensagem de ajuda Titulo: título da caixa de diálogo B1: string do botão 1 B2: string do botão 2 default: string default
Saida r: string botão selecionado
Exemplo: » perg='Continua processo'; » titulo='Pergunta'; » bl='Sim' ; » b2=1Nao1; » default=’Sim'; » r=questdlg(perg,titulo,bl,b2,default) r = Sim
s
Pergunta
d
^
flc]
Continua processo
I Slm II I Nao I
soundview
Exibe caixa de diálogo de visualização de arquivos de áudio (e execução). Sintaxes típicas: soundview(arquivo) soundview(S,Fs)
Parâmetros: Entrada arquivo: arquivo de áudio S, Fs: matriz de sinal e valor de freqüência Exemplo: » soundview('TestSnd.wav')
310
MATLAEP 7 - Fundamentos
2000 4000 5000 8000 10000 12000 14000 16000 18000
s
uigetdir/uigetfile/uiputfile
Exibem as caixas de diálogo Windows like de acesso a arquivo. Retornam nome de arquivo. Exemplo uigetfile: exibe arquivos *.jpg e *.bmp.
Escolha arquivo
3
Save ire j £ 3 work
a
c r n -
|Íf« p 3 era005 £É?*S:3uíy2QÜ2 $8§redeyedfrog
-
uiputfile(tipos,titulo,default) I R enam e: 1: : i .............V.............................. | .Save õs type: |* jp g
s
•: ■ 1 ▼j
' Save Cancel:
I j | I j |
uisetcolor/uisetfont Basic colors:
_
Exibem as caixas de diálogo Windows like de configuração de cor e fonte de texto. Sintaxes típicas:
. ta r.r: c
y
r aaa a
■■■■■■■■ m mmmmr m r r r _r r r r r r
» r = uisetcolor
Define Custom
0.5020
»
Cokzs »
0.5020
f = uisetfont
f = FontName FontUnits FontSize FontWeight FontAngle
s
'Arial1 'points' 12 'normal1 1italic'
waitbar
Exibe caixa de diálogo com barra de tempo de execução. Sintaxes típicas: handle = waitbar(0,MsgrTitulo) wai tbar(N,handle)
312
MATLAEP 7 - Fundamentos
Parâmetros: Entrada______________________________ Msg: mensagem Titulo: título da caixa de diálogo N: valor entre 0 e 1 (% da barra a ser exibida) handle: identificador do waitbar Exemplo: edit: cap6_waitbar„exemplo_____ % cap6_waitbar_exemplo function cap6_waitbar_exemplo () h=waitbar(0,'Em execucao, aguarde for i=l:50 waitbar(i/50,h); z=rand(10); contour(z) end close(h)
s
warndlg
Apresenta caixa de diálogo com mensagem de aviso. Sintaxe típica: warndlg(Msg,Titulo)
Parâmetros: Entrada Msg: mensagem de erro Titulo: título da caixa de diálogo Exemplo: >> msg='Divisão por zero’ » titulo='Alerta'; » warndlg(msg,titulo)
Criação de Interface Gráfica com o Usuário
D iv is ã o por zero
CE3
S-
6.2. Entrada Interativa de Dados O MATLAB® 7 possui funções de entrada interativa de dados em figuras. S
gsntput
Aceita pontos indicados na figura. Sintaxe típica: [X,Y] = ginput(n)
Parâmetros: Entrada n: número de pontos
Saída [X,Y]: coordenadas
Observação: a figura deve estar aberta antes da chamada da função e a tecla interrompe a execução da entrada de pontos.____________ Exemplo: edit: cap6_ginput _exemplo______________ % cap6_ginput_exemplo function [x,y]=cap6_ginput_exemplo(n) plot(rand(l,10)) display([1Entre 1 num2str(n) 1 pontos.']); [x,y]=ginput(n); hold plot(x,y,'*')
Execução: » [x,y]=cap6_ginput_exemplo(3) Entre 3 pontos.
ti
MATLAEP 7■ Fundamentos
s
gtext
Posiciona um objeto texto no ponto indicado na figura. Sintaxe típica: gtext(txt)
Parâmetros: Entrada txt: texto a ser posicionado Observação: se txt for um string, posiciona um texto. Se for um cell array, posiciona vários textos. Exemplo: edit: cap 6 „gtext_exemplo function [x,y]=cap6 _gtext_exemplo( ) p l o t (rand(1 ,1 0 )) txt={'Primeiro 1 'Segundo' 'Terceiro' gtext(txt)
Execução: »
cap6_gtext_exemplo
;
Criação de Interface Gráfica com o Usuário
1 Quarto
1};
s
waitforbuttonpress
Espera o pressionamento de uma tecla ou botão do mouse. Sintaxe típica: k = waitforbuttonpress
Parâmetros: Saída k: 1 (tecla) / 0 (botão do mouse) Observação: essa função supõe que o cursor esteja sobre a área de uma figura que já esteja aberta; caso contrário, cria uma figura.______________________ Exemplo: » k=waitforbuttonpress k = 0 » »
k=waitforbuttonpress k = 1
S
% botao de mouse
% tecla
waitfor
Suspende a execução da função até que o objeto fornecido tenha sido eliminado. Sintaxe típica: waitfor(h)
Parâmetros: Entrada_____________ ______ __________________________________________________ h: handle do objeto a ser eliminado Exemplo: mostra um gráfico, espera que ele seja eliminado, exibe mensagem, espera que seja lida e eliminada, e mostra outro gráfico. edit: cap6_waitfor_exemplo______________________________ function cap6_waitfor_exemplo ( } h=surf(peaks); % Desenha um grafico waitfor(h) % Espera que ele seja eliminado h=msgbox('Grafico anterior eliminado. Pronto para desenhar o proximo'); waitfor(h) % Espera que ele seja eliminado plot(rand(1,10)) %Desenha outro grafico
316
MATLAB ® 7 - Fundamentos
;j j
Execução: »
cap6_waitfor_exemplo
Eliminar
3 cí h a ; £>::
b ® v. [Ó B “ 3
6.3. Utilitário GUIDE GUIDE - Graphic User Interface Design Environment é um utilitário do MATLAB® 7 que permite criar objetos de controle de interface com usuário, UlControl(mencionados no tópico 5.2) em janelas gráficas, com interação no estilo 'Visual Basic'. As janelas gráficas criadas pelo GUIDE são armazenadas como arquivos de figura (*.fig), e são utilizadas como 'painéis de entrada de dados' para funções callback, conforme apresentado no Capítulo 2. Neste tópico, complementamos essas informações com a apresentação dos outros objetos UlControle de suas propriedades. Para acionar o GUIDE, digite:
A janela do GUIDE é composta por duas pastas: [Create New GUI]: 4 opções para criação de uma nova janela. GUIDE Q u ic k S ta rt
B
( Create New GUI j Open Existing G U I. |
♦
[Blank GUI (Default)] - em bran co (padrão).
GUIDE tem plates an-c Ou: ■4k GUI with Uicontrols GUI with Axes and Menu Modal Q uestion Dialog
□ Save on startup as
|
Preview MÊ
•
•. ■
■
\
,
;:
[
OK
|i
i
C a n c e l^ ]}
Help
]
GUJDF. Q u ic k S tart Create New GUI j Open Existing OUI GUIDE templates Blank GUI (Default)______
♦
[GUI with Uicontrols] - com objetos Uicontrols (a janela é inicializada com os objetos exi bidos).
4 X GUI wtlh Axes and Menu
<• Cngfcsh u n i system
Modal Question Olalcg
M ^ V ,0
ï «
C SJ. un * system
0 .
Catc m * f.
I
OK
[
OK
Reset
I j Cancel | f
Help
GUIDE Q u ic k S ta rt Create N ew GUI
♦
j Open Existing GUI j
[GUI with Uicontrols] - com objetos Axes (eixos) e a menu (a janela é inicializada com os objetos exibidos). □ Save on startup as: j
s
~] I
C ancel
][
H elp
MATLAB® 7 - Fundamentos :
SUIOFiluidcSîrtîï
GUIDE tem plates 3lank GUI (Default) GUI with Uicontrols :- 4 \ GUI with Axes ar.d Menu
[Modal Question Dialog] - deter mina perguntas.
I
Q<
j|
Cancel
|[
Help
j:
[Open E xisting GUI]: abre GUI existente (*.fig). G U ID t Quick S ta rt ; Create N ew GUI J
Open Existing G U I;
Recenfy opened files:
♦
♦
[Recently opened files]: arqui vos *.fig recentemente usados [Browse]: permite procurar ar quivos *.fig
c:\m atIab7\worlAEx8m plo2.fig <4*. c:\m atlab7\w orW E xem plol .fig ■4à e:\matlab7\worW circuito02.iig c:\matlab7\worW circuito.Iig F:\m atlab6p5p1\w orW opcoBS.fig ^
f:\M ATLAB6p5p1 \worWgrafico.flg
^
f:\M ATLAB6p5p1 Iw ortòcam inhos.fig
Browse...
Cancel
jj
I
Help
Para apresentar os recursos do GUIDE, trabalhamos com a opção [Blank GUI (Default)], que exibe esta janela composta pelos elementos descritos a seguir:
1 I
Criação de Interface Gráfica com o Usuário
A. [Menu Pop]: menu pop-up com opções de comandos. B. [Toolbar]: barra de ferramenta de auxílio. C. [Component Pallete]: barra dos ícones de objeto de controle. D. [Layout Area]: área na qual os objetos gráficos são criados.
6.3.1. Menu Pop-up do GUIDE Os principais recursos dos menus pop-up do GUIDE são: Menu
Opções f f f ! ! E dit
File
View
Layout T ods
He^t
Hëw
C tri-fN
O p e n ...
C trl-tO
Close
C tri-fW
S ave
etrf+s
S ave A s ,..
Conteúdo Acesso a arquivos *.fig: New/Open: cria/abre arquivos. Close: fecha arquivos. Save/Save As: armazena arquivos. Export: exporta arquivos.
E x p o r t. .. P re fe re n c e s ... P r in t ..
C trl 4P
Preferences: configura preferências. Print: impressão.
Layout U ndo R e do
Edit
Tc
C tri+ Z C tri+ Y
C u t:
C tri+ X
C o py
C trt+ C
P a s te
C tri+ V
Cut, Copy, Paste, Paste Special Select All, Delete
Clear S e le c t AS C trl4 A
Duplicate: duplica objeto.
D u plic a te C t)l4 D
la y o u t.
View
Tools
P ro p e rty In sp ector O b je c t Browser M -file Editor Viev* Callbacks
dição 'padrão Windows': Undo, Redo
He
Visualização de informações: Property Inspector: editor de propriedades. Object Browser: browser da hierarquia dos objetos criados. M-file Editor: abre edit. View Callbacks: lista funções callback. Auxilia posicionamendo de objetos: Snap to Grid: habilita/desabilita grade.
Layout
B rin g to F ro n t
C tri+ F
Send to Back B ring Forw ard
C tri4 B
S en d Backw ard
Bring to Font/Send to Back/Bring Forward/Send Backward: configura ordem de exibição dos objetos.
MATLAB® 7-Fundamentos
Menu
Opções
m m
Conteúdo Ferramentas auxiliares: ♦ Run: executa o programa.
ndp
■Run
C tri+ T
♦
Align Objects: alinha objetos.
♦
Grid and Rulers: configura grade e régua.
♦
Menu Editor: editor de menus.
♦
Tab Order Editor: editor de [TAB],
♦
GUI Options: opções do GUIDE.
A5gn O b je c ts ,..
Tools
G rid a n d R u le rs .. ■ Menu E d ito r... T ab O rd e r E d ito r... GUI O p tio n s ...
pm Help
I
Using the L a y o u t Editor
I
C reating GUIs
Textos de ajuda.
6.3.2. Barra de Ferramentas do GUIDE Na barra de ferramentas temos os ícones seguintes.
Icone
Nome
Ação
New figure
Cria nova figura
Open file
Abre arquivo
Save
Armazena arquivo
Cut/Copy/Paste/Redo/Undo
Edição padrão 'Windows'
Align Objects
Alinha objetos AlignO b jec ts
BBS
V e rtic a l
Os objetos podem ser alinhados vertical e horizontalmente. r E possível determinar:
°rr I QfP13ns| Qpg| Ia-: Ia-1
A lig n
DiStriDjte
Q Set spacing :
p;xels
H o rlz o rta f
♦
[Align]: tipo de alinhamento;
❖
[Distribute]: distância entre os objetos.
Distribute
f l Set S p a c in g ; [
Criação de Interface Gráfica com o Usuário
^ Ï F T Ï I "li qj}jppjoç]|qq
Align
OK
J[
:pisreis A u p ly
1[
C ancel
Menu Editor
Editor de menu
Define menus pop-up e contextuai na janela que está sendo criada no GUIDE. A janela do Menu Editor é dividida em duas partes: ♦
[Menu Bar/Context Menus]: contém duas pastas nas quais podemos configurar a hierarquia dos menus (título, opções e subopções).
♦
[UIMenu Properties]: configura propriedades do objeto do menu. [Labei]: nome. [Tag]: propriedade de identificação utilizada pelas funções callback. [Accelerator]: tecla de acesso rápido. [Separator above this item]: habilita/desabilita separador. -
[Check mark this item]: habilita/desabilita marca no item.
-
[Enable this item]: habilita/desabilita acesso ao item. [Callback]: configura função callback do item. [More options]: abre o editor de propriedades no qual é possível configurar outras características como cor, fonte de texto, etc. Pasta [Context Menus]
Pasta [Menu Bar]
'
rj e '"-i m
’1
UtMenu Properties
~
*
t l
*
'
0 - I MC.oròftxIMftí*) Properties
....... 1
: \ \ Label: j Untitled 1
L IM P E I
la g : ; Untt>ed_4
Untitled 2
L - (§] Untitled 3
Tag’
CaDbatlc: % aU om atic
; U n title d j
A ccelerator: Ctrl +: None
(
V ie w
j
More o p tio n s »»
'j
j
Seçar « o r aoove nvs «<
O-ieck
y«s ^ c n
tn s b ie tfiis tem
Menu Bar p C o n tê x t Menus
Caftftacic guKJsta(gcbo)) J View I' CK ~]
1 Menu B a r !
[ Tfeb
Context Menus
\ (
Õ*
j
{
j
j
Na barra de ferramenta do Menu Editor, estão os comandos de criação e posicionamento dos objetos.
♦
[New Menu]: cria novo menu pop-up.
♦
[New Menu Item]: cria nova opção no menu.
♦
[New Context Menu]: cria novo menu contextual.
♦
[Move Selected Item Backward]: volta um nível.
MATLABS 7 ■Fundamentos
♦
[Move Selected Item Forward]: avança um nível,
♦
[Move Selected Item Up]: sobe uma linha. [Move Selected Item Down]: desce uma linha.
♦
[Delete Selected Item]: elimina item.
Por exemplo, a configuração no Menu Editor, à esquerda, gera a interface à direita. Menu Editor
up- f ] Menu 1 j
-UlMenu Properties -
I ,
!Label: j Opcao2
I
Opcao 1
^ -ft.O p c a o t
j Tag:
Í Ó - f ] Menu 2 ü*! Opcao 1
| Urrtrtled_5
: A c c e le ra to r : C trl +; N o n e C
S e p a ra to r a b o v e th is item
jj G
C h e c k m a rk th is item
j! B
E n a b ie th is item
i . C aB baclcj %a>iomatic
Menu Bar j Context Menus
J
V ie w
)I
Editor 'Tab Order'
Tab Order Editor
&
Opcaó 1 Opcao 2
Define a ordem dos objetos que a tecla [TAB] deve seguir. A configuração determinada na figura faz com que a tecla [TAB] siga a ordem indicada pelas setas. A ordem é definida pelos ícones: L ; __ Z
n
M-fiie Editor
-
Abre edit
Abre o edit com o código do m-fiie gerado peio GUIDE. Criação de Interface Gráfica com o Usuário
Property Editor
Abre editor de propriedades
Abre o editor de propriedades do item selecionado. ^
r« < *
U yjM l
□ 20 r*i IM
100
BO
ra I-
m
0
: í»&'
m
190
180
220
260
300
340
990
420
460
500
-540
M-
1 i í M ,
.
.
W
ulcontiol (idlW 'Edit TèxW)
> í Edit Text4 ■ ■■ * ; * .....:..... .... j.....i— 1— t ..... t ..... .....t..... ... j ......1.....[ ” *•;.....t ..... •
BackgroundColor BeíngDeleted GS3 m S; BusyAcllon fp ButtonDownFcn *»; CData $' • * r , • Callback • f •• t :: r..... 1....r p r ---- i ----*: Clipping ..... í .... CreateFcn ... .... T -.... .... 1..... ..... i L. •• DeieteFcn Enable i 1..... ... L U-.. sp■Extent :: i t j + t t i FontAngle í 1 f í ■ i ' h - FontName • 1 : : :•
( ç f jl
I Edit Text2
1
I
A
[▼} queue §§ untitíedCedltí.Cailback-.gcb g on untit!edCedit4_CreateFcrV.gc
:
Q on ,
|
(▼) normal MS Sans Serif V
Podemos dividir as propriedades dos objetos de controle em dois grandes grupos: ♦
Formato: abrange as propriedades que configuram a 'aparência' do item. Por exemplo, todos os parâmetros de cor e tipo de texto.
♦
Controle: abrange as propriedades que configuram o tipo de ação que o item vai controlar. Por exemplo: [Callback]: função callback do objeto, [String]: dado fornecido pelo usuário. [Style]: define o tipo de objeto de controle. -
[Tag]: identificação do objeto.
ô-
Object Browser 'ê
Exibe a hierarquia dos objetos
Object Browser
&HÜ1 fig u r e (u n titled )
Wifeuimenu
(Menu 1) uimenu (Henu 2) u ic o n tro l ( e d i t l "Edit Textl")
KSBT u ic o n tro l (e d it2 "Edit Text2") j - W u ic o n tro l (e d it3 "Edit Text3")
>-
-
S
Run
Executa o programa
MATLAEP 7 ■Fundamentos
6.3.3. Objetos de Controle Na barra [Component Pallete], temos os ícones de objeto de controle que vão ser posicionados na área de trabalho [Layout Area], A opção [Show names in component palette], disponível na opção GUIDE do comando preference, configura o formato de exibição dos ícones de objeto de controle.
GUIDE P referen ces
SB G e n e r a l 8 8 F o n ts
1*
C o lo r s SB C o m m a n d V M n d o w
|rw i a n^l
fÿ? 1
off
P I S h o w to o lb a r
C o m m a n d H is to r y !S
E d ito r jD e b u g g e r 0
H e lp
p lf
im ù
W eb
ra j
W o rk s p a c e
|u n ia í l 1íitü
S h o w n a m e s i n c o m p o n e n t p a tq t t g
| ( 3 S h o w f i le e x t e n s i o n in w i n d o w t itle
C u r r e n t D ir e c to r y A r r a y E d ito r
C ] S h o w file p a t h in w i n d o w title
on
0 C heck Box
W E dit Text
3pop-up Menu $Listbox 1 Toggle Button
I F ig u r e C o p y T e m p la te
i SS h o w aS fBes in file o p e n d ia lo g
In s tr u m e n t C o n t r o l
Iff; A x e s
\ê x p ) S h o w s a v e c o n fir m a tio n o n a c t iv a t e
R
S h o w s a v e c o n fir m a tio n o n e x p o r t
Button Group X ActiveX C ontrol
Passaremos a usar a exibição dos ícones com nomes para mostrar como configurar as propriedades de controle de cada um desses objetos. E lem entos do [C om ponent Pallete] Seleciona objeto a ser editado A criação de figuras (representações dos objetos) no GUIDE segue a mesma interação de outros editores gráficos do Windows: clique do botão esquerdo do mouse indica ponto, clique-arrasta define ou modifica dimensões. Esta opção seleciona o objeto a ser editado tanto na aparência (dimensões e reposicionamento) quanto no conteúdo (o botão direito do mouse abre menu contextuai de propriedades).
[Ü0 Push Button
| . Botão de comando
Propriedades de controle: Nome Callback String Tag
Criação de Interface Gráfica com o Usuário
Descrição nome da função callback nome que aparece no botão identificador do objeto
Exemplo: cap6_pushbutton_exemplo.m. Objeto: Push Button Propriedade Valor__________ Callback ■
figure;surf(peaks)
fiq u re ; s u r fip e a k s )
Arquivo gerado automaticamente pelo GUIDE: cap6_pushbutton.m
m Rte
Edit
T ext
Cet
Tools
D ebug
D esktop
W in dow
H elp;
ÜGÊS! ;
im it
J u n c tio n va ra r g o u t » cap 6_p u sh bu tton_exem p lo(varargin) % CAP6_PUSH8UTTON_£X£KFLO H - i i i e 2or cap 6_pushbutton_e .'iii % C A P Í^ P iT S iís u r r a ^ E X E H P L O , by i t s e l í , c r e a t e s « new C A P 6
*
3Ír.\jl€tC-Í!*, H -
CAF6_PUSKBi3TtOK_S:iEKPLO r e t u r n s t h e h a n d .Vs t o
:
e x i s t i n g s in g le t o n * . CÀT'6_T'í;5H3üTTCii_I'X£H?LO(: CALLBACK’ ,h(^.-ject-,event-i)ât.a,hs ... f ttBCCibã n a æ d ’CALLBACK i n CA?6 PüSHBOTfOM EXEHPLO. Il víjjj 5cap6_pushtouttori_exem p)o
Execução: >> cap6_pushbutton_exemplo
I
326
MATLAB® 7- Fundamentos
s
fc? Si|::ier______ - Barra de valores.
Propriedades de controle: Nome
Descrição
Callback
nome da função callback
Max
valor máximo
Min
valor mínimo
Step
tamanho do cursor da barra (x,y)
Valor
valor retornado pelo objeto
Tag
identificador do objeto
Exemplo: edit:
slider_callback.m________________________________________
function slider_callback ( ) h=gcf; % Figura corrente o b j = f i n d o b j ( h , 'Tag','s l i d e r l 1); % Localiza objeto 's l i d e r l 1 v a l m a x = g e t ( o b j , 'Max'); % Obtem valor máximo v a l m a x = g e t ( o b j , 'Min'); % Obtem valor minimo v a l u e = g e t ( o b j V a l u e '); % Obtem valor indicado st r= n u m 2 s t r (value); % Transforma em texto o b j = f i n d o b j ( h , 'Tag','t e x t l '); % Localiza objeto 't e x t l ' s e t (obj,'S t r i n g ',s t r ) ; % Exibe valor no objeto 'textl'
Objeto: Slider
Objeto: Static Text
Propriedade
Valor
Propriedade
Valor
Callback
slider_callback
StringO
1.5
Max
2.0
Tag
1.5
Min
1.0
Step
[0.01 1.0]
V a lo rf)
1.5
Tab
slide 1
(*) Este parâmetro do objeto Static Text recebe o valor devolvido pelo Slider.
Execução: »
cap6_slider_exemplo
W W W
cap6_slider_exemplo
i i s i *
Meng I Menu 2
SLIDER
SLIDER jJ.. 1.0
..t.....
0 CheckBox I Toggle Button
I
jJ 1Í Z I
.. 'i 2.0
J.0
-I
1.7267
1.5
f ) Radio Button
% |ft“
Menu 1 Menu 2
Opção 0/1 (botão de rádio on/off) Opção 0/1 (caixa on/off) Opção 0/1 (botão on/off)
Esses três objetos têm comportamento e interação semelhantes e são utilizados como subitens do objeto ButtonGroup. Propriedades de controle: Nome
Descrição
Callback
nome da função callback
Valor
valor retornado pelo objeto
Tag
identificador do objeto
Exemplo com objeto radiobutton: edit: radio_callback.m___________________________ function radio_callback ( ) h=gcf; % Figura corrente o b j = f i n d o b j ( h , 'Tag', 1radi o b u t t o n l ’); v a l u e = g e t ( o b j V a l u e '); % Obtem valor indicado if value == 1 m s g b o x ('O N 1) else m s g b o x (1O F F ') end
Objeto: Radio Propriedade
Valor
Callback
radio_callback
String
BOTAO 1
Valor
0
Tag
radiobuttonl
MATLAEP 7 - Fundamentos I
Execução: I»
cap6_button_exemplo
s
W E d it T e a -:
- Caixa de edição de texto.
Propriedades de controle: Nome Callback String Tag
nome da função callback conteúdo do texto identificador do objeto
Exemplo: edit:
edit
callb ack .m
function ed it_ callb ack ( ) % V e r if ic a se o te x to é v a lo r num érico p o s itiv o h=gcf; % Figura co rrente o b j = f i n d o b j ( h , 1T a g ' , 1 e d i t l ' ) ; % O b j e t o e d i t l s t r = g e t ( o b j , 1S t r i n g ' ) ; % Dado d i g i t a d o v a l o r = s s c a n f ( s t r , ' % f ' ) ; % T e n t a o b t e r um n u m e ro sw itch v a lo r case 0 e r r o r d l g ( ' V a l o r NAO p o d e s e r Z E R O ' ) ; c a s e '' e r r o r d l g ( ' V a l o r NAO p o d e s e r A L F A N U M É R I C O ' ) ; otherw ise if valor < 0 e r r o r d l g ( ' V a l o r NAO p o d e s e r MENOR QUE Z E R O ' ) else w a r n d l g ( ' VALOR A C E I T O ! ' ) ; end end
Objeto: Edit Text Propriedade Callback String Tag
Valor edit_callback 1 editl
Eãr-Property Inspector
queue
edit.caiiback; capS_edit_exempiofeúin.
Criação de interface Gráfica com o Usuário
329
Execução: »
cap6_edit_exemplo
Valor > 0
i
sacf
^
V«^MOpode*wALrANUMERICO
; r*---s "•n *n
✓
!SI Static Text
■Texto estático (de anotação).
Propriedades de controle: Nome String
Descrição conteúdo do texto
Exemplo: veja o exemplo do objeto Slider.
y
H3 Pop-up Menu
Menu pop-up
Propriedades de controle: Nome CreateFcn String Tag Value
Descrição função de criação em que as opções são definidas cell array/icoluna, com os nomes das opções identificador do objeto índice da opção escolhida
Exemplo: exibe surf(peaks) com mapa de cores definido no menu pop-up. edit: popup_create,m ______________________________________ function p o p u p _ c r e a t e ( ) h=gcf; % Figura corrente obj = f indobj(h,'Tag', 'popupmenul'); % Objeto popupmenul cores= { 'default'; 'autumn'; 'bone'; ... 'cool'; 'hot'; 'spring'; 1s u m m e r ';'w i n t e r ’ }; s e t (o b j ,'S t r i n g ',c o r e s )
Objeto: Popupmenu Propriedade CreateFcn String Tag
Valor popupcreate 1 popupmenul
edit: cap6_popup_callback.m function cap6_popup_callback( ) h=gcf; % Figura corrente obj=findobj(h,'Tag','popupmenul1); % Objeto popupmenul cores=get(obj, ’String’); indice=get(obj, ’Value 1); figure; surf(peaks) colormap(cores{indice))
Objeto: Push Button Propriedade Callback String
Vaior cap6_popup_callback OK
spring summer winter
Execução: »
■/
default autumn
cap6_popup_exemplo
i l Listbox
- Menu de lista de opções.
Propriedades de controle: Nome CreateFcn String Tag Value
Descrição função de criação em que as opções são definidas cellarray coluna, com os nomes das opções identificador do objeto índice da opção escolhida
Exemplo: exibe surf (peaks) com mapa de cores definido no menu pop-up e sombreamento pelo listbox. edit: list_create.m function list_create( ) h=gcf; % Figura corrente obj=findobj(h,'Tag', 'listboxl'); % Objeto listboxl sh= { 'FLAT 1; 'FACETED'; 1INTERP1}; set(obj,'String',sh)
Criação de Interface Gráfica com o Usuário
Objeto: Listbox
' cap6Jist_exemplo.fig He
Propriedade CreateFcn String Tag
Edit Vtew Layout Took
B B 8 Heip
D & W ' » ' •5A •
Valor list_create 1 listboxl
140
!.
Jdefault
180
JFLAT ■{f a c e t e d
% R adio Button
' jlNTERP
iiae
OK jft Í A x e s
edit: cap6_list_callback.m function c a p 6 _ l i s t _ c allback( ) h=gcf; % Figura corrente ob j = f indobj(h,'Tag', 'popupmenul' i; % Objeto popupmenul cor e s = g e t ( o b j , 'String'); i n d c o r = g e t (o b j , 'V a l u e '); ob j = f indobj(h,'Tag', 'listboxl'); % Objeto listboxl sh=get(obj, 'String'); i n d s h = get(obj, 'Value'); figure; surf(peaks) co lormap(cores{indcor}) ; shading(sh{indsh));
Objeto: Push Button Propriedade Callback String
Valor cap6_list_callback OK
Execução: »
c a p 6 _ lis t _ e x e m p lo
■j c ap 6 _ Iisr_ t» X H n p [o
*
f^*i ■ jw 3 ;
■ ■ ■ ■ Insert Tools Desktop W indow Help t*
0
1 1
W
H
''
r -
iS f x l
m O
m
MATLAB ®7-Fundamentos
V
li& fe:es_______ - Cria um objeto Axes (eixo) para exibição de gráficos e imagens.
Propriedade de controle: Nome
Descrição
Tag
identificação do objeto
Exemplo: em uma janela, exibir três eixos com os gráficos de f(x) = x*sin(x), f(x) e F(x) integral de x. Objetos: Axes Propriedade Tag
A xesl, Axes2, Axes3
Objetos: Push Button Propriedade Valor Callback
axes1_callback, axes2_callback, axes3_callback
Exemplo: axes1_callback.m edit:
axesl_list_callback.m
function a x e s l _ c a l l b a c k ( ) h=gcf; % Figura corrente o b j = f i n d o b j ( h , 'Tag', 1a x e s l 1); % Objeto axesl axes(obj); % Configura eixo corrente x = - 2 * p i :0.1:2 * p i ; p l o t (x,x.*sin(x))
I ÆÜSiï3 f!.t!!EI fi*
£dt
View
La y o u t T c o k
Heip
& 0 P u s h B utton
f (x) = sin(x)+x*cos(x)
F{x) = sin(x>x*cos(x)
'S lid e r ■ # R a d io B utton 0
C h e c k Box
M r E d it Te xt Static Text S 3 P op-up M enu j’f § Listbox [ lU T o g g le Button
[j*3j Button G rou p [sX* ActiveX Control
Execução: »
cap6_axes_exemplo
Criação de interface Gráfica com o Usuário
333
-> cap6^sxes_eicefBp|o
f(x) = x” sin(x)
f'(x) = sm(x)<-x*cos(x)
F(x) - sm(x)-x"cos(x)
l l Panel
■Cria um 'painel', uma área retangular para facilitar a visualização de grupos de dados. Propriedade de controle: Nome
Descrição
Title
título
Objeto: Panei Propriedade Valor Title Dados Primários Dados Secundários
■
Exemplo: Desenhar gráfico a partir de dois grupos de dados. edit: p a n e l _ c a l l b a c k .m function p a n e l _ c a l l b a c k ( ) h=gcf; % Figura corrente ob j = f i n d o b j ( h , 'T a g ' i n i c i o '); % Objeto inicio v_inicio=str2num(get( o b j ,'S t r i n g ')); o b j = f i n d o b j ( h , 'T a g f i n a l '); % Objeto final v _ f i n a l = s t r 2num(get(obj,'S tring')); o b j = f i n d o b j ( h , 'Tag', 'amplitude'); % Objeto inicio v_ a m p l i t u d e = str2num(get(obj,'S tring')); ob j = f i n d o b j ( h , 'Tag','frequencia'); % Objeto final v _ f r e q uencia=str2num(get(obj, 'String')); % Grafico x = l i n s p ace(v_inicio,v_final,200); y=v_amplitude*(sin(5*x*v_frequencia)+3*cos(x*v_frequencia) ! p l o t (x,y)
Execução: »
cap6_panel_exemplo
MATLAB ®7-Fundamentos
m
■/
3 Button Group
- Cria um ButtonGroup, objeto que agrupa subobjetos do tipo radiobutton, checkbox, togglebutton.
Esse objeto é formado por um conjunto de subobjetos do tipo radiobutton, checkbox ou togglebutton. Para criar um ButtonGroup, é necessário que os subobjetos já estejam definidos na área de layout. O objeto ButtonGroup agrupa os subobjetos que forem envolvidos pelo retângulo indicado.
>Fiat : O Faceted
No exemplo, o ButtonGroup é composto por três radiobuttons.
C Interpolated
As funções callback dos subobjetos são substituídas pela função S e le c t io n C h a n g e F u n c t io n do ButtonGroup. A chamada dessa função é automaticamente criada pelo GUIDE, por meio da opção [S e le c t io n C h a n g e F u n c t io n ] disponível no menu PopU[ [View] [View Callbacks], Porém o 'corpo' da função S e le c t io n C h a n g e F u n c t io n deve ser codificado pelo usuário nesse arquivo, gerado automaticamente. A codificação deve implementar as ações a serem executadas na seleção de cada subobjeto que compõe o ButtonGroup.
Criação de Interface Gráfica com o Usuário
Nesse exemplo: ♦
0 arquivo é armazenado com o nome: cap6_buttongroup_exemplo.m.
♦
Os subobjetos radiobuttons estão definidos com TAGs: radiobuttonl, radiobutton2 e radiobutton3.
♦
As ações são: exibir surf (peaks) no gráfico com o tipo de sombreamento indicado pelos radiobuttons.
Propriedade de controle: Nome
Descrição
Title
título
Objeto: ButtonGroup Propriedade Valor Sombreamento Title Selecione o objeto ButtonGroup e chame a opção [S electionC hangeFunction] para salvar o arquivo ,cap6_buttongroup_exemplo.m'. O GUIDE cria o arquivo e abre o editor, exibindo a função que deve ser completada pelo usuário. He £dit j|jj|||S Layouts-Tods:7■Hefc D Gär 1 Property Inspector ................ObjectBrowser 0 ^ Sefecj M-file Editor [SD Push [b=uí Sfider
P~ ] p]
€5 Radio Button
.... j.... \ "1
é felfeVatí* 100 : 140
180
CreateFcn DdeteFcnBuítonDovsnFcn ResizeFcn
Editor - c;\n5atlab7\wofk\c3p6_h!ittongroup_jexemptQ.m * Fäe
Edit
Text
Cell
Tools ■ D ebug
Desktop
W indow
Help
Dwcr rS—ruHbrron~varargDur^~capb~“W'C'o«gt'ou:p“ O5 «MriT exeii,ipio3)acpuc'ircnThcei3:ect7~'gv-is: 69 70 71 72
k vsrargout
hCbjeet % «ventdata * handles
*
s m:irae s. io
ce Ii array for returning output arg s {.Tee V&RARGOUT) ; handle c c figure reserved — to be definedir. a. fucuire version of HkTLAB structure «1th. handles arid «set data (see GCIDATA)
i Set. default eon®sand line output irony handles structure v a r a r g o u t { 1} h a n d le s . o u tp u t;
% hObject % eventdatf
handle to uipaneii {see GCBO) reserved .~ to be defined in a structure sith handles and us«
version of HÂTLAB {see GUIDÂ.TA)
cap6_button9foup_exempio/gipa.. Ln 79
Col 55
Este é o código que deve ser editado para implementar o funcionamento dos radiobuttons.
MATLAEP 7 - Fundamentos
edit: cap6_buttongroup_exemplo.m % ----------------------------------- -------------------------------------------------function uipanell_SelectionChangeFcn(hobject, eventdata, handles) % hobject handle to uipanell (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) H=get ( h o b j e c t ) ; bgObj e c t = H .Parent ; selection = g e t ( b gO b j e c t , 1SelectedObject'); switch get(selection, 1T a g ') case 'r a d i o b u t t o n l 1 % S O M B R E A MENTO: FLAT surf(peaks) s h a d i n g ('FLAT 1) case 'r a d i o b u tton21 % SOMBREAMENTO: FACETED surf(peaks) s h a d i n g ('F A C E T E D ') case 1r a d i o b u t t o n 3 ' % SOMBREAMENTO: INTERP surf(peaks) s h a d i n g ('IN T E R P ') end
Execução: I
»
•/
cap6_buttongroup_exemplo
ActiveX Control
■Cria objeto ActiveX.
Abre lista de opções de objetos ActiveX. As propriedades variam de acordo com o objeto selecionado. Exemplo: inserir ActiveX 'Microsoft Office Spreadsheedt 10.0'.
Criação de Interface Gráfica com o Usuário
337
Select do ActiveX Control ;: ActiveX Control U s t::
W ÊSSM Êm m \ D çârM k S ele ct
i-iM icroso ft iMicrosoft : M ic ros o ft iMicrosoft iMicrosoft : iMicrosoft ; iMicrosoft iMicrosoft !: iMicrosoft jMicrosoft iMicrosoft iMicrosoft : iMicrosoft
ImageList Control 6 ,0 (SP4) ImageList Control, version 5.C:" Internet Transfer Control, v e r U s tV ie w Control 6.0 (SP4) !. Lis tV ie w Control, v ersion 5.CJ MAPI M essages Control, vers MAPI S ession Control, versio: Masked Edit Control, v ers ion M onthV iew Control, version £ Multimedia Control, version 6:i O ffice Chart 10.0 O ffice C hart 9.0 O ffice Data S ou rce Control 1: O flic e Data S ource Control 9 O ffice Expand Control 9.0 : O ffic e PivotTable 10.0 O ffice PivotTable 9 .0 . O ffice R ecord Navigation Cor
St - SJ -Ü 1
\
\ F-0S-3 !
-
f
6 3 P o p -u g M enu
ill
>k V ie w Control ft Picture Clip Control, v ersion E ft P rogressBar Control 6.0 (SP< ar Control, versions*
Listbox
| E H T o g g le Button
!iúÍAxeí
Program ID: C»AC10.Spreadsheei.10 Locatlcn: C: iPROGRA-1 COMMON-1 WSCROS-IVÆ BCO M-1\10'OWC1Q.DLL
;*$• Button G roup I U f ActiveX Control
Create
Cancel
I
Help
Execução: I»
cap6_activex_exemplo
Objeto ActiveX - MS-Exce! Spreadsheet
m
i
©
2 5 5 l= S O M A (D 2 D 7 )
i 10 I
;11 1 : 12 I Í 13 I : 14 Î
'\F*,1
-/
MATLAB® 7- Fundamentos
C a p ít u l o
7
Introdução ao Symbolic Math Toolbox A The Mathworks, com o apoio de empresas e consultorias especializadas, desenvolve e comercializa bibliotecas de rotinas MATLAB®, denominadas Toolbox, aplicadas a áreas específicas, como, por exemplo, estatística, otimização, controle, redes neurais, totalizando cerca de 75 títulos diferentes. Como informação complementar ao MATLAB®, este livro traz uma introdução ao Symbolic Math Toolbox 3.1, aplicativo para matemática simbólica. O núcleo do Symbolic Math Toolbox é baseado no Maple®, um sistema desenvolvido inicialmente pela Universidade de Waterloo (Waterloo/Canadá) e, posteriormente, pelo Instituto Suíço Federal de Tecnologia (Eidegenõssiche Technische Hochschule, Zurique/Suíça). Atualmente, o Maple® é comercializado pela empresa canadense Maplesoft, Inc. O Symbolic Math Toolbox é constituído de quase duzentas funções que executam operações de matemática algébrica e simbólica dentro do ambiente MATLAB®, separadas nas seguintes áreas: Areas
Tópicos
Cálculo
Funções, derivação, integração, limites.
Álgebra
Simplificações, substituições.
Álgebra Linear
Determinante, inversa, autovalor, autovetor, decomposições.
Soluções de Equações
Equações algébricas, simbólicas, diferenciais.
Transformadas
Fourier, Laplace, Z, inversas.
Aritmética de precisão variada e conversões
Avaliação numérica de expressões matemáticas com precisão variada, e conversões.
Funções especiais
Funções específicas.
Após sua correta instalação, o Symbolic Math Toolbox fica disponível, de forma transparente, como qualquer outra função do núcleo do MATLAB®.
;, Introdução ao Symbolic Math Toolbox
A presença (ou disponibilidade) do Symbolic Math Toolbox pode ser verificada na opção [Toolbox] do botão [Start], no canto inferior esquerdo da tela, ou digitando-se ■ver s y m b o lic 1 na linha de comando: »
ve r symbolic
MATLAB Version 7.0.0.19920
Symbolic M a t h Toolbox
(R14)
Version 3.1
(R14)
7 .1 . C o n c e it o s Neste tópico, apresentamos os conceitos básicos do Symbolic Math Toolbox, por meio de exemplos como no Capítulo 2; portanto, da mesma forma, na medida do possível, use o MATLAB® 7 com Symbolic Math Toolbox e repita os exercícios descritos a seguir.
7.1.1. Símbolos No Symbolic Math Toolbox, símbolos podem ser trabalhados de duas formas: ♦
Cadeia de caracteres: neste caso, a cadeia é interpretada pelo Symbolic Math Toolbox, que identifica as variáveis e as funções utilizadas.
Exemplo: cálculo da integral de x, utilizando a função int do Symbolic Math Toolbox com uma cadeia de caracteres.
♦
Objeto symbol definido pelo comando syms ou criado pela função sym: neste caso, o símbolo é fornecido como parâmetro de entrada para as funções do Symbolic Math Toolbox.
Exemplo: cálculo da integral de x utilizando a função int do Symbolic Math Toolbox com uma variável simbólica. » »
syms x int(x) ans = l / 2 * x /s2
Nos dois casos, o retorno da função é um objeto symbol. Símbolos podem ser utilizados como parâmetros de entrada para as funções trigono métricas, exponenciais e matriciais básicas mostradas no tópico 3.2.
MATLAEP 7 - Fundamentos
0 MATLAB® consegue identificar automaticamente o tipo de variável e chamar a rotina adequada: biblioteca matemática numérica para variáveis numéricas e biblioteca do Symbolic Math Toolbox para variáveis simbólicas. Por exemplo, podemos definir uma matriz A a partir de operações efetuadas com os símbolos x e y. » syms x y » A=[sin(x) A = [ sin(x), [ cos (y) ,
y;cos(y)
x]
y] x]
A variável A contém uma matriz simbólica, que pode ser usada com funções matriciais básicas. Podemos calcular o determinante e a inversa de A. » det(A) ans = s i n (x)*x-y*cos(y) » B=inv(A) B = [ x / ( s in(x)*x-y*cos(y)), [ - c o s (y)/(sin(x)*x-y*cos(y)),
- y / sin(x)*x-y*cos(y))] sin(x)/ sin(x)*x-y*cos(y))]
As funções matemáticas podem ser compostas com as funções do Symbolic Math Toolbox. A função simplify (simplificação) do Symbolic Math Toolbox pode ser utilizada para verificarmos se B é inversa de A (isto é, se A*B = B*A = identidade): »
C=A*B C = [sin(x)*x/(sin(x)*x-y*cos(y))-y*cos(y)/ (sin(x)*x-y*cos(y)) , 0] [0, sin(x)*x/(sin(x)*x-y*cos(y))-y*cos(y)/ (sin(x)*x-y*cos(y))]
»
s i m p l i f y (C) ans = [ 1, 0] [ 0, 1]
» s i m p l i f y (B*A) ans = [ 1, 0] [ 0, 1
% A*B
% B*A
7.1.2. Criação de Variáveis e Expressões Simbólicas Variáveis e expressões simbólicas podem ser criadas pela função sym. As variáveis simbólicas x e y, utilizadas no tópico anterior, também poderiam ter sido definidas da seguinte forma:
Introdução ao Symbolic Math Toolbox S
-
|| 11
ih m
te M I Name
'
1— 1 " :• ~ 1 Value
<1x1 s ym > !<1x1 s y m > j
lü U
» x=sym('x '); » y=sym(1y');
jHy
<
■ 1 1 '»
'
1
>:
I Current Directory | Workspace j
A função sym também transforma números em símbolos. Isto é essencial para tratar com constantes como expressões simbólicas.
J
♦
Por exemplo, se tentarmos resolver F(x) = 5 dx com a função int, ’int(5)', retorna erro, pois 5 é um double (número com precisão dupla) e a função int não está definida para este tipo de dado. >> F=int{5) ??? Function
'int'
is not defined for values of class
’d o u b l e 1.
Para podermos utilizar a funçao int, temos que criar o símbolo 5 com a função syms. »
cinco = sym(5) cinco = 5 » F=int(cinco) F = 5*x
A função sym também define expressões, como, por exemplo, uma equação de 2grau: »
e q 2 = s y m ( 1a * x A2 + b * x + c ’) eq2 = a * x A2+b*x+c
Podemos utilizar a função solve para resolver essa equação de 22 grau e obter a Fórmula de Báscara: »
s=solve(eq2) s = 1/2/a*(-b+(b"2-4*a*c) Ä (1/2)) 1/2/a*(-b-(b~2-4*a*c) ^ (1/2))
Os resultados estão apresentados no formato padrão de expressões do MATLAB®. A função pretty do Symbolic Math Toolbox exibe como fórmula uma expressão forne cida nesse formato:
MATLAEP 7 - Fundamentos
7.1.3. Substituição de Variáveis Simbólicas por Números A função subs permite calcular o valor numérico de uma expressão simbólica por meio da substituição da variável simbólica por um número. Por exemplo, considere a matriz m definida com o símbolo x e as expressões de sua determinante e sua inversa. >> syms x » m=[sin{x) x;x cos(x ] m = % Expressão [ sin(x), x] [ x, c o s ( x ) ] » dm=det (m) dm = % Expressão sin (x) *cos (x )-x~2 » mi=inv(m) mi= % Expressão [ -cos(x)/(-sin(x)*cos(x)+xA2) , [ x /(-sin(x)*cos(x)+xA2 ),
em x da matriz m
em x do determinante de m
em x da inversa de m x/(-sin(x)*cos(x)+xA2 )] sin(x)/ (-sin(x)*cos(x)+x~2)]
Para x = 1, temos que a matriz, seu determinante e sua inversa assumem os seguintes valores:
ôi
» subs(m,x,l) ans = 0.8415 1.0000 1.0000 0.5403
% matriz m, para x=l
» s u b s (dm, x ,1) ans = -0.5454
% determinante de m, para x=l
» s u b s (ml ans = -0.9907 1.8337
% inversa de m, para x=l
X ,
1) 1.8337 -1.5430
7.1.4. Gráficos de Expressões Simbólicas Quando o Symbolic Math Toolbox está instalado, todas as funções de fórmulas matemáticas do MATLAB® 7 (apresentadas no tópico 5.1.7), além de aceitarem fórmulas em cadeias de caracteres, também aceitam expressões simbólicas.
Por exemplo: » » » » » »
syms x f= log(x); s u b p l o t (1,2,1) ezplot(f) s u b p l o t (1,2,2) e z p l o t ( i n t (f ))
» »
syms x y e z s u r f (sin(x)+ l o g (y))
7.2. Funções por Categoria Neste tópico, descrevemos as principais funções do Symbolic Math Toolbox, divididas por disciplinas.
7.2.1. Cálculo Considere x e y as variáveis simbólicas definidas para os exemplos.
MATLAB® 7 - Fundamentos
✓
diff
Derivada e derivada parcial de funções. Sintaxes típicas: r = diff(F) r = diff(F,var)
Parâmetros: Entrada F: função var: variável a ser considerada
______________________________________________
Exemplo: » dif f (x"'2*cos (x) ) ans = 2*x*cos(x)-x~2*sin(x) » d i ff(xA2*cos(y),x) ans = 2*x*cos(y)
% f (x) = x A2*cos(x) % derivada de f(x) % derivada parcial em x de f(x,y)
= X~2*cos(y)
» diff(xA2*cos ( y ) ,y) % derivada parcial em y de f(x,y) ans =
= X A2*cos(y)
A função também pode ser composta para obter derivadas de ordens superiores.
Integral de funções. Sintaxes típicas: r = int(F) / int(F,a,b) r = int(F, var) / r = int(F, var,
a, b)
Parâmetros: Entrada_________________________________________________________________ F: função var: variável a ser considerada a, b: intervalo de integração_______________________________________________________
Exemplo: » int(x~2*cos(x)) % integral de f(x)=xA2*cos(x) ans x''2*sin(x)-2*sin(x)+2*x*cos(x) » int(xA2 * c os(x),0,pi) ans = -2*pi
% integral de f (x) =x /'2*cos (x) entre 0 e pi
» int(xA2 * c os(y),y) % integral em y de f(x,y)=xA2*cos(y) ans = x~2*sin(y) » int(xA2*cos(y),y,0,pi/2) % integral em y de f(x,y) entre 0 e pi/2 ans = x A2
■S limit Limite de funções.
Sintaxes típicas: r r r r
= = = =
l i m i t (F) l i m i t (F,vl) l i m i t (F,var,vl) l i m i t (F,var,vl,lado)
Parâmetros: Entrada F: função vl: valor limite var: variável a ser considerada lado: 'right' (limite pela direita) / 'left' (limite pela esquerda) Observação: se o valor limite for omitido, a função assume 0 (zero). Exemplo: » l i m i t (sin(x)/x) % limite (sin(x)/x) com x->0 ans = 1 » limit(sin(x)/x,Inf) % limite (sin(x)/x) com x->Inf ans = 0 » limit(1/x,x,0, 'r i g h t 1) % limite (1/x) com x->0 pela direita ans = Inf » limit(1/x,x,0 l e f t 1) % limite (1/x) com x->0 pela esquerda ans = -Inf
s
taylor
Expansão da série de Taylor de uma função. Sintaxes típicas: r r r r
= = = =
taylor(F) taylor(F,n) taylor(F,a) taylor(F,var)
% quinta ordem % ordem n % valor da séride em a % para a variável var
Parâmetros: Entrada F: função
Introdução ao Symbolic Math Toolbox
Exemplo: » r = t a ylor(sin(x)) % quinta ordem r = x - l / 6 * x A3+l/120*xA5 » e z p l o t (s i n ( x ) ,[-pi pi]) % grafico sin(x) » hold Current plot h e l d % grafico da serie ________ » ezplot(r,[-pi pi])
S
jacobian
Matriz jacobiana de derivadas parciais. Sintaxe típica: r = jacobian(F,var)
Parâmetros: Entrada_____________________ F: função de mais de uma variável var: vetor de variáveis
Exemplo: >> f=xA2 * c o s ( y ) ; >> j a c o b i a n ([f f ] , [x y ] ) ans = [ 2*x*cos(y), -xA2*sin(y)] [ 2*x*cos(y), - x A2*sin(y)]
7.2.2. Simplificação e Substituição y
simplify
Simplifica expressões. Sintaxe típica: r = s i m p l i f y (expr)
Parâmetro: Entrada expr: expressão
Exemplo: » m=[sin(x) c o s (x);-cos(x) » det(m) ans = sin(x)A2 +c o s ( x ) A2 » simplify(det(m)) ans = 1
s
sin(x)];
expand
Expande expressões. Sintaxe típica: r = e x p a n d (expr)
Parâmetro: Entrada expr: expressão
Exemplo: » s=(x+l)A5 s = (x+l)A 5 » e x p a n d (s ) ans = x A5+5*xA4+10*xA3+10*x's2 + 5 * x + l » m=[sin(x)
■S factor Retorna os fatores de uma expressão. Sintaxe típica: r = factor(expr)
cos (x) ;-cos (x) sin ( x ) ] ;
Exemplo: » e x p r = e x p a n d ( (exp(x)+x)* (x+1)A2) expr = exp(x)*x'~2 + 2*exp(x)*x+exp(x)+xA3+2*x~2+x » factor(expr) ans = (exp(x) +x) * (x+1) ~ 2 » s=(x+l)~5
s
collect
Identifica coeficientes de termos de um polinómio. Sintaxe típica: r = collect(expr,var)
Parâmetros: Entrada_________________________________ expr: expressão var: variável do polinómio______________________
Exemplo: polinómio de grau três em x. » e xpr=y*xA3+y*x~2+x*y-y+x,'3+xA2 + x - l ; » collect(expr) ans = (y+1)*x"3+(y+1)*xA2+(y+1)*x-y-l
S
numden
#
Retorna expressão na forma: numerador /denominador. Sintaxe típica: [n u m ,d e n ] = n u m d e n (e x p r )
Parâmetros: Entrada___________________ expr: expressão var: variável do polinómio
Exemplo: polinómio » [num, den] =numden (1/ (x+1) *x/'2-l/ (x+1) *x+3/ (x+1) ) num = x~2-x+3 den = x+1
MATLAB® 7-Fundamentos
horner Retorna o polinómio na forma polinomial de Horner. Sintaxe típica: r = horner(expr)
Parâmetro: Entrada expr: expressão
Exemplo: polinómio » exp r = x A5“4*x's4+2*xA3-5*xA2-x+3 expr = x~ 5 - 4 * x~4+2*x/'3-5*x~2-x+3 » horner(expr) ans = 3+ ( - 1 + ( - 5 + ( 2 + (-4+x)*x)*x)*x)*x
S
coeffs
Dado um polinómio, retorna os coeficientes (da ordem menor para maior). Sintaxe típica: r = coeffs(expr)
Parâmetro: Entrada______ expr: expressão
Exemplo: » expr=expand( ((x-2)~ 2 ) * (exp(x)-3)) expr = x ~ 2 * e x p ( x ) -3 *x^2-4*x*exp(x)+12*x+4*exp(x)-12 » coeffs(expr) ans = [ -12, 12, -3, 1, -4, 4]
S
sort
Ordena vetor simbólico.
Sintaxe típica: r = s o r t (vetor)
Parâmetro: Entrada__________ vetor: vetor simbólico
Exemplo:
y
subs
Substitui símbolos em expressões. Sintaxe típica: r = subs(expr,
old, new)
Parâmetros: Entrada expr: expressão old: símbolo velho new: símbolo novo
Exemplo: » expr=expand( ((x-2)~2)* (exp(x)-3)) expr = x~2*exp(x)-3*x~2-4*x*exp(x)+12*x+4*exp(x)-12 » subs(expr,x,y) ans = y ,'2*exp (y) -3*y''2-4*y*exp (y) +12*y+4*exp (y) -12
7.2.3. Aritmética de Precisão Variada s
vpa
Interpreta um valor numérico e retorna-o como símbolo com a precisão numérica solicitada.
MATLAB® 7 - Fundamentos
Sintaxe típica: r = v p a ( e x p r ,prec)
Parâmetros: Entrada____________ expr: expressão prec: precisão numérica Exemplo: >> p i 3 = v p a ( p i ,3) P i3 = 3 .14
•/
digits
Configura precisão numérica para efeito de cálculo simbólico. Sintaxes típicas: digits digits(prec)
Parâmetro: Entrada prec: precisão numérica Exemplo: » digits Digits = 32 » d i g i t s (5) » digits Digits = 5
% Exibe configuracao atual % Modifica configuracao
7.2.4. Álgebra Linear Funções de álgebra linear do MATLAB® que valem para símbolos: Função diag triu tril inv det 11
II Introdução ao Symbolic Math Toolbox
Descrição cria ou extrai diagonal matriz triangular superior matriz triangula inferior inversa determinante
Função rank rref null colspace eig svd jordan poly
Descrição posto forma reduzida base do espaço nulo base do espaço coluna autovalores e autovetores valores e vetores singulares forma canónica de Jordan polinómio característico
Exemplo: »
m=[x y+1; x+1 y]
m = [
X,
y+1]
[
x+1, y] » diag(m) ans = x y » det(m) ans = -y-x-1 » mi=inv(m) mi = [ - y / ( y+x+l), (y+1)/(y+x+l)] [ (x+1) / (y+x+l), -x/(y+x+l) ] » [v,lambda]=eig (m) V
=
[
-(y+1)/(x+1), 1, lambda = [ -1, 0] [ 0, y+x+l]
1] 1]
[
7.2.5. Solução de Equações s
solve
Resolve equações simbólicas. Sintaxe típica: r = solve(equl,
equ2,
...)
MATLAEP 7 - Fundamentos
Parâmetro: Entrada______________ equ: equações simbólicas
Exemplo: resolver uma equação de 33 grau. >> r=solve (xA3-6*x,'2+ll*x-6) r = 1
2 3
Exemplo: achar as intersecções entre uma circunferência de centro (0,0) e raio 1, com a reta identidade, ou seja, x e y, tais que x2+y2=1 e x=y.
S
dsolve
Resolve equações diferenciais simbólicas fornecidas como cadeia de caracteres. Sintaxe típica: r = dsolve(equl,
equ2,
...)
Parâmetro: Entrada___________________________________________________________ equ: equações diferenciais simbólicas em formato de cadeia de caracteres. Observação: 'D' indica derivada e 'D2' indica segunda derivada.
Introdução ao Symbolic Math Toolbox
-xem plo: resolver
»
dv
= cos(t) + 1.
r = d s o l v e (’D 2 y = c o s {t)+t ') r =
-cos (t)+l/6*t/'3+Cl*t+C2
% Cl e C2 constantes
Resolver a mesma equação com duas condições iniciais (para y de Dy) para determinar os valores das constantes C1 e C2.
^ dt
= cos(t) + t, y(0) = 1 e y ,(0) = 1
» r = d s o l v e (' D2y=cos(t)+t ' 'y (0)=1' r = - c o s (t)+l/6*tA3+2
s
'Dy(O)=0 ')
finverse
Calcula função inversa (se existir). Sintaxes típicas: r = f i n v e r s e (funcao) r = finverse(funcao,var)
Parâmetros: Entrada funcao: função a ser invertida var: variável a ser considerada para a inversão
MATLAEP 7 - Fundamentos
Exemplos: » finverse ans = l/(x-l) >> r=dsolve
( x + U / x)
'D y = c o s ( t ) + t 1)
» finverse c o s ( x + 1 )) ans = -1+acos(x >> finverse abs(x)) % nao existe inversa para funcao valor absoluto Warning: fi n v e r s e (abs(x)) cannot be found. > In sym.finverse at 38 ans = 0
■/ compose Dadas as funções f e g, retoma função composta f(g). Sintaxe típica: r = compose(f,g)
Parâmetros: Entrada f, g: funções
Exemplos: » »
f=sin(x) ; g = ( x + 2 )/x;
» c o m p o s e (f,g) % f (g) ans = s i n ((x+2)/x) >> compose(g,f) % g(f) ans = (sin(x)+2)/sin(x)
7.2.6. Funções de Conversão S
double
Converte matriz simbólica em numérica de precisão dupla. Sintaxe típica: r = double (m)
I Introdução ao Symbolic Math Toolbox
Parâmetro: Entrada_________ m: matriz simbólica Exemplos: >> m = [ x -y;y -x] ; » m=sinnplify (m*inv(m) ) m = [ 1, 0] [ 0, 1] » r=double
Demais funções de conversões símbolo/número Função single char int8 int16 int32 int64 uint8 uint16 uint32 uint64
Converte matriz simbólica em numérica de: precisão simples cadeia de caracteres inteiros de 8 bits inteiros de 16 bits inteiros de 32 bits inteiros de 16 bits inteiros de 8 bits sem sinal inteiros de 16 bits sem sinal inteiros de 32 bits sem sinal inteiros de 16 bits sem sinal
■s poly2sym Converte vetor numérico de coeficientes em polinómio simbólico. Sintaxes típicas: r = poly2sym(v) r = poly2sym(v,var)
Parâmetro: Entrada v: vetor numérico de coeficientes var: variável
MATLAB 87-Fundamentos
Exemplos: » v = [2 5 6 -1 4] ; » pl=poly2sym(v) pl = 2 * x A4+5*xA3+6*xA2-x+4 » p 2 = p o l y 2 s y m ( v ( l :3) , 't ') p2 = 2 * t A2+5*t+6
•S sym2poly Converte polinómio simbólico em vetor numérico de coeficientes. Sintaxe típica: r = s y m2poly(pol)
Parâmetro: Entrada pol: polinómio simbólico Exemplos: » pol=expan d ( ( x - 2)A5) pol = x A5-10*xA4+4 0 * x A3-80*x,'2 + 80*x-32 » v=sym2poly(pol) v 1 -10 40 -80 80 -32
7 .2 .7 . S
Transformadas
fourier/ifourier
fourier: retorna Transformada de Fourier. ifourier: retorna inversa da Transformada de Fourier. Sintaxes típicas: tf = fourier(expr) / fourier(expr,var) expr = ifourier(tf) / ifourier(tf,var)
H 9 M
Parâmetros: Entrada expr: função var: variável Introdução ao Symbolic Math Toolbox
( 359
Exemplo: » f = e x p (~x*2); » t f = f o u r i e r (f ) tf = pi"' (1/2) *exp (-l/4*w‘s2 ) »
p r e t t y (tf) 1/2 pi
2 exp(- 1/4 w )
» ifourier(tf) ans = e x p (- x ^ 2 )
O b s e rv a ç ã o : a Trasformada de Fourier é utilizada para análise de dados, principalmente na área de processamento de sinais para identificação de freqüências.
S
laplace/ilaplace
laplace: retorna Transformada de Laplace. ilaplace: retorna inversa da Transformada de Laplace. Sintaxes típicas: tl = laplace(expr) / laplace(expr,var) / ilaplace(tl,var) expr = ilaplace(tl
Parâmetros: E n trad a
expr: função var: variável Retorna Transformada de Laplace.
ff
Sintaxes típicas: tl = laplace(expr) tl = laplace(expr, var)
Parâmetros: E n trad a
expr: função var: variável
MATLAB® 7 - Fundamentos
Exemplo: » » »
r=sin(x); t r = l a p lace(r); p r e t t y (tr) 1 2 s
+1
» ilaplace(tr) ans = s i n (t )
O b s erva ção : a Trasformada de Laplace é utilizada na área de controle para análise de sistemas dinâmicos.
ztrans/iztrans ztrans: retorna Transformada Z (domínio da freqüência), iztrans: retorna a inversa da Transformada Z (domínio da freqüência). Sintaxes típicas: tz = ztrans(expr) / ztrans(expr,var) expr = iztrans(tz) / iztrans(tz.var)
Parâmetros: E n trad a
expr: função var: variável
Exemplo:
7.2.8. Funções de Formatação S
findsym
Retorna as variáveis simbólicas em uma expressão.
Introdução ao Symbolic Math Toolbox____________________________________^361^
Sintaxe típica: v a r = findsym(expr)
Parâmetro: E n trad a________
expr: expressão
Exemplo: » syms a b x y » f=a*(x-2) - exp(b/y); » findsym(f) ans = a, b, x, y
S
pretty
Retorna a expressão em representação de fórmula. Sintaxe típica: pretty(expr)
Parâmetro: Entrada expr: expressão
Exemplo: » syms a b c x » s=a*x~2-b*x+c; » s o l v e (s) ans = 1/2/a*(b+(b~2-4*a*c)*(1/2) ) 1/2/a* (b- (b''2-4*a*c)'s(l/2) ) »
p r e t t y (solve(s)) 2 1/2] [ b + (b - 4 a c) ] [ [ 1/2 a ] [ [ 2 1/2] [ b - (b - 4 a c) ] [ [1/2 a ] [
MATLAB® 7-Fundamentos
Funções de conversão de formato: Função
Formato
f=a*(x-2)
latex
latex
texlabel
tex
ccode
linguagem C
fortran
linguagem Fortran
- exp(b/y);
>> l a t e x (f) ans = a \left( x-2 \right) -{eA {{\frac {b}{y}}}} » texlabel(f) ans = {a} ({x} - {2} )- {exp} ({b} / {y} ) » ccode(f) ans = tO = a * ( x - 2 .0)-exp(b/y); » fortran(f) ans = tO = a * ( x - 2 )-exp(b/y)
7.2.9. Funções Especiais ♦
Tratamento de casos onde a solução algébrica não existe: Função
♦
Exempio
Descrição
erf
função erro
sinint
integral de seno
cosint
integral de co-seno
exp(-x2)
» int(exp(-xA2 )) ans = l/2*pi's (1/2)*erf(x) » i n t (sin(x)/x) ans = sinint(x) » i n t (cos(x)/x) ans = cosint(x)
M M C /M D C : Função
Descrição
Icm
mímimo múltiplo comum
gcd
máximo divisor comum
Exemplo » pl=x~3-3*x~2+3*x- 1 ; » p 2 = x ,'2-5*x+4 ; » lcm(pl,p2) ans = (xA2-2*x+l)* (xA2-5*x+4) » pl=x~3-3*x~2+3*x-l; » p 2 = x A2-5 * x + 4 ; » gcd(pl,p2) ans = X —1
♦
Funções 'Exemplo' Função rsums funtool taylortool symintro
Introdução ao Symbolic Math Toolbox
Descrição soma de Riemann calculadora de funções calculadora de séries de Taylor introdução ao Symbolic Math Toolbox
( 363
Função symcalcdemo symlindemo symvpademo symrotdemo symeqndemo
Descrição demonstração de cálculo simbólico demonstração de álgebra linear simbólica demonstração de precisão numérica estudo de planos de rotação demonstração de solução de equações simbólicas
Exemplos: |»
r s u m s ('s i n ( x ) / x ',0,2* p i ) ]
»
funtool
»
taylortool
l(x) :x-cosfx)
0 N=7
0
a
~0 S
2
2
- ‘ pi
< x ' -D!
C=D
B
MATLAB ®7-Fundamentos
A p ê n d ic e
a
Exercícios Propostos
1.
No exercício 2, do tópico 2.3.1., o que significa a multiplicacão matricial das matrizes a e c (a*c)? Qual é a condição necessária para que duas matrizes A « n e B pxq possam ser multiplicadas matricialmente? A resposta é n = p, ou seja, que o número de colunas de A seja igual ao número de linhas de B. Isto faz sentido? Por quê? O que aconteceria se as tabelas tivessem informações dos meses de Março e Abril, ou de outros tipos de carros e peças? (Fonte: programação 'Vestibulando Digital1exibido pela TV Cultura - São Paulo.)
2.
Carlos, Luís e Sílvio tinham, juntos, 100 mil reais para investir por um ano.Carlos escolheu uma aplicação que rendia 15% ao ano. Luís, umaque rendia 20% por ano. Sílvio aplicou metade de seu dinheiro em um fundo que rendia 20% ao ano, investindo a outra metade numa aplicação de risco, com rendimento anual pós-fixado. Depois de um ano, Carlos e Luis tinham, juntos, 59 mil reais; Carlos e Sílvio, 93 mil reais; Luis e Sílvio, 106 mil reais. I. Quantos reais cada um tinha inicialmente? II. Qual foi o rendimento da aplicação de risco? (Fonte: Questão 1 da Prova de Matemática da 2a fase da Fuvest 2002 (08/01/2002)).
3.
No exercício 7, do tópico 2.7.2: Calcule o coeficiente de determinação da regressão (coeficiente R2). O R2 da regressão é -0.9311. Qual o significado desse valor?
4.
Abra arquivo triangulo_pascal.m no edit: ♦
Faça o acompanhamento da execução de ,a2=triangulo_pascal(2)‘.
♦
Faça um programa que calcule o triângulo de pascal pela fórmula.
Apêndice A ■Exercícios Propostos
5.
Para facilitar a entrada de parâmetros, experimente criar uma interface gráfica por meio do GUIDE como esta exibida a seguir para o problema do 'bungie jump':
Deslocamento :r
200;
l! \ I \
iso; 100 50
0 .50 •100:
100
200
300
400
I K (elastic)
500
j
600
700
300
01
O arquivo 'questao8.xls' contém duas séries tem porais, uma com 30 observações, armazenada nas colunas A e B da pasta [Pianl], e outra, com 100, armazenada nas colunas A e B da pasta [Plan2],
SOO
1000
1O
I E (Iracao)
Ifj3 Arquivo ! □
Editar
Exbif
- • 10 y
! Arial
f*:
A1
As duas séries apresentam missing data nos dados da coluna B, Problema proposto: I. Criar uma função que, dados os vetores X e Y, com Y contendo missing vaiues, constrói uma curva spline a partir dos pares de pontos válidos; e utilizar a curva spline para interpolar os missing values.
B
1 13 U 3 4u:
2 _3
m 6 *7 8 j . 9. To j ii
Insenr Lã V
Sél
1.62069 1931034 2.241379 2 551724 2 86206S 3,172414 3,432759 3,793103 4.103448
li,m
M
Por s.fb Lr=
1
:
1 c
r
77,625 74,5 73,125 73,125 73 72,875 74.375 75,25
II. Ler os dados da planilha 'questao8.xls'. III. Aplicar a função nos dados da planilha e exibir os resultados em gráficos (veja
a seguir). IV. Criar uma coluna C em cada pasta da planilha com os missing values da coluna B, substituídos pelos valores interpolados pela função.
MATLAB ® 7 - Fundamentos
7.
Crie uma versão do programa cap4Jmage_exempIo.m que aceite números diferentes de parâmetros de entrada, usando a função nargin: a. dois parâmetros: aceita os parâmetros. b. um parâmetro: pede arquivo de saída com a função inputdlg. c. nenhum parâmetro: pede os nomes dos arquivos com a função inputdlg. Nomes cios Arquivos
j5 ? j
Entrada....................................... ;:j NGJuly2002.jpg
.................... ,
Saída i s cap3.jpg
1 j ; OK
8.
I : 1 Cancel j
Considere o problema de circuito elétrico apresentado no exercício 4. R -jWWvVv-
h
2
-WWAV-
R,
-A/WvWvU +
PT
Tente criar interfaces gráficas dos tipos indicados a seguir.
Apêndice A - Exercícios Propostos
9.
Uma empresa fabrica um produto que é vendido em dois países no estrangeiro. Sejam x e y as quantidades vendidas nesses dois mercados. Sabe-se que as equações de demanda nos dois mercados são dadas por: p1 = 6 0 0 0 - 2 *x e p 2 = 9 0 0 0 - 4*y. A função custo total desta firma é C(z) = 60000 + 500*z, onde z é a quantidade produzida. Obtenha os valores de x e y que maximizam o iucro total da firma: L(x,y) = p1*x + p2*y - C(x,y), e ache esse lucro. (Fonte: Lista de Exercício do Curso de Derivativos da BM&F de São Paulo).
10. Crie a seguinte representação com o Symbolic Math Toolbox: E1(x,y) = x' * sin(x) + y1* co s(y), onde: x1é 1ã derivada de x, y1é 2- derivada de y no tempo. Obtenha a derivada de E1(x,y) no tempo, onde x e y são funções desconhecidas no domínio do tempo.
MATLAIP 7 ■Fundamentos
Indice Remissivo !, 24 “,32 %%, 71 %, 70,74 & (and), 81,200 *,31 -3 1 ',32 .*,31 7,31 A 32 /, 31 A, 32 I (or), 81,200 - (not), 81,200 ~= (ne), 81, 200 +,31 < (It), 81,200 <= (le), 81,200 == (eq), 81,200 > (gt), 81,200 >= (ge), 81,200
abs, 122 acos, 121 acosd, 121 acosh, 121 acot, 121 acotd, 121 acoth, 121 acsc, 121 acscd, 121 acsch, 121 addframe, 245 addtodate, 205 ajuste de curvas, 268 álgebra linear, 353 alpha, 290 alse, 81 Alt+S, 117 analisador para verificação de erros sintáticos, 210 angle, 122 annotations, 262 ans, 27 area, 274 arndlg, 313 array editor, 30,113 asec, 121 asecd,121 asech, 121 asin, 121 asind, 121 asinh, 121 atan, 121 atan2,121
atand, 121 atanh, 121 A U ,222 auread, 222 autovalores, 145 autovetores, 145 AVI, 222 avifile, 245 aviinfo, 245 aviread, 222,246 axes, 91,264,299,333 axis, 264
B balanceamento de expressões, 71 bar, 274 bar3,280 barh, 274 barh3,280 base2dec, 197 bin2dec, 197 bitand, 199 bitcmp, 199 bitget, 199 bitmax, 199 bitor, 199 bitset, 199 bitshift, 199 bitxor, 199 bkldiag, 133 blanks, 183 BMP, 222 botão direito do mouse, 21 esquerdo do mouse, 20 break, 209 breakpoint, 72 brighten, 291 built-in function), 35 buttongroup, 328,335
cadeia de caracteres, 46,183 calendar, 205 camdolly, 296 camera, 295 camlookat, 296 camorbit, 296 campan,296 campos, 296 camproj, 296 camproll, 296 camtarget, 296 camva, 296 camzoom, 296 caracteres especiais, 229
cart2pol, 164 cart2sph, 164 casa decimal, 27 case, 209,214 catch, 209,218 ccode, 363 c d ,219 cd, 24 CDF*, 222 cdfread, 222 ceil, 122 cell, 47,74,194 cell array, 47 cell mode, 69 cell2mat, 195 cell2str, 191 celldisp, 195 cellfun, 194 cellplot, 196 cellstr, 184 chamada de função, 76 char, 184,198 char array, 46 checkbox, 335 class, 181 classe do dado, 181 clear, 30 clock, 205 codh ,121 coeffs, 351 coeficiente de correlação, 150 collect, 350 colordef, 292 colormap, 291 colspace, 354 comet, 271 comet3,278 command history, 116 command window, 99 compan, 137 compass, 275 complex, 122 component pallete, 325 compose, 357 cond, 138 conj, 122 context menus, 322 continue, 209 contour, 286 contour3,286 contourf, 286 conv, 151 conversão de coordenada, 164 corrcoef, 151 cos, 121 cosd, 121 cosh, 121
Indice Remissivo
S
cosint, 363 cot, 121 cotd, 121 cov, 151 covariância, 151 cplxpair, 122 cputime, 206 csc, 121 cscd, 121 csch, 121 CSV, 221 C trl+0,117 C trl+1,117 C trl+2,117 C trl+3,117 C trl+4,117 Ctrl+A, 117 Ctrl+C, 117 Ctrl+D, 117 Ctrl+F, 117 Ctrl+1,117 Ctrl+N, 117 C trl+ 0 ,117 Ctrl+P, 117 Ctrl+Q, 117 Ctrl+S, 117 Ctrl+Shift+0,117 Ctrl+V, 117 Ctrl+W, 117 Ctrl+X, 117 Ctrl+Y, 117 Ctrl+Z, 117 cumprod, 124 cumsum, 125 cumtrapz, 147 CUR, 222 current directory, 110 cvsread, 221,233 cvswrite, 234 cylinder, 281
D
LJ
dados estatísticos, 269 DAT, 221 data cursor, 259 date, 206 datenum, 206 datestr, 184,207 datetick, 264 datevec, 207 dbclear, 73 dbcont, 73 dblquad, 174 dbquit, 73 dbstack, 73 dbstatus, 73 dbstep, 73 dbstop, 73 dbtype, 73 dbup,73 deal, 191
deblank, 185 debug mode, 69 dec2base, 198 dec2bin, 198 dec2hex, 198 decomposição, 143 em valores singulares, 146 deconv, 152 definição de função, 75 delete, 300 delimited file, 63 derivada, 345 parcial de funções, 345 desktop layout, 23 desvio padrão, 147 det, 45,139, 353 determinante de matriz, 45,139 diag, 125,353 diagonal de matriz, 125 diferenças finitas, 149 diferente, 81 diff, 149,345 digits, 353 dir, 24 divisão escalar, 31 matricial, 31 DLM.221 dlmread, 63, 221,234 dlmwrite, 63, 234 dock, 23 double, 51, 357 dsolve, 355
E E, 81 echo,211 edit, 69,105,209 edit text, 93,329 editor de programas, 105,209 eig, 145,354 ellipsoid, 281 else, 82,209,213 else if, 82,209,213 end, 209,213 eps, 27 equações diferenciais, 165,354 diferenciais simbólicas, 355 lineares, 143 erf, 363 errodlg, 217 error, 217 errorbar, 271 errordlg, 305 ESC, 117 escalar, 26 escopo de funções, 80 de variáveis, 78
estruturas de programação, 81 repetição, 83,215 seleção, 82,213 etxor, 203 eval, 185 e x p ,121 expand,349 expm l, 121 export setup, 266 expressões booleanas, 81 eye, 44,133 ezcontour, 287 ezcontourf, 287 ezmesh, 287 ezmeshc, 287 ezplot, 288 ezplofô, 288 ezpolar, 289 ezsurf, 290 ezsurfc, 290
F F 1 0,117 F 1 1 ,117 F11+Shift, 117 F 5 ,117 factor, 122, 349 factorial, 122 fatoração, 122 fclose, 227 feather, 276 feof, 227 ferror, 227 fft, 153 fgetl, 227 fgets, 228 fieldnames, 50,192 fields, 49 FIG, 223 figure, 299 figure palettes, 261 figure window, 54 fileparts, 220 filesep, 219 filter, 152 find files, 119 find, 126 findobj, 300 findobj, 93 findsym, 362 finverse, 356 FITS*, 222 fitsread, 222 fix, 122 fliplr, 126 flipup, 126 floor, 122 fminbnd, 169 fopen, 228 for, 83,209,216
format, 28 formato de arquivo, 221 delimitado, 63 MAT, 62 MS-Excel, 67 fortran, 363 fourier, 359 fprintf, 228 fread, 230 frewind, 230 fscanf, 230 fseek, 231 ftell, 231 ftp, 248 full, 177 fullfile, 220 func2str, 198 função, 35 callback, 90 composta, 357 de arredondamento e resto, 122 de números complexos, 122 de teste lógico, 123 exponencial elementar, 121 inversa, 356 trigonométrica elementar, 121 function, 70,76,208,209 funtool, 363 fwrite, 232 fzero, 170
G gbo, 302 gca, 301 gcbf, 302 gcbo, 302 gcd, 122,363 gcf, 59,93 generate m-file, 263 geração de gráficos, 53 get, 94,303 getframe, 246 GIF, 222 ginput, 314 global, 79,209 gradient, 150 grid, 57,264 griddata, 159 gtext, 315 GUIDE ■Graphic User Interface Design Environment, 89,317
H handle graphics®, 296 HDF*, 222 HDF, 222 hdfread, 222 help browser, 102 helpdlg, 306
Indice Remissivo
hex2dec, 197 hidden, 292 hide / show plot tools, 259 hold, 272 homer, 351 HTML, 223
ICO, 222 if, 82,209,213 . ifft, 154 ifourier, 359 igual, 81 ilaplace, 360 imag, 122 image, 60,243,299 imageview, 306 iminfo, 242 importdata, 68,221 imread, 60,222,243 imwrite, 243 indexação, 39 inf, 28 input, 87 inputdlg, 88,307 inputname, 212 Insert colorbar, 259 Insert legend, 259 int, 346 int16,51 int2str, 198 int32,51 int64,51 int8,51 integração numérica, 173 integral de funções, 346 inteiro 8 bits com sinal, 51 8 bits sem sinal, 51 16 bits com sinal, 51 16 bits sem sinal, 51 32 bits com sinal, 51 32 bits sem sinal, 51 64 bits com sinal, 51 64 bits sem sinal, 51 interface com usuário, 98 interpl, 160 interp2,161 interpft, 162 interpolação, 158 intersect, 200 intmax, 50 intmin, 50 inv, 45,142,353 inversa de matriz, 45 isa, 182 iscell, 82,182 iscellstr, 82,183 ischar, 81,183 isempty, 81,123 isequal, 81,123,182
isfield, 82,182 isfinite, 82 isfloat, 123,182 isglobal, 79 ishandle, 302 isinf, 82 isinteger, 124,182 iskeyword, 182,209 isletter, 183 islogical, 124,182 ismember, 201 isnan, 82 isnumeric, 81,124,182 ispersistent, 79 isprime, 122 isreal, 82,122,182 isscalar, 124,182 issorted, 202 isspace, 183 issparse, 81,124,178 isstruct, 82 istruct, 182 isvarname, 182 isvector, 124,182 iztrans, 361
J jacobian, 348 Java Virtual Machine, 20 JIT accelerator, 69 jordan, 354 JPEG, 222
K kron, 127
L label, 322 laplace, 360 lasterr, 217 lastwarn, 217 latex, 363 layout area, 325 Icm, 122,363 legend, 264 length, 124 light, 293,299 lighting, 293 limit, 347 limite de funções, 346 line, 257 linsolve, 143 linspace, 43,134 listbox, 332 listdlg, 307 load, 62,221,222 log, 121 log 10,121 loglp, 121
lo g2 ,121 logical, 181,198 logspace, 134 lower, 186 Is, 24 lu, 143
M
N
maior ou igual, 81 maiorque, 81 marker, 257 MAT, 221 mat2cell, 197 mat2str, 198 matemática algébrica e simbólica, 339 discreta, 122 material, 293 mat-file, 62 matlab.mat, 223 MATLAB® 7 Desktop, 19 MATLAB® Desktop, 99 MATLAB® Help Browser, 119 matlabrc.m, 120 matlabroot, 219 matriz bidimensional, 26 de célula, 47 esparsa, 175 identidade, 133 inversa, 142 jacobiana, 348 ortogonal, 140 pseudo-inversa, 144 simbólica, 341 tridimensional, 27 max, 128 MDL, 223 mean, 147 média, 147 median, 147 mediana, 147 menor ou igual, 81 que, 81 menu Bar, 322 contextual, 105 flutuante, 105 mesh, 282 meshc, 282 meshgrid, 60,134,282 m-file, 207 mfilename, 208 min, 128 mlint, 210 M-Lint, 69, 74 mlintrpt, 210 mod, 122 modelo do Simulink, 223 movie, 246
-3
movie2avi, 246 moving tools within the desktop, 22 msgbox, 309 multiplicação escalar, 31 matricial, 31
-
namelengthmax, 29,208 N aN ,28 nargin, 208 nargout, 209 nchoosek, 122 ndims, 124 negação,81 nested function, 80 nextpow2,121 nil, 81 nnz, 178 nome da função, 35,208 de variável, 29 nondouble, 51 nonzeros, 178 norm ,139 notação científica, 27 now, 206 null, 140,354 num2cell, 197 num2str, 198 numden, 350 numel, 44,124 número, 27 complexo, 27 negativo, 27 primo, 122
objeto ActiveX, 337 ode113,165,167 ode15s, 165 ode23,165 ode23s, 165 ode23t, 165 ode23tb, 165 ode45,165 ones, 44,135 oom in, 258 open, 223 operadores bitwise, 199 de conjunto, 200 de data e hora, 204 relacionais, 200 optimget, 173 optimset, 171 orderfields, 192 orth, 140 otherwise, 209,214
otimização, 169 OU, 81
page setup, 266 palavras reservadas da linguagem MATLAB®, 209 pa n,258 panel, 334 parâmetros de entrada, 35,208 de saída, 35,208 pascal, 138 path, 299 pathdef.m, 120 pathtool, 118 pause, 212 PBM, 222 pcode,211 PCX, 222 peaks, 283 perms, 123 persistent, 78,209 PGM, 222 pi, 27 pie, 275 pie3,280 pinv, 144 plot, 54 plot browser, 260 plot tools, 57,256 plot type, 257 plot3,278 plotyy, 273 PNG, 222 pol2cart, 164 polar, 272 polinómio, 155 característico, 146 poly, 145,155,354 poly2sym, 358 polyder, 156 polyeig, 146 polyfit, 65,156 polyint, 157 polyval, 65,157 Popupmenu, 330 posto de matriz, 45,141 potência (matrizAescalar), 32 escalar, 32 p o w 2,121 PPM, 222 ppval, 163 precedência, 32 precisão dupla, 51 simples, 51 preferences, 118 pretty, 362 primes, 123
MATLAEP 7 - Fundamentos \:
:
print, 267 preview, 267 setup, 267 print, 59 private function, 80 prod, 128 produto de Kron, 127 profile, 84 profiler, 102 prompt ’K » ', 72 properties editor, 262 propriedades de exibição da curva do gráfico, 56 proteger código fonte, 211 publish to HTML, 102 push button, 91, 326 pwd, 24,219
Q qr, 144 quad, 173 quadl, 173 questdlg, 310 quiver, 277 quiver3,284
R radiobutton, 335 rand, 44,135 ran dn ,44 ,136 rank, 45,141,354 RAS, 222
rat, 123 rats, 123 real, 122 reallog, 121 realmax, 27 realmin, 27 realpow, 121 rectangle, 300 rem, 122 repmat, 129 reshape, 129 resizing tools, 21 restoredefaultpath.m, 120 return, 209 ribbon, 279 rmfield, 192 roots, 158 rot90,130 rotate 3D, 259 round, 122 rref, 354 rsums, 363
s save, 62,224 script, 70,208,214 sec, 121
I índice Remissivo
seed, 121 s ech ,121 selectionchangefunction, 335 sendmail, 249 serial, 252 série de Taylor, 347 set, 303 setdiff, 202 shading, 294 shortcut, 100 sign, 122 símbolo, 340 simplify, 348 sin, 121 sind, 121 single, 51 sinh, 121 sinint, 363 sistema linear, 41 size, 44,124 slider, 327 SND, 222 solve, 354 solvers, 165 soma, 31 sort, 130,352 sortrows, 131 sound, 239 soundview, 310 sparse, 177 spdiags, 175 speye,176 spfun, 179 sphere, 283 spline, 163 spones, 179 sprand, 176 sprandn, 176 sprintf, 186 spy, 180 sqrt, 121 sscanf, 187 stairs, 278 start button, 99 startup.m, 120 static text, 93 std, 147 stem, 278 str2double, 198 str2func, 198 str2num, 94,198 strcat, 187 strcmp, 183 strcmpi, 183 strfind, 190 strjust, 187 strncmp, 183 strncmpi, 183 strread, 188 strrep, 188 strtok, 190
strtrim, 189 struct, 49,193 struct2cell, 193 strvcat, 47,189 subfunctions, 80 subplot, 58,264 subs, 343,352 subspace, 141 subtração, 31 sum, 131 surf, 60,282 surface, 300 surfc, 282 surfnorm, 285 svd, 146, 354 switch, 82,214 sym, 340,342 sym2poly, 359 symbol, 340 symcalcdemo, 364 symeqndemo, 364 symintro, 363 symlindemo, 364 symrotdemo, 364 syms, 340 symvpademo, 364
T tab, 117,221 tab+ctrl, 117 tag, 93,322 tan, 121 tand, 121 tanh, 121 taylor, 347 taylortooi, 363 tecias de atalho, 117 tempdir, 219 tempname, 219 texlabel, 363 text, 264,300 textread, 235 textscan, 235 tic, 207 TIFF, 222 title, 257,264 toe, 207 toggiebutton, 335 toolbox, 339 trace, 142 transformada de Fourier, 359 de Laplace, 360 discreta de Fourier, 153 Z, 361 transposta, 32 trapz, 148 tratamento de erros, 217 tril, 132,353 triu, 132,353 true, 81
373
try, 209,218 TXT, 221
u Ul Objects, 297 Ul Control, 297, 317 uigetdir, 311 uigetfile, 311 uiimport, 224 uiload, 225 UlMenu Properties, 322 uint16,51 uint32,51 uint64,51 uint8,51 uiopen, 225 uiputfile, 312 undock, 23 union, 203 unique, 204 unzip, 249 upper, 186 uriread, 250 uriwrite, 250 user usability, 98
V var, 147 variância, 147 variável global, 79 local, 78 persistente, 78 vetor coluna, 26 linha, 26 multi-dimensional, 27 seqüencial, 42 vpa, 353
w waitbar, 312 waitfor, 316 waitforbuttonpress, 316 waterfall, 282 WAV, 222 wavplay, 239 wavread, 222,240 wavrecord, 241 wavwrite, 241 web browser, 101 which, 221 while, 83,209,215 who, 30 winopen, 226
m i,
222
wk1 read, 222 wklsread, 238 wk1 write, 239 workspace, 30,111
x X Axis, 258 XDW, 222 xlabel, 264 XLS, 222 xlsfinfo, 236 xlsread, 67,222,237 xlswrite, 67,237 XML, 252 xmlread, 252 xmlwrite, 253 xslt, 253
Y Y Axis, 258 ylabel, 264
z Z Axis, 258 zeros, 44,137 zip, 251 zlabel, 264 zoom out, 258 7tranc
MATLAB® 7■ Fundamentos
Referências Bibliográficas HANSELMAN, D.; LITTLEFIELD B. The Student Edition of MATLAB Version 5. User's Guide. Prentice Hail, 1997. MATSUMOTO, E. Y. MATLAB 6: Fundamentos de Programação. São Paulo: Érica, 2001 . ______ . MATLAB 6.5: Fundamentos de Programação. São Paulo: Érica, 2002. THE MATHWORKS. Getting Started with MATLAB Version 7,2004. ______ . Using MATLAB Graphics Version 7 , 2004. ______ . Using MATLAB Version 7,2004.
Sugestões de Leitura: MANZANO, J. A. N. G. Estudo Dirigido de Visual Basic 6. São Paulo: Érica, 1999. ______ . Estudo Dirigido de C++ Builder 6. São Paulo: Érica, 2003. ______ . C++: Programação de Computadores: Guia Prático de Orientação e Desenvolvimento. São Paulo: Érica, 2003. MANZANO, J. A. N. G.; MENDES, S. S. V. Estudo Dirigido de Delphi 8. São Paulo: Érica, 1999. MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: Lógica para Desenvolvimento de Programação. São Paulo: Érica, 2000.
Referências Bibliográficas
MATLAB* 7 FUNDAMENTOS MATLAB: inteligência e tecnologia aplicadas à conquista de inovações
esde a sua primeira versão, o MATLAB ® vem sendo utilizado por diversos profissionais 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.
D
Com exemplos, exercícios práticos, tutorials e uma abordagem objetiva e didática, este livro apresenta os principais conceitos de utilização dessa fantástica linguagem. Organizado em sete capítulos, aborda o ambiente interativo do MATLAB ® 7 na plataforma PC/Windows XP, conceitos básicos, principais comandos e funções da linguagem, sintaxes típicas, leitura e gravação de arquivos, recursos gráficos e as funções Handle Graphics® que gerenciam objetos gráficos. Mostra como desenvolver Mplementação de interface com usuário utilizando as funções de caixa de diálogo predefínidas e os recursos do GUIDE do MATLAB ®, além da introdução ao uso do Symbolic Math Toolbox, aplicativo para matemática simbólica. Destinado a estudantes e profissionais da área, também pode ser utilizado como material de apoio para cursos técnico, superior ou pós-graduação, treinamentos empresariais e até em escolas de segundo grau.
Invista em você.
IS B N :
M ___
r
www.editoraerica.com.br
85-365-U U 3Z -Ö
llll
788536 500324