You are on page 1of 18

Universidade Tecnol

ogica Federal do Paran


a UTFPR
Departamento Acad
emico de Eletr
onica DAELN

MATLAB ABC
Introduca
o ao MATLAB

Gustavo B. Borba

1001 utilidades

Todos lembramos do conhecido slogan 1001 utilidades


das palhas de aco Bombril, apesar de nunca alguem
claro que
ter tentado catalogar cada uma delas. E
algumas sao classicas. Por exemplo: atear fogo e girar para animar a festa junina, fazer fogo dando um
curto-circuito na tomada (nao tente fazer isso), engatar na anteninha da tv achando que vai melhorar
a recepcao e ate limpar coisas. Nao ha d
uvidas de
que o Bombril e realmente versatil e as donas de casa
adoram ter sempre um por perto.
Se voce j
a usou o MATLAB ou sabe o que e, ja deve ter entendido porque
estamos falando do Bombril. Segundo a MathWorks, empresa que desenvolve
o MATLAB, ele se trata de um ambiente para computaca
o cientfica. Segundo
os engenheiros, programadores, cientistas e outros usuarios, o MATLAB e uma
indispens
avel ferramenta para 1001 utilidades e sempre e bom te-lo por perto.
S
o pra ter uma ideia, em uma busca rapida na amazon.com por livros de areas
especficas contendo MATLAB no ttulo, pode-se encontrar exemplares de pelo
menos 18
areas:
Processamento de imagens
Reconhecimento de padr
oes
Processamento de sinais digitais
Sinais e sistemas
Processamento de biosinais
Aprendizagem de m
aquina

Metodos numericos
Exploracao de dados
Telecomunicacoes
Eletromagnetismo
Controle
Oceanografia

Economia

Algebra
linear
Estatstica
Maquinas eletricas
Mecanica
Neurociencias

Isso sem falar nos in


umeros livros especficos sobre MATLAB, como os da
lista a seguir, disponveis na biblioteca da UTFPR.
Programac
ao em MATLAB para engenheiros, Stephen J. Chapman, 2010
[1]. Na estante da biblioteca: 005.36 C466p 2. ed.
MATLAB 7: fundamentos, Elia Yathie Matsumoto, 2006 [9]. Na estante
da biblioteca: 519.40285 M434mf 2.ed.
MATLAB: fundamentos e programac
ao, Carlos Eugenio Vendrametto Junior e Selma Helena de Vasconcelos Arenales, 2004 [2]. Na estante da
biblioteca: 005.369 V453m.

MATLAB ABC

v0.2 nov.2013

MATLAB com aplicac


oes em engenharia, Amos Gilat, 2006 [3]. Na estante
da biblioteca: 005.36 G463m 2. ed.
Essential MATLAB for engineers and scientists, Brian D. Hahn and D. T.
Valentine, 2007 [13]. Na estante da biblioteca: 620.00285 H148e 3. ed.
Introduction to MATLAB 7 for engineers, William J. Palm III, 2005 [10].
Na estante da biblioteca: 005.369 P171i.

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

4. Ferramentas para a construca


o de aplicaco
es com interfaces gr
aficas personalizadas.
5. Func
oes para a integrac
ao de algoritmos basados em MATLAB com aplicac
oes
e linguagens externas, como C, Java, .NET e Microsoft Excel.
Observe que a caracterstica 1 menciona tambem aplicac
oes. Aqui, elas sao
mencionadas com mais enfase. Embora nao tenhamos a necessidade de utilizar
estes recursos nesta disciplina, e interessante conhece-los para adquirirmos uma
boa vis
ao geral do MATLAB. Vamos definir uma aplicacao como um programa
que n
ao necessita de um ambiente especfico para executar (o sistema operacional n
ao conta!), como o Microsoft Word. Um programa convencional para
MATLAB n
ao e uma aplicac
ao porque so roda dentro do MATLAB. Porem,
e possvel transformar programas para MATLAB em aplicacoes, utilizando inclusive interfaces gr
aficas, isto e, janelas com botoes, campos para a entrada
de dados e visualizac
ao de resultados. Alem disso, e possvel integrar um programa do MATLAB com c
odigos escritos em outras linguagens (C, Java, etc.)
ou com outras aplicac
oes. Em outras palavras, e possvel, a partir do ambiente
MATLAB, fazer o seu c
odigo comunicar-se com codigos em outras linguagens
e tambem com aplicac
oes (outros programas). Muitos programadores utilizam
o recurso da chamada de c
odigos em C (chamados de arquivos MEX no MATLAB [5]) por uma quest
ao de desempenho caso uma determinada parte do
programa MATLAB seja considerada muito lenta, e possvel escrever esta parte
em C para substituir a parte correspondente do programa MATLAB.

2+2

Se estivessemos estudando uma nova linguagem de programacao (tudo bem,


de certa forma estamos), provavelmente nosso primeiro programa escreveria
na tela a mensagem Hello, world , e so. Quem ja estudou C deve lembrar
do printf("Ol
a, mundo");. No MATLAB, talvez o mais coerente seja
transformar o Imprimindo Hello, world na tela em algo como Calculando 2+2.
A seguir, s
ao descritas as tres maneiras basicas de calcular 2+2, ou melhor, de
requisitar comandos ao MATLAB: atraves da Command Window, atraves de
um script ou atraves de uma func
ao.

2.1

Calculando 2+2 na Command Window

Considerando que o MATLAB ja foi instalado, vamos abr-lo. O ambiente que


voce ve e chamado de desktop do MATLAB. O desktop default (padrao) e o
mostrado na Figura 1. Vamos conhecer cada um dos principais elementos do
desktop e aproveitar para matar a curiosidade a respeito do resultado de 2+2.

MATLAB ABC

DICA

v0.2 nov.2013

Para colocar o desktop na configuracao default: menu


Desktop Desktop Layout Default. Ainda no
menu Desktop, verifique se as seguintes janelas estao
ativas (com ): Command Window, Command History, Current Directory, Workspace, Editor, Variable
Editor, Titles.

Figura 1: Configuraca
o default do desktop do MATLAB e cada um dos seus elementos.

neste diretorio que


Current Directory: e o diretorio (pasta) de trabalho. E
4

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

possvel configurar O MATLAB para que, logo ao ser


E
aberto, o Current Directory seja o da sua preferencia.
Para isso, clique com o botao direito no cone do MATLAB no desktop do Windows e escolha a opcao Properties. Na janela MATLAB version Properties, edite
o campo Start in.

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.

Workspace: apresenta todas as variaveis criadas, tambem chamado de base


Workspace. Observe na linha de comando que o resultado de 2+2 foi armazenado automaticamente em uma variavel com o nome ans (answer). Assim,
o Workspace contem agora uma variavel chamada ans, cujo conte
udo e 4. Se
inserirmos agora 2+3, por exemplo, o conte
udo da variavel ans sera sobrescrita
com o valor 5. Ent
ao, o mais prudente e armazenar os resultados dos comandos
nas nossas pr
oprias vari
aveis. Por exemplo:
>> a = 2+2
a =
4
>> b = 2+3
b =
5
Command History: armazena o historico dos comando inseridos. Na Command Window, e possvel navegar pelos comando inseridos utilizando as teclas
<> e <>.
Variable Editor: permite visualisar e editar o conte
udo das variaveis. Ao
dar dois cliques sobre o nome da variavel no Workspace, o Variable Editor e
aberto automaticamente e o conte
udo da variavel pode ser editado.
Editor: e nesta janela que voce vai escrever os seus programas para MATLAB.

2.2

Calculando 2+2 em um script

Ate o momento, sabemos explicar o que e o MATLAB e como usa-lo para


calcular 2+2 na linha de comando, mas ainda nao fizemos um programa para
6

MATLAB ABC

v0.2 nov.2013

MATLAB. Antes desse pr


oximo passo, atencao para uma informacao daquelas
que geralmente s
o aparecem nas entrelinhas: no MATLAB, os programas
s
ao chamados de scripts. Um script MATLAB e um arquivo .m com varios
comandos em sequencia. Para nao restarem d
uvidas: ao ser executado o script,
os comandos nele contidos s
ao executados na sequencia em que aparecem. Afinal
de contas, um script e um programa.
Vamos elaborar um script para realizar os mesmos calculos 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, tambem e possvel fazer isto no menu File New Blank MFile, ou ainda atraves do atalho Ctrl+N. Dentro da janela Editor digite
a mesma sequencia de comandos. Por enquanto, nao se preocupe com os
highlights em cor laranja.

Passo 2. Salve o script, clicando no cone do disquete ou no menu File Save,


ou ainda atraves do atalho Ctrl+S. Vamos salvar com o nome meuPrimScript. Como se trata de um script, o MATLAB sugere automaticamente
a extenc
ao .m. Observe que o arquivo meuPrimScript.m, depois de salvo,
aparece na janela Current Directory.
Passo 3. Execute o script, digitando meuPrimScript na Command Window.

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

interessante manter as configuracoes padrao do auE


tosave do MATLAB. Se for necessario altera-las, o caminho e menu File Preferences. . .. Na janela Preferences, clique em Editor/Debugger Autosave do lado
esquerdo.

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

ate a Command Window e escrever meuPrimScript, basta estar com a janela


Editor ativada (selecionada) e usar a tecla de atalho F5. Isto e o mesmo que
clicar no cone que lembra uma tecla play da janela Editor, o Save and run. Observe tambem que, ao fazer alguma alteracao no conte
udo do script, o nome do
arquivo presente no topo da janela Editor recebe um * no final (asterstico,
como dizem l
a na minha terra natal). Isto indica que as suas alteracoes nao
foram salvas. Ent
ao, antes de executar o seu script, sempre e bom salva-lo. O
metodo mais pr
atico e usando o Save and run a partir do atalho F5.
Na maioria das vezes n
ao e necessario mostrar os resultados de todos os
comandos na Command Window. Inserindo um ; apos o comando, ele e executado mas a exibic
ao do resultado na Command Window nao e realizada. Teste
o ; no nosso script:
a = 2+2;
b = 2+3;
Antes de executar observe que, ao inserir o ;, o highlight em cor laranja
sobre o = desaparece. Na verdade, o MATLAB estava nos oferecendo esta dica
todo o tempo. Note que h
a um traco cor laranja na borda direita do Editor,
na linha sem o ;. Estes tracos sao Warnings (avisos, advertencias). Ao passar
o mouse sobre o Warning, a mensagem correspondente e exibida, como ilustra
a Figura 2. Para limpar a Command Window e ter certeza de que o script
n
ao mostrou nenhuma sada, basta digitar o comando clc (Clear Command
Window). Digite clc na Command Window e depois rode novamente o script.

Figura 2: Os tracos em cor laranja na borda direira do Editor s


ao os Warnings. Ao
passar o mouse a mensagem e mostrada.

Como pudemos observar, as variaveis criadas por um script vao para o


Workspace e, se no Workspace ja existir uma variavel com o mesmo nome,
ela ser
a sobrescrita. Ao mesmo tempo, as variaveis que estao no Workspace
podem ser acessadas a partir de um script. Vamos aproveitar as variaveis a e
b do workspace e testar esta afirmacao. Apague o conte
udo do nosso script,
transformando-o em:
c = a+b;
Ap
os execut
a-lo, existir
a uma variavel c com valor 9 no Workspace. Isto
s
o ocorreu porque o script acessou as variaveis a (valor 4) e b (valor 5) que j
a
estavam no workspace.
Assim, uma pr
atica recomendavel e limpar o Workspace logo no incio do
script, para evitar confus
oes. O comando para excluir todas as variaveis do
Workspace e clear. Este comando pode ser seguido por nomes de variaveis,
caso se deseje excluir vari
aveis especficas. Por exemplo: clear a b, enquanto
8

MATLAB ABC

v0.2 nov.2013

clear all e o mesmo que apenas clear. Se inserirmos um clear all no


incio do script atual
clear all
c = a+b;
o MATLAB retornar
a um erro ao executa-lo. A mensagem de erro e
??? Undefined function or variable a.
Error in ==> meuSegScript at 2
c = a+b;
Acontece que requisitamos uma soma das variaveis a e b, mas as variaveis
n
ao existem. Ent
ao, o estranho mesmo seria se o MATLAB n
ao retornasse um
possvel clicar sobre o erro na Command Window para ir diretamente
erro. E
para a linha do script que gerou o erro. Este e um recurso interessante para a
depurac
ao de scripts mais extensos.
Para deixar nosso meuPrimScript.m funcional:
clear all
a = 4;
b = 5;
c = a+b;

2.3

Calculando 2+2 em uma func


ao

Direto ao ponto: uma func


ao e um bloco de codigo com um nome. Pode receber e retornar par
ametros e ser chamada de diferentes partes de um programa.
Simples e genial, pois o c
odigo encapsulado na forma de uma funcao pode ser
reutilizado quando necess
ario, ao inves de ser repetido dentro do programa, o
que seria mais trabalhoso e ocuparia mais espaco em memoria. Alem disso, as
func
oes s
ao um recurso valioso para o gerenciamento da complexidade de um
programa. As func
oes podem ser criadas (ou definidas) pelo usuario denominadas user-defined, ou j
a estarem predefinidas no ambiente denominadas
built-in.
2.3.1

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.

Ao inves de calcularmos o valor da soma de duas constantes (2+2), vamos


criar uma func
ao para calcular a soma de dois n
umeros quaisquer.

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

Conforme mencionado anteriormente, o MATLAB disponibiliza um grande n


umero
de func
oes para diferentes aplicacoes. Como um exemplo simples, vamos utilizar
a func
ao exp, que calcula o valor de ex . Na Command Window:
>> f = exp(1)
f =
2.718281828459046
Para acessar a documentacao da funcao a partir da Command Window,
pode-se utilizar o comando help exp. Neste caso, a descricao e mostrada na
forma de texto, na pr
opria Command Window. Para acessar a GUI (Graphical
User Interface) do Help do MATLAB a partir da Command Window, o comando
e doc exp. Prefira sempre o Help com a GUI, ja que e muito mais agradavel
e completo.

10

MATLAB ABC

v0.2 nov.2013

Segundo a nossa terminologia, todas as funcoes predefinidas do MATLAB


s
ao denominadas built-in (a contraparte de user-defined ). Em geral, a literatura
sobre o MATLAB adota esta mesma terminologia. Porem, se voce encontrar
um matlaber mais conservador por a, pode ser que ele te explique que existem
tres tipos de func
oes predefinidas no MATLAB. De maneira simplificada:
Func
oes built-in: a MathWorks nao disponibiliza o codigo fonte destas
func
oes. A func
ao exp e um exemplo. Para visualizar as informacoes das
func
oes do MATLAB, pode-se usar o comando which seguido do nome
da func
ao. Digite o comando a seguir e observe o retorno. Alem do campo
built-in, e possvel saber o caminho da funcao.

>> which exp


built-in (C:\Program Files\MATLAB\toolbox\matlab\
elfun\@double\exp)
Func
oes do plain MATLAB : este termo tambem e uma convencao adotada
pelos usu
arios do MATLAB. Plain MATLAB e o MATLAB basico, aquele
distribudo quando adquire-se somente o MATLAB e nenhuma toolbox
extra ou add-on. A funcao mean para o calculo da media e um exemplo
de func
ao do plain MATLAB.

>> which mean


C:\Program Files\MATLAB\R2009a\toolbox\matlab\
datafun\mean.m
Func
oes pertencentes a uma toolbox : sao as funcoes que fazem parte de al importante
gum m
odulo para aplicacao especfica, denominado toolbox. E
lembrar que, se o seu programa MATLAB utiliza alguma destas funcoes,
ele s
o poder
a ser executado em uma versao do MATLAB que tambem
possua a toolbox em questao. A funcao imread para ler um arquivo de
imagem e um exemplo.

>> which imread


C:\Program Files\MATLAB\R2009a\toolbox\matlab\
imagesci\imread.m
O comando ver lista as toolboxes disponveis no seu MATLAB.

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

Matriz, vetor e array

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)

Vetor linha de 4 elementos


(matriz 1-por-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

>> a = [-1,0,1; 2,3,4; 5,6,7]


a =
-1
0
1
2
3
4
5
6
7
Ent
ao, um vetor linha e
>> b = [8 9 10 0]
b =
8
9
10

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

O detalhe interessante e que o escalar d tambem e uma matriz, de dimensoes


1x1.
Para indexar (acessar ou enderecar) os elementos das matrizes, utiliza-se a
notac
ao
nome(
ndice_da_linha,
ndice_da_coluna)
Como vetores possuem uma u
nica dimensao, a notacao e
nome(
ndice)
Lembre que no MATLAB o ndice do primeiro elemento e 1 (one-based indexing.
A contraparte e 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

O terceiro elemento dos vetores b e c:


>> b(3)
ans =
10
>> c(3)
ans =
14
Obviamente, tambem e possvel atribuir novos valores nas posicoes desejadas:
>> a(3,3) = 7
a =
-1
0
2
3
5
6
>> b(4) = 11
b =
8
9
>> c(4) = 15
c =
12
13
14
15

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

Assim, um vetor linha pode ser transformado facilmente em um vetor coluna e


vice-versa:
>> bt = b
bt =
8
9
10
11
>> ct = c
ct =
12
13

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

dentro de um loop e pre-alocar todo o espaco necessario para a matriz. Mas


isso e assunto para mais tarde.
O operador colchete pode ser utilizado ainda para concatenar matrizes. A
concatenac
ao s
o e permitida entre dimensoes equivalentes. A Figura 4 ilustra diferentes possibilidades de concatenacao e situacoes nas quais um erro e
retornado, pois as dimens
oes nas quais a concatenacao e requisitada nao sao
equivalentes. Por exemplo, as matrizes p e r nao podem ser concatenadas verticalmente porque n
ao possuem o mesmo n
umero de colunas. As matrizes s e v
transposta n
ao podem ser concatenadas horizontalmente porque nao possuem
o mesmo n
umero de linhas.
s

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

Figura 4: Exemplos de concatenac


ao de matrizes usando o operador colchetes. p, q,
r e s s
ao as matrizes originais, t, u, v, x, y, z e w s
ao resultados das concatenac
oes.
v e y retornam erro pois as dimens
oes nas quais a concatenaca
o e requisitada n
ao s
ao
equivalentes.

Indexar vetores com um u


nico ndice e absolutamente logico. Mas como o
MATLAB adora matrizes, a notacao nome(linha,coluna) e aceita tambem
para a indexac
ao de vetores, embora provavelmente voce nao va utilizar esta
indexac
ao, j
a que e redundante. De qualquer forma, basta lembrar que uma das
dimens
oes (linha ou coluna) e sempre igual a 1:
>> b(1,5)
ans =
11
>> c(5,1)
ans =
0
Como o MATLAB e muito versatil, tambem e possvel indexar matrizes
com a notac
ao nome(
ndice). Pode parecer pouco logico, mas e um recurso
utilizado, como veremos mais adiante. Este tipo de indexacao e chamada de
16

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

Operador dois pontos : (colon)

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.

[7] MathWorks. Matlab key features. http://www.mathworks.com/


products/matlab/description1.html, Sep. 2012.
[8] MathWorks. Products and services. http://www.mathworks.com/
products/, Sep. 2012.
[9] Elia Yathie Matsumoto. MATLAB 7: fundamentos. Erica, 2006.
[10] William J. Palm III. Introduction to MATLAB 7 for engineers. McGrawHill, 2005.
[11] Yuri Rojan. Learn Programming and Mathematics with MATLAB. Yuri
Rojan, 2005.
[12] Khalid Sayood. Learning Programming using MATLAB (Synthesis Lectures
on Electrical Engineering). 2006.
[13] Brian D. Hahn; D. T. Valentine. Essential MATLAB for engineers and
scientists. Butterworth Heinemann, 3rd edition, 2007.
[14] Wikipedia. Data visualization. http://en.wikipedia.org/wiki/
Data_visualization, Sep. 2012.

18

You might also like