Vous êtes sur la page 1sur 32

UNIVERSIDADE FEDERAL DE VIÇOSA

DEP – DEPARTAMENTO DE ENGENHARIA DE PRODUÇÃO E


MECÂNICA
CURSO DE ENGENHARIA MECÂNICA

Matlab: um curso introdutório

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.

Prof. Paulo Cezar Büchner


2
Matlab: Um curso introdutório

Á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;

Prof. Paulo Cezar Büchner


3
Matlab: Um curso introdutório

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

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 Matlab. Vários deles estão listados abaixo e
devem ser utilizado, pois são muito úteis durante a programação no Matlab.

Prof. Paulo Cezar Büchner


4
Matlab: Um curso introdutório

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

Prof. Paulo Cezar Büchner


5
Matlab: Um curso introdutório

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 4 abaixo resume esses operadores, em seguida
alguns exemplos para extinguir qualquer dúvida ainda remanescente.

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

Prof. Paulo Cezar Büchner


6
Matlab: Um curso introdutório

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

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.

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

Prof. Paulo Cezar Büchner


7
Matlab: Um curso introdutório

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
579 -3 -3 -3
Multiplicação Divisão

>>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
149 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‘) >>input(‗Entre com o dado:‘)


Mensagem Entre com o dado:

sprintf sscanf

Prof. Paulo Cezar Büchner


8
Matlab: Um curso introdutório

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

Prof. Paulo Cezar Büchner


9
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 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 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 6. 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 7. Estrutura lógica IF-elseif-else.

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.

Prof. Paulo Cezar Büchner


10
Matlab: Um curso introdutório

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 8. Estrutura switch.

Na próxima figura 9 é 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.

Figura 9. Estrutura for.

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

Prof. Paulo Cezar Büchner


11
Matlab: Um curso introdutório

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.

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

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

Prof. Paulo Cezar Büchner


12
Matlab: Um curso introdutório

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

Figura 12. Função msgbox.

Um exemplo desta função segue:

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

Prof. Paulo Cezar Büchner


13
Matlab: Um curso introdutório

Figura 13. 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 14 mostra
a sintaxe da estrutura desta função.

Figura 14. Estrutura da função questdlg.

A figura 15 mostra um exemplo dessa estrutura.

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

Prof. Paulo Cezar Büchner


14
Matlab: Um curso introdutório

O resultado da estrutura da figura 15 é apresentado na figura 16 a seguir.

Figura 16. Resultado da função questdlg.

Na próxima figura (figura 17) é apresentado outro exemplo de aplicação deste


comando.

Figura 17. Outro exemplo do comando questdlg.

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

Prof. Paulo Cezar Büchner


15
Matlab: Um curso introdutório

0.8

0.6

0.4

0.2

-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 18. 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
19, é mostrado as variações para função plot.

0.8

0.6

0.4

0.2

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

Prof. Paulo Cezar Büchner


16
Matlab: Um curso introdutório

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

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

Nome do título do gráfico


1

0.8

0.6

0.4
Nome do eixo Y

0.2

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

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

As variáveis a e b tomarão os valores das coordenadas dos pontos selecionados. Na figura


21 é ilustrada a forma como a figura do gráfico ficar, mostrando o cursor que aguara as
entradas com o mouse.

Prof. Paulo Cezar Büchner


17
Matlab: Um curso introdutório

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

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

Prof. Paulo Cezar Büchner


18
Matlab: Um curso introdutório

Nome do título do gráfico


1

0.8

0.6
Ponto 1
0.4

Nome do eixo Y
0.2

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

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

Prof. Paulo Cezar Büchner


19
Matlab: Um curso introdutório

Esse comando tem como argumentos o tamanho da matriz aonde se distribuirão os


gráficos na figura e as suas respectivas posições.

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 24. Função subplot 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, linha diamante 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 subplot.

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16 17 18

Prof. Paulo Cezar Büchner


20
Matlab: Um curso introdutório

19 20 21 22 23 24

25 26 27 28 29 30

31 32 33 34 35 36

6.3 Compass
Outra função que deverá dispertar interesse no leito é a compass. Com ela
poderemos colocar em um sistema semelhante a uma bússula, vetores. Todos os vetores
criados parte do centro com a extremidade definida. São setas que apontam para direções
determinadas. A figura 25 ilustra esse comando.

90 1.5
120 60

150 30
0.5

180 0

210 330

240 300
270

Figura 25. Função compass.


O leitor deve ficar atendo a informação de que poderá sempre colocar nome nos
eixos e títulos dos gráficos, inclusive textos, conforme exemplificados em outros gráficos já
apresentados.

Prof. Paulo Cezar Büchner


21
Matlab: Um curso introdutório

Título
90 1.5
120 60

150 30
0.5

Imaginário
180 0

210 330

240 300
270

Real

Figura 26. Função compass com nome nos eixos e título.

A figura 27 mostra essas opções. Há, com certeza, outras que poderão ser.
Título
90 1.5
120 60

150 30
0.5
Imaginário

180 Linha 0

210 330

240 300
270

Real

Figura 27. Função compass com linha e texto.


300

250

200

150

100

50

0
-4 -3 -2 -1 0 1 2 3 4

Figura 28. Função hist.

Na figura 28 é apresentada a função hist, neste exemplo foi utilizado uma


distribuição normal.

Prof. Paulo Cezar Büchner


22
Matlab: Um curso introdutório

0
1 2 3 4 5 6 7 8 9

Figura 29. O comando bar.

Nesse comando os argumento são 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 freqüência. Novamente, pode-se colocar nomes
nos eixos e títulos, além de colocar linhas.
7

1
1 2 3 4 5 6 7 8 9

Figura 30. Função 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 2 3 4 5 6 7 8 9

Figura 31. Comando stem.

Prof. Paulo Cezar Büchner


23
Matlab: Um curso introdutório

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 construída ao redor de um programa
principal chamado main.m. Outros arquivos então foram criados para quebrado, ou melhor,
distribuído 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
reconhecerá e enviará uma mensagem como mostrada na figura 32.

Figura 32. Mensagem de erro, diretório diferente do atual.

Portanto é necessário direcionar o diretório onde ficarão 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 através do comando Teclado, apertando esse botão
pode-se entrar digitando-se os valores.

Figura 33. Menu principal do main.

Prof. Paulo Cezar Büchner


24
Matlab: Um curso introdutório

Para o exemplo em desenvolvimento, os dados são os coeficientes da equação, a


figura 34 mostra a janela aberta para introdução 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 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 35) onde se pede que o usuário aceite
os nomes já definidos para os eixos e o próprio gráfico ou os renomeie.

Figura 35. 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 figura
36.

Figura 36. 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 38,
os respectivos dados criados estão na figura 37.
Prof. Paulo Cezar Büchner
25
Matlab: Um curso introdutório

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


Como os coeficientes default foram aceitos os dados gerados estão representados no
gráfico na figura 38.

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

Prof. Paulo Cezar Büchner


26
Matlab: Um curso introdutório

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

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

Prof. Paulo Cezar Büchner


27
Matlab: Um curso introdutório

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

Prof. Paulo Cezar Büchner


28
Matlab: Um curso introdutório

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)
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 Büchner
29
Matlab: Um curso introdutório

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

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

8.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.
Prof. Paulo Cezar Büchner
30
Matlab: Um curso introdutório

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. else
22. X='Temp';
23. Y='Amplitude';
24. T='Equacao';
25. end
26.
27. plot(t,y)
28. title(T)
29. xlabel(X)
30. ylabel(Y)
31. grid
32. 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.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 as 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, 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 para colocar a disposição as formas de contado, pelas
quais podem ser enviar dúvidas, críticas e sugestões. Todas serão muito bem vindas e
reconhecidas.
As formas mais eficientes são através do endereço eletrônico: paulo.buchner@ufv.br
ou pelo telefone +55(31) 3899 4097.

Prof. Paulo Cezar Büchner


31
Matlab: Um curso introdutório

É evidente a necessidade do conhecimento da língua inglesa, pelo menos para leitura,


pois as ajudas do Matlab são 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 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 cometidos serão
corrigidos e melhorias deverão estar presentes, as quais, só serão possíveis pelo
aprendizado que obtemos a cada vez que lecionamos esse curso. Aproveito para agradecer
a participação, a paciência e, sem dúvida nenhuma, a colaboração de todos, participantes e
organizadores.

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

Prof. Paulo Cezar Büchner

Vous aimerez peut-être aussi