Académique Documents
Professionnel Documents
Culture Documents
MATLAB ABC
Introduca
o ao MATLAB
Gustavo B. Borba
1001 utilidades
Metodos numericos
Exploracao de dados
Telecomunicacoes
Eletromagnetismo
Controle
Oceanografia
Economia
Algebra
linear
Estatstica
Maquinas eletricas
Mecanica
Neurociencias
MATLAB ABC
v0.2 nov.2013
A seguir h
a uma pequena lista comentada das principais caractersicas (key
features) e recursos oferecidos pelo MATLAB [7].
1. Linguagem de alto nvel e ferramentas de desenvolvimento para a elaborac
ao
e an
alise r
apida de algoritmos e aplicac
oes.
Significa que todas as ferramentas de desenvolvimento estao includas: um editor
para a elaborac
ao dos programas; um debugger com recursos para a visualizacao
de vari
aveis, execuc
ao passo-a-passo e inclusao de breakpoints; uma janela de
comando para a entrada de dados, execucao de programas e comandos e visualizac
ao dos resultados; uma ferramenta do tipo profiler, que realiza a analise
de desempenho dos programas desenvolvidos para a melhoria de determinadas
linhas de c
odigo; um help completssimo. Algumas caractersitca importantes deste ambiente de desenvolvimento sao a sua facilidade de configuracao e
uso. Uma vez que o MATLAB tenha sido instalado corretamente, praticamente
n
ao h
a a necessidade de configuracoes complicadas como muitas vezes ocorre
em outros ambientes para outras linguagens de programacao (inclusao de bibliotecas, configurac
ao do compilador, instalacao da documentacao e etc.). A
interface gr
afica (ambiente propriamente dito) permite o acesso facil `a grande
maioria dos recursos usados com freq
uencia. Para a execucao e depuracao de
programas, por exemplo, est
a disponvel um janela chamada Workspace, na
qual pode-se visualizar e editar, a partir de um simples clique duplo, todas as
vari
aveis do programa. Uma ilustracao da facilidade de uso do ambiente, esta no
fato de muitos professores utilizarem o MATLAB para o ensino de programacao.
Aquilo que tradicionalmente era feito utilizando-se pseudolinguagens e ambientes exclusivamente did
aticos, pode ser realizado no ambiente e com a linguagem
MATLAB [11, 12].
2. Ferramentas gr
aficas embutidas para a visualizac
ao de dados e ferramentas para a criac
ao de plots personalizados.
Um ambiente de computac
ao cientfica como o MATLAB nao poderia abrir
m
ao de boas ferramentas para a elaboracao de graficos (plots). Na verdade,
elaborac
ao de gr
aficos e uma maneira bastante simples de fazer referencia a
isto, j
a que recentemente a visualizac
ao de dados (agora sim um nome mais
justo) est
a assumindo o car
ater de uma nova area do conhecimento [14].
3. Func
oes matem
aticas para
algebra linear, estatstica, an
alise de Fourier,
filtragem, otimizaca
o e resoluc
ao de equac
oes diferenciais.
Muito da capacidade do MATLAB em atender `a diferentes areas, como mencionado anteriormente, e devida `a existencia dos modulos contendo funcoes especializadas. Cada um destes m
udulos e chamado no MATLAB de toolbox [8] e e
vendido separadamente (Add-On products). Para o processamento de imagens,
por exemplo, vamos utilizar a Image Processing Toolbox [6].
2
MATLAB ABC
v0.2 nov.2013
2+2
2.1
MATLAB ABC
DICA
v0.2 nov.2013
Figura 1: Configuraca
o default do desktop do MATLAB e cada um dos seus elementos.
MATLAB ABC
v0.2 nov.2013
ser
ao salvos os seus programas e tambem onde o MATLAB espera encontrar os
arquivos que voce eventualmente ira utilizar nos seus programas ou nos comandos inseridos na linha de comando (ainda existe o Path, mas e assunto para mais
tarde). Os arquivos mais comuns do MATLAB sao os scripts, com extencao .m,
e as var
aveis, com extens
ao .mat. Em breve vamos aborda-los com mais detalhes. Tambem podem estar neste diretorio arquivos contendo os dados a serem
processados ou salvos pelos seus programas MATLAB, como imagens, audio,
comma-separated values, etc.
DICA
Command Window: e nesta janela de comando, ou prompt, que sao inseridos os comandos e visualizadas as sadas (respostas) do MATLAB. Digite 2+2
<enter>.
>> 2+2
ans =
4
MATLAB ABC
DICA
v0.2 nov.2013
prov
E
avel que na Command Window do seu MATLAB
exista um espaco de uma linha entre o 2+2, ans e 4.
possvel suprimir estas linhas vazias para economiE
zar espaco na Command Window. Para isso, va no
menu File Preferences. . .. Na janela Preferences,
clique em Command Window do lado esquerdo e altere
o par
ametro Numeric Display de loose para compact.
Outra maneira de efetuar esta configuracao e atraves
da linha de comando, digitando o comando format
compact.
2.2
MATLAB ABC
v0.2 nov.2013
Otimo,
agora o seu primeiro scriptzinho esta funcionando, salvo e pode
ser copiado e executado em qualquer MATLAB. Caso exista tambem um arquivo com o mesmo nome do seu script e extencao .asv (neste caso meuPrimScript.asv ), sem problemas. Estes arquivos sao gerados automaticamente pelo
MATLAB para backup (asv significa autosave), como e o caso dos arquivos
.tmp (temporary) do Microsoft Word, por exemplo. Nao e necessario copiar
este arquivo para rodar o seu script em outra maquina.
DICA
Uma vez que o script fez a mesma coisa que os comandos que havamos digitado anteriormente na Command Window, nao vimos alteracao no workspace.
Mas voce deve ter notado que os resultados foram mostrados na Command Window. Se n
ao, pode rodar o script `a vontade, n + 1 vezes. Mas ao inves de ir
7
MATLAB ABC
v0.2 nov.2013
MATLAB ABC
v0.2 nov.2013
2.3
Fun
c
oes user-defined
No MATLAB, as func
oes tambem sao escritas em arquivos .m, assim como os
scripts, mas existem diferencas importantes entre os dois, especialmente:
Uma func
ao pode receber e retornar parametros no proprio nome, um
script n
ao.
Um script utiliza o base Workspace. Uma func
ao possui seu proprio Workspace e comunica-se com o base Workspace atraves dos parametros de entrada e sada.
MATLAB ABC
v0.2 nov.2013
Passo 1. Requisite um novo arquivo M e insira o corpo da funcao, como mostrado abaixo. k1 e k2 s
ao os parametros de entrada e s e o parametro de
sada. A sintaxe e sempre esta: parametro(s) de entrada nos parenteses
ap
os o nome da func
ao e parametro(s) de sada antes do =.
function s = meuPrimFun(k1,k2)
s = k1+k2;
end
Passo 2. Salve a func
ao. Observe que o MATLAB sugere um arquivo .m com
o mesmo nome da func
ao. Neste caso, meuPrimFun.m.
Passo 3. Chame a func
ao a partir da Command Window. Deve-se inserir os
par
ametros de entrada e a variavel de sada:
>> d = meuPrimFun(4,5)
d =
7
Ou ent
ao podemos passar para a funcao duas variaveis, ao inves de duas
constantes:
>> p = 4;
>> q = 5;
>> e = meuPrimFun(p,q)
e =
7
Observe que as vari
aveis internas da funcao, k1, k2 e s, nao aparecem
no base Workspace. Outro detalhe importante e que o MATLAB reconhece a
func
ao pelo nome do arquivo .m, e nao pelo nome da funcao declarado na linha
de c
odigo iniciada por function. Obviamente, e importante manter o mesmo
nome para evitar confus
oes.
2.3.2
Fun
c
oes built-in
10
MATLAB ABC
v0.2 nov.2013
Matrix laboratory
J
a que MATLAB significa MATrix LABoratory, e de se imaginar que a estrutura de dados do tipo matriz desempenhe um papel de destaque no ambiente.
Inclusive, que h
a quem diga que tudo no MATLAB e tratado como matriz.
Faz sentido [4].
3.1
Um array (arranjo) pode ser definido como um conjunto de dados no qual cada
elemento e acessado a partir de um ndice. Entao, em computacao, matrizes
e vetores geralmente est
ao na categoria dos arrays. Ja um escalar (n
umero
11
MATLAB ABC
v0.2 nov.2013
isolado) n
ao pertence `
a categoria dos arrays. No MATLAB, como as matrizes
s
ao as queridinhas, a terminologia e um pouco diferente, conforme descrito nos
itens a seguir e exemplificado na Figura 3.
Matriz (matrix): uma estrutura de dados bidimensional, retangular. A
umero de colunas.
notac
ao para as dimens
oes de uma matriz e n
umero de linhas-por-n
Escalar (single number): uma matriz de dimens
oes 1-por-1.
Vetor linha (row vector): uma matriz de dimens
oes 1-por-n.
Vetor coluna (column vector): uma matriz de dimens
oes n-por-1.
Array multidimensional : um array com mais de duas dimens
oes. Sao
extens
oes das matrizes.
a(1,1)
a(1,2)
a(1,3)
a(2,1)
a(2,2)
a(2,3)
a(3,1)
a(3,2)
a(3,3)
b(1)
b(2)
b(3)
b(4)
c(1)
c(2)
Array 3-por-3-por-2
c(3)
e(1,1,2)
e(1,2,2)
e(1,3,2)
e(2,1,2)
e(2,2,2)
e(2,3,2)
Matriz 3-por-3
c(4)
e(1,1,1)
e(1,2,1)
e(1,3,1)
e(3,1,1)
Escalar
(matriz 1-por-1)
e(3,2,2)
e(2,1,1)
e(2,2,1)
e(2,3,1)
e(3,1,1)
e(3,2,1)
e(3,3,1)
e(3,3,2)
Vetor coluna
de 4 elementos
(matriz 4-por-1)
Figura 3: Exemplos de estruturas de dados do tipo matriz, escalar, vetor linha, vetor
coluna e array multidimensional. Os n
umeros dentro dos parenteses s
ao os ndices
para o acesso dos elementos. A estrutura b
asica sempre e a matriz. O array multidimensional e uma matriz com mais de duas dimens
oes. Neste exemplo, tres: linhas,
colunas e p
aginas.
Para criar uma matriz, o metodo mais simples e utilizando o operador colchetes:
>> a = [-1 0 1; 2 3 4; 5 6 7]
a =
-1
0
1
2
3
4
5
6
7
Os elementos de uma mesma linha sao separados por espaco. O ponto e vrgula
inicia uma nova linha. Tambem e possvel separar os elementos de uma mesma
linha por vrgula, mas a notacao mais utilizada e com espacos.
12
MATLAB ABC
v0.2 nov.2013
e um vetor coluna
>> c = [12; 13; 14; 0]
c =
12
13
14
0
Um escalar, como j
a vimos anteriormente
>> d = 16
d =
16
Observe a descric
ao de cada uma destas variaveis no Workspace, ou utilize o
comando whos para listar as variaveis do Workspace:
>> whos
Name
a
b
c
d
Size
3x3
1x4
4x1
1x1
Bytes
72
32
32
8
Class
double
double
double
double
MATLAB ABC
v0.2 nov.2013
1
4
7
10
11
O operador ap
ostrofo retorna a matriz transposta, aquela obtida a partir de
troca de linhas por colunas:
>> at = a
at =
-1
2
0
3
1
4
5
6
7
14
15
Da mesma forma, o nosso vetor coluna c poderia ter sido criado assim:
>> c = [12 13 14 15]
c =
12
14
MATLAB ABC
v0.2 nov.2013
13
14
15
Ao acessar um elemento fora das dimensoes maximas da matriz, um erro e
retornado:
>> a(1,4)
??? Attempted to access a(1,4); index out of bounds because
size(a)=[3,3].
>> b(5)
??? Attempted to access b(5); index out of bounds because
numel(b)=4.
>> c(6)
??? Attempted to access c(6); index out of bounds because
numel(c)=4.
Agora, ATENC
AO!
Ao atribuir um valor a um elemento fora das dimensoes
m
aximas da matriz, as dimensoes da matriz sao ampliadas para acomodar o
novo elemento e os elementos que nao foram especificados recebem valor zero.
Lembre que todas as estruturas sao consideradas matrizes, inclusive um escalar.
Por exemplo:
>> a(3,4)
a =
-1
2
5
>> b(5) =
b =
8
>> c(6) =
c =
12
13
14
15
0
15
>> d(4) =
d =
16
= 7
0
3
6
11
1
4
7
0
0
7
9
15
10
11
16
11
16
0
Antes de achar que isto e estranho, observe que este comportamento esta coerente com o fato do MATLAB nao requisitar a declaracao de variaveis: se e
permitido fazer k = 3 sem avisar o MATLAB que k e um escalar, tambem deve
ser possvel fazer k(2,4) = 3 sem avisar que e uma matriz. E se depois requisitarmos k(3,6) = 6.2, o MATLAB aloca dinamicamente mais espaco para
k. Por quest
oes de desempenho, e recomendavel evitar esta alocacao dinamica
15
MATLAB ABC
v0.2 nov.2013
p
2
3.5
q
4
8.9
v = [p; r]
9.3
3.7
4.4
3.5
z = [s; p]
ERRO
x = [s u]
r
6
t = [r p]
6
3.5
9.3
3.5
3.7
8.9
4.4
8.9
7
y = [s r]
u = [p; q; q]
9.3
3.5
3.7
8.9
4.4
8.9
ERRO
9.3
3.7
4.4
3.5
w = [z r]
9.3
3.7
4.4
3.5
MATLAB ABC
v0.2 nov.2013
indexac
ao linear (linear indexing). Os ndices sao incrementados ao longo das
colunas, uma vez que o MATLAB sempre armazena as estruturas de dados em
uma u
nica coluna, independente do seu formato original. Por exemplo:
>> a(5)
ans =
3
Ainda falta criar um array. O operador dois pontos ira nos auxiliar nesta
tarefa e em muitas outras.
3.2
3.3
Func
oes para criar, concatenar e reformatar matrizes
3.4
Func
oes para obter as dimens
oes das matrizes
Pedindo ajuda
ATENC
AO
Este documento MATLAB ABC esta
em elaboracao. Por enquanto e so. Mas
n
ao fique desapontado, por a ha muitas outras boas opcoes de leitura para o
banheiro.
Refer
encias
[1] Stephen J. Chapman. Programaca
o em MATLAB para engenheiros. CENCAGE Learning, 2a edition, 2010.
[2] Carlos Eugenio Vendrametto Junior; Selma Helena de Vasconcelos Arenales. MATLAB: fundamentos e programac
ao. 2004.
[3] Amos Gilat. MATLAB com aplicac
oes em engenharia. Bookman, 2a edition, 2006.
[4] MathWorks.
Creating
and
concatenating
matrices.
http://www.mathworks.com/help/matlab/math/
creating-and-concatenating-matrices.html?s_tid=doc_
12b, Oct. 2012.
[5] MathWorks.
Ducumentation center - introducing mex-files.
http://www.mathworks.com/help/matlab/matlab_external/
introducing-mex-files.html, Sep. 2012.
17
MATLAB ABC
[6] MathWorks.
Image processing toolbox overview.
mathworks.com/products/image/, Sep. 2012.
v0.2 nov.2013
http://www.
18