Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Matlab PDF
Apostila de Matlab PDF
Organizao:
VIOSA/MG
2010
1
Matlab: Um curso introdutrio
1. Introduo
Matlab um software para modelagem matemtica de sistemas, ao contrrio
de muitos outros pacotes vendidos, ele no gera arquivos executveis, assim necessita
que ele esteja instalado no computador para que se possa rodar o arquivo de cdigo.
H dois ambientes bsicos o Work Space (rea de trabalho) e o arquivo .m. No
primeiro
seu
funcionamento
comando
semelhante
ao
prompt
ou
linha
de
a verso 95. A seguir temos uma viso geral dos ambientes de programao do
Matlab(Figura 1).
Primeiramente a verso que se est utilizando nesta apostila a 7.8.0.347
R2009a, cujas licenas foram adquiridas pela UFV (Universidade Federal de Viosa) em
novembro de 2009. H duas trs verses: uma estudantil que caracterizada pelo
prompt de comando edu>, a verso profissional >> e a educacional, esta ltima para
instituies de ensino. Na figura 1 pode-se ver vrias janelas, cada qual com sua funo,
mas h 2 delas que pode-se classificar como sendo as principais. Ou seja, as que
apresentam o espao de trabalho e o arquivo.m.
O objetivo da produo deste material servir como apoio a um curso de
introdutrio de Matlab. Com este o participante poder rever alguns comandos iniciais e
essncias de pacote de programao que tem sido escolhido por vrias instituies de
ensino superior do Brasil e do exterior, alm de muitas empresas o terem adotado como
software de projetos.
Um dos motivos dessa escolha sem dvida a facilidade e simplicidade de
programao, alm do leque de funes inclusas e validadas que ele possui. Tudo isso
torna o Matlab uma poderosa ferramenta de trabalho, porque poupa tempo de
programao.
Espera-se que com esse texto e mais o curso, o participante ganhe know-how
para se autodesenvolver e aprofunda na sua rea especfica, explorando cada vez mais
este software e obtendo resultados com ele.
2
Matlab: Um curso introdutrio
rea
do
arquivo.m
rea
de
Trabalho
As outras reas podem ser suprimidas, mas interessante deixa-las a mostra para
um maior controle das informaes geradas pelo sistema. Na figura 2 possvel observar
mais 3 reas:
3
Matlab: Um curso introdutrio
Buffer
Pasta atual
Histrico
de
comandos
Pode ser observado tambm, que na parte superior da janela do Matlab j aparece o
Current Directory. Assim, talvez seja dispensvel mais uma janela para esse propsito.
No Workspace pode-se entrar com os comandos diretamente. Qualquer comando do
Matlab pode ser inserido neste lugar (Figura 3).
. Inclusive vrios
comandos que l se utilizava permanecem no Matlab. Vrios deles esto listados abaixo e
devem ser utilizado, pois so muito teis durante a programao no Matlab.
4
Matlab: Um curso introdutrio
Tabela 1: Comandos essenciais via prompt.
Comando
clc
Exemplo de aplicao
- semelhante ao cls, este comando limpa a tela
do workspace.
Clear
clear all
Dir
What
Who
Whos
Clear vars
Rmdir
Mkdir
Cd
Type
Which
5
Matlab: Um curso introdutrio
built-in
(C:\MATLAB\R2009a\toolbox\matlab\general\type)
a resposta ser:
6
Matlab: Um curso introdutrio
sprintf( mensagema enviar par tela) essa porm alm de exibir mensagem na tela atribui a
string a varivel ans. Caso deseje, poder executar esse comando da seguinte forma:
mensagem= sprintf( mensagema enviar par tela) mostrar na tela e atribuir a string para
varivel mensagem.
Que poder se usada dentro de qualquer outra funo que demande de uma string, por
exemplo o prprio comando disp. disp(mensagem), figura 5.
Mensagem enviada
Subtrao
>>1+2
>>3-2
Ans =
Ans=
3
Multiplicao
Diviso
>>2*3
>>3/2
7
Matlab: Um curso introdutrio
Ans=
Ans
6
1.5
>>2\3
Ans
1.5
Potncia
Expoente
>>2^3
>>exp(1)
Ans
Ans
8
2.7183
Subtrao
>>a+b
>>a-b
Ans
Ans
579
-3 -3 -3
Multiplicao
Diviso
>>a.*b
>>a./b ou b.\a
Ans
Ans
4 10 18
Potncia
Expoente
>>a.^2
>>exp(a)
Ans
Ans
149
Input
>>disp (Mensagem)
Mensagem
sprintf
sscanf
8
Matlab: Um curso introdutrio
>>sprintf(Essa a mensagem:)
>>A=2.71 3.14
Ans=
A=
Essa a mensagem:
2.71 3.14
>>sscanf(A,%f)
Ans=
2.7100
3.1400
fprintf
fscanf
>>fprintf(Essa a mensagem:\n)
>>fscanf(fid,%f)
Essa a mensagem:
>>
Sprintf
>>b=[2.7100 3.1415]
B=
2.7100 3.1415
>>sprintf(Os
valores
so:
%3.2f
%3.2f\n,B(1),B(2))
ans=
Os valores so: 2.71 e 3.14
9
Matlab: Um curso introdutrio
4. Operadores relacionais
Assim como outras linguagens de programao, h uma srie de codificaes para
elaborar o funcionamento lgico do programa em desenvolvimento. A figura 6 mostra alguns
operadores relacionais que pode ser usados. O primeiro deles o < menor que, <=menor
que ou igual, >maio que, maior ou igual, == igual e no igual ou diferente ~=. Deve-se ter
cuidado para no confundir == com =, pois so bem distintos um do outro, o primeiro serve
para comparar e o segundo para atribuir.
Essa estrutura poder se usada na sua forma mais simples que o usando o
comando if + a expresso condicionante e o comando, assim como todos em bloco como
esse, devem terminar com a palavra end. A forma completa desta estrutura apresenta uma
primeira verificao, a qual se no for satisfeita passa par a segunda verificao elseif, caso
no seja satisfeita segue para a ltima que ser executada no caso de nenhuma das
anteriores forem satisfeitas.
10
Matlab: Um curso introdutrio
Outra estrutura o case, nesta necessrio a entrada verdadeira para que ela seja
executada. Nesta vrias condies podem ser relacionadas e executadas conforme a
entrada. So, neste caso, os cases. A estrutura executa um determinado expresso casa
nenhuma das condies, ou seja dos cases, no seja satisfeita. Muito utilizada para enviar
uma mensagem de erro para o usurio. Novamente, a estrutura finalizada com a palavra
end.
Outra estrutura muito comum e a while (figura 10), nela enquanto a expresso lgica
satisfeita o lao continua executando as operaes dentro dela at que o estado dela seja
alterado para sair do lao.
11
Matlab: Um curso introdutrio
O lao while se repete enquanto o valor da varivel eps+1 for menor que 1. H a
expresso que faz com que o valor da eps v diminuindo at que a condio no seja mais
satisfeita.
5. Interface grfica
Embora haja uma linguagem mais apropriada para fazer a interface grfica com o
usurio chamada de GUI, o Matlab disponibiliza algumas funes muito interessantes que
permite uma aplicao direta e muito prtica de algumas dessas interfaces. Com elas,
certamente o leitor se sentir muito melhor, pois poder proporcionar programas com uma
interface muito prxima ao que o sistema Windows executa. Assim seguem algumas dessas
funes e a explanao de como elas funcionam.
5.1. Inpudlg
Essa funo abre uma caixa de mensagem onde o usurio poder atribuir valores a
suas variveis. Ela possibilita que existam valores default. A sua estrutura segue conforme
a figura 11.
A funo inputdlg funciona como a funo input, porm h apenas alguns parmetros
a mais que devem ser observados e preparados. Primeiramente haver necessidade de
mensagens dizendo em qual caixa colocar uma informao especfica, no exemplo as
mensagens esto armazenadas na varivel prompt. Nesta o texto de cada caixa foi inserido,
como: Entre com a dimenso da matriz(Entre matrix size) e entre com o nome do mapa de
cores (Enter colormap name). Tambm h a necessidade de dar um ttulo para essa caixa
12
Matlab: Um curso introdutrio
de comando, nocaso a varivel usada foi dlg_title, para qual foi atribudo nesse exemplo
Entrada para funes de picos (Input for peaks function). Outra varivel, a def, foram
atribudos os valores default. E finalmente a num_lines ou nmero de linhas,foi atribudo o
valor de 1 linha. Cada caixa pode possuir vrias linhas, normalmente uma s basta.
importante observar que os valores que retornam aps a entrada com esse
comando so strings e, portanto, devem ser convertido para outro formado, exemplo se for
nmeros de entrada.
Para fazer essa converso por exemplo de caracteres para nmero use o seguinte
comando:
str2num(varivel string)
5.2. msgbox
H a possibilidade de enviar uma mensagem para o usurio, Para isso pode-se
utilizar a funo msgbox. Cada caixa de mensagem ainda pode ter um cone que destaca
que tipo de mensagem o programa est enviando, por exemplo: erro, alerta e ajuda.
Observe a sintaxe dessa funo, primeiro vai a mensagem que se quer mandar para
o usurio, em seguida o ttulo da caixa de mensagem e depois o tipo de cone (figura 12).
13
Matlab: Um curso introdutrio
5.3. Questdlg
A prxima funo a caixa de pergunta, onde alguma situaes so questionadas e
o usurio dever clicar no boto para escolher entre elas. Ajusta-se uma destas escolhas
como a default.
Para configurar a funo necessrio definir a pergunta a ser mostrada para o usurio, o
ttulo da caixa de mensagem, as opes, no mximo 4 e a opo default. A figura 14 mostra
a sintaxe da estrutura desta funo.
14
Matlab: Um curso introdutrio
O resultado da estrutura da figura 15 apresentado na figura 16 a seguir.
6. Grficos
Nesse tpico so apresentados alguns tipos de grficos. Eles podero ser
implementados em qualquer aplicao, no entanto deve-se ter cuidado para no perder o
foco e principalmente a utilidade dos mesmos. Caindo assim, numa situao de poluio
visual e o propsito de se utilizar grficos seja perdido.
6.1.
Plot
sem dvida a funo mais simples e sua implementao segue o mesmo grau de
dificuldade. O comando plot ento ilustrado abaixo na figura 18.
15
Matlab: Um curso introdutrio
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
O comando plot(x,y), na sua mais simples usa os argumento x, para o eixo das
abscissas e o y para o eixo das ordenadas. Acrescentando-se outros parmetros podemos
incrementar e melhor representar dados atravs dos grficos criados. Em seguida, na figura
19, mostrado as variaes para funo plot.
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
16
Matlab: Um curso introdutrio
os sinais de apstrofos formam uma string e por isso vale qualquer tipo de caracter.
Exemplo:
xlabel(Nome do eixo X)
ylabel(Nome do eixo Y)
title(Nome do ttulo do grfico)
Resultado apresentado na figura 20.
Nome do ttulo do grfico
1
0.8
0.6
Nome do eixo Y
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0.1
0.2
0.3
0.4
0.5
0.6
Nome do eixo X
0.7
0.8
0.9
Uma funo interessante que podemos inserir agora a ginput, ela permite que o
usurio aponte um ou mais pontos no grfico aberto e retorna as coordenadas do ponto ou
pontos selecionados.
Exemplo:
N=1;
17
Matlab: Um curso introdutrio
Este cursor ficar aberto at que a entrada feita com o mouse seja realizada, isso
acontecer o nmero de vezes que for inserido no comando ginput.
A figura mostra os dois pontos, a partir destes ser desenhada uma reta interligando
os mesmos. Na figura 23, tambm mais uma funo introduzida, a text(a(1),b(1),Ponto 1),
onde a e b so tem os valores das coordenadas tomadas pela funo ginput e colocado o
texto Ponto 1 e Ponto 2 na extremidade da reta, conforme a figura 23.
18
Matlab: Um curso introdutrio
Nome do ttulo do grfico
1
0.8
0.6
Ponto 1
Nome do eixo Y
0.4
0.2
0
-0.2
-0.4
-0.6
Ponto 2
-0.8
-1
0.1
0.2
0.3
0.4
0.5
0.6
Nome do eixo X
0.7
0.8
0.9
6.2.
Subplot
19
Matlab: Um curso introdutrio
Esse comando tem como argumentos o tamanho da matriz aonde se distribuiro os
grficos na figura e as suas respectivas posies.
1
0.5
0.5
-0.5
-0.5
-1
0.5
-1
0.5
0.5
-0.5
-0.5
-1
0.5
-1
0.5
0.5
Exemplo:
Subplot(2,2,1),plot(x,-,r)
Subplot(2,2,2),plot(x,y,gd)
Subplot(2,2,3),plot(x,y,yp)
Subplot(2,2,4),plot(x,-y,g-.)
Uma tabela 4 foi construda para ilustrar a questo das posies. Perceba que no
importa o tamanho da matriz, a numerao segue conforme a linha vermelha da tabela
indica.
Tabela 4. Ilustrao do posicionamento dos grficos pelo comando subplot.
1
10
11
12
13
14
15
16
17
18
20
Matlab: Um curso introdutrio
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
6.3 Compass
Outra funo que dever dispertar interesse no leito a compass. Com ela
poderemos colocar em um sistema semelhante a uma bssula, vetores. Todos os vetores
criados parte do centro com a extremidade definida. So setas que apontam para direes
determinadas. A figura 25 ilustra esse comando.
90
1.5
120
60
1
150
30
0.5
180
210
330
240
300
270
O leitor deve ficar atendo a informao de que poder sempre colocar nome nos
eixos e ttulos dos grficos, inclusive textos, conforme exemplificados em outros grficos j
apresentados.
21
Matlab: Um curso introdutrio
Ttulo
90
1.5
120
60
1
150
30
Imaginrio
0.5
180
210
330
240
300
270
Real
A figura 27 mostra essas opes. H, com certeza, outras que podero ser.
Ttulo
90
1.5
120
60
1
150
30
Imaginrio
0.5
180
Linha
210
330
240
300
270
Real
250
200
150
100
50
0
-4
-3
-2
-1
22
Matlab: Um curso introdutrio
0
1
23
Matlab: Um curso introdutrio
7. Programa Exerccio
Neste tpico ser acompanharemos um programa que utilizar vrios dos comandos
vistos at o momento. O projeto consta de trabalhar com uma equao de 2.grau, mas que
muito bem poderia ser qualquer outro tipo de modelo matemtico, mostrar os resultados em
um grfico. Neste, pode-se renomear os eixos e o ttulo, possibilita que salvemos os
resultados em um arquivo com um nome escolhido e depois o recuperamos. Note que o
arquivo aqui do tipo texto, ou seja, podemos salv-lo com ou sem exteo txt, doc, m ou
qualquer outra desse gnero.
Alm dos recursos grficos, utilizou-se uma estratgia de programao bastante
interessante, na qual foi o script da codificao foi construda ao redor de um programa
principal chamado main.m. Outros arquivos ento foram criados para quebrado, ou melhor,
distribudo nos arquivos: arquivo.m, abre.m, dadosinf.m, grafi.m e solucao.m.
preciso observar que os arquivos criados devero estar no mesmo diretrio ou
pasta do caminho corrente do Matlab. Pois, se isso no acontecer, o Matlab no
reconhecer e enviar uma mensagem como mostrada na figura 32.
24
Matlab: Um curso introdutrio
Para o exemplo em desenvolvimento, os dados so os coeficientes da equao, a
figura 34 mostra a janela aberta para introduo dos dados via teclado.
25
Matlab: Um curso introdutrio
26
Matlab: Um curso introdutrio
Figura 39. Prompt solicitando o nome para o arquivo.
8.
Cdigo fonte:
aux1='s';
27
Matlab: Um curso introdutrio
9. while aux1=='s' %faz a verificao para entrar no lao while que ser executado enquanto
essa varivel no for alterada.
10. clc
11. aux=menu('Escolha sua opao',...
12.
'Teclado','Banco Dados','Plotar','Visualizar',...
13.
'Salvar','Sair','Abrir');
%cria a janela contendo o menu principal, observe
que o primeiro strin a pergunta feia ao usurio para tomar a sua deciso, em seguida o
nome dos botes: Teclado, Banco Dados, Plotar, Visualizar, Salvar, Sair e Abrir. Cada boto
est numa posio, isto 1, 2, 3, 4, 5, 6 e 7 respectivamente.
14.
15. switch aux %iniciar o lao switch que entra com a opo feita no menu. O valor de retorno
um nmero, portanto a varivel aux tem um valor inteiro.
16. case 1 % Entrada pelo teclado
17.
18.
prompt={'a:','b:','c:'};
19.
def={'1','4','20'};
20.
dlgTitulo='Entre com os parametros:';
21.
numLine=1;
22.
resp=inputdlg(prompt,dlgTitulo,numLine,def);
%cria o menu que pede para o
usurio entrar com dados na janela, figura 16. Para compor essa funo inputdl necessrio
o ttulo de cada campo de entrada, especificar qual ser o valor default, no caso foram os
nmero 1, 4 e 20, mas poderia ser vazio e assim , e . Em seguida declara a string para o
ttulo, o nmero de linhas, normalmente 1. Esse comando retorna contedos de clulas, que
so strings. Por isso devem ser convertidos para nmeros, se esse for o caso.
23.
a=str2num(cell2mat(resp(1))); % o comando cell2mat, converte a clula para string, em
seguida usa-se outro comando para converter string em nmero, o str2num. Finalmente
tem-se nmero nas variveis a. Repete-se este comando para as outras variveis como
segue.
24.
b=str2num(cell2mat(resp(2)));
25.
c=str2num(cell2mat(resp(3)));
26.
27.
solucao
28.
29. case 2 % Abre os dados do arquivo
30.
disp('Entrou aqui de alegre!!!')
31.
if or(exist('a'),exist('b'))==0
32.
dadosinf
%chama o arquivo dadosinf.m
33.
else
34.
aux=1;
35.
end
36.
37. case 3 %Plota o grafico
38.
39.
if or(exist('a'),exist('b'))~=0
40.
soluo
%chama o arquivo solucao.m
41.
grafi
%chama o arquivo grafi.m
42.
else
43.
aux=1;
44.
msgbox('Declarar variavel','Aviso') %comando que coloca uma caixa de mensagem na
tela. Necessita de uma string que d a mensagem para o usurio, e o tipo do cone que ir
aparecer. Botes ok so exibidos para o usurio pressionar.
45.
end
28
Matlab: Um curso introdutrio
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
if or(exist('a'),exist('b'))==0
64.
msgbox('Declarar variavel','Aviso')
65.
aux=1;
66.
else
67.
Solucao %o arquivo solucao.m aberto
68.
Arquivo %o arquivo arquivo.m aberto
69.
end
70.
71. case 6
72.
aux1='sair';
73. case 7
74.
abre
75. otherwise
76.
77.
clc
78.
disp('Erro!!!!')
79.
pause
80.
for i=0:10
81.
fprintf('Vou desligar %d\n',10-i)
82.
end
83.
disp('Sair')
84.
85. end
86. clc
87. end
29
Matlab: Um curso introdutrio
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Arquivo dadosinf.m:
1.
2.
3.
4.
5.
6.
7.
8.
9.
if aux3==1
30
Matlab: Um curso introdutrio
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
else
X='Temp';
Y='Amplitude';
T='Equacao';
end
plot(t,y)
title(T)
xlabel(X)
ylabel(Y)
grid
pause
9.Concluso
Finalizamos esta apostila com o sentimento de ter colocado o contedo que achamos
ser essencial para um curso introdutrio. Como as turmas so sempre muito heterogneas
bastante complicado atender as especificidades. notria a necessidade de um curso
avanado para este fim. Se o contedo aqui apresentado tiver sido assimilado pelo leitor, e
ele no deix-lo cair no esquecimento, ter grandes chances de sucesso no uso deste
software maravilhoso.
O leitor facilmente poder se tornar uma autodidata e pode aprofundar-se cada vez
mais, explorando os comandos e as funes aplicadas na sua rea de especializao. Por
isso aproveito essa oportunidade para colocar a disposio as formas de contado, pelas
quais podem ser enviar dvidas, crticas e sugestes. Todas sero muito bem vindas e
reconhecidas.
As formas mais eficientes so atravs do endereo eletrnico: paulo.buchner@ufv.br
ou pelo telefone +55(31) 3899 4097.
31
Matlab: Um curso introdutrio
evidente a necessidade do conhecimento da lngua inglesa, pelo menos para leitura,
pois as ajudas do Matlab so todas dadas nesse idioma. Mas, acredito que nos tempos em
que vivemos isso se torne mais um incentivo para estud-la.
O comando help seu principal aliado, com ele voc conseguir explorar ainda mais o
Matlab.
Desde j o leitor convidado a participar do prximo curso a ser lanado e divulgado
que envolve um pacote do Matlab, denominado Simulink.
Com certeza, nas prximas verses desta apostilas eventuais erros cometidos sero
corrigidos e melhorias devero estar presentes, as quais, s sero possveis pelo
aprendizado que obtemos a cada vez que lecionamos esse curso. Aproveito para agradecer
a participao, a pacincia e, sem dvida nenhuma, a colaborao de todos, participantes e
organizadores.