Universidade Federal do PampaCampus Alegrete
Cursos de Engenharia de Telecomunicacoes, Eletrica e Mecanica.
Introducao ao MATLABr
Alegrete - RS
31 de outubro de 2018
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introducao ao MATLABr
Figura 3.8: Inclusao de um breakpoint.
Figura 3.9: Inclusao de um breakpoint.
41
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
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
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
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
Introducao ao MATLABr
Figura 3.14: Command Window do exemplo com os comandos fopen e fscanf.
46
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introducao ao MATLABr
Figura 6.2: Exemplo utilizacao do comando interp2.
91
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
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
Introducao ao MATLABr
Figura 7.2: Inicializacao da ferramenta GUIDE.
Figura 7.3: Ambiente do GUIDE.
94
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introducao ao MATLABr
Figura 7.14: Interface grafica do Exercıcio 2 da Secao 7.
110
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