Você está na página 1de 148

Fundamentos do MATLAB para Engenheiros

Fernando Wesley Recife/PE - 2012

FUNDAMENTOS DO MATLAB PARA ENGENHEIROS

UNIVERSIDADE DE PERNAMBUCO POLI JNIOR CONSULTORIA

Fundamentos do MATLAB para Engenheiros

Phillipi Rodrigo de Oliveira Souza (in memorian) Fernando Wesley Cavalcanti de Arajo
Autores

Fernando Wesley Cavalcanti de Arajo


Reviso

Gustavo de Almeida Castro Phillipi Rodrigo de Oliveira Souza (in memorian) Fernando Wesley Cavalcanti de Arajo
Edio, projeto grfico e produo

Gustavo de Almeida Castro Priscila Carvalho dos Santos Phillipi Rodrigo de Oliveira Souza (in memorian) Fernando Wesley Cavalcanti de Arajo
Arte digital

Fernando Wesley Cavalcanti de Arajo


Capa

Fernando Wesley Cavalcanti de Arajo


Reviso gramatical Este documento parte integrante do material didtico do curso de extenso em Fundamentos do MATLAB para Engenheiros e tem por objetivo descrever os princpios fundamentais da programao em ambiente MATLAB direcionado s cincias exatas e engenharias. permitida a reproduo, parcial ou total deste material, para fins didticos, desde que citada a fonte.

CONTEDO
Captulo 1 Introduo ao MATLAB 1.1 Introduo 1.2 Histria do MATLAB 1.3 Aprendendo a utilizar o MATLAB 1.4 Ambiente de trabalho 1.4.1 Janela Command Window 1.4.2 Janela Workspace 1.4.3 Janelas Commandy History e Current Directory 1.5 Declarao de Variveis 1.6 Erros 1.7 Trabalhando com escalares 1.8 Formatos de Exibio 1.9 Funes Matemticas Elementares 1.10 Help 1.11 Editor de Texto Exerccios de Fixao Captulo 2 Operaes com Matrizes 2.1 Operaes com matrizes 2.2 Indexao de matrizes 2.3 Anlise de vetores 2.4 Nmeros de matrizes complexos Exerccio Aplicado Exerccio de Fixao Captulo 3 Fundamentos da programao no MATLAB 3.1 Expresses Booleanas 3.2 Estrutura if-elseif-else Exerccio Aplicado 1 3.3 Estrutura switch-case-otherwise Exerccio Aplicado 2 3.4 Estrutura for Exerccio Aplicado 3 3.5 Estrutura while Exerccio Aplicado 4 Exerccio de fixao 5 6 7 7 9 11 13 14 14 17 18 20 20 24 27 29 31 36 38 39 40 41 43 44 46 47 48 59 51 1 1 1 2 3

Captulo 4 Funes Exerccio Aplicado 4.2 Funes de importao e exportao 4.3 Funes de tratamento Exerccio de fixao Captulo 5 Polinmio 5.1 Polinmios e suas razes 5.1.1 Razes de um polinmio 5.1.2 Encontrar polinmio atravs de razes 5.2 Multiplicao e diviso de polinmios 5.2.1 Multiplicao polinomial 5.2.2 Diviso polinomial 5.3 Simplificao de polinmios em fraes parciais 5.4 Avaliao de valores de polinmios 5.5 Integrao e derivao de polinmios 5.5.1 Derivao de polinmios 5.5.2 Integrao de polinmios Exerccios de fixao Captulo 6 Grficos 6.1 Grficos em duas dimenses 6.1.1 Grficos simples em duas dimenses 6.1.2 Mltiplos grficos em duas dimenses 6.1.3 Mltiplos grficos em uma janela 6.1.4 Utilizao do comando subplot 6.1.5 Grficos especializados 6.1.5.1 Barras 6.1.5.2 Grfico Pizza 6.1.5.3 rea 6.2 Grficos em trs dimenses 6.2.1 Grficos simples em trs dimenses 6.2.2 Comando Mesh, Contour e Surf Exerccios de fixao Captulo 7 MATLAB para anlises numricas 7.1 Diferenciao 7.1.1 Derivadas simblicas Diff 7.1.2 Funo jacobian 7.2 Limites funo limit 7.3 Integrao funo int 98 98 100 101 104 89 92 85 87 88 78 81 82 84 85 74 74 68 69 66 67

53 56 59 62 64 66 66

68

71 72 74

76 78 78

89

95 98

Exerccio Aplicado Captulo 8 Simulink 8.1 Introduo 8.2 Inicializao do Simulink 8.2.1 Blocos principais 8.2.1.1 Bloco Sum 8.2.1.2 Bloco Gain 8.2.1.3 Bloco Constant 8.2.1.4 Bloco Integrator 8.2.1.5 Bloco Derivative 8.2.1.6 Bloco Product 8.2.1.7 Bloco Math Function 8.2.1.8 Bloco Scope 8.2.2 Outros blocos 8.2.2.1 Bloco Sin 8.2.2.2 Bloco Step 8.2.2.3 Bloco Ramp 8.2.2.4 Bloco Random 8.3 Exemplos Exerccios de fixao Captulo 9 Guia de Interfaces 9.1 Criao da Interface 9.2 Escolha, Locao e Dimensionamento de Objeto 9.3 Maximizao e Minimizao 9.4 O Boto Executar 9.5 Barra de Menus Exerccios de fixao 117 118 118 118 115 115 115 116 116 116 116 117 117 114

107
112 112 112

119 124 125 126 128 134 135 139 141

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Captulo 1 Introduo ao MATLAB


1.1 - Introduo O MATLAB (Matrix Laboratory) um software para computao numrica, que pode ser utilizado em um ambiente de programao fcil, no qual os problemas e solues so expressos de forma simples. Seus elementos bsicos so matrizes que no requerem dimensionamento. Ele permite inserir e resolver problemas matemticos de forma muito mais rpida e eficiente que atravs de outras linguagens como C++, Basic ou Pascal. O MATLAB pode ser utilizado para uma ampla faixa de aplicaes, incluindo processamento de sinais e processamento de imagem, comunicaes, controle de processos, medies e testes, anlise e modelagem financeira, biologia computacional, biogentica, entre outros. O MATLAB ainda possui uma famlia de aplicativos especficos (toolboxes), que so colees de funes usadas para resolver determinados problemas tais como: otimizao, manipulao algbrica, redes neurais, processamento de sinais, simulao de sistemas dinmicos, entre outros. Provavelmente, a caracterstica mais importante do MATLAB a sua extensibilidade, que permite que milhares de engenheiros, matemticos, funcionrios das mais diversas indstrias, o utilizem no dia a dia como uma linguagem tcnica de computao. Pois mesmo com um conhecimento limitado da lngua um programador iniciante pode escrever seu prprio cdigo para resolver problemas que so complexos o suficiente para serem resolvidos por outros meios. 1.2 Histria do MATLAB Cleve Moler foi um professor de matemtica e cincia da computao na Universidade do Novo Mxico. Quando ele desenvolveu a primeira verso do MATLAB, Moler queria que seus alunos tivessem acesso ao software Linpack e Eispec sem ter que usar a linguagem de programao Fortran, que era complexa. De acordo com a "Scientific Computing World", Moler desenvolveu o sistema do Matlab para resolver este problema e a linguagem foi projetada especificamente para lidar com clculos com matrizes e da rea das cincias exatas.

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

A linguagem logo se espalhou para outras universidades e encontrou um pblico interessado dentro da comunidade matemtica e de cincias exatas, alm das engenharias. Jack Little, um engenheiro, conheceu o MATLAB durante uma visita feita Universidade de Stanford em 1983. Reconhecendo o seu potencial comercial, ele se juntou com Moler e Bangert. Eles reescreveram MATLAB em C e fundaram a MathWorks em 1984 para continuar o seu desenvolvimento. Em 2000, o MATLAB foi reescrito para usar um novo conjunto de bibliotecas para auxiliar os usurios na manipulao de matrizes. 1.3 Aprendendo a utilizar o MATLAB Para ter acesso ao MATLAB o usurio deve t-lo instalado em seu computador ou ter o programa disponvel na rede em que est conectado. Para iniciar o MATLAB a partir do Windows, d um duplo clique no cone MATLAB em seu Windows desktop. O cone do MATLAB mostrado na figura 1.1.

Figura 1.1 cone representativo do MATLAB

Para inici-lo a partir de uma plataforma UNIX, digite MATLAB no prompt de comando do sistema operacional. Quando o MATLAB iniciado, a rea de trabalho MATLAB visualizada, entretanto nenhuma atividade pode ser realizada, devido ao fato que o mesmo se encontra em estado de inicializao, conforme pode ser visto na figura 1.2.

Figura 1.2 Barra de status no momento da inicializao do MATLAB

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

A inicializao do programa possui tempo que varia conforme a capacidade de processamento do computador utilizado. Quanto maior a capacidade de processamento, menor o tempo que necessrio para a inicializao do MATLAB. Ao trmino da inicializao, na barra de status aparecer a palavra Ready, indicando que o programa se encontra disponvel para ser utilizado.

Figura 1.3 Barra de status indicando disponibilidade para insero de comandos no MATLAB

A janela na rea de trabalho que nos interessa a Janela de Comando, onde o prompt especial exibido. Isto significa que o MATLAB que est esperando por um comando. O prompt no MATLAB indicado pelos caracteres (<<), seguida da barra vertical pulsante. Nesta situao, o usurio identifica a disponibilidade de insero de comandos no MATLAB.

Figura 1.4 Prompt de comandos no MATLAB

Voc pode sair a qualquer momento do MATLAB com os comandos exit e quit. 1.4 Ambiente de trabalho Na rea de trabalho do MATLAB pode-se dividir a configurao da interface grfica em cinco barras e quatro janelas. As barras so imutveis e a opo que o usurio possui de apenas deix-las ou no visveis. O MATLAB tem disponveis cinco barras, sendo quatro delas na parte superior da interface grfica e a ltima na parte inferior. A figura 1.5 fornece o posicionamento e o nome das barras disponveis no MATLAB.
Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Figura 1.5 Barras disponveis na interface grfica principal do MATLAB

A primeira barra (no sentido descendente) a barra de ttulos. Nela encontramos o ttulo do programa. Abaixo da barra de ttulos se encontra a barra de menus. Atravs dela podemos acessar todas as ferramentas disponveis no programa. A terceira barra no sentido descendente a barra de ferramentas e est no mesmo nvel da barra de endereos. Na barra de ferramentas observamos atalhos para as principais aplicaes do programa como copiar, colar, abrir novo editor de texto. Na barra de endereos, os diretrios podem ser acessados atravs de um sistema de endereamento similar ao do WINDOWS. Na parte inferior da interface encontramos a barra de status. Nela podemos saber qual a situao de operao do programa. Em relao s janelas, o usurio possui a oportunidade de modificar a aparncia e o local dela no grfico, proporcionando conforto e praticidade ao usurio. As quatro janelas que existem inicialmente na rea de trabalho so o Workspace (Memria Temporria), Command History (Histrico de Comandos), Current Directory (Diretrio Atual) e Command Window (Janela de Comando). As quatro janelas podem ser vistas na figura 1.6.

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Figura 1.6 Janelas presentes na interface grfica principal do MATLAB

1.4.1 Janela Command Window Na figura 1.6 possvel visualizar quatro janelas dispostas lado a lado. A janela da direita denominada Command Window, ou simplesmente janela de comando. Nela so executados os comandos principais para a realizao de seus trabalhos. Se o sistema no estiver executando uma atividade que utilize toda sua memria, voc ir encontrar um prompt indicando que o programa aguarda suas instrues, conforme visto na figura 1.4. medida que o usurio digita os comandos na janela de comando os mesmos permanecem nela, incomodado com a grande quantidade de informaes o usurio pode desejar apagar os textos desejados da janela. Para isso basta a utilizao do comando [>> clc].

Figura 1.7 Janela de Comando

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

1.4.2 Janela Workspace Na parte superior esquerda da figura 1.4, est a janela responsvel pela memria temporria visvel do programa, a Workspace, figura 1.8. Sua memria tida como temporria uma vez que desligado o programa, os dados inseridos nela sero apagados. Nele podemos encontrar todos os dados disponibilizados ao MATLAB e alm disso verificar seu valor, e em caso de vetores mostrado valores mximos e mnimos. Quando o usurio utiliza diversos comandos, h o preenchimento da janela Workspace que no interfere significativamente na linha de raciocnio do programa, mas pode haver por parte do usurio o desejo de limpar a memria temporria. sempre recomendada a limpeza da tela principalmente aps o usurio utilizar um cdigo e for utilizar outro diferente, pois pode haver confronto das variveis presentes. Para limp-la se utiliza o comando [>> clear]. Obs: O usurio pode fazer a limpeza de apenas um dos itens caso da memria temporria, sendo o comando responsvel o clear seguido do nome da varivel desejada de excluso [ex.: clear b]. Outro comando que importante aqui o comando who, que mostra ao usurio todas as variveis que esto na memria temporria do programa. Para saber mais detalhes sobre as variveis, o comando whos deve ser utilizado para obter tais informaes.

Figura 1.8 Workspace

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

1.4.3 Janelas Command History e Current Directory Abaixo da Workspace temos duas janelas divididas por meio de um sistema de abas. A janela Command History, figura 1.9, e a janela Current Directory, figura 1.10. A primeira responsvel por listar o histrico de comandos da Command Window. subdividida por data e locada na memria permanente. A limpeza de seu histrico pode ser executada com comando de rightclick, ou comando de clique direito executado atravs do boto direto do mouse, embora no seja aconselhada. J a segunda janela, exibe o diretrio atual no qual os comandos so executados, diretrio esse igual ao definido pela barra de endereos. Nela sero exibidos todos os arquivos ou subdiretrios contidos no diretrio escolhido, mesmo que estes contenham atribuies de sistema, oculto ou somente leitura.

Figura 1.9 Command History

Figura 1.10 Current Directory

1.5 Declarao de Variveis Para que o usurio possa utilizar o MATLAB de forma correta, necessrio que alm dos comandos digitados corretamente que as variveis tambm sejam digitadas corretamente. No MATLAB as regras para escrita de variveis so as seguintes: a) As variveis no podem ter espaos em seu nome, isto , devem ser palavras nicas: [ex.: velocidademaxima, diasdoano, valorgasto] b) Variveis so sensveis s letras maisculas e minsculas, assim, a mesma palavra com letra maiscula diferente de outra com letra minscula. [ex.: Tempo, TEMPO e tempo so variveis diferentes] c) As variveis devem ter no mximo 31 caracteres.

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

d) Nas variveis no pode haver caracteres especiais (acentos, cedilha, sinais exclamativos ou interrogativos, etc) e) As variveis no podem ter o nome de uma funo interna do MATLAB [ex.: if, for, sin, quit] As funes do MATLAB devem ser sempre escritas com todas as letras minsculas (ex: sin, cos, log, plot, median). O MATLAB contm alm das variveis que so criadas pelo usurio as variveis especiais, que so comuns no dia-a-dia do programador, so elas:
Inf NaN iej ans pi Infinito (alguma diviso por zero) No um Nmero (pode ser um texto ou valor indefinido 0/0) Nmero imaginrio (sqrt(-1)) Varivel utilizada para exibio dos resultados padro 3.14159265358979...

As constantes Inf e NaN no representam valores numricos em sua essncia. So apenas conceitos desenvolvidos pelo sistema e que precisam ser interpretados de forma correta. Para isso necessrio ser lembrado o conceito de underflow e overflow. Para as mquinas, cuja capacidade de processamento limitada e os clculos so executados de modo numrico, o limite para o valor de zero e o valor de infinito criado a partir de um limite que depender da quantificao que o computador pode medir. O maior valor real que pode ser encontrado no MATLAB pode ser encontrado utilizando o comando realmax. Um valor que seja maior do que esse valor real, ser interpretado pela mquina como valor infinito, da mesma forma ser para algum valor abaixo do valor mnimo, realmin. Para o caso do valor zero, necessrio conhecer sobre a preciso numrica do MATLAB, atravs do comando eps. Qualquer valor abaixo do eps no ser reconhecido caso a operao executada com valores em uma escala superior, e o resultado para o MATLAB ser considerado como zero.

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Figura 1.11 Exemplificao de overflow e underflow.

1.6 Erros No MATLAB, assim como em todos os programas no qual o usurio responsvel por escrever o cdigo da operao desejada, suscetvel apario de erros, o que impede o desenvolvimento do programa e gera uma resposta que no exata para o usurio. Podem-se classificar os erros do MATLAB em cinco tipos de erros, no qual quatro deles so devidos m observao do usurio e o ltimo dos cinco em relao ao prprio programa utilizado. Os erros que so vistos no MATLAB so os seguintes: 1) Sintaxe 2) Argumentos 3) Interrupo 4) Memria 5) Java Script O Erro de Sintaxe ocorre quando o usurio insere alguma funo ou cdigo que no reconhecida pelo programa. Este o tipo de erro que o mais fcil de ser corrigido, e o prprio MATLAB ajuda o usurio indicando a linha, coluna e expresso que no foi identificada gerando um link que leva direto expresso no conforme, facilitando a tarefa de correo do programa. Os principais exemplos desse tipo de erro so: Nomes de funes digitados erradamente, falta de balanceamento de sinais e parnteses ou pontos, matrizes com termos no corretos, entre outros. O Erro de Argumento ocorre quando o usurio insere os valores de maneira errnea no programa. Exemplos dessa situao ocorrem quando inserido um valor que no est na faixa correta da funo, ou a funo necessita de vrios valores e o usurio se esquece de digitar algum deles.

Instrutor: Fernando Wesley

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Os Erros de Interrupo ocorrem quando o programa parado de maneira sbita devido interrupo do cdigo compilado pelo usurio. Uma maneira que o usurio pode fazer isso atravs do comando [Ctrl + C]. A interrupo pode ocorrer em qualquer momento em que algum cdigo est sendo calculado pelo usurio. Os Erros de Memria ocorrem quando a memria do sistema excedida devido a grande quantidade de clculos executados no sistema. Caso o usurio se depare com tal problema, uma maneira para solucionar tentar utilizar uma quantidade menor de variveis no workspace. Para erros causados por problemas de lgica interna de programao do software, geralmente erros em cdigo Java, ou Java Script, o MATLAB compila o mesmo erro viciando a lgica de execuo do software. Nesses casos necessrio reiniciar o sistema, ou at reinstalar o programa em alguns casos. A figura 1.12 mostra como os erros podem ser visualizados na janela de comando do MATLAB, onde logo aps a funo ser chamada pelo usurio, ocorre a identificao do erro e a exibio para o usurio utilizando as interrogaes (???), e o motivo da no compilao do cdigo em vermelho. Embora existam muitas classes de erros, aps o convvio com o software o usurio pode se acostumar na identificao do erro e correo do mesmo de modo rpido e eficaz.

Figura 1.12 Exemplo de erros que podem ser encontrados no MATLAB

Instrutor: Fernando Wesley

10

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

1.7 Trabalhando com escalares O MATLAB tem em seu nome o objetivo principal do programa, que a utilizao de matrizes para realizar clculos diversos. Embora possam ocorrer diferenas na definio de matrizes e escalares, para o MATLAB os valores escalares so tratados como uma matriz 1x1. Assim o escalar pode ser chamado de matriz de dimenso nula ou apenas de matriz com um elemento. Assim, para trabalharmos utilizando escalares devemos saber as regras de operaes para execuo dos clculos de maneira fiel e interessante. Tais regras no podem ser diferentes do que utilizado para clculos matriciais. Os clculos executados posteriormente fornecer compreenso dos clculos no MATLAB.
>> 2 * 2 + 4 ans = 8

ao

usurio a

>> 2 * 2 + 4 / 2 ans = 6

Quando o comando a ser inserido for idntico ou semelhante a outro inserido anteriormente utilize as setas de navegao e do seu teclado, para ter acesso mais rpido expresso anterior e modific-la de modo a fornecer o resultado desejado.
>> 2 * (4 + 4) / 2 ans = 8

>> 2 * (4 * 4 2) / 2 ans = 14

>> 2 * (4 * (4 2)) / 2 ans =

Instrutor: Fernando Wesley

11

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

>> 4 ^ 2 ans = 16

>> 4 ^ 2 * 2 ans = 32

>> 2 ^ (3 * 3) ans = 512

>> 2 / 4 ans = 0.5

>> 2 \ 4 ans = 2

Para suprimir a visualizao do resultado das operaes insira ; no fim de cada comando. A potncia de base 10 representada inserindo a letra e ou E entre a notao decimal e a potncia da base, sem espaos, como mostra a seguir.
>> 5.347e2 ans = 534.700

>> 5.347E-2 ans =

Instrutor: Fernando Wesley

12

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

0.0535

As operaes no MATLAB so organizadas em uma ordem de prioridades, que pode ser chamada de hierarquia. A prioridade pode ser visto de acordo com a tabela 1.1. Operao () ^ / \ * + Nome Precedncia Potncia Diviso direita Diviso esquerda Multiplicao Soma Subtrao
Tabela 1.1 Hierarquia de operaes

Prioridade 1 2 3 4 5 6 7

1.8 Formatos de exibio A exibio de valores na janela de comando do MATLAB gerada inicialmente no format short, que o que vem instalado no programa. Outros formatos podem ser utilizados para exibio dos resultados, sendo cinco deles abordados logo abaixo. Para uma ajuda a respeito dos formatos de exibio de resultados no MATLAB, utilize o comando [>> help format]
>> var = 0.5555555555 var = 0.5556 >> format short e >> var ans = 5.5556e-001 >> format long >> var ans = 0.555555555500000 >> format long e >> var ans = 5.555555555000000e-001

Instrutor: Fernando Wesley

13

Introduo ao MATLAB- POLI Jnior Engenharia


>> format bank >> var ans = 0.56 >> format short >> var ans = 0.5556

Captulo 1

1.9 Funes Matemticas Elementares Abaixo, uma lista com as funes matemticas elementares do MATLAB. Fica como sugesto ao aluno a utilizao do help para aprender sobre a utilidade de cada uma das funes. Nas funes trigonomtricas, a utilizao do d aps a funo indica que o resultado, ou o argumento de entrada, devem ser em graus e no radiano, argumento padro das funes trigonomtricas.
sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh TRIGONOMTRICAS tan sec csc tand secd cscd tanh sech csch atan asec acsc atand asecd acscd atanh asech acsch EXPONENCIAL log10 log2 reallog ARREDONDAMENTOS ceil round mod cot cotd coth acot acotd acoth

exp

log

sqrt

fix

floor

rem

1.10 Help O help conhecido como o comando mais importante de todo o software, pois considerando as diversas reas s quais o MATLAB atende, praticamente impossvel que algum conhea todos os comandos memorizados. Assim, o comando help consegue atender a todos os pblicos

Instrutor: Fernando Wesley

14

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

que utilizam o software, sendo considerado como uma das mais completas interfaces de ajuda na classe dos softwares acadmicos. Existem duas formas de acesso ao help, quando considerado de forma geral. A primeira atravs do boto que fornece acesso interface grfica da ajuda do MATLAB conforme figura 1.13. Na interface especfica h quatro abas que fornecem o contedo do help que fornecido atravs de Contents (Bibliotecas), Indexao de Palavras (Index), Resultado de pesquisas (Search Results) e exemplos demonstrativos (Demos). A outra forma de acesso ao help atravs do prompt de comando do MATLAB utilizando o comando >> help, gerando as informaes presentes na figura 1.14.

Figura 1.13 Interface grfica de ajuda do MATLAB

Instrutor: Fernando Wesley

15

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Figura 1.14 Help no prompt da janela de comando

Outra opo para o usurio a ajuda especfica, onde digitado na janela de comandos o [>> help comando], sendo fornecido como resultado a explicao do comando inserido e para vrios casos um exemplo do uso do comando fornecido logo aps a explicao do mesmo. Na figura 1.15 mostrado o resultado quando se utiliza [>> help plot] na janela de comando. O plot o comando utilizado para criao de grficos atravs de vetores x e y.

Figura 1.15 Exemplo utilizando help de comando especfico na janela de comando

recomendado que para alguma dvida que o leitor possuir, utilizar inicialmente o help disponvel no MATLAB. Caso no encontre o resultado desejado, procurar ajuda na internet e com colegas ou profissionais que utilizam o software.

Instrutor: Fernando Wesley

16

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

1.11 Editor de texto Para acessar o editor de texto do MATLAB o usurio deve digitar o comando [>> edit]. No editor do texto o usurio pode digitar todo o script e compilar o cdigo apenas quando desejar, apertando para isso o boto play ou F5. Na janela de comando isso no possvel, visto que a cada linha digitada pelo usurio, h a execuo da mesma pelo programa. O uso do editor de texto tem outra grande vantagem em relao janela de comando. No caso do cdigo digitado apresentar erros, na janela de comando ser impresso onde o erro foi originado, linha e coluna, e o tipo do erro, facilitando o trabalho do usurio na identificao e correo dos erros.

Figura 1.16 Editor de texto do MATLAB

Instrutor: Fernando Wesley

17

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

Exerccios de fixao 1. Experimente modificar o layout de seu ambiente de trabalho, isto , modifique a janela de comando, a memria temporria, o histrico de comandos e o diretrio atual de seus locais iniciais. Depois disso tente recoloc-los em seu local de origem. Obs: Caso alguma destas janelas seja excluda, recupere-a na aba Desktop presente na barra de menus. 2. Experimente agora modificar as caractersticas da fonte e da cor de fundo utilizadas. V em File >> Preferences >> Fonts >> Colors. Caso deseje voltar configurao inicial siga os passos acima e clique em use system colors. 3. Verificar as mudanas que ocorrem na visualizao dos valores abaixo no Matlab quando se utiliza os comandos a seguir: a = 1, b = 100 e c = 0.01 a) >> format bank b) >> format compact c) >> format loose d) >> format short eng e) >> format hex f) >> format short 4. Utilizando o help da janela de comando, leia brevemente a definio (primeiro pargrafo do help) e depois use o comando para verificar o que ocorre. Obs: Alguns comandos necessitaro de argumento para fornecer valores de sada, com exemplos indicados ao lado do comando. a) >> help date b) >> help uicalendar c) >> help magic d) >> help sin e) >> help sind f) >> help roots g) >> help poly , digite a = magic(3) , digite b = sin(pi) , digite c = sind(pi) , digite (i) d = [1 -4 3] , digite (i) f = [2; 3] (ii) e = roots(d) (ii) g = poly(f)

Instrutor: Fernando Wesley

18

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 1

h) >> help linspace linspace(1,5,10)

, digite (i) linspace(1,5)

(ii)

5. Identifique os erros presentes nas linhas de comando abaixo. a) >> A = [1 2 3 4; 2: 2: 10] b) >> B = sen(0.92) c) >> C = sin(0,92) d) >> D = (3 + 5 2*cos(pi) exp(3))/(ln(1)) e) >> Mdulo = abs(cos(-22) + 3^4)

Instrutor: Fernando Wesley

19

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Captulo 2 Operaes com Matrizes


No captulo anterior aprendeu-se a trabalhar com escalares, realizando as operaes aritmticas de maneira simples, sem necessidade de declarao do formato da varivel. O MATLAB (Matrix Laboratory) considera um escalar como uma matriz de dimenso nula (1x1), mas h a possibilidade de trabalhar com matrizes maiores que apresentam o formato retangular ou quadrado. O objetivo desse captulo e aprender as principais operaes de matrizes no MATLAB. 2.1 Operaes com Matrizes Matrizes ou variveis podem ser criadas com ou sem a utilizao de um incremento. Sem incremento ser necessrio digitar todos os elementos da matriz, o que no ocorre com a criao por incremento. Como sabemos, uma matriz pode ser dividida em elementos de linha e coluna. No MATLAB, para separar elementos em coluna utilizamos o espao ou , . Para separarmos em linhas utilizamos o ; . Observe a seguir. Para criar uma matriz ou vetor linha:
>> A = [2 4 6] A = 2 4 6

Para uma matriz ou vetor coluna:


>> A = [2;4;6] A = 2 4 6

Para uma matriz ou vetor misto:


>> A = [1 2 3;4 5 6;7 8 9] A = 1 4 7 2 5 8 3 6 9

Instrutor: Fernando Wesley

20

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Algumas matrizes, devido a sua importncia, podem ser criadas com simples comandos como pode ser observado a seguir. Para uma matriz Identidade:
>> I = eye(5) I = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

Para uma matriz Nula:


>> Z = zeros(3,2) Z = 0 0 0 0 0 0

Para uma matriz Unitria:


>> U = ones(2,3) U = 1 1 1 1 1 1

Para uma matriz Randmica:


>> W = rand(2,3) W = 0.2785 0.5469 0.9575 0.9649 0.1576 0.9706

A matriz randmica retorna um vetor com nmeros aleatrios entre zero e um. Para criar variveis (vetores/matrizes) por incremento seguimos a seguinte sintaxe:

Instrutor: Fernando Wesley

21

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

n inicial : incremento : n final DICA: se o incremento for igual a 1, no precisa indic-lo. Este tipo de configurao representa a criao de uma seqncia numrica de valor inicial igual ao n inicial, valor final igual ao n final e, intercaladas por valores cuja diferena e igual ao incremento. Observe na prtica a seguir.
>> A = 10:1:20 A = 10 11 12 13 14 15 16 17 18 19 20

>> A = 10:2:20 A = 10 12 14 16 18 20

>> A = [1:5; 2:2:10] A = 1 2 2 4 3 6 4 8 5 10

Quando o incremento no informado o sistema admite como sendo o padro, ou seja, incremento de valor 1 (um). Embora a aritmtica de mquina seja, em parte, diferente da habitual, as matrizes esto sujeitas as mesmas regras de operao. Veja na prtica a seguir alguns casos de operaes com matrizes. Sejam as matrizes

>> A + B ??? Error using ==> plus Matrix dimensions must agree. >> B + C ans =

Instrutor: Fernando Wesley

22

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

5 -3

5 7

4 9

>> B * C ??? Error using ==> mtimes Inner matrix dimensions must agree. >> A * B ans = -8 -20 -32 11 29 47 10 22 34

O MATLAB dispe de outros operadores matemticos que podem facilitar as operaes matriciais como mostra a prtica a seguir. Sejam as matrizes:
>> D = [1 2; 3 4] D = 1 2 3 4

>> E = [5 6; 7 8] E = 5 6 7 8

>> D * E ans = 19 43 22 50

diferente de
>> D .* E ans = 5 21 12 32

>> D / E ans =

Instrutor: Fernando Wesley

23

Introduo ao MATLAB- POLI Jnior Engenharia


3.0000 2.0000 -2.0000 -1.0000

Captulo 2

diferente de
>> D ./ E ans = 0.2000 0.4286 0.3333 0.5000

>> D ^ 2 ans = 7 15 10 22

diferente de
>> D .^ 2 ans = 1 9 4 16

Ainda se pode obter a matriz transversa, utilizando o apstrofo ().


>> F = [1 10 100; 2 20 200; 3 30 300] ans = 1 2 3 >> G = F ans = 1 10 100 2 20 200 3 30 300 10 20 30 100 200 300

2.2 Indexao de matrizes A indexao uma forma de mapear, dentro da matriz, os elementos que esto presentes nela. Atravs da indexao se pode inserir ou obter valores de
Instrutor: Fernando Wesley

24

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

forma simplificada. Existem duas formas de indexao, sendo a uma uni paramtrica e a poli paramtrica.

Escreva a matriz:

Para obter os valores por meio da indexao uni paramtrica, deve-se inserir a varivel que representa a matriz seguido do valor entre parntesis do termo que deseja ser selecionado. Na indexao uni paramtrica, os valores percorrem inicialmente a primeira coluna no sentido descendente, e chegando ao elemento da ltima linha da coluna h a passagem para a coluna posterior.
>> A(1) ans = 3 >> A(3) ans = -2 >> A(5) ans = 0 >> A(7) ans = -1 >> A(8) ans = 6

Na Indexao multi paramtrica os valores so representados da forma A(i,j), onde i representa a linha e j a coluna da matriz avaliada.
>> A(1,2) ans = 4

Instrutor: Fernando Wesley

25

Introduo ao MATLAB- POLI Jnior Engenharia


>> A(3,1) ans = -2 >> A(2,2) ans = 0 >> A(3,3) ans = -1

Captulo 2

Caso o usurio deseje obter todos os valores da mesma linha ou da mesma coluna, pode utilizar o comando dois pontos (:). Alm de obter todos os valores da mesma linha ou coluna, tambm se podem usar dois pontos para limitar os valores desejados de vrias linhas e colunas ao mesmo tempo.
>> A(:,3) ans = -1 6 -1 >> A(2,:) ans = 1 0 6

>> A(1:2,1:3) ans = 3 1 4 0 -1 6

Alm de obter valores, o usurio pode inserir e substituir valores na matriz ou vetor desejado atravs da indexao, sendo esse mtodo muito eficaz e simples. Supondo que o usurio deseje tornar os valores que na matriz A so 1 em valores 0, o mesmo poder usar os seguintes comandos.
>> A(7) = 0 A =

Instrutor: Fernando Wesley

26

Introduo ao MATLAB- POLI Jnior Engenharia


3 1 -2 >> A(9) = 0 A = 3 1 -2 4 0 9 0 6 0 4 0 9 0 6 -1

Captulo 2

Tambm se pode usar a indexao poli paramtrica para modificar os valores na matriz. O MATLAB tambm pode indexar uma matriz atravs de outra matriz. 2.3 Anlise de vetores A anlise de vetores uma ferramenta importante, e atravs dela podem-se descobrir diversas informaes da matriz, evitando a necessidade de procurar manualmente tais dados.

Utilizando os comandos para a matriz A:

>> A = [ 3 4 -1; 1 0 6; -2 9 -1] A = 3 1 -2 4 0 9 -1 6 -1

>> numel (A) ans = 9

Instrutor: Fernando Wesley

27

Introduo ao MATLAB- POLI Jnior Engenharia


>> size(A) ans = 3 3

Captulo 2

>> ndims(A) ans = 2

>> length(A) ans = 3

>> diag(A) ans = 3 0 -1

>> triu(A) ans = 3 0 0 4 0 0 -1 6 -1

>> tril(A) ans = 3 1 -2 0 0 9 0 0 -1

Instrutor: Fernando Wesley

28

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

2.4 Nmeros e matrizes complexos No MATLAB os nmeros complexos so chamados utilizando i e j na parte imaginria. Deve-se evitar criar variveis com uma das letras, com finalidade de evitar conflitos internos do programa.
>> C = 2 - 3i C = 2.0000e+000 -3.0000e+000i >> D = 3 - 4j D = 3.0000e+000 -4.0000e+000i >> E = C + D E = 5.0000e+000 -7.0000e+000i >> F = C*D F = -6.0000e+000 -1.7000e+001i >> G = C/D G = 7.2000e-001 -4.0000e-002i

Da mesma forma podem ser escritas matrizes com elementos complexos nela
>> A = [2+1j 4-2i 3+9j] A = 2.0000 + 1.0000i 4.0000 - 2.0000i 3.0000 + 9.0000i

>> B = [1 -3 2] +i*[-2 -4 1] B = 1.0000 - 2.0000i >> C = A + B C = 3.0000 - 1.0000i 1.0000 - 6.0000i 5.0000 +10.0000i -3.0000 - 4.0000i 2.0000 + 1.0000i

Instrutor: Fernando Wesley

29

Introduo ao MATLAB- POLI Jnior Engenharia


>> D = A.*B D = 4.0000 - 3.0000i -20.0000 -10.0000i -3.0000 +21.0000i

Captulo 2

Mais funes: Comando eig std mean max min Explicao Determina autovetores e autovalores Desvio padro Mdia aritmtica Valor mximo Valor mnimo Comando poly det real imag rank Explicao Polinmio caracterstico Determinante Parte real do nmero complexo Parte imaginria do nmero complexo Determina o nmero de linhas independentes

Instrutor: Fernando Wesley

30

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

EXERCCIO APLICADO
Um grande forno industrial suportado, em sua base, por trs longas colunas de concreto refratrio, com 1 m por 1 m de lado, cada. Durante a operao em condies de regime estacionrio, a instalao de tal forma que trs superfcies de cada coluna so mantidas a 500 K, enquanto a outra(inferior) exposta a uma corrente de ar para a qual T = 300 K e h = 10 W/m2K. Uma passagem abaixo de cada coluna garante que as mesmas sejam periodicamente vistoriadas por tcnicos. Utilizando uma rede de malha com x = y = 0,25 m, determine se as passagens oferecem risco de queimadura aos tcnicos. (Transferncia de calor e massa Peter Incropera & De Witt, 5ed. LTC)

Consideraes: 1. 2. 3. 4. Regime estacionrio. Conduo bidimensional. Propriedades constantes. Sem gerao interna de calor.

Anlise: Reduo da rede de 12 pontos nodais para 8 atravs do eixo de simetria. Dessa forma, utilizando as equaes de diferenas finitas (no-estendidas), os balanos de energia para cada n so dados como:

Instrutor: Fernando Wesley

31

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

internos no-simtricos: N 1: T2 + T3 + 1000 4T1 = 0 N 3: T1 + T4 + T5 + 500 4T3 = 0 N 5: T3 + T6 + T7 + 500 4T5 = 0 internos simtricos: N 2: 2T1 + T4 + 500 4T2 = 0 N 4: T2 + 2T3 + T6 4T4 = 0 N 6: T4+ 2T5 + T8 4T6 = 0 Ns da superfcie plana: N 7: 2T5 + T8 + 2000 9T7 = 0 N 8: 2T1 + T4 + 500 9T8 = 0

Reorganizando e agrupando as equaes temos:

Na forma matricial temos:

Para resolver esse problema usaremos a tcnica da inverso de matrizes. [A] . [T] = [C] [A]-1 . [A] . [T] = [A]-1 . [C] [I] . [T] = [A]-1 . [C] [T] = [A]-1 . [C]

Instrutor: Fernando Wesley

32

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Primeiro criamos a matriz de coeficientes e constantes. Em linha de comando teremos


>> A = [-4 1 1 0 0 0 0 0;... 2 -4 0 1 0 0 0 0;... 1 0 -4 1 1 0 0 0;... 0 1 2 -4 0 1 0 0;... 0 0 1 0 -4 1 1 0;... 0 0 0 1 2 -4 0 1;... 0 0 0 0 2 0 -9 1;... 0 0 0 0 0 2 2 -9] A = -4 2 1 0 0 0 0 0 1 -4 0 1 0 0 0 0 1 0 -4 2 1 0 0 0 0 1 1 -4 0 1 0 0 0 0 1 0 -4 2 2 0 0 0 0 1 1 -4 0 2 0 0 0 0 1 0 -9 2 0 0 0 0 0 1 1 -9

>> C = [-1000;-500;-500;0;-500;0;-2000;-1500] C = -1000 -500 -500 0 -500 0 -2000 -1500

Em seguida multiplicamos pela matriz de constantes


>> T = inv(A)*C T = 489.3047 485.1538 472.0651 462.0058 436.9498 418.7393 356.9946 339.0520

Instrutor: Fernando Wesley

33

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Os resultados podem ser interpretados considerando cada linha da matriz T como a temperatura final de cada n correspondente ao nmero da linha. Dessa forma, na linha 1 teremos a temperatura do n 1, na linha 5 teremos a temperatura do n 5 e assim sucessivamente como mostra abaixo.

Porm, observe que a sada, neste caso uma matriz, no nos d uma ideia imediata do comportamento do sistema, alm de ser mal visualizvel. A fim de dar um carter mais profissional aos resultados sugerido que os dados sejam interpretados graficamente. Neste caso, como se trata de um mapeamento bidimensional de uma grandeza fsica, podemos interpret-los usando o mapeamento de grandeza por escala de espectro visvel. No MATLAB o comando utilizado o imagesc.
>> Final = [500 500 489.3 485.2 500 472.1 462.0 500 436.9 418.7 500 356.9 339.1 Final = 500.0000 500.0000 500.0000 500.0000 500.0000 500.0000 489.3000 472.1000 436.9000 356.9000 500.0000 485.2000 462.0000 418.7000 339.1000 500.0000 489.3000 472.1000 436.9000 356.9000 500.0000 500.0000 500.0000 500.0000 500.0000 500 500 500 500;... 489.3 500;... 472.1 500;... 436.9 500;... 356.9 500]

>> imagesc(Final) >> colorbar >> grid

Instrutor: Fernando Wesley

34

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Como resultado obtm-se a matriz:

A matriz pode ser representada pelo mapa de cores a seguir.

Instrutor: Fernando Wesley

35

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

Exerccios de fixao 1. Digite os valores abaixo para revisar e ampliar seu conceito sobre matrizes no MATLAB. a) >> A = [-1.2*sin(4.76) exp(3.66*log(233)) 2.3+4/(5*cos(4))] b) >> B = [1 2 3; 4 5 6; 7 8 9] c) >> C = [1,2;3,4] d) >> X = 1:10, Y = sin(X), Z = [X;Y] F = [9 10 11 12], G = [E;F] e) >> E = [ 1 2 3 4; 5 6 7 8],

2. Sendo a matriz A = [1 2 3; 4 5 6; 7 8 9]: a) A uma varivel B, atribua o elemento a22. b) A uma varivel C, atribua o elemento a13. c) Em um vetor linha D, atribua os elementos a12, a21 e a33. d) Obtenha um vetor coluna E com os elementos a23, a31 e a32. e) Por fim ache uma matriz 3x3 com a primeira coluna sendo o vetor D, a segunda sendo o vetor E transposto e a terceira coluna sendo a soma das duas anteriores. 3. Para a matriz N = [1 2; 3 4], verifique atravs dos comandos aprendidos: a) O determinante de N no nulo. b) Existe uma matriz inversa tal que M = inv(N). c) Verifique que o det(N) = 1/det(M) e det(N)*det(M) = det(N*M) = 1 4. Uma matriz de 3 dimenses pode ser considerada como uma que possui largura, comprimento e profundidade. Nessa situao, a matriz que desejamos deve ter 3 linhas, 4 colunas e 2 pginas de profundidade. >> M3d = rand(3,4,2) Tire a mdia dos seguintes valores M3d(1,2,2), M3d(2,4,2), M3d(3,1,1) e M3d(1,4,1). Verifique que esse valor menor do que 1. Por qu? 5. H dois comandos que so utilizados em matrizes, que so o sparse e o full. Utilize o help e verifique a diferena entre ambos para a mesma matriz.

Instrutor: Fernando Wesley

36

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 2

6. Crie uma matriz linha cujo valor dos elementos variem de 1 a 100 com incremento de 2. Visualize-a pelo mapa de cores. No final da linha da matriz adicione elementos que variem de 100 a 1, na forma decrescente. Visualize a matriz resultante no mapa de cores.

Instrutor: Fernando Wesley

37

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

Captulo 3 Fundamentos da programao no MATLAB


O objetivo desse captulo capacitar o aluno a realizar as principais operaes no MATLAB que dizem respeito aos operadores lgicos e de controle de fluxo do programa. Para isso ser usado o editor de texto do MATLAB a partir desse captulo. Conforme visto no ltimo tpico do primeiro captulo, as vantagens da utilizao do editor de texto so o principal motivo para utilizarmos o mesmo. Durante a insero dos cdigos no editor ser comum a apario de erros, e nessa situao, o programa identifica o erro, indica o local de ocorrncia e fornece um link para que o usurio possa corrigi-lo. Quando se inicia um cdigo em um editor de texto, uma forte recomendao que haja um cabealho no mesmo, para indicar ao usurio o objetivo, as principais variveis do programa, o que aceito para clculo e demais informaes que sejam consideradas importantes. Deve-se comentar o mximo possvel para que outra pessoa que possa utilizar o cdigo consiga entende-lo sem dificuldade. Os comentrios podem ser inseridos aps um comando escrito pelo usurio, apenas h a necessidade do sinal de percentagem ficar aps o comando e antes do texto que se deseja usar como comentrio. Para criar comentrios o usurio deve iniciar a sentena utilizando um sinal de percentagem (%), ou utilizando o comando CTRL+R na seleo. O comentrio possui colorao verde no editor de texto.

Figura 3.1 Comentrios no editor de texto.


Instrutor: Fernando Wesley Recife / PE - 2012

38

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

No editor de texto existe uma tnue linha vertical que divide a tela aproximadamente pela metade, sendo essa linha o limite de impresso do MATLAB. tambm recomendado que o usurio no ultrapasse essa linha, pois em caso de necessitar imprimir o cdigo fonte escrito, provavelmente o resultado ser uma impresso desconfigurada. Caso o usurio tenha um cdigo extenso, pode utilizar o comando trs pontos (...) para indicar ao programa que o cdigo continua na linha inferior. Os trs pontos apresentaro colorao azul. Outra recomendao que importante a respeito da organizao das funes salvas. fortemente recomendado que o usurio salve suas funes em pastas exclusivas, sendo funes diferentes em pastas diferentes. Apenas no exemplo em que o usurio necessite de mais funes para resolver um nico problema, todas devem estar na mesma pasta. Assim: a. Comentar o cdigo escrito ao mximo b. Evitar ultrapassar a linha de impresso c. Salvar funes com objetivos diferentes em pastas diferentes. Alm dos cuidados a respeito do cdigo em si, o usurio deve atentar para o nome do arquivo no momento de salvar o mesmo. Existem algumas regras a respeito do nome do arquivo no MATLAB. a. No pode conter caracteres especiais b. No pode ter espaos c. No pode iniciar com nmeros d. No pode ter nome de funes do programa (ex: if, cos, for) e. No deve ultrapassar a quantidade de 31 caracteres importante verificar todas as cinco condies acima antes de salvar um arquivo no MATLAB, pois pode ocorrer que o cdigo esteja correto, mas no ir compilar devido a conflitos internos gerados pelo nome do arquivo. 3.1 Expresses Booleanas As expresses booleanas so regras estabelecidas para definir, simplificar e manipular funes lgicas baseadas em afirmaes que so verdadeiras ou falsas. Independente da simbologia utilizada na interface usurio-mquina, a condio de verdadeiro ou falso, internamente mquina, interpretada
Instrutor: Fernando Wesley Recife / PE - 2012

39

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

segundo o reconhecimento de dois caracteres: 0 (zero) e 1 (um). No caso do MATLAB, zero implica numa condio falsa, vazia, nula ou nil, ao contrrio do um que est relacionado a uma condio verdadeira. Os smbolos de teste e operadores booleanos podem ser resumidos pela tabela 3.1 e tabela 3.2, respectivamente. Embora possua simbologia distinta, na maioria dos casos, a lgica de tais operadores encontrada em qualquer plataforma de programao. Smbolo == ~= < > <= >= Teste Igual Diferente Menor que Maior que Menor ou igual Maior ou igual Exemplo A == B (A igual a B) A ~= B (A diferente de B) A < B (A menor que B) A > B (A maior que B) A <= B (A maior ou igual a B) A >= B (A menor ou igual a B)

Tabela 3.1 Teste de expresses booleanas.

Smbolo & |

Operador E OU

Exemplo de Composio A & B (A e B verdadeiros) A | B (A ou B verdadeiros)

Tabela 3.2 Operadores de expresses booleanas.

Alm desses clssicos testes e operadores booleanos o MATLAB disponibiliza outros operadores que podem simplificar, em alguns casos, reduzindo a quantidade de comandos a serem digitados. So conhecidas, em alguns casos como funes booleanas matriciais, pois so aplicadas a matrizes e no a escalares. As mais importantes podem ser observadas na tabela 3.3. Funo isempty isequal isnumeric ischar Teste retorna verdadeiro se matriz vazia as matrizes forem numericamente iguais matriz numrica matriz alfanumrica
Tabela 3.3 Funes booleanas matriciais.

Exemplo isempty(M) isequal(M) isnumeric(M) ischar(M)

3.2 Estrutura if elseif - else O if elseif else uma estrutura de seleo que tem a funo de selecionar um dado ou conjunto de dados segundo uma propriedade inerente ao mesmo ou selecionar uma funo a ser executada. O MATLAB possui dois
Instrutor: Fernando Wesley Recife / PE - 2012

40

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

tipos de estruturas de seleo: if-elseif-else, e switch-case-otherwise. O primeiro comum em outras linguagens de programao. Tais estruturas so implementadas utilizando as expresses booleanas descritas anteriormente. Sua estrutura e o significado lgico de sua sintaxe so exibidos na figura 3.2.

Figura 3.2 Estrutura e sintaxe lgica da estrutura de seleo if.

A aplicao desse tipo de estrutura pode ser ilustrada nos exemplos a seguir. Para executar os scripts pressione o boto F5 ou clique no boto Escreva o cdigo abaixo em um editor de texto e verifique o resultado
>> x = 3*sin(exp(52.3))+22/(cos(43)*2.44); if x >= 100 resposta = 'X maior do que 100' elseif x < 10 resposta = 'X menor do que 10' else resposta = 'X est entre 10 e 100' end

EXERCCIO APLICADO 1
Problema 3.1 O sistema supervisrio de uma unidade de Destilao Vcuo recebe, em tempo real, sinais que lhe permite, dentre outros, a manipulao do sistema de alarmes da unidade. Dentro de um conjunto de atuaes, o sistema envia
Instrutor: Fernando Wesley Recife / PE - 2012

41

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

diversas mensagens ao operador, lhe informando o motivo pelo qual o alarme foi acionado. Alm das mensagens, o sistema disponibiliza um cdigo numrico que reconhecido como desativador da unidade.

Figura 3.3 Diagrama esquemtico do exerccio aplicado.

Um dos sinais recebidos pelo operador o da temperatura no interior da Coluna (termopar 12). Tal temperatura no ser inferior a 900C e nem pode exceder 1200 C. Crie parte do cdigo do supervisrio responsvel pelas aes acima. (Caso real: RELAN MODIFICADO). Construir um cdigo com os seguintes objetivos: 1. Confirmao do sinal recebido; 2. Anlise do sinal recebido e atuaes.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % O Script abaixo tem uma sugesto de resoluo do problema 3.1 % % % % Data de criao: 15 de setembro de 2008. % % Data da ltima atualizao: 03 de janeiro de 2012. % % Criado por: Phillipi Rodrigo de Oliveira Souza. % % Atualizado por: Fernando Wesley Cavalcanti de Arajo. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;clear % elimina o sinal anterior %o operador insere a T em %converte de texto a %para verificao de sinal

sinal1 = inputdlg('Digite a temperatura atual); C sinal = str2double(sinal1); nmero semsinal = isnan(sinal); %%%%% confirmao do sinal recebido %%%%%

if semsinal == 1 % no h recebimento do sinal num_protc_seg = 1378; % n protc seg a ser gerado errordlg('Falha de comunicao com Termopar 12.','ERRO') return else num_protc_seg = 1379; % n protc seg a ser gerado
Instrutor: Fernando Wesley Recife / PE - 2012

42

Introduo ao MATLAB- POLI Jnior Engenharia


end %%%%% anlise do sinal recebido e atuaes %%%%% if sinal <= 900 num_protc_seg = 2378; % n protc seg a ser gerado warndlg('Temperatura do prato abaixo do permitido.','PERIGO!') elseif sinal <= 1200 num_protc_seg = 2379; % n protc seg a ser gerado else num_protc_seg = 2380; % n protc seg a ser gerado warndlg('Temperatura do prato acima do permitido.','PERIGO!') end

Captulo 3

A fim de explorar o problema e obter diferentes respostas, proponha valores distintos para a varivel sinal.

DICA 1: Para comentar uma linha: CRTL + R. DICA 2: Para descomentar: CRTL + T.

3.3 Estrutura switch-case-otherwise

Alm da estrutura if/elseif/else, mais comum em linguagem de programao, o MATLAB oferece outra estrutura de seleo, a switch/case/otherwise. Ao contrrio da estrutura anterior, essa est limitada condio de igualdade e desigualdade, veja a seguir na figura 3.5.

Figura 3.5 Estrutura e sintaxe lgica da estrutura de seleo switch.

A aplicao desse tipo de estrutura pode ser ilustrada no exemplo a seguir.

Instrutor: Fernando Wesley Recife / PE - 2012

43

Introduo ao MATLAB- POLI Jnior Engenharia


clear;clc A = log10(1000); switch A case 1 var = Nmero 1. case 2 var = Nmero 2. case 3 var = Nmero 3. otherwise var = Nmero no definido. end

Captulo 3

EXERCCIO APLICADO 2
Problema 3.2 Resolva o exerccio da estrutura de seleo (if-elseif-else), visto anteriormente, com a estrutura (switch-case-otherwise). .

Figura 3.6 Diagrama esquemtico do problema 3.2.

Construir um cdigo com os seguintes objetivos: 1. Confirmao do sinal recebido; 2. Anlise do sinal recebido e atuaes.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % O Script "Mod2_Prbl2_2" tem a sugesto de soluo do Problema 3.2 % % estrutura de seleo (switch-case-otherwise). % % % % Data de criao: 21 de setembro de 2008. % % Data da ltima atualizao: 03 de janeiro de 2012. % % Criado por: Phillipi Rodrigo de Oliveira Souza. % % Atualizado por: Fernando Wesley Cavalcanti de Arajo. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;clear % elimina o sinal anterior

Instrutor: Fernando Wesley Recife / PE - 2012

44

Introduo ao MATLAB- POLI Jnior Engenharia


sinal1 = inputdlg('Digite a temperatura atual'); temperatura sinal = str2double(sinal1); semsinal = isnan(sinal); %%%%% confirmao do sinal recebido %%%%% switch semsinal case 1 num_protc_seg = 1378; % n protc seg a ser gerado errordlg('Falha de comunicao com Termopar 12.','ERRO') return otherwise num_protc_seg = 1379; % n protc seg a ser gerado end %%%%% anlise do sinal recebido e atuaes %%%%%

Captulo 3

%o operador insere a

%$$$$$$$$$$$$$ POR QUE A ESTRUTURA ABAIXO NO EXECUTADA ? $$$$$$$$$$$$$$% switch sinal case sinal <= 900 num_protc_seg = 2378; % n protc seg a ser gerado warndlg('Temperatura do leito abaixo do permitido.','PERIGO') case sinal < 1200 num_protc_seg = 2379; % n protc seg a ser gerado otherwise num_protc_seg = 2380; % n protc seg a ser gerado warndlg('Temperatura do leito acima do permitido.','PERIGO') end

A fim de explorar o problema e obter diferentes respostas, proponha valores distintos para a varivel sinal. Novamente no esquea dos comandos CTRL + R e CTRL + T, responsveis por comentar de forma mais gil. OBSERVAO: a estrutura switch/case/otherwise no pode ser utilizada com expresses booleanas de desigualdade. Observe a seguir um cdigo escrito em estrutura de seleo switch/case/otherwise com a utilizao de expresses booleanas de desigualdade.

Instrutor: Fernando Wesley Recife / PE - 2012

45

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

3.4 Estrutura for O for conhecido como estrutura de repetio, e tem o objetivo de repetir um determinado comando seguindo um critrio predefinido pelo programador. Esse tipo de estrutura evita que o usurio do cdigo tenha que repetir mesma tarefa inmeras vezes. Mas, como a mquina sabe quando parar de repetir o comando? O critrio de parada baseado na seguinte ideia: toda regio fora do domnio de repetio considerada como regio de parada, ou seja, caso a expresso de repetio no seja mais verdadeira, o cdigo interrompe o loop. Esse tipo de estrutura utiliza expresses booleanas descritas

anteriormente e trabalha com retorno de execuo de funes. Neste caso, qualquer retorno diferente de 0 (zero) considerado como verdadeiro, e 0 (zero) considerado falso. O MATLAB trabalha com duas estruturas de repetio, a for e a while. A estrutura for repete a execuo dos comandos enquanto para todo valor de sua varivel comeando e terminando com valores predefinidos e a passos incrementados por um valor tambm predefinido. Na figura 3.7 temos a estrutura de sintaxe e sua interpretao. Em seguida acompanhe um exemplo de aplicao.

Figura 3.7 Estrutura e sintaxe lgica da estrutura de repetio for.

for x = 1:15 y = sin(x*pi) end


Instrutor: Fernando Wesley Recife / PE - 2012

+ exp(x*2);

46

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

EXERCCIO APLICADO 3
Problema 3.3 No exerccio aplicado do captulo 1 foi discutido o perfil de temperatura sobre a superfcie de uma placa onde a forma matricial do sistema de equaes foi dado por:

Utilizando a estrutura de repetio (for) crie a matriz de coeficientes com a menor quantidade de linhas que voc puder.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % O Script abaixo tem a sugesto de resoluo do problema 3.3 % % % % Criado e atualizado por: Phillipi Rodrigo de Oliveira Souza. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear;clc % criao da diagonal principal for i = 1:1:6 for j = 1:1:6 if i == j A(i,j) = -4; end end end for i = 7:1:8 for j = 7:1:8 if i == j A(i,j) = -9; end end end % criao da primeira diagonal superior principal for i = 1:2:8 for j = 1:1:8 if i == j-1 A(i,j) = 1; end

Instrutor: Fernando Wesley Recife / PE - 2012

47

Introduo ao MATLAB- POLI Jnior Engenharia


end end % criao da segunda diagonal superior principal for i = 1:1:8 for j = 1:1:8 if i == j-2 A(i,j) = 1; end end end % criao da primeira diagonal inferior principal for i = 1:1:8 for j = 1:2:8 if i == j+1 A(i,j) = 2; end end end % criao da segunda diagonal inferior principal for i = 1:1:6 for j = 1:1:6 if i == j+2 A(i,j) = 1; end end end for i = 7:1:8 for j = 1:1:8 if i == j+2 A(i,j) = 2; end end end

Captulo 3

3.5 Estrutura while A estrutura while repete a execuo dos comandos enquanto as expresses de teste, ou expresses booleanas, retornam condio verdadeira. Na figura 3.8 temos a estrutura de sintaxe e sua interpretao.

Figura 3.8 Estrutura e sintaxe lgica da estrutura de repetio while.

Instrutor: Fernando Wesley Recife / PE - 2012

48

Introduo ao MATLAB- POLI Jnior Engenharia


m = 2; for I = 1:10 for J = 1:10 while I < m if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1; else A(I,J) = 0; end I = I + 1; end end end

Captulo 3

Assim como a anterior, essa estrutura pode ser utilizada de forma encadeada.

EXERCCIO APLICADO 4
Problema 3.4 O mtodo de Newton (ou mtodo de Newton-Raphson) foi desenvolvido no sculo XVII por Isaac Newton e Joseph Raphson e um dos mtodos numricos utilizados para encontrar as razes de equaes de forma rpida e com clculos relativamente simples. A ideia principal do mtodo que atravs do chute de um valor inicial, a funo seja aproximada atravs da linha tangente at interceptar o valor de raiz com um erro extremamente baixo. Neste exemplo, o objetivo do programador usar o MATLAB para calcular uma raiz da funo f(x) = x - x 4, com erro menor do que 10-4 utilizando o mtodo de Newton-Raphson. O mtodo dado pela seguinte expresso:

xi+1 = xi -

( )
( )

clear, clc y1 = inputdlg('digite um nmero inicial'); y1 = str2double(y1);


Instrutor: Fernando Wesley Recife / PE - 2012

49

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

erro = 1; contador = 0; while erro > 0.0001 y1_aux = y1 - (y1^3 - y1 - 4)/(3*y1^2 - 1); erro = abs(y1 - y1_aux); y1 = y1_aux; contador = contador + 1; end contador erro y1

dado ao usurio a oportunidade de escolher o valor do chute inicial do sistema, mas deve-se ressaltar que o mtodo de Newton-Raphson tem condies a serem satisfeitas para que o resultado final tenha coerncia, entre eles: O intervalo de calculo deve possuir a raiz da funo; A funo deve ser diferencivel no intervalo escolhido; a primeira e segunda derivadas no devem trocar de sinal no intervalo escolhido. Neste problema, com o valor inicial escolhidos sendo 2,00 e 8.000.000, os resultados finais sero:
% Para valor de chute inicial igual a 2.00: contador = 4 erro = 5.2603e-008 y1 = 1.7963e+000 % Para valor de chute inicial igual a 8000000: contador = 42 erro = 4.5807e-007 y1 = 1.7963e+000

Instrutor: Fernando Wesley Recife / PE - 2012

50

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

Exerccios de fixao 1. Faa um programa para calcular o salrio semanal de um trabalhador. Voc deve inserir o nmero de horas trabalhadas na semana. O valor de cada hora R$ 12,00 e caso o trabalhador ultrapasse a carga horria de 40 horas semanais, o valor da hora R$ 18,00. Do total, desconte o Imposto (18% do valor total) e imprima o resultado na janela de comando. 2. Use o If para saber se um nmero impar ou par. Coloque ferramentas antibug para cancelar a execuo caso o usurio entre com algum texto ou valor complexo no lugar do valor. (Dica: Os comandos rem e imag facilitam a resoluo desse problema) 3. Faa um programa que gere e escreva todos os nmeros pares entre dois nmeros positivos digitados pelo usurio de forma crescente ou decrescente, a ser escolhido pelo usurio. (Dica: conhea os comandos ceil e floor para auxlio no arredondamento dos valores que no so inteiros) 4. De acordo com a lenda, certa vez uma rainha requisitou os servios de um monge dizendo que o pagamento seria negociado posteriormente. O monge, aps finalizar o servio e necessitando de alimentos, decidiu que o pagamento deveria ser feito com gros de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um gro e os quadros subsequentes, o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria quase impossvel efetuar o pagamento. Faa um algoritmo para calcular o nmero de gros que o monge deve receber. (Dica: para calcular o tempo necessrio para realizar esse calculo, utilize os comandos tic e toc no inicio e final do editor, respectivamente) 5. Para um nmero escolhido pelo usurio, faa um cdigo para encontrar o fatorial desse nmero. 6. A sequncia de Fibronacci obtida a partir de dois nmeros iniciais, sendo o F(1) = 0 e o F(2) = 1, e os demais nmeros so obtidos da soma dos anteriores (ex.: F(2) = F(1) + F(0) = 1; F(3) = F(2) + F(1) = 1 + 1 = 2; e assim sucessivamente). Desenvolva um algoritmo para encontrar o nmero de Fibronacci para o nmero de iteraes que o usurio desejar.

Instrutor: Fernando Wesley Recife / PE - 2012

51

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 3

7. Nas questes anteriores, coloque comandos antibug para evitar entrada de dados incoerentes, como textos, nmeros imaginrios e dados que no permitiriam a resoluo da questo.

Instrutor: Fernando Wesley Recife / PE - 2012

52

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

Captulo 4 Funes
Uma funo um programa elaborado por um usurio que utiliza ou no parmetros de entrada para fornecer uma resposta. Todas as operaes executadas so ocultas ao usurio, sendo considerado como um cdigo caixa preta. At agora utilizamos o prompt de comando para realizar clculos simples. Evolumos para o uso do editor de texto, onde a insero de comandos se torna mais profissional protegendo o prprio cdigo de modificaes involuntrias ou propositais, e no momento da compilao do programa h a depurao do mesmo, indicando o local do erro, caso exista. Uma forma mais evoluda de pensar atravs da utilizao das funes (functions) do MATLAB. As funes so uma sequncia de comandos que aceitam parmetros de entrada, realizam operaes com os parmetros fornecidos e valores previamente escolhidos pelo programador, podem ser chamadas dentro de outras funes, possuem help que pode ser criado e editado pelo programador e por fim fornecem resultados e parmetros de sada. O MATLAB reconhece internamente trs classes de funes: 1. built-in: funo interna. Est implementada em seu ncleo e no visualizvel (Ex.: sin); 2. MATLAB m-file: funo implementada em m-file. visvel e aberto para alteraes (Ex.: polyfit); 3. User m-file: funo criada pelo usurio. Voc pode implementar novos recursos no seu MATLAB criando funes para reas especficas. Utilize os comandos which para achar seu diretrio, e open para visualizar o cdigo. As funes aceitam mltiplos parmetros de entrada e retornam mltiplos parmetros de sada (est uma caracterstica muito peculiar e extremamente prtica do MATLAB). A sintaxe bsica de definio de funes segue o formato a seguir:

Instrutor: Fernando Wesley Recife/PE - 2012

53

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

onde: function: palavra reservada que indica o incio de definio de funo ( grafada de azul); PS1, PS2, . . ., PSN: parmetros de sada; nome: nome da funo; PE1, PE2, . . ., PEM: parmetros de entrada; expresso 1, . . . ,expresso N: expresses que definem as aes a serem executadas pela funo.

OBSERVAO: a funo e o arquivo m-file devem ter o mesmo nome.


Em relao aos parmetros de sada, se a funo for chamada: 1. com menos parmetros que o declarado, a funo retornar apenas parmetros fornecidos; 2. com mais parmetros que o declarado, o MATLAB acusar erro (Too many output arguments parmetros de sada em excesso); 3. se nenhum parmetro for indicado, funo retornar apenas o valor do primeiro parmetro. A seguir temos um exemplo de criao de uma funo:
function [s,v] = muv(s0, v0, a, t) s = s0 +v0*t + a/2*t.^2; v = v0 + a*t;

A seguir temos o exemplo de como uma funo deve ser chamada, sempre na janela de comandos.
>> [s,v] = muv(10, 2, 3.5, 60) s = 6430 v = 212

Instrutor: Fernando Wesley Recife/PE - 2012

54

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

facultado ao usurio escolher que aparea apenas uma ou nenhuma das variveis de sada, caso deseje apenas ter conhecimento de uma das variveis ou apenas gerar valores para lan-los em outra funo.
>> [s] = muv(10, 2, 3.5, 60) s = 6430

DICA: 1. O nmero de arquivos deve ser igual ao nmero de funes; 2. Utilize funes diferentes para objetivos diferentes; OBSERVAO: Os comandos nargin (nmero de argumentos de entrada) e nargout (nmero de argumentos de sada) podem ser usados combinados com estruturas condicionais de programao para eliminar bugs de operador.
>> nargin muv ans = 4 >> nargout muv ans = 2

Como j foi dito, o MATLAB armazena suas variveis em uma rea da memria que pode ser visualizada pelo workspace. As funes trabalham com variveis locais, isto , ficam armazenadas em reas de memria prpria, independente do workspace. Os escopos das variveis do workspace e as variveis locais podem ser definidas da seguinte forma: Variveis do workspace no so reconhecidas dentro das funes; Variveis locais de funes no so reconhecidas no MATLAB. Parmetros de entrada e sada so a forma (interface) mais adequada para troca de dados entre o workspace do MATLAB e ambientes internos de funes. Outra forma de compartilhamento de troca de dados entre workspace e funes so as variveis globais. Variveis criadas no workspace so
Instrutor: Fernando Wesley Recife/PE - 2012

55

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

reconhecidas por qualquer funo que explicite sua categoria como global em seu cdigo. Para declarar uma varivel como global basta escrever, no cdigo, a palavra global seguida da(s) varivel(is) a serem declaradas. DICA: como as variveis globais podem ser reconhecidas por qualquer funo, evite declarar variveis com nomes de fcil conflito como, x, m ou i. Utilize os comandos whos, clear e isglobal para gerenciar variveis globais.

EXERCCIO APLICADO 1

Necessita-se, em uma aplicao que envolve o MATLAB e diversas mquinas que so oriundas de diversos pases, de um comando para converter entre as unidades de temperatura Celsius, Fahrenheit e Kelvin. Para isso, necessrio que o operador entre com o valor na unidade que conhecida, e informar ao programa para que unidade que deseja a converso. Sabe-se que tais escalas possuem valores conhecidos de ponto de fuso e ebulio, dos quais se pode tirar por interpolao as relaes entre as temperaturas.

Instrutor: Fernando Wesley Recife/PE - 2012

56

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

Utilizaremos vrias funes para resolver esse problema, sendo a primeira temperatura a responsvel pela insero dos parmetros iniciais e chamada da funo que calcular e imprimir o resultado em tela.
function temperatura clc, clear % % % % O objetivo dessa funo que o operador possa converter os valores de temperatura entre celsius, fahrenheit e kelvin. O usurio deve digitar c para celsius, f para fahrenheit e k para kelvin para indicar entre quais unidades deseja transformao % declarao de variveis globais

global temp unidadefinal

msgbox('Coloque c para Celsius, f para Fahrenheit e k para Kelvin'); pause(3) % pausa o programa por 3 segundos temp = inputdlg('Qual o valor na unidade inicial'); unidadeinicial = inputdlg('De qual unidade voc deseja converter'); unidadefinal = inputdlg('Para qual unidade voc deseja converter'); % Testes 'anti-bug' temp = str2double(temp); unidadeinicial = char(unidadeinicial); unidadefinal = char(unidadefinal); a = isfinite(temp); %verifica se a temperatura finita.

if a == 0 errordlg('O valor da temperatura no foi reconhecida!!','Ateno!!!'); return end %teste antibug para temperatura inicial if unidadeinicial ~= 'c' & unidadeinicial ~= 'f' & unidadeinicial ~= 'k' errordlg('A unidade inicial de converso no foi identificada!!','Ateno!!!'); return end %teste antibug para temperatura final if unidadefinal ~= 'c' & unidadefinal ~= 'f' & unidadefinal ~= 'k' errordlg('A unidade final de converso no foi identificada!!','Ateno!!!'); return end % Testes para chamada das funes de resoluo do problema if unidadeinicial == 'c' celsius end if unidadeinicial == 'f' fahrenheit end if unidadeinicial == 'k' kelvin end

Instrutor: Fernando Wesley Recife/PE - 2012

57

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

As sub-rotinas celsius, fahrenheit e kelvin so escritas em arquivos separados, e obrigatoriamente devem estar na mesma pasta da funo temperatura, para que possam ser chamados corretamente.
function celsius global temp unidadefinal if unidadefinal == 'c' resultado = temp; mostrar = 'a temperatura obtida em celsius : '; end if unidadefinal == 'f' resultado = temp*1.8 + 32; mostrar = 'a temperatura obtida em fahrenheit : '; end if unidadefinal == 'k' resultado = temp + 273; mostrar = 'a temperatura obtida em kelvin : '; end resultado = num2str(resultado); s = strcat(mostrar, resultado, ' ', unidadefinal)

O comando strcat utilizado para unir vrias strings em uma, concatenando-as de forma que o resultado do problema pode ser mostrado em uma linha apenas, ou uma caixa de dialogo desejada (msgbox, warndlg, errordlg, etc.) Para as demais funes:
function fahrenheit global temp unidadefinal if unidadefinal == 'c' resultado = (temp-32)/1.8; mostrar = 'a temperatura obtida em celsius : '; end if unidadefinal == 'f' resultado = temp; mostrar = 'a temperatura obtida em fahrenheit : '; end if unidadefinal == 'k' resultado = (temp-32)/1.8 + 273; mostrar = 'a temperatura obtida em kelvin : '; end resultado = num2str(resultado); s = strcat(mostrar, resultado, ' ', unidadefinal)

Instrutor: Fernando Wesley Recife/PE - 2012

58

Introduo ao MATLAB- POLI Jnior Engenharia


function kelvin global temp unidadefinal if unidadefinal == 'c' resultado = temp - 273; mostrar = 'a temperatura obtida em celsius : ' end if unidadefinal == 'f' resultado = 1.8*(temp - 273) + 32; mostrar = 'a temperatura obtida em fahrenheit : ' end if unidadefinal == 'k' resultado = temp; mostrar = 'a temperatura obtida em kelvin : ' end resultado = num2str(resultado); s = strcat(mostrar, resultado, ' ', unidadefinal)

Captulo 4

Assim o operador obter de forma rpida a converso entre as unidades 4.2 Funes de Importao e Exportao Na grande maioria dos casos, os dados necessrios execuo das subrotinas no se encontram disponveis de forma explcita. Algumas vezes necessrio um tratamento prvio de determinadas informaes para garantir a compilao de cdigos. Da mesma forma que importar os dados, importante tambm exportar. Embora o MATLAB oferea diversas formas de importao manipulao e exportao de dados, veremos apenas as mais importantes nossa rea. Inicialmente trabalharemos com as funes de exportao e importao, logo aps estudaremos as funes de tratamento de dados e por ltimo aprenderemos como criar e manipular grficos em duas e trs dimenses. dlmread: l uma matriz de um arquivo ASCII.

dlmwrite: grava uma matriz de um arquivo ASCII.

Instrutor: Fernando Wesley Recife/PE - 2012

59

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

load: l variveis do tipo .mat (formato binrio proprietrio).

save: grava variveis do tipo .mat.

O exemplo abaixo mostra como funciona a exportao e importao de uma matriz que se encontra no workspace para o formato ASCII. O resultado pode ser visto no bloco de notas, que l o formato em questo.

>> A = [1 2 3; 4 5 6; 7 8 9]

A = 1 4 7 2 5 8 3 6 9

>> dlmwrite('matriz.txt', A, '-')

Dessa forma da matriz A foi gerado um arquivo com nome matriz.txt que pode ser aberto no bloco de notas (teste isso!) e que como delimitador, usa o hfen (-). O delimitador utilizado para indicar ao MATLAB e demais programas como separar os itens que esto na mesma linha. O passo inverso para importar uma matriz que existe e utiliz-la no MATLAB simples e visto abaixo:
>> B = dlmread('matriz.txt','-')

B = 1 4 7 2 5 8 3 6 9

Instrutor: Fernando Wesley Recife/PE - 2012

60

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

importante verificar o delimitador utilizado, pois a importao de dados atravs de delimitadores errados fornecem, consequentemente, matrizes com dados incorretos para o sistema. Pode ser utilizado como delimitador qualquer caractere do sistema, os mais comuns so o espao ( ) e a vrgula (,). Outras funes de importao e exportao, assim como suas respectivas descries podem ser encontradas na tabela 4.1.
Extenso Descrio Funo Retorno MAT Formato MATLAB load Variveis no arquivo CSV N separados por , cvsread Matriz numrica DAT Texto formatado importdata Matriz numrica DLM Nmeros delimitados dlmread Matriz numrica TAB Nmeros tabulados dlmread Matriz numrica XLS Planilha do MS-Excel xlsread Matriz numrica e cell-array WK1 Planilha do Lotus 123 wk1read Matriz numrica e cell-array CDF* Common Data Format cdfread cell-array e registro CDF FITS* Flexible Image Transport System fitsread Formato FTIS HDF* Hierarchical data Format hdfread Formato HDF AVI Formato AVI(animao) aviread Formato MATLAB movie BMP Formato BMP imread Matrizes de cores (true JPEG Formato JPEG color) e ndice GIF Formato GIF (mapeamento) TIFF Formato XDW Formato XDW CUR Formato CUR ICO Formato ICO RAS Formato RAS (raster Sum) PBM Formato PBM PGM Formato PGM PPM Formato PPM AU Formato AU (udio Sun) auread Dados de freqncia SND Formato SND (udio Sun) WAV Formato WAV (udio MS) wavread Dados de frequncia Tabela 4.1 funes gerais para importao e exportao de dados. (*) Padro de arquivos para troca de dados criado pela NASA.

Caso no se tenha certeza qual tipo de dados a serem manipulados, use a funo importdata. Essa funo recebe qualquer extenso da tabela anterior. Mas, se ela recebe qualquer extenso ento porque utilizar as outras? A funo importdata uma funo genrica e como tal no contm todas as caractersticas de armazenamento que cada uma tem individualmente. Como ela possui um cdigo de armazenamento padro, pode ser possvel um trabalho a mais para conseguir extrair o que se deseja.

Instrutor: Fernando Wesley Recife/PE - 2012

61

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

Para saber quais so as funes que podem ser importadas e exportadas pelo MATLAB e os comandos necessrios para que ocorram tais modificaes digite >> help fileformats. 4.3 Funes de tratamento Muitas vezes necessitamos exportar dados para visualizao na janela de comandos do MATLAB, entretanto o formato no adequado frente situao em questo. Para resolver isso, utilizamos at agora caixas de dilogo (msgbox, errordlg, warndlg) e no problema 2.5 foi visto o comando strcat que concatena vrias strings em apenas uma, o que torna a exibio de resultados mais profissional. Para resolver esse problema de forma definitiva trabalharemos com o comando ou funo fprintf. Podemos definir as atribuies dessa funo como a gravao de dados em um arquivo formatado. Sua sintaxe pode ser observada a seguir.

Caracteres so utilizados nos flags como controladores de alinhamento e sinal. Eles esto resumidos na tabela 4.2.

Caractere + 0

Descrio Alinhamento esquerda Sempre imprime sinal dos nmeros Preenche espaos com 0 em vez de
Tabela 4.2 Caracteres dos flags do comando fprintf.

Exemplo %-5.2d %+5.2d %05.2d

O parmetro T define o nmero de dgitos esquerda do ponto decimal. Para definio do nmero de dgitos direita temos o parmetro de entrada P. O parmetro C define a identificao de notao como mostra a tabela 4.3.

Instrutor: Fernando Wesley Recife/PE - 2012

62

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

Formato %c %s %d %f %e

Notao Caractere Cadeia de caractere Decimal Ponto flutuante Exponencial

Exemplo fprintf(%c,a) fprintf(%s,abc) fprintf(%5.3d,pi) fprintf(%5.3f,pi) fprintf(%5.3e,pi)

Resultado a abc 3.142e+000 3.142 3.142e+000

Tabela 4.3 Caracteres de identificao de notao.

Alguns caracteres especiais podem ser utilizados para atribuir funes extras ao fprintf. So postos sempre aps o primeiro conjunto de parmetros e podem ser resumidos na tabela 4.4.

Caractere \b \f \n \r \t \\ \ %%

Nome backspace form feed new line carriage return horizontal tab backslash quotation mark percent character

Descrio Retorno de caractere Avano de linha Pula linha Retorno de linha Tabulao horizontal Caractere barra invertida Caractere aspas Caractere porcentagem %

Tabela 4.4 Caracteres especiais do fprintf.

Instrutor: Fernando Wesley Recife/PE - 2012

63

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

Exerccios de fixao 1. Crie um comentrio aps o incio das funes do exerccio proposto explicando sobre o objetivo de cada uma delas, verificando que o mesmo aparecer como descrio da ajuda quando utilizado o help nome da funo. 2. Escreva uma function que calcule a rea de um trapzio, sendo a a base menor, b a base maior e h a altura do mesmo. 3. Escreva uma function para converter de coordenadas cartesianas a coordenadas polares, inclusive quando os valores inseridos forem em trs dimenses. 4. Faa uma function na qual o usurio deva acertar o nmero aleatrio entre 1 e 5 escolhido pelo computador. 5. Crie uma funo para que o programa indique qual o maior divisor comum entre dois nmeros digitados pelo usurio. Utilize comandos antibugs para evitar insero de valores incoerentes. 6. Para uma equao y = ax + bx + c, sendo as entradas a, b e c crie uma function que diz se as razes so reais ou imaginrias, mostrando-as ao usurio. 7. Crie uma funo que leia trs nmeros e os imprima em forma crescente. Crie uma restrio para que os valores inseridos sejam inteiros entre 1 e 10, e o programa deve imprimir o nome (no o valor) e a ordem dos valores em apenas uma linha. 8. Crie uma matriz A = ones(3) e exporte-a para o Microsoft Excel, de forma que os dados da matriz fiquem nas clulas A1:C3 da primeira planilha. Use clc e clear para deletar os dados iniciais e importe a matriz para o MATLAB, verificando dessa maneira se houve correta importao e exportao de dados. 9. Utilizando o Microsoft Paint faa uma figura qualquer salvando-a em formato jpeg no diretrio que est sendo utilizado para as aulas de MATLAB. Utilize o comando >> A = imread(nome do arquivo.jpg) e aps utilize o comando image(A) para visualizar a figura no MATLAB.

Instrutor: Fernando Wesley Recife/PE - 2012

64

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 4

10. Em relao visualizao de valores no MATLAB, para as expresses B = 12345.6789 e C = aula digite os seguintes comandos verifique o que ocorre. a) fprintf('%-5.2d',B) b) fprintf('%+5.2d',B) c) fprintf('%-2.5d',B) d) fprintf('%-2.5f',B) e) fprintf('%-5.2d\n',B) f) fprintf('%-5.2d\t',B) g) fprintf(%s\f, C) h) fprintf(' exerccio%s\n ',C)

Instrutor: Fernando Wesley Recife/PE - 2012

65

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

Captulo 5 Polinmios
5.1 Polinmios e suas razes No MATLAB, os polinmios so expressos como vetores linhas, sendo sempre iniciada do coeficiente do maior termo presente no mesmo. Para um polinmio f(x) = 33x + 14x 65, o vetor que representa o polinmio acima :
>> f = [33 14 -65]

Independente do grau do polinmio, o mesmo deve sempre iniciar do maior termo presente, e terminar no termo independente de varivel. Caso no haja esse termo no polinmio, indicar o valor zero no lugar do mesmo. A funo g(x) presente abaixo exemplifica esses casos. g(x) = 2x4 3x + 7x
>> = g = [2 0 -3 7 0]

5.1.1 Razes de um polinmio Para o clculo de razes de um polinmio, utiliza-se o comando roots, e como argumento utiliza-se o vetor linha representando o polinmio desejado. f(x) = x - 7x + 12
>> f = [1 -7 12] f = 1 -7 12

>> x = roots(f) x = 4 3

O usurio deve identificar que para um polinmio de grau n, haver n razes que solucionam o sistema, sendo as mesmas reais e/ou imaginrias. O exemplo abaixo mostra um polinmio de terceiro grau, que como resultado uma raiz real e duas imaginrias. g(x) = -1x + 4x + 8
>> g = [-1 4 0 8]
Instrutor: Fernando Wesley Recife/PE - 2012

66

Introduo ao MATLAB- POLI Jnior Engenharia


g = -1 4 0 8

Captulo 5

>> x = roots(g) x = 4.4111e+000 -2.0557e-001 +1.3309e+000i -2.0557e-001 -1.3309e+000i

O usurio pode perceber ainda que as razes complexas do caso anterior so conjugadas. 5.1.2 Encontrar polinmio a partir das razes Para o caso em que o usurio possui as razes do sistema, mas deseja obter o polinmio caracterstico pode utilizar o comando poly, inserindo como argumento um vetor linha cuja entrada so as razes do sistema. Partindo do mesmo princpio visto no item anterior, um vetor que contenha um nmero n de razes, fornecer um polinmio com grau n. Por exemplo, caso o usurio deseje conhecer o polinmio cujas razes so x1 = 2 e x2 = -6, deve fazer da seguinte maneira.
>> r = [2 -6] r = 2 -6

>> x = poly(r) x = 1 4 -12

Assim, o polinmio responsvel por tais razes f(x) = x + 4x 12. Da mesma forma pode-se encontrar polinmios para funes com graus maiores. Para encontrar o polinmio caracterstico da funo com as cinco razes especificadas abaixo, deve-se proceder da seguinte forma: x1 = -5; x2 = -2,5; x3 = -1; x4 = 1 e x5 = 4
% x1 = -5; x2 = -2,5; x3 = -1; x4 = 1 e x5 = 4 >> s = [-5 -2.5 -1 1 4]
Instrutor: Fernando Wesley Recife/PE - 2012

67

Introduo ao MATLAB- POLI Jnior Engenharia


s =

Captulo 5

-5.0000e+000 -2.5000e+000 -1.0000e+000 1.0000e+000 4.0000e+000 >> r = poly(s) r = Columns 1 through 5 1.0000e+000 3.5000e+000 -1.8500e+001 -5.3500e+001 Column 6 5.0000e+001 1.7500e+001

Assim, o polinmio que engloba todas as razes vistas anteriormente : f(x) = x5 + 3,5x4 0,185x - 0,535x - 0,175x + 5 O comando poly tambm retorna o polinmio especfico de uma matriz quadrada, conforme exemplo a seguir:

>> A = [1 2; 3 4] A = 1 3 2 4

>> b = poly(A) b = 1.0000e+000 -5.0000e+000 -2.0000e+000

5.2 Multiplicao e diviso de polinmios 5.2.1 Multiplicao polinomial Para efetuarmos a multiplicao entre dois polinmios, devemos utilizar o comando conv, processo este tambm chamado de convoluo. Assim, para os polinmios: A = 2x + 5 e B = -x + 4
>> a = [2 5]
Instrutor: Fernando Wesley Recife/PE - 2012

68

Introduo ao MATLAB- POLI Jnior Engenharia


a = 2 5

Captulo 5

>> b = [-1 4] b = -1 4

>> c = conv(a,b) c = -2 3 20

O polinmio resultante de multiplicao c(x) = -2x + 3x + 20 Para os polinmios D(x) = 2x - 3x +12 e F(x) = -14x + 3, deseja obter a seguinte multiplicao (-D x 3,5F):
>> d = [2 -3 12] d = 2 -3 12

>> f = [-14 3] f = -14 3

>> g = conv(-d,3.5*f) g = 9.8000e+001 -1.6800e+002 6.1950e+002 -1.2600e+002

Assim, o polinmio de terceiro grau obtido acima representa o resultado da multiplicao realizada. 5.2.2 - Diviso polinomial A diviso polinomial ou deconvoluo pode ser realizada pelo comando deconv. O resultado dessa operao retorna um vetor q quociente e um vetor r resto da diviso. A sintaxe dessa funo a seguinte:
[r,q] = deconv(a,b)

Instrutor: Fernando Wesley Recife/PE - 2012

69

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

Para realizar a diviso da funo a(x) = 3x - 3x + 6 pela funo b(x) = 3x, o resultado pode ser visto logo abaixo.
>> a = [3 -3 6] a = 3 >> b = [3] b = 3 >> c = deconv(a,b) c = 1 -1 2 -3 6

O resultado impresso a funo c(x) = x - x + 2. Na funo acima no h resto de diviso. Para verificar, utilize o comando [c,d] = deconv(a,b), e a visualizao fornecer resultado de resto como zero. Mas para a diviso das duas funes abaixo, h resto de diviso. R(x) = x5 4x4 + 3x - 2 S(x) = x + 2x
>> r = [ 1 -4 0 3 0 -2] r = 1 -4 0 3 0 -2

>> s = [3 0 2 0] s = 3 0 2 0

>> [w,k] = deconv(r,s) w = 3.3333e-001 -1.3333e+000 -2.2222e-001 k = Columns 1 through 5 0 Column 6


Instrutor: Fernando Wesley Recife/PE - 2012

5.6667e+000

4.4444e-001

70

Introduo ao MATLAB- POLI Jnior Engenharia


-2.0000e+000

Captulo 5

Pode ser visto que o vetor W(x) representa o quociente da diviso, enquanto o vetor k representa o polinmio representativo do resto da diviso.

5.3 Simplificao de polinmios em fraes parciais Uma forma para simplificar a visualizao de diviso de polinmios atravs da utilizao das fraes parciais. Verifique o exemplo a seguir:

Partindo da relao acima, pode-se utilizar o comando residue para obter a simplificao acima em fraes parciais. A sintaxe da funo residue a seguinte: [r,p,k] = residue(A,B) Onde: r = numeradores p = denominadores k = termo livre A execuo dos clculos para encontrar os termos desejados ocorre da seguinte maneira:
>> A = [1 -8 16] A = 1 -8 16

>> B = [1 -4 2] B = 1 -4 2

>> [r,p,k] = residue(A,B) r =


Instrutor: Fernando Wesley Recife/PE - 2012

71

Introduo ao MATLAB- POLI Jnior Engenharia


1.2132e-001 -4.1213e+000

Captulo 5

p = 3.4142e+000 5.8579e-001 k = 1

Assim, o resultado obtido representa a seguinte frao parcial:

Tambm pode ser obtido resultado caso haja interesse do usurio em realizar o clculo para obter as funes de numerador e denominador a partir dos resduos, polos e do termo direto.

5.4 Avaliao de valores de polinmios Caso se deseje saber o valor que o polinmio p(x) possui para um certo valor de x, deve-se definir primeiramente o x, para logo aps realizar o clculo do polinmio em questo. f(x) = 3x - 4x + 2x,
>> x = 4 x = 4 >> f = 3*x^3 -4*x^2 + 2*x f = 136

x=4

Instrutor: Fernando Wesley Recife/PE - 2012

72

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

Da forma acima se pode obter o valor da funo em certo ponto definido. Caso se deseje obter o valor da funo para uma srie de pontos, pode-se proceder de duas formas. Na primeira forma deve ser criado um vetor por meio de incrementos, e aps isso criar a funo devendo-se ter cuidado para realizar a multiplicao termo a termo (utilizando-se o ponto antes da multiplicao da varivel). Na segunda forma pode-se utilizar o comando polyval, que funciona na seguinte sintaxe: r = polyval(p,x) Onde p = polinmio em vetor linha x = intervalo desejado Abaixo, um exemplo utilizando os dois comandos:
% Primeira forma de clcular >> x = 2:6 x = 2 3 4 5 6

>> f = 3*x.^3 - 4*x.^2 +2*x f = 12 51 136 285 516

% Segunda forma de calcular >> x = 2:6 x = 2 3 4 5 6

>> f = [3 -4 2 0] f = 3 -4 2 0

>> x = polyval(f,x) x = 12
Instrutor: Fernando Wesley Recife/PE - 2012

51

136

285

516

73

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

Para ambas as formas utilizadas, os resultados devem ser iguais. 5.5 Integrao e derivada de polinmios 5.5.1 Derivao de polinmios Para a derivao de polinmios, o mesmo deve ser posto no formato de vetor linha, e aps isso, utilizar o comando polyder. derivar. Para o polinmio f(x) = x + 3x + 5x + 10
>> A = [1 3 5 10] A = 1 3 5 10

O argumento para a

funo polyder o vetor linha que representa o polinmio que se deseja

>> B = polyder(A) B = 3 6 5

5.5.2 Integrao de polinmios Para a integrao de um polinmio, a funo utilizada deve ser a polyint. A funo polyint deve possuir, como primeiro argumento, o polinmio que se deseja integrar inserido como vetor linha. Caso se deseje inserir um termo constante na integrao, o mesmo deve ser posto como segundo argumento da funo polyint. Abaixo, o primeiro caso (varivel B) apenas mostra a integrao com apenas um argumento, assumindo-se que o termo constante igual a zero. No segundo caso (varivel C), a integrao realizada e o fator constante posto como 4,3.
>> A = [2 5 -4 12 5] A = 2 5 -4 12 5

>> B = polyint(A)
Instrutor: Fernando Wesley Recife/PE - 2012

74

Introduo ao MATLAB- POLI Jnior Engenharia


B = Columns 1 through 5 4.0000e-001 5.0000e+000 Column 6 0 >> C = polyint(A, 4.3) C = Columns 1 through 5 4.0000e-001 5.0000e+000 Column 6 4.3000e+000 1.2500e+000 -1.3333e+000 1.2500e+000 -1.3333e+000

Captulo 5

6.0000e+000

6.0000e+000

Instrutor: Fernando Wesley Recife/PE - 2012

75

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

Exerccios de fixao 1. Encontre as razes dos polinmios abaixo: a) A(x) = 4x - 3x + 5 b) B(x) = x - 4x + 2x -12 c) C(x) = x4 x - 9 d) D(x) = x4 4x - 4x e) E(x) = x8 4x6 + 34x5 - 2.55x +32x 2. Encontre os polinmios caractersticos a partir das razes abaixo: a) x1 = -2,4; x2 = 4,2 b) x1 = 4; x2 = 4,2; x3 = -2,4 + 0,11i c) x1 = 0; x2 = 1,3 + 2i; x3 = -1,3 - 2i; x4 = 5 d) x1 = 1; x2 = 2 ; x3 = 3; x4 = 4 3. Partindo dos polinmios fornecidos, encontre os resultados das seguintes operaes: R(x) = x - x - 5x + 7 S(x) = -4x + 7 T(x) = 2x -1 a) A(x) = 2R x T b) B(x) = R x 0,4T x 0,67S c) C(x) = S x 4,5RT d) D(x) = S/(R x 1,5T) e) E(x) = (5,6T/R)/(12,8S/T) 4. Simplifique para fraes parciais as divises polinomiais abaixo: a) A(x)/B(x) = (2x + 4x - 5x + 7)/(x - 4x) b) C(x)/D(x) = (-4x5 3x + 5x)/(x + 9x +3) c) E(x)/F(x) = (9x + 12x 4)/(23x - 12) 5. Encontre as derivadas e as integrais dos polinmios abaixo a) A(x) = 3x4 14x - 4x
Instrutor: Fernando Wesley Recife/PE - 2012

76

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 5

b) B(x) = -2x + 7x - 15x + 7 c) C(x) = 4x - 3x + 5 d) D(x) = 7x7 - 14x5 - 4x4 + 3x +3

Instrutor: Fernando Wesley Recife/PE - 2012

77

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Captulo 6 Grficos
6.1 Grficos em duas dimenses (2D) Agora mostraremos os recursos disponveis no MATLAB de criao e manipulao de figuras para a apresentao de resultados em formato grfico. O conjunto desses recursos denominado Handle Graphics. 6.1.1 Grficos simples em duas dimenses (2D) Para que os grficos sejam gerados de maneira organizada e de acordo com o desejo do usurio, recomendado utilizar os seguintes passos para a sua criao, seja para duas ou trs dimenses.
Passo 01 02 03 04 05 Nome Preparao dos dados (leitura e tratamento) Seleo e configurao da posio do grfico na janela de exibio Chamada da funo do grfico Selecionar colorao das linhas e smbolos Configurar eixos, legendas e ttulo do grfico
Tabela 6.1 Passo a passo para construo de grficos.

Passo 1:

Na preparao dos dados insere-se os valores a serem

utilizados. Esses valores podem ser obtidos de outros programas atravs da exportao ou serem criados pelo usurio no exato momento da utilizao do MATLAB. Passo 2: Seleciona-se a janela utilizada para exibio do grfico e

coloca-se o grfico da maneira cuja exibio melhor atenda expectativa do usurio. Ser aprendido o subplot, que a forma que o MATLAB oferece para exibio de vrios grficos simultaneamente em apenas uma janela. Essa a etapa do tratamento de grficos que comandos como o subplot pode aparecer. Passo 3: Aps a obteno dos dados e seleo da janela de exibio,

chama-se o grfico. Nesse momento j possvel ver o grfico formado, mas ainda no h uma formatao que possa ser considerada profissional no mesmo. Passo 4: Esse passo importante nos momentos em que

necessrio diferenciar dados em uma mesma figura. Para diferenciao dos

Instrutor: Fernando Wesley Recife/PE - 2012

78

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

grficos entre si, aconselha-se modificar a colorao e o formato das linhas, deixando-as diferentes uma das outras. Passo 5: Por ltimo, mas no menos importante, h o desejo do

usurio de colocar nome nos eixos, titulo e legenda do grfico. Essa etapa a responsvel por tais modificaes. Um exemplo para ilustrar a criao e configurao dos grficos, com o passo a passo acima est abaixo. Passo 1:
x = -3:0.1:3 y = x.*cos(-x)

Passo 2:
figure('Name','Grfico','Number','off','Color','c')

Para mais atribuies consulte as propriedades da figure no help. Passo 3 e 4:


plot(x,y)

plot(x,y,bs)

plot(x,y,r+)

As cores, marcadores e tipo de linhas podem ser resumidos na tabela 6.2. Em relao s cores, essas letras referem a cor dentro das aplicaes do MATLAB, sendo a forma mais simples de representao da mesma. Cor y (amarelo) m (magenta) c (azul-claro) r (vermelha) g (verde) b (azul) w (branca) k (preta) Marcador . (ponto) o (crculo) x (xs) + (cruz) * (estrela) s (quadrado) d (losango) v (tringulo p/ baixo) ^ (tringulo p/ cima) Tipo de Linha : (pontilhado) -. (ponto-trao) -- (tracejado) solid (slida)

Tabela 6.2 Cores, marcadores e tipos de linhas.

Instrutor: Fernando Wesley Recife/PE - 2012

79

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Passo 5
grid legend(curva) xlabel(eixo x) ylabel(eixo y) title(grafico x.cos(-x)) gtext(ponto de inflexo)

No passo 5, os comandos xlabel e ylabel so responsveis por inserir dados nos eixos x e y do grfico. O comando grid responsvel por deixar o grfico com a caracterstica milimetrada. Ainda h os comandos legend, title e gtext, que respectivamente so usados para inserir a legenda do grfico, o ttulo e um texto que pode ser posicionado com o auxlio do mouse em qualquer lugar da imagem. Em caso de dvida, o comando help recomendado para saber mais detalhes a respeito dos comandos acima. O MATLAB possui inmeras estruturas de exibio grfica. Algumas delas podem ser encontradas na tabela 6.3. Comando loglog semilogx(i) impulse step bode polar nichols nyquist zpplot resid sim Atribuio Valor logartmico de x e y. Valor logartmico de x e linear para y. Resposta ao impulso. Resposta ao degrau. Diagrama de BODE. Grficos com eixos de coordenadas polares. Diagrama de Nichols. Diagrama de Nyquist. Zeros e plos de funes transferncia. Anlise de correlaes e correlaes cruzadas. Simulao de modelos matemticos.
Tabela 6.3 Estruturas de exibio grfica.

Para os casos vistos na tabela 6.3, a forma de comando normalmente semelhante a do plot, ex.: >> loglog(x,y) >> semilogx(x,y) >> t = 0:0.1:2*pi; polar(t,sin(2*t).*cos(2*t),'--r')

Instrutor: Fernando Wesley Recife/PE - 2012

80

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

6.1.2 Mltiplos grficos em janelas diferentes Para que vrios grficos sejam exibidos em janelas diferentes, necessrio utilizar o comando figure antes da chamada de cada grfico. Caso no se utilize desse comando, o que ocorrer que apenas o ltimo dos grficos ser visualizado na janela de exibio grfica.
%chamada da primeira janela figure('Name', 'seno(t)') t = 0:0.1*pi:2*pi x = sin(t) plot(t,x) xlabel('t') ylabel('seno(t)') title('seno(t) x t') %chamada da segunda janela figure('Name', 'cosseno(t)') t = 0:0.1*pi:2*pi y = cos(t) plot(t,y) xlabel('t') ylabel('cosseno(t)') title('cosseno(t) x t') %chamada da terceira janela figure('Name', 'logaritmo natural(t)') t = 0:0.1*pi:2*pi z = log(t) plot(t,z) xlabel('t'), ylabel('logaritmo natural(t)'),title('log natural(t)xt')

Instrutor: Fernando Wesley Recife/PE - 2012

81

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.1 Exibio de grficos em diferentes janelas

6.1.3 Mltiplos grficos em uma janela Certas vezes importante para o usurio ter vrios grficos colocados em apenas uma janela, seja para efeito de comparao ou de visualizao de grficos complementares. O MATLAB oferece essa opo ao usurio no qual um exemplo ilustrativo pode ser visto no cdigo abaixo.
x= linspace(0, 2*pi, 30); y= exp(x).*sin(x); z= exp(x).*cos(x); m= 0.09*exp(x).*x; plot(x,y,'r.',x,z,'m^',x,m,'k:') grid on legend('exp(x)*sin(x)', 'exp(x)*cos(x)','0.09*exp(x)*x')

As variveis y, z e m dependem de x, que foi definido utilizando o comando linspace. Uma maneira de mostrar todas as variveis em questo atravs do comando plot, no qual se coloca a varivel inicial, a varivel dependente e a aparncia da linha, que nesse caso importante que se defina para evitar possvel confuso entre as linhas impressas na janela de exibio.

Instrutor: Fernando Wesley Recife/PE - 2012

82

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.2 Exibio grfica do exemplo com vrios grficos em apenas uma janela

Ainda se pode utilizar outra maneira para obter o mesmo resultado, utilizado desta vez o comando hold, responsvel por segurar os grficos na mesma imagem. Assim, antes de se chamar os grficos, ativa-se o hold para que os grficos possam ser impressos na mesma figura. Caso no se utilize o hold on, apenas o ltimo dos grficos chamados pelo plot impresso.
x=linspace(0, 2*pi, 30); y=exp(x).*sin(x); z=exp(x).*cos(x); m=0.09*exp(x).*x; hold on plot(x,y,'r.') plot(x,z,'m^') plot(x,m,'k:') grid on legend('exp(x)*sin(x)', 'exp(x)*cos(x)','0.09*exp(x)*x')

Instrutor: Fernando Wesley Recife/PE - 2012

83

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

6.1.4 Utilizao do comando subplot Uma das desvantagens em exibir vrios grficos, de maneira individual ou conjunta, em janelas diferentes, a poluio visual na qual o usurio fica sujeito, pois dependendo da situao os muitos grficos que so gerados podem no corresponder inteno do programador. Assim, uma forma de remediar essa situao, e que diferente do que visto no item anterior o uso do comando subplot, que responsvel por colocar vrios grficos em apenas uma janela, de forma que a exibio dos grficos no por sobreposio, mas de forma tal que os grficos possam aparecer em janelas menores dentro da janela de exibio, com o operador indicando o local que deve aparecer. O cdigo a seguir contm um exemplo no qual o subplot foi utilizado, onde o resultado pode ser visto na figura 6.3.
t = -2*pi:0.1*pi:2*pi; x = cos(t) subplot(2,2,1) plot(t, x,'r--') axis([-2*pi 2*pi,-1 1]) title('cos(t)') grid on y = sin(t) subplot(2,2,2) plot(t, y,'b*') axis([-2*pi 2*pi,-1 1]) title('sen(t)') grid on z = sin(t).*cos(t) subplot(2,2,3) plot(t, z, 'g-.') axis([-2*pi 2*pi,-1 1]) title('sen(t).cos(t)') grid on subplot(2,2,4) plot(sin(t), cos(t),'k+') axis equal title('sen(t) x cos(t)') grid on

Instrutor: Fernando Wesley Recife/PE - 2012

84

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.3 Exibio grfica da figura resultante do exemplo com o comando subplot

Para facilitar o uso do comando subplot recomenda-se pensar nele como sendo parte de uma matriz, onde cada grfico ou figura ser plotado da mesma maneira utilizada para indexao simples, onde a matriz escolhida foi uma 2x2 e os grficos foram impressos na ordem crescente de nmero de coluna e linha.

6.1.5 Grficos especializados 6.1.5.1 Barras O primeiro dos grficos especializados que ser estudado o de barras. Esse tipo de grfico pode ser criado utilizando o comando bar. Esse tipo de grfico pode ser utilizado para plotar grficos que possuam dados com valores especficos e sejam indexados em ordem crescente como tambm no caso de valores que sejam dependentes de outro valor. O cdigo a seguir apresenta um exemplo que tambm utiliza o comando subplot. Nesse exemplo h, no primeiro grfico, um exemplo no qual a nota de vrias turmas plotada e pode ser comparada atravs do uso do grfico de
Instrutor: Fernando Wesley Recife/PE - 2012

85

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

barras. No segundo grfico h em no eixo das abscissas a varivel t e no eixo das ordenadas a varivel sen(t), o resultado de tais exibies mostrado na figura 6.4.

% primeiro caso: dados sem dependncia turma = [1 2 3 4 5] nota_alunos = [8.8 7.5 4.6 9.6 6.5] subplot(2,1,1) bar(turma,nota_alunos,'r') xlabel('Turma') ylabel('Nota mdia') grid on % segundo caso: dados com dependncia t = 0: 0.25: 4*pi x = sin(t) subplot(2,1,2) bar(t,x,'c') xlabel('t') ylabel('sen(t)')

Uma das desvantagens do uso do grfico em barra que complicado para inserir dados com nomes, como no caso em que o desejo do usurio colocar nomes para cada barra j no prprio cdigo do programa. Uma das formas manuais de se colocar nomes nas barras atravs do comando gtext, onde o usurio pode inserir o texto na posio desejada em qualquer um dos grficos. Percebe-se, ainda, que o uso do comando bar semelhante ao comando plot, e onde configuraes do grfico como cor, textos dos eixos e ttulos so usados os mesmos comandos. Esses comandos so utilizados igualmente para todos os comandos especializados.

Instrutor: Fernando Wesley Recife/PE - 2012

86

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.4 exemplo de exibio em barras.

6.1.5.2 Grfico Pizza (Pie Charts) O grfico pizza (pie charts, em ingls) utilizado quando se deseja saber a porcentagem ou valor de um determinado dado em relao a todos os demais, sendo a soma de todos os dados, quando plotados em porcentagem, igual a 100%. Supondo que no curso de Fundamentos de MATLAB o percentual de alunos por curso seja o exposto abaixo:

Curso Eng. Qumica Eng. Civil Eng. Mecnica Eng. Produo Eng. Eltrica

Porcentagem total (%) 23 13 22 18 20

Instrutor: Fernando Wesley Recife/PE - 2012

87

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Uma forma de representar tais resultados atravs de um grfico em pizza a seguinte:


porcentagem_de_alunos = [18 22 13 27 20]; grafico_pizza = pie(porcentagem_de_alunos); title('porcentagens de alunos no curso') gtext('engenharia gtext('engenharia gtext('engenharia gtext('engenharia gtext('engenharia qumica') civil') mecnica') de produo') naval')

Figura 6.5 grfico em pizza com auxlio do gtext

Infelizmente no h uma maneira simples de colocar os dados escritos no grfico, de forma que represente cada fatia do grfico. Existem na internet funes como a pielabel, na qual o usurio pode diretamente colocar os textos associados a cada valor. Outra forma de se conseguir isso utilizando o comando gtext, que o usurio dever colocar manualmente com auxlio do mouse. A figura resultante aps uso do gtext a figura 6.5. 6.1.5.3 rea O comando area gera um grfico no qual a parte entre o eixo y e a funo visualmente preenchida a partir de dados de um vetor ou matriz. Por
Instrutor: Fernando Wesley Recife/PE - 2012

88

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

definio, a rea preenchida aquele entre a linha definida pelo usurio e a linha que representa y = 0, assim, o comando a ser usado area(x,y). H a possibilidade do usurio definir outro eixo no qual a rea seja preenchida, assim o usurio deve chamar area(x,y,eixodesejado). A cor da rea tambm pode ser escolhida, e para isso o usurio deve inserir o comando da seguinte forma area(x,y, eixodesejado, facecolor, cor desejada em ingls). Um exemplo no qual a funo area chamada mostrado a seguir.
x = -3*pi:0.1*pi:3*pi y = cos(x).*(sin(0.2*x)) subplot(2,1,1) area(x,y, 'facecolor', 'cyan') grid on z = sin(x).*(cos(0.2*x)) subplot(2,1,2) area(x,z,-0.5, 'facecolor', 'yellow') axis tight, grid on

Figura 6.6: Exemplo da funo para mostrar a rea.

6.2 Grficos em trs dimenses (3D)


6.2.1 Grficos simples em trs dimenses O comando para imprimir grficos em 3D de forma simples atravs do plot3. A maneira de fazer a impresso semelhante a utilizada para grficos 2D.
Instrutor: Fernando Wesley Recife/PE - 2012

89

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Entretanto necessrio que o usurio explicite o eixo z, de forma que o complete as trs dimenses. Caso haja o desejo de nomear o eixo z, pode-se usar o zlabel para isso, da mesma forma que ocorre para xlabel e ylabel.
t = 0: 0.01*pi:20*pi; x = sin(t).*log(-0.2*t); y = cos(t).*log(-0.2*t); z = t; plot3(x,y,z); xlabel('x'); ylabel('y'); zlabel('z');

A imagem gerada atravs do comando acima mostrada na figura 6.7.

Figura 6.7 Exemplo utilizando o plot3.

Os comandos para inserir ttulos, legendas e as modificaes em cor de grfico e demais caractersticas continuam as mesmas do caso em duas dimenses. Outra ferramenta que bastante til no estudo dos grficos em trs dimenses view. A funo view(az,el) responsvel no valor az a fazer o

Instrutor: Fernando Wesley Recife/PE - 2012

90

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

deslocamento rotacional horizontal e o valor el responsvel pela rotao vertical realizada. Um exemplo, que verifica vrias perspectivas de vista, e que usa o subplot de forma que vrias imagens podem ser vistas ao mesmo tempo pelo usurio do programa pode ser visto a seguir, sendo o grfico resultante o exposto na figura 6.8.
t = 0: 0.1:14; x = sin(t).*exp(-0.1*t); y = cos(t).*exp(-0.1*t); z = t; subplot(2,2,1); plot3(x,y,z); xlabel('x');ylabel('y');zlabel('z'); title('Perspectiva padro - plot3'); subplot(2,2,2); plot3(x,y,z, 'rd'); xlabel('x');ylabel('y');zlabel('z'); view(-54, -144) title('Az = 54, El = -144'); subplot(2,2,3); plot3(x,y,z, 'k*'); xlabel('x');ylabel('y');zlabel('z'); view(0, 90) title('Az = 0, El = 90'); subplot(2,2,4); plot3(x,y,z, 'mo'); xlabel('x');ylabel('y');zlabel('z'); view(90, 0) title('Az = 90, El = 0');

Instrutor: Fernando Wesley Recife/PE - 2012

91

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.8: Uso do view e subplot para verificar diferentes perspectivas do mesmo grfico com uso do plot3.

6.2.2 Comando Mesh, Contour e Surf Os comandos mesh, contour e surf so utilizados em grficos de superfcies que podem ser visualizados em trs dimenses. O exemplo que ser estudado a seguir o do exemplo do chapu mexicano, e nos auxiliar na compreenso dos comandos. O mesh usado para mostrar a superfcie estudada, mas apenas os pontos dela, de forma que a superfcie no fica slida. O comando meshgrid utilizado para gerar as matrizes x e y que sero utilizadas, de forma que tambm o grfico tambm ter o grid, isto , a aparncia milimetrada em seus eixos. o comando principal aqui, pois ele que gera as matrizes necessrias para formao das superfcies. O comando surf semelhante ao mesh, sendo a diferena que mostrado uma forma slida entre os pontos estudados no mesh. A sua forma de chamada a mesma, sendo chamado surf(z) no lugar do mesh(z), do caso anterior. Ainda h o uso possvel de surfc e meshc, que gera um contorno na

Instrutor: Fernando Wesley Recife/PE - 2012

92

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

regio 2D, conhecida como linhas de contorno na regio abaixo do grfico. A chamada das mesmas semelhante ao mesh e ao surf. Caso o usurio deseje ver apenas o contorno da funo estudada pode usar o comando contour que gera apenas as linhas de contorno, e possui chamada semelhante ao mesh e surf. A funo contour mostra a funo em 2D, e para mostrar a funo em 3D a funo usada deve ser contour3. O exemplo a seguir mostrar todas as funes vistas nesse tpico com auxlio da funo subplot, para que facilite a identificao das diferenas, que embora sejam sutis, existem. O resultado do cdigo a figura 6.9.
figure('Name', 'grficos 3D', 'color', 'white') subplot(3,2,1) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; mesh(z) title('Mesh') subplot(3,2,2) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; surf(z) title('Surf') subplot(3,2,3) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; meshc(z) title('Meshc') subplot(3,2,4) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; surfc(z) title('Surfc') subplot(3,2,5) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; contour(z) title('Contour') subplot(3,2,6) [x,y] = meshgrid(-8:0.5:8); r = sqrt(x.^2 + y.^2); z = sin(r)./r; contour3(z) title('Contour3')

Instrutor: Fernando Wesley Recife/PE - 2012

93

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

Figura 6.9: Exemplo de mesh, surf, meshc, surfc, contour e contour3 para um grfico 3D.

Instrutor: Fernando Wesley Recife/PE - 2012

94

Introduo ao MATLAB- POLI Jnior Engenharia Exerccios de fixao

Captulo 6

1. Para a funo x = sin(t), com -3 < t < 3, use o comando plot para exibir o grfico e associado a ele os seguintes comandos para exibir o eixo. a) axis off b) axis on c) axis square d) axis tight e) axis equal f) axis ([ -pi pi -1 1])

2. Ao se deparar com um grfico que possui difcil definio, inicialmente pode-se tentar diminuir o intervalo de acrscimo dos valores, para que o mesmo apresente melhor nitidez. Entretanto muitas vezes isso pode no ocorrer. O que recomendado nessas situaes o uso do comando fplot. Transcreva o exemplo a seguir e tire suas concluses:
x = 0:0.01:1; %teste com acrscimo de 0.01, 0.001 e 0.0001 subplot(2,1,1) plot(x, cos(1./x)) title('utilizando o plot'); subplot(2,1,2) fplot('cos(1/x)', [0 1]) %no necessrio colocar cos1./x title('utilizando o fplot');

3. No exemplo do subplot, faa os grficos aparecerem de forma que na primeira linha aparea dois grficos lado a lado, o do seno(x) e cosseno(x), na segunda linha aparea apenas o sen(t).cos(t), ocupando o mesmo espao dos dois grficos da primeira linha, e na terceira linha aparea sen(t)xcos(t), tambm ocupando o mesmo espao que os dois primeiros grficos. 4. No exemplo feito para aprendizado do comando bar, experimente substituir o comando bar por barh, bar3 e bar3h para verificar o que ocorre na exibio dos resultados. 5. Em uma cidade, as temperaturas mdias nos dez primeiros dias foram as seguintes, em Celsius: 24, 27, 26, 29, 20, 19, 22, 25, 29, 31. Mostre um grfico em barra com as temperaturas da cidade estudada nesses dias. 6. Comandos exclusivos para grficos do tipo pizza so o explode e o pie3. O pie3 semelhante ao bar3, mostrado na questo anterior. O explode, entretanto, tem como objetivo destacar fatias da pizza, de forma que fiquem separadas da figura inicial. Experimente usar o seguinte comando no exerccio do grfico em pizza. Obs: o comando gtext apenas funciona em grficos 2D.
explode = [0 0 0.5 0 0] porcentagem_de_alunos = [18 22 13 27 20] grafico_pizza = pie(porcentagem_de_alunos, explode)
Instrutor: Fernando Wesley Recife/PE - 2012

95

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 6

7. O MATLAB possui uma ferramenta de animao de grficos comet (2D) e

comet3 (3D). Experimente utiliz-los com os seguintes exemplos abaixo. Obs:


Para que o comet funcione bem, deve-se utilizar um incremento muito pequeno para visualizao do andamento do grfico.
% Caso 2D t = -pi:pi/200:pi x = sin(cos(tan(t)))-cos(tan(sin(t)))-tan(cos(t).*sin(t)); comet(t,x) % Caso 3D t = 0.5*pi:pi/600:5*pi; x = cos(4*t); y = sin(5*t); z = 0.5*t; comet3(x,y,z) % Outro caso 3D t = 0:0.1:100; x = sin(t).*exp(-t/10); y= cos(t).*exp(-t/14); z = t; comet3(x,y,z);

8. Utilize as ferramentas que esto localizadas na barra de ferramentas de figura. Deduza a utilidade de cada uma quando utilizando-as em algum grfico estudado anteriormente, de preferncia 3D.

9. Utilize os comandos cylinder, sphere e ellipsoid de forma que gerem uma superfcie, e depois mostre-a usando algum dos comandos de visualizao de superfcie. Aps criar a esfera, perceba a importncia da utilizao de eixos adequados, como atravs do axis equal. 10. Utilize o comando surf(peaks(60)), e verifique o que ocorre na visualizao quando se utiliza os seguintes comandos: >>shading interp >>shading flat e >>shading faceted. 11. Ainda com o exemplo anterior, aprenda a modificar a escala de cores utilizada. O comando para tal realizao o colormap, que deve ser seguido de um argumento de que cores utilizar. Ex: >> colormap(colorcube). Teste os seguintes argumentos: hot, gray, spring, autumn, summer, winter, bone, white, hsv (padro), flag e pink. No se esquea de inserir a colorbar (na barra de ferramentas) para visualizao dos valores na figura. 12. Embora no seja intuitivo fazer grficos de superfcies no MATLAB, o usurio pode fazer tais grficos utilizando o comando meshgrid, de maneira simples. O cdigo abaixo est escrito para exibir uma superfcie em questo, deixando os demais exemplos para o leitor desenvolver oportunamente.
Instrutor: Fernando Wesley Recife/PE - 2012

96

Introduo ao MATLAB- POLI Jnior Engenharia a) f = -xy exp(-(x+y)); -2<x<2 e -2<y<2


[x,y] = meshgrid(-2:0.1:2, -2:0.1:2); f = -x*y*exp(-(x.^2+y.^2)); surf(x,y,f); xlabel('x'); ylabel('y'); grid on

Captulo 6

b) f = (x 5) + (y ); 4<x< 6 e -1<y<1 c) f = (x cos(x)) + (y + sen(y)) - (xy); -2<x<6 e -2<y<6 d) f = x exp(x - y); -2<x<2 e -2<y<2 e) f = cos(x).sen(y); -<x< e <y< f) f = exp(cos(x.(cos(exp(y)))); -10<x<10 e -5<y<5 g) f = cos(xy) + sen(x) + exp(-y); 4<x<7 e 2<x<5 13. Funes como surf e mesh podem exibir os resultados de funo de bessel. Um exemplo est no cdigo a seguir. Verfique o que ocorre quando se muda o intervalo do meshgrid, e o termo de soma (0.03).
[x,y] = meshgrid(-5:0.5:5); f = abs(besselj(0,abs(x)+abs(y))) + 0.03; surfc(x,y,7*log(f));

Instrutor: Fernando Wesley Recife/PE - 2012

97

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

Captulo 7 MATLAB para anlises numricas


Nesse captulo, o objetivo utilizar as funes do MATLAB para auxiliar em clculos de valores mximos e mnimos de funes, derivadas e integrais entre outros dados. 7.1 Diferenciao No MATLAB as diferenciaes podem ser realizadas de modo simblico. Caso o usurio necessite do resultado numrico, recomenda-se verificar o resultado simblico e efetuar a substituio do resultado de maneira manual. Para derivada de expresses simblicas (apenas o resultado escrito), comumente utiliza-se o diff e o divergence. 7.1.1 Derivadas simblicas - Diff Para chamada do diff, importante que antes da sintaxe da funo, o usurio construa um objeto simblico utilizando o comando syms seguido do nome da varivel desejada (ex.: syms x). A varivel simblica escrita deve ser a utilizada quando a funo for chamada para a diferenciao da maneira literal ou da maneira numrica. As sintaxes de escrita so as seguintes:
syms x declara x como varivel simblica diff(expresso) deriva em relao varivel simblica declarada pelo usurio diff(expresso, y) deriva a expresso em relao varivel y (tambm declarada simbolicamente pelo usurio) diff(expresso, n) deriva a expresso n vezes, sendo n um nmero inteiro. diff(expresso, y, n) deriva a expresso em relao a y n vezes.

Como exemplos:
>> syms x >> y = sin(x) y = sin(x)

Instrutor: Fernando Wesley Recife/PE - 2012

98

Introduo ao MATLAB- POLI Jnior Engenharia


>> r = diff(y) r = cos(x)

Captulo 7

Derivada de 2 sen(x) em relao a y.


>> syms x >> diff(2*sin(x)^2) ans = 4*cos(x)*sin(x)

Para a derivada de (2 sen(x)), o resultado se mostra diferente:


>> syms x >> diff((2*sin(x))^2) ans = 8*cos(x)*sin(x)

Para calcular a derivada segunda da expresso acima em relao a x, utiliza o argumento 2 aps o comando diff.
>> syms x >> diff((2*sin(x))^2, 2) ans = 8*cos(x)^2 - 8*sin(x)^2

Caso se tenha uma funo que varie simultaneamente em relao x e a t, e deseja-se calcular a derivada da mesma em relao varivel t, utiliza-se como argumento o t que deve ser declarado de forma simblica anteriormente. Ex.: Para a funo xt sen(x).
>> syms x t >> y = t^2*x*sin(x) y = t^2*x*sin(x) >> r = diff(y,t) r = 2*t*x*sin(x)

Calculando-se a derivada da mesma funo anterior duas vezes em relao a t, a maneira de inserir os argumentos deve ser feita de seguinte modo.
>> r = diff(y,t,2) r = 2*x*sin(x)

Instrutor: Fernando Wesley Recife/PE - 2012

99

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

Ainda se pode derivar a expresso acima em relao x e a t concomitantemente. Entretanto a funo diff aceita no mximo trs parmetros, de forma tal que o usurio no poder derivar uma funo em relao a mais de duas variveis de apenas uma vez. Nesse caso facultado ao usurio realizar vrias etapas para chegar no resultado desejado.
>> r = diff(y,x,t) r = 2*t*x*sin(x)

Caso o usurio insira uma expresso que no seja simblica, o resultado ser fornecido na forma de matriz vazia. Isso ocorrer mesmo se o valor inserido for numericamente definido no programa.
>> diff(cos(5)) ans = []

7.1.2 Funo jacobian A funo jacobian, utilizada para calcular a matriz jacobiana da funo semelhante funo diff, vista anteriormente, mas utilizada para calcular o gradiente da funo em relao s suas dimenses. necessrio inserir as variveis simblicas nesse caso. A sintaxe da funo jacobian a seguinte: jacobian(f,v) onde f a funo desejada e v o vetor desejado para derivao. O jacobiano pode ser encontrado para casos com duas e trs dimenses. Os exemplos a seguir fornecem compreenso sobre o comando jacobian. Em duas dimenses:
>> syms x y >> r = sin(x); s = cos(y) s = cos(y) >> J = jacobian([r;s], [x y]) J =

Instrutor: Fernando Wesley Recife/PE - 2012

100

Introduo ao MATLAB- POLI Jnior Engenharia


[ cos(x), [ 0]

Captulo 7

0, -sin(y)]

Em trs dimenses:
>> syms r l f >> x = r*cos(l)*cos(f); y = r*cos(l)*sin(f); z = r*sin(l); >> J = jacobian([x; y; z], [r l f])

J =

[ cos(f)*cos(l), -r*cos(f)*sin(l), -r*cos(l)*sin(f)] [ cos(l)*sin(f), -r*sin(f)*sin(l), [ sin(l), r*cos(l), r*cos(f)*cos(l)] 0]

7.2 Limites funo limit O limite representa de forma matemtica a forma que uma funo se comporta quando a mesma se aproxima de um determinado valor. Os limites so utilizados de maneira ampla no clculo diferencial e na anlise numrica. Para o MATLAB fornecer os limites tambm necessrio que haja a definio das variveis simblicas (syms) antes do uso da funo limit. A sintaxe da funo limit a seguinte:
syms x t h declara as trs letras como variveis simblicas limit(F,x,a) Calcula o limite da funo F quando o valor de x a. limit(F) Calcula o limite da funo tomando a = 0 limit(F,x,a, right) ou limit(F,x,a,left) Calcula o limite da funo F utilizando o valor a na direita ou esquerda.

Os exemplos a seguir exemplificam o uso da funo limit.

Instrutor: Fernando Wesley Recife/PE - 2012

101

Introduo ao MATLAB- POLI Jnior Engenharia


>> syms x;

Captulo 7

>> limit(sin(x)/x) ans = 1

Quando no h definio do valor desejado para o a, o limite calculado para 0.


>> syms x >> limit(cos(x)/x) ans = NaN

Para calcular o limite da funo F(x) = x-2/(x-4) quando x tende a 2, as seguintes linhas de comando podem ser utilizadas.
>> syms x >> limit((x-2)/(x^2-4),2) ans = 1/4

Para calcular os limites da funo 1/x direita e esquerda quando ambos os limites tendem a zero, o cdigo a ser utilizado o seguinte:
>> syms x >> limit(1./x,x,0,'right') ans = Inf >> syms x >> limit(-1./x,x,0,'left') ans = -Inf

Caso haja dvida por parte do leitor a respeito dos valores acima, podese criar um grfico para mostrar o comportamento da funo 1/x.
>> x = -1:0.01:1;

Instrutor: Fernando Wesley Recife/PE - 2012

102

Introduo ao MATLAB- POLI Jnior Engenharia


>> y = 1./x; >> plot(x,y)

Captulo 7

Como resultado surge o seguinte grfico:

Figura 7.1: Grfico da funo f = 1/x

Ainda pode ser calculado o limite de varias funes de maneiras consecutivas, inserindo-as em um vetor, onde cada elemento deve representar uma funo, no caso o vetor do exemplo posterior ser o v(x), e as funes presentes nele sero (1 + a/x)^x, exp(-x) e cos(x)*sin(-x). O objetivo calcular o limite das funes quando x tende a infinito pela esquerda.
>> syms x >> v = [(1 + a/x)^x, exp(-x), cos(x)*sin(-x)] v = [ (a/x + 1)^x, 1/exp(x), -cos(x)*sin(x)] >> limit(v,x,inf, 'left') ans = [exp(a), 0, NaN]

Instrutor: Fernando Wesley Recife/PE - 2012

103

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

7.3 Integrao funo int A integrao ou anti-derivada de uma funo pode ser encontrada atravs do comando int, abreviao do nome integrate que representa a palavra integrao em ingls. O MATLAB capaz de calcular integrais de maneira definida e indefinida, imprimindo os resultados aps o calculo dos mesmos. Da mesma forma que para as funes anteriores, necessrio que o usurio represente as variveis simblicas para clculo das funes. A sintaxe da funo int mostrada abaixo: Os exemplos a seguir demonstram a maneira de utilizao da funo int. Para calcular a funo resultante da integrao do sen(x):
syms x cria a varivel x simblica int(s) Integral varivel simblica indefinida da funo s em relao sua

int(s,v) Integral indefinda da funo s em relao varivel simblica v. int(s,a,b) Integral definida da funo s em relao sua varivel simblica entre os limites de integrao a e b que pode ser varivel double ou escalares simblicos. int(s,v,a,b) Integral definida da funo s em relao v com valores calculados entre os limites de integrao a e b que podem ser double ou escalares simblicos. >> syms x >> int(sin(x)) ans = -cos(x)

Tendo-se a funo sen(xt), deseja-se obter a integral em relao a x.


>> syms x t >> int(sin(x*t)) ans = -cos(t*x)/t

Instrutor: Fernando Wesley Recife/PE - 2012

104

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

Utilizando-se a mesma funo acima, deseja agora obter a integral da funo em relao varivel t.
>> syms x t >> int(sin(x*t),t) ans = -cos(t*x)/x

Um caso interessante ocorre quando se deseja obter a integral de x^n. A mesma pode ser log(x), se n= -1 e (xn+1)/(n+1) para os casos contrrios. O resultado impresso na janela de comando do MATLAB o seguinte neste caso:
>> syms x n >> int(x^n,x) ans = piecewise([n = -1, log(x)], [n <> -1, x^(n + 1)/(n + 1)])

A integral indefinida tem algumas restries em relao ao calculo de derivadas realizado no MATLAB. De forma geral uma integral pode existir, mas o software pode no ser capaz de encontra-la. Tambm h o caso do software no possuir memria suficiente para realizar o calculo, e o mesmo deve ser realizado em um computador com memria superior. Para clculo da integral definida, deve-se possuir a funo desejada e os limites de integrao (condies de contorno). Para a funo f(x) = x, e condies de contorno a= 0 e b = 1, pode-se encontrar a integral definida da seguinte forma.
>> syms x >> f = x^2 f = x^2 >> a = 0 a = 0

Instrutor: Fernando Wesley Recife/PE - 2012

105

Introduo ao MATLAB- POLI Jnior Engenharia


>> b = 1 b = 1 >> int(f,a,b) ans = 1/3

Captulo 7

No caso de uma funo mais complexa, f(x) = log(x)*sqrt(x) com condies de contorno entre 0 e 3, o cdigo para compilao e resultado mostrado a seguir:
>> syms x >> f = log(x)*sqrt(x); >> a = 0; >> b = 3; >> res = int(f,a,b) res = 3^(1/2)*(log(9) - 4/3)

Outro exemplo para a funo f(x) = exp(x)*x/7 com condies de contorno entre 1 e pi:
>> syms x >> f = exp(x)*x^2/7; >> a = 1; >> b = pi; >> s = int(f,a,b) s = (exp(pi)*(pi^2 - 2*pi + 2))/7 - exp(1)/7

De forma geral, aps o aprendizado dos comandos e do uso das variveis simblicas, possvel utilizar o MATLAB para os clculos de limites, derivadas e integrais dentro das funes matemticas mais comuns.

Instrutor: Fernando Wesley Recife/PE - 2012

106

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

EXERCCIO APLICADO
Encontrar assntotas, pontos mximos e mnimos e ponto de inflexo da funo abaixo:

Para criar a funo de maneira simblica, utilizam-se os comandos abaixo:


% criao da funo de modo simblico syms x num = 3*x^2 + 6*x - 1; den = x^2 + x - 3; f = num/den;

Para visualizao do grfico, o comando que deve ser utilizado o ezplot. O ezplot utilizado para os casos onde se trabalha com a varivel x e o grfico resultante apresentar como exibio padro eixos x e y limitados entre -2 e 2. As funes que possuem o ez indicam que so easy to use (fcil para usar), e podem ser plotadas apenas usando como argumento a funo estudada. Utilizando o comando ezplot(f), a figura resultante :

Figura 7.2 Uso do ezplot para visualizao da funo (3x + 6x 1)/(x + x 3)

Instrutor: Fernando Wesley Recife/PE - 2012

107

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

Para encontrar as assntotas verticais e horizontais do grfico, o usurio deve fazer o seguinte. A assntota horizontal encontrada tomando o limite da funo f quando x tende a infinito e menos infinito. A assntotal vertical pode ser encontrada quando o numerador da funo tem limite zero.
%clculo e exibio das assntotas horizontais e verticais ah1 = limit(f,inf); ah2 = limit(f,-inf); av = solve(den); figure('name', 'Assntotas', 'number', 'Off') ezplot(f) hold on % Plota assntota horizontal plot([-2*pi 2*pi], [double(ah1) double(ah2)],'g') % Plota assntotas verticais plot(double(av(1))*[1 1], [-5 10],'r') plot(double(av(2))*[1 1], [-5 10],'r') title('Assntotas Vertical e Horizontal') xlabel('eixo x') ylabel('eixo y') hold off

Do cdigo acima tem-se que as assntotas horizontais (ah1 e ah2) tem o mesmo valor, sendo assim, uma nica reta que corta o grfico de forma horizontal. Em relao s assntotas verticais, o clculo das razes do denominador fornecem duas razes e assim, dois valores para assntotas verticais. Para ambos os casos, necessrio a converso do valor da encontrado para double, visto que desejamos utilizar o comando plot. A figura 7.3 mostra a funo estudada e suas assntotas verticais na colorao vermelha e a assntota horizontal na colorao verde. Utilizou-se o comando plot limitando os eixos de exibio do grfico para os resultados, e no caso da assntota vertical, multiplicou-se por [1 1] para manter o valor na escala original.

Instrutor: Fernando Wesley Recife/PE - 2012

108

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

Figura 7.3 Exibio das assntotas horizontal e vertical da funo (3x + 6x 1)/(x + x 3).

Para encontrar pontos mximos e mnimos da funo, devemos derivar a funo inicial, igualar a zero e encontrar as razes. De tais razes obteremos os pontos mximos e mnimos da funo.
% calculos de pontos mximos e mnimos flinha = diff(f); %derivada da funo f em relao a x flinha = simplify(flinha); %auto-organizao da funo pretty(flinha) %exibio da funo resultante na janela de comando crit_pts = solve(flinha); figure('name', 'Ptos mximo e mnimo', 'number', 'On') ezplot(f) hold on plot(double(crit_pts), double(subs(f,crit_pts)),'ro') title('Mximo e Mnimo de f') text(-5.5,3.2,'Mnimo Local') text(-2.5,2,'Mximo Local') hold off

No cdigo acima, inicia-se utilizando diff, para derivar simbolicamente a nossa funo estudada, aps isso simplify utilizado para organizar o
Instrutor: Fernando Wesley Recife/PE - 2012

109

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 7

resultado da funo anterior, que nem sempre (raramente) est na forma mais organizada possvel. Outra funo interessante a pretty, que exibe na janela de comando de maneira organizada o argumento que foi utilizado nela. aconselhado ao usurio testar as funes acima para conhec-las individualmente. A funo solve utilizada para fornecer o resultado das razes da funo utilizada como argumento. A utilidade dela a mesma da funo roots, mas a funo solve utilizada para achar razes de expresses simblicas, como a que estamos trabalhando. O resultado dela um vetor contendo um nmero de razes proporcional ao grau do polinmio estudado. A figura resultante do cdigo acima a seguinte:

Figura 7.4 Pontos mximo e mnimo da funo (3x + 6x 1)/(x + x 3)

Alm dos ponto mximo e do ponto mnimo, facultado ao usurio encontrar o ponto de inflexo. O mesmo pode ser encontrado derivando-se a funo original duas vezes e igualando o resultado a zero. A lgica do cdigo a mesma para o caso do ponto mximo e mnimo, e est descrito logo a seguir:

Instrutor: Fernando Wesley Recife/PE - 2012

110

Introduo ao MATLAB- POLI Jnior Engenharia


%calculo do ponto de inflexo flinha2 = diff(flinha); flinha2 = simplify(flinha2); pretty(flinha2) pt_inflx = solve(flinha2); double(pt_inflx) inflx = (pt_inflx(1)); figure('name', 'Pto de inflexo', 'number', 'On') ezplot(f) hold on plot(double(inflx), double(subs(f,inflx)),'bo') title('Ponto de inflexo de f') text(-5,2,'Ponto de inflexo') hold off

Captulo 7

Como resultado, a figura fornecida com o ponto de inflexo a seguinte:

Figura 7.5 Ponto de inflexo da funo (3x + 6x 1)/(x + x 3)

Instrutor: Fernando Wesley Recife/PE - 2012

111

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Captulo 8 Simulink 8.1 Introduo O Simulink (Simulation and Link) uma extenso do MATLAB. A sua utilidade oferecer modelagens, simulaes e analises de sistemas dinmicos atravs de uma interface e grfica (GUI). O Simulink se torna simples de operar devido s suas caractersticas de operaes click-and-drag (clicar e arrastar) com o mouse. O Simulink tambm possui uma biblioteca com diversas ferramentas (toolboxes) que podem ser utilizados em situaes especficas. A interface simples do Simulink semelhante quela que ilustra uma cadeia de operaes feita com lpis e papel, sendo o sistema representado atravs de linhas e blocos. Cada bloco utilizado representa alguma operao especfica, e as linhas mostram a ordem na qual as operaes devem ser executadas. 8.2 Inicializao do Simulink Para iniciar o Simulink, necessrio possuir o MATLAB instalado em seu computador. Abrindo o MATLAB, O usurio deve clicar no cone destacado na figura 8.1, presente na barra de ferramentas, na interface principal do MATLAB.

Figura 8.1 cone representativo do Simulink

Aps o clique no cone em questo, ser aberta uma janela que pode ser verificada na figura 8.2, que contm os principais modelos para construo dos blocos no Simulink. Nela podem ser vistos comandos como a criao de um novo arquivo, a janela de busca de blocos, a janela de descrio, a biblioteca e o conjunto de blocos do MATLAB. Caso o programador deseje visualizar mais opes de blocos, pode clicar no sinal (+) presente esquerda dos toolboxes, presente na biblioteca do MATLAB. Boa parte dos blocos so muito especficos, e utilizados somente em

Instrutor: Fernando Wesley Recife/PE - 2012

112

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

situaes especiais. Quanto aos blocos gerais, ser visto uma introduo neste captulo.

Figura 8.2 Biblioteca do Simulink

Para criao de um novo modelo, o usurio pode clicar no cone que representa a criao de novos modelos, visto na figura 8.3, ou pode utilizar o comando CTRL+N, responsvel pela criao de uma janela para criao dos modelos.

Figura 8.3 cone para criao de novos modelos do simulink

Aps a chamada da nova janela, figura 8.4, a mesma se apresentar em branca, para que o usurio possa inserir os blocos desejados de forma que obtenha o sistema em questo. Na parte em branco da janela devem ser inseridos todos os blocos de forma que o usurio possa ter todo o seu sistema representado internamente.

Instrutor: Fernando Wesley Recife/PE - 2012

113

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

recomendado que o usurio possa explorar e utilizar os blocos do MATLAB de forma que, embora no conhea a finalidade especfica do bloco em questo, se familiarize com a forma de exibio, de obteno de dados e do fornecimento dos resultados. Alm disso, o usurio est livre para conhecer blocos que so dependentes e independentes do tempo.

Figura 8.4 Janela na qual devem ser inseridos os blocos do Simulink

8.2.1 Blocos principais No Simulink, alguns blocos podem ser ditos principais, pois so blocos bsicos podem ser utilizados em praticamente qualquer ocasio na criao de qualquer diagrama de blocos. Tais blocos so os seguintes: Somador (Sum), Ganho (Gain), Constante (Cte), Integrador (Integrator), Derivativo (Derivative), Bloco Multiplicativo, Bloco de funes e Osciloscpio (Scope). Para que possamos compreender a utilidade de cada bloco, necessrio haver um conceito de parmetros de entrada e parmetros de sada. Os parmetros de entrada so valores necessrios para que o programa funcione corretamente. Parmetros de sada so os valores que so fornecidos como resultado do programa.

Instrutor: Fernando Wesley Recife/PE - 2012

114

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Alguns blocos podem necessitar apenas de parmetro de entrada, como o caso do osciloscpio, visto que para mostrar os valores necessita-se apenas de inser-los no sistema. Alguns fornecem apenas parmetros de sada, como o caso do bloco constante. Ainda h blocos que necessitam dos dois parmetros, como o caso dos que realizam operaes, como o ganho. Por fim, existem blocos que fornece sada e podem pedir vrias entradas, como o bloco multiplicativo e o ganho. 8.2.1.1 Bloco Sum O bloco Sum (somador) utilizado para a operao de soma entre vrios valores, como pode ser visto na figura 8.5. A entrada desse bloco pode ser de sinais positivos e negativos, cabendo ao programador escolher na janela de parmetros de blocos, clicando duas vezes sobre o mesmo. O mesmo pode ser selecionado na biblioteca de Blocos Comumente Utilizados (Commonly Used Blocks)

Figura 8.5 Bloco Sum

8.2.1.2 Bloco Gain O bloco Gain (ganho) utilizado para multiplicao do parmetro de entrada por algum valor constante que seja real.

Figura 8.6 Bloco Gain

8.2.1.3 Bloco Constant O Bloco Constant (Constante) utilizado para fornecer ao sistema montado um valor que no varia com o tempo.

Instrutor: Fernando Wesley Recife/PE - 2012

115

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Figura 8.7 Bloco constant

8.2.1.4 Bloco Integrator O Bloco Integrator (Integrador) utilizado em um sistema para o fornecimento da integral do sinal fornecido em um certo intervalo de tempo. Pode ser utilizado, por exemplo, para resoluo de equaes diferenciais.

Figura 8.8 Bloco Integrator

8.2.1.5 Bloco Derivative O bloco derivative (derivativo) utilizado para encontrar a derivada em relao ao tempo do sinal utilizado. O Bloco derivative pode ser encontrado na biblioteca de funes contnuas.

Figura 8.9 Bloco derivativo

8.2.1.6 Bloco Product O bloco product (Product) utilizado para multiplicar ou dividir diferentes sinais provenientes ou no da mesma fonte. O sinal de sada fornece o resultado da operao realizada dentro do bloco.

Figura 8.10 Bloco Product

8.2.1.7 Bloco Math Function

Instrutor: Fernando Wesley Recife/PE - 2012

116

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

O Bloco Math Function (Funo Matemtica) utilizado quando se deseja obter um sinal multiplicado por alguma funo matemtica que use o sinal como parmetro de entrada. Entre as funes disponveis, existe exponencial, logaritmos, raiz quadrada entre outras. O bloco pode ser encontrado na biblioteca de funes matemticas.

Figura 8.11 Bloco Math Function

8.2.1.8 Bloco Scope O Bloco Scope (Osciloscpio) responsvel por fornecer resultados grficos do parmetro desejado em funo do tempo.

Figura 8.12 Bloco Scope

8.2.2 Outros blocos Existem blocos que so importantes ao usurio a cincia de existncia, pois em alguns momentos pode ser necessrio a utilizao dos mesmos. Nesse item citaremos os seguintes blocos: Sin, Step, Ramp e Random Number. Todos esses blocos podem ser encontrados na biblioteca Sources, que possuem apenas parmetros de sada. 8.2.2.1 Bloco Sin O bloco Sin (seno) permite ao usurio inserir, dentro de uma operao matemtica a funo seno (ou cosseno) variando com o tempo. O Bloco Sin apresenta apenas parmetro de sada, e os parmetros da funo devem ser inseridos na janela de parmetros.

Instrutor: Fernando Wesley Recife/PE - 2012

117

Introduo ao MATLAB- POLI Jnior Engenharia


Figura 8.13 Bloco Sin

Captulo 8

8.2.2.2 Bloco Step O bloco Step responsvel para o aparecimento da funo degrau. A definio da funo degrau a seguinte:

O bloco que representa a funo degrau o seguinte:

Figura 8.14 Bloco Step

8.2.2.3 Bloco Ramp O Bloco Ramp representa a funo rampa. Da mesma forma que a funo degrau, os valores s aparecem a partir de um certo valor de tempo definido pelo usurio de forma prvia. A definio da funo rampa a seguinte:

Figure 8.15 Bloco Ramp

8.2.2.4 Bloco Random O Bloco Random utilizado para gerar um nmero aleatrio, com mdia e varincia definidas pelo usurio. Os valores tambm so gerados para intervalos de tempo definidos pelo usurio.
Instrutor: Fernando Wesley Recife/PE - 2012

118

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Figura 8.16 Bloco Random

8.3 Exemplos Para verificar a utilidade dos blocos, sero mostrados sistemas simples, e aps eles, aumentar a complexidade do estudo. O primeiro a ser estudado o da funo seno. Para isso ser montado um diagrama de blocos utilizando o bloco ramp (para criar os valores que sero argumentos para a funo seno), o bloco sin (que necessita de parmetro de entrada e de sada), e o bloco scope, necessrio para a visualizao da funo.

Figura 8.17 Montagem do sistema com funo seno

Aps o usurio selecionar o tempo limite de execuo no espao reservado na barra de ferramentas, que vem com padro de 10 segundos (ou o intervalo de tempo desejado), o usurio deve clicar sobre a funo scope para verificar o grfico resultante.

Instrutor: Fernando Wesley Recife/PE - 2012

119

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Figura 8.18 Grfico da funo seno no oscilscpio

Digamos que se deseja verificar a funo seno e exponencial utilizando o mesmo osciloscpio para verificar o resultado. A montagem deve ser feita da seguinte maneira. Primeiramente ser necessrio ao usurio inserir o bloco de funo exponencial, encontrado na biblioteca de funes matemticas ao diagrama de blocos que construdo. Aps isso, necessrio inserir o bloco rampa como parmetro de entrada do bloco da funo exponencial. Mas para que os dois valores possam ser vistos no osciloscpio, necessrio que se mude da visualizao de um eixo para dois eixos. O mesmo pode ser feito da seguinte forma. Clica-se para abrir o osciloscpio e com ele aberto, clica-se no boto que responsvel por abrir os parmetros do osciloscpio. Aps isso deve-se alterar para 2 o valor de eixos aparentes. O diagrama de blocos ficar com a aparncia da figura 8.19. O resultado pode ser verificado clicando sobre o osciloscpio. O resultado ser conforme a figura 8.20.

Instrutor: Fernando Wesley Recife/PE - 2012

120

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Figura 8.19 Sistema com funo exponencial e funo seno

Funo 8.20 Grfico da funo seno e exponencial

Para ltimo caso, efetuaremos algumas alteraes. A primeira em relao funo seno, que receber um valor aleatrio somado a ela. A segunda a substituio da funo exponencial pela funo cosseno, sendo que o grfico desejado de duas vezes a funo cosseno.

Instrutor: Fernando Wesley Recife/PE - 2012

121

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Para encontrarmos a funo cosseno, ao invs de puxarmos um bloco responsvel por efetuar tal clculo, usaremos o integrador para integrar a funo seno para a funo cosseno. E em relao ao bloco de valores aleatrios, na biblioteca sources deve-se puxar o bloco Random Number, responsvel por gerar um nmero aleatrio. A montagem dos blocos deve gerar um sistema semelhante da figura 8.21. A multiplicao dos valores pode ser efetuada a partir do bloco gain, utilizando o valor 02 como responsvel pela multiplicao.

Figura 8.21 Sistema proposto com funo seno adicionado de valor aleatrio e dobro da funo cosseno.

Instrutor: Fernando Wesley Recife/PE - 2012

122

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

Figura 8.22 Figura resultante do sistema proposto na figura 8.21.

Instrutor: Fernando Wesley Recife/PE - 2012

123

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 8

8.4 Exerccios de Fixao 1. A partir do simulink, crie um diagrama de blocos que mostre em grfico as seguintes funes. a) x b) sen(x) + x c) x 2(x + 4) d) x(cos(x)) + x - 4/x 2. Do exerccio acima, utilize o bloco MUX para criar um vetor com as quatro funes acima, de forma que as mesmas sejam exibidas em uma janela do osciloscpio. Aps isso retire o MUX e deixe as funes aparecendo em quatro janelas diferentes. 3. Um parmetro que importante para anlise e controle de processos a funo transferncia, que mede o quanto varia a entrada e sada de um sistema. A funo transferncia de primeira ordem dada da seguinte forma: k/(as + b), onde k, a e b so constantes. Uma funo de segunda ordem da seguinte maneira: k/(as +bs+c), onde k, a, b e c so valores constantes. Encontre o bloco responsvel pela funo transferncia e teste-o com diversos valores para verificar como a resposta do sistema para diferentes valores dessa funo. 4. O simulink pode ser utilizado para a resoluo de equaes diferenciais. Resolva as seguintes equaes diferenciais utilizando o simulink. a) y + sen(y) y b) 3y cos(3y) + 4sen(exp(5)) + 8 c) y (y) - cos(y) + sen(y + 7) log(y)/sin(y)

Instrutor: Fernando Wesley Recife/PE - 2012

124

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Captulo 9 Guia de Interfaces Nos mdulos anteriores aprendemos a construir cdigos de programa em script, que eram executados pelo prprio editor do programa e em seguida a criar funes que eram executadas pela janela de comandos. Porm, executar cdigos pelo editor ou pela janela de comandos pode trazer problemas, tais como: Edio involuntria (apenas pelo editor); Problemas de visualizao de resposta; Interface poluda visualmente.

O fato de estar com o editor aberto leva a possibilidade de edio involuntria do cdigo seja por uma simples batida inconsciente no teclado ou alteraes propositais. Como a interface do editor no nos d uma resposta do status de execuo do cdigo, pois sempre necessrio visualizar as respostas do sistema na janela de comandos ou caixas de dilogos que possam ser chamadas pelo programador. Alm disso, o fato do editor no atrair visualmente o operador nos leva a considerar outras opes de interface. Baseado nesses problemas, este mdulo tem a finalidade de introduzir o leitor nos conhecimentos bsicos de criao de interfaces de software atravs do MATLAB via programao orientada ao objeto. Mas o que programao orientada ao objeto? Podemos definir, de maneira simples, programao orientada ao objeto como um tipo programao onde os elementos podem ser considerados, dentro de determinado contexto, como objetos, e analogamente podem ser mutveis em forma, posio, nome, propriedades, entre outros. A criao de interfaces grficas est fundamentada, para este tipo de programao, em quatro passos: 1. Criao do espao de locao dos objetos; 2. Escolha, locao e dimensionamento de objetos; 3. Nomeao de objetos; 4. Atribuio de funo. J a execuo da interface fundamentada em quatro passos: 1. Reconhecimento dos objetos; 2. Assimilao de valores e propriedades;
Instrutor: Fernando Wesley Recife/PE - 2012

125

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

3. Execuo de funes previamente determinadas; 4. Atribuio de valores e propriedades. O diagrama da figura 9.1 mostra como se comporta a execuo da interface.

Figura 9.1 Diagrama de execuo de interfaces.

9.1 Criao da Interface Para os passos de criao de interfaces utilizamos o guia de interfaces grficas do MATLAB, GUI (Graphical User Interface). Para inicializ-lo basta executar o comando guide (abreviatura de Graphical User Interface Desing Enviroment). Aps esse comando uma janela como mostra a figura 9.2 ser exibida.

Figura 9.2 Janela inicial do guia de interfaces.


Instrutor: Fernando Wesley Recife/PE - 2012

126

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

A janela da figura 9.2 subdividida em duas abas. A aba Create New GUI usada quando se deseja criar uma nova interface. J a aba Open Existing GUI abre para edio uma interface j existente. Como ser a nossa primeira interface escolha a primeira aba e clique em OK. Observe que uma caixa de texto, ver figura 9.3, ser exibida indicando o status de inicializao do guia.

Figura 9.3 Caixa de status de inicializao do guia de interfaces.

Se tudo ocorrer normalmente uma janela para criao de interfaces ser exibida como mostra a figura 9.4.

Figura 9.4 Guia de criao de interfaces grficas, GUIDE.

No GUIDE ser foco de nosso estudo a barra de objetos, localizada esquerda da janela e a barra de ferramentas, localizada entre a barra de menus e a janela de alocao grfica.
Instrutor: Fernando Wesley Recife/PE - 2012

127

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Para garantir a segurana do que est sendo desenvolvido primeiro vamos salvar a interface em um diretrio previamente escolhido. Obs.: preferencialmente atribua um nome que seja de fcil associao com as atribuies do programa. Por exemplo, se for um software que realiza anlises em combustveis fsseis, AnalisysOil. ATENO: no altere o cdigo at se informar de como, onde e o que alterar. 9.2 Escolha, Locao e Dimensionamento de Objeto A escolha e locao dos objetos devero corresponder aos propsitos para o qual sua interface servir. De forma geral, podemos sempre subdividir os objetos que sero alocados na rea de alocao grfica em trs categorias: 1. Objetos de Assimilao; 2. Objetos de Atribuio; 3. Objetos Inertes. Os objetos de assimilao so usados para assimilar (obter) informaes acerca do que se pretende. Os de atribuio (recebem) definem valores aos objetos acerca do que se pretende. E os inertes possuem apenas funo esttica. O mesmo tipo de objeto pode ter funo dupla ou at mesmo tripla dentro dessa classificao. A figura 9.5 um exemplo de rascunho que nos fornece uma sugesto de como poderia ficar tal interface.

Figura 9.5 Diagrama sugerido de criao da interface.

Instrutor: Fernando Wesley Recife/PE - 2012

128

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Antes da alocao dos objetos expanda ao mximo a sua rea de alocao grfica segurando pela ala no canto inferior direito da mesma. Ver figura 9.6.

Figura 9.6 Expanso da rea de alocao grfica.

Em seguida vamos adicionar os dois painis, um para entrada de dados e outro para sada de dados. Os painis so usados para agrupar os Static Text, Edit Text e outros itens de forma mais organizada, por exemplo. interessante utilizar o Panel, pois se o usurio necessitar mover os objetos j criados, pode mov-los todos em um movimento, caso estejam dentro do painel. Clique no boto Panel na barra de objetos como mostra o detalhe da figura 9.7.

Figura 9.7 Objeto panel.


Instrutor: Fernando Wesley Recife/PE - 2012

129

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Aps clicar no objeto retorne rea de alocao grfica, escolha o local onde dever ser colocado o objeto, clique e segure o clique com o boto do mouse, e arraste para dimensionar. Solte o boto e o objeto ser criado. No se preocupe em errar a posio e o tamanho, mesmo aps a criao o objeto pode ser alterado facilmente pelas alas de dimensionamento localizadas em seus vrtices. Para colocar outro painel o mesmo procedimento pode ser executado ou ainda tente arrastar um objeto similar (o primeiro painel neste caso) com o boto direito do mouse para outra posio da rea. Ao soltar o boto direito do mouse, uma cpia do objeto inicial ser criada. Aps a execuo desses passos seu guia de interfaces dever possuir aproximadamente a aparncia da figura 9.8.

Figura 9.8 Alocao de painis.

O prximo passo ser a alocao de uma rea que servir para exibir inicialmente uma figura e posteriormente para exibio de grficos. O objeto que possui tais atribuies o Axes, ver figura 9.9.

Instrutor: Fernando Wesley Recife/PE - 2012

130

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Figura 9.9 Objeto Axes

Para alocao desse objeto proceda da mesma forma que o painel. Aps a execuo desses passos seu guia de interfaces dever possuir aproximadamente a aparncia da figura 9.10.

Figura 9.10 Alocao de eixos.

Os mesmo passos devero ser procedidos para alocao dos seguintes objetos: Check Box, Edit Text, Static Text, Pop-up Menu e Push Button. Tais itens esto locados na barra de objetos do guia de interface da maneira descrita na figura 9.11.
Instrutor: Fernando Wesley Recife/PE - 2012

131

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Push Button Check Button Edit Text Pop-up Menu Static Text

Figura 9.11 locao de vrios itens na barra de objetos

Inicialmente os objetos inseridos tero ttulos padro atribudos pelo MATLAB. Esses ttulos podem ser alterados assim como outras propriedades atravs do Inspetor de Propriedades do objeto. A janela do inspetor pode ser acionada por um duplo clique no boto esquerdo do mouse. Suas principais propriedades esto mostradas na figura 9.12 Obs. (1): o objeto Pop-up Menu precisa ser editado para que o mesmo possa oferecer opes de escolha ao usurio. Os itens de escolhas podem ser adicionados na propriedade String no inspetor de propriedades e cada escolha ser representada por um nmero. Assim, a escolha da linha um atribuir valor (Value) 1 ao objeto, a escolha da linha dois valor 2, e assim sucessivamente. Obs. (2): com objetos de marcao como Check Box ser atribudo valor (Value) 1 quando ativado e 0 quando desativado.

Instrutor: Fernando Wesley Recife/PE - 2012

132

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Figura 9.12 Principais propriedades dos objetos pelo inspetor.

Aps a alocao de todos os objetos o guia de interfaces e alterao de suas propriedades ela dever possuir aproximadamente a aparncia da figura 9.13.

Instrutor: Fernando Wesley Recife/PE - 2012

133

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Figura 9.13 Aparncia final do guia de interfaces.

Para visualizar a interface propriamente dita digite crtl + t ou clique no boto RUN da barra de ferramentas.
9.3 Maximizao e Minimizao

Para tornar a sua janela maximizvel ou minimizvel acesse o menu Tools\GUI Options ... na barra de menus. Na propriedade Resize behavior escolha a opo Proportional como mostra a figura 9.14.

Figura 9.14 Propriedades de dimensionamento de janela.

Instrutor: Fernando Wesley Recife/PE - 2012

134

Introduo ao MATLAB- POLI Jnior Engenharia


9.4 O Boto Executar

Captulo 9

Esse boto ser responsvel pela leitura dos dados no painel de entrada de dados e pelos clculos referentes resoluo do problema. Primeiro precisamos associar tal boto a uma funo. Isso feito na propriedade CallBack no inspetor de propriedades. Obs.: O nome inserido na funo Callback deve ser idntico ao da funo. Evite usar caracteres especiais e ponto. Tambm no use o nome da funo como outro que conhecido geralmente (ex: for, while, quit), para evitar conflitos internos. Para o reconhecimento do objeto da interface usamos o comando findobj com a seguinte sintaxe, como exemplo:
obj = findobj('Tag','edit1');

Para assimilar usamos o comando get com a seguinte sintaxe, como exemplo:
tsim = get(obj,'String');

Porm a assimilao do contedo do objeto faz atribuio do mesmo a um texto, tipo char ou string. Se for necessrio utilizar esse contedo como nmero fazemos a mudana de atribuio para a forma de preciso dupla, ou simplesmente double. Usamos o comando str2double para efetuar tal mudana.
tsim = str2double(tsim);

Para atribuio de uma propriedade, usa-se o comando set especificando o objeto desejado, a escolha da propriedade e o valor desejado para a propriedade.
set = (obj, Enable, on);

Proceda com esses passos para todos os objetos como mostra o exemplo a seguir.
function calcular global s v t %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Importao dos Dados da Interface %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% obj = findobj('Tag','edit1');
Instrutor: Fernando Wesley Recife/PE - 2012

135

Introduo ao MATLAB- POLI Jnior Engenharia


S0 = get(obj,'String'); S0 = str2double(S0); aux = isnan(S0); if aux == 1 errordlg('O valor de S0 no foi definido.','Ateno!'); return end obj = findobj('Tag','edit2'); V0 = get(obj,'String'); V0 = str2double(V0); aux = isnan(V0); if aux == 1 errordlg('O valor de V0 no foi definido.','Ateno!'); return end obj = findobj('Tag','edit3'); a = get(obj,'String'); a = str2double(a); aux = isnan(a); if aux == 1 errordlg('O valor de a no foi definido.','Ateno!'); return end obj = findobj('Tag','edit4'); ti = get(obj,'String'); ti = str2double(ti); aux = isnan(ti); if aux == 1 errordlg('O valor de ti no foi definido.','Ateno!'); return end obj = findobj('Tag','edit5'); tf = get(obj,'String'); tf = str2double(tf); aux = isnan(tf); if aux == 1 errordlg('O valor de tf no foi definido.','Ateno!'); return end

Captulo 9

if tf<=ti errordlg('O valor de tf deve ser maior do que ti','Ateno!'); return end obj = findobj('Tag','edit6'); dt = get(obj,'String'); dt = str2double(dt); aux = isnan(dt); if aux == 1 errordlg('O valor de dt no foi definido.','Ateno!'); return end
Instrutor: Fernando Wesley Recife/PE - 2012

136

Introduo ao MATLAB- POLI Jnior Engenharia


if dt>=(tf-ti) warndlg('O valor de dt deve ser menor do que o valor do intervalo','Ateno!'); return end

Captulo 9

if dt <= 0 warndlg('O valor de dt deve ser maior do que zero! ','Ateno!'); return end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Clculo do Espao e Tempo %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t = ti:dt:tf; s = S0 + V0*t + (a*t.^2)/2; v = V0 + a*t; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exportao dos Dados para Interface %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% obj = findobj('Tag','edit7'); set(obj,'Enable','on'); s_char = num2str(s(end)); set(obj,'String',s_char); obj = findobj('Tag','edit8'); set(obj,'Enable','on'); v_char = num2str(v(end)); set(obj,'String',v_char); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Exibio Grfica %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% obj = findobj('Tag','axes1'); set(obj,'Visible','On');

obj = findobj('Tag','popupmenu1'); popmenu = get(obj,'Value'); if popmenu == 1 warndlg('escolha um grfico para exibio', 'Ateno') return elseif popmenu == 2 cla, gca plot(t,s,'r') grid on title('Perfil de Espao') xlabel('Tempo (seg)') ylabel('Espao (m)') return
Instrutor: Fernando Wesley Recife/PE - 2012

137

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

elseif popmenu == 3 cla, gca plot(t,v,'b') grid on title('Perfil de Velocidade') xlabel('Tempo (seg)') ylabel('Velocidade (m/s)') return elseif popmenu == 4 cla, gca plot(t,s,'r--',t,v,'b'); title('Perfil de velocidade em azul, Perfil de Espao em linha tracejada'); grid on xlabel('Tempo (seg)'); ylabel('Velocidade(m/s) e Espao(m)'); legend('Espao', 'Velocidade'); end

Agora o cdigo referente ao boto limpar dados:


function limpar obj = findobj('Tag','edit1'); set(obj,'String',''); obj = findobj('Tag','edit2'); set(obj,'String',''); obj = findobj('Tag','edit3'); set(obj,'String',''); obj = findobj('Tag','edit4'); set(obj,'String',''); obj = findobj('Tag','edit5'); set(obj,'String',''); obj = findobj('Tag','edit6'); set(obj,'String',''); obj = findobj('Tag','edit7'); set(obj,'String','','Enable','off'); obj = findobj('Tag','edit8'); set(obj,'String','','Enable','off'); obj = findobj('Tag','popupmenu1'); set(obj,'Value',1); logo = imread('LOGO.jpg'); image(logo); obj = gca; set(obj,'xtick',[],'ytick',[]);
Instrutor: Fernando Wesley Recife/PE - 2012

138

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Por fim, o programa exibir resultados semelhante figura 9.15, a seguir:

Figura 9.15: Tela de exibio de resultados

9.5 Barra de Menus

A barra de menus criada pela ferramenta Menu Editor localizada na barra de ferramentas. Clicando nela, o usurio pode encontrar uma janela para edio de menus, mostrada na Figura 9.16.

Figura 9.16 Janela de edio dos Menus

Instrutor: Fernando Wesley Recife/PE - 2012

139

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Onde Label a propriedade responsvel pela atribuio de nome ao menu, Tag a identificao interna para atribuio e assimilao de propriedades, Accelerator a definio de atalho e Callback a funo que ser executada quando o menu for escolhido.

Consideraes Finais

1. Faa um esboo do seu software para gui-lo; 2. No crie nada fora dos padres comerciais, no caso de uso profissional. 3. Se seu programa for comercializado, crie novas verses e venda tambm o suporte a atualizaes; 4. Sempre em dvidas, consulte primeiramente o help do programa. 5. Leia livros especializados em MATLAB para aprender mais dicas e comandos teis.

Instrutor: Fernando Wesley Recife/PE - 2012

140

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

Exerccios de fixao
1. Verifique as interfaces que j existem no guia de interfaces. Veja o Gui com auto controles e o Gui com eixos e menu. 2. Utilize a barra de objetos, localizada esquerda da janela de edio e a barra de status, localizada acima da janela. Utilize todos os itens que esto acima, aprendendo a funo de cada um na prtica. 3. Para o exerccio visto no captulo 9, no tpico 9.4, crie uma barra de menus na interface estudada que possua a funo desligar o programa (quit), a opo para a janela aparecer fora da interface, de maneira individual, e opo para o computador escolher dados randmicos, que sejam coerentes com o programa, e plote o resultado. Faa tambm uma melhoria que considere importante para a interface estudada. 4. Faa uma interface para um exemplo onde o usurio deve escolher um nmero, e o programa deve mostrar se o nmero escolhido certo ou no, retornando uma imagem verde caso o resultado seja certo e uma imagem vermelha caso o resultado seja errado. 5. Faa uma interface que deve haver 4 janelas, onde respondem pelo nmero 1, 2, 3 e 4. O usurio deve dizer qual a janela o computador escolheu, mostrando uma imagem positiva, caso o resultado seja certo, e uma negativa, caso o resultado seja errado. 6. O tipo de jogo de sorte com fins lucrativos visto no caso anterior proibido no Brasil devido razo que voc ver a seguir. Utilizando o programa anterior, faa uma alterao na qual o usurio nunca possa acertar o resultado escolhido pelo computador, mas os resultados devem continuar aleatrios. Crie um boto com o nome Ganhe j. Crie outro boto com o nome Sorte maior na qual o usurio tem ap enas 10% de chance de vencer o jogo, sendo os resultados aleatrios da mesma maneira. Por fim, coloque outro boto com o nome Primeiro jogo no qual o usurio tem 80% de chance de vencer. 7. Resolva o problema 2.5 utilizando uma interface grfica, na qual o usurio escolhe atravs de radiobuttons ou checkbuttons as unidades nas quais deve haver a transformao. Qual a diferena entre as duas escolhas, quando dentro de um button group, outra opo dentro da janela de objetos do guia de interfaces. 8. Resolva o exerccio de fixao 2.11 atravs de um guia de interfaces. Exiba o grfico da funo entre limites definidos pelo usurio.
Instrutor: Fernando Wesley Recife/PE - 2012

141

Introduo ao MATLAB- POLI Jnior Engenharia

Captulo 9

9. Exiba grficos de uma funo que o usurio pode escolher. Para isso fornea a ele as seguintes opes: seno, cosseno, tangente, logaritmo, exponencial, x^n e uma constante, na qual o usurio escolhe os argumentos de cada uma delas. A interface ainda deve receber os limites e mostrar o grfico resultante ao usurio. 10. Resolva o exerccio de fixao 3.8 de forma que o usurio deva primeiramente selecionar quantos dados deseja inserir no programa (at o mximo de 10), aparecendo as caixas de texto para inserir aps isso (utilize o enable on/off e o visible on/off). Aps isso mostre em histograma o resultado.
11. Crie um programa de supermercado em MATLAB. Faa o seguinte: Antes

de iniciar necessrio um login (com senha) para que os espaos de inserir texto e preo fiquem disponveis a modificao. Aps isso digite o nome do produto e o preo do mesmo, de forma que aps a soma possa ser realizada e seja criada uma lista atravs de indexao. Ainda, crie um boto para encerrar as compras, fornecendo ao usurio a opo de pagar vista, parcelado (de vrias formas) e em cheque pr-datado. Escolhida a opo, crie a opo que mostra o valor final. Ainda crie um boto para apagar todos os dados, e outro para log-off do sistema.

Instrutor: Fernando Wesley Recife/PE - 2012

142