Você está na página 1de 39

0

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

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

CURSO DE ENENHARIA MECÂNICA Matlab: um curso introdutório Organização: Prof. Paulo Cezar Büchner VIÇOSA/MG 2010
Organização:
Organização:

Prof. Paulo Cezar Büchner

VIÇOSA/MG

2010

1

Matlab: Um curso introdutório

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.

autodesenvolver e aprofunda na sua área específica, explorando cada vez mais este software e obtendo resultados

2

Matlab: Um curso introdutório

Área do arquivo.m Área de Trabalho
Á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 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;

3

Matlab: Um curso introdutório

Buffer Pasta atual Histórico de comandos
Buffer
Pasta atual
Histórico
de
comandos

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

comando do Matlab pode ser inserido neste lugar (Figura 3). Figura 3. Workspace e prompt de

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

é semelhante ao do promtp de comando do sistema . Inclusive vários comandos que lá se

4

Matlab: Um curso introdutório

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

5

Matlab: Um curso introdutório

“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 da pasta work.

, sai

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.

6

Matlab: Um curso introdutório

6 Matlab: Um curso introdutório Figura 1 . Operadores aritméticos. Quando os operadores são acrescidos de

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’) mensagem a enviar para tela

a resposta será:

7

Matlab: Um curso introdutório

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:

sprintf(‘ mensagema enviar par tela’)

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.

Mensagem enviada Mensagem exibida e que está no conteúdo da variável ans Mensagem exibida e
Mensagem enviada
Mensagem exibida
e
que
está
no
conteúdo
da
variável ans
Mensagem exibida
e
que
no
variável mensagem
Mensagem exibida usando o
comando disp e a variável
mensagem.
está
conteúdo
da

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

8

Matlab: Um curso introdutório

Tabela 2: Exemplos com os operadores aritméticos.

Soma

Subtração

>>1+2

>>3-2

Ans =

Ans=

 

3

 

1

Multiplicação

Divisão

>>2*3

>>3/2

Ans=

Ans

 

6

 

1.5

 

>>2\3

Ans

 

1.5

Potência

Expoente

>>2^3

>>exp(1)

Ans

Ans

 

8

 

2.7183

 

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

Soma

Subtração

>>a+b

>>a-b

Ans

Ans

 

5 7 9

 

-3 -3 -3

Multiplicação

Divisão

9

Matlab: Um curso introdutório

>>a.*b

>>a./b ou b.\a Ans

Ans

4 10 18

0.2500

0.4000 0.5000

Potência

Expoente

>>a.^2

>>exp(a)

Ans

Ans

1 4 9

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=

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

2.7100

Essa é a mensagem:

3.1400

fprintf

fscanf

10

Matlab: Um curso introdutório

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

11

Matlab: Um curso introdutório

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.

o primeiro serve para comparar e o segundo para atribuir. Figura 4 . Operadores relacionais. Em

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

A primeira dessas estruturas é a IF-elseif-else como mostrado na figura Figura 4. Estrutura lógica IF-elseif-els.

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

12

Matlab: Um curso introdutório

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.

Novamente, a estrutura é finalizada com a palavra end. Figura 5. Estrutura switch . Na próxima

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.

13

Matlab: Um curso introdutório

13 Matlab: Um curso introdutório Figura 6 . Estrutura for . Outra estrutura muito comum e

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.

até que o estado dela seja alterado para sair do laço. Figura 7. Estrutura while .

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.

14

Matlab: Um curso introdutório

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.

“ default ”. A sua estrutura segue conforme a figura 7. Figura 7 . Comando inputdlg
“ default ”. A sua estrutura segue conforme a figura 7. Figura 7 . Comando inputdlg

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

15

Matlab: Um curso introdutório

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

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

16

Matlab: Um curso introdutório

Figura 8. Função msgbox.

Um exemplo desta função segue:

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

continuar?’,’Rotina de entrada de dados’,’warn’) Figura 9 .Exemplo do comando msgbox . Para outros tipos de

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.

17

Matlab: Um curso introdutório

17 Matlab: Um curso introdutório Figura 10. Estrutura da função questdlg . A figura 11 mostra

Figura 10. Estrutura da função questdlg.

A figura 11 mostra um exemplo dessa estrutura.

questdlg . A figura 11 mostra um exemplo dessa estrutura. Figura 11 . Exemplo da estrutura

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

O resultado da estrurua da figura 11 é apresentado na figura 12 a seguir.

18

Matlab: Um curso introdutório

18 Matlab: Um curso introdutório Figura 12 . Resultado da função questdlg . Na próxima figura

Figura 12. Resultado da função questdlg. Na próxima figura (figura 13) é apresentado outro exemplo de aplicação deste comando.

(figura 13) é apresentado outro exemplo de aplicação deste comando. Figura 13. Outro exemplo do comando

Figura 13. Outro exemplo do comando questdlg.

19

Matlab: Um curso introdutório

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

simples e sua

implementação segue o mesmo grau de dificuldade. O comando plot é então ilustrado abaixo na figura 14.

É

sem

dúvida

a

função

mais

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

20

Matlab: Um curso introdutório

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

novamente os caracteres entre os sinais de apóstrofos formam uma string e por isso vale qualquer tipo de caracter.

coloca o

nome do eixo

X,

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.

21

Matlab: Um curso introdutório

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.

Nome do título do gráfico

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
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
Nome do eixo Y

Nome do eixo X

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

22

Matlab: Um curso introdutório

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.

mostrando o cursor que aguara as entradas com o mouse . Figura 17. Cursos do comando

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.

a entrada feita com o mouse seja realizada, isso acontecerá o número de vezes que for

23

Matlab: Um curso introdutório

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.

Nome do título do gráfico

1 0.8 0.6 Ponto 1 0.4 0.2 0 -0.2 -0.4 -0.6 Ponto 2 -0.8 -1
1
0.8
0.6
Ponto 1
0.4
0.2
0
-0.2
-0.4
-0.6
Ponto 2
-0.8
-1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Nome do eixo Y

Nome do eixo X

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)

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.

%a função que toma 2 pontos do gráfico

24

Matlab: Um curso introdutório

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.

25

Matlab: Um curso introdutório

1 1 0.5 0.5 0 0 -0.5 -0.5 -1 -1 0 0.5 1 0 0.5
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1
0 0.5
1
0 0.5
1
1
1
0.5
0.5
0
0
-0.5
-0.5
-1
-1
0 0.5
1
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’)

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.

%posição 2, linhadiamante,

Tabela 4. Ilustração do posicionamento dos gráficos pelo comando subplo. 1 2 3 4 5
Tabela 4. Ilustração do posicionamento dos gráficos pelo comando
subplo.
1
2 3
4 5
6

26

Matlab: Um curso introdutório

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

27

Matlab: Um curso introdutório

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.

e enviará uma mensagem como mostrada na figura 21. Fiura 21. Mensagem de erro, diretório diferente

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.

do comando Teclado , apertando esse botão pode-se entrar digitando-se os valores. Figura 22 . Menu

Figura 22. Menu principal do main.

28

Matlab: Um curso introdutório

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.

a janela aberta para introdução dos dados via teclado. Figura 23 . Janela de entrada de

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.

para os eixos e o próprio gráfico ou os renomeie. Fiura 24. Opção de renomear o

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.

29

Matlab: Um curso introdutório

29 Matlab: Um curso introdutório Figura 25. Janela para entrada de nomes do gráfico. Caso não

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 27, os respectivos dados criados estão na figura 26. Figura 26. Dados gerados para a

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.

30

Matlab: Um curso introdutório

30 Matlab: Um curso introdutório Figura 27. Gráfico da equação de 2º.grau. Pode-se salvar os dados

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.

nome as extensões txt, m, doc e outra qualquer tipo texto. Figura 28 . Prompt solicitando

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

31

Matlab: Um curso introdutório

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.

liberdade e criatividade do leitor criar essa codificação. Figura 29. Prompt para abertura do arquivo. 8.

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.

32

Matlab: Um curso introdutório

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.

33

Matlab: Um curso introdutório

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)

34

Matlab: Um curso introdutório

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

35

Matlab: Um curso introdutório

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

36

Matlab: Um curso introdutório

3.

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

37

Matlab: Um curso introdutório

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:paulo.buchner@ufv.br).

É 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

38

Matlab: Um curso introdutório

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.