Matlab-Um curso introdutório

39
0 UNIVERSIDAD E FEDERAL DE VIÇOSA DEP – DEPARTAMENTO DE ENG DE PROD E MECÂNICA CURSO DE ENENHARIA MECÂNICA Matlab: um curso introdutório Prof. Paulo Cezar Büchner VIÇOSA/MG 2010 Organização:

Transcript of Matlab-Um curso introdutório

0

UNIVERSIDAD E FEDERAL DE VIÇOSA DEP – DEPARTAMENTO DE ENG DE PROD E MECÂNICA

CURSO DE ENENHARIA MECÂNICA

Matlab: um curso introdutório

Prof. Paulo Cezar Büchner

VIÇOSA/MG 2010

Organização:

Matlab: Um curso introdutório

1

1. Introdução

Matlab é um software para modelagem matemática de sistemas,

ao contrário de muitos outros pacotes vendidos, ele não gera arquivos

executáveis, assim necessita que ele esteja instalado no computador para

que se possa “rodar” o arquivo de código.

Há dois ambientes básicos 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 versão 95. A seguir temos uma visão geral dos

ambientes de programação do Matlab(Figura 1).

Primeiramente a versão que se está utilizando nesta apostila é a

7.8.0.347 R2009a, cujas licenças foram adquiridas pela UFV (Universidade

Federal de Viçosa) em novembro de 2009. Há duas três versões: uma

estudantil que é caracterizada pelo prompt de comando edu>, a versão

profissional >> e a educacional, esta última para instituições de ensino. Na

figura 1 pode-se ver várias janelas, cada qual com sua função, mas há 2

delas que pode-se classificar como sendo as principais. Ou seja, as que

apresentam o espaço de trabalho e o arquivo.m.

O objetivo da produção deste material é servir como apoio a um

curso de introdutório de Matlab. Com este o participante poderá rever

alguns comandos iniciais e essências de pacote de programação que tem

sido escolhido por várias instituições de ensino superior do Brasil e do

exterior, além de muitas empresas o terem adotado como software de

projetos.

Um dos motivos dessa escolha é sem dúvida a facilidade e

simplicidade de programação, além do leque de funções inclusas e

validadas que ele possui. Tudo isso torna o Matlab uma poderosa

ferramenta de trabalho, porque poupa tempo de programação.

Espera-se que com esse texto e mais o curso, o participante ganhe

know-how para se autodesenvolver e aprofunda na sua área específica,

explorando cada vez mais este software e obtendo resultados com ele.

Matlab: Um curso introdutório

2

Figura 1. Ambientes do MatLab.

As outras áreas podem ser suprimidas, mas é interessante deixa-las a

mostra para um maior controle das informações geradas pelo sistema. Na

figura 2 é possível observar mais 3 áreas:

• o Current Directory (diretório atual), nesta janela pode-se observar o

conteúdo da pasta atual (ou diretório atual). É sempre um bom

procedimento que os arquivos que estejam sendo vistos nesta janela,

sejam os que se pretende utilizar. Caso contrário o Matlab não

reconhecerá os comandos por não estar direcionado ao diretório atual.

• Buffer (Workspace), nesta estarão sendo apresentadas as variáveis

criadas, seu tamanho, tipo e conteúdo;

• Command History, nesta são registrados todos os comandos entrado no

Work Space;

Área do arquivo.m

Área de Trabalho

Matlab: Um curso introdutório

3

Figura 2. Outras áreas de controle do Matlab.

Pode ser observado também, que na parte superior da janela do Matlab

já aparece o Current Directory. Assim, talvez seja dispensável mais uma janela

para esse propósito.

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 vários comandos que lá se utilizava permanecem no

Buffer

Histórico

de

comandos

Pasta atual

Matlab: Um curso introdutório

4

Matlab. Vários deles estão listados abaixo e devem ser utilizado, pois são muito

úteis durante a programação no Matlab.

Tabela 1: Comandos essenciais via prompt.

Comando Exemplo de aplicação

clc

-é semelhante ao cls, este comando limpa a tela

do workspace.

Clear -este comando limpa a variável escolhida. Ex:

>>clear + variável.

clear all -limpa todas as variáveis do buffer de memória.

Dir -mostra os arquivos e pastas do diretório 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 extensão escolhida,

no caso a exe. Ex3: >>dir m*.txt, mostra apenas

os arquivos que iniciam com m e tem extensão

txt. Ex4: >>dir r*.*t, exibe somente os arquivos

que começam com r e tem um t no final de sua

extensão. Ex5: >> dir *. , mostra epenas as

pastas que estão neste dirertório.

What -este comendo é similar ao dir, apenas que ele

mostra apenas os arquivos com extensão m. Ex:

>>what

Who -mostra as variáveis que estão no buffer. Este

comando dispensa a presença da janela, pois

podemos consultar através do teclado, quando

necessário, as variáveis criadas.

Whos -exibe as variáveis criadas e sua dimensão. Ex:

>>whos

Clear vars - funciona como clear.

Rmdir -remove um diretório ou pasta, desde que ele

esteja vazio. Ex: rmdir diretório. Se o diretório

Matlab: Um curso introdutório

5

“diretório” 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 conteúdo 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

função está. Ex: >>which type

built-in

(C:\MATLAB\R2009a\toolbox\matlab\general\type)

Abaixo temos os operadores aritméticos essenciais. Além dos sinais de

+(soma), subtração (-), multiplicação (*), divisão (/ ou \) e potencia (^) esses

ainda são associados, quando operando com matrizes, ao ponto antes da

operação. Indicando que o produto ou a divisão ocorre membro a membro. A

figura 1 abaixo resume esses operadores, em seguida alguns exemplos para

extinguir qualquer dúvida ainda remanescente.

Matlab: Um curso introdutório

6

Figura 1. Operadores aritméticos.

Quando os operadores são acrescidos de um ponto, então pode

executar essas operações com vetores e matrizes. Perceba, porém, que o

ponto vai antes do operador. Exemplos são também apresentados na tabela 2.

O sinal apóstrofo (‘) é muito utilizado, ao contrário da aspas (“) utilizada em

programas como o C e C++.

2. Comandos de mensagens e entradas

Apresentamos agora alguns comandos básicos para mensagens ao

usuário.

disp(‘ mensagem a enviar para tela’) a resposta será:

mensagem a enviar para tela

Matlab: Um curso introdutório

7

sprintf(‘ mensagema enviar par tela’) essa porém além de exibir mensagem na

tela atribui a string a variável ans. Caso deseje, poderá executar esse comando

da seguinte forma:

mensagem= sprintf(‘ mensagema enviar par tela’) mostrará na tela e atribuirá a

string para variável mensagem.

Que poderá se usada dentro de qualquer outra função que demande de uma

string, por exemplo o próprio comando disp. disp(mensagem), figura 3.

Figura 3. Spacework, comandos de mensagens ao usuário.

Mensagem enviada

Mensagem exibida e que

está no conteúdo da

variável ans

Mensagem exibida e que

está no conteúdo da

variável mensagem

Mensagem exibida usando o

comando disp e a variável

mensagem.

Matlab: Um curso introdutório

8

Tabela 2: Exemplos com os operadores aritméticos.

Soma Subtração

>>1+2

Ans =

3

>>3-2

Ans=

1

Multiplicação Divisão

>>2*3

Ans=

6

>>3/2

Ans

1.5

>>2\3

Ans

1.5

Potência Expoente

>>2^3

Ans

8

>>exp(1)

Ans

2.7183

Operações com os arrays: a=[1 2 3] e b=[4 5 6]

Soma Subtração

>>a+b

Ans

5 7 9

>>a-b

Ans

-3 -3 -3

Multiplicação Divisão

Matlab: Um curso introdutório

9

>>a.*b

Ans

4 10 18

>>a./b ou b.\a

Ans

0.2500 0.4000 0.5000

Potência Expoente

>>a.^2

Ans

1 4 9

>>exp(a)

Ans

2.7183 7.3891 20.0855

Diferença de capitalização, o Matlab faz diferença entre maiúsculas e

minúsculas, portanto deve-se ter cuidado no momento de criar uma variável.

A tabela 3 são apresentado alguns comando de saída para tela e de

entra com exemplos. Alguns deles, no caso dos comandos de entrada, são

especiais para dados de arquivos e variáveis do sistema.

Tabela 3: Comandos de entrada e saída para tela.

disp Input

>>disp (‘Mensagem’)

Mensagem

>>input(‘Entre com o dado:’)

Entre com o dado:

sprintf sscanf

>>sprintf(‘Essa é a mensagem:’)

Ans=

Essa é a mensagem:

>>A=’2.71 3.14’

A=

2.71 3.14

>>sscanf(A,’%f’)

Ans=

2.7100

3.1400

fprintf fscanf

Matlab: Um curso introdutório

10

>>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 são: %3.2f e

%3.2f\n’,B(1),B(2))

ans=

Os valores são: 2.71 e 3.14

3. Criando uma variável

Para criar uma variável no Matlab é muito fácil, 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

três variáveis, 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 conteúdos às variáveis.

A variável criada fica na memória do Mabtlab e é assim podem ser

usadas em várias partes do programa. Portanto um cuidado é necessário para

não haver confusão com elas.

Matlab: Um curso introdutório

11

4. Operadores relacionais

Assim como outras linguagens de programação, há uma série de

codificações para elaborar o funcionamento lógico 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 não igual ou diferente ~=. Deve-se ter cuidado para

não confundir == com =, pois são bem distintos um do outro, o primeiro serve

para comparar e o segundo para atribuir.

Figura 4. Operadores relacionais.

Em seguida estão algumas estruturas lógicas, também utilizadas em

muitas outras linguagens de programação, que no Matlab se mostra muito mais

simples por dispensar uma série de sinais e simbologia.

A primeira dessas estruturas é a IF-elseif-else como mostrado na figura

Figura 4. Estrutura lógica IF-elseif-els.

Matlab: Um curso introdutório

12

Essa estrutura poderá se usada na sua forma mais simples que é o

usando o comando if + a expressão 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 verificação, a qual se não for

satisfeita passa par a segunda verificação elseif, caso não seja satisfeita segue

para a última que será executada no caso de nenhuma das anteriores forem

satisfeitas.

Outra estrutura é o case, nesta é necessário a entrada verdadeira para

que ela seja executada. Nesta várias condições podem ser relacionadas e

executadas conforme a entrada. São, neste caso, os case’s. A estrutura

executa um determinado expressão casa nenhuma das condições, ou seja dos

case’s, não seja satisfeita. Muito utilizada para enviar uma mensagem de erro

para o usuário. Novamente, a estrutura é finalizada com a palavra end.

Figura 5. Estrutura switch.

Na próxima figura 6 é apresentada a estrutura for, onde uma expressão

é condicionada para incrementar as operações, equações e etc. Nesta

estrutura assim como as outras é possível operarem em cascata, ou seja,

estruturas aninhadas.

Matlab: Um curso introdutório

13

Figura 6. Estrutura for.

Outra estrutura muito comum e a while (figura 7), nela enquanto a

expressão lógica é satisfeita o laço continua executando as operações dentro

dela até que o estado dela seja alterado para sair do laço.

Figura 7. Estrutura while.

O laço while se repete enquanto o valor da variável eps+1 for menor que

1. Há a expressão que faz com que o valor da eps vá diminuindo até que a

condição não seja mais satisfeita.

5. Interface gráfica

Embora haja uma linguagem mais apropriada para fazer a interface

gráfica com o usuário chamada de GUI, o Matlab disponibiliza algumas funções

muito interessantes que permite uma aplicação direta e muito prática de

algumas dessas interfaces. Com elas, certamente o leitor se sentirá muito

melhor, pois poderá proporcionar programas com uma interface muito próxima

ao que o sistema Windows executa. Assim seguem algumas dessas funções e

a explanação de como elas funcionam.

Matlab: Um curso introdutório

14

5.1. Inpudlg

Essa função abre uma caixa de mensagem onde o usuário poderá

atribuir valores a suas variáveis. Ela possibilita que existam valores “default”. A

sua estrutura segue conforme a figura 7.

Figura 7. Comando inputdlg.

A função inputdlg funciona como a função input, porém há

apenas alguns parâmetros a mais que devem ser observados e

preparados. Primeiramente haverá necessidade de mensagens

dizendo em qual caixa colocar uma informação específica, no

exemplo as mensagens estão armazenadas na variável prompt.

Nesta o texto de cada caixa foi inserido, como: Entre com a

dimensão da matriz(Entre matrix size) e entre com o nome do mapa

de cores (Enter colormap name). Também há a necessidade de dar

um título para essa caixa de comando, nocaso a variável usada foi

dlg_title, para qual foi atribuído nesse exemplo Entrada para

funções de picos (Input for peaks function). Outra variável, a def,

foram atribuídos os valores default. E finalmente a num_lines ou

Matlab: Um curso introdutório

15

número de linhas,foi atribuído o valor de 1 linha. Cada caixa pode

possuir várias linhas, normalmente uma só basta.

É importante observar que os valores que retornam após a

entrada com esse comando são strings e, portanto, devem ser

convertido para outro formado, exemplo se for números de entrada.

Para fazer essa conversão por exemplo de caracteres para

número use o seguinte comando:

str2num(variável string)

5.2. msgbox

Há a possibilidade de enviar uma mensagem para o usuário,

Para isso pode-se utilizar a função 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 função, primeiro vai a mensagem

que se quer mandar para o usuário, em seguida o título da caixa de

mensagem e depois o tipo de ícone (figura 8).

Matlab: Um curso introdutório

16

Figura 8. Função msgbox.

Um exemplo desta função 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 próxima função é a caixa de pergunta, onde alguma

situações são questionadas e o usuário deverá clicar no botão para

escolher entre elas. Ajusta-se uma destas escolhas como a default.

Para configurar a função é necessário definir a pergunta a ser

mostrada para o usuário, o título da caixa de mensagem, as

opções, no máximo 4 e a opção default. A figura 10 mostra a

sintaxe da estrutura desta função.

Matlab: Um curso introdutório

17

Figura 10. Estrutura da função questdlg.

A figura 11 mostra um exemplo dessa estrutura.

Figura 11. Exemplo da estrutura da função questdlg.

O resultado da estrurua da figura 11 é apresentado na figura

12 a seguir.

Matlab: Um curso introdutório

18

Figura 12. Resultado da função questdlg.

Na próxima figura (figura 13) é apresentado outro exemplo de

aplicação deste comando.

Figura 13. Outro exemplo do comando questdlg.

Matlab: Um curso introdutório

19

6. Gráficos

Nesse tópico são apresentados alguns tipos de

gráficos. Eles poderão ser implementados em qualquer aplicação,

no entanto deve-se ter cuidado para não perder o foco e

principalmente a utilidade dos mesmos. Caindo assim, numa

situação de poluição visual e o propósito de se utilizar gráficos seja

perdido.

6.1. Plot

É sem dúvida a função mais simples e sua

implementação segue o mesmo grau de dificuldade. O comando

plot é então ilustrado abaixo na figura 14.

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura 14. Gráfico da função 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 parâmetros podemos

incrementar e melhor representar dados através dos gráficos

criados. Em seguida, na figura 15, é mostrado as variações para

função plot.

Matlab: Um curso introdutório

20

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Figura 15. Função plot(x,y,’b+’,x,-y,’or’).

A função plot(x,y,’b+’,x,y,’or’) constrói um gráfico com

duas funções y e –y, ambas em função de x. No entanto a primeira

curva é feita com o símbolo + e na cor azul, o argumento entendido

pela função é ‘b+’. Na segunda curva, o argumento passado para

função é ‘or’ e assim “plota” a curva com o símbolo ‘o’ e na cor

vermelha. Assim outras curvas poderão ser colocadas no mesmo

gráfico com simbologias e cores diferentes para destacá-las umas

das outras. É possível ainda alterar a espessura da linha.

Podem-se incluir os nomes dos eixos e dar um título

para o gráfico. Para isso devem-se adicionar na seqüência 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 apóstrofos 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 gráfico ser em 3D.

Matlab: Um curso introdutório

21

• title(‘Nome do título do gráfico’)→ acrescenta o nome do

gráfico.

Exemplo:

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

xlabel(‘Nome do eixo X’)

ylabel(‘Nome do eixo Y’)

title(‘Nome do título do gráfico’)

Resultado é apresentado na figura 16.

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Nome do título do gráfico

Nome do eixo X

Nom

e do

eix

o Y

Figura 16. Gráfico completo, título, eixo x, eixo y.

Uma função interessante que podemos inserir agora é

a ginput, ela permite que o usuário aponte um ou mais pontos no

gráfico aberto e retorna as coordenadas do ponto ou pontos

selecionados.

Exemplo:

N=1; %é uma variável que determinará o número de pontos

desejados.

[a b]=ginput(N) %é a função ginput que pegará N pontos no gráfico

Matlab: Um curso introdutório

22

aberto.

As variáveis a e b tomarão os valores das

coordenadas dos pontos selecionados. Na figura 17 é ilustrada a

forma como a figura do gráfico 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 número de vezes que for

inserido no comando ginput.

Matlab: Um curso introdutório

23

Figura 18. Dois pontos selecionados para construção da reta.

A figura mostra os dois pontos, a partir destes será

desenhada uma reta interligando os mesmos. Na figura 19, também

mais uma função é introduzida, a text(a(1),b(1),’Ponto 1’), onde a e

b são tem os valores das coordenadas tomadas pela função ginput

e é colocado o texto Ponto 1 e Ponto 2 na extremidade da reta,

conforme a figura 19.

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

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Nome do título do gráfico

Nome do eixo X

Nom

e do

eix

o Y

Ponto 1

Ponto 2

Figura 19. Funções line e text.

Os argumentos da função line são as coordenadas

dos extremos da linha. Da função text é as coordenadas mais uma

string, no caso Ponto 1 e depois o Ponto 2.

Exemplo:

[a b]=ginput(2) %a função que toma 2 pontos do gráfico

line(a,b) %desenha uma linha com as coordenadas

armazenadas em a e b.

text(a(1),b(1),’Ponto 1) %Coloca uma string na área do gráfico no

ponto 1.

text(a(2),b(2),’Ponto 2) %Coloca uma string na área do gráfico no

ponto 2.

Matlab: Um curso introdutório

24

A figura 18 possui o resultado desse exemplo. Com

esses novos comandos já se pode operar os gráficos e manipula-

los com bastante eficiência. Para utilizá-los em um documento

word, basta entrar no menu edit e copiar a figura. O gráfico será

enviado para área de transferência do windows e depois poderá ser

colado. Esse artifício foi largamente utilizado para produzir esse

texto.

6.2. Subplot

Muitas vezes é necessário colocar as funções, devido

a sua natureza, em gráficos distintos. Isso é possível no Matlab

utilizando a função subplot. As funções utilizadas no exemplo

anterior serão aqui novamente reutilizadas para exemplificar esse

comando.

A seguir a figura 20 exibe a função subplot com 4

gráficos na mesma figura. É possível colocar mais, porém, por

motivos de poluição visual e para que os resultados dos gráficos

fiquem legíveis, é importante manter esse número em torno de 6×6

ou no máximo 8×8.

Esse comando tem como argumentos o tamanho da

matriz aonde se distribuirão os gráficos na figura e as suas

respectivas posições.

Matlab: Um curso introdutório

25

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

-0.5

0

0.5

1

Figura 20. Função subplo 2×2.

Exemplo:

Subplot(2,2,1),plot(x,-,’r—‘) %posição 1, linha tracejada

vermelha.

Subplot(2,2,2),plot(x,y,’gd’) %posição 2, linhadiamante,

verde.

Subplot(2,2,3),plot(x,y,’yp’) %posição 3, linha pentagrama

amarela

Subplot(2,2,4),plot(x,-y,’g-.’) %posição 4, linha traço ponto,

azul.

Uma tabela 4 foi construída para ilustrar a questão das

posições. Perceba que não importa o tamanho da matriz, a

numeração segue conforme a linha vermelha da tabela indica.

Tabela 4. Ilustração do posicionamento dos gráficos pelo comando

subplo.

1 2 3 4 5 6

Matlab: Um curso introdutório

26

7 8 9 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 Exercício

Neste tópico será acompanharemos um programa que

utilizar vários dos comandos vistos até o momento. O projeto consta

de trabalhar com uma equação de 2º.grau, mas que muito bem

poderia ser qualquer outro tipo de modelo matemático, mostrar os

resultados em um gráfico. Neste, pode-se renomear os eixos e o

título, 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 exteção

txt, doc, m ou qualquer outra desse gênero.

Além dos recursos gráficos, utilizou-se uma estratégia

de programação bastante interessante, na qual foi o script da

codificação foi construida ao redor de um programa principal

Matlab: Um curso introdutório

27

chamado main.m. Outros arquivos então 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 deverão

estar no mesmo diretório ou pasta do caminho corrente do Matlab.

Pois, se isso não acontecer, o Matlab não reconecerá e enviará

uma mensagem como mostrada na figura 21.

Fiura 21. Mensagem de erro, diretório diferente do atual.

Portanto é necessário direcionar o diretório aonde

ficarão 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

através do comando Teclado, apertando esse botão pode-se entrar

digitando-se os valores.

Figura 22. Menu principal do main.

Matlab: Um curso introdutório

28

Para o exemplo em desenvolvimento, os dados são os

coeficientes da equação, a figura 23 mostra a janela aberta para

introdução 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 poderão ser aceitos

ou pode-se digitar novos. Em seguida, pressionar a tecla OK.

Quando o botão Banco, do menu principal é apertado,

dados de um arquivo chamado dadosinf.m são atribuídos aos

coeficientes. Mais uma vez, deve-se entender aqui que estes dados

poderiam ser de qualquer outra variável, constantes ou qualquer

outra coisa que se desejasse.

O botão Plotar apresenta outro menu (figura 24) onde

se pede que o usuário aceite os nomes já definidos para os eixos e

o próprio gráfico ou os renomeie.

Fiura 24. Opção de renomear o nome dos eixos e do gráfico.

Ao pressionarmos o botão Editar nome, o respectivo

menu se abre, conforme fiura 25.

Matlab: Um curso introdutório

29

Figura 25. Janela para entrada de nomes do gráfico.

Caso não haja interesse em renomear essas

informações, então pode-se pressionar o botão Não editar, então

os nomes predefinidos serão usados. No exemplo dados de -5 até 5

foram usados para criar os dados, o passo foi de 0,001. O gráfico é

mostrado na figura 27, os respectivos dados criados estão na figura

26.

Figura 26. Dados gerados para a equação.

Como os coeficientes default foram aceitos os dados

gerados estão representados no gráfico na figura 27.

Matlab: Um curso introdutório

30

Figura 27. Gráfico da equação de 2º.grau.

Pode-se salvar os dados gerado em um arquivo,

pressionando-se o botão Salvar. Em seguida o prompt pede para

que o usuário insira o nome do arquivo, conforme a figura 28. O tipo

de arquivos são do formato texto. Por isso, pode-se introduzir no

nome as extensões txt, m, doc e outra qualquer tipo texto.

Figura 28. Prompt solicitando o nome para o arquivo.

Também é possível abrir um arquivo de dados,

pressionando o botão Abrir. Aqui é faz-se necessário tecer alguns

comentários.

O leitor poderá automatizar as operações de

salvamento e criação de nomes elaborando uma rotina para isso.

Isso facilitará muito na criação e codificação desses arquivos para

um acompanhamento e controle. Por exemplo, numa situação onde

criou-se um modelo matemático que está trabalhando com dados

experimentais, é possível relacionar a codificação criada para cada

Matlab: Um curso introdutório

31

experimento com o arquivo criado. Facilitando sua identificação e

mais adiante criar uma rotina de codificação de programação que

faça a comparação entre os resultados possibilitando uma

comparação da evolução dos mesmos. Uma codificação de

arquivos possível de ser implementada automatizada seria: exp_1-

05202010.txt, ou exp_A-05202010.001 que significariam

experiência 1 do dia 20/05/2010, no segundo experiência A do dia

20/05/2010 número 001 e assim por diante. Fica a critério da

liberdade e criatividade do leitor criar essa codificação.

Figura 29. Prompt para abertura do arquivo.

8. Código fonte:

Neste tópico é apresentado o código de programação

propriamente dito. Nele estão os comentário em cada linha. Mais

comentário que se fizerem necessário estarão entre linhas.

7.1. Arquivo main.m:

1. %Arquivo principal do meu programa

2. %-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

3.

4. clc %comando limpa a tela

5. clear all %comando limpa a memória

6.

7. aux1='s'; %cria a variável aux1 e já atribui um caracter ‘s’

Matlab: Um curso introdutório

32

8.

9. while aux1=='s' %faz a verificação para entrar no laço while que será

executado enquanto essa variável não for alterada.

10. clc

11. aux=menu('Escolha sua opçao',...

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 usuário para tomar a sua

decisão, em seguida o nome dos botões: Teclado, Banco Dados, Plotar,

Visualizar, Salvar, Sair e Abrir. Cada botão está numa posição, isto é 1, 2, 3, 4,

5, 6 e 7 respectivamente.

14. 15. switch aux %iniciar o laço switch que entra com a opção feita no menu. O

valor de retorno é um número, portanto a variável 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 usuário entrar com dados na janela, figura 16. Para compor essa

função inputdl é necessário o título de cada campo de entrada, especificar qual

será o valor default, no caso foram os número 1, 4 e 20, mas poderia ser vazio e

assim ‘’, ‘’ e ‘’. Em seguida declara a string para o título, o número de linhas,

normalmente 1. Esse comando retorna conteúdos de células, que são strings.

Por isso devem ser convertidos para números, se esse for o caso.

23. a=str2num(cell2mat(resp(1))); % o comando cell2mat, converte a célula

para string, em seguida usa-se outro comando para converter string em número,

é o str2num. Finalmente tem-se número nas variáveis ‘a’. Repete-se este

comando para as outras variáveis 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

Matlab: Um curso introdutório

33

40. solução %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 usuário,

e o tipo do ícone que irá aparecer. Botões ok são exibidos para o usuário

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 criação de arquivo, aqui inclusive é colocado o caminho aonde este

arquivo, no caso dadostxt.txt, está. O parâmetro ‘r’, significa que será feita a

verificação somente de leitura.

51. if fid<0

52. disp('Nao ha dados no arquivo') %Se não existir o arquivo a função

fopen retorna um número negativo, então é enviada uma mensagem que o

arquivo não existe e não pode ser aberto por isso.

53. else

54. dadosinf %Caso ele exista então o arquivo dadosinf.m é executado.

55. solucao %O arquivo solução é executado

56. clc

57. type dadostxt.txt%O conteúdo 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)

Matlab: Um curso introdutório

34

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 informaçoes

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

Matlab: Um curso introdutório

35

3. %de informacoes permanentes

4. a=1;

5. b=2;

6. c=8;

7. clc

8. fprintf('Os coeficientes a=%d b=%d e c=%d',a,b,c)

9. pause

7.4. Aquivo grafi.m

1. %Arquivo para impressao de graficos

2. %configuracoes de graficos

3.

4. clc

5. aux3=menu('Escolha sua opçao',...

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;

Matlab: Um curso introdutório

36

3. y=a*t.^2-b*t+c

Matlab: Um curso introdutório

37

9. 8. Conclusão

Finalizamos esta apostila com o sentimento de ter

colocado o conteúdo que achamos ser essencial para um curso

introdutório. Como as turmas são sempre muito heterogêneas é

bastante complicado atender nas especificidades. É notória a

necessidade de um curso avançado para este fim. Se o conteúdo

aqui apresentado tiver sido assimilado pelo leitor, e ele não 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

funções aplicadas na sua área de especialização. Por isso aproveito

essa oportunidade de colocar a disposição as formas de contado

para que possa enviar dúvidas, críticas e sugestões, todas serão

muito bem vindas e reconhecidas(email:[email protected]).

É evidente a necessidade do conhecimento da língua

inglesa, pelo menos para leitura, pois as ajudas são 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 próximo

curso a ser lançado e divulgado que envolve um pacote do Matlab,

denominado Simulink.

Com certeza, nas próximas versões desta apostilas

eventuais erros e melhores deverão estar presentes, as quais só

serão possíveis pelo aprendizado que fazemos a cada vez que

Matlab: Um curso introdutório

38

lecionamos esse curso introdutório. Aproveito para agradecer a

participação, a paciência e, sem dúvida nenhuma, a colaboração de

todos, participantes e organizadores.

9. Referências bibliográficas

COCIAN, Luis Fernando Espinosa. Manual da linguagem C.1ª.

Edição : Editora da Ulbra, 2004.

HELSELMAN, D; LITTLEFILD, B. MATLAB – Versão do estudante

– guia do usuário. São Paulo: Makron Books, 1997. 308p.