Sie sind auf Seite 1von 39

0

UNIVERSIDAD E FEDERAL DE VIOSA


DEP DEPARTAMENTO DE ENG DE PROD E MECNICA CURSO DE ENENHARIA MECNICA

Matlab: um curso introdutrio

Organizao:

Prof. Paulo Cezar Bchner VIOSA/MG 2010

1 Matlab: Um curso introdutrio

1. Introduo
Matlab um software para modelagem matemtica de sistemas, ao contrrio de muitos outros pacotes vendidos, ele no gera arquivos executveis, assim necessita que ele esteja instalado no computador para que se possa rodar o arquivo de cdigo. H dois ambientes bsicos o Work Space (rea de trabalho) e o arquivo .m. No primeiro seu funcionamento semelhante ao prompt ou linha de comando . O Windows passou a ser o sistema operacional somente com a verso 95. A seguir temos uma viso geral dos ambientes de programao do Matlab(Figura 1). Primeiramente a verso que se est utilizando nesta apostila a 7.8.0.347 R2009a, cujas licenas foram adquiridas pela UFV (Universidade Federal de Viosa) em novembro de 2009. H duas trs verses: uma estudantil que caracterizada pelo prompt de comando edu>, a verso profissional >> e a educacional, esta ltima para instituies de ensino. Na figura 1 pode-se ver vrias janelas, cada qual com sua funo, mas h 2 delas que pode-se classificar como sendo as principais. Ou seja, as que apresentam o espao de trabalho e o arquivo.m. O objetivo da produo deste material servir como apoio a um curso de introdutrio de Matlab. Com este o participante poder rever alguns comandos iniciais e essncias de pacote de programao que tem sido escolhido por vrias instituies de ensino superior do Brasil e do exterior, alm de muitas empresas o terem adotado como software de projetos. Um dos motivos dessa escolha sem dvida a facilidade e simplicidade de programao, alm do leque de funes inclusas e validadas que ele possui. Tudo isso torna o Matlab uma poderosa ferramenta de trabalho, porque poupa tempo de programao. Espera-se que com esse texto e mais o curso, o participante ganhe know-how para se autodesenvolver e aprofunda na sua rea especfica, explorando cada vez mais este software e obtendo resultados com ele.

2 Matlab: Um curso introdutrio

rea do arquivo.m

rea de Trabalho

Figura 1. Ambientes do MatLab. As outras reas podem ser suprimidas, mas interessante deixa-las a mostra para um maior controle das informaes geradas pelo sistema. Na figura 2 possvel observar mais 3 reas: o Current Directory (diretrio atual), nesta janela pode-se observar o contedo da pasta atual (ou diretrio atual). sempre um bom procedimento que os arquivos que estejam sendo vistos nesta janela, sejam os que se pretende utilizar. Caso contrrio o Matlab no reconhecer os comandos por no estar direcionado ao diretrio atual. Buffer (Workspace), nesta estaro sendo apresentadas as variveis criadas, seu tamanho, tipo e contedo; Command History, nesta so registrados todos os comandos entrado no Work Space;

3 Matlab: Um curso introdutrio

Buffer

Pasta atual

Histrico de comandos

Figura 2. Outras reas de controle do Matlab. Pode ser observado tambm, que na parte superior da janela do Matlab j aparece o Current Directory. Assim, talvez seja dispensvel mais uma janela para esse propsito. No Workspace pode-se entrar com os comandos diretamente. Qualquer comando do Matlab pode ser inserido neste lugar (Figura 3).

Figura 3. Workspace e prompt de comando. Pode ser observado o prompt de comando, como j explicado, seu funcionamento semelhante ao do promtp de comando do sistema . Inclusive vrios comandos que l se utilizava permanecem no

4 Matlab: Um curso introdutrio Matlab. Vrios deles esto listados abaixo e devem ser utilizado, pois so muito teis durante a programao no Matlab. Tabela 1: Comandos essenciais via prompt. Comando clc Clear clear all Dir Exemplo de aplicao - semelhante ao cls, este comando limpa a tela do workspace. -este comando limpa a varivel escolhida. Ex: >>clear + varivel. -limpa todas as variveis do buffer de memria. -mostra os arquivos e pastas do diretrio atual. Ex1: >>dir -acrescentando-se a chave *, pode-se fazer um filtro do que se pretende exibir. Ex2: >>dir *.exe, s mostra os arquivos com a extenso escolhida, no caso a exe. Ex3: >>dir m*.txt, mostra apenas os arquivos que iniciam com m e tem extenso txt. Ex4: >>dir r*.*t, exibe somente os arquivos que comeam com r e tem um t no final de sua extenso. Ex5: >> dir *. , mostra epenas as pastas que esto neste dirertrio. What -este comendo similar ao dir, apenas que ele mostra apenas os arquivos com extenso m. Ex: >>what Who -mostra as variveis que esto no buffer. Este comando dispensa a presena da janela, pois podemos consultar atravs do teclado, quando necessrio, as variveis criadas. Whos Clear vars Rmdir -exibe as variveis criadas e sua dimenso. Ex: >>whos - funciona como clear. -remove um diretrio ou pasta, desde que ele esteja vazio. Ex: rmdir diretrio. Se o diretrio

5 Matlab: Um curso introdutrio diretrio existir e estiver vazio. Mkdir Cd -cria uma pasta diretamente do prompt de comando. - um comando que possibilita mover-se de uma pasta para outra diretamente do prompt. Ex1: >>cd work, entra na pasta work. Ex2: >>cd .. , sai da pasta work. Type -este comando serve para olhar o contedo de um arquivo, desde que ele seja do tipo doc, txt ou m. Ou seja, desde que ele seja um texto. Ex: type arquivo. Which - o comando que exibe aonde o arquivo de uma funo est. Ex: >>which type built-in (C:\MATLAB\R2009a\toolbox\matlab\general\type) Abaixo temos os operadores aritmticos essenciais. Alm dos sinais de +(soma), subtrao (-), multiplicao (*), diviso (/ ou \) e potencia (^) esses ainda so associados, quando operando com matrizes, ao ponto antes da operao. Indicando que o produto ou a diviso ocorre membro a membro. A figura 1 abaixo resume esses operadores, em seguida alguns exemplos para extinguir qualquer dvida ainda remanescente.

6 Matlab: Um curso introdutrio

Figura 1. Operadores aritmticos. Quando os operadores so acrescidos de um ponto, ento pode executar essas operaes com vetores e matrizes. Perceba, porm, que o ponto vai antes do operador. Exemplos so tambm apresentados na tabela 2. O sinal apstrofo () muito utilizado, ao contrrio da aspas () utilizada em programas como o C e C++.

2. Comandos de mensagens e entradas


Apresentamos agora alguns comandos bsicos para mensagens ao usurio. disp( mensagem a enviar para tela) mensagem a enviar para tela a resposta ser:

7 Matlab: Um curso introdutrio sprintf( mensagema enviar par tela) essa porm alm de exibir mensagem na tela atribui a string a varivel ans. Caso deseje, poder executar esse comando da seguinte forma: mensagem= sprintf( mensagema enviar par tela) mostrar na tela e atribuir a string para varivel mensagem. Que poder se usada dentro de qualquer outra funo que demande de uma string, por exemplo o prprio comando disp. disp(mensagem), figura 3.

Mensagem enviada

Mensagem exibida e que est no contedo da varivel ans

Mensagem exibida e que est no contedo da varivel mensagem Mensagem exibida usando o comando disp e a varivel mensagem. Figura 3. Spacework, comandos de mensagens ao usurio.

8 Matlab: Um curso introdutrio

Tabela 2: Exemplos com os operadores aritmticos. Soma >>1+2 Ans = 3 Multiplicao >>2*3 Ans= 6 >>2\3 Ans 1.5 Potncia >>2^3 Ans 8 Expoente >>exp(1) Ans 2.7183 Diviso >>3/2 Ans 1.5 Subtrao >>3-2 Ans= 1

Operaes com os arrays: a=[1 2 3] e b=[4 5 6] Soma >>a+b Ans 579 Multiplicao Diviso Subtrao >>a-b Ans -3 -3 -3

9 Matlab: Um curso introdutrio

>>a.*b Ans 4 10 18 Potncia >>a.^2 Ans 149

>>a./b ou b.\a Ans 0.2500 0.4000 0.5000 Expoente >>exp(a) Ans 2.7183 7.3891 20.0855

Diferena de capitalizao, o Matlab faz diferena entre maisculas e minsculas, portanto deve-se ter cuidado no momento de criar uma varivel. A tabela 3 so apresentado alguns comando de sada para tela e de entra com exemplos. Alguns deles, no caso dos comandos de entrada, so especiais para dados de arquivos e variveis do sistema. Tabela 3: Comandos de entrada e sada para tela. disp >>disp (Mensagem) Mensagem Input >>input(Entre com o dado:) Entre com o dado:

sprintf >>sprintf(Essa a mensagem:) Ans= Essa a mensagem:

sscanf >>A=2.71 3.14 A= 2.71 3.14 >>sscanf(A,%f) Ans= 2.7100 3.1400

fprintf

fscanf

10 Matlab: Um curso introdutrio

>>fprintf(Essa a mensagem:\n) Essa a mensagem: >>

>>fscanf(fid,%f) Obs: l dados de uma arquivo que tenha sido aberto pelo fluxo fid.

Sprintf >>b=[2.7100 3.1415] B= 2.7100 3.1415 >>sprintf(Os valores so: %3.2f e %3.2f\n,B(1),B(2)) ans= Os valores so: 2.71 e 3.14

3. Criando uma varivel


Para criar uma varivel no Matlab muito fcil, bastando para isso atribuir um valor, um caracter ou uma string e pronto, ela j existe no ambiente do Matlab. Exemplo: >>a=1, ou b=r ou c=Programa Matlab Executando esses comandos no prompt de comando j teremos criado trs variveis, a, b e c. Respectivamente, uma contendo um valor, um caracter e uma string. Aproveita-se a oportunidade para apresentar o sinal de = como a forma para atribuir valores e contedos s variveis. A varivel criada fica na memria do Mabtlab e assim podem ser usadas em vrias partes do programa. Portanto um cuidado necessrio para no haver confuso com elas.

11 Matlab: Um curso introdutrio

4. Operadores relacionais
Assim como outras linguagens de programao, h uma srie de codificaes para elaborar o funcionamento lgico do programa em desenvolvimento. A figura 4 mostra alguns operadores relacionais que pode ser usados. O primeiro deles o < menor que, <=menor que ou igual, >maio que, maior ou igual, == igual e no igual ou diferente ~=. Deve-se ter cuidado para no confundir == com =, pois so bem distintos um do outro, o primeiro serve para comparar e o segundo para atribuir.

Figura 4. Operadores relacionais. Em seguida esto algumas estruturas lgicas, tambm utilizadas em muitas outras linguagens de programao, que no Matlab se mostra muito mais simples por dispensar uma srie de sinais e simbologia. A primeira dessas estruturas a IF-elseif-else como mostrado na figura

Figura 4. Estrutura lgica IF-elseif-els.

12 Matlab: Um curso introdutrio Essa estrutura poder se usada na sua forma mais simples que o usando o comando if + a expresso condicionante e o comando, assim como todos em bloco como esse, devem terminar com a palavra end. A forma completa desta estrutura apresenta uma primeira verificao, a qual se no for satisfeita passa par a segunda verificao elseif, caso no seja satisfeita segue para a ltima que ser executada no caso de nenhuma das anteriores forem satisfeitas. Outra estrutura o case, nesta necessrio a entrada verdadeira para que ela seja executada. Nesta vrias condies podem ser relacionadas e executadas conforme a entrada. So, neste caso, os cases. A estrutura executa um determinado expresso casa nenhuma das condies, ou seja dos cases, no seja satisfeita. Muito utilizada para enviar uma mensagem de erro para o usurio. Novamente, a estrutura finalizada com a palavra end.

Figura 5. Estrutura switch. Na prxima figura 6 apresentada a estrutura for, onde uma expresso condicionada para incrementar as operaes, equaes e etc. Nesta estrutura assim como as outras possvel operarem em cascata, ou seja, estruturas aninhadas.

13 Matlab: Um curso introdutrio

Figura 6. Estrutura for. Outra estrutura muito comum e a while (figura 7), nela enquanto a expresso lgica satisfeita o lao continua executando as operaes dentro dela at que o estado dela seja alterado para sair do lao.

Figura 7. Estrutura while. O lao while se repete enquanto o valor da varivel eps+1 for menor que 1. H a expresso que faz com que o valor da eps v diminuindo at que a condio no seja mais satisfeita.

5. Interface grfica
Embora haja uma linguagem mais apropriada para fazer a interface grfica com o usurio chamada de GUI, o Matlab disponibiliza algumas funes muito interessantes que permite uma aplicao direta e muito prtica de algumas dessas interfaces. Com elas, certamente o leitor se sentir muito melhor, pois poder proporcionar programas com uma interface muito prxima ao que o sistema Windows executa. Assim seguem algumas dessas funes e a explanao de como elas funcionam.

14 Matlab: Um curso introdutrio

5.1. Inpudlg
Essa funo abre uma caixa de mensagem onde o usurio poder atribuir valores a suas variveis. Ela possibilita que existam valores default. A sua estrutura segue conforme a figura 7.

Figura 7. Comando inputdlg. A funo inputdlg funciona como a funo input, porm h apenas alguns parmetros a mais que devem ser observados e preparados. Primeiramente haver necessidade de mensagens dizendo em qual caixa colocar uma informao especfica, no exemplo as mensagens esto armazenadas na varivel prompt. Nesta o texto de cada caixa foi inserido, como: Entre com a dimenso da matriz(Entre matrix size) e entre com o nome do mapa de cores (Enter colormap name). Tambm h a necessidade de dar um ttulo para essa caixa de comando, nocaso a varivel usada foi dlg_title, para qual foi atribudo nesse exemplo Entrada para funes de picos (Input for peaks function). Outra varivel, a def, foram atribudos os valores default. E finalmente a num_lines ou

15 Matlab: Um curso introdutrio

nmero de linhas,foi atribudo o valor de 1 linha. Cada caixa pode possuir vrias linhas, normalmente uma s basta. importante observar que os valores que retornam aps a entrada com esse comando so strings e, portanto, devem ser convertido para outro formado, exemplo se for nmeros de entrada. Para fazer essa converso por exemplo de caracteres para nmero use o seguinte comando: str2num(varivel string)

5.2. msgbox
H a possibilidade de enviar uma mensagem para o usurio, Para isso pode-se utilizar a funo msgbox. Cada caixa de mensagem ainda pode ter um cone que destaca que tipo de mensagem o programa est enviando, por exemplo: erro, alerta e ajuda. Observe a sintaxe dessa funo, primeiro vai a mensagem que se quer mandar para o usurio, em seguida o ttulo da caixa de mensagem e depois o tipo de cone (figura 8).

16 Matlab: Um curso introdutrio

Figura 8. Funo msgbox. Um exemplo desta funo segue: >>msgbox(Deseja continuar?,Rotina de entrada de dados,warn)

Figura 9.Exemplo do comando msgbox. Para outros tipos de avisos, como erro usa error e help.

5.3. Questdlg
A prxima funo a caixa de pergunta, onde alguma situaes so questionadas e o usurio dever clicar no boto para escolher entre elas. Ajusta-se uma destas escolhas como a default. Para configurar a funo necessrio definir a pergunta a ser mostrada para o usurio, o ttulo da caixa de mensagem, as opes, no mximo 4 e a opo default. A figura 10 mostra a sintaxe da estrutura desta funo.

17 Matlab: Um curso introdutrio

Figura 10. Estrutura da funo questdlg. A figura 11 mostra um exemplo dessa estrutura.

Figura 11. Exemplo da estrutura da funo questdlg. O resultado da estrurua da figura 11 apresentado na figura 12 a seguir.

18 Matlab: Um curso introdutrio

Figura 12. Resultado da funo questdlg. Na prxima figura (figura 13) apresentado outro exemplo de aplicao deste comando.

Figura 13. Outro exemplo do comando questdlg.

19 Matlab: Um curso introdutrio

6. Grficos
Nesse tpico so apresentados alguns tipos de grficos. Eles podero ser implementados em qualquer aplicao, no entanto deve-se ter cuidado para no perder o foco e principalmente a utilidade dos mesmos. Caindo assim, numa situao de poluio visual e o propsito de se utilizar grficos seja perdido.

6.1.

Plot
sem dvida a funo mais simples e sua

implementao segue o mesmo grau de dificuldade. O comando plot ento ilustrado abaixo na figura 14.
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 14. Grfico da funo seno usando plot. O comando plot(x,y), na sua mais simples usa os argumento x, para o eixo das abscissas e o y para o eixo das ordenadas. Acrescentando-se outros parmetros podemos incrementar e melhor representar dados atravs dos grficos criados. Em seguida, na figura 15, mostrado as variaes para funo plot.

20 Matlab: Um curso introdutrio


1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

Figura 15. Funo plot(x,y,b+,x,-y,or). A funo plot(x,y,b+,x,y,or) constri um grfico com duas funes y e y, ambas em funo de x. No entanto a primeira curva feita com o smbolo + e na cor azul, o argumento entendido pela funo b+. Na segunda curva, o argumento passado para funo or e assim plota a curva com o smbolo o e na cor vermelha. Assim outras curvas podero ser colocadas no mesmo grfico com simbologias e cores diferentes para destac-las umas das outras. possvel ainda alterar a espessura da linha. Podem-se incluir os nomes dos eixos e dar um ttulo para o grfico. Para isso devem-se adicionar na seqncia do comando plot as seguintes linhas de comando: xlabel(Nome do eixo X) coloca o nome do eixo X,

novamente os caracteres entre os sinais de apstrofos formam uma string e por isso vale qualquer tipo de caracter. ylabel(Nome do eixo Y) coloca o nome do eixo Y. zlabe(Nome do eixo Z) coloca o nome do eixo Z. No caso

do grfico ser em 3D.

21 Matlab: Um curso introdutrio

title(Nome do ttulo do grfico) acrescenta o nome do

grfico. Exemplo: plot(x,y,b+,x,-y,go) xlabel(Nome do eixo X) ylabel(Nome do eixo Y) title(Nome do ttulo do grfico) Resultado apresentado na figura 16.
1 0.8 0.6 0.4 Nome do eixo Y 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 Nome do eixo X 0.7 0.8 0.9 1 Nome do ttulo do grfico

Figura 16. Grfico completo, ttulo, eixo x, eixo y. Uma funo interessante que podemos inserir agora a ginput, ela permite que o usurio aponte um ou mais pontos no grfico aberto e retorna as coordenadas do ponto ou pontos selecionados. Exemplo: N=1; % uma varivel que determinar o nmero de pontos desejados. [a b]=ginput(N) % a funo ginput que pegar N pontos no grfico

22 Matlab: Um curso introdutrio

aberto. As variveis a e b tomaro os valores das

coordenadas dos pontos selecionados. Na figura 17 ilustrada a forma como a figura do grfico ficar, mostrando o cursor que aguara as entradas com o mouse.

Figura 17. Cursos do comando ginput. Este cursor ficar aberto at que a entrada feita com o mouse seja realizada, isso acontecer o nmero de vezes que for inserido no comando ginput.

23 Matlab: Um curso introdutrio

Figura 18. Dois pontos selecionados para construo da reta. A figura mostra os dois pontos, a partir destes ser desenhada uma reta interligando os mesmos. Na figura 19, tambm mais uma funo introduzida, a text(a(1),b(1),Ponto 1), onde a e b so tem os valores das coordenadas tomadas pela funo ginput e colocado o texto Ponto 1 e Ponto 2 na extremidade da reta, conforme a figura 19.
1 0.8 0.6 0.4 Nome do eixo Y 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 0.1 0.2 0.3 0.4 0.5 0.6 Nome do eixo X 0.7 0.8 0.9 1 Ponto 2 Ponto 1 Nome do ttulo do grfico

Figura 19. Funes line e text. Os argumentos da funo line so as coordenadas dos extremos da linha. Da funo text as coordenadas mais uma string, no caso Ponto 1 e depois o Ponto 2. Exemplo: [a b]=ginput(2) line(a,b) %a funo que toma 2 pontos do grfico %desenha uma linha com as coordenadas armazenadas em a e b. text(a(1),b(1),Ponto 1) %Coloca uma string na rea do grfico no ponto 1. text(a(2),b(2),Ponto 2) %Coloca uma string na rea do grfico no ponto 2.

24 Matlab: Um curso introdutrio

A figura 18 possui o resultado desse exemplo. Com esses novos comandos j se pode operar os grficos e manipulalos com bastante eficincia. Para utiliz-los em um documento word, basta entrar no menu edit e copiar a figura. O grfico ser enviado para rea de transferncia do windows e depois poder ser colado. Esse artifcio foi largamente utilizado para produzir esse texto.

6.2.

Subplot
Muitas vezes necessrio colocar as funes, devido

a sua natureza, em grficos distintos. Isso possvel no Matlab utilizando a funo subplot. As funes utilizadas no exemplo anterior sero aqui novamente reutilizadas para exemplificar esse comando. A seguir a figura 20 exibe a funo subplot com 4 grficos na mesma figura. possvel colocar mais, porm, por motivos de poluio visual e para que os resultados dos grficos fiquem legveis, importante manter esse nmero em torno de 66 ou no mximo 88. Esse comando tem como argumentos o tamanho da matriz aonde se distribuiro os grficos na figura e as suas respectivas posies.

25 Matlab: Um curso introdutrio


1 0.5 0 -0.5 -1 0 0.5 1 1 0.5 0 -0.5 -1 0 0.5 1

1 0.5 0 -0.5 -1 0 0.5 1

1 0.5 0 -0.5 -1 0 0.5 1

Figura 20. Funo subplo 22. Exemplo: Subplot(2,2,1),plot(x,-,r) Subplot(2,2,2),plot(x,y,gd) Subplot(2,2,3),plot(x,y,yp) Subplot(2,2,4),plot(x,-y,g-.) %posio 1, linha tracejada vermelha. %posio 2, linhadiamante, verde. %posio 3, linha pentagrama amarela %posio 4, linha trao ponto, azul. Uma tabela 4 foi construda para ilustrar a questo das posies. Perceba que no importa o tamanho da matriz, a numerao segue conforme a linha vermelha da tabela indica.

Tabela 4. Ilustrao do posicionamento dos grficos pelo comando subplo. 1 2 3 4 5 6

26 Matlab: Um curso introdutrio

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

7. Programa Exerccio
Neste tpico ser acompanharemos um programa que utilizar vrios dos comandos vistos at o momento. O projeto consta de trabalhar com uma equao de 2.grau, mas que muito bem poderia ser qualquer outro tipo de modelo matemtico, mostrar os resultados em um grfico. Neste, pode-se renomear os eixos e o ttulo, possibilita que salvemos os resultados em um arquivo com um nome escolhido e depois o recuperamos. Note que o arquivo aqui do tipo texto, ou seja, podemos salv-lo com ou sem exteo txt, doc, m ou qualquer outra desse gnero. Alm dos recursos grficos, utilizou-se uma estratgia de programao bastante interessante, na qual foi o script da codificao foi construida ao redor de um programa principal

27 Matlab: Um curso introdutrio

chamado main.m. Outros arquivos ento foram criados para quebrado, ou melhor, distribuido nos arquivos: arquivo.m, abre.m, dadosinf.m, grafi.m e solucao.m. preciso observar que os arquivos criados devero estar no mesmo diretrio ou pasta do caminho corrente do Matlab. Pois, se isso no acontecer, o Matlab no reconecer e enviar uma mensagem como mostrada na figura 21.

Fiura 21. Mensagem de erro, diretrio diferente do atual. Portanto necessrio direcionar o diretrio aonde ficaro os arquivos .m como corrente para que o Matlab consiga identific-los. Em seguida, na figura 22, o primeiro menu do nosso programa. Nele poderemos escolher a forma de entrada dos dados atravs do comando Teclado, apertando esse boto pode-se entrar digitando-se os valores.

Figura 22. Menu principal do main.

28 Matlab: Um curso introdutrio

Para o exemplo em desenvolvimento, os dados so os coeficientes da equao, a figura 23 mostra a janela aberta para introduo dos dados via teclado.

Figura 23. Janela de entrada de dados via teclado. Nessa janela j aparecem alguns valores predefinidos, os chamados valores default, que naturalmente podero ser aceitos ou pode-se digitar novos. Em seguida, pressionar a tecla OK. Quando o boto Banco, do menu principal apertado, dados de um arquivo chamado dadosinf.m so atribudos aos coeficientes. Mais uma vez, deve-se entender aqui que estes dados poderiam ser de qualquer outra varivel, constantes ou qualquer outra coisa que se desejasse. O boto Plotar apresenta outro menu (figura 24) onde se pede que o usurio aceite os nomes j definidos para os eixos e o prprio grfico ou os renomeie.

Fiura 24. Opo de renomear o nome dos eixos e do grfico. Ao pressionarmos o boto Editar nome, o respectivo menu se abre, conforme fiura 25.

29 Matlab: Um curso introdutrio

Figura 25. Janela para entrada de nomes do grfico. Caso no haja interesse em renomear essas informaes, ento pode-se pressionar o boto No editar, ento os nomes predefinidos sero usados. No exemplo dados de -5 at 5 foram usados para criar os dados, o passo foi de 0,001. O grfico mostrado na figura 27, os respectivos dados criados esto na figura 26.

Figura 26. Dados gerados para a equao. Como os coeficientes default foram aceitos os dados gerados esto representados no grfico na figura 27.

30 Matlab: Um curso introdutrio

Figura 27. Grfico da equao de 2.grau. Pode-se salvar os dados gerado em um arquivo, pressionando-se o boto Salvar. Em seguida o prompt pede para que o usurio insira o nome do arquivo, conforme a figura 28. O tipo de arquivos so do formato texto. Por isso, pode-se introduzir no nome as extenses txt, m, doc e outra qualquer tipo texto.

Figura 28. Prompt solicitando o nome para o arquivo. Tambm possvel abrir um arquivo de dados, pressionando o boto Abrir. Aqui faz-se necessrio tecer alguns comentrios. O leitor poder automatizar as operaes de salvamento e criao de nomes elaborando uma rotina para isso. Isso facilitar muito na criao e codificao desses arquivos para um acompanhamento e controle. Por exemplo, numa situao onde criou-se um modelo matemtico que est trabalhando com dados experimentais, possvel relacionar a codificao criada para cada

31 Matlab: Um curso introdutrio

experimento com o arquivo criado. Facilitando sua identificao e mais adiante criar uma rotina de codificao de programao que faa a comparao entre os resultados possibilitando uma comparao da evoluo dos mesmos. Uma codificao de arquivos possvel de ser implementada automatizada seria: exp_105202010.txt, ou exp_A-05202010.001 que significariam experincia 1 do dia 20/05/2010, no segundo experincia A do dia 20/05/2010 nmero 001 e assim por diante. Fica a critrio da liberdade e criatividade do leitor criar essa codificao.

Figura 29. Prompt para abertura do arquivo.

8.

Cdigo fonte:
Neste tpico apresentado o cdigo de programao

propriamente dito. Nele esto os comentrio em cada linha. Mais comentrio que se fizerem necessrio estaro entre linhas.

7.1. Arquivo main.m:

1. 2. 3. 4. 5. 6. 7.

%Arquivo principal do meu programa %-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*clc clear all aux1='s'; %comando limpa a tela %comando limpa a memria %cria a varivel aux1 e j atribui um caracter s

32 Matlab: Um curso introdutrio 8. 9. while aux1=='s' %faz a verificao para entrar no lao while que ser executado enquanto essa varivel no for alterada. 10. clc 11. aux=menu('Escolha sua opao',... 12. 'Teclado','Banco Dados','Plotar','Visualizar',... 13. 'Salvar','Sair','Abrir'); %cria a janela contendo o menu principal, observe que o primeiro strin a pergunta feia ao usurio para tomar a sua deciso, em seguida o nome dos botes: Teclado, Banco Dados, Plotar, Visualizar, Salvar, Sair e Abrir. Cada boto est numa posio, isto 1, 2, 3, 4, 5, 6 e 7 respectivamente. 14. 15. switch aux %iniciar o lao switch que entra com a opo feita no menu. O valor de retorno um nmero, portanto a varivel aux tem um valor inteiro. 16. case 1 % Entrada pelo teclado 17. 18. prompt={'a:','b:','c:'}; 19. def={'1','4','20'}; 20. dlgTitulo='Entre com os parametros:'; 21. numLine=1; 22. resp=inputdlg(prompt,dlgTitulo,numLine,def); %cria o menu que pede para o usurio entrar com dados na janela, figura 16. Para compor essa funo inputdl necessrio o ttulo de cada campo de entrada, especificar qual ser o valor default, no caso foram os nmero 1, 4 e 20, mas poderia ser vazio e assim , e . Em seguida declara a string para o ttulo, o nmero de linhas, normalmente 1. Esse comando retorna contedos de clulas, que so strings. Por isso devem ser convertidos para nmeros, se esse for o caso. 23. a=str2num(cell2mat(resp(1))); % o comando cell2mat, converte a clula para string, em seguida usa-se outro comando para converter string em nmero, o str2num. Finalmente tem-se nmero nas variveis a. Repete-se este comando para as outras variveis como segue. 24. b=str2num(cell2mat(resp(2))); 25. c=str2num(cell2mat(resp(3))); 26. 27. solucao 28. 29. case 2 % Abre os dados do arquivo 30. disp('Entrou aqui de alegre!!!') 31. if or(exist('a'),exist('b'))==0 32. dadosinf %chama o arquivo dadosinf.m 33. else 34. aux=1; 35. end 36. 37. case 3 %Plota o grafico 38. 39. if or(exist('a'),exist('b'))~=0

33 Matlab: Um curso introdutrio 40. 41. 42. 43. 44. soluo %chama o arquivo solucao.m grafi %chama o arquivo grafi.m else aux=1; msgbox('Declarar variavel','Aviso') %comando que coloca uma caixa de mensagem na tela. Necessita de uma string que d a mensagem para o usurio, e o tipo do cone que ir aparecer. Botes ok so exibidos para o usurio pressionar. 45. end 46. 47. 48. case 4 %Ver o conteudo do arquivo dadostxt.txt 49. 50. fid=fopen('c:/matlabR12/work/dadostxt.txt','r') %comando para abertura ou criao de arquivo, aqui inclusive colocado o caminho aonde este arquivo, no caso dadostxt.txt, est. O parmetro r, significa que ser feita a verificao somente de leitura. 51. if fid<0 52. disp('Nao ha dados no arquivo') %Se no existir o arquivo a funo fopen retorna um nmero negativo, ento enviada uma mensagem que o arquivo no existe e no pode ser aberto por isso. 53. else 54. dadosinf %Caso ele exista ento o arquivo dadosinf.m executado. 55. solucao %O arquivo soluo executado 56. clc 57. type dadostxt.txt%O contedo do arquivo dadostxt.txt visualizado. 58. pause 59. end 60. fclose(fid); %o fluxo fechado 61. case 5 %Salva os dados no arquivo dadostxt.txt 62. 63. if or(exist('a'),exist('b'))==0 64. msgbox('Declarar variavel','Aviso') 65. aux=1; 66. else 67. Solucao %o arquivo solucao.m aberto 68. Arquivo %o arquivo arquivo.m aberto 69. end 70. 71. case 6 72. aux1='sair'; 73. case 7 74. abre 75. otherwise 76. 77. clc 78. disp('Erro!!!!') 79. pause 80. for i=0:10 81. fprintf('Vou desligar %d\n',10-i)

34 Matlab: Um curso introdutrio 82. end 83. disp('Sair') 84. 85. end 86. clc 87. end

7.2. Arquivo Abre.m: %Arquivo que faz a abertura dos dados


1. dir *.arq 2. 3. arqfile=input('Entre com o nome do arquivo:','s'); 4. caminho=sprintf('C:/matlabR12/work/%s',arqfile); 5. fid3=fopen(caminho,'r'); 6. if fid3>=0 7. g=fscanf(fid3,'%f') 8. fprintf('Dados do arquivo < %s >',arqfile); 9. pause 10. fclose(fid3) 11. else 12. msgbox('Nao existe o arquivo','Aviso') 13. end

7.3. Arquivo arquivo.m:


1. %Arquivo que salva informaoes 2. %no disco 3. clc 4. arqfile=input('Entre com o nome do arquivo:','s'); 5. caminho=sprintf('C:/matlabR12/work/%s',arqfile); 6. fid1=fopen(caminho,'W+'); 7. fprintf(fid1,'%f %3.2f \n',t,y) 8. fclose(fid1) 9. clc 10. disp('Visualizacao do arquivo:') 11. y' Arquivo dadosinf.m: 1. %Arquivo que armazena dados 2. %funcionara como banco de dados

35 Matlab: Um curso introdutrio 3. 4. 5. 6. 7. 8. 9. %de informacoes permanentes a=1; b=2; c=8; clc fprintf('Os coeficientes a=%d b=%d e c=%d',a,b,c) pause

7.4. Aquivo grafi.m


1. %Arquivo para impressao de graficos 2. %configuracoes de graficos 3. 4. clc 5. aux3=menu('Escolha sua opao',... 6. 'Editar nome:','Nao editar'); 7. 8. 9. if aux3==1 10. 11. prompt3={'Eixo X:','Eixo Y:','Titulo:'}; 12. def3={'','',''}; 13. dlgTitulo3='Entre com os parametros:'; 14. numLine3=1; 15. resp3=inputdlg(prompt3,dlgTitulo3,numLine3,def3); 16. X=cell2mat(resp3(1)); 17. Y=cell2mat(resp3(2)); 18. T=cell2mat(resp3(3)); 19. 20. 21. 22. else 23. X='Temp'; 24. Y='Amplitude'; 25. T='Equacao'; 26. end 27. 28. plot(t,y) 29. title(T) 30. xlabel(X) 31. ylabel(Y) 32. grid 33. pause

7.5. Arquivo solucacao.m


1. %Arquivo com a solucao do problema 2. t=-5:.001:5;

36 Matlab: Um curso introdutrio 3. y=a*t.^2-b*t+c

37 Matlab: Um curso introdutrio

9. 8. Concluso
Finalizamos esta apostila com o sentimento de ter colocado o contedo que achamos ser essencial para um curso introdutrio. Como as turmas so sempre muito heterogneas bastante complicado atender nas especificidades. notria a necessidade de um curso avanado para este fim. Se o contedo aqui apresentado tiver sido assimilado pelo leitor, e ele no deix-lo cair no esquecimento, ele ter grandes chances de sucesso no uso deste software maravilhoso. O leitor facilmente poder se tornar uma autodidata e pode aprofundar-se cada vez mais, explorando os comandos e as funes aplicadas na sua rea de especializao. Por isso aproveito essa oportunidade de colocar a disposio as formas de contado para que possa enviar dvidas, crticas e sugestes, todas sero muito bem vindas e reconhecidas(email:paulo.buchner@ufv.br). evidente a necessidade do conhecimento da lngua inglesa, pelo menos para leitura, pois as ajudas so todas nesse idioma. Mas, acredito que nos tempos em que vivemos isso se torne mais um incentivo para estud-la. O comando help seu principal aliado, com ele voc conseguir explorar ainda mais o Matlab. Desde j o leito convidado a participar do prximo curso a ser lanado e divulgado que envolve um pacote do Matlab, denominado Simulink. Com certeza, nas prximas verses desta apostilas eventuais erros e melhores devero estar presentes, as quais s sero possveis pelo aprendizado que fazemos a cada vez que

38 Matlab: Um curso introdutrio

lecionamos esse curso introdutrio. Aproveito para agradecer a participao, a pacincia e, sem dvida nenhuma, a colaborao de todos, participantes e organizadores.

9. Referncias bibliogrficas
COCIAN, Luis Fernando Espinosa. Manual da linguagem C.1. Edio : Editora da Ulbra, 2004. HELSELMAN, D; LITTLEFILD, B. MATLAB Verso do estudante guia do usurio. So Paulo: Makron Books, 1997. 308p.

Das könnte Ihnen auch gefallen