Matlab-Um curso introdutório
-
Upload
felipe-galvao -
Category
Documents
-
view
35 -
download
1
Transcript of Matlab-Um curso introdutório
0
UNIVERSIDAD E FEDERAL DE VIÇOSA DEP – DEPARTAMENTO DE ENG DE PROD E MECÂNICA
CURSO DE ENENHARIA MECÂNICA
Matlab: um curso introdutório
Prof. Paulo Cezar Büchner
VIÇOSA/MG 2010
Organização:
Matlab: Um curso introdutório
1
1. Introdução
Matlab é um software para modelagem matemática de sistemas,
ao contrário de muitos outros pacotes vendidos, ele não gera arquivos
executáveis, assim necessita que ele esteja instalado no computador para
que se possa “rodar” o arquivo de código.
Há dois ambientes básicos o Work Space (Área de trabalho) e o
arquivo .m. No primeiro seu funcionamento é semelhante ao prompt ou
linha de comando . O Windows passou a ser o sistema
operacional somente com a versão 95. A seguir temos uma visão geral dos
ambientes de programação do Matlab(Figura 1).
Primeiramente a versão que se está utilizando nesta apostila é a
7.8.0.347 R2009a, cujas licenças foram adquiridas pela UFV (Universidade
Federal de Viçosa) em novembro de 2009. Há duas três versões: uma
estudantil que é caracterizada pelo prompt de comando edu>, a versão
profissional >> e a educacional, esta última para instituições de ensino. Na
figura 1 pode-se ver várias janelas, cada qual com sua função, mas há 2
delas que pode-se classificar como sendo as principais. Ou seja, as que
apresentam o espaço de trabalho e o arquivo.m.
O objetivo da produção deste material é servir como apoio a um
curso de introdutório de Matlab. Com este o participante poderá rever
alguns comandos iniciais e essências de pacote de programação que tem
sido escolhido por várias instituições de ensino superior do Brasil e do
exterior, além de muitas empresas o terem adotado como software de
projetos.
Um dos motivos dessa escolha é sem dúvida a facilidade e
simplicidade de programação, além do leque de funções inclusas e
validadas que ele possui. Tudo isso torna o Matlab uma poderosa
ferramenta de trabalho, porque poupa tempo de programação.
Espera-se que com esse texto e mais o curso, o participante ganhe
know-how para se autodesenvolver e aprofunda na sua área específica,
explorando cada vez mais este software e obtendo resultados com ele.
Matlab: Um curso introdutório
2
Figura 1. Ambientes do MatLab.
As outras áreas podem ser suprimidas, mas é interessante deixa-las a
mostra para um maior controle das informações geradas pelo sistema. Na
figura 2 é possível observar mais 3 áreas:
• o Current Directory (diretório atual), nesta janela pode-se observar o
conteúdo da pasta atual (ou diretório atual). É sempre um bom
procedimento que os arquivos que estejam sendo vistos nesta janela,
sejam os que se pretende utilizar. Caso contrário o Matlab não
reconhecerá os comandos por não estar direcionado ao diretório atual.
• Buffer (Workspace), nesta estarão sendo apresentadas as variáveis
criadas, seu tamanho, tipo e conteúdo;
• Command History, nesta são registrados todos os comandos entrado no
Work Space;
Área do arquivo.m
Área de Trabalho
Matlab: Um curso introdutório
3
Figura 2. Outras áreas de controle do Matlab.
Pode ser observado também, que na parte superior da janela do Matlab
já aparece o Current Directory. Assim, talvez seja dispensável mais uma janela
para esse propósito.
No Workspace pode-se entrar com os comandos diretamente. Qualquer
comando do Matlab pode ser inserido neste lugar (Figura 3).
Figura 3. Workspace e prompt de comando.
Pode ser observado o prompt de comando, como já explicado, seu
funcionamento é semelhante ao do promtp de comando do sistema
. Inclusive vários comandos que lá se utilizava permanecem no
Buffer
Histórico
de
comandos
Pasta atual
Matlab: Um curso introdutório
4
Matlab. Vários deles estão listados abaixo e devem ser utilizado, pois são muito
úteis durante a programação no Matlab.
Tabela 1: Comandos essenciais via prompt.
Comando Exemplo de aplicação
clc
-é semelhante ao cls, este comando limpa a tela
do workspace.
Clear -este comando limpa a variável escolhida. Ex:
>>clear + variável.
clear all -limpa todas as variáveis do buffer de memória.
Dir -mostra os arquivos e pastas do diretório atual.
Ex1: >>dir
-acrescentando-se a chave *, pode-se fazer um
filtro do que se pretende exibir. Ex2: >>dir *.exe,
só mostra os arquivos com a extensão escolhida,
no caso a exe. Ex3: >>dir m*.txt, mostra apenas
os arquivos que iniciam com m e tem extensão
txt. Ex4: >>dir r*.*t, exibe somente os arquivos
que começam com r e tem um t no final de sua
extensão. Ex5: >> dir *. , mostra epenas as
pastas que estão neste dirertório.
What -este comendo é similar ao dir, apenas que ele
mostra apenas os arquivos com extensão m. Ex:
>>what
Who -mostra as variáveis que estão no buffer. Este
comando dispensa a presença da janela, pois
podemos consultar através do teclado, quando
necessário, as variáveis criadas.
Whos -exibe as variáveis criadas e sua dimensão. Ex:
>>whos
Clear vars - funciona como clear.
Rmdir -remove um diretório ou pasta, desde que ele
esteja vazio. Ex: rmdir diretório. Se o diretório
Matlab: Um curso introdutório
5
“diretório” existir e estiver vazio.
Mkdir -cria uma pasta diretamente do prompt de
comando.
Cd -é um comando que possibilita mover-se de uma
pasta para outra diretamente do prompt. Ex1:
>>cd work, entra na pasta work. Ex2: >>cd .. , sai
da pasta work.
Type -este comando serve para olhar o conteúdo de
um arquivo, desde que ele seja do tipo doc, txt ou
m. Ou seja, desde que ele seja um texto. Ex: type
arquivo.
Which -é o comando que exibe aonde o arquivo de uma
função está. Ex: >>which type
built-in
(C:\MATLAB\R2009a\toolbox\matlab\general\type)
Abaixo temos os operadores aritméticos essenciais. Além dos sinais de
+(soma), subtração (-), multiplicação (*), divisão (/ ou \) e potencia (^) esses
ainda são associados, quando operando com matrizes, ao ponto antes da
operação. Indicando que o produto ou a divisão ocorre membro a membro. A
figura 1 abaixo resume esses operadores, em seguida alguns exemplos para
extinguir qualquer dúvida ainda remanescente.
Matlab: Um curso introdutório
6
Figura 1. Operadores aritméticos.
Quando os operadores são acrescidos de um ponto, então pode
executar essas operações com vetores e matrizes. Perceba, porém, que o
ponto vai antes do operador. Exemplos são também apresentados na tabela 2.
O sinal apóstrofo (‘) é muito utilizado, ao contrário da aspas (“) utilizada em
programas como o C e C++.
2. Comandos de mensagens e entradas
Apresentamos agora alguns comandos básicos para mensagens ao
usuário.
disp(‘ mensagem a enviar para tela’) a resposta será:
mensagem a enviar para tela
Matlab: Um curso introdutório
7
sprintf(‘ mensagema enviar par tela’) essa porém além de exibir mensagem na
tela atribui a string a variável ans. Caso deseje, poderá executar esse comando
da seguinte forma:
mensagem= sprintf(‘ mensagema enviar par tela’) mostrará na tela e atribuirá a
string para variável mensagem.
Que poderá se usada dentro de qualquer outra função que demande de uma
string, por exemplo o próprio comando disp. disp(mensagem), figura 3.
Figura 3. Spacework, comandos de mensagens ao usuário.
Mensagem enviada
Mensagem exibida e que
está no conteúdo da
variável ans
Mensagem exibida e que
está no conteúdo da
variável mensagem
Mensagem exibida usando o
comando disp e a variável
mensagem.
Matlab: Um curso introdutório
8
Tabela 2: Exemplos com os operadores aritméticos.
Soma Subtração
>>1+2
Ans =
3
>>3-2
Ans=
1
Multiplicação Divisão
>>2*3
Ans=
6
>>3/2
Ans
1.5
>>2\3
Ans
1.5
Potência Expoente
>>2^3
Ans
8
>>exp(1)
Ans
2.7183
Operações com os arrays: a=[1 2 3] e b=[4 5 6]
Soma Subtração
>>a+b
Ans
5 7 9
>>a-b
Ans
-3 -3 -3
Multiplicação Divisão
Matlab: Um curso introdutório
9
>>a.*b
Ans
4 10 18
>>a./b ou b.\a
Ans
0.2500 0.4000 0.5000
Potência Expoente
>>a.^2
Ans
1 4 9
>>exp(a)
Ans
2.7183 7.3891 20.0855
Diferença de capitalização, o Matlab faz diferença entre maiúsculas e
minúsculas, portanto deve-se ter cuidado no momento de criar uma variável.
A tabela 3 são apresentado alguns comando de saída para tela e de
entra com exemplos. Alguns deles, no caso dos comandos de entrada, são
especiais para dados de arquivos e variáveis do sistema.
Tabela 3: Comandos de entrada e saída para tela.
disp Input
>>disp (‘Mensagem’)
Mensagem
>>input(‘Entre com o dado:’)
Entre com o dado:
sprintf sscanf
>>sprintf(‘Essa é a mensagem:’)
Ans=
Essa é a mensagem:
>>A=’2.71 3.14’
A=
2.71 3.14
>>sscanf(A,’%f’)
Ans=
2.7100
3.1400
fprintf fscanf
Matlab: Um curso introdutório
10
>>fprintf(‘Essa é a mensagem:\n’)
Essa é a mensagem:
>>
>>fscanf(fid,’%f’)
Obs: lê dados de uma arquivo que
tenha sido aberto pelo fluxo fid.
Sprintf
>>b=[2.7100 3.1415]
B=
2.7100 3.1415
>>sprintf(‘Os valores são: %3.2f e
%3.2f\n’,B(1),B(2))
ans=
Os valores são: 2.71 e 3.14
3. Criando uma variável
Para criar uma variável no Matlab é muito fácil, bastando para isso
atribuir um valor, um caracter ou uma string e pronto, ela já existe no ambiente
do Matlab.
Exemplo: >>a=1, ou b=’r’ ou c=’Programa Matlab’
Executando esses comandos no prompt de comando já teremos criado
três variáveis, a, b e c. Respectivamente, uma contendo um valor, um caracter
e uma string. Aproveita-se a oportunidade para apresentar o sinal de = como a
forma para atribuir “valores” e conteúdos às variáveis.
A variável criada fica na memória do Mabtlab e é assim podem ser
usadas em várias partes do programa. Portanto um cuidado é necessário para
não haver confusão com elas.
Matlab: Um curso introdutório
11
4. Operadores relacionais
Assim como outras linguagens de programação, há uma série de
codificações para elaborar o funcionamento lógico do programa em
desenvolvimento. A figura 4 mostra alguns operadores relacionais que pode ser
usados. O primeiro deles é o < menor que, <=menor que ou igual, >maio que,
maior ou igual, == igual e não igual ou diferente ~=. Deve-se ter cuidado para
não confundir == com =, pois são bem distintos um do outro, o primeiro serve
para comparar e o segundo para atribuir.
Figura 4. Operadores relacionais.
Em seguida estão algumas estruturas lógicas, também utilizadas em
muitas outras linguagens de programação, que no Matlab se mostra muito mais
simples por dispensar uma série de sinais e simbologia.
A primeira dessas estruturas é a IF-elseif-else como mostrado na figura
Figura 4. Estrutura lógica IF-elseif-els.
Matlab: Um curso introdutório
12
Essa estrutura poderá se usada na sua forma mais simples que é o
usando o comando if + a expressão condicionante e o comando, assim como
todos em bloco como esse, devem terminar com a palavra end. A forma
completa desta estrutura apresenta uma primeira verificação, a qual se não for
satisfeita passa par a segunda verificação elseif, caso não seja satisfeita segue
para a última que será executada no caso de nenhuma das anteriores forem
satisfeitas.
Outra estrutura é o case, nesta é necessário a entrada verdadeira para
que ela seja executada. Nesta várias condições podem ser relacionadas e
executadas conforme a entrada. São, neste caso, os case’s. A estrutura
executa um determinado expressão casa nenhuma das condições, ou seja dos
case’s, não seja satisfeita. Muito utilizada para enviar uma mensagem de erro
para o usuário. Novamente, a estrutura é finalizada com a palavra end.
Figura 5. Estrutura switch.
Na próxima figura 6 é apresentada a estrutura for, onde uma expressão
é condicionada para incrementar as operações, equações e etc. Nesta
estrutura assim como as outras é possível operarem em cascata, ou seja,
estruturas aninhadas.
Matlab: Um curso introdutório
13
Figura 6. Estrutura for.
Outra estrutura muito comum e a while (figura 7), nela enquanto a
expressão lógica é satisfeita o laço continua executando as operações dentro
dela até que o estado dela seja alterado para sair do laço.
Figura 7. Estrutura while.
O laço while se repete enquanto o valor da variável eps+1 for menor que
1. Há a expressão que faz com que o valor da eps vá diminuindo até que a
condição não seja mais satisfeita.
5. Interface gráfica
Embora haja uma linguagem mais apropriada para fazer a interface
gráfica com o usuário chamada de GUI, o Matlab disponibiliza algumas funções
muito interessantes que permite uma aplicação direta e muito prática de
algumas dessas interfaces. Com elas, certamente o leitor se sentirá muito
melhor, pois poderá proporcionar programas com uma interface muito próxima
ao que o sistema Windows executa. Assim seguem algumas dessas funções e
a explanação de como elas funcionam.
Matlab: Um curso introdutório
14
5.1. Inpudlg
Essa função abre uma caixa de mensagem onde o usuário poderá
atribuir valores a suas variáveis. Ela possibilita que existam valores “default”. A
sua estrutura segue conforme a figura 7.
Figura 7. Comando inputdlg.
A função inputdlg funciona como a função input, porém há
apenas alguns parâmetros a mais que devem ser observados e
preparados. Primeiramente haverá necessidade de mensagens
dizendo em qual caixa colocar uma informação específica, no
exemplo as mensagens estão armazenadas na variável prompt.
Nesta o texto de cada caixa foi inserido, como: Entre com a
dimensão da matriz(Entre matrix size) e entre com o nome do mapa
de cores (Enter colormap name). Também há a necessidade de dar
um título para essa caixa de comando, nocaso a variável usada foi
dlg_title, para qual foi atribuído nesse exemplo Entrada para
funções de picos (Input for peaks function). Outra variável, a def,
foram atribuídos os valores default. E finalmente a num_lines ou
Matlab: Um curso introdutório
15
número de linhas,foi atribuído o valor de 1 linha. Cada caixa pode
possuir várias linhas, normalmente uma só basta.
É importante observar que os valores que retornam após a
entrada com esse comando são strings e, portanto, devem ser
convertido para outro formado, exemplo se for números de entrada.
Para fazer essa conversão por exemplo de caracteres para
número use o seguinte comando:
str2num(variável string)
5.2. msgbox
Há a possibilidade de enviar uma mensagem para o usuário,
Para isso pode-se utilizar a função msgbox. Cada caixa de
mensagem ainda pode ter um ícone que destaca que tipo de
mensagem o programa está enviando, por exemplo: erro, alerta e
ajuda.
Observe a sintaxe dessa função, primeiro vai a mensagem
que se quer mandar para o usuário, em seguida o título da caixa de
mensagem e depois o tipo de ícone (figura 8).
Matlab: Um curso introdutório
16
Figura 8. Função msgbox.
Um exemplo desta função segue:
>>msgbox(‘Deseja continuar?’,’Rotina de entrada de dados’,’warn’)
Figura 9.Exemplo do comando msgbox.
Para outros tipos de avisos, como erro usa ‘error’ e ‘help’.
5.3. Questdlg
A próxima função é a caixa de pergunta, onde alguma
situações são questionadas e o usuário deverá clicar no botão para
escolher entre elas. Ajusta-se uma destas escolhas como a default.
Para configurar a função é necessário definir a pergunta a ser
mostrada para o usuário, o título da caixa de mensagem, as
opções, no máximo 4 e a opção default. A figura 10 mostra a
sintaxe da estrutura desta função.
Matlab: Um curso introdutório
17
Figura 10. Estrutura da função questdlg.
A figura 11 mostra um exemplo dessa estrutura.
Figura 11. Exemplo da estrutura da função questdlg.
O resultado da estrurua da figura 11 é apresentado na figura
12 a seguir.
Matlab: Um curso introdutório
18
Figura 12. Resultado da função questdlg.
Na próxima figura (figura 13) é apresentado outro exemplo de
aplicação deste comando.
Figura 13. Outro exemplo do comando questdlg.
Matlab: Um curso introdutório
19
6. Gráficos
Nesse tópico são apresentados alguns tipos de
gráficos. Eles poderão ser implementados em qualquer aplicação,
no entanto deve-se ter cuidado para não perder o foco e
principalmente a utilidade dos mesmos. Caindo assim, numa
situação de poluição visual e o propósito de se utilizar gráficos seja
perdido.
6.1. Plot
É sem dúvida a função mais simples e sua
implementação segue o mesmo grau de dificuldade. O comando
plot é então ilustrado abaixo na figura 14.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Figura 14. Gráfico da função seno usando plot.
O comando plot(x,y), na sua mais simples usa os
argumento x, para o eixo das abscissas e o y para o eixo das
ordenadas. Acrescentando-se outros parâmetros podemos
incrementar e melhor representar dados através dos gráficos
criados. Em seguida, na figura 15, é mostrado as variações para
função plot.
Matlab: Um curso introdutório
20
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Figura 15. Função plot(x,y,’b+’,x,-y,’or’).
A função plot(x,y,’b+’,x,y,’or’) constrói um gráfico com
duas funções y e –y, ambas em função de x. No entanto a primeira
curva é feita com o símbolo + e na cor azul, o argumento entendido
pela função é ‘b+’. Na segunda curva, o argumento passado para
função é ‘or’ e assim “plota” a curva com o símbolo ‘o’ e na cor
vermelha. Assim outras curvas poderão ser colocadas no mesmo
gráfico com simbologias e cores diferentes para destacá-las umas
das outras. É possível ainda alterar a espessura da linha.
Podem-se incluir os nomes dos eixos e dar um título
para o gráfico. Para isso devem-se adicionar na seqüência do
comando plot as seguintes linhas de comando:
• xlabel(‘Nome do eixo X’) → coloca o nome do eixo X,
novamente os caracteres entre os sinais de apóstrofos formam uma
string e por isso vale qualquer tipo de caracter.
• ylabel(‘Nome do eixo Y’) → coloca o nome do eixo Y.
• zlabe(‘Nome do eixo Z’) → coloca o nome do eixo Z. No caso
do gráfico ser em 3D.
Matlab: Um curso introdutório
21
• title(‘Nome do título do gráfico’)→ acrescenta o nome do
gráfico.
Exemplo:
plot(x,y,’b+’,x,-y,’go’)
xlabel(‘Nome do eixo X’)
ylabel(‘Nome do eixo Y’)
title(‘Nome do título do gráfico’)
Resultado é apresentado na figura 16.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Nome do título do gráfico
Nome do eixo X
Nom
e do
eix
o Y
Figura 16. Gráfico completo, título, eixo x, eixo y.
Uma função interessante que podemos inserir agora é
a ginput, ela permite que o usuário aponte um ou mais pontos no
gráfico aberto e retorna as coordenadas do ponto ou pontos
selecionados.
Exemplo:
N=1; %é uma variável que determinará o número de pontos
desejados.
[a b]=ginput(N) %é a função ginput que pegará N pontos no gráfico
Matlab: Um curso introdutório
22
aberto.
As variáveis a e b tomarão os valores das
coordenadas dos pontos selecionados. Na figura 17 é ilustrada a
forma como a figura do gráfico ficar, mostrando o cursor que aguara
as entradas com o mouse.
Figura 17. Cursos do comando ginput.
Este cursor ficará aberto até que a entrada feita com o
mouse seja realizada, isso acontecerá o número de vezes que for
inserido no comando ginput.
Matlab: Um curso introdutório
23
Figura 18. Dois pontos selecionados para construção da reta.
A figura mostra os dois pontos, a partir destes será
desenhada uma reta interligando os mesmos. Na figura 19, também
mais uma função é introduzida, a text(a(1),b(1),’Ponto 1’), onde a e
b são tem os valores das coordenadas tomadas pela função ginput
e é colocado o texto Ponto 1 e Ponto 2 na extremidade da reta,
conforme a figura 19.
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Nome do título do gráfico
Nome do eixo X
Nom
e do
eix
o Y
Ponto 1
Ponto 2
Figura 19. Funções line e text.
Os argumentos da função line são as coordenadas
dos extremos da linha. Da função text é as coordenadas mais uma
string, no caso Ponto 1 e depois o Ponto 2.
Exemplo:
[a b]=ginput(2) %a função que toma 2 pontos do gráfico
line(a,b) %desenha uma linha com as coordenadas
armazenadas em a e b.
text(a(1),b(1),’Ponto 1) %Coloca uma string na área do gráfico no
ponto 1.
text(a(2),b(2),’Ponto 2) %Coloca uma string na área do gráfico no
ponto 2.
Matlab: Um curso introdutório
24
A figura 18 possui o resultado desse exemplo. Com
esses novos comandos já se pode operar os gráficos e manipula-
los com bastante eficiência. Para utilizá-los em um documento
word, basta entrar no menu edit e copiar a figura. O gráfico será
enviado para área de transferência do windows e depois poderá ser
colado. Esse artifício foi largamente utilizado para produzir esse
texto.
6.2. Subplot
Muitas vezes é necessário colocar as funções, devido
a sua natureza, em gráficos distintos. Isso é possível no Matlab
utilizando a função subplot. As funções utilizadas no exemplo
anterior serão aqui novamente reutilizadas para exemplificar esse
comando.
A seguir a figura 20 exibe a função subplot com 4
gráficos na mesma figura. É possível colocar mais, porém, por
motivos de poluição visual e para que os resultados dos gráficos
fiquem legíveis, é importante manter esse número em torno de 6×6
ou no máximo 8×8.
Esse comando tem como argumentos o tamanho da
matriz aonde se distribuirão os gráficos na figura e as suas
respectivas posições.
Matlab: Um curso introdutório
25
0 0.5 1-1
-0.5
0
0.5
1
0 0.5 1-1
-0.5
0
0.5
1
0 0.5 1-1
-0.5
0
0.5
1
0 0.5 1-1
-0.5
0
0.5
1
Figura 20. Função subplo 2×2.
Exemplo:
Subplot(2,2,1),plot(x,-,’r—‘) %posição 1, linha tracejada
vermelha.
Subplot(2,2,2),plot(x,y,’gd’) %posição 2, linhadiamante,
verde.
Subplot(2,2,3),plot(x,y,’yp’) %posição 3, linha pentagrama
amarela
Subplot(2,2,4),plot(x,-y,’g-.’) %posição 4, linha traço ponto,
azul.
Uma tabela 4 foi construída para ilustrar a questão das
posições. Perceba que não importa o tamanho da matriz, a
numeração segue conforme a linha vermelha da tabela indica.
Tabela 4. Ilustração do posicionamento dos gráficos pelo comando
subplo.
1 2 3 4 5 6
Matlab: Um curso introdutório
26
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
7. Programa Exercício
Neste tópico será acompanharemos um programa que
utilizar vários dos comandos vistos até o momento. O projeto consta
de trabalhar com uma equação de 2º.grau, mas que muito bem
poderia ser qualquer outro tipo de modelo matemático, mostrar os
resultados em um gráfico. Neste, pode-se renomear os eixos e o
título, possibilita que salvemos os resultados em um arquivo com
um nome escolhido e depois o recuperamos. Note que o arquivo
aqui é do tipo texto, ou seja, podemos salvá-lo com ou sem exteção
txt, doc, m ou qualquer outra desse gênero.
Além dos recursos gráficos, utilizou-se uma estratégia
de programação bastante interessante, na qual foi o script da
codificação foi construida ao redor de um programa principal
Matlab: Um curso introdutório
27
chamado main.m. Outros arquivos então foram criados para
quebrado, ou melhor, distribuido nos arquivos: arquivo.m, abre.m,
dadosinf.m, grafi.m e solucao.m.
É preciso observar que os arquivos criados deverão
estar no mesmo diretório ou pasta do caminho corrente do Matlab.
Pois, se isso não acontecer, o Matlab não reconecerá e enviará
uma mensagem como mostrada na figura 21.
Fiura 21. Mensagem de erro, diretório diferente do atual.
Portanto é necessário direcionar o diretório aonde
ficarão os arquivos .m como corrente para que o Matlab consiga
identificá-los.
Em seguida, na figura 22, o primeiro menu do nosso
programa. Nele poderemos escolher a forma de entrada dos dados
através do comando Teclado, apertando esse botão pode-se entrar
digitando-se os valores.
Figura 22. Menu principal do main.
Matlab: Um curso introdutório
28
Para o exemplo em desenvolvimento, os dados são os
coeficientes da equação, a figura 23 mostra a janela aberta para
introdução dos dados via teclado.
Figura 23. Janela de entrada de dados via teclado.
Nessa janela já aparecem alguns valores predefinidos,
os chamados valores default, que naturalmente poderão ser aceitos
ou pode-se digitar novos. Em seguida, pressionar a tecla OK.
Quando o botão Banco, do menu principal é apertado,
dados de um arquivo chamado dadosinf.m são atribuídos aos
coeficientes. Mais uma vez, deve-se entender aqui que estes dados
poderiam ser de qualquer outra variável, constantes ou qualquer
outra coisa que se desejasse.
O botão Plotar apresenta outro menu (figura 24) onde
se pede que o usuário aceite os nomes já definidos para os eixos e
o próprio gráfico ou os renomeie.
Fiura 24. Opção de renomear o nome dos eixos e do gráfico.
Ao pressionarmos o botão Editar nome, o respectivo
menu se abre, conforme fiura 25.
Matlab: Um curso introdutório
29
Figura 25. Janela para entrada de nomes do gráfico.
Caso não haja interesse em renomear essas
informações, então pode-se pressionar o botão Não editar, então
os nomes predefinidos serão usados. No exemplo dados de -5 até 5
foram usados para criar os dados, o passo foi de 0,001. O gráfico é
mostrado na figura 27, os respectivos dados criados estão na figura
26.
Figura 26. Dados gerados para a equação.
Como os coeficientes default foram aceitos os dados
gerados estão representados no gráfico na figura 27.
Matlab: Um curso introdutório
30
Figura 27. Gráfico da equação de 2º.grau.
Pode-se salvar os dados gerado em um arquivo,
pressionando-se o botão Salvar. Em seguida o prompt pede para
que o usuário insira o nome do arquivo, conforme a figura 28. O tipo
de arquivos são do formato texto. Por isso, pode-se introduzir no
nome as extensões txt, m, doc e outra qualquer tipo texto.
Figura 28. Prompt solicitando o nome para o arquivo.
Também é possível abrir um arquivo de dados,
pressionando o botão Abrir. Aqui é faz-se necessário tecer alguns
comentários.
O leitor poderá automatizar as operações de
salvamento e criação de nomes elaborando uma rotina para isso.
Isso facilitará muito na criação e codificação desses arquivos para
um acompanhamento e controle. Por exemplo, numa situação onde
criou-se um modelo matemático que está trabalhando com dados
experimentais, é possível relacionar a codificação criada para cada
Matlab: Um curso introdutório
31
experimento com o arquivo criado. Facilitando sua identificação e
mais adiante criar uma rotina de codificação de programação que
faça a comparação entre os resultados possibilitando uma
comparação da evolução dos mesmos. Uma codificação de
arquivos possível de ser implementada automatizada seria: exp_1-
05202010.txt, ou exp_A-05202010.001 que significariam
experiência 1 do dia 20/05/2010, no segundo experiência A do dia
20/05/2010 número 001 e assim por diante. Fica a critério da
liberdade e criatividade do leitor criar essa codificação.
Figura 29. Prompt para abertura do arquivo.
8. Código fonte:
Neste tópico é apresentado o código de programação
propriamente dito. Nele estão os comentário em cada linha. Mais
comentário que se fizerem necessário estarão entre linhas.
7.1. Arquivo main.m:
1. %Arquivo principal do meu programa
2. %-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
3.
4. clc %comando limpa a tela
5. clear all %comando limpa a memória
6.
7. aux1='s'; %cria a variável aux1 e já atribui um caracter ‘s’
Matlab: Um curso introdutório
32
8.
9. while aux1=='s' %faz a verificação para entrar no laço while que será
executado enquanto essa variável não for alterada.
10. clc
11. aux=menu('Escolha sua opçao',...
12. 'Teclado','Banco Dados','Plotar','Visualizar',...
13. 'Salvar','Sair','Abrir'); %cria a janela contendo o menu principal,
observe que o primeiro strin é a pergunta feia ao usuário para tomar a sua
decisão, em seguida o nome dos botões: Teclado, Banco Dados, Plotar,
Visualizar, Salvar, Sair e Abrir. Cada botão está numa posição, isto é 1, 2, 3, 4,
5, 6 e 7 respectivamente.
14. 15. switch aux %iniciar o laço switch que entra com a opção feita no menu. O
valor de retorno é um número, portanto a variável aux tem um valor inteiro.
16. case 1 % Entrada pelo teclado
17. 18. prompt={'a:','b:','c:'};
19. def={'1','4','20'};
20. dlgTitulo='Entre com os parametros:';
21. numLine=1;
22. resp=inputdlg(prompt,dlgTitulo,numLine,def); %cria o menu que
pede para o usuário entrar com dados na janela, figura 16. Para compor essa
função inputdl é necessário o título de cada campo de entrada, especificar qual
será o valor default, no caso foram os número 1, 4 e 20, mas poderia ser vazio e
assim ‘’, ‘’ e ‘’. Em seguida declara a string para o título, o número de linhas,
normalmente 1. Esse comando retorna conteúdos de células, que são strings.
Por isso devem ser convertidos para números, se esse for o caso.
23. a=str2num(cell2mat(resp(1))); % o comando cell2mat, converte a célula
para string, em seguida usa-se outro comando para converter string em número,
é o str2num. Finalmente tem-se número nas variáveis ‘a’. Repete-se este
comando para as outras variáveis como segue.
24. b=str2num(cell2mat(resp(2)));
25. c=str2num(cell2mat(resp(3)));
26. 27. solucao
28. 29. case 2 % Abre os dados do arquivo
30. disp('Entrou aqui de alegre!!!')
31. if or(exist('a'),exist('b'))==0
32. dadosinf %chama o arquivo dadosinf.m
33. else
34. aux=1;
35. end
36. 37. case 3 %Plota o grafico
38. 39. if or(exist('a'),exist('b'))~=0
Matlab: Um curso introdutório
33
40. solução %chama o arquivo solucao.m
41. grafi %chama o arquivo grafi.m
42. else
43. aux=1;
44. msgbox('Declarar variavel','Aviso') %comando que coloca uma caixa de
mensagem na tela. Necessita de uma string que dá a mensagem para o usuário,
e o tipo do ícone que irá aparecer. Botões ok são exibidos para o usuário
pressionar.
45. end
46. 47. 48. case 4 %Ver o conteudo do arquivo dadostxt.txt
49. 50. fid=fopen('c:/matlabR12/work/dadostxt.txt','r') %comando para
abertura ou criação de arquivo, aqui inclusive é colocado o caminho aonde este
arquivo, no caso dadostxt.txt, está. O parâmetro ‘r’, significa que será feita a
verificação somente de leitura.
51. if fid<0
52. disp('Nao ha dados no arquivo') %Se não existir o arquivo a função
fopen retorna um número negativo, então é enviada uma mensagem que o
arquivo não existe e não pode ser aberto por isso.
53. else
54. dadosinf %Caso ele exista então o arquivo dadosinf.m é executado.
55. solucao %O arquivo solução é executado
56. clc
57. type dadostxt.txt%O conteúdo do arquivo dadostxt.txt é visualizado.
58. pause
59. end
60. fclose(fid); %o fluxo é fechado
61. case 5 %Salva os dados no arquivo dadostxt.txt
62. 63. if or(exist('a'),exist('b'))==0
64. msgbox('Declarar variavel','Aviso')
65. aux=1;
66. else
67. Solucao %o arquivo solucao.m é aberto
68. Arquivo %o arquivo arquivo.m é aberto
69. end
70. 71. case 6
72. aux1='sair';
73. case 7
74. abre
75. otherwise
76. 77. clc
78. disp('Erro!!!!')
79. pause
80. for i=0:10
81. fprintf('Vou desligar %d\n',10-i)
Matlab: Um curso introdutório
34
82. end
83. disp('Sair')
84. 85. end
86. clc
87. end
7.2. Arquivo Abre.m:
%Arquivo que faz a abertura dos dados
1. dir *.arq
2.
3. arqfile=input('Entre com o nome do arquivo:','s');
4. caminho=sprintf('C:/matlabR12/work/%s',arqfile);
5. fid3=fopen(caminho,'r');
6. if fid3>=0
7. g=fscanf(fid3,'%f')
8. fprintf('Dados do arquivo < %s >',arqfile);
9. pause
10. fclose(fid3)
11. else
12. msgbox('Nao existe o arquivo','Aviso')
13. end
7.3. Arquivo arquivo.m:
1. %Arquivo que salva informaçoes
2. %no disco
3. clc
4. arqfile=input('Entre com o nome do arquivo:','s');
5. caminho=sprintf('C:/matlabR12/work/%s',arqfile);
6. fid1=fopen(caminho,'W+');
7. fprintf(fid1,'%f %3.2f \n',t,y)
8. fclose(fid1)
9. clc
10. disp('Visualizacao do arquivo:')
11. y'
Arquivo dadosinf.m:
1. %Arquivo que armazena dados
2. %funcionara como banco de dados
Matlab: Um curso introdutório
35
3. %de informacoes permanentes
4. a=1;
5. b=2;
6. c=8;
7. clc
8. fprintf('Os coeficientes a=%d b=%d e c=%d',a,b,c)
9. pause
7.4. Aquivo grafi.m
1. %Arquivo para impressao de graficos
2. %configuracoes de graficos
3.
4. clc
5. aux3=menu('Escolha sua opçao',...
6. 'Editar nome:','Nao editar');
7.
8.
9. if aux3==1
10. 11. prompt3={'Eixo X:','Eixo Y:','Titulo:'};
12. def3={'','',''};
13. dlgTitulo3='Entre com os parametros:';
14. numLine3=1;
15. resp3=inputdlg(prompt3,dlgTitulo3,numLine3,def3);
16. X=cell2mat(resp3(1));
17. Y=cell2mat(resp3(2));
18. T=cell2mat(resp3(3));
19. 20. 21. 22. else
23. X='Temp';
24. Y='Amplitude';
25. T='Equacao';
26. end
27. 28. plot(t,y)
29. title(T)
30. xlabel(X)
31. ylabel(Y)
32. grid
33. pause
7.5. Arquivo solucacao.m
1. %Arquivo com a solucao do problema
2. t=-5:.001:5;
Matlab: Um curso introdutório
37
9. 8. Conclusão
Finalizamos esta apostila com o sentimento de ter
colocado o conteúdo que achamos ser essencial para um curso
introdutório. Como as turmas são sempre muito heterogêneas é
bastante complicado atender nas especificidades. É notória a
necessidade de um curso avançado para este fim. Se o conteúdo
aqui apresentado tiver sido assimilado pelo leitor, e ele não deixá-lo
cair no esquecimento, ele terá grandes chances de sucesso no uso
deste software maravilhoso.
O leitor facilmente poderá se tornar uma autodidata e
pode aprofundar-se cada vez mais, explorando os comandos e as
funções aplicadas na sua área de especialização. Por isso aproveito
essa oportunidade de colocar a disposição as formas de contado
para que possa enviar dúvidas, críticas e sugestões, todas serão
muito bem vindas e reconhecidas(email:[email protected]).
É evidente a necessidade do conhecimento da língua
inglesa, pelo menos para leitura, pois as ajudas são todas nesse
idioma. Mas, acredito que nos tempos em que vivemos isso se
torne mais um incentivo para estudá-la.
O comando help é seu principal aliado, com ele você
conseguirá explorar ainda mais o Matlab.
Desde já o leito é convidado a participar do próximo
curso a ser lançado e divulgado que envolve um pacote do Matlab,
denominado Simulink.
Com certeza, nas próximas versões desta apostilas
eventuais erros e melhores deverão estar presentes, as quais só
serão possíveis pelo aprendizado que fazemos a cada vez que
Matlab: Um curso introdutório
38
lecionamos esse curso introdutório. Aproveito para agradecer a
participação, a paciência e, sem dúvida nenhuma, a colaboração de
todos, participantes e organizadores.
9. Referências bibliográficas
COCIAN, Luis Fernando Espinosa. Manual da linguagem C.1ª.
Edição : Editora da Ulbra, 2004.
HELSELMAN, D; LITTLEFILD, B. MATLAB – Versão do estudante
– guia do usuário. São Paulo: Makron Books, 1997. 308p.