Você está na página 1de 32

UNIVERSIDADE FEDERAL DE VIOSA

DEP DEPARTAMENTO DE ENGENHARIA DE PRODUO E


MECNICA
CURSO DE ENGENHARIA 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

comando

semelhante

ao

prompt

ou

linha

de

. 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.

Prof. Paulo Cezar Bchner

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;

Prof. Paulo Cezar Bchner

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 Matlab. Vrios deles esto listados abaixo e
devem ser utilizado, pois so muito teis durante a programao no Matlab.

Prof. Paulo Cezar Bchner

4
Matlab: Um curso introdutrio
Tabela 1: Comandos essenciais via prompt.
Comando
clc

Exemplo de aplicao
- semelhante ao cls, este comando limpa a tela
do workspace.

Clear

-este comando limpa a varivel escolhida. Ex:


>>clear + varivel.

clear all

-limpa todas as variveis do buffer de memria.

Dir

-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

-exibe as variveis criadas e sua dimenso. Ex:


>>whos

Clear vars

- funciona como clear.

Rmdir

-remove um diretrio ou pasta, desde que ele


esteja vazio. Ex: rmdir diretrio. Se o diretrio
diretrio existir e estiver vazio.

Mkdir

-cria uma pasta diretamente do prompt de


comando.

Cd

- 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

Prof. Paulo Cezar Bchner

5
Matlab: Um curso introdutrio
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 4 abaixo resume esses operadores, em seguida
alguns exemplos para extinguir qualquer dvida ainda remanescente.

Figura 4. 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

Prof. Paulo Cezar Bchner

a resposta ser:

6
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 5.

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 5. Spacework, comandos de mensagens ao usurio.

Tabela 2: Exemplos com os operadores aritmticos.


Soma

Subtrao

>>1+2

>>3-2

Ans =

Ans=
3

Multiplicao

Diviso

>>2*3

>>3/2

Prof. Paulo Cezar Bchner

7
Matlab: Um curso introdutrio
Ans=

Ans
6

1.5
>>2\3
Ans
1.5

Potncia

Expoente

>>2^3

>>exp(1)

Ans

Ans
8

2.7183

Operaes com os arrays: a=[1 2 3] e b=[4 5 6]


Soma

Subtrao

>>a+b

>>a-b

Ans

Ans
579

-3 -3 -3

Multiplicao

Diviso

>>a.*b

>>a./b ou b.\a

Ans

Ans
4 10 18

0.2500 0.4000 0.5000

Potncia

Expoente

>>a.^2

>>exp(a)

Ans

Ans
149

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

Input

>>disp (Mensagem)

>>input(Entre com o dado:)

Mensagem

Entre com o dado:

sprintf

sscanf

Prof. Paulo Cezar Bchner

8
Matlab: Um curso introdutrio

>>sprintf(Essa a mensagem:)

>>A=2.71 3.14

Ans=

A=
Essa a mensagem:

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

fprintf

fscanf

>>fprintf(Essa a mensagem:\n)

>>fscanf(fid,%f)

Essa a mensagem:

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

%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.

Prof. Paulo Cezar Bchner

9
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 6 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 6. 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 7. Estrutura lgica IF-elseif-else.

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.

Prof. Paulo Cezar Bchner

10
Matlab: Um curso introdutrio
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 8. Estrutura switch.

Na prxima figura 9 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.

Figura 9. Estrutura for.

Outra estrutura muito comum e a while (figura 10), 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 10. Estrutura while.

Prof. Paulo Cezar Bchner

11
Matlab: Um curso introdutrio
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.

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 11.

Figura 11. 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

Prof. Paulo Cezar Bchner

12
Matlab: Um curso introdutrio
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 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 12).

Figura 12. Funo msgbox.

Um exemplo desta funo segue:


>>msgbox(Deseja continuar?,Rotina de entrada de dados,warn)

Prof. Paulo Cezar Bchner

13
Matlab: Um curso introdutrio

Figura 13. 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 14 mostra
a sintaxe da estrutura desta funo.

Figura 14. Estrutura da funo questdlg.

A figura 15 mostra um exemplo dessa estrutura.

Figura 15. Exemplo da estrutura da funo questdlg.

Prof. Paulo Cezar Bchner

14
Matlab: Um curso introdutrio
O resultado da estrutura da figura 15 apresentado na figura 16 a seguir.

Figura 16. Resultado da funo questdlg.

Na prxima figura (figura 17) apresentado outro exemplo de aplicao deste


comando.

Figura 17. Outro exemplo do comando questdlg.

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 18.

Prof. Paulo Cezar Bchner

15
Matlab: Um curso introdutrio

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 18. 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
19, mostrado as variaes para funo plot.
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 19. 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:

Prof. Paulo Cezar Bchner

16
Matlab: Um curso introdutrio

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.

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


plot(x,y,b+,x,-y,go)

Exemplo:

xlabel(Nome do eixo X)
ylabel(Nome do eixo Y)
title(Nome do ttulo do grfico)
Resultado apresentado na figura 20.
Nome do ttulo do grfico
1
0.8
0.6

Nome do eixo Y

0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

0.1

0.2

0.3

0.4
0.5
0.6
Nome do eixo X

0.7

0.8

0.9

Figura 20. 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 aberto.


As variveis a e b tomaro os valores das coordenadas dos pontos selecionados. Na figura
21 ilustrada a forma como a figura do grfico ficar, mostrando o cursor que aguara as
entradas com o mouse.

Prof. Paulo Cezar Bchner

17
Matlab: Um curso introdutrio

Figura 21. 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.

Figura 22. 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 23, 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 23.

Prof. Paulo Cezar Bchner

18
Matlab: Um curso introdutrio
Nome do ttulo do grfico
1
0.8
0.6
Ponto 1
Nome do eixo Y

0.4
0.2
0
-0.2
-0.4
-0.6

Ponto 2

-0.8
-1

0.1

0.2

0.3

0.4
0.5
0.6
Nome do eixo X

0.7

0.8

0.9

Figura 23. 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.
Com esses novos comandos j se pode operar os grficos e manipul-los 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 24 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.

Prof. Paulo Cezar Bchner

19
Matlab: Um curso introdutrio
Esse comando tem como argumentos o tamanho da matriz aonde se distribuiro os
grficos na figura e as suas respectivas posies.
1

0.5

0.5

-0.5

-0.5

-1

0.5

-1

0.5

0.5

-0.5

-0.5

-1

0.5

-1

0.5

0.5

Figura 24. Funo subplot 22.

Exemplo:
Subplot(2,2,1),plot(x,-,r)

%posio 1, linha tracejada vermelha.

Subplot(2,2,2),plot(x,y,gd)

%posio 2, linha diamante verde.

Subplot(2,2,3),plot(x,y,yp)

%posio 3, linha pentagrama amarela.

Subplot(2,2,4),plot(x,-y,g-.)

%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 subplot.
1

10

11

12

13

14

15

16

17

18

Prof. Paulo Cezar Bchner

20
Matlab: Um curso introdutrio

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

6.3 Compass
Outra funo que dever dispertar interesse no leito a compass. Com ela
poderemos colocar em um sistema semelhante a uma bssula, vetores. Todos os vetores
criados parte do centro com a extremidade definida. So setas que apontam para direes
determinadas. A figura 25 ilustra esse comando.

90

1.5

120

60
1

150

30
0.5

180

210

330

240

300
270

Figura 25. Funo compass.

O leitor deve ficar atendo a informao de que poder sempre colocar nome nos
eixos e ttulos dos grficos, inclusive textos, conforme exemplificados em outros grficos j
apresentados.

Prof. Paulo Cezar Bchner

21
Matlab: Um curso introdutrio
Ttulo
90

1.5

120

60
1

150

30

Imaginrio

0.5

180

210

330

240

300
270
Real

Figura 26. Funo compass com nome nos eixos e ttulo.

A figura 27 mostra essas opes. H, com certeza, outras que podero ser.
Ttulo
90

1.5

120

60
1

150

30

Imaginrio

0.5

180

Linha

210

330

240

300
270
Real

Figura 27. Funo compass com linha e texto.


300

250

200

150

100

50

0
-4

-3

-2

-1

Figura 28. Funo hist.

Na figura 28 apresentada a funo hist, neste exemplo foi utilizado uma


distribuio normal.

Prof. Paulo Cezar Bchner

22
Matlab: Um curso introdutrio

Figura 29. O comando bar.

Nesse comando os argumento so x=[1 2 3 4 5 6 7 8 9] e y=[2 4 5 6 7 5 4 4 1], onde o


vetor x representa os valores dos eventos e y a freqncia. Novamente, pode-se colocar nomes
nos eixos e ttulos, alm de colocar linhas.
7

Figura 30. Funo stairs.

O comando stairs, apresentado na figura 30 foi utilizado os vetores x e y. Na figura 31


e apresentado o comando stem.
7

0
1

Figura 31. Comando stem.

Prof. Paulo Cezar Bchner

23
Matlab: Um curso introdutrio

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 construda ao redor de um programa
principal chamado main.m. Outros arquivos ento foram criados para quebrado, ou melhor,
distribudo 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
reconhecer e enviar uma mensagem como mostrada na figura 32.

Figura 32. Mensagem de erro, diretrio diferente do atual.

Portanto necessrio direcionar o diretrio onde ficaro os arquivos.m como corrente


para que o Matlab consiga identific-los.
Em seguida, na figura 33, 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 33. Menu principal do main.

Prof. Paulo Cezar Bchner

24
Matlab: Um curso introdutrio
Para o exemplo em desenvolvimento, os dados so os coeficientes da equao, a
figura 34 mostra a janela aberta para introduo dos dados via teclado.

Figura 34. 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 35) onde se pede que o usurio aceite
os nomes j definidos para os eixos e o prprio grfico ou os renomeie.

Figura 35. Opo de renomear o nome dos eixos e do grfico.

Ao pressionarmos o boto Editar nome, o respectivo menu se abre, conforme figura


36.

Figura 36. 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 38,
os respectivos dados criados esto na figura 37.

Prof. Paulo Cezar Bchner

25
Matlab: Um curso introdutrio

Figura 37. Dados gerados para a equao.

Como os coeficientes default foram aceitos os dados gerados esto representados no


grfico na figura 38.

Figura 38. 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 39. 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.

Prof. Paulo Cezar Bchner

26
Matlab: Um curso introdutrio
Figura 39. 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 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 40. 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.

8.1. Arquivo main.m:


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

%Arquivo principal do meu programa


%-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*clc
clear all

%comando limpa a tela


%comando limpa a memria

aux1='s';

Prof. Paulo Cezar Bchner

%cria a varivel aux1 e j atribui um caracter s

27
Matlab: Um curso introdutrio
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
40.
soluo
%chama o arquivo solucao.m
41.
grafi
%chama o arquivo grafi.m
42.
else
43.
aux=1;
44.
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

Prof. Paulo Cezar Bchner

28
Matlab: Um curso introdutrio
46.
47.
48.
49.
50.

51.
52.

case 4 %Ver o conteudo do arquivo dadostxt.txt


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.
if fid<0
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.
else
dadosinf
%Caso ele exista ento o arquivo dadosinf.m executado.
solucao
%O arquivo soluo executado
clc
type dadostxt.txt%O contedo do arquivo dadostxt.txt visualizado.
pause
end
fclose(fid);%o fluxo fechado
case 5 %Salva os dados no arquivo dadostxt.txt

53.
54.
55.
56.
57.
58.
59.
60.
61.
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)
82.
end
83.
disp('Sair')
84.
85. end
86. clc
87. end

8.2. Arquivo Abre.m:


%Arquivo que faz a abertura dos dados
1. dir *.arq

Prof. Paulo Cezar Bchner

29
Matlab: Um curso introdutrio
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.

arqfile=input('Entre com o nome do arquivo:','s');


caminho=sprintf('C:/matlabR12/work/%s',arqfile);
fid3=fopen(caminho,'r');
if fid3>=0
g=fscanf(fid3,'%f')
fprintf('Dados do arquivo < %s >',arqfile);
pause
fclose(fid3)
else
msgbox('Nao existe o arquivo','Aviso')
end

8.3. Arquivo arquivo.m:


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

%Arquivo que salva informaoes


%no disco
clc
arqfile=input('Entre com o nome do arquivo:','s');
caminho=sprintf('C:/matlabR12/work/%s',arqfile);
fid1=fopen(caminho,'W+');
fprintf(fid1,'%f %3.2f \n',t,y)
fclose(fid1)
clc
disp('Visualizacao do arquivo:')
y'

Arquivo dadosinf.m:
1.
2.
3.
4.
5.
6.
7.
8.
9.

%Arquivo que armazena dados


%funcionara como banco de dados
%de informacoes permanentes
a=1;
b=2;
c=8;
clc
fprintf('Os coeficientes a=%d b=%d e c=%d',a,b,c)
pause

8.4. Aquivo grafi.m


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

%Arquivo para impressao de graficos


%configuracoes de graficos
clc
aux3=menu('Escolha sua opao',...
'Editar nome:','Nao editar');

if aux3==1

Prof. Paulo Cezar Bchner

30
Matlab: Um curso introdutrio
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.

prompt3={'Eixo X:','Eixo Y:','Titulo:'};


def3={'','',''};
dlgTitulo3='Entre com os parametros:';
numLine3=1;
resp3=inputdlg(prompt3,dlgTitulo3,numLine3,def3);
X=cell2mat(resp3(1));
Y=cell2mat(resp3(2));
T=cell2mat(resp3(3));

else
X='Temp';
Y='Amplitude';
T='Equacao';
end
plot(t,y)
title(T)
xlabel(X)
ylabel(Y)
grid
pause

8.5. Arquivo solucao.m


1. %Arquivo com a solucao do problema
2. t=-5:.001:5;
3. y=a*t.^2-b*t+c

9.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 as 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, 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 para colocar a disposio as formas de contado, pelas
quais podem ser enviar dvidas, crticas e sugestes. Todas sero muito bem vindas e
reconhecidas.
As formas mais eficientes so atravs do endereo eletrnico: paulo.buchner@ufv.br
ou pelo telefone +55(31) 3899 4097.

Prof. Paulo Cezar Bchner

31
Matlab: Um curso introdutrio
evidente a necessidade do conhecimento da lngua inglesa, pelo menos para leitura,
pois as ajudas do Matlab so todas dadas 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 leitor 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 cometidos sero
corrigidos e melhorias devero estar presentes, as quais, s sero possveis pelo
aprendizado que obtemos a cada vez que lecionamos esse curso. Aproveito para agradecer
a participao, a pacincia e, sem dvida nenhuma, a colaborao de todos, participantes e
organizadores.

10. 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.

Prof. Paulo Cezar Bchner

Você também pode gostar