Professional Documents
Culture Documents
MATLAB ABC
Introdução ao MATLAB
Gustavo B. Borba
1 1001 utilidades
Todos lembramos do conhecido slogan 1001 utilidades
das palhas de aço Bombril, apesar de nunca alguém
ter tentado catalogar cada uma delas. É claro que
algumas são clássicas. Por exemplo: atear fogo e gi-
rar para animar a festa junina, fazer fogo dando um
curto-circuito na tomada (não tente fazer isso), en-
gatar na anteninha da tv achando que vai melhorar
a recepção e até limpar coisas. Não há dúvidas de
que o Bombril é realmente versátil e as donas de casa
adoram ter sempre um por perto.
Se você já usou o MATLAB ou sabe o que é, já deve ter entendido porque
estamos falando do Bombril. Segundo a MathWorks, empresa que desenvolve
o MATLAB, ele se trata de um ambiente para computação cientı́fica. Segundo
os engenheiros, programadores, cientistas e outros usuários, o MATLAB é uma
indispensável ferramenta para 1001 utilidades e sempre é bom tê-lo por perto.
Só pra ter uma idéia, em uma busca rápida na amazon.com por livros de áreas
especı́ficas contendo MATLAB no tı́tulo, pode-se encontrar exemplares de pelo
menos 18 áreas:
Processamento de imagens Métodos numéricos Economia
Reconhecimento de padrões Exploração de dados Álgebra linear
Processamento de sinais digitais Telecomunicações Estatı́stica
Sinais e sistemas Eletromagnetismo Máquinas elétricas
Processamento de biosinais Controle Mecânica
Aprendizagem de máquina Oceanografia Neurociências
Isso sem falar nos inúmeros livros especı́ficos sobre MATLAB, como os da
lista a seguir, disponı́veis na biblioteca da UTFPR.
1
MATLAB ABC v0.2 nov.2013
2
MATLAB ABC v0.2 nov.2013
2 2+2
Se estivéssemos estudando uma nova linguagem de programação (tudo bem,
de certa forma estamos), provavelmente nosso primeiro programa escreveria
na tela a mensagem Hello, world , e só. Quem já estudou C deve lembrar
do printf("Olá, mundo");. No MATLAB, talvez o mais coerente seja
transformar o Imprimindo ‘Hello, world’ na tela em algo como Calculando 2+2.
A seguir, são descritas as três maneiras básicas de calcular 2+2, ou melhor, de
requisitar comandos ao MATLAB: através da Command Window, através de
um script ou através de uma função.
3
MATLAB ABC v0.2 nov.2013
D
menu Desktop, verifique se as seguintes janelas estão
ativas (com ): Command Window, Command His-
tory, Current Directory, Workspace, Editor, Variable
Editor, Titles.
4
MATLAB ABC v0.2 nov.2013
>> 2+2
ans =
4
5
MATLAB ABC v0.2 nov.2013
Editor: é nesta janela que você vai escrever os seus programas para MATLAB.
6
MATLAB ABC v0.2 nov.2013
MATLAB. Antes desse próximo passo, atenção para uma informação daquelas
que geralmente só aparecem nas entrelinhas: no MATLAB, os programas
são chamados de scripts. Um script MATLAB é um arquivo .m com vários
comandos em sequência. Para não restarem dúvidas: ao ser executado o script,
os comandos nele contidos são executados na sequência em que aparecem. Afinal
de contas, um script é um programa.
Vamos elaborar um script para realizar os mesmos cálculos sofisticados que
realizamos anteriormente.
Passo 1. Na janela Editor do desktop do MATLAB, requisite um novo arquivo
M (M-File) clicando no ı́cone de uma folha em branco (New M-File). Se
preferir, também é possı́vel fazer isto no menu File → New → Blank M-
File, ou ainda através do atalho Ctrl+N. Dentro da janela Editor digite
a mesma sequência de comandos. Por enquanto, não se preocupe com os
highlights em cor laranja.
Uma vez que o script fez a mesma coisa que os comandos que havı́amos digi-
tado anteriormente na Command Window, não vimos alteração no workspace.
Mas você deve ter notado que os resultados foram mostrados na Command Win-
dow. Se não, pode rodar o script à vontade, n + 1 vezes. Mas ao invés de ir
7
MATLAB ABC v0.2 nov.2013
8
MATLAB ABC v0.2 nov.2013
clear all
c = a+b;
o MATLAB retornará um erro ao executá-lo. A mensagem de erro é
??? Undefined function or variable ’a’.
a = 4;
b = 5;
c = a+b;
9
MATLAB ABC v0.2 nov.2013
s = k1+k2;
end
Passo 2. Salve a função. Observe que o MATLAB sugere um arquivo .m com
o mesmo nome da função. Neste caso, meuPrimFun.m.
Passo 3. Chame a função a partir da Command Window. Deve-se inserir os
parâmetros de entrada e a variável de saı́da:
>> d = meuPrimFun(4,5)
d =
7
Ou então podemos passar para a função duas variáveis, ao invés de duas
constantes:
>> p = 4;
>> q = 5;
>> e = meuPrimFun(p,q)
e =
7
10
MATLAB ABC v0.2 nov.2013
3 Matrix laboratory
Já que MATLAB significa MATrix LABoratory, é de se imaginar que a estru-
tura de dados do tipo matriz desempenhe um papel de destaque no ambiente.
Inclusive, que há quem diga que “tudo no MATLAB é tratado como matriz”.
Faz sentido [4].
11
MATLAB ABC v0.2 nov.2013
Array 3-por-3-por-2
a(3,1) a(3,2) a(3,3) c(3)
e(1,1,2) e(1,2,2) e(1,3,2)
Matriz 3-por-3
c(4)
e(2,1,2) e(2,2,2) e(2,3,2)
Vetor coluna
d e(1,1,1) e(1,2,1) e(1,3,1) de 4 elementos
(matriz 4-por-1)
e(3,1,1) e(3,2,2) e(3,3,2)
Escalar
(matriz 1-por-1) e(2,1,1) e(2,2,1) e(2,3,1)
Figura 3: Exemplos de estruturas de dados do tipo matriz, escalar, vetor linha, vetor
coluna e array multidimensional. Os números dentro dos parênteses são os ı́ndices
para o acesso dos elementos. A estrutura básica sempre é a matriz. O array multi-
dimensional é uma matriz com mais de duas dimensões. Neste exemplo, três: linhas,
colunas e páginas.
Para criar uma matriz, o método mais simples é utilizando o operador col-
chetes:
>> 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 são separados por espaço. O ponto e vı́rgula
inicia uma nova linha. Também é possı́vel separar os elementos de uma mesma
linha por vı́rgula, mas a notação mais utilizada é com espaços.
12
MATLAB ABC v0.2 nov.2013
a 3x3 72 double
b 1x4 32 double
c 4x1 32 double
d 1x1 8 double
O detalhe interessante é que o escalar d também é uma matriz, de dimensões
1x1.
Para indexar (acessar ou endereçar) os elementos das matrizes, utiliza-se a
notação
nome(ı́ndice_da_linha,ı́ndice_da_coluna)
Como vetores possuem uma única dimensão, a notação é
nome(ı́ndice)
Lembre que no MATLAB o ı́ndice do primeiro elemento é 1 (one-based indexing.
A contraparte é o zero-based indexing). Por exemplo, para obter o elemento da
segunda linha e terceira coluna da matriz a:
>> a(2,3)
ans =
1
13
MATLAB ABC v0.2 nov.2013
14
MATLAB ABC v0.2 nov.2013
13
14
15
>> 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, ATENÇÃO! Ao atribuir um valor a um elemento fora das dimensões
máximas da matriz, as dimensões da matriz são ampliadas para acomodar o
novo elemento e os elementos que não foram especificados recebem valor zero.
Lembre que todas as estruturas são consideradas matrizes, inclusive um escalar.
Por exemplo:
>> a(3,4) = 7
a =
-1 0 1 0
2 3 4 0
5 6 7 7
>> b(5) = 11
b =
8 9 10 11 11
>> c(6) = 15
c =
12
13
14
15
0
15
>> d(4) = 16
d =
16 0 0 16
Antes de achar que isto é estranho, observe que este comportamento está co-
erente com o fato do MATLAB não requisitar a declaração de variáveis: se é
permitido fazer k = 3 sem avisar o MATLAB que k é um escalar, também deve
ser possı́vel fazer k(2,4) = 3 sem avisar que é uma matriz. E se depois requi-
sitarmos k(3,6) = 6.2, o MATLAB aloca dinamicamente mais espaço para
k. Por questões de desempenho, é recomendável evitar esta alocação dinâmica
15
MATLAB ABC v0.2 nov.2013
4 0 8.9 1
ERRO
16
MATLAB ABC v0.2 nov.2013
4 Pedindo ajuda
ATENÇÃO
Referências
[1] Stephen J. Chapman. Programação em MATLAB para engenheiros. CEN-
CAGE Learning, 2a edition, 2010.
[2] Carlos Eugenio Vendrametto Junior; Selma Helena de Vasconcelos Arena-
les. MATLAB: fundamentos e programação. 2004.
[3] Amos Gilat. MATLAB com aplicações em engenharia. Bookman, 2a edi-
tion, 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 v0.2 nov.2013
18