113
Universidade Federal do Pampa Campus Alegrete Cursos de Engenharia de Telecomunica¸c˜ oes, El´ etrica e Mecˆ anica. Introdu¸ ao ao MATLAB r Alegrete - RS 31 de outubro de 2018

Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Universidade Federal do PampaCampus Alegrete

Cursos de Engenharia de Telecomunicacoes, Eletrica e Mecanica.

Introducao ao MATLABr

Alegrete - RS

31 de outubro de 2018

Page 2: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Apresentacao

Esta apostila e um sub-produto do projeto de extensao “Educacao Tutorial Baseada naProducao de Material Didatico”. Este projeto conta com participantes dos cursos de EngenhariaEletrica, Mecanica e de Telecomunicacoes da Universidade Federal do Pampa, Campus Alegrete,bem como, com alunos da Universidade Federal de Santa Maria. Como resultado deste projeto,busca-se o desenvolvimento tecnico e pessoal de seus participantes e como sub-produtos geradosespera-se a obtencao de materiais didaticos em linguagem simplificada referentes a softwares eprocessos utilizados em engenharia ou em areas tecnicas relacionadas.

Esta apostila refere-se ao software MATLAB que, dentre suas diversas caracterısticas mar-cantes, destaca-se por possuir uma linguagem de programacao propria com sintaxe simplificada,grande quantidade de funcoes pre-definidas e facilidade na producao e edicao de graficos. De-vido a essas caracterısticas o software tornou-se uma ferramenta amplamente utilizada tantono setor academico, quanto no setor industrial, com um destaque para setores de engenharia.Devido a ampla difusao desta ferramenta ela foi escolhida para ser estudada nessa apostila.

Nesta apostila serao abordados os seguintes topicos, referentes ao software MATLAB:

� O ambiente MATLAB;

� Nocoes basicas de operacoes com escalares, matrizes e vetores;

� Nocoes basicas de programacao utilizando o software;

� Geracao e edicao de graficos em duas e tres dimensoes;

� Utilizacao do software para matematica basica;

� Nocoes basicas de geracao de interfaces graficas.

A fim de diferenciar-se dos demais materiais didaticos existentes, essa apostila foi desen-volvida de modo a possuir uma linguagem simplificada e diversos exemplos referentes a teoriaapresentada. Desse modo, buscou-se que a apostila possa ser utilizada por estudantes emdiferentes etapas de formacao, independentemente de seus conhecimentos previos.

Por fim, e importante salientar que essa apostila foi desenvolvida a fim de ser distribuıda deforma gratuita com a finalidade de difundir os conhecimentos basicos associados a ferramentaestudada. Assim, os autores encorajam sua utilizacao para cursos, disciplinas, palestras associ-adas ao tema. Alem disso, qualquer contribuicao para o documento sera apreciada, sendo quepara realizar uma basta entrar em contato direto com os autores.

Autores:

� Caroline Bremm (Unipampa)

� Gabriel Silveira Torres (Unipampa)

� Ian Gabriel Souza Lanza (UFSM)

� Maurıcio de Sousa Ferreira (Unipampa)

Professores:

� Crıstian Muler (Unipampa)

� Dimas Irion Alves (Unipampa)

Page 3: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Sumario

1 MATLAB 6

1.1 Ambiente MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2 Ambiente Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Importacao de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Operacoes Basicas - Escalares, Vetores e Matrizes 16

2.1 Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.2 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.2.1 Operacoes com Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2.2 Manipulacao por Meio de Funcoes . . . . . . . . . . . . . . . . . . . . . . 20

2.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3.1 Variaveis Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3.2 Funcoes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.3.3 Operacoes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3 Arquivos .m 33

3.1 Interface do Editor de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.1.1 Comandos de Saıda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.3 Depuracao e Simulacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.4 Operando com Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.5 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4 Controle de Fluxo 48

4.1 Operadores Logicos e Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.2 Declaracao de Selecao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.1 Estrutura If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4.2.2 Estrutura Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4.3 Declaracao de Lacos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.3.1 Laco for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

4.3.2 Laco while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

4.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5 Graficos 56

5.1 Graficos em Duas Dimensoes (2D) . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.2 Principais Funcoes para Geracao de Graficos - Estatıstica . . . . . . . . . . . . . 61

5.3 Formatacao de Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

5.4 Comando subplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

5.5 Graficos em Tres Dimensoes (3D) . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Page 4: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.5.1 Curvas no Espaco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

5.5.2 Malhas e Superfıcies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

5.5.3 Comando view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

5.6 Ambiente de Edicao de Imagens . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

5.7 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6 Matematica Basica 81

6.1 Variaveis Simbolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.2 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.2.1 Operacoes com polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.2.2 Solucao de equacoes polinomiais . . . . . . . . . . . . . . . . . . . . . . . 84

6.3 Calculo Diferencial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6.3.1 Limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6.3.2 Derivadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

6.3.3 Integrais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

6.4 Interpolacao e Ajustes de Curvas . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.4.1 Comando polyfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

6.4.2 Comando interp1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

6.5 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7 GUI - Graphical User Interface 93

7.1 Inicializacao do GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.2 Componentes basicos do GUIDE . . . . . . . . . . . . . . . . . . . . . . . . . . 95

7.3 Construcao de uma GUI passo a passo . . . . . . . . . . . . . . . . . . . . . . . 96

7.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

2

Page 5: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Lista de Figuras

1.1 Pagina inicial do MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.2 Figure Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.3 Editor Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.4 Help Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5 Help Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.6 Utilizacao do comando help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.7 Utilizacao do comando lookfor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.8 Utilizacao do comando lookfor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.9 Primeira etapa, importando arquivos. . . . . . . . . . . . . . . . . . . . . . . . . 12

1.10 Segunda etapa, escolha do arquivo. . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.11 Terceira etapa, pre-visualizacao do arquivo escolhido. . . . . . . . . . . . . . . . 13

1.12 Quarta etapa, escolha das opcoes de formato. . . . . . . . . . . . . . . . . . . . 13

1.13 Quinta etapa, escolha de opcoes para a finalizacao. . . . . . . . . . . . . . . . . 14

1.14 Importacao Finalizada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.15 Comando Generate Script. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Iniciando o Editor do MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2 Exemplo de execucao de um script. . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3 Exemplo de utilizacao do comando input. . . . . . . . . . . . . . . . . . . . . . . 35

3.4 Exemplo de script com o comando disp. . . . . . . . . . . . . . . . . . . . . . . . 36

3.5 Exemplo de utilizacao do comando disp em conjunto com o num2str. . . . . . . 36

3.6 Exemplo de utilizacao do comando fprintf. . . . . . . . . . . . . . . . . . . . . . 38

3.7 Executando um script com os comando disp e fprintf. . . . . . . . . . . . . . . . 38

3.8 Inclusao de um breakpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.9 Inclusao de um breakpoint. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.10 Pausa do codigo devido ao encontro do breakpoint. . . . . . . . . . . . . . . . . . 42

3.11 Analisando as caracterısticas de uma variavel atraves da depuracao. . . . . . . . 43

3.12 Ferramentas da Depuracao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.13 Arquivo criado para facilitar a explicacao de operacoes com arquivos. . . . . . . 44

3.14 Command Window do exemplo com os comandos fopen e fscanf. . . . . . . . . . 46

5.1 Exemplo de grafico em tres dimensoes. . . . . . . . . . . . . . . . . . . . . . . . 56

5.2 Exemplo da funcao plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.3 Grafico utilizando semilogx. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.4 Grafico utilizando semilogy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

5.5 Grafico utilizando loglog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5.6 Uso do comando polar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

5.7 Grafico utilizando o comando hold. . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.8 Uso do comando pie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.9 Uso do comando bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

5.10 Uso do comando hist. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Page 6: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.11 Uso do comando stairs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.12 Grafico gerado com configuracoes de title, ylabel e xlabel. . . . . . . . . . . . . . 64

5.13 Grafico gerado com configuracao de propriedades do comando plot. . . . . . . . 66

5.14 Grafico gerado utilizando os comandos grid e legend. . . . . . . . . . . . . . . . 67

5.15 Grafico gerado utilizando os comandos text e gtext. . . . . . . . . . . . . . . . . 68

5.16 Grafico gerado utilizando o comando axis. . . . . . . . . . . . . . . . . . . . . . 69

5.17 Grafico gerado utilizando o comando xlim. . . . . . . . . . . . . . . . . . . . . . 69

5.18 Figure Window utilizando o comando subplot. . . . . . . . . . . . . . . . . . . . 71

5.19 Grafico de uma curva 3D utilizando o comando plot3. . . . . . . . . . . . . . . . 72

5.20 Graficos de malha e superfıcie de uma mesmas funcao Z(x,y). . . . . . . . . . . 74

5.21 Grafico em barras utilizando o comando bar3 (y). . . . . . . . . . . . . . . . . . 75

5.22 Uso do comando pie3 (X,y). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

5.23 Grafico 3D utilizando o comando view. . . . . . . . . . . . . . . . . . . . . . . . 76

5.24 Principais vistas de uma determinada funcao Z(X,Y) utilizando o comando view. 77

5.25 Show plot tools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

5.26 Ambiente de edicao do grafico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.27 Edicao do fundo do grafico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

5.28 Edicao de linhas, barras entre outros dados exibidos no grafico. . . . . . . . . . . 79

6.1 Exemplo de utilizacao do comando polyfit. . . . . . . . . . . . . . . . . . . . . . 89

6.2 Exemplo utilizacao do comando interp2. . . . . . . . . . . . . . . . . . . . . . . 91

7.1 Exemplo de GUI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.2 Inicializacao da ferramenta GUIDE. . . . . . . . . . . . . . . . . . . . . . . . . . 94

7.3 Ambiente do GUIDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

7.4 Componentes basicos para a construcao de uma GUI. . . . . . . . . . . . . . . . 95

7.5 GUI exemplo para construcao passo a passo. . . . . . . . . . . . . . . . . . . . . 97

7.6 GUI apos inserir os componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.7 Janela Inspetora dos componentes da GUI. . . . . . . . . . . . . . . . . . . . . . 99

7.8 Janela String do Pop-up Menu da GUI. . . . . . . . . . . . . . . . . . . . . . . . 100

7.9 String do Pop-up Menu referente a cor da linha do grafico da GUI. . . . . . . . 100

7.10 String do Pop-up Menu referente ao estilo de linha do grafico da GUI. . . . . . . 100

7.11 GUI apos a alteracao das Tags, Strings e o alinhamento dos componentes. . . . 101

7.12 Janela de Alinhamento dos componentes da GUI. . . . . . . . . . . . . . . . . . 102

7.13 Interface grafica do Exercıcio 1 da Secao 7. . . . . . . . . . . . . . . . . . . . . . 109

7.14 Interface grafica do Exercıcio 2 da Secao 7. . . . . . . . . . . . . . . . . . . . . . 110

4

Page 7: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Lista de Tabelas

2.1 Utilizando o MATLAB como uma calculadora. . . . . . . . . . . . . . . . . . . 16

2.2 Funcoes e operacoes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.3 Funcoes Vetoriais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4 Funcoes Matriciais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2.5 Operador ponto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.1 Caracteres de formatacao do comando fprintf. . . . . . . . . . . . . . . . . . . . 37

3.2 Comandos para operacao com arquivos. . . . . . . . . . . . . . . . . . . . . . . . 44

3.3 Atributos do comando fopen para abrir arquivos. . . . . . . . . . . . . . . . . . 45

4.1 Operadores Relacionais. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.2 Tabela-Verdade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4.3 Ordem de precedencia dos operadores. . . . . . . . . . . . . . . . . . . . . . . . 50

5.1 Comandos para gerar graficos em 2D. . . . . . . . . . . . . . . . . . . . . . . . 57

5.2 Comandos para gerar graficos estatısticos. . . . . . . . . . . . . . . . . . . . . . 61

5.3 Edicao de cores, estilos de linha e marcadores com plot. . . . . . . . . . . . . . . 65

5.4 Propriedades do comando plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.5 Posicionamento da legenda no grafico. . . . . . . . . . . . . . . . . . . . . . . . . 66

5.6 Comandos para gerar graficos 3D especiais. . . . . . . . . . . . . . . . . . . . . . 74

5.7 Principais vistas do comando view. . . . . . . . . . . . . . . . . . . . . . . . . . 76

6.1 Comandos para utilizar variaveis simbolicas. . . . . . . . . . . . . . . . . . . . . 81

6.2 Comandos para manipulacao de expressoes polinomiais. . . . . . . . . . . . . . . 84

7.1 Componentes Basicos do Ambiente GUIDE. . . . . . . . . . . . . . . . . . . . . 96

Page 8: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 MATLAB

O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na decada de

70 para calculos matriciais e otimizado ao longo dos anos, tornou-se um programa flexıvel utili-

zado em calculos matematicos, modelagens e simulacoes, analises numericas e processamentos,

desenvolvimento de algoritmos, visualizacao e graficos, entre outros. Suas caracterısticas prin-

cipais sao possuir uma linguagem de programacao simplificada e com muitos recursos, visando

manter o foco do usuario o maximo possıvel no problema em questao, uma vez que sera neces-

sario muito menos esforco para a utilizacao do software, se comparado com outras linguagens

como C ou Java. Por estes motivos o MATLAB e muito utilizado na area das engenharias, nas

quais e muito comum estudantes e/ou profissionais precisarem resolver problemas complexos

e que envolvam a resolucao de muitas equacoes e execucao de graficos. Entao, iniciando a

apresentacao deste software, neste capıtulo serao apresentadas os componentes que compoem o

ambiente padrao do MATLAB, o ambiente de ajuda, modos de importacao de dados, janelas

que compoem a sua interface grafica e janela de edicao dos dados.

1.1 Ambiente MATLAB

O Ambiente MATLAB pode ser dividido em sete janelas para sua exibicao, em que essas

sao necessarias para o conhecimento basico da utilizacao do software. Dado isso, a seguir sao

apresentadas as janelas Command Window, Figure Window, Editor Window, Help Window,

Current Folder, Workspace e Command History.

A Command Window (Janela de Comandos) e exibida na primeira pagina do MATLAB,

utilizada para gerar codigos pequenos e simples. A Figura 1.1 mostra o ambiente do MATLAB,

quando o mesmo e inicializado, em que pode ser observado que existem mais tres janelas abertas

juntamente com a Command Window :

� A Current Folder (Pasta Atual), que mostra os arquivos salvos no diretorio.

� A Workspace (Area de Trabalho), que e um espaco reservado para exibir informacoes

sobre as variaveis utilizadas.

� A Command History (Historico de Comandos), que mostra uma lista de comandos re-

centes que foram executados na Command Window e podem ser novamente executados,

bastando, para isso, clicar duas vezes no comando desejado.

6

Page 9: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 1.1: Pagina inicial do MATLAB.

A Figure Window (Janela de Figuras) e exibida imediatamente apos a interpretacao de

um comando de geracao grafica, tanto bidimensionais quanto tridimensionais. Um exemplo da

utilizacao da Figure Window e mostrado na Figura 1.2.

Figura 1.2: Figure Window.

7

Page 10: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

A Editor Window (Janela de Edicao) e gerada instantaneamente apos a criacao de um

arquivo “.m´´, em que o arquivo pode ser criado atraves do menu EDITOR >> New >>

NewEscript ou HOME >> NewEscript. Um exemplo da utilizacao da Editor Window e

mostrado na Figura 1.3.

Figura 1.3: Editor Window.

A Help Window (Navegador de Ajuda) pode ser exibida a partir das seguintes formas:

barra de ferramentas do MATLAB; clicando em Help; ou pela tecla F1. E utilizado para se

obter ajuda dos comandos e funcoes existentes no MATLAB. Um exemplo da Help Window e

mostrado na Figura 1.4.

8

Page 11: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 1.4: Help Window.

1.2 Ambiente Help

Existem muitas formas de se obter ajuda no MATLAB. O metodo mais utilizado pelos

usuarios e por meio do Navegador de Ajuda, o qual pode ser inicializado selecionando o ıcone

de ajuda, localizado na barra de ferramentas, pela tecla de atalho F1 ou ate mesmo digitando

helpdesk na Command Window, que abrira a janela de documentacao do MATLAB, exibindo

todos os comandos e suas especificacoes. Caso o usuario esteja procurando por um comando

em especıfico, e possıvel realizar uma pesquisa na janela, como mostrado na Figura 1.5. Alem

desses metodos, o MATLAB conta com dois comandos que facilitam ainda mais o trabalho do

usuario, sendo eles o help e lookfor.

9

Page 12: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 1.5: Help Window.

Comando help: Esta e a maneira mais simples de se obter ajuda a partir da Command

Window. Para inicializar este comando, basta digitar help e, em seguida, o MATLAB exibira

possıveis topicos para obtencao de ajuda na propria Command Window. Caso o usuario neces-

site de ajuda sobre uma funcao ou comando em particular, basta digitar help seguido do nome

da funcao ou comando desejado. Este metodo e bastante eficaz quando sabe-se exatamente

sobre qual topico necessita-se de ajuda. Na Figura 1.6 e mostrado um exemplo de como obter

informacoes sobre o uso da funcao log.

Figura 1.6: Utilizacao do comando help.

Comando lookfor : Enquanto o comando help procura informacoes sobre um comando

especıfico, o comando lookfor realiza uma pesquisa rapida e resumida de cada funcao ou co-

mando que tenha relacao com a palavra chave digitada, que nao precisa ser necessariamente

o nome da funcao. Na Figura 1.7 e mostrado um exemplo utilizando o comando lookfor para

obter informacoes relacionadas ao termo loop.

10

Page 13: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 1.7: Utilizacao do comando lookfor.

Caso o usuario realize a busca de uma funcao ou comando que nao exista no MATLAB, o

comando help nao fornecera nenhuma informacao, ja o comando lookfor apresentara resultados

relacionados ao que foi digitado. Por exemplo, o MATLAB nao possui a funcao inverse, entao,

caso o usuario queira obter informacao sobre essa palavra, nao sera encontrado nada utilizando

comando help. No entanto, com o comando lookfor serao exibidas as informacoes mostradas na

Figura 1.8.

Figura 1.8: Utilizacao do comando lookfor.

1.3 Importacao de dados

Usando a funcao import date do MATLAB, pode-se importar arquivos de diferentes forma-

tos, como por exemplo: textos(.txt, .dat, .dlm, .tab); planilhas do Excel (.xml, .csv, .xls, .xlsx,

.wk1); imagens (.jpg, .jpeg); imagem com movimento (.gif); audio (.au, .snd, .wav); filmes (.avi)

entre outros.

Para importar algum dado, basta seguir os seguintes passos:

11

Page 14: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1. Clicar em Import Data, assim como na Figura 1.9.

Figura 1.9: Primeira etapa, importando arquivos.

2. Logo apos deve-se procurar e selecionar o arquivo desejado, conforme visto na Figura

1.10.

Figura 1.10: Segunda etapa, escolha do arquivo.

3. Novas opcoes aparecerao e o usuario tera uma pre-visualizacao do que foi escolhido, con-

forme visto na Figura 1.11.

12

Page 15: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 1.11: Terceira etapa, pre-visualizacao do arquivo escolhido.

4. Em seguida, deve-se escolher uma opcao no menu presente na parte superior da janela.

O mais indicado e escolher a opcao Cell Array, como mostra a Figura 1.12 e selecionar a

tabela. Deste modo, serao transportados todos os dados da tabela em uma unica variavel.

Figura 1.12: Quarta etapa, escolha das opcoes de formato.

13

Page 16: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5. Logo apos, deve-se escolher uma opcao no menu presente na parte superior esquerda da

janela, conforme visto na Figura 1.13.

Figura 1.13: Quinta etapa, escolha de opcoes para a finalizacao.

6. Ao clicar em Import Data ocorrera a importacao do arquivo, cujo conteudo sera transferido

para uma variavel no Workspace, o que pode ser visto na Figura 1.14.

Figura 1.14: Importacao Finalizada.

7. Uma opcao muito interessante e o Generate Script que, como o nome sugere, gera um

script no editor do MATLAB, demonstrado na Figura 1.15. Este script realiza a im-

14

Page 17: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

portacao de dados utilizando as mesmas escolhas realizadas atraves da interface grafica,

facilitando a repeticao do processo.

Figura 1.15: Comando Generate Script.

15

Page 18: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

2 Operacoes Basicas - Escalares, Vetores e Matrizes

Todas as variaveis declaradas no MATLAB sao interpretadas como matrizes. Portanto, para

facilitar o entendimento de sua manipulacao e de suas operacoes basicas, as variaveis declaradas

serao divididas em: escalares, vetores e matrizes. Dessa forma, nesta secao serao apresentadas

as principais operacoes e funcoes relacionadas a esses tres modos de interpretar uma varavel.

2.1 Escalares

Escalares podem ser representados por numeros, com os quais realizam-se operacoes arit-

meticas basicas. No MATLAB, eles podem ser tratados como matrizes de uma linha e uma

coluna. Realizar operacoes com escalares e algo muito simples, semelhante a uma calculadora,

bastando utilizar os sımbolos adequados e respeitar a ordem de precedencia com a qual o pro-

grama le as operacoes. A Tabela 2.1, apresenta exemplos das principais operacoes aritmeticas

e seus respectivos sımbolos.

Tabela 2.1: Utilizando o MATLAB como uma calculadora.Operacoes Sımbolos Exemplos

Soma + 3 + 2

Subtracao − 3− 2

Multiplicacao ∗ 3 ∗ 2

Divisao / 3/2

Potenciacao ˆ 3ˆ2

E possıvel realizar operacoes elementares entre escalares no MATLAB, diretamente na Com-

mand Window, atraves da insercao direta dos numeros e das operacoes desejadas. Alem disso,

pode-se efetuar operacoes elementares utilizando a declaracao de variaveis.

E importante salientar que existe uma grande quantidade e variedade de funcoes no software

MATLAB, sendo algumas das mais utilizadas em escalares exibidas na Tabela 2.2. Algumas

informacoes pertinentes referentes a essas funcoes sao:

� A maior parte das funcoes MATLAB permite matrizes como argumentos de entrada,

produzindo argumentos de saıda do mesmo tamanho da entrada;

� A funcao log() no MATLAB realiza a operacao na base neperiana, sendo que para realizar

o logaritmo na base 10 utiliza-se log10();

� As funcoes trigonometricas como, por exemplo, sin(), cos() e tan() consideram o angulo

em radianos, sendo que para utilizar em graus basta adicionar a letra d ao final da funcao,

resultando em sind(), cosd() e tand().

16

Page 19: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 2.2: Funcoes e operacoes.

Funcoes Descricao

sqrt() Raiz quadrada.

factorial() Fatorial.

abs() Modulo.

log() Logaritmo neperiano.

sin() Seno de um angulo em radianos.

sind() Seno de um angulo em graus.

cos() Cosseno de um angulo em radianos.

cosd() Cosseno de um angulo em graus.

tan() Tangente de um angulo em radianos.

tand() Tangente de um angulo em graus.

A fim de exemplificar o uso das funcoes apresentadas na Tabela 2.2, sao apresentados alguns

exemplos de uso das funcoes e sua sintaxe no MATLAB.

>>sqrt(9) % Raiz quadrada

ans =

3

>>abs(−9) % Módulo

ans =

9

>>log(10) % Logaritmo neperiano

ans =

2.3026

>>log10(100) % Logaritmo na base 10

ans =

2

>>factorial(4) % Fatorial

ans =

24

>>sin(pi/2) % Ângulos em radianos

ans =

1

>>sind(90) % Ângulos em graus

ans =

1

2.2 Vetores

A representacao de vetores no MATLAB e interpretada como uma matriz unidimensional,

ou seja, com dimensao m × 1 ou 1 × n, sendo que m e o numero de linhas e n o numero de

colunas. Por se tratarem de matrizes, estes vetores sao construıdos com colchetes ([ ]). Para

declarar um vetor, basta:

17

Page 20: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1. Atribuir uma variavel ao vetor;

2. Inserir os valores de cada posicao, sendo que eles devem ser separados por espaco em

branco ou por vırgulas (,) apos cada valor. Desta forma, a variavel desejada resultara em

um vetor linha. Se desejar um vetor coluna, e necessario utilizar o ponto e vırgula (;) ou

pressionando enter, fazendo com que inicie uma nova linha apos cada um dos valores.

A fim de exemplificar a metodologia descrita, considere as variaveis u e v, sendo u um vetor

linha e v um vetor coluna. Estes vetores podem ser declarados a partir das seguintes sintaxes:

>> u = [2 3 9 5] ou [2, 3, 9, 5]

u =

2 3 9 5

>> v = [3;7;23;14]

v =

3

7

23

14

Para indicar o n-esimo elemento de um vetor v, sendo o vetor linha ou coluna, basta especi-

ficar a posicao do elemento entre parenteses apos a variavel, lembrando de que a posicao mais

a esquerda ou acima e indicada como o primeiro elemento. O elemento v(n) tambem pode ser

utilizado como um escalar para realizar operacoes elementares. E possıvel alterar o valor de um

elemento na posicao n atraves da atribuicao v(n) = x, em que x sera o novo valor da posicao

n. A seguir, sao apresentados exemplos da indicacao da posicao e da modificacao de elementos

pontuais em vetores.

>> v = [3 77 2 1 8 4]

v =

3 77 2 1 8 4

>> v(5)

ans =

8

>> v(2) = 121

ans =

3 121 2 1 8 4

2.2.1 Operacoes com Vetores

A utilizacao de operacoes elementares com vetores segue o mesmo raciocınio da realizada

com escalares. Exitem muitas funcoes que sao pre-estabelecidas no MATLAB e algumas delas

sao muito importante e facilitam as operacoes vetoriais. A seguir sao abordadas algumas das

principais operacoes.

18

Page 21: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Operador dois pontos (:)

E possıvel construir vetores com valores contidos em um dado intervalo utilizando o operador

dois pontos das seguintes sintaxes.

� v = primeiro valor : ultimo valor;

� u = primeiro valor : incremento : ultimo valor;

% >> v = 3:7

v =

3 4 5 6 7

>> u = 6:−2:−4u =

6 4 2 0 −2 −4

Existem outros metodos para manipular vetores a partir deste operador, sendo eles apre-

sentados na sequencia.

Referenciando elementos com operador dois pontos: E possıvel criar um vetor a

partir de um outro ja pre-estabelecido, sendo que, para isto, e preciso referenciar as posicoes

do antigo vetor para as do novo vetor, conforme mostrado a seguir.

v = u(primeira posicao do vetor v : ultima posicao de v)

p = [2 45 21 17 13 6 87];

>> t = p(2:5)

t =

45 21 17 13

Adicionando elementos em vetor: Um vetor v qualquer pode ser facilmente modificado

atribuindo valores as posicoes alem do seu tamanho. Se um vetor v contem n elementos e

e atribuıdo um valor qualquer na posicao n + 6, este vetor tera, entao, n + 6 posicoes e,

automaticamente, o MATLAB atribuira zeros para as posicoes entre o ultimo valor original e

o novo, como mostra o exemplo abaixo.

>> u = 3:7

u =

3 4 5 6 7

>> v = 2:1.5:8

v =

2 3.5 5 6.5 8

>> u(6:10) = 12:−3:0u =

3 4 5 6 7 12 9 6 3 0

>> v(10) = 30

v =

2 3.5 5 6.5 8 0 0 0 0 30

>> s=[u(1:3) v(1:3)]

s =

3 4 5 2 3.5 5

19

Page 22: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Deletando elementos de um vetor: Para deletar uma ou mais posicoes de um vetor e

preciso atribuir o vazio, par de colchetes sem nenhum numero ou caractere entre eles, a elas.

Desta forma, o tamanho do vetor sera reduzido, conforme o exemplo a seguir.

>> u = [3,22,41,19]

u =

3 22 41 19

>> u(2) = []

u =

3 41 19

>> q = [4 1 8 34 9 0 56]

q =

4 1 8 34 9 0 56

>> q(4:7) = []

q =

4 1 8

2.2.2 Manipulacao por Meio de Funcoes

Para facilitar as operacoes com vetores no MATLAB, pode-se utilizar funcoes pre-definidas.

Sendo assim, algumas delas sao apresentadas na Tabela 2.3.

Tabela 2.3: Funcoes Vetoriais.

Funcoes Descricao

length() Retorna o numero de posicoes da maior dimensao do vetor, ou seja, no caso de

um vetor obtemos numero total de elementos deste.

norm() Com esta funcao e possıvel calcular o modulo de um vetor qualquer de forma

pratica sem ter que fazer a raiz das somas dos quadrados de cada elemento.

min() Menor elemento de um vetor.

max() Maior elemento de um vetor.

sum() Somatorio entre todos os elementos do vetor.

prod() Produtorio entre todos os elementos do vetor.

Seguem alguns exemplos utilizando as funcoes apresentadas na Tabela 2.3.

>> v = [pi/2 3*pi/2 pi]

v =

1.5708 4.7124 3.1416

>> sin(v)

ans =

1.0000 −1.0000 0.0000

20

Page 23: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> u = 3:7

u =

3 4 5 6 7

>> length(u)

ans =

5

>> norm(u) % Neste caso, não foi preciso calcular o módulo por meio de

ans = % sqrt(3^2 + 4^2 + 5^2 + 6^2 + 7^2) = 11.6190

11.6190

>> max(u)

ans =

7

>> sum(u)

ans =

25

2.3 Matrizes

Antes de mais nada, uma matriz e um agrupamento de informacoes em forma de tabela,

constituıda de linhas e colunas. Com isso, e de grande necessidade saber identificar a partir

do ındices que, por exemplo, a matriz M2x3 contem 2 linhas e 3 colunas, conforme ilustrado a

seguir.

M2×3 =

colunas︷ ︸︸ ︷1 7 −5

8 0 3

linhas

Desta forma, esta secao e responsavel por apresentar as principais funcoes e operacoes rela-

cionadas a matrizes. Para isso, esta secao esta separada em tres subsecoes, sendo elas: variaveis

matriciais, funcoes matriciais e operacoes matriciais. A fim de maximizar o conhecimento da

mesma, sao apresentados exemplos praticos dos topicos abordados em cada uma das subsecoes.

2.3.1 Variaveis Matriciais

A declaracao de uma variavel matricial e simples e pode ser feita de diversas maneiras.

Primeiramente, utiliza-se colchetes, assim como nos vetores, para representar o inıcio e fim da

matriz. Os valores das linhas sao listadas da esquerda para direita separadas por ponto e vırgula

ou de cima para baixo separados por quebras de linha. Ja as colunas podem ser separadas com

espaco em branco ou vırgula. A seguir e apresentado um exemplo de sintaxe para declarar uma

matriz.

>> matriz = [−1 4 2 ; 5 7 0]

matriz =

−1 4 2

5 7 0

21

Page 24: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

E importante salientar que todas linhas ou colunas devem ter o mesmo numero de elementos,

formando assim, uma matriz quadrada ou retangular. Caso contrario, resultara na mensagem

de erro a seguir.

>> matriz = [5 1 7; 3 4]

??? Error using ==> vercat

CAT arguments dimensions are not consistent.

Como explicado na Secao 2.2, o operador dois pontos (:) pode ser utilizado para a criacao

de intervalos numericos. Dessa forma, ele e de grande utilidade para a declaracao de matrizes.

Isso pode ser observado no exemplo a seguir.

>> matriz = [ 1:0.5:2.5; 2:5 ; −25:10:5 ]

matriz =

1.0000 1.5000 2.0000 2.5000

2.0000 3.0000 4.0000 5.0000

−25.0000 −15.0000 −5.0000 5.0000

2.3.2 Funcoes Matriciais

Existem diversas funcoes pre-definidas no MATLAB que sao uteis para inicializacao e ma-

nipulacao de matrizes. Desse modo, a seguir sao apresentadas e exemplificadas algumas das

principais funcoes e na Tabela 2.4 sao apresentadas outras funcoes matriciais disponıveis.

Funcao size( ): Essa funcao retorna o tamanho da matriz, ou seja, o numero de linhas e

colunas, no formato de um vetor linha.

>> MAT = [2,3,4;7,8,9;10,20,30;4,6,8];

>> size(MAT) %uma matriz de 4 linhas e 3 colunas!

ans =

4 3

Funcao zeros( ): Essa funcao cria uma matriz com todos os elementos ocupados com o

valor 0. Para declarar uma matriz quadrada escreve-se zeros(n) ou em caso de matriz retangular

zeros(n,m).

>> zeros(3)

ans =

0 0 0

0 0 0

0 0 0

>> zeros(3,2)

ans =

0 0

0 0

0 0

Funcao ones( ): Essa funcao preenche toda a matriz com o valor 1. Para declarar uma

matriz quadrada escreve-se ones(n) ou em caso de matriz retangular ones(n,m).

22

Page 25: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> ones(3)

ans =

1 1 1

1 1 1

1 1 1

>> ones(3,2)

ans =

1 1

1 1

1 1

Funcao eye( ): Essa funcao gera uma matriz identidade. Utiliza-se o comando: eye(n)

para matrizes quadradas ou eye(m,n) para retangulares.

>> eye(3)

ans =

1 0 0

0 1 0

0 0 1

>> eye(3,2)

ans =

1 0

0 1

0 0

Funcao diag( ): Exibe um vetor coluna com elementos da diagonal principal da matriz.

>> MAT = [1 2 3 4 ; 5 6 7 8; 9 10 11 12; 13 14 15 16];

>> diag(MAT)

ans =

1

6

11

16

Funcao tril( ): Mostra a parte triangular inferior da matriz.

>> MAT =

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

>> tril(MAT)

ans =

1 0 0 0

5 6 0 0

9 10 11 0

13 14 15 16

Funcao triu( ): Mostra a parte triangular superior da matriz.

23

Page 26: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> MAT =

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

>> triu(MAT)

ans =

1 2 3 4

0 6 7 8

0 0 11 12

0 0 0 16

Tabela 2.4: Funcoes Matriciais.

Funcoes Descricao

mean() Exibe um vetor linha com a media aritmetica das colunas.

std() Obtem o desvio padrao dos elementos das colunas.

sort() Ordena em forma crescente as colunas.

numel() Retorna o numero total de elementos.

inv() Retorna a matriz inversa.

matriz′ O operador (’) resulta na matriz transposta.

det() Obtem o determinante da matriz.

rand(n,m) Exibe uma matriz n×m com elemento aleatorios entre 0 e 1.

round(matriz)Arredonda todos os elementos da variavel matriz para o inteiro

mais proximo.

round(k∗rand(m,n))Exibe uma matriz n×m com valores inteiros e aleatorios

entre 0 e k.

2.3.3 Operacoes Matriciais

A manipulacao dos elementos de uma matriz e realizada atraves da indexacao subscrita, jun-

tamente com operacoes matematicas. As operacoes entre matrizes seguem as regras matriciais

conforme mostrado a seguir:

1. Para a soma e a subtracao, as dimensoes das duas matrizes devem ser iguais;

2. Na multiplicacao, o numero de colunas da matriz que esta operando pela esquerda tem

que ser igual ao de linhas da matriz a direita;

3. Na divisao, as dimensoes das duas matrizes devem ser iguais e existem duas maneiras de

realiza-la:

� Divisao pela esquerda: x = A\B = A−1B = inv(A)∗B;

24

Page 27: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

� Divisao pela direita: x = B/A = BA−1 = B∗inv(A).

E importante salientar que o termo divisao de matrizes representa o produto de uma

matriz pelo inverso da outra B/A = BA−1.

A fim de representar as principais operacoes matriciais sao apresentados os exemplos a

seguir.

%EXEMPLO CRIAÇÃO, SOMA E SUBTRAÇÃO DE MATRIZES

>> A = round(6*rand(2,3)) % cria uma matriz com elementos aleatórios ...

entre 0 e 6

A =

0 1 1

1 1 3

>> B = round(5*rand(2,3)) % cria uma matriz com elementos aleatórios ...

entre 0 e 5

B =

0 5 2

5 2 2

>> C = round(4*rand(3,2)) % cria uma matriz com elementos aleatórios ...

entre 0 e 4

C =

4 3

1 2

0 1

>> soma = A+B

soma =

2 9 7

6 4 3

>> soma2 = A+C % Soma e subtração de matrizes, somente é possível

??? Error using ==> plus % se ambas tiverem mesma dimensão.

Matrix dimensions must agree.

>> subtracao = B−Asubtracao =

2 −1 3

−4 0 −1%EXEMPLO MULTIPLICAÇÃO E DIVISÃO DE MATRIZES

>> multiplicacao = C*A

multiplicacao =

15 26 14

10 9 6

5 2 2

>> maltiplicacao2 = B*C

maltiplicacao2 =

12 19

6 8

25

Page 28: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> multiplicacao3 = A*B % Para Multiplicação, a dimensão da coluna

??? Error using ==> mtimes % da matriz a esquerda tem que

Inner matrix dimensions must agree. % ser igual a dimensão da linha da

% matriz a direita.

>> divisaodireita = A/B % Divisão pela direita

divisaodireita =

0.2300 0.0237

0.2378 0.2930

>>divisaoesquerda = B\A % Divisão pela esquerda

divisaoesquerda =

0.2000 0.1200 0.5200

0 0.2000 0.2000

0 0 0

Alem das operacoes basicas, tambem pode-se aplicar as funcoes exponenciais, logarıtmicas e

trigonometricas em matrizes. No MATLAB ha um operador, o qual sera chamado nesta apostila

como operador ponto ( . ), que e muito utilizado antecedendo as operacoes matematicas basicas.

Esse operador exige que as matrizes tenham o mesmo tamanho e realiza uma operacao ponto

a ponto, ou seja, cada elemento de uma das matrizes sera operado apenas com o elemento de

mesma posicao da outra matriz. Dessa forma, e apresentado na Tabela 2.5 como utilizar o

operador ponto para operacoes de multiplicacao, divisao e potenciacao, exibindo o resultado

esperado. Em seguida, sao apresentados alguns exemplos da sintaxe de sua utilizacao.

Tabela 2.5: Operador ponto.

Operacao Metodo Resultado

Multiplicacao A.∗B Produto de elementos de mesma posicao de A e B.

Divisao a direita A./B Divisao de elementos de mesma posicao de A e B.

Divisao a esquerda A.\B Produto de elementos de mesma posicao de B e A.

Potenciacao A.ˆB Potenciacao de elementos de mesma posicao de A por B.

26

Page 29: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> A = round(5*rand(3,3)) % cria uma matriz com elementos aleatórios ...

inteiros entre 0 e 5;

A =

5 5 1

1 2 2

5 4 5

B =

4 0 3

5 4 4

3 5 4

>> M1 = A.*B % multiplicação ponto a ponto.

M1 =

20 0 3

5 8 8

15 20 20

>> M2 = A./B % divisão pela direita ponto a ponto.

M2 =

1.2500 Inf 0.3333

0.2000 0.5000 0.5000

1.6667 0.8000 1.2500

>> M3 = A.\B % divisão pela esquerda ponto a ponto.

M3 =

0.8000 0 3.0000

5.0000 2.0000 2.0000

0.6000 1.2500 0.8000

>> M4 = A.^B % pontenciação ponto a ponto.

M4 =

625 1 1

1 16 16

125 1024 625

Para acessar algum elemento que compoem uma matriz, a linha e a coluna devem ser

escritas entre parenteses (nessa sequencia) e separadas por vırgula apos o nome da matriz. Por

exemplo, matriz(m,n) esta se referindo ao elemento da linha m e coluna n. A partir da seguinte

representacao

Am×n =

a1×1 a1×2 a1×3 · · · a1×n

a2×1 a2×2 a2×3 · · · a2×n

a3×1 a3×2 a3×3 · · · a3×n...

......

. . ....

am×1 am×2 am×3 · · · am×n

,

e possıvel fazer as seguintes referencias:

A(1, 1) refere-se a1×1;

A(2, 3) refere-se a2×3;

A(3, 3) refere-se a3×3;

A(1, n) refere-se a1×n;

27

Page 30: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

A(m, 2) refere-se am×2.

Assim, como na Secao 2.2, pode-se alterar o valor de um elemento de uma matriz, conforme

exemplificado a seguir.

>> matriz = round(8*rand(4,3)) %cria uma matriz(4X3) com números ...

aleatórios inteiros entre 0 e 8.

matriz =

6 5 1

8 7 2

4 7 6

5 1 2

>> A = matriz(2,3) % a variável recebe o valor do elemento da linha 2 e ...

coluna 3 da matriz.

A =

2

>> matriz(4,2) = 0 % o elemento da posição 4X2(4ª linha e 2ª coluna) está ...

recebendo o valor 0.

matriz =

6 5 1

8 7 2

4 7 6

5 0 2

Alem disso, e possıvel selecionar um grupo de posicoes de uma matriz. Para isso, basta

inserir um vetor indicando as linhas e colunas das posicoes que serao selecionadas, semelhante

as coordenadas cartesianas. Isso e chamado de indexacao subscrita (subscripted indexing). Este

procedimento e muito utilizada para sobrescrever linhas e colunas com operacoes matematicas,

sendo possıvel tambem referir-se a toda uma linha ou coluna atraves do operador dois pontos.

Assim, e possıvel selecionar uma submatriz de dentro de uma matriz para ser operada ou mesmo

ser substituıda por outra de mesmo tamanho.

A seguir sao apresentados alguns exemplos da indexacao para matrizes.

28

Page 31: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> matriz = round(10*rand(5,4)) %cria uma matriz(5X4) com números ...

aleatórios entre 0 e 10.

matriz =

10 10 5 6

7 6 2 0

2 6 5 3

9 2 5 5

9 5 2 3

>> Linha1 = matriz(1,:) % refere−se a linha 1 inteira. O operador dois ...

pontos é interpretado como todas as colunas.

Linha1 =

10 10 5 6

>> Coluna3 = matriz(:,3) % refere−se a coluna 3 inteira.

Coluna3 =

5

2

5

5

2

>> submatriz = matriz(2:4, 1:2) % refere−se a uma submatriz da matriz.

submatriz2 =

7 6

2 6

9 2

>> submatriz2 = matriz(2:5,3:4) % refere−se a uma submatriz da matriz.

submatriz =

2 0

5 3

5 5

2 3

>> submatriz3 = matriz(1:3, 2:4) % refere−se a uma submatriz da matriz.

submatriz2 =

10 5 6

6 2 0

6 5 3

Com o operador dois pontos e possıvel alterar, excluir ou incluir uma linha ou coluna inteira.

A seguir, sao apresentados exemplos dessas situacoes.

29

Page 32: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> matriz = round(20*rand(5,4)) % cria uma matriz(5X4) com números ...

aleatórios entre 0 e 20.

matriz =

12 13 3 19

7 14 8 16

3 15 16 4

18 17 3 20

13 10 7 1

>> matriz(:,3) = 1 % todas as linha da 3ª coluna recebem o valor 1.

matriz =

12 13 1 19

7 14 1 16

3 15 1 4

18 17 1 20

13 10 1 1

>> matriz(2,:) = [] % todas as colunas da 2ª linha recebem o valor nulo, ...

o que equivale a excluir esta coluna.

matriz =

12 13 1 19

3 15 1 4

18 17 1 20

13 10 1 1

>> matriz(:,5) = 0 % como não havia uma coluna 5 antes na matriz, o ...

MATLAB intrepetou em acrescentar uma coluna com todos os elementos ...

iguais a 0;

matriz =

12 13 1 19 0

3 15 1 4 0

18 17 1 20 0

13 10 1 1 0

>> matriz(5,:) = 1 % como não havia uma linha 5 antes na matriz, o ...

MATLAB interpretou em acrescentar uma linha com todos os elementos ...

iguais a 1;

matriz =

12 13 1 19 0

3 15 1 4 0

18 17 1 20 0

13 10 1 1 0

1 1 1 1 1

Adicionar uma linha ou coluna no meio de uma matriz e uma tarefa mais complicada, pois

tem-se que recriar a matriz com seus valores anteriores. Este procedimento e chamado de

concatenacao e consiste na juncao de duas ou mais matrizes e/ou vetores para formar uma

nova matriz ou vetor. A seguir sao apresentados exemplos de concatenacao.

30

Page 33: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> matriz = round(15*rand(4,6))% cria uma matriz(4X6) com números ...

aleatórios entre 0 e 15;

matriz =

11 3 9 9 11 13

6 11 15 5 10 8

1 11 10 14 3 7

3 8 9 7 1 6

>> COLUNA = zeros(4,1) % cria um vetor coluna para inserir na matriz.

COLUNA =

0

0

0

0

>> matriz = [matriz(:,1:3),COLUNA,matriz(:,4:6)] % criando a nova matriz, ...

sendo que 'matriz(:,1:3)' e a 'matriz(:,4:6)' são submatrizes da ...

matriz original.

matriz =

11 3 9 0 9 11 13

6 11 15 0 5 10 8

1 11 10 0 14 3 7 % e a nova matriz é 4x7.

3 8 9 0 7 1 6

>> LINHA = ones(1,7) % cria um vetor linha para inserir na matriz.

LINHA =

1 1 1 1 1 1 1

>> matriz = [matriz(1:3,:);LINHA;matriz(4,:)] % criando a nova matriz.

matriz =

11 3 9 0 9 11 13

6 11 15 0 5 10 8

1 11 10 0 14 3 7

1 1 1 1 1 1 1 % e a nova matiz é 5x7.

3 8 9 0 7 1 6

31

Page 34: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

2.4 Exercıcios

Os exercıcios propostos a seguir devem ser realizados na Command Window do MATLAB.

1. Execute as operacoes aritmeticas a seguir:

(a) z = ((34 + 6).8)/2

(b) y = (log(5) + e4).4!).( sen(30) + cos(60). tg(40))

2. Dado um vetor coluna v = 3 : −2 : −11, responda:

(a) Qual e a quantidade de elementos do vetor v?

(b) Determine o maior e o menor elemento de v.

(c) Qual e o modulo do vetor v?

(d) Delete os elementos da 2º ate a 5º posicao de v. Qual a quantidade de elementos do

vetor resultante? Determine qual e o seu novo modulo?

3. Construa uma matriz quadrada e uma matriz retangular.

4. Construa uma matriz com numeros que tenham intervalos de 3 unidades uns dos outros,

com as dimensoes: 4x4 e 4x3.

5. Crie matrizes a partir das funcoes zeros, ones e eye.

6. Aplique as funcoes diag, triu, tril e size nas matrizes construıdas no exercıcio 3 e 4.

7. Crie quatro matrizes com elementos inteiros variando de 0 a 10 e com os seguintes tama-

nhos: A2×3, B2×2, C3×3 e D3×2. Entao, realize as seguintes operacoes:

(a) Adicionar uma coluna inteira, sendo todos os elementos de valor 5, entre a coluna 1

e 2 da matriz B2×2 e excluir a segunda coluna da matriz C3×3.

(b) Com as novas matrizes do exercıcio (a), realizar A + B, B − A, C∗A, B∗C,A/B,

B\A e analisar o que esta ocorrendo.

8. Crie duas matrizes com valores inteiros entre 0 a 5 e com os tamanhos: M13×3 e M23×3.

Entao, realize as seguintes operacoes:

(a) Operacoes ponto a ponto de multiplicacao de M1 por M2, divisao pela direita e

esquerda de M2 por M1 e potenciacao de M1 por M2.

(b) Operacoes ponto a ponto de potenciacao de M2 por 2 e multiplicacao de M2 por 5.

32

Page 35: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

3 Arquivos .m

Nas secoes anteriores foi utilizada apenas a Command Window, a qual e adequada para

executar, diretamente, codigos pequenos. No entanto, quando o numero de linhas de comando

aumenta, torna-se necessario utilizar o Editor do MATLAB, no qual criam-se arquivos de

extensao .m, os quais geralmente sao chamados de scripts. Desta forma, esta secao tem como

finalidade apresentar o ambiente Editor do MATLAB, introduzir simples rotinas e os principais

conceitos de funcoes.

3.1 Interface do Editor de scripts

Antes de comecar a escrever qualquer programa e essencial conhecer o ambiente em que ele

sera escrito. A Figura 3.1 mostra a janela do Editor do MATLAB, que pode ser aberta a partir

da area de trabalho, clicando em New Script ou atraves das teclas Ctrl+N.

Figura 3.1: Iniciando o Editor do MATLAB.

Abaixo estao alguns dos ıcones importantes que estao contidos na parte superior do Editor:

: Cria um novo documento (Ctrl+N ).

: Abre arquivos ja salvos (Ctrl+O).

: Salva arquivos do Editor (Ctrl+S ).

: Desfazer ultima mudanca que foi feita (Ctrl+Z ).

: Restaurar ultima mudanca feita (Ctrl+Y ).

Utilizando o Editor: Primeiramente, para que o script possa ser executado, e preciso

salva-lo em um formado proprio do MATLAB, cuja extensao padrao e o “.m”. Para isto, basta

33

Page 36: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

ir na Barra de Ferramentas e selecionar Save ou pressionar Ctrl+S. Deve-se ressaltar que o

nome para o arquivo nao pode ser igual aos de variaveis que estao no workspace ou funcoes

pre-definidas do MATLAB. Tambem nao e possıvel utilizar nomes com espacos, caracteres

especiais ou ate mesmo iniciando com numeros. Uma vez salvo o arquivo, este podera ser

executa clicando-se em Run ou pressionando F5, sendo que os valores de cada uma das variaveis

sera armazenado na Workspace. A Figura 3.2 apresenta um exemplo de script para calcular

as raızes de uma funcao quadratica. Observe que se uma determinada linha de codigo nao

possuir o ponto e vırgula (;) em seu final, o resultado do calculo realizado nela sera exibido na

Command Window, o que pode ser util como metodo de verificacao ou interacao com o usuario.

E possıvel fazer comentarios no Editor do MATLAB utilizando o sımbolo de porcentagem

(%) ou selecionando o trecho de codigo/texto desejado e pressionando Ctrl+R. Ainda, caso seja

necessario interpretar somente uma parte do codigo, podem ser realizados dois procedimentos:

� utilizando os sımbolos %% para demarcar secoes do codigo, as quais podem ser executadas

separadamente ao pressionar-se Ctrl+Enter ;

� selecionando o trecho de codigo desejado e pressionando F9.

Figura 3.2: Exemplo de execucao de um script.

No exemplo da Figura 3.2, os valores de a, b e c foram definidos pelo programador. No

entanto, e possıvel que estes valores sejam solicitados ao usuario no momento da execucao do

script atraves do comando input.

Comando input : Quando este comando for executado, o usuario sera solicitado a atribuir

um valor a variavel em questao na Command Window. Depois de digitar o valor, e necessario

pressionar Enter. A sintaxe para utilizar o comando input e dada por

34

Page 37: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

nome_da_variavel=input('string com uma mensagem').

Na Figura 3.3 e mostrado um exemplo de como utilizar este comando.

Figura 3.3: Exemplo de utilizacao do comando input.

3.1.1 Comandos de Saıda

Anteriormente, para que fossem exibidos os resultados de cada comando na Command Win-

dow nao se utilizava o ponto e vırgula ao final da linha do script. No entanto, existem outros

comandos no MATLAB que sao capazes de gerar uma saıda para o valor da variavel. Os

comandos mais conhecidos e utilizados sao o disp e o fprintf.

Comando disp: Este comando e usado para exibir na Command Window o valor ou

o conjunto de elementos contidos em uma variavel sem mostrar o seu nome, sendo tambem

utilizado para exibir uma mensagem de texto. Apenas uma variavel pode ser exibida de cada

vez neste comando. Caso seja necessario exibir mais variaveis, basta declarar anteriormente

ao disp uma variavel que contenha os elementos de duas ou mais variaveis formando um vetor

ou uma matriz. Alem disto, este comando pode combinar frases com variaveis alfanumericas

e para que isso ocorra, basta adequar o comando disp com o comando num2str ou int2str. O

comando num2str converte numeros ou matrizes em cadeia de caracteres e o comando int2str

converte os valores em inteiros e em seguida os transformam em caracteres. Na Figura 3.4 ha

35

Page 38: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

um exemplo de como utilizar este comando. A sintaxe apresentada na Figura 3.5 mostra como

pode ser utilizado o comando disp combinado com o comando num2str :

Figura 3.4: Exemplo de script com o comando disp.

Figura 3.5: Exemplo de utilizacao do comando disp em conjunto com o num2str.

Comando fprintf : Assim como o disp, este comando e utilizado para gerar saıdas (texto

e dados) na Command Window. No entanto, o programador e capaz de combinar frases com

variaveis numericas unidimensionais e formatar os dados que serao exibidos. Pelo fato deste

comando ser mais complexo do que o disp, sera mostrado cada uma de suas finalidades separa-

damente a seguir.

Texto com o comando fprintf : Para exibir textos, utiliza-se a seguinte sintaxe:

fprintf('texto como uma string').

Como dito anteriormente, neste comando o usuario e capaz de formatar o texto a ser exibido

na Command Window. Para isto, existem alguns caracteres que possibilitam a formatacao, os

quais sao apresentados na Tabela 3.1.

36

Page 39: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 3.1: Caracteres de formatacao do comando fprintf.

Caracteres Descricao

\n Inicia uma nova linha no meio de uma string.

\b Retrocesso.

\t Tabulacao.

%d Exibe o valor como inteiro.

%e Exibe o valor em formato exponencial.

%f Exibe o valor como ponto flutuante.

A combinacao de texto e dados numericos com o fprintf : segue um exemplo de

utilizacao do comando fprintf :

fprintf('texto como uma string %2.3f', variavel).

Observacao: No caso acima, foi utilizado o caractere de conversao (uso obrigatorio) %f,

no entanto, poderia ser utilizado qualquer caractere desejado pelo usuario. O caractere %2.3f

significa que o formato do arquivo sera em ponto flutuante, com dois dıgitos antes do ponto

decimal e tres dıgitos depois do mesmo, sendo que nao e obrigatorio especificar a quantidade

de dıgitos.

O comando fprintf pode ser utilizado para combinar textos e dados numericos de varias

variaveis, como e mostrado a seguir:

fprintf('texto %f texto %e texto %d', variavel1, variavel2, variavel3)

Outras aplicacoes do comando fprintf podem ser obtidas atraves do Help do MATLAB.

Visando esclarecer as definicoes deste comando, e apresentando um exemplo na Figura 3.6

envolvendo, tambem, outros comandos vistos anteriormente.

37

Page 40: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 3.6: Exemplo de utilizacao do comando fprintf.

Qual e a diferenca entre o comando disp e o fprintf ?

O comando fprintf exibe somente a parte real de um numero complexo e nao exibe matrizes,

somente escalares reais, o que pode ser um problemas para quem trabalha com estes tipos de

variaveis. Ja o comando disp exibe qualquer tipo de variavel, seja ela matriz ou complexa,

conforme o exemplo mostrado na Figura 3.7. Repare que utilizando o comando fprintf foi

ignorada a parte imaginaria da variavel. Ja no comando disp a variavel foi exibida corretamente.

Figura 3.7: Executando um script com os comando disp e fprintf.

38

Page 41: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

3.2 Funcoes

As funcoes podem ser chamadas no ambiente do MATLAB como se fossem um comando

especıfico criado pelo usuario, podendo ter varias variaveis de entradas e saıdas, tendo a funcao

de facilitar e/ou tornar os codigos mais organizados. E aconselhavel que se inicie o arquivo da

funcao com uma breve descricao, atraves de comentarios, do que ela realiza. Isso permite que

no momento em que essa funcao for chamada pelo comando help no terminal de comandos,

essa descricao seja exibida. E recomendado salvar as funcoes criadas em um diretorio fora do

MATLAB para facilitar seu acesso e localizar a funcao com mais facilidade. O nome da funcao

deve ser igual ao nome do arquivo para que o MATLAB possa a encontrar.

As variaveis criadas dentro de funcoes sao locais, ou seja, possuem uma Workspace propria.

Assim, a unica forma de se inserir ou retirar informacoes de uma funcao e atraves dos argumentos

de entrada ou saıda. Esta funcionalidade e uma caracterıstica muito importante das funcoes,

pois impede que existam conflitos de nomes entre as diferentes funcoes e scripts. A unica

excecao para esta regra ocorre com a utilizacao de variaveis globais, as quais podem ser lidas e

alteradas em qualquer funcao sem passar pelos argumentos de entrada. A seguir e apresentado

um exemplo de funcao com dois argumentos de entrada, recebidos na chamada da funcao, e

possui dois argumentos de saıda, um sendo a soma e outro a multiplicacao das entradas.

%Função com mais de uma saída

%Essa função é utilizada para calcular a soma de n1 e n2 e a multiplicação

%de n1 e n2

%n1+n2;

%n1*n2

function [r1,r2]= somult(n1,n2)

r1=n1+n2;

r2=n1*n2;

end

Observacao: O exemplo acima mostra como criar uma funcao, sendo que esse arquivo nao

pode ser executado diretamente, mas sim chamado por outro script ou pela Command Window

pela seguinte sintaxe:

[a,b] = somult(4,5)

em que a recebe a soma e b a multiplicacao dos valores 4 e 5. Caso essa funcao seja chamada

com a sintaxe dada por

1 somult(4,5)

ela retornara apenas o primeiro argumento de saıda, neste caso, a soma.

3.3 Depuracao e Simulacao

Um dos grandes problemas da criacao de script extensos e garantir a ausencia de erros.

Nestes sentido, vale salientar que existem tres tipos principais de erros, tambem chamados de

bugs : o sintatico, de execucao e o logico. O erro sintatico e o mais simples de corrigir pois

39

Page 42: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

consiste em uma violacao da sintaxe de algum comando ou estrutura, sendo que o proprio

MATLAB verifica e identifica este tipo de problema, impedindo a execucao desse script ate que

estes sejam corrigidos. Uma vez que nao ha mais erros sintaticos, o script pode ser executado,

podendo entao ocorrer algum erro de execucao. Estes erros consistem na tentativa de se realizar

de alguma operacao invalida durante a execucao do script, como, por exemplo, acessar posicoes

que nao existem em uma matriz. Deve-se destacar que o proprio software identifica a localizacao

destes dois tipos de erros dentro do script, o que facilita muito as suas correcoes. Assim, o fato

do MATLAB nao ter como ajudar a corrigir os erros logicos os tornam mais problematicos, pois

o script simplesmente e executado corretamente, cabendo ao programador utilizar tecnicas de

verificacao para saber se o resultado esta correto dadas as variaveis de entrada. Seguem abaixo

exemplos dos tres tipos de erros:

1 clc;

2 clear all;

3

4 a=4; % Erro sintático

5 b=5; % Há um parêntese a mais na linha 6 o que impede

6 resultado = (a+b)/2); % a execução do código.

7

8 vetor = rand(1,10); % Erro de execução

9 for i=1:11 % Durante a execução tenta−se ler a posição 11

10 c(i) = vetor(i)^2 % da variável vetor, no entanto essa posição não

11 end % existe.

12

13 a = 3; resultado = 1; % Erro lógico

14 for j=0:1:a % A interpretação do script é realizada

15 resultado = resultado*j; % normalmente pelo MATLAB, porém o

16 end % resultado do programa é diferente do

17 % esperado para um fatorial.

O processo de correcao de erros em codigos tambem pode ser chamado de depuracao, sendo

que o MATLAB permite a insercao de breakpoints( ) para auxiliar na correcao destes. Os

breakpoints consistem em pontos, inseridos pelo usuario, nos quais ocorrera a pausa do codigo

durante a sua execucao, facilitando, assim, a analise do que esta ocorrendo com as variaveis, os

loops e as demais funcionalidades do algoritmo. Para exemplificar a utilizacao destes, considere

o script mostrado na Figura 3.8, no qual deseja-se analisar como as variaveis antes da setima

linha se comportam, sem executar as linhas posteriores do codigo. Para isso, realiza-se a inclusao

de um breakpoint nesta linha clicando no traco na lateral esquerda ou colocando o cursor do

mouse na linha nesta linha e clicando em Set/clear breakpoint ( ) que se encontra na barra de

ferramentas do Editor do MATLAB, sendo estes procedimentos exemplificados nas Figuras 3.8

e 3.9, respectivamente.

40

Page 43: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 3.8: Inclusao de um breakpoint.

Figura 3.9: Inclusao de um breakpoint.

41

Page 44: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Apos inserir o breakpoint no local desejado, o script deve ser executado, parando automa-

ticamente no ponto especificado, conforme visto na Figura 3.10. A seta ( ) do lado direito do

breakpoint significa que a execucao do codigo ocorreu ate aquela linha, sem incluı-la. Assim, e

possıvel observar as caracterısticas de cada variavel anterior a essa linha apenas posicionando

o cursor do mouse sobre a variavel, como mostra a Figura 3.11. Para continuar a execucao

do codigo, basta utilizar alguma das ferramentas localizadas na barra de tarefas do Editor do

MATLAB, como mostrado na Figura 3.12, sendo que as suas funcoes sao as seguintes:

(Set/clear breakpoint): Para inserir ou remover o breakpoint na linha em que se encontra

o cursor do mouse. Tambem pode ser executado pressionando F12.

(Clear Breakpoints): Retira todos os breakpoints do codigo.

(Continue): Continua a execucao do codigo ate o proximo breakpoint. Tambem pode

ser executado pressionando F5.

(Step): Passa para proxima linha do codigo sucessivamente.

(Step in): Realiza a mesma tarefa do step, porem permite que se entre em uma funcao,

caso a linha do codigo em questao possua uma. Tambem pode ser executado pressionando F11.

(Step out): Realiza a mesma tarefa do continue, porem sai da funcao, indo para linha

abaixo da qual entrou na funcao. Tambem pode ser executado pressionando Shift+F11.

(Exit Debug): Finaliza o processo de depuracao mesmo que se esteja no meio do codigo.

Tambem pode ser executado pressionando-se Shift+F5.

Figura 3.10: Pausa do codigo devido ao encontro do breakpoint.

42

Page 45: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 3.11: Analisando as caracterısticas de uma variavel atraves da depuracao.

Figura 3.12: Ferramentas da Depuracao.

3.4 Operando com Arquivos

Esta secao, basicamente, refere-se a leitura e escrita de arquivos de dados utilizando o

MATLAB. A partir dos conhecimentos desta, e possıvel nao somente a criacao, mas tambem a

modificacao de arquivos com quaisquer extensoes, suportadas pelo MATLAB, de acordo com o

desejado. Isto e possıvel pois o MATLAB apresenta comandos pre-definidos, como por exemplo

load, save, dentre outros que sao apresentados nesta secao.

Primeiramente, sao apresentados os principais comandos para operacao com arquivos na

Tabela 3.2. Para exemplificar a utilizacao destes comandos, considere que existe, na diretorio

atual, o arquivo de texto mostrado na Figura 3.13, o qual consiste em uma simples matriz

retangular.

43

Page 46: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 3.2: Comandos para operacao com arquivos.

Comando Descricao

load ‘nome do arquivo’.txt Le o arquivo cujo nome foi informado,

sendo txt a extensao do mesmo.

save ARQ dados x y z Salva os dados de x, y e z, no arquivo cujo

nome e ARQ dados com extensoes .mat.

save ARQ dados.txt x y z -ascii Salva os dados de x, y e z no arquivo cujo

nome e ARQ dados, com extensao .txt e os

dados com 8 dıgitos.

save ARQ dados.txt x y z -ascii -double Salva os dados de x, y e z no arquivo cujo

nome e ARQ dados, com extensao .txt e os

dados com 16 dıgitos.

Figura 3.13: Arquivo criado para facilitar a explicacao de operacoes com arquivos.

O exemplo abaixo inicia pela leitura do arquivo mostrado na Figura 3.13, sendo que para

isso utiliza-se o comando load. Vale ressaltar que para a leitura de arquivos de texto, utilizando

o comando load, e necessario que o arquivo contenha apenas numeros arranjados na forma de

uma matriz. Na sequencia do exemplo, deseja-se inserir mais uma linhas na matriz, o que e

realizado atraves do comando save.

>>load ARQ_EXEMPLO.txt % Lê um arquivo cujo nome é ARQ_EXEMPLO e ...

extensão .txt

>>ARQ_EXEMPLO

ARQ_EXEMPLO =

15 26 67 12

7 11 3 2

>>x = [0 0 0 0]; % cria−se um vetor para exemplificar como é salvo os ...

dados do vetor x

>>save ARQ_EXEMPLO.txt ARQ_EXEMPLO x % ARQ_EXEMPLO.txt é o nome do ...

arquivo, ARQ_EXEMPLO é a variável matricial com seus dados e x é o ...

vetor linha de zeros

>>load AR_EXEMPLO.txt % Lê−se novamente o arquivo para observar como os ...

dados são salvos

>>ARQ_EXEMPLO

ARQ_EXEMPLO =

44

Page 47: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

15 26 67 12

7 11 3 2

0 0 0 0

Alem dos comandos utilizados anteriormente, e possıvel trabalhar a leitura de dados usando

alguns comandos similares aos da linguagem C, como mostra a sintaxe a seguir.

� fopen(‘nomearquivo.extensao’,‘atributo’): Abre um arquivo, em que atributo e a

opcao de abertura do comando fopen de acordo com a Tabela 3.3.

� fscanf(‘identificador.extensao’,‘%2d’,1): O argumento 1, significa quantos arquivos

serao lidos por vez. O ’%2d’ mostra que e um numero inteiro com duas casas decimais.

� fclose(‘identificador’): Fecha o arquivo.

Tabela 3.3: Atributos do comando fopen para abrir arquivos.

Atributos Descricao

a Cria/Abre arquivos de escrita, ao final salva os dados.

a+ Cria/Abre arquivos de leitura e escrita, ao final salva os dados.

w Cria/Abre arquivos de escrita, ao final nao salva nenhum dos dados.

w+ Cria/Abre arquivos de leitura e escrita, ao final nao salva nenhum dos dados.

r Abre um arquivo de leitura e nao permite modificacoes.

r+ Abre um arquivo de leitura ou escrita.

A seguir e apresentado um exemplo de utilizacao dos comandos fopen e fscanf para leitura de

uma matriz, sendo que na Figura 3.14 e mostro o resultado na Command Window da execucao

deste exemplo.

1 identificador = fopen('matriz.txt','r')

2

3 mat = fscanf(identificador,'%2d')

4

5 fclose(identificador)

45

Page 48: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 3.14: Command Window do exemplo com os comandos fopen e fscanf.

46

Page 49: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

3.5 Exercıcios

Os exercıcios propostos a seguir devem ser realizados no Editor do MATLAB. Eles tem

como objetivo consolidar o conhecimento adquirido durante o estudo dessa secao.

1. Criar scripts para realizar o que e solicitado a seguir, sendo que os valores de entrada

devem ser inseridos com o comando input e os resultados exibidos com o fprintf.

(a) Calcular a area de um quadrado de lado L.

(b) Calcular o perımetro de um retangulo de base B e altura H.

2. Sendo a =√−23 e b = -2:3:9, utilize os comandos de saıda disp e fprintf para exibir

ambas as variaveis e responda:

(a) Qual foi a diferenca entre o que foi exibido no comando disp e o comando fprintf ?

(b) Por qual motivo isso ocorre?

3. Utilizando os conceitos de depuracao apresentados na Subsecao 3.3 encontre o erro logico

do codigo a seguir que mostra o maior numero dos dois digitados pelo usuario.

1 num1 = input('Entre com o primeiro número: ');

2 num2 = input('Entre com o segundo número: ');

3 if(num1 < num2)

4 fprintf('O maior número digitado é %d.', num1);

5 else

6 fprintf('O maior número digitado é %d.', num2);

7 end

47

Page 50: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

4 Controle de Fluxo

Para compreender como controlar o fluxo de operacoes em um script, primeiramente deve-

se estudar os operadores logicos e relacionais, os quais permitem, dentre outras funcoes, a

criacao de condicoes de controle cuja resposta sera verdadeiro ou falso. Uma das principais

utilizacoes destas condicoes ocorre nas estruturas condicionais, as quais permitem executar um

determinado trecho de codigo ao inves de outros. Por fim, para poder criar algoritmos mais

complexos geralmente e necessaria a utilizacao de lacos que permite a repeticao de grupos de

comandos ate que uma dada condicao seja satisfeita. Devido a isso, nessa secao sao estudados os

operadores logicos e relacionais, os comandos de selecao if e switch e os comandos de repeticao

for e while.

4.1 Operadores Logicos e Relacionais

Os operadores relacionais sao utilizados para comparar dois ou mais valores, determinando

se o resultado de tal expressao e verdadeiro (V) ou falso (F), sendo que o tipo de dado resultante

destas operacoes sao valores logicos 1 ou 0, respectivamente. Ja os operadores logicos analisam

as sentencas verdadeiras ou falsas e retorna zero (0) ou um (1) com base na sua logica combi-

nacional e isto dependera de cada um dos operadores que esteja sendo utilizado. Lembrando

que os operadores logicos e relacionais podem ser usados tanto na Command Window quanto

no Editor do MATLAB.

Operadores Relacionais: Estes operadores sao utilizados em expressoes aritmeticas com-

parando elemento com elemento. Nao e possıvel comparar arranjos com dimensoes distintas.

Caso seja necessario comparar um escalar e um arranjo, o escalar sera comparado com cada

elemento deste arranjo resultando em um novo arranjo logico de 0s e 1s referente a posicao de

cada um dos elementos.

A Tabela 4.1, apresenta os principais operadores relacionais utilizados no MATLAB e, a

fim de demonstrar a utilizacao dos operadores relacionais, sao apresentados alguns exemplos a

seguir.

Tabela 4.1: Operadores Relacionais.

Operador Descricao

> Maior que

< Menor que

>= Maior ou igual a

<= Menor ou igual a

== Igual a

∼= Diferente de

48

Page 51: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> m1 = [−1 3 5; 4 1 9; −1/2 4 6]

m1 =

−1 3 5

4 1 9

−1/2 4 6

>> m2 = [2 5 −1; 1 2 −3; −1/3 0 7]

m2 =

2 5 −11 2 −3−1/3 0 7

>> m1>m2

ans =

0 0 1

1 0 1

0 1 0

>> 2==m1

ans =

0 0 0

0 0 0

0 0 0

No primeiro exemplo (m1 > m2), somente alguns elementos da matriz m1 sao maiores do

que os da matriz m2. Ja no segundo (2 == m1), nenhum elemento da matriz m1 e igual ao

escalar dois, portanto, a matriz resultante possui apenas zeros.

Operadores Logicos: Estes operadores (assim como os relacionais) podem ser combinados

com operadores aritmeticos em expressoes matematicas e tambem funcionam tanto para esca-

lares quanto para arranjos (desde que as dimensoes sejam respeitadas). Os operadores logicos

aceitam numeros como operandos, sendo que qualquer numero (diferente de zero) e considerado

verdadeiro, o oposto disto considera-se falso. Os operadores do MATLAB sao: AND (&), OR

(|) e NOT (∼). A Tabela 4.2 mostra a logica combinacional destes operadores.

Tabela 4.2: Tabela-Verdade.Entradas AND OR NOT

A B A&B A|B ∼ A

0 0 0 0 1

0 1 0 1 1

1 0 0 1 0

1 1 1 1 0

Ordem de precedencia: E possıvel utilizar simultaneamente os operadores logicos, relaci-

onais e aritmeticos em expressoes matematicas, sabendo que cada um deles tem uma ordem de

49

Page 52: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

precedencia a serem efetuados. Saber essa ordem de operacoes e muito importante para evitar

resultados com valores enganosos. Assim, na Tabela 4.3 e mostrado ordem de precedencia das

operacoes no MATLAB.

Tabela 4.3: Ordem de precedencia dos operadores.

Precedencia Descricao

Maxima Parenteses (realizar operacoes dos parenteses mais interno ao mais externo).

⇓ Exponenciacao.

⇓ Multiplicacao e Divisao (realizar por ordem em que aparecem).

⇓ Adicao e Subtracao (tambem sao realizados por ordem que aparecem).

⇓ Operador Logico NOT (∼).

⇓ Operadores relacionais (>, <, >=, <=, ==, ∼=).

⇓ Operador Logico AND (&).

Mınima Operador Logico OR (|)

4.2 Declaracao de Selecao

As ferramentas de controle de fluxo compostas no MALAB sao utilizadas quando se deseja

controlar a ordem de execucao de um determinado programa. O controle pode ser estabelecido

impondo condicoes de execucao para determinada estrutura de comandos. Esta subsecao ira

apresentar as estruturas e os comandos utilizados para determinar as condicoes que controlam

o fluxo da rotina.

4.2.1 Estrutura If

A estrutura de comando if, palavra que vem do ingles com significado se, e uma funcao

condicionada a um resultado, em que executara uma parte do codigo, desde que, o requisito

seja satisfeito. Dentro desta logica, existem tres tipos de variacoes do mesmo comando, que

envolvem o else (outro/senao) e else - if (senao-se). Para utilizar esse comando deve-se estar

ciente de que, todo if tem que ser finalizado com o comando end, seguindo a seguinte sintaxe.

1 if('condição')

2 % Grupo de comandos desejados

3 end

if - end : Esta estrutura possui uma condicao no if que, ao ser satisfeita, fara com que o

grupo de comandos desejados seja executado. Caso a condicao seja falsa, a estrutura inteira

sera ignorada, fazendo com que o MATLAB continue a execucao do script na linha seguinte ao

end. A fim de exemplificar este comando, no exemplo abaixo foi criada uma variavel X que

recebera um valor aleatorio pelo MATLAB. Entao, o comando if ira testar se esse valor e maior

que zero e, apenas caso essa condicao seja satisfeita, executara a atribuicao Z = 1.

50

Page 53: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 X = randn() % Escolherá uma valor aleatório para X.

2 if(X>0)

3 Z = 1 % Caso a condição for satisfeita

4 end

if - else - end : Nesta configuracao do if tem-se o comando else que permitira, tambem,

a execucao de um grupo de comandos no caso da condicao ser falsa, conforme mostrado no

exemplo a seguir, conforme visto no exemplo a seguir.

1 X = randn() % Escolhe um valor aleatório para X.

2 if(X>0)

3 Z = 1 % Caso a condição seja satisfeita

4 else

5 Z = 2 % Caso a condição não seja satisfeita

6 end

if - elseif - else - end : Esta variacao possui duas condicoes (if-elseif), sendo que a

segundo apenas sera testada caso a primeira falhe. Deve-se destacar que e possıvel inserir

quantos elseif forem necessarios, sendo que apenas um grupo de comandos de toda a estrutura

sera executado, ou seja, o else so sera considerado caso todas as demais condicoes sejam falsas.

Segue abaixo um exemplo semelhante aos anteriores adicionando-se uma opcao extra com o

elseif.

1 X = randn()%escolherá uma valor aleatório para X.

2 if(X<0)

3 Z = 1 % Caso a condição seja satisfeita

4 elseif(X>1)

5 Z = 2 % Caso a condição do 1° if não seja satisfeita e a do 2º seja

6 else

7 Z = 3 % Caso nenhuma condição seja satisfeita

8 end

4.2.2 Estrutura Switch

De um modo geral, a estrutura switch e equivalente ao uma if com varios elseif, porem com

uma sintaxe mais eficiente para descrever varias opcoes, conforme pode ser visto a seguir.

1 switch 'variável'

2 case 'condição'

3 % Grupos de comando desejados

4 case 'outra condição'

5 % Grupos de comando desejados

6 .

7 .

8 .

9 otherwise

10 % Grupos de comando desejados

11 end

51

Page 54: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

O comando inicial switch possui uma expressao ou variavel que sera comparada com as con-

dicoes que estao nos cases, sendo que apenas um dos grupos de comandos podera ser executado.

Caso necessario, e utilizado o comando otherwise para indicar o caso em que a variavel nao se

encaixa em nenhuma das condicoes impostas anteriormente nos cases. A fim de exemplificar o

switch-case e apresentado o exemplo a seguir:

1 num=input('Entre com um número de 1 a 3')

2 switch num

3 case 1

4 disp('Um')

5 case 2

6 disp('Dois')

7 case 3

8 disp('Três')

9 otherwise

10 disp('Não se encaixa')

11 end

4.3 Declaracao de Lacos

Considere o problema de calcular a velocidade de um carro com aceleracao 2 m/s2 em um

determinado instante de tempo em segundos, dada a funcao V = (10m/s) + (2m/s2)t. Para

isso, nao sera necessaria a utilizacao de um script em MATLAB para realizar tal calculo, o qual

pode ser realizado facilmente com uma calculadora. No entanto, caso seja necessario calcula

a velocidade do carro no intervalo de tempo 1s a 1h com variacao de 5 segundos (1s, 6s, 11s,

16s, assim por diante), a tarefa manual torna-se impraticavel. Para realizar essa tarefa de uma

maneira eficaz poderia ser utilizado um programa de computador que realizaria a repeticao do

script que calcula a velocidade trocando somente o valor do instante de tempo.

A repeticao de algum grupo de comandos, exemplo visto do calculo da velocidade, e chamado

de laco ou, do ingles, loop. Existem basicamente dois tipos de lacos: O laco contador e o laco

condicional. Um laco contador repete a parte do codigo um numero especifico de vezes, por

exemplo, contar de um a dez repetira 10 vezes. O laco condicional, por outro lado, realizara

repeticoes ate que uma condicao seja satisfeita, por exemplo, sortear numeros aleatorios de um

bingo ate que haja um ganhador. Esses dois tipos diferentes de lacos no MATLAB sao o for e

while, respectivamente.

4.3.1 Laco for

O laco for, e utilizado quando necessita-se repetir parte do codigo um determinado numero

de vezes. No entanto, em alguns casos comporta-se como laco condicional. A sintaxe basica de

um laco for em MATLAB e dada por

for i=inicio : incremento : fim

52

Page 55: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

'script que será realizado'

end

em que for representa o inicio do laco, a variavel inicio e o valor inicial do loop, a variavel

incremento e o valor que sera acrescentado no valor de inicio em cada repeticao, a variavel fim

e o valor final que a variavel i obtem apos somar com o valor de incremento no passar de cada

repeticao e end representa o fim do laco. Assim, o codigo a seguir mostra o valor da variavel i

em cada repeticao.

1 for i=1 : 1 : 20 % Esse laço realiza repetição 20 vezes

2 fprintf('\t %d \n', i);

3 end

Se a variavel incremento do laco for for omitida ela sera considerada como sendo 1. Deve-

se ressaltar que a repeticao e realizada enquanto o valor inicial somado com os sucessivos

incrementos resulta com um valor menor ou igual ao valor final. Destaca-se que o valor de

incremento pode ser tambem negativo, contudo, nesse caso, a repeticao continua enquanto o

valor inicial somado com os incrementos for maior ou igual ao valor final. O codigo a seguir

contem exemplos desses casos.

1 for j=10 : 15

2 fprintf('\t %d \n', j);

3 end

4 fprintf('\n\n');

5 for i=50 : −5 : 10

6 fprintf('\t %d \n', i);

7 end

Alem dos exemplos anteriores da utilizacao do laco for, tambem e possıvel realizar combina-

coes de lacos for com estruturas de ramificacoes if e com outros lacos for internos, chamados de

aninhados, permitindo uma maior abrangencia para implementacao das solucoes de problemas.

Segue abaixo um exemplo combinando lacos for e estruturas de ramificacoes if.

1 for i=0 : 7 % Primeiro for controla as linhas da matriz

2 for j=0 : 6 % Segundo for controla as colunas da matriz

3 if i==1 % A combinação de if é para moldar com deseja

4 fprintf('\t L'); % os elementos da matriz.

5 elseif j==2 && i 6= 1

6 fprintf('\t C');

7 elseif i ≤ j

8 fprintf('\t %d', round(3*rand(1)));

9 elseif i 6=1 && j 6=2

10 fprintf('\t %d', round(100*rand(1)));

11 % Após atribuir os valores aos elementos da linha

12 % em que o segundo for está, ele finaliza e entra

13 end % novamente para o primeiro for, que por sua vez,

14 end % quebra a linha na Comannd Window e passa para

15 fprintf('\n'); % proxima linha da matriz que é acrescentar 1 na

16 end % variavel i.

53

Page 56: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

4.3.2 Laco while

Diferentemente do laco for, no while nao e definida a quantidade de vezes que se ira repetir

um grupo de comandos. Sendo assim, o laco sera repetido indefinidamente ate que uma certa

condicao seja atendida. Geralmente, a avaliacao da expressao resulta em um escalar, mas

tambem sao validos resultados matriciais e, para que isso ocorra, cada elemento dela deve ser

verdadeiro (satisfazer as expressoes). A sintaxe basica do laco while e dada por

1 while (<expressão_condicionada>)

2 .

3 . %Grupo de comando desejados

4 .

5 end

em que na primeira linha e mostrado o while seguido de uma expressao condicional. O MATLAB

interpreta esta condicao e caso a expressao seja falsa (0), todo o grupo de comandos e ignorado

e o laco e encerado, passando para a execucao da linha imediatamente abaixo do end. Caso a

expressao seja verdadeira (1), serao executados os comandos que estao entre o while e o end.

Depois de realizar todos os comandos, o MATLAB volta para o while analisando a expressao

novamente. Isto ocorre enquanto esta expressao condicional for verdadeira e so sera encerrado

caso resulte em falso, ou seja, deve-se ter cuidado para nao criar um laco de duracao infinita.

Desse modo, seguem algumas dicas para ajudar a evitar esse tipo de problema:

1. Na expressao condicional deve haver, no mınimo, uma variavel;

2. Antes do MATLAB iniciar o laco, as variaveis da expressao condicional devem ter sido

declaradas com valores corretos;

3. Para reduzir a chance de se obter um laco infinito, pelo menos o valor de uma variavel

que esta na expressao condicional deve ser modificada no corpo do laco.

A seguir e mostrado um exemplo utilizando o laco while para determinar o fatorial de um

numero natural qualquer especificado pelo usuario.

1 num = input('Entre com um número para calculo do fatorial: ');

2 fat = 1;

3 cont = 1;

4 while (cont ≤ num)

5 fat = fat * cont;

6 cont=cont+1;

7 end

8 fprintf('O valor do fatorial é %d\n', fat)

54

Page 57: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

4.4 Exercıcios

Os exercıcios propostos a seguir devem ser realizados no Editor do MATLAB. Eles tem

como objetivo consolidar o conhecimento adquirido durante o estudo dessa secao.

1. Construa uma calculadora que realize soma, subtracao, multiplicacao e divisao utilizando

a estrutura de ramificacao switch.

2. Construa os seguintes codigos com lacos for a partir de um numero positivo de entrada

fornecido pelo usuario:

(a) Funcao fatorial do numero de entrada;

(b) Funcao somatoria de 1 ate o numero de entrada.

3. Construa os seguintes algoritmos utilizando o laco while:

(a) Contar de 1 a 100 e que para cada multiplo de 10 seja emitida a seguinte mensagem

no terminar de comandos: Multiplo de 10.

(b) Determine qual e o maior valor dos n numeros inseridos pelo usuario. O laco devera

ser encerado quando o valor de entrada for igual a zero;

4. Crie um script que, primeiramente, atribua valores aleatorios para as variaveis X e Y

utilizando a o comando rand( ). Na sequencia, execute a atribuicao S = 1 caso Z > 3,

caso contrario S = 0.

Z = X2 + 10XY − Y (4.1)

55

Page 58: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5 Graficos

O MATLAB e uma ferramenta muito eficiente para a geracao de graficos, sendo esse um

de seus maiores diferenciais entre outras linguagens de programacao. Essa ferramenta possibi-

lita gerar figuras de alta qualidade para artigos cientıficos e solucao de problemas aplicados a

engenharia. Nessa secao, sera apresentada como realiza-se a construcao, formatacao e edicao

de graficos bidimensionais e tridimensionais no MATLAB. A fim de exemplificar, a Figura 5.1

mostra o resultado da geracao de uma grafico tridimensional atraves do codigo a seguir.

1 [x, y]= meshgrid(−2*pi:0.5:2*pi, −3*pi:0.5:3*pi);2 mesh(x,y,sin(sqrt(x.*x+y.*y)));

3 colorbar

Figura 5.1: Exemplo de grafico em tres dimensoes.

5.1 Graficos em Duas Dimensoes (2D)

Para “plotar” (gerar graficos) em 2D, utiliza-se o comando plot(x,y), na maioria dos casos,

com o qual e possıvel obter uma vasta gama de resultados. Contudo, este nao e o unico recurso

a ser usado, sendo assim, outros comandos existentes estao apresentados na Tabela 5.1.

56

Page 59: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 5.1: Comandos para gerar graficos em 2D.

Comando Descricao

plot Grafico linear

semilogx Grafico em escala semi logarıtmica no eixo x.

semilogy Grafico em escala semi logarıtmica no eixo y.

loglog Grafico em escala logarıtmica em ambos os eixos.

fplot Grafico da funcao.

polar Grafico com coordenadas polares.

Foram utilizados exemplos a fim de demonstrar como utilizar algumas das funcoes apresen-

tadas na Tabela 5.1. Alem disso, as Figuras 5.2-5.6 auxiliam a visualizacao dos resultados de

cada um dos exemplos.

1 X = 0:10

2 Y = X.^2

3 plot(X,Y)

Figura 5.2: Exemplo da funcao plot.

1 X = 0:10:100

2 Y = X.^3

3 semilogx(X,Y)

57

Page 60: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.3: Grafico utilizando semilogx.

1 X = 0:10:100

2 Y = X.^3

3 semilogy(X,Y)

Figura 5.4: Grafico utilizando semilogy.

58

Page 61: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 X = 0:10:100

2 Y = X.^3

3 loglog(X,Y)

Figura 5.5: Grafico utilizando loglog.

1 h=linspace(0,014*pi,100);

2 q=3*cos(0.5*t).^4+t;

3 polar(h,q);

59

Page 62: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.6: Uso do comando polar.

Apos a apresentacao de diferentes maneiras de plotar um grafico, e valido ressaltar que ha a

possibilidade de plotar mais de uma funcao no mesmo grafico. Isso pode ser realizado atraves do

comando hold, sendo que para utiliza-lo basta acrescentar o comando hold on, antes de escrever

as funcoes que plotam os graficos e ao finaliza-las hold off. O exemplo a seguir apresenta o uso

do comando hold para plotar duas funcoes em mesmo grafico, cujo resultado e apresentado na

Figura 5.7.

1 X = 0:pi/100:6*pi;

2 Y1= sin(X);

3 Y2= cos(X);

4

5 hold on

6

7 plot(X,Y1);

8 plot(X,Y2);

9

10 hold off

60

Page 63: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.7: Grafico utilizando o comando hold.

5.2 Principais Funcoes para Geracao de Graficos - Estatıstica

Alem dos comandos apresentados na Secao 5.1, o MATLAB possui funcoes para “plotar”

graficos com finalidades especıficas. Como exemplos disso, podem ser mencionados graficos

utilizados em estatıstica, como o grafico de “pizza” ou os histogramas. Dessa forma, algumas

funcoes sao apresentadas na Tabela 5.2.

Tabela 5.2: Comandos para gerar graficos estatısticos.

Comando Descricao

pie() Grafico em pizza.

bar() Grafico em barras.

hist() Histogramas.

stairs() Grafico de hastes.

A fim de demonstrar como utilizar algumas das funcoes exibidas na Tabela 5.2, sao apre-

sentados os exemplos a seguir. Alem disso, as Figuras 5.8-5.11 mostram os resultados de cada

um dos exemplos, respectivamente.

1 y=[2 4 9; 1 3 8]

2 x=[0 0 5;0 0 0];

3 pie(y,x)

61

Page 64: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.8: Uso do comando pie.

1 y=[2 4 9; 1 3 8; 2 5 6; 2 5 10; 3 4 7;];

2 bar(y)

Figura 5.9: Uso do comando bar.

1 x=rand(100,2);

2 hist(x)

62

Page 65: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.10: Uso do comando hist.

1 x=[1 : 10];

2 y=[0 2 4 ; 6 8 6 ; 4 8 6 5];

3 stairs(x,y,'b')% Para gerar gráficos de hastes basta utilizar o comando ...

stem(x,y)

Figura 5.11: Uso do comando stairs.

63

Page 66: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.3 Formatacao de Imagens

Para melhorar a aparencia dos graficos gerados podem ser utilizados alguns comandos do

MATLAB. Alguns exemplos sao title (apresenta um tıtulo para o grafico), xlabel (permite que o

eixo das abcissas seja identificado) e ylabel (permite que o eixo das ordenadas seja identificado),

conforme mostrado no exemplo a seguir, o qual resultou na Figura 5.12.

1 x= 0:0.1:6*pi;

2 y=sin(x);

3 plot(x,y);

4 title('Gráfico da função sen(x)')

5 xlabel('eixo x')

6 ylabel('eixo y')

Figura 5.12: Grafico gerado com configuracoes de title, ylabel e xlabel.

Para configurar as propriedades graficas de cores, estilos de linhas e estilo de marcadores,

utiliza-se um conjunto de caracteres apos os vetores da funcao geradora do grafico. A sintaxe

dessa propriedade e dada por

plot(x,y,'y<:')

em que “y” e a cor amarela, “<” representa um marcador na forma de triangulo virado para

esquerda e “:” representa a linha pontilhada. Para uma melhor apresentacao das possibilidades

disponıveis, na Tabela 5.3 sao exibidas as principais cores, sımbolos e tipos de linha.

64

Page 67: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 5.3: Edicao de cores, estilos de linha e marcadores com plot.

Cores Estilo de marcadores Estilo de linha

Sımbolo Cor Sımbolo Marcador Sımbolo Tipo de linha

b Azul . Pontos - Contınua

g Verde o Cırculos : Pontilhada

r Vermelho x Xis -. Traco e ponto

c Ciano s Quadrado - - Tracejada

m Magenta d Losango

y Amarelo v Triangulo para baixo

k Preto ˆ Triangulo para cima

w Branco p Pentagrama

h Hexagrama

< Triangulo para esquerda

> Triangulo para direito

Outra forma de alterar propriedades dos graficos e utilizando o comando plot seguido por

propriedades, seus valores e/ou configuracoes especıficas, sendo algumas delas mostradas na

Tabela 5.4 e sintaxe dada por

plot(x,y,'Propriedade',valor)

em que Propriedade e o nome de propriedade e valor e a sua configuracao. Segue abaixo um

exemplo, cujo resultado e apresentado na Figura 5.13.

Tabela 5.4: Propriedades do comando plot.

Propriedade Descricao

LineWidth Especıfica em pontos a espessura de cada linha.

MarkerSize Especifica em pontos o tamanho do marcador.

MarkerEdgeColor Especifica a cor do marcador ou da borda de marcadores preenchidos.

MarkerFaceColor Especifica a cor interna dos marcadores preenchidos.

1 x = −2*pi:0.1:2*pi;2 y = sin(x).^2./(x+0.001);

3 y2 = exp(−x.^2);4

5 hold on

6

7 plot(x,y,':','linewidth',5);

8 plot(x,y2,'g−−');9

10 hold off

65

Page 68: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.13: Grafico gerado com configuracao de propriedades do comando plot.

Ja para a inclusao de legenda no grafico e utilizado o comando legend, cuja sintaxe e dada

por

legend('texto1','texto2', ..., numb)

em que numb e a posicao da mesma no grafico sendo as possıveis opcoes sao descritas na Tabela

5.5. Ja para a insercao de uma grade utiliza-se o comando grid apos o comando plot. O exemplo

abaixo mostra a utilizacao dos dois comandos e o resultado e apresentado na Figura 5.14.

Tabela 5.5: Posicionamento da legenda no grafico.

Valor Descricao

0 Escolha Automatica (menos conflitos com os dados).

1 Canto Superior direito.

2 Canto superior esquerdo.

3 Canto inferior direito.

4 Canto inferior esquerdo.

−1 A direita do desenho.

1 x= 0:0.1:3*pi;

2 z=5;

3 y=sin(x);

4 y2=cos(x);

5 plot(x,y,'g<−−',x,y2,'r*:');6 legend('Sen(x)','Cos(x)',0)

7 grid

66

Page 69: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.14: Grafico gerado utilizando os comandos grid e legend.

Caso necessario, textos podem ser colocados nos graficos. Para isso, utilizam-se os comandos

text ou gtext. Sendo que, a sintaxe do comando text e dada por

text(x,y,'Texto')

em que x e y sao as coordenadas do texto. Para o comando gtext, utiliza-se a sintaxe:

gtext('Texto')

porem, para esse comando a posicao do texto e escolhida com o auxılio do mouse. O codigo a

seguir mostra exemplo destes dois comandos e o resultado e apresentado na Figura 5.15.

1 x= 0:0.01:2;

2 y = sin(10*x)./exp(x);

3 plot(x,y,'b−');4 text(1.2,sin(10*1.2)/exp(1.2),'Ponto');

5 gtext('Texto');

67

Page 70: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.15: Grafico gerado utilizando os comandos text e gtext.

Para formatacao dos eixo utiliza-se o comando axis com a sintaxe

axis([xmin xmax ymin ymax])

em que xmin e ymin sao os limites mınimos e xmax e ymax sao os limites maximos das

coordenadas x e y, respectivamente. O exemplo a seguir mostra a utilizacao do comando axis

e o resultado e apresentado na Figura 5.16.

1 x = −1.5:0.01:1.5;2 y=sin(6*x)+cos(x);

3 plot(x,y)

4 axis([−2 2 −1 2]);

68

Page 71: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.16: Grafico gerado utilizando o comando axis.

Note que o comando axis estabelece os limites para todos os eixos. Para situacoes em que e

necessario especificar o limite de apenas um dos eixos utiliza-se o comando klim em que k e o

eixo desejado. A seguir e apresentado um codigo para exemplificar o comando klim, sendo que

seu resultado e apresentado na Figura 5.17.

1 x = −7:0.01:7;2 y= sin(x).^2./(x+0.001);

3 a = plot(x,y,'r:','linewidth',3)

4 xlim([−6 6])

Figura 5.17: Grafico gerado utilizando o comando xlim.

69

Page 72: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.4 Comando subplot

Este comando e utilizado para representar multiplos graficos em uma mesma janela,

dividindo-a em uma matriz definida pelo usuario. A sintaxe desse comando e dada por:

subplot(m,n,p).

Desta forma, o comando ira dividir a Figure Window em m x n, em que os graficos sao

organizados como elementos desta matriz. Ja o valor de p informara qual e o endereco de cada

grafico. O valor de p cresce da esquerda para a direita e de cima para baixo. Logo, o grafico

plotado mais a direita e mais abaixo tera o maior valor de p.

Abaixo e mostrado um script exemplificando a utilizacao do comando subplot, sendo seu

resultado exibido na Figura 5.18.

1 clear all; clc;

2 x = linspace(0,2*pi,50);

3 a=sin(x);

4 b=cos(x);

5 c=sin(x).*cos(x);

6 d=sin(x)./x;

7 subplot(2,2,1);

8 plot(x,a);

9 axis([0 2*pi −1 1]);

10 title('sin(x) (2,2,1)');

11 subplot(2,2,2);

12 plot(x,b);

13 axis([0 2*pi −1 1]);

14 title('cos(x) (2,2,2)');

15 subplot(2,2,3);

16 plot(x,c);

17 axis([0 2*pi −1 1]);

18 title('sin(x)cos(x) (2,2,3)');

19 subplot(2,2,4);

20 plot(x,d);

21 axis([0 2*pi −1 1]);

22 title('sin(x)/x (2,2,4)');

70

Page 73: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.18: Figure Window utilizando o comando subplot.

5.5 Graficos em Tres Dimensoes (3D)

O uso da geracao de graficos tridimensionais facilita bastante o estudo de funcoes desse tipo,

uma vez que e mais difıcil de imagina-las quando comparadas com funcoes de duas dimensoes.

Com o MATLAB e possıvel plotar curvas em 3D, superfıcies, graficos em malha ou rede, entre

outras. Com alguns ajustes, ainda e possıvel formatar o grafico, introduzir efeitos alem de

outros recursos presentes no software.

5.5.1 Curvas no Espaco

A maioria dos Graficos 3D se enquadram nesta classificacao, que sao plotados utilizando o

comando plot3 com a sintaxe dada por

plot3(x,y,z, 'especificador','propriedades','valores das propriedades')

sendo x, y, z os vetores cujas entradas sao as coordenadas nos pontos, especificador uma entrada

opcional que e utilizada para definir a cor, o tipo das linhas e os marcadores a serem “plotados”

e valores das propriedades os valores do tamanhos do marcador, da borda, da espessura e da

cor de preenchimento que sao definidas na propriedade. Na Figura 5.19 e mostrado o resultado

do exemplo abaixo.

Observacao: Os tres vetores devem ter a mesma dimensao, ou seja, o mesmo numero de

elementos.

71

Page 74: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 clear all; clc;

2 w=0:0.1:100;

3 x=.2*w;

4 y=cos(0.2*w);

5 z=sin(0.2*w);

6 plot3(x,y,z,'r'); % O estilo da linha foi mudado para

7 grid on % a cor vermelha utilizando 'r'.

8 axis square

Figura 5.19: Grafico de uma curva 3D utilizando o comando plot3.

5.5.2 Malhas e Superfıcies

O comando meshgrid e utilizado para criar matrizes x e y a partir do conhecimento dos

domınios dos respectivos eixos. Este comando pode ser utilizado com a seguinte sintaxe:

[X,Y] = meshgrid(dx,dy)

sendo dx e dy vetores com os valores que as dimensoes de x e y do grafico em 3D irao assumir,

respectivamente. A seguir e apresentado um exemplo utilizando esse comando.

72

Page 75: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

>> dx = 2:5;

>> dy = 4:7;

>> [X,Y]=meshgrid(dx,dy)

X =

2 3 4 5

2 3 4 5

2 3 4 5

2 3 4 5

Y =

4 4 4 4

5 5 5 5

6 6 6 6

7 7 7 7

Os comandos mesh e surf sao utilizados para plotar malhas e superfıcies, utilizando-os na

forma mesh(Z) e surf (Z). Nesses casos, os valores de Z sao plotados em funcao dos valores de

X e Y gerados com o comando meshgrid. As linhas sao representadas no eixo x e as colunas

no eixo y. No exemplo a seguir foi gerado um grafico de malha e um de superfıcie a partir da

funcao Z = 4−2.3√x4+y4cos(3.4y)sin(2x), cujos resultados sao exibidos na Figura 5.20.

1 x = −1:0.07:1;2 y = −2:0.07:2;3 [X,Y] = meshgrid(x,y);

4 Z=(4.^(−2.3*sqrt(X.^4+Y.^4))).*cos(3.4*Y).*sin(2*X);5 subplot(1,2,1);

6 mesh(Z)

7 title('mesh(Z)');

8 axis square

9 grid on

10 subplot(1,2,2);

11 surf(Z)

12 title('surf(Z)');

13 grid on

14 axis square

73

Page 76: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.20: Graficos de malha e superfıcie de uma mesmas funcao Z(x,y).

Alem dos comandos apresentados anteriormente, existem outros para a geracao de Graficos

3D especiais que sao mostrados na Tabela 5.6, sendo possıvel obter mais especificacoes destes

comandos atraves do help do MATLAB. Alguns exemplos de grafios 3D especiais sao mostrados

a seguir, de modo que seus respectivamente resultados sao apresentados nas Figuras 5.21-5.22.

Tabela 5.6: Comandos para gerar graficos 3D especiais.

Comando Descricao

pie3(X,explode) Grafico em torta (explode e um vetor para deslocar as fatias do centro).

sphere(n) Grafico de uma esfera unitaria com n faces.

stem3(X,Y,Z) Sequencia de pontos com projecao ortogonal no plano xy.

[X,Y,Z]=cylinder(r) Grafico de um cilindro com perfil r

bar3(Y) Grafico de barras com colunas alinhadas de acordo com o vetor

1 % Gráfico de barras

2 y=[2 4 9; 1 3 8; 2 5 6; 2 5 10; 3 4 7;];

3 bar3(y)

74

Page 77: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.21: Grafico em barras utilizando o comando bar3 (y).

1 % Gráfico em torta

2 X=[2 4 9; 1 3 8];

3 y=[0 0 5;0 0 0];

4 pie3(X,y)

Figura 5.22: Uso do comando pie3 (X,y).

75

Page 78: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.5.3 Comando view

Com o comando view e possıvel ter visao de um mesmo grafico em varias direcoes possıveis.

Para isto, basta determinar a direcao por meio do angulo (em graus) de azimute e elevacao. A

sintaxe deste comando e dada por

view(az,el)

sendo az a distancia angular sobre o plano xy, partindo do eixo y negativo e o sentido positivo

e o anti-horario e el o angulo de elevacao com valores positivos na direcao do eixo z positivo.

Utilizando a funcao Z = 4−2.3√x4+y4cos(3.4y)sin(2x), na Figura 5.23 e mostrado um exemplo

do comando view para azimute = 30° e elevacao = 40°.

Figura 5.23: Grafico 3D utilizando o comando view.

As tres vistas mais importantes quando se utiliza o comando view sao mostradas na Ta-

bela 5.7. No script abaixo utiliza-se o comando subplot para comparar o resultado das vistas

principais da Figura 5.24, sendo este resultado apresentado na Figura 5.24.

Tabela 5.7: Principais vistas do comando view.

Vistas Azimute Elevacao

Superior xy 0 90°

Lateral xz 0 0

Lateral yz 90° 0

76

Page 79: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 x = −1:0.07:1;2 y = −2:0.07:2;3 [X,Y] = meshgrid(x,y);

4 Z=(4.^(−2.3*sqrt(X.^4+Y.^4))).*cos(3.4*Y).*sin(2*X);5 subplot(1,3,1)

6 surf(Z)

7 view(0,0)

8 title('surf(Z) Vista Lateral xz')

9 subplot(1,3,2)

10 surf(Z)

11 view(0,90)

12 title('surf(Z) Vista Superior xy')

13 axis square;

14 subplot(1,3,3)

15 surf(Z)

16 view(90,0)

17 title('surf(Z) Vista Lateral yz')

Figura 5.24: Principais vistas de uma determinada funcao Z(X,Y) utilizando o comando view.

5.6 Ambiente de Edicao de Imagens

No MATLAB e possıvel editar os graficos plotados no ambiente de edicao de imagem atraves

do show plot tools( ) que se localiza na barra de ferramenta da Janela de figuras como mostra

a Figura 5.25.

77

Page 80: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.25: Show plot tools.

A Figura 5.26 mostra o ambiente de edicao, no qual e possıvel realizar diversas edicoes,

porem, como existem muitas delas sao apresentadas apenas as consideradas mais basicas. “Cli-

cando no fundo do grafico” abre-se uma aba abaixo da figura com funcoes de editacao de fundo,

edicao de eixos e outras possibilidades de edicoes do grafico, como e mostrado na Figura 5.27.

Outra opcao de edicao e obtida “clicando em cima da linha, barra ou qualquer tipo de dado

do grafico”, no qual abre-se uma aba abaixo da figura com funcoes de edicao do tipo de linha,

cores, tamanho, entre outras possibilidades de edicao, como mostrado na Figura 5.28.

78

Page 81: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 5.26: Ambiente de edicao do grafico.

Figura 5.27: Edicao do fundo do grafico.

Figura 5.28: Edicao de linhas, barras entre outros dados exibidos no grafico.

79

Page 82: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5.7 Exercıcios

Os exercıcios propostos a seguir tem como objetivo consolidar o conhecimento adquirido

durante o estudo dessa secao.

1. Plotar a seguintes funcoes com t variando de 0 a 3π com passo de 0.01:

(a) Funcao sin(t) com o comando plot().

(b) Funcao e−0.3t com o comando semilogx().

(c) Funcao cos(t) com o comando loglog().

(d) Plotar essas funcoes no mesmo grafico usando o comando hold.

2. Plotar a funcao r = cos(8θ) atraves do comando polar(r) com θ variando de π200

a 2π com

passo de π200

.

3. Plotar o grafico 3D da funcao x = cos(t), y = sin(t) e z = t3 com t variando de 0.01 a

30π com passo de 0.05.

4. Plotar a seguinte funcao z = sin(r)r

com r =√x2 + y2 atraves dos comandos surf(z) e

mesh(z). x e y variando de −8 a 8 com passo 0.5.

5. Utilizar o comando subplot para o exercıcio anterior a fim de visualizar os graficos gerados

por view(30,0), view(0,70) e view(0,0), apenas para o comando mesh().

6. Gerar um grafico atraves do comando bar3(y) com y sendo uma matriz aleatoria de 5

linhas e 10 colunas.

7. Gerar um grafico atraves do comando pie3(y,v) para y = round(5rand(2, 3)) e v = [1 0

0; 0 1 0].

80

Page 83: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

6 Matematica Basica

Nesta secao sao vistas operacoes matematicas muito utilizadas no ensino de engenharia,

sendo elas relacionadas a polinomios, limites, derivacao, integracao, interpolacao e ajuste de

curvas.

6.1 Variaveis Simbolicas

A variavel simbolica ira atribuir uma simbologia, assim como o nome sugere, para letras

e/ou expressoes desejadas, fazendo com que o MATLAB desenvolva suas funcoes utilizando-as

nao mais como uma variavel que necessite de um valor numerico, mas sim uma incognita auto-

suficiente, ou seja, mesmo que nao tenham sido quantificadas, irao ser interpretadas como um

sımbolo ao inves de um valor numerico. A necessidade de desse tipo de variavel surge quando se

deseja visualizar melhor uma equacao, tendo assim um panorama geral do problema, podendo

ser util tambem para uma possıvel manipulacao da variavel. Seguindo essa logica, e apresentado

na Tabela 6.1 alguns comandos para utilizacao de variaveis simbolicas.

Tabela 6.1: Comandos para utilizar variaveis simbolicas.

Comando Descricao

sym Define variaveis e expressoes como simbolicas.

syms Determina os argumentos como caracteres simbolicos.

findsym Determina as variaveis simbolicas em uma expressao.

O exemplo a seguir aborda trigonometria e demonstra a utilizacao de variaveis simbolicas,

sendo utilizado tambem o comando simplify para simplificar uma determinada funcao.

>> syms x % ou x = sym('x')

>> f = x^2 + 3*x + 10 + (x+1)^2 + (x+2)^2 ;

>> simplify(f)

ans =

3*x^2 + 9*x + 15

Observacao: As variaveis simbolicas sao utilizadas ao longo de toda esta secao.

6.2 Polinomios

A utilizacao de polinomios e fundamental em modelos matematicos e para a solucao de uma

infinidade de problemas das mais diversas areas do conhecimento. Neste sentido, o MATLAB

dispoe de um conjunto de comandos para auxiliar na manipulacao dos polinomios. Primeira-

mente, e necessario explicitar a sintaxe de um polinomio, a qual e dada por

f(x) = αnxn + αn−1x

n−1 + ...+ α1x+ α0,

em que os coeficientes αn, αn−1, ..., α1, α0 sao numeros reais e n e um numero natural que

caracteriza o grau do polinomio. No MATLAB os polinomios sao representados como um vetor

81

Page 84: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

linha composto pelos coeficientes, em que o primeiro elemento (mais a esquerda) e o coeficiente

do termo de maior potencia, no caso acima, αn. Deve-se lembrar que no vetor devem aparecer

todos os coeficientes, mesmo que alguns deles sejam iguais a zero, conforme visto no seguinte

exemplo.

% Estes vetores representam os polinômios:

g = [6 3 0 1] % g = 6x^3 + 3x^2 + 0x + 1

m = [0.05 0 0 3 4] % m = 0.05x^4 + 0x^3 + 0x^2 + 3x + 4

Comando polyval: Este comando e utilizado para encontrar o valor numerico de um

polinomio para um dado valor de x. E importante ressaltar que o valor de x tambem pode ser

composto por um conjunto de elementos, ou seja, um vetor ou matriz com os valores a serem

aplicados no polinomio. O resultado disto sera tambem um vetor ou matriz com a mesma

dimensao do conjunto de entrada. A sua sintaxe e dada por

polyval(v,x)

em que v e o vetor com os coeficientes do polinomio e x e o conjunto de dados de entrada.

A seguir sao mostrados alguns exemplos, executados na Command Window, utilizando este

comando.

% Considerando o polinômio u = x^5 + 3x^4 + 0.5x^3 + 0x^2 + 0x + 1:

>> u = [1 3 .5 0 0 1];

>> x = 3;

>> polyval(u,x)

ans =

500.5000

>> p = [1 0 2 3 4];

>> polyval(u,p)

ans =

1.0e+03 *

0.0055 0.0010 0.0850 0.5005 1.8250

>> m = [1 2 ; 3 4];

>> polyval(u,m)

ans =

1.0e+03 *

0.0055 0.0850

0.5005 1.8250

6.2.1 Operacoes com polinomios

No MATLAB tambem e possıvel realizar operacoes elementares com os polinomios. A seguir

sao apresentadas as principais operacoes com polinomios:

Adicao e Subtracao: As operacoes de adicao e subtracao devem ser realizadas entre os

coeficientes dos termos de mesma potencia. Desse modo, caso os polinomios nao sejam de

mesma ordem, e necessario modifica-los, incluindo zeros a direita dos de menor ordem, de

82

Page 85: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

forma que os coeficientes de mesma ordem fiquem alinhados, conforme mostrado nos exemplos

a seguir.

>> u = [1 2 0 0 4]; % u = x^4 + 2x^3 + 0x^2 + 0x + 4

>> m = [2 4]; % m = 0 0 0 2x + 4

>> soma_p = u + [0 0 0 m]

soma_p =

1 2 0 2 8

>> n = [1 1];

>> soma_p1 = m + n

soma_p1 =

3 5

Multiplicacao: Dois polinomios podem ser multiplicados utilizando o comando conv, cuja

sintaxe e dada por

prod = conv(p0,p1)

em que p0 e p1 sao dois polinomios. A utilizacao deste comando e mostrada nos exemplos

abaixo.

>> u = [1 2 0 0 4];

>> m = [2 4];

>> n = [1 1];

>> prod = conv(u,m)

prod =

2 8 8 0 8 16 % multiplicação u*m

>> prod1 = conv(m,n)

prod1 =

2 6 4 % multiplicação m*n

>> prod3 = conv(prod1,u)

prod3 =

2 10 16 8 8 24 16 % multiplicação u*m*n

Divisao: A operacao de divisao e realizar pelo comando deconv, cuja sintaxe e dada por

[q,r] = deconv(p1,p2)

em que o termo q e o vetor com os coeficientes do quociente da divisao polinomial, r e o

vetor com os coeficientes do resto da divisao e p1 e p2 sao os polinomios dos coeficientes do

numerador e denominador, respectivamente.

Observacao: Caso seja divido um polinomio por outro identico, o quociente sera 1 e o

resto sera um vetor nulo. No caso em que houver a divisao de um polinomio de grau menor por

outro de grau maior, o valor do quociente sera zero e o resto sera o vetor do quociente. Alguns

exemplos sao mostrados a seguir.

>> m = [2 4]; m = 2x + 4

>> n = [1 1]; n = x + 1

>> p = [1 0 2 3 4]; p = x^4 + 2x^2 + 3x + 4

>> [q,r]=deconv(m,n)

83

Page 86: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

q =

2

r =

0 2

>> [q,r]=deconv(p,m)

q =

0.5000 −1.0000 3.0000 −4.5000r =

0 0 0 0 22

>> [q,r]=deconv(n,p)

q =

0

r =

1 1

6.2.2 Solucao de equacoes polinomiais

Raızes do Polinomio: As raızes sao os valores de x que, ao serem aplicados no polinomio,

geram o resultado igual a zero, existindo sempre em quantidade igual a ordem do mesmo. Para

determinar as raızes de um dado polinomio e utilizado o comando roots, cuja sintaxe e dada

por

raiz = roots(p)

em que raiz sera um vetor coluna contendo a raızes e p e o vetor linha contendo os coeficientes

do polinomio. Existe, tambem, o comando poly, a qual inverte o processo do comando roots,

ou seja, a partir do vetor coluna que contem as raızes, e possıvel determinar o vetor linha com

os coeficientes do polinomio. Na Tabela 6.2 sao destacados alguns dos principais comandos,

alem dos ja apresentados, utilizados para manipulacao de polinomios, conforme mostrado nos

exemplos a seguir.

Tabela 6.2: Comandos para manipulacao de expressoes polinomiais.

Comandos Descricao Sintaxe

collect Rearranja a expressao como um polinomio. collect(expressao)

compose Calcula a composta de duas ou mais funcoes. compose(f, g, h, ...)

finverse Calcula a inversa de uma funcao. finverse(f)

simplify Simplifica a expressao para uma forma geral. simplify(expressao)

factor Similar ao simplify, esta fatora a expressao. factor(expressao)

expand Expande a expressao em somas e produtos. expand(expressao)

>> p = [1 2.5 −20 7.5 9];

>> raiz = roots(p)

raiz =

84

Page 87: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

−6.00003.0000

1.0000

−0.5000>> m = [1 −2 1 0];

>> raiz1 = roots(m)

raiz1 =

0

1

1

>> coef = poly(raiz) % O resultado esperado é o polinômio p,

coef = % usando anteriormente.

1.0000 2.5000 −20.0000 7.5000 9.0000

>> coef1 = poly(raiz1)

coef1 =

1 −2 1 0

>> mat = [ 2 3 4; −1 0 2; 1 0 1];

>> pol_ca = poly(mat) % Neste caso, o comando poly irá calcular

pol_ca = % o polinômio característico da matriz.

1.0000 −3.0000 1.0000 −9.0000>> syms x; % Declarando a variável x

>> collect( x*x + x*(2*x*(x−9)) + x*x*x)

ans =

3*x^3 − 17*x^2

>> f = ans;

>> g = 2*x;

>> h = .5*x;

>> compose(f,g)

ans =

24*x^3 − 68*x^2 % função composta compose(f,g) = f(g(x))

>> compose(f,g,h) % compose(f,g,h) = f(g(h(x)))

ans =

3*x^3 − 17*x^2

>> g_1 = finverse(g) % calculando a inversa da função g(x)

g_1 =

x/2

>> simplify(compose(f,g,h)) % compose(f,g,h) = 3*x^3 − 17*x^2

ans =

x^2*(3*x − 17)

>> factor((x^4+2.5*x^3−20*x^2+7.5*x+9))ans =

((x − 1)*(2*x + 1)*(x − 3)*(x + 6))/2

>> expand(x*(x−1)*(1.5*(x−3)))ans =

(3*x^3)/2 − 6*x^2 + (9*x)/2

85

Page 88: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

6.3 Calculo Diferencial

O calculo diferencial e um ramo importante da matematica e essencial na engenharia. Vi-

sando suprir essas demandas, o MATLAB disponibiliza uma grande quantidade de funcoes para

a solucao de problemas matematicos, incluindo o calculo de limites, derivadas, integrais, entre

outros, atraves de varios metodos.

6.3.1 Limites

Para realizar o calculo de limites e necessario utilizar o comando limit que segue a sintaxe

dada por

limit(f(x),x,a)

em que f(x) e a funcao cujo limite que se deseja encontrar, x e a variavel e a e o numero para

o qual o x esta tendendo (x −→ a). A sintaxe pode varia de acordo com o limite que se deseja

calcular. Dado isso, sintaxe possui as seguintes variacoes:

limit (f(x),x,a)

em que calcula-se o limite da funcao f(x) com x tendendo ao valor a;

limit (f(x),x,a,'right')

em que calcula-se o limite da funcao f(x) com x tendendo ao valor a pela esquerda;

limit (f(x),x,a,'left')

em que calcula-se o limite da funcao f(x) com x tendendo ao valor a pela direita; e

limit (f(x))

em que calcula-se o limite da funcao f(x) com x tendendo ao valor zero.

1 >> syms x

2 >> limit('((x^4−2)*3)/(x^4−2)',x,1,'left')3 ans =

4 3

6.3.2 Derivadas

As derivadas descrevem a taxa de variacao instantanea de uma determinada funcao, sendo

calculadas no MATLAB atraves do comando diff. A sintaxe deste comando pode ser dada por

diff((f(x),x)

em que deriva-se a funcao f(x) com relacao a varavel x e por

diff( (f(x)),x,n)

a qual difere da anterior apenas por permitir a realizacao de derivadas de ordens superiores a

um. A seguir, e mostrado um exemplo utilizando a sintaxe apresentada anteriormente.

86

Page 89: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1 >> syms x

2 >> diff('((x^4 −2)*3)/(x^4−2)',x,2)3 ans =

4 (36*x^2)/(x^4 − 2) − (96*x^6)/(x^4 − 2)^2 − (12*x^2*(3*x^4 − 6))/(x^4 − 2)^2

5 + (32*x^6*(3*x^4 − 6))/(x^4 − 2)^3

6.3.3 Integrais

Para identificar a area sob uma curva aplica-se a integracao de funcoes, utilizando o comando

int. Para realizar a integracao indefinida de uma funcao f(x) com relacao a x, utiliza-se a sintaxe

dada por

int((f(x)),v)

e para realizar a integracao definida desta mesma funcao considerando a e b como os limites de

integracao inferior e superior, respectivamente, a sintaxe dada por

int((f(x)),x,a,b)

A seguir e apresentado um exemplo.

>> syms x

>> int(x^4,0,1)

ans =

1/5

Para o calculo de integrais duplas o MATLAB possui o comando dblquad, cuja sintaxe e

dada por

dblquad(f(x),xmin,xmax,ymin,ymax)

em que xmin, xmax, ymin e ymax sao os limites de integracao. A seguir e apresentado um

exemplo.

>> syms x y

>> dblquad('x+y',1,2,2,4)

>> ans =

9

Para o calculo de integrais triplas o MATLAB possui o comando triplequad, sendo a sintaxe

dada por

triplequad(f(x),xmin,xmax,ymin,ymax,zmin,zmax)

em que xmin, xmax, ymin, ymax, zmin e zmax sao os limites de integracao. Segue um exemplo.

1 triplequad('x+y*z',1,2 ,2,4,1,4)

2 ans =

3 54.0000

87

Page 90: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

6.4 Interpolacao e Ajustes de Curvas

Tendo como ponto de partida um determinado conjunto de dados, entende-se por interpo-

lacao o processo de aumentar este conjunto com base nos dados ja existentes, enquanto que

o ajuste de curvas visa determinar funcoes polinomios que seguem o comportamento destes.

Exemplos de comandos do MATLAB para realizar estas tarefas sao o interp1 e o polyfit, res-

pectivamente, os quais sao abordadas nesta subsecao.

6.4.1 Comando polyfit

O comando polyfit visa determinar os coeficientes de uma funcao polinomial, cuja ordem e

especificada pelo usuario, que mais se aproxima do comportamento de um determinado conjunto

de dados, utilizando para isso o metodo dos mınimos quadrados, sendo que esta fora do escopo

desta apostila a explicacao este metodo. A sintaxe desse comando e dada por:

polyfit(x,y,g)

em que x e y sao vetores que representam os dados e g especifica o grau do polinomio. Com

isso, a fim de exemplificacao, e apresentado o codigo a seguir, cujas mensagens exibidas nas

Command Window durante a sua execucao sao mostradas na sequencia.

1 x = 3:6;

2 y = [15 2 9 5];

3 for i=1: length(x)−14 fprintf('Grau %d',i);

5 coef = polyfit(x,y,i);

6 end

% Command Window

Grau 1

coef =

−2.3000 18.1

Grau 2

coef =

2.2500 −22.5500 60.8500

Grau 3

coef =

−5.1667 72.0000 −325.8333 484.0000

A fim de exemplificar o fato de que funcoes polinomiais de ordem maior conseguem se

ajustar melhor a um determinado conjunto de dados, seguem abaixo exemplos de aproximacoes

polinomiais de diferentes ordens, utilizando o comando polyval, cujos resultados sao exibidos na

Figura 6.1.

1 x = 3:6;

2 y = [15 2 9 5];

3 m = linspace(min(x), max(x), 100);

4 for i=1: length(x)−1

88

Page 91: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5 coef = polyfit(x,y,i);

6 curva = polyval(coef,m);

7 subplot(1,3,i)

8 hold on

9 plot(x,y,'ro');

10 plot(m,curva);

11 title(sprintf('Curva de Grau %d',i));

12 hold off

13 axis([2 7 0 16])

14 end

Figura 6.1: Exemplo de utilizacao do comando polyfit.

6.4.2 Comando interp1

O comando interp1 e utilizado para interpolar novos pontos a partir dos dados conhecidos

usando o metodo ‘linear’, ‘nearest’, ‘spline’ ou ‘cubic’. Sua sintaxe e dada por

y2 = interp1(x1,y1,x2,'met');

sendo x1 e y1 as coordenadas (x, y) dos pontos conhecidos, a partir das quais sao geradas

as novas coordenadas x2 (definidas pelo usuario) e y2 (calculadas pelo comando interp1 ). A

seguir sao exibidos exemplos utilizando os quatro metodos de interpolacao, sendo que o sımbolo

“ ∗ ” representa os dados conhecidos e o sımbolo “o” os novos gerados pela interpolacao.

1 x = [10 13 17 24 31];

2 y = [2 26 38 56 88];

89

Page 92: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

3 xi = 10:31;

4 intlinear = interp1(x,y,xi,'linear');

5 intnearest = interp1(x,y,xi,'nearest');

6 intcubic = interp1(x,y,xi,'cubic');

7 intspline = interp1(x,y,xi,'spline');

8 subplot(2,2,1)

9 hold on

10 plot(x,y,'*r');

11 plot(xi,intlinear,'ok');

12 title('Dados Conhecidos e Método Linear');

13 subplot(2,2,2)

14 hold on

15 plot(x,y,'*r');

16 plot(xi,intnearest,'ok');

17 title('Dados Conhecidos e Método Nearest');

18 subplot(2,2,3)

19 hold on

20 plot(x,y,'*r');

21 plot(xi,intcubic,'ok');

22 title('Dados Conhecidos e Método Cúbico');

23 subplot(2,2,4)

24 hold on

25 plot(x,y,'*r');

26 plot(xi,intspline,'ok');

27 title('Dados Conhecidos e Método Spline');

Observacao: Alem do comando interp1, existem os interp2, interp3 e interpn, cujas di-

ferencas com relacao ao interp1 sao considerar funcoes de multiplas variaveis, por exemplo,

interp2 considera funcoes de duas variaveis, interp3 de tres variaveis e interpn de n variaveis.

O codigo a seguir mostra um exemplo da utilizacao do comando interp2, cujo resultado e exibido

na Figura 6.2.

1 x=[0:.25:1]'*pi;

2 z= sin(x)*cos(x');

3 xn=[0:.05:1]'*pi;

4 [xn,yn] = meshgrid(xn,xn)

5 zn=interp2(x,x,z,xn,yn);

6 subplot(2,1,1)

7 surf(x,x,z)

8 title('Grade Grossa')

9 subplot(2,1,2)

10 surf(xn,yn,zn)

11 title('Grade Fina(Valores interpolados)')

90

Page 93: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 6.2: Exemplo utilizacao do comando interp2.

91

Page 94: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

6.5 Exercıcios

Os exercıcios propostos a seguir tem como objetivo consolidar o conhecimento adquirido

durante o estudo dessa secao.

1. Com base nos comandos aplicadas a polinomios vistos nesta secao e definindo

p1 = [1, 4,−5,−2] e p2 = [24], determine:

(a) As raızes do polinomio p1;

(b) O valor da funcao p1, para os seguintes valores: p1(1); p1(0); p1(3);

(c) O produto: p1 ∗ p2;

(d) A divisao: p1/p2;

2. Realize o calculo dos seguintes limites utilizando o comando limit.

(a) limx→1

2x3 + 2

x5 + 1

(b) limx→1

x9 − 7

x

3. Determine as derivadas das seguintes funcoes utilizando o comando diff.

(a) f(x) = cos(x) sen(x)

(b) f(x) =(x2 − 5)2

4x+ 3

4. Realize o calculo das integrais utilizando o comando int para integrais simples, dblquand

para integrais duplas, e triplequad para integrais triplas.

(a)∫ 100

0sen(x)dx

(b)∫∫

(x+ y)2dxdy

(c)∫∫∫

(x+ y + z + 1)2dxdydz

5. Realizar aproximacoes polinomiais de ordem 3, utilizando o comando polyfit, para os

seguintes conjuntos de dados. Em cada caso deve ser gerada uma figura exibindo os

dados originais juntamente com o grafico da funcao polinomial aproximada.

(a) x = [2 : 6] e y = [15, 17, 22, 21, 13]

(b) x = [1, 5, 11] e y = [783, 405, 925]

92

Page 95: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

7 GUI - Graphical User Interface

Em computacao, uma GUI (Graphical User Interface) e uma interface grafica criada para

permitir que um programa interaja com o usuario, tornando o programa mais atraente e aces-

sıvel aos utilizadores. A construcao de uma GUI e realizada a partir de controles intuitivos

tais como botoes, caixas de mensagem, barras de rolagem, menus. A construcao de interfaces

graficas no MATLAB e realizada atraves da ferramenta chamada GUIDE.

Essa secao apresenta a inicializacao, utilizacao dos componentes basicos e um exemplo de

construcao de uma GUI passo a passo. Com os conhecimentos dessa secao e possıvel criar GUIs

funcionais para seus programas como mostra o exemplo na Figura 7.1.

Figura 7.1: Exemplo de GUI.

7.1 Inicializacao do GUI

Para inicializar a ferramenta GUIDE e necessario digitar guide na Command Window do

MATLAB, selecionar a opcao Blank GUI(Default) e, entao, clicar em OK, conforme visto na

Figura 7.2. A Figura 7.3 apresenta o ambiente da ferramenta GUIDE do MATLAB, em que sao

realizadas todas as alteracoes possıveis na interface. Essa interface e salva em duas parte, sendo

a primeira um arquivo .fig que preserva as informacoes de formas e dimensoes dos controles, e

o segundo um arquivo .m com o codigo que e executado quando o usuario interagir com cada

um dos controles.

93

Page 96: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 7.2: Inicializacao da ferramenta GUIDE.

Figura 7.3: Ambiente do GUIDE.

94

Page 97: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

7.2 Componentes basicos do GUIDE

Para construcao de qualquer tipo de interface e necessario o conhecimento dos componentes

basicos. Desse modo, a Figura 7.4 mostra esses componentes, os quais localizam-se no canto

esquerdo do Ambiente GUIDE, e a Tabela 7.1 explica o funcionamento de cada um deles.

Figura 7.4: Componentes basicos para a construcao de uma GUI.

95

Page 98: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Tabela 7.1: Componentes Basicos do Ambiente GUIDE.

Nome Icone Descricao

Push Button Cria um botao em que e possıvel configurar determinadas funcoes

para ele.

Radio Button Utilizado para criar uma selecao de opcao na GUI.

Edit Text Recebe textos inseridos pelo usuario do programa.

Pop-up Menu Disponibiliza um menu de opcoes para o usuario ao ser clicado.

Toggle Buttons Semelhante ao Push Button quando ativado, porem, nao perma-

nece pressionado.

Axes Possibilita a criacao de graficos.

Slider Ferramenta utilizada para insercao de barra de rolagem.

Check Box Semelhante ao Radio Button, porem nesse o usuario escolhe quan-

tas opcoes desejar.

Static Text Cria um campo de texto da qual o usuario nao pode realizar

modificacao no texto.

Listbox Exibe uma lista de opcoes que usuario pode escolher.

Table Possibilita a criacao de tabelas.

Panel Utilizado para organizar os componentes atraves de agrupamen-

tos deles.

Button Group Semelhante ao Panel, porem esse agrupa apenas Radio Button e

Toggle Buton.

ActiveX Control Exibe uma caixa de dialogo no qual e possıvel selecionar qualquer

controle ActiveX registrado no sistema.

7.3 Construcao de uma GUI passo a passo

Esta subsecao apresenta a criacao de uma GUI simples passa a passo. A GUI que esta

ilustrada na Figura 7.5 e o modelo de construcao dessa subsecao. Atraves desta GUI e possıvel

exibir as funcoes seno e cosseno, permitindo alteracoes em seus parametros e no estilo dos

graficos. A construcao desta GUI esta separada em tres etapas:

� 1ª etapa - inicializacao e insercao dos componentes;

� 2ª etapa - configuracao das propriedades dos componentes;

� 3ª etapa - implementacao das funcionalidades dos componentes da GUI.

A primeira etapa esta organizada nos seguintes passos:

96

Page 99: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1. Repetir o processo de inicializacao mostrado na Subsecao 7.1.

2. Inserir os componentes necessarios para o programa, seguindo o modelo visto na Figura

7.5. Para tal, basta selecionar e arrastar cada componente para a sua posicao, cujo

resultado de ser semelhante ao exibido na Figura 7.6.

Figura 7.5: GUI exemplo para construcao passo a passo.

97

Page 100: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 7.6: GUI apos inserir os componentes.

A segunda etapa da construcao da GUI consiste em configurar as propriedades dos compo-

nentes. Para isso, basta realizar um duplo clique em qualquer componente para abrir a janela

de propriedades do mesmo, conforme ilustrado na Figura 7.7, e alterar a propriedade desejada.

As propriedades a serem configuradas nessa etapa sao as Tags e Strings dos componentes, ou

seja, nome dado ao componente e o texto exibido no modo de operacao, respectivamente. Esta

etapa tem por finalidade a organizacao dos componentes, visando facilitar a programacao de

suas funcionalidades, uma vez que os arquivos .m das GUIs, normalmente, sao extensos. Os

passos da segunda etapa de construcao da GUI sao:

1. Alterar as configuracoes String e Tag do Push Button para Limpar Grafico e

pushbutton limpar, respectivamente.

2. Alterar a Tag dos componentes Pop-up Menus para popupmenu cor e popupmenu linha.

3. Adicionar as opcoes nos Pop-up Menus. (para isso, basta clicar em , na propriedade

String do mesmo, abrindo a janela ilustrada na Figura 7.8 e listando as opcoes desejada

nesta janela, conforme mostrado nas Figuras 7.9 e 7.10.)

4. Alterar as Strings dos Radio Buttons para Seno e Cosseno.

98

Page 101: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

5. Alterar as Tags dos Radio Buttons para radiobutton seno e radiobutton cosseno.

6. Difinir os limites do eixo x do grafico alterando as Strings dos Edit Texts para os valores

desejados.

7. Alterar a propriedade String dos componentes Static Texts de acordo com a organizacao

na GUI.

Figura 7.7: Janela Inspetora dos componentes da GUI.

99

Page 102: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 7.8: Janela String do Pop-up Menu da GUI.

Figura 7.9: String do Pop-up Menu referente a cor da linha do grafico da GUI.

Figura 7.10: String do Pop-up Menu referente ao estilo de linha do grafico da GUI.

100

Page 103: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Logo apos a conclusao da segunda etapa da construcao da GUI e realizacao dos passos,

mostrados seguir, para centralizacao dos componentes, tem-se o resultado mostrado na Figura

7.11.

1. Selecionar os componentes que deseja-se alinhar.

2. Clicar em , na barra de ferramenta, para abrir a Janela de Alinhamento dos compo-

nentes como mostra a Figura 7.12.

3. Selecionar as opcoes de alinhamento desejado e clicar em Aplicar nesta Janela de Alinha-

mento dos componentes.

Figura 7.11: GUI apos a alteracao das Tags, Strings e o alinhamento dos componentes.

101

Page 104: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 7.12: Janela de Alinhamento dos componentes da GUI.

A terceira etapa da construcao da GUI consiste em implementar a logica dos componentes

(funcionalidades), a fim de determinar o comportamento da GUI em modo de operacao. Por

exemplo, implementar a funcao chamada de retorno dos componentes, em que essa funcao e

ativada por uma entrada de dados pelo teclado ou ativacao do mouse pelo usuario. No arquivo

.m da GUI, a funcao chamada de retorno de um componente recebe o nome da sua Tag mais

os caracteres Callback, por exemplo, o botao limpar recebe o nome limpar Callback.

Como ja especificado anteriormente, o arquivo .m das GUIs sao normalmente extensos,

o que torna trabalhoso localizar algumas funcoes no codigo. Porem, o MATLAB possibilita

realizar essa tarefa de maneira mais facil. Para isto, basta clicar em VAI PARA na secao NA-

VEGACAO da barra de ferramentas do EDITOR e selecionar a funcao desejada, por exemplo,

popupmenu cor Callback. Assim, o cursor e direcionado a esta funcao como mostra o codigo

a seguir. Este codigo apresenta a funcao que descreve a chamada de retorno do componente

Pop-up Menu, a qual e e ativada apos o usuario selecionar uma opcao no mesmo.

1 % −−− Executes on selection change in menu.

2 function popupmenu_cor_Callback(hObject, eventdata, handles)

3 % hObject handle to menu (see GCBO)

4 % eventdata reserved − to be defined in a future version of MATLAB

5 % handles structure with handles and user data (see GUIDATA)

6

7 % Hints: contents = cellstr(get(hObject,'String')) returns menu contents ...

as cell array

8 % contents{get(hObject,'Value')} returns selected item from menu

9

10

11 % −−− Executes during object creation, after setting all properties.

102

Page 105: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Antes de realizar qualquer implementacao dos componentes da GUI e necessario entender

os comandos get, set e a estrutura handles que estao explicadas a seguir.

Comando get : E utilizado para se obter dados de uma propriedade de um componente.

Exemplos disso sao a obtencao do texto de uma Edit Text ou verificacao de selecao de um Radio

Button atraves da propriedade String e Value, respectivamente.

Funcao set : E utilizada para configurar uma propriedade de um componente, por exemplo,

gravar texto no componente Static Text atraves da propriedade String.

Estrutura handles: E utilizada para armazenar dados de uma funcao para posterior

utilizacao em outras. Para isso, basta armazenar os dados em uma variavel da tipo handles,

por exemplo, handles.opcao e gravar a estrutura com uma chamada guidata como mostra a

sintaxe a seguir.

handles.opcao = 1;

guidata(hObject,handles); % Grava na estrutura handles as variáveis do ...

tipo handles.

Sendo assim, a terceira etapa da construcao da GUI inicia com a implementacao da funcao

OpeningFcn. Essa funcao e interpretada pelo MATLAB imediatamente antes que a GUI esteja

visıvel para o usuario. Com isso, os seguintes passos realizam a implementacao da funcao

Exemplo GUI OpeningFcn, resultando no codigo visto na sequencia.

1. Definir os maximos, mınimos e valores iniciais para os Sliders.

2. Alterar o Static Text abaixo do componente Axe de acordo com os valores dos Sliders.

3. Definir o vetor x da funcao seno de acordo com os limites pre-definidos.

4. Definir o vetor y da funcao seno de acordo com os valores do vetor x e dos componentes

Sliders.

5. Definir o vetor do estilo de linha e cor do grafico a ser plotado.

6. Plotar o grafico no componente Axe.

7. Gravar na estrutura handles os vetores alterados.

1 % −−− Executes just before Exemplo_GUI is made visible.

2 function Exemplo_GUI_OpeningFcn(hObject, eventdata, handles, varargin)

3 % This function has no output args, see OutputFcn.

4 % hObject handle to figure

5 % eventdata reserved − to be defined in a future version of MATLAB

6 % handles structure with handles and user data (see GUIDATA)

7 % varargin command line arguments to Exemplo_GUI (see VARARGIN)

8 % Choose default command line output for Exemplo_GUI

9 handles.output = hObject;

10

11 %%%%%PASSO 1%%%%%

12 set(handles.min_A, 'String', '−1') % Altera Edit Text Min do Slider A.

103

Page 106: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

13 set(handles.max_A, 'String', '1') % Altera Edit Text Max do Slider A.

14 set(handles.slider_A,'Min', −1); % Define o valor mínimo do Slider A.

15 set(handles.slider_A,'Max', 1); % Define o valor máximo do Slider A.

16 set(handles.slider_A,'Value', 1); % Define o valor do Slider A.

17

18 set(handles.min_B, 'String', '−10') % Altera Edit Text Min do Slider B.

19 set(handles.max_B, 'String', '10') % Altera Edit Text Max do Slider B.

20 set(handles.slider_B,'Min', −10); % Define o valor mínimo do Slider B.

21 set(handles.slider_B,'Max', 10); % Define o valor máximo do Slider B.

22 set(handles.slider_B,'Value', 10); % Define o valor do Slider B.

23

24 set(handles.min_C, 'String', '−20') % Altera Edit Text Min do Slider C.

25 set(handles.max_C, 'String', '20') % Altera Edit Text Max do Slider C.

26 set(handles.slider_C,'Min', −20); % Define o valor mínimo do Slider C.

27 set(handles.slider_C,'Max', 20); % Define o valor máximo do Slider C.

28 set(handles.slider_C,'Value', 20); % Define o valor do Slider C.

29

30 set(handles.min_D, 'String', '−1') % Altera Edit Text Min do Slider D.

31 set(handles.max_D, 'String', '1') % Altera Edit Text Max do Slider D.

32 set(handles.slider_D,'Min', −1); % Define o valor mínimo do Slider D.

33 set(handles.slider_D,'Max', 1); % Define o valor máximo do Slider D.

34 set(handles.slider_D,'Value', 1); % Define o valor do Slider D.

35 %%%%PASSO 2%%%%%

36 handles.funcao = strcat('Função: ', num2str(get(handles.slider_A, ...

'Value')), '*sin(', num2str(get(handles.slider_B, 'Value')), '*x + ', ...

num2str(get(handles.slider_C, 'Value')), ') + ', ...

num2str(get(handles.slider_D, 'Value')));

37 set(handles.textfuncao, 'String', handles.funcao);

38 %%%%%PASSO 3%%%%%

39 handles.x = str2num(get(handles.minX, 'String')) : 0.01 : ...

str2num(get(handles.maxX, 'String'));

40 %%%%%PASSO 4%%%%%

41 handles.y = get(handles.slider_A, 'Value')*sind(get(handles.slider_B, ...

'Value').*handles.x + get(handles.slider_C, 'Value')) + ...

get(handles.slider_D, 'Value');

42

43 set(handles.textmodelofuncao, 'String', 'Modelo Função: A*sin(B*x + C) + ...

D'); % Altera o Static Text acima do Axe.

44 %%%%%PASSO 5%%%%%

45 handles.cor = 'b';

46 handles.linha = '−';47 handles.estilo = strcat(handles.cor,handles.linha);

48 %%%%%PASSO 6%%%%%

49 plot( handles.x, handles.y, handles.estilo);

50 xlim([str2num(get(handles.minX, 'String')) str2num(get(handles.maxX, ...

'String'))]); % Limites do gráfico.

51

52 % Update handles structure

53 %%%%%PASSO 7%%%%%%

104

Page 107: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

54 guidata(hObject, handles);

Observacao: O comando strcat e utilizado para agrupar, em um unico vetor, os vetores

de caracteres e o comando str2num e utilizado para converter o vetor de String para valor

numerico.

Apos a implementacao da funcao Exemplo GUI OpeningFcn, deve-se seguir os seguintes

passos para a implementacao da funcao radiobutton seno Callback, cujo codigo resultante e

exibido na sequencia. A funcao radiobutton cosseno Callback segue o mesmos passos, porem

com alteracao de seno para cosseno na funcao a ser plotada no componente Axe.

1. Alterar os componentes Static Text acima e abaixo do componente Axe.

2. Alterar o vetor y com a funcao Seno.

3. Plotar o grafico no componente Axe.

4. Gravar na estrutura handles os vetores alterados.

1 % −−− Executes on button press in radiobutton_seno.

2 function radiobutton_seno_Callback(hObject, eventdata, handles)

3 % hObject handle to radiobutton_seno (see GCBO)

4 % eventdata reserved − to be defined in a future version of MATLAB

5 % handles structure with handles and user data (see GUIDATA)

6

7 % Hint: get(hObject,'Value') returns toggle state of radiobutton_seno

8

9 cla reset; % Limpa o Gráfico plotado do componente Axe.

10 %%%%%PASSO 1%%%%%

11 handles.funcao = strcat('Função: ', num2str(get(handles.slider_A, ...

'Value')), '*sin(', num2str(get(handles.slider_B, 'Value')), '*x + ', ...

num2str(get(handles.slider_C, 'Value')), ') + ', ...

num2str(get(handles.slider_D, 'Value')));

12 set(handles.textfuncao, 'String', handles.funcao);

13 set(handles.textmodelofuncao, 'String', 'Modelo Função: A*sin(B*x + C) + ...

D'); % Altera o Static Text acima do Axe.

14 %%%%%PASSO 2%%%%%

15 handles.y = get(handles.slider_A, 'Value')*sind(get(handles.slider_B, ...

'Value').*handles.x + get(handles.slider_C, 'Value')) + ...

get(handles.slider_D, 'Value');

16 %%%%%PASSO 3%%%%%

17 plot(handles.x,handles.y,handles.estilo);

18 xlim([str2num(get(handles.minX, 'String')) str2num(get(handles.maxX, ...

'String'))]);

19 %%%%%PASSO 4%%%%%

20 guidata(hObject, handles);

Para a implementacao da funcao popupmenu cor Callback tem-se os passos a seguir com

o codigo resultante visto na sequencia. Devido a semelhanca, a implementacao da funcao

popupmenu linha Callback segue a mesma logica.

105

Page 108: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

1. Obter a opcao selecionada pelo usuario atraves das propriedades Value e String do com-

ponente Pop-Menu.

2. Plotar o grafico com as caracterısticas alteradas.

3. Gravar na estrutura handles os vetores alterados.

1 % −−− Executes on selection change in popupmenu_cor.

2 function popupmenu_cor_Callback(hObject, eventdata, handles)

3 % hObject handle to popupmenu_cor (see GCBO)

4 % eventdata reserved − to be defined in a future version of MATLAB

5 % handles structure with handles and user data (see GUIDATA)

6

7 % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu_cor ...

contents as cell array

8 % contents{get(hObject,'Value')} returns selected item from ...

popupmenu_cor

9 %%%%%PASSO 1%%%%%%

10 cla reset; % Limpa o Gráfico plotado do componente Axe.

11 handles.cor_escrito = get(handles.popupmenu_cor, 'String'); % Obtém o ...

vetor das possíveis opções.

12 handles.cor_valor = get(handles.popupmenu_cor,'Value'); % Obtém qual ...

elemento do vetor foi selecionado.

13 switch handles.cor_escrito{handles.cor_valor} % Comparação ...

para saber qual opção foi selecionada

14 case 'Azul'

15 handles.cor = 'b';

16 case 'Vermelho'

17 handles.cor = 'r';

18 case 'Verde'

19 handles.cor = 'g';

20 case 'Amarelo'

21 handles.cor = 'y';

22 end

23 handles.estilo = strcat(handles.cor,handles.linha);

24 %%%%%PASSO 2%%%%%

25 plot(handles.x,handles.y,handles.estilo);

26 xlim([str2num(get(handles.minX, 'String')) str2num(get(handles.maxX, ...

'String'))]);

27

28 %%%%%PASSO 3%%%%%

29 guidata(hObject, handles);

Os componentes Sliders da GUI sao utilizados para alterar os parametros da funcao plotada

no componente Axe. A implementacao desses componentes sao semelhantes e seguem os passos

a seguir, resultando no codigo visto na sequencia.

1. Identificar o Radio Button selecionado.

106

Page 109: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

2. Alterar o vetor y de acordo com o parametro alterado.

3. Alterar o componente Static Text abaixo do componente Axe.

4. Plotar o grafico com os parametros alterados.

5. Gravar na estrutura handles os vetores alterados.

1 % −−− Executes on slider movement.

2 function slider_A_Callback(hObject, eventdata, handles)

3 % hObject handle to slider_A (see GCBO)

4 % eventdata reserved − to be defined in a future version of MATLAB

5 % handles structure with handles and user data (see GUIDATA)

6

7 % Hints: get(hObject,'Value') returns position of slider

8 % get(hObject,'Min') and get(hObject,'Max') to determine range of ...

slider

9 cla reset;[

10 %%%%%%PASSO 1%%%%%

11 if get(handles.radiobutton_seno, 'Value') == 1

12 %%%%%%PASSO 2%%%%%

13 handles.y = get(handles.slider_A, 'Value')*sind(get(handles.slider_B, ...

'Value').*handles.x + get(handles.slider_C, 'Value')) + ...

get(handles.slider_D, 'Value');

14 %%%%%%PASSO 3%%%%%

15 handles.funcao = strcat('Função: ', num2str(get(handles.slider_A, ...

'Value')), '*sin(', num2str(get(handles.slider_B, 'Value')), '*x + ', ...

num2str(get(handles.slider_C, 'Value')), ') + ', ...

num2str(get(handles.slider_D, 'Value')));

16 set(handles.textfuncao, 'String', handles.funcao);

17 %%%%%FIM PASSO 3%%%%%%%

18 else

19 handles.funcao = strcat('Função: ', num2str(get(handles.slider_A, ...

'Value')), '*cos(', num2str(get(handles.slider_B, 'Value')), '*x + ', ...

num2str(get(handles.slider_C, 'Value')), ') + ', ...

num2str(get(handles.slider_D, 'Value')));

20 set(handles.textfuncao, 'String', handles.funcao);

21 handles.y = get(handles.slider_A, 'Value')*cosd(get(handles.slider_B, ...

'Value').*handles.x + get(handles.slider_C, 'Value')) + ...

get(handles.slider_D, 'Value');

22 end

23 %%%%%%PASSO 4%%%%%

24 plot(handles.x,handles.y,handles.estilo);

25 xlim([str2num(get(handles.minX, 'String')) str2num(get(handles.maxX, ...

'String'))]);

26 %%%%%%PASSO 5%%%%%

27 guidata(hObject, handles);

Por fim, para o componente Button, responsavel por limpar o grafico, e implementado

somente o comando cla reset na funcao Callback do mesmo. Ja as implementacoes das funcoes

107

Page 110: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Callbacks dos componentes Edit texts, responsaveis pelo limite dos componentes Sliders, ocorre

atraves da alteracao da propriedade Max ou Min do Slider correspondente como mostra o

codigo a seguir.

set(handles.slider_A, 'Min', str2num(get(handles.min_A, 'String')));

108

Page 111: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

7.4 Exercıcios

Os exercıcios propostos a seguir tem como objetivo consolidar o conhecimento adquirido

durante o estudo dessa Secao.

1. Desenvolver uma interface grafica que ajude o usuario analisar os graficos de tensao e

corrente de carga do circuito RC mostrado na Figura 7.13. As formulas a serem utili-

zadas sao V (t) = Vo(1 − etτ ) e I(t) = V (t)

Rpara tensao e corrente, respectivamente. Os

graficos devem ser atualizados sempre que o usuario realizar alguma alteracao dos dados

caracterısticos do circuito.

Figura 7.13: Interface grafica do Exercıcio 1 da Secao 7.

2. Criar uma interface grafica na qual o usuario seja capaz de realizar a conversao de tem-

peraturas das escalas Celsius para Fahrenheit e Kevin, de acordo com a Figura 7.14. Os

valores devem ser atualizados sempre que houver alteracao nos dados de entrada.

109

Page 112: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Figura 7.14: Interface grafica do Exercıcio 2 da Secao 7.

110

Page 113: Introdu˘c~ao ao MATLABr - Sites da Unipampa · O MATLAB (MATrix LABoratory - Laboratorio de Matrizes), desenvolvido na d ecada de 70 para c alculos matriciais e otimizado ao longo

Introducao ao MATLABr

Referencias

[1] ATTAWAY, S. MATLAB: A Practical Introduction to Programming and Problem Solving.

2. ed. [S.l.]: Elsevier, 2012.

[2] CHAPMAN, S. J. MATLAB: Programming for Engineers. 5. ed. [S.l.]: Cengage learning,

2016.

[3] HANSELMAN, D.; LITTLEFIELD, B. Mastering MATLAB. 1. ed. [S.l.]: Pearson Educa-

tion, 2012.

[4] CHAPMAN, S. J. Programacao em MATLAB para Engenheiros. 2. ed. [S.l.]: Pioneira

Thomson Leaening, 2003. Traducao tecnica por Flavio S. C. da Silva.

[5] GILAT, A. MATLAB com Aplicacoes em Engenharias. 4. ed. [S.l.]: Bookman, 2012. Tra-

ducao tecnica por Rafael S. Alıpio.

[6] HUNT, B. R.; LIPSMAN, R. L.; ROSENBERG, J. M. A Guide to MATLAB for Beginners

and Experienced Users. 1. ed. [S.l.]: Cambridge University Press, 2001.

[7] BRAVO, C. M.; ALBUQUERQUE, . L. Introducao ao MATLAB. [S.l.]: Universidade Es-

tadual de Campinas.

[8] JUNIOR, D. H. et al. Apostila de MATLAB. Universidade Federal do Ceara: Programa de

Educacao Tutorial, 2014.

[9] BEKER, A. J. et al. Nocoes Basicas de Programacao em MATLAB. 1. ed. [S.l.]: Universi-

dade Federal de Santa Maria, 2010.

111