Você está na página 1de 44

Curso de Introduo ao MATLAB

SUMRIO
1 - Apresentao do software ..................................................................................................................................................... 2
2 - Conhecendo o ambiente do aplicativo .................................................................................................................................. 2
3 - Funes bsicas ...................................................................................................................................................................... 3
4 - Operaes com vetores .......................................................................................................................................................... 5
5 - Operaes com matrizes........................................................................................................................................................ 8
6 - Nmeros complexos ............................................................................................................................................................. 11
7 - Noes gerais de polinmios e sistemas de equaes lineares .......................................................................................... 12
7.1 Polinmios................................................................................................................................................................... 12
7.1.1 - Definindo-se um polinmio no MATLAB ......................................................................................................... 12
7.1.2 - Clculo das razes de um polinmio ................................................................................................................. 13
7.1.3 - Calculando os coeficientes de um polinmio partindo de suas razes ......................................................... 13
7.1.4 - Visualizando as razes de um polinmio. ......................................................................................................... 13
7.1.5 - Operaes com polinmios ................................................................................................................................ 15
7.2 - Sistemas de equaes lineares ................................................................................................................................... 16
7.3 - Encontrando a melhor curva partindo de dados experimentais ............................................................................ 17
8 Anlise Numrica ................................................................................................................................................................ 18
8.1 Integrao .................................................................................................................................................................... 18
8.2 Diferenciao .............................................................................................................................................................. 19
8.3 Equaes Diferenciais ............................................................................................................................................... 19
9 - Grficos em 2D..................................................................................................................................................................... 20
9.1 - Funes grficas elementares .................................................................................................................................... 20
9.2 - Plotando um vetor ....................................................................................................................................................... 21
9.3 - Plotando um nmero complexo ................................................................................................................................ 21
9.4 - Plotando uma matriz ................................................................................................................................................... 21
9.5 - Plotando um vetor em funo de outro .................................................................................................................... 22
9.6 - Plotagens combinadas ................................................................................................................................................ 22
9.6.1 - Usando a mesma linha de comando.................................................................................................................. 22
9.6.2 - Adicionando linhas a um grfico j existente .................................................................................................. 23
9.7 - Ajustando os limites de escala .................................................................................................................................. 23
9.7.1 - Corrigindo distores ......................................................................................................................................... 23
9.8 - Escondendo eixos e escalas ....................................................................................................................................... 23
9.9 - Apagando figuras da janela grfica .......................................................................................................................... 23
9.10 - Trabalhando com mltiplas janelas grficas ......................................................................................................... 24
9.11 - Construindo subgrficos .......................................................................................................................................... 24
9.12 - Ampliando a visualizao grfica - ZOOM .......................................................................................................... 24
9.13 - Plotando funes com o MATLAB ....................................................................................................................... 25
9.14 Outras formas de grficos ....................................................................................................................................... 25
9.14.1 - Grficos de barras............................................................................................................................................. 25
9.14.2 - Escala logartmica ............................................................................................................................................ 26
9.14.3 - Grficos de variveis discretas ....................................................................................................................... 26
9.14.4 - Grficos em escada ........................................................................................................................................... 27
9.14.5 - A Funo compass............................................................................................................................................. 27
10 - Programando com o MATLAB ........................................................................................................................................ 28
10.1 - Operaes relacionais e lgicas .............................................................................................................................. 28
10.2 - Rotinas especiais de programao .......................................................................................................................... 30
10.3 - Estruturas de controle repetitivas (loops) .............................................................................................................. 30
10.4 - Estrutura de controle condicional ........................................................................................................................... 33
10.5 - Construindo funes com o MATLAB ................................................................................................................. 36
10.6 - Debugando com o MATLAB.................................................................................................................................. 37
11 - Exerccios............................................................................................................................................................................ 39
12 - Referncias bibliogrficas ................................................................................................................................................. 43
13 Anexo: Listagem de Comandos........................................................................................................................................ 44

PET-EEL / 2000

Curso de Introduo ao MATLAB

1 - Apresentao do software
O software MATLAB (MATLAB marca registrada de The MathWorks, Inc.) foi originalmente
desenvolvido para ser um "Laboratrio para estudo de Matrizes", porm atualmente suas capacidades ultrapassam em
muitas vezes as possibilidades de sua verso original. Desta forma, o MATLAB hoje um dos principais sistemas
interativos e uma das mais importantes linguagens de programao para computao tcnica e cientfica em geral.
Sua primeira verso foi escrita na Universidade do Novo Mxico e na Universidade de Stanford, no final da
dcada de 70, e destinava-se a cursos de teoria matricial, lgebra linear e anlise numrica. Hoje, o MATLAB integra
anlise numrica, clculo com matrizes, processamento de sinais, imagens, sons, e construo de grficos em ambiente
fcil de usar onde problemas e solues so expressos como eles so escritos matematicamente, ao contrrio dos
mtodos de programao tradicional.
Os usos tpicos do MATLAB incluem:
Clculos matemticos;
Desenvolvimento de Algoritmos;
Modelagem, simulao e confeco de prottipos;
Anlise, explorao e visualizao de dados;
Grficos cientficos e de engenharia;
Desenvolvimento de aplicaes, incluindo a elaborao de interfaces grficas com o usurio.
tambm um sistema interativo cujo elemento bsico de informao uma matriz que no requer
dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em apenas uma frao do tempo
que se gastaria para escrever um programa semelhante em outra linguagem, como o Pascal e o Fortran.

2 - Conhecendo o ambiente do aplicativo


A rea de trabalho do MATLAB assemelha-se bastante ao ambiente Windows padro, com a diferena que o
programa oferece uma linha de prompt (como no antigo MS-DOS), onde o usurio pode digitar os comandos.
Os menus do MATLAB so os seguintes:
(a) Menu FILE: permite que o usurio abra, feche e salve arquivos ou a rea de trabalho. Permite ainda, que
se alterem as configuraes do software, que se envie arquivos para impresso, que se abra o editor de
janelas e se encerre o programa;
(b) Menu EDIT: possui as opes padro do Windows, tais como undo, copy, paste. Alm disso, permite que
se limpe a rea de trabalho;
(c) Menu WINDOW: menu que permite a alternncia entre as vrias janelas abertas durante a execuo do
programa;
(d) Menu HELP: contm os tpicos de ajuda e informaes gerais sobre o software.
Na barra de menu, dois botes se destacam. O primeiro o boto Worksapace Browser, que abre uma janela
contendo a relao de todas as variveis, seus nomes, suas classes e seus tamanhos. O segundo boto o Path Browser,
que permite que um novo diretrio seja adicionado ao path do MATLAB.

PET-EEL / 2000

Curso de Introduo ao MATLAB

A rea de trabalho (prompt), serve para entrada de comandos e parmetros. No h a necessidade de


declararmos qualquer varivel no MATLAB. A varivel (ou expresso) passa a existir a partir do momento em que
definida pelo usurio, em tempo real de utilizao. Um exemplo de definio de uma varivel numrica segue abaixo:
x = 3.1416927
Uma varivel tambm pode guardar um string, como mostrado abaixo:
y = teste
Observe que a diferenciao entre um string e uma funo feita apenas pelos apstrofos.
Ao necessitarmos de ajuda sobre qualquer funo do MATLAB, basta que digitemos help nome do comando
ou funo. Este procedimento mostra na rea de trabalho uma breve explicao sobre o comando em questo. Por
exemplo, experimente digitar help help.
As mensagens de erro, quando acontecem, tentam explicar os motivos pelo qual o erro ocorreu. Por exemplo:
hep
??? Undefined function or variable 'hep'.
As regras de precedncia aritmtica so vlidas tambm no MATLAB, ou seja, pela ordem temos: potenciao
multiplicao e diviso adio e subtrao. Os smbolos utilizados para representao destas operaes so:
^
/
\
*
+

Exponenciao
Diviso direita
Diviso esquerda
Multiplicao
Adio
Subtrao
Transposio

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem o mesmo valor
numrico, isto , 0,25. Parnteses so usados em sua forma padro para alterar o mesmo a precedncia usual dos
operadores aritmticos.
NOTA: O MATLAB faz distino entre os caracteres maisculos e minsculos.

3 - Funes bsicas
As tabelas abaixo apresentam algumas funes bsicas do MATLAB.
Tabela 1 Utilitrios para a janela de comandos
COMANDOS
format
disp
clc
clear
home
echo
quit

PET-EEL / 2000

DESCRIO
Altera o formato dos dados na tela
Mostra matriz ou texto na tela
Apaga janela de comandos
Apaga variveis
Move o cursor para o topo da tela
Ativa/desativa exibies de linha individuais durante a execuo de um arquivo .m
Termina o programa

Curso de Introduo ao MATLAB

Tabela 2 Utilitrios para tratamento de arquivos


COMANDOS
cd
delete
dir
exist
load
save
type
what
who
chdir

DESCRIO
Muda de diretrio
Deleta arquivo ou objeto grfico
Mostra diretrio
Confere se uma varivel ou funo existe
Carrega varveis gravadas em disco
Salva variveis em disco
Lista o contedo de um arquivo ou funo
Mostra os nomes dos arquivos .m e .mat no diretrio corrente
Mostra as variveis existentes na tela de comando
Muda o diretrio de trabalho

Tabela 3 Caracteres especiais usados na janela de comandos


CARACTERES
=
[]
()
.
,
;
%
:
!

DESCRIO
Comando de atribuio
Delimitar elementos de matrizes e vetores
Alternar a ordem de precedncia das expresses aritmticas
Ponto decimal
Separa argumento de funes e elementos de matrizes e vetores
Finalizador de linha com supresso de impresso
Comentrio
Gerao de um vetor com intervalos definidos
Execuo de um programa do sistema operacional

Tabela 4 Funes matemticas bsicas


FUNO
acos
asin
atan
cos
cosh
exp
fix
log
log10
rand
randn
rat
round
sign
sin
sinh
sqrt
tan
tanh

DESCRIO
Arco-coseno
Arco-seno
Arco-tangente
Coseno
Coseno hiperblico
Exponencial com base e
Arredondamento para o inteiro mais prximo at zero
Logaritmo natural
Logaritmo decimal
Gera nmeros aleatrios com distribuio uniforme
Gera nmeros aleatrios com distribuio normal
Aproximao racional
Arredonda o nmero para o inteiro mais prximo
Retorna 1 se for positivo e 0 se for negativo ou zero
Seno
Seno hiperblico
Raiz quadrada
Tangente
Tangente hiperblica

NOTA: O MATLAB trabalha com ngulos em radianos.

PET-EEL / 2000

Curso de Introduo ao MATLAB

4 - Operaes com vetores


Chamamos de vetor u a um conjunto de elementos u1 u2 u3 ... un dispostos em linha ou em coluna. Estes
elementos, so os componentes do vetor u.
No MATLAB, os vetores devem ser declarados entre colchetes. Veja o exemplo abaixo:
[0 1 2 3]
ans =
0 1 2 3
O mesmo resultado seria obtido com:
[0,1,2,3]
ans =
0 1 2 3
Como visto no exemplo acima, quando no declaramos a varivel que ir conter os componentes do vetor, o
vetor devolvido como uma varivel chamada ans (procedimento default do MATLAB).
As operaes aritmticas bsicas so realizadas elemento a elemento do vetor. Por exemplo:
u = [1 2 3];
z = 3+u
z=
4 5 6
Se quisermos realizar qualquer operao com apenas um elemento do vetor, basta que especifiquemos qual
dos elementos dever ser tratado. Por exemplo:
z(3) = -1
z=
4 5 -1
Outro aspecto importante no MATLAB a flexibilidade de podermos realizar uma atribuio de um novo
valor para um elemento (ou varivel) utilizando a prpria varivel nesta operao. Um exemplo simples seria:
z(3) = z(3) + 1
z=
4 5 0
Se voc quiser saber o nmero de elementos de um vetor, utilize a funo length.
length(z)
ans =
3
A transposta do vetor calculada utilizando-se o smbolo . Para obtermos um vetor coluna a partir de z, basta
digitarmos o seguinte:
w = z
w=
4
5
0

PET-EEL / 2000

Curso de Introduo ao MATLAB

Um detalhe importante: o smbolo * executa o produto escalar entre dois vetores, desde que um deles seja um
vetor linha e o outro um vetor coluna. Vejamos a seguir:
esc = u * z'
esc =
14
Entretanto, algumas operaes especiais precisam ser definidas quando queremos realizar operaes entre dois
vetores. Tais operaes so definidas pelos seguintes smbolos:
OPERADORES
.*
./
.\
.^

OPERAES
Multiplicao
Diviso direita
Diviso esquerda
Exponenciao

Um exemplo de multiplicao seria:


mult = u .* z
mult =
4
10

Um exemplo de diviso:
div = u ./ z
Warning: Divide by zero.
div =
0.2500 0.4000
Inf
Neste exemplo, ocorreu um fato interessante. O MATLAB trabalha com divises por zero, retornando, nestes
casos, com o smbolo Inf para infinito. O problema ocorrido nesta diviso poderia ser facilmente evitado se
utilizssemos a diviso esquerda, como segue:
div = u .\ z
div =
4.0000 2.5000

A potenciao de um vetor por um escalar pode ser feita como segue:


div = div .^ 3
div =
64.0000 15.6250

O MATLAB permite a gerao de vetores usando intervalos. Imaginemos que vamos precisar trabalhar com
um vetor igualmente espaado de pi/4 em pi/4 at o valor pi. Para gerar este vetor, utilizaramos o seguinte comando:
x = 0 : pi/4 : pi
x=
0 0.7854 1.5708 2.3562 3.1416
O vetor poderia ser criado com incrementos negativos:
y = pi : -pi/4 : 0
y=
3.1416 2.3562 1.5708 0.7854
0
Aproveitando estes dois vetores, x e y, vamos realizar a gora uma plotagem simples. O comando de plotagem
no MATLAB o comando plot. Como sabemos, para a construo de um grfico necessitamos de dois parmetros que
PET-EEL / 2000

Curso de Introduo ao MATLAB

iro compor os valores dos eixos coordenados horizontal e vertical. No MATLAB, o primeiro parmetro da funo
plot considerado como contendo os valores do eixo horizontal e o segundo como contendo os valores do eixo
vertical. Assim, o comando para fazer a plotagem de y em funo de x seria:
plot (x,y)
O resultado obtido uma nova janela, contendo o grfico do vetor y em funo do vetor x, que como
esperado, uma reta.

Algumas funes do MATLAB so bastante teis no tratamento de vetores. Exemplos delas so as funes
max, min e mean. A funo max devolve o maior dos componentes do vetor. A funo min, por sua vez, devolve o
menor dos componentes do vetor.
max(z)
ans =
5

min(z)
ans =
0

A funo mean devolve o valor mdio dos componentes do vetor.


mean(z)
ans =
3
Dois vetores distintos podem ser concatenados (encadeados) para formar um novo vetor de maneira
bastante simples. Vejamos abaixo:
conc = [u z]
conc =
1 2 3 4 5 0
Para concatenarmos dois vetores coluna devemos utilizar o ; para separar os dois vetores que sero
concatenados. Todas as operaes vistas para vetores linha tambm so vlidas para vetores coluna. Maiores
detalhes sero vistos nos prximos itens.

PET-EEL / 2000

Curso de Introduo ao MATLAB

5 - Operaes com matrizes


Uma matriz um arranjo de elementos na forma de uma tabela retangular de elementos, sendo que a forma
geral um arranjo de m linhas e n colunas. No MATLAB, uma matriz pode ser definida de maneira semelhante aos
vetores, diferenciando-se apenas no fato da necessidade da digitao de um enter ou um ; para a separao das
diferentes colunas. Vejamos alguns exemplos:
a = [1 2 3; 4 5 6; 7 8 9]
a=
1 2 3
4 5 6
7 8 9

Ou:
b = [9 8 7
654
3 2 1]
b=
9 8 7
6 5 4
3 2 1

Da mesma forma que fizemos com vetores, as matrizes tambm podem ter seus elementos escritos como
expresses. Alm disso, as matrizes podem ter seus elementos identificados (e operados) individualmente. Por
exemplo:
b (2,1)
ans =
6
Este comando devolveu em ans o valor do elemento da segunda linha e primeira coluna da matriz b.
O tamanho de uma matriz qualquer pode ser obtido atravs da funo size.
size (a)
ans =
3 3
A matriz a possui 3 linhas e 3 colunas. A concatenao de matrizes bastante semelhante concatenao
dos vetores. Vejamos dois exemplos:
c = [a b]
c=
1 2 3
4 5 6
7 8 9

9
6
3

8
5
2

7
4
1

d = [a; b]
d=
1 2
4 5
7 8
9 8
6 5
3 2

3
6
9
7
4
1

Para extrairmos uma submatriz de uma matriz qualquer procedemos da seguinte forma:
e = d(1:2, 1:2)
e=
1 2
4 5
Este comando retirou a primeira e segunda linhas e a primeira e segunda colunas da matriz d e armazenou
na matriz e. Se quisermos que todas as linhas da matriz antiga compusessem a nova matriz bastaria colocarmos : no
primeiro parmetro da matriz d. Suponhamos agora que precisemos inserir uma linha na matriz e. O comando o
seguinte:
e = [e; 1 0]
PET-EEL / 2000

Curso de Introduo ao MATLAB

e=
1
4
1

2
5
0

Nas operaes de adio e subtrao de matrizes, a exemplo do que aconteceu quando trabalhamos com
vetores, os elementos de uma matriz so somados ou subtrados com o seu correspondente na outra matriz. Esta a
razo pela qual as duas matrizes envolvidas devem ter o mesmo nmero de linhas e colunas.
soma = a + b
soma =
10 10 10
10 10 10
10 10 10

sub = a - b
sub =
-8 -6 -4
-2 0 2
4 6 8

A multiplicao e diviso de uma matriz por escalares efetuada elemento a elemento da matriz. Por
exemplo:
mult = 3 * a
mult =
3 6 9
12 15 18
21 24 27

div = a / 3
div =
0.3333 0.6667 1.0000
1.3333 1.6667 2.0000
2.3333 2.6667 3.0000

A exponenciao individual dos elementos de uma matriz podem ser feitos pelo comando .^.
a .^2
ans =
1 4 9
16 25 36
49 64 81
A multiplicao de matrizes uma ferramenta bastante til no MATLAB. Vale a pena ressaltar que na
multiplicao de uma matriz a qualquer por uma matriz b qualquer, s pode acontecer se o nmero de colunas da
matriz a for igual ao nmero de linhas da matriz b ou vice-versa. Vejamos um exemplo: Queremos multiplicar a
matriz c pela matriz d. Primeiramente vamos verificar se o nmero de linhas de uma igual ao nmero de colunas
da outra.
size (c)
ans =
3 6

size (d)
ans =
6 3

Percebe-se que a multiplicao destas duas matrizes possvel. Ento:


c*d
ans =
180 162 144
162 162 162
144 162 180
Perceba que o resultado teria sido diferente se tivssemos feito d vezes c:
d*c
ans =
30 36 42 30 24 18
66 81 96 84 69 54
102 126 150 138 114 90
PET-EEL / 2000

Curso de Introduo ao MATLAB

90 114 138 150 126 102


54 69 84 96 81 66
18 24 30 42 36 30
Este tipo de preocupao no necessria quando estamos trabalhando com matrizes quadradas de mesmo
tamanho.
A fim de mostrar a diviso de duas matrizes, vamos definir duas novas matrizes:
x = [15 10 8; 7 1 0; 2 5 1]
x=
15 10 8
7 1 0
2 5 1

y = [3 -1 2; -5 1 1; 0 3 4]
y=
3 -1 2
-5 1 1
0 3 4

Agora, vamos dividir a matriz x pela matriz y:


x/y
ans =
-2.0213 -4.2128 4.0638
-0.5745 -1.7447 0.7234
-1.8511 -1.5106 1.5532
Note que a diviso de y por x poderia ser efetuada utilizando-se a diviso direita, como segue:
x\y
ans =
-0.7033 0.0239
0
-0.0766 0.8325 1.0000
1.7895 -1.2105 -1.0000
Houve um motivo simples para termos definido novas matrizes a fim de demonstrarmos a diviso. As
matrizes a e b eram singulares, ou seja, possuam determinante nulo. Ao dividirmos duas matrizes singulares, o
resultado uma matriz com componentes infinitos, conforme nos mostra o MATLAB:
a/b
Warning: Matrix is singular to working precision.
ans =
Inf Inf Inf
Inf Inf Inf
Inf Inf Inf
A potenciao de matrizes equivale a sucessivas multiplicaes dela por ela mesma. Por exemplo, faamos a
ao cubo:
a^3
ans =
468
576
684
1062
1305
1548
1656
2034
2412
A transposta de uma matriz (troca das colunas pelas linhas) obtida da mesma maneira que a transposta de
um vetor. O operador o apstrofo :
a'
ans =
1 4
2 5
3 6
PET-EEL / 2000

7
8
9
10

Curso de Introduo ao MATLAB

Na prxima tabela so mostrados as mais importantes funes para tratar matrizes no MATLAB:
FUNES
det
eye
inv
ones
rand
tril
triu
zeros

DESCRIO
Determinante de uma matriz
Gera uma matriz identidade
Calcula a inversa da matriz
Gera uma matriz unitria
Gera uma matriz randmica
Transforma/gera uma matriz triangular inferior
Transforma/gera uma matriz triangular superior
Gera uma matriz de zeros (nula)

6 - Nmeros complexos
Veremos agora como trabalhar com nmeros complexos no MATLAB. Aparte imaginria simbolizada
pelas letras i ou j indistintamente:
i^2
ans =
-1.0000 + 0.0000i

j^2
ans =
-1.0000 + 0.0000i

Note que mesmo que utilizemos a letra j, na resposta oferecida pelo MATLAB sempre aparece a letra i.
Utilizando o sistema de coordenadas cartesianas, um nmero complexo pode ser definido no MATLAB da
seguinte maneira:
z1 = 3 + 4i
z1 =
3.0000 + 4.0000i
Ao trabalharmos com nmeros complexos um ponto deve ser levado em considerao: no devemos
utilizar as letras i e j para definir variveis ou constantes, pois isto feito, elas no mais podero ser usadas para
definir complexos.
O conjugado de um nmero complexo (o prprio nmero com o sinal da parte imaginria trocado) pode
ser obtido utilizando-se a funo conj:
conj(z1)
ans =
3.0000 - 4.0000i
seguir:

As operaes com nmeros complexos utilizam os operadores usuais, como podemos ver nos exemplos a
z2 = 4 + 3i
z2 =
4.0000 + 3.0000i
z1 + z2
ans =
7.0000 + 7.0000i
z1 - z2
ans =
-1.0000 + 1.0000i

PET-EEL / 2000

z1 * z2
ans =
0 +25.0000i
z1 / z2
ans =
0.9600 + 0.2800i

11

Curso de Introduo ao MATLAB

A potenciao, como visto com as matrizes, corresponde multiplicao sucessiva do nmero por ele
mesmo. Vejamos um exemplo:
z1 * z1
ans =
-7.0000 +24.0000i

z1 ^ 2
ans =
-7.0000 +24.0000i

Para plotarmos um nmero complexo, basta usarmos a funo plot com o seguinte argumento:
plot(z1)
O resultado ser um grfico que mostra um ponto (exatamente o ponto correspondente ao nmero
complexo) no plano complexo.
Vejamos agora algumas funes teis quando trabalhamos com nmeros complexos:
FUNO
real
imag
abs
angle

DESCRIO
Retorna a parte real do nmero complexo
Retorna a parte imaginria do nmero complexo
Retorna o mdulo do vetor complexo (representao trigonomtrica)
Retorna o ngulo do vetor complexo (representao trigonomtrica)

Os nmeros complexos tambm podem formar vetores ou matrizes, como os nmeros reais. Vejamos
dois exemplos simples:
matriz = [z1 z2; z2 z1]
vetor = [z1 z2]
matriz =
vetor =
3.0000 + 4.0000i 4.0000 + 3.0000i
3.0000 + 4.0000i 4.0000 + 3.0000i
4.0000 + 3.0000i 3.0000 + 4.0000i
Para o clculo da transposta existem dois operadores ( ) e ( . ). O primeiro deles calcula a transposta do
conjugado e o outro a transposta normal. Vejamos estes exemplos com a matriz definida anteriormente:
matriz'
ans =
3.0000 - 4.0000i 4.0000 - 3.0000i
4.0000 - 3.0000i 3.0000 - 4.0000i
matriz.'
ans =
3.0000 + 4.0000i 4.0000 + 3.0000i
4.0000 + 3.0000i 3.0000 + 4.0000i

7 - Noes gerais de polinmios e sistemas de equaes lineares


7.1 Polinmios
Polinmios so funes do tipo P(x)=anxn+an-1xn-1+...+a1x1+a0x0 onde n e a so reais e x pode ser real ou
complexo.

7.1.1 - Definindo-se um polinmio no MATLAB


linha.

Define-se um polinmio no MATLAB colocando-se os seus coeficientes de forma ordenada em um vetor


Seja o seguinte polinmio:
x3-3x2+4x-4
No MATLAB ele ser definido da seguinte forma:
poli = [1 -3 4 -4];

PET-EEL / 2000

12

Curso de Introduo ao MATLAB

Note que o coeficiente 4, apesar de aparentemente no estar acompanhado da varivel x, aparece entre os
coeficientes. Isso ocorre porque na verdade ele est sim acompanhado de x, porm como temos x0 que igual a 1,
torna-se por norma no represent-lo.

7.1.2 - Clculo das razes de um polinmio

As razes de um polinmio P(x) so os valores das variveis para os quais as igualdade P(x)=0 satisfeita.
Vamos definir um outro polinmio no MATLAB;
coef = [1 2 1];
O polinmio assim definido no MATLAB corresponde a: x2+2x+1.
A fim de calcularmos as razes deste polinmio, o igualaramos a zero e teramos:
x2+2x+1=0
No MATLAB, para calcular as razes deste polinmio, devemos encontrar o valor de x para que a igualdade
seja satisfeita. Para tanto, usamos o comando roots da seguinte forma:
r = roots (coef)
r=
-1
-1
O polinmio em questo possui duas razes iguais. Note que 1 o valor que atribudo a x torna verdadeira
a igualdade.
Suponha agora que voc tenha que encontrar as razes da equao:
x3-15x=4
O procedimento no MATLAB o seguinte:
coef = [ 1 0 -15 -4];
r = roots(coef)
r=
4.0000
-3.7321
-0.2679
Nas linhas acima, note que antes de escrevermos os coeficientes do polinmio, temos que ajeitar a equao
igualando-se a zero. Assim:
x3+15x-4=0
Note tambm que como no temos o termo x2 colocamos zero no lugar de seu coeficiente.

7.1.3 - Calculando os coeficientes de um polinmio partindo de suas razes

Podemos, com as razes do polinmio coef utilizado anteriormente, obter os coeficientes deste mesmo
polinmio utilizando a funo poly:
p = poly(r)
p=
1.0000 0.0000 -15.0000 -4.0000

7.1.4 - Visualizando as razes de um polinmio.


Seja a equao:
PET-EEL / 2000

13

Curso de Introduo ao MATLAB

y=x3-3x2-6x+8
Deseja-se calcular os valores de x para os quais y seja igual a zero, ou seja, deseja-se calcular as razes do
polinmio e, alm disso, deseja-se visualizar essas razes graficamente.
O procedimento de clculo das razes do polinmio o mesmo descrito anteriormente:
coef = [ 1 -3 -6 8];
roots(coef)
ans =
4.0000
-2.0000
1.0000
Uma vez definida as razes, temos que definir o domnio de x que contm estas razes:
x=-3: .1 :5;
Observe que x um vetor contendo vrios nmeros; dentre eles as razes do polinmio.
Agora vamos utilizar uma nova funo que vai calcular para cada valor de x um valor correspondente para
y. Essa a funo polyval. Ela utilizada com dois argumentos, sendo primeiro o vetor de coeficientes e o outro
o vetor que contm as razes que queremos plotar:
y = polyval(coef,x);
Agora s nos resta fazer a plotagem na janela grfica.
plot(x,y)
grid
title('Grfico de y=x^3 -3x^2-6x+8')
xlabel('eixo x')
ylabel('eixo y')
zoom
O resultado ser:

PET-EEL / 2000

14

Curso de Introduo ao MATLAB

Voc pode observar no grfico que, como era de se esperar, onde temos x=4, -2 e 1 temos y=0. O ltimo
comando realizado, zoom, permite efetuarmos um zoom em grficos 2D. Utilize este recurso e realize uma
aproximao na rea onde a curva corta o eixo x e verifique as razes do polinmio.

7.1.5 - Operaes com polinmios

Com a mesma facilidade que operamos com nmeros reais, vetores, matrizes e nmeros complexos,
podemos tambm operar com polinmios. Vejamos algumas operaes possveis:
- Multiplicao e diviso de polinmios:
Deixaremos por conta do leitor a reviso da teoria de diviso de polinmios, caso queira acompanhar os
resultados obtidos no MATLAB.
Sejam dois polinmios
p1= 2s2+3s+1
p2= 5s-2
Queremos p1*p2. Sabemos que o resultado esperado :
p1*p2=10s3+11s2-s-2
No MATLAB teremos:
p1=[2 3 1];
p2=[5 -2];
A funo conv utilizada para a multiplicao entre dois polinmios:
p3=conv(p1,p2)
p3 =
10 11 -1 -2
Temos ento resultado esperado.
Enquanto a funo conv utilizada para realizar multiplicaes, o contrrio, ou seja a diviso, efetuada com
a funo deconv.
Observe como feito:
[Q R]=deconv(p3,p1)
Q=
5 -2
R=
0

O vetor Q contm os coeficientes do quociente polinomial, que no nosso caso, so os coeficientes do


prprio polinmio p2.
O vetor R contm os coeficientes do polinmio que corresponde ao resto da diviso polinomial. Como a
diviso de p3 por p1 exata, o resto zero.
Vamos agora , substituir o polinmio p3 pelo polinmio p4 assim definido:
p4=10s3+11s2+2s
No MATLAB escreve-se:
p4=[10 11 2 0];
Realizando a diviso:
PET-EEL / 2000

15

Curso de Introduo ao MATLAB

[Q R]=deconv(p4,p1)
Q=
5 -2
R=
0

Agora j temos um resto na diviso, ou seja, o polinmio 3s+2


7.2 - Sistemas de equaes lineares
Para resoluo dos sistemas de equaes lineares, fundamental o clculo do determinante da matriz. O
determinante de uma matriz um nmero especfico associado a toda e qualquer matriz quadrada.
No MATLAB, como visto anteriormente, o comando utilizado para o clculo de determinantes o
comando det . Vale lembrar que o clculo de determinantes s possvel para matrizes quadradas.
Vejamos um exemplo:
w=[2 1 3;-5 6 -1; 4 0 -2]
w=
2 1 3
-5 6 -1
4 0 -2

det(w)
ans =
-110

Podemos agora propor um sistema de equaes lineares para ser resolvido:


x1+2x2+3x3=4
2x1+3x2+4x3=5
4x1+2x2+5x3=1
No MATLAB, podemos representar este sistema de equaes por uma matriz 3x3 e um vetor:
A=[1 2 3; 2 3 4; 4 2 5]
A=
1 2 3
2 3 4
4 2 5
Calcularemos agora o determinante de A:

B=[4 5 1]'
B=
4
5
1

det(A)
ans =
-5
Aqui vale a pena relembrarmos um aspecto importante na resoluo de sistemas de equaes lineares. Um
sistema de equaes lineares somente possui soluo determinada de a matriz que o representa possuir determinante
no nulo, ou seja, a matriz formada com os coeficientes das equaes no pode ser uma matriz singular. No
exemplo anterior, percebe-se que o sistema proposto tem soluo.
A soluo mais prtica utilizando-se o MATLAB multiplicar diretamente o vetor B pela inversa da matriz
A. Esta operao corresponde a resoluo de uma operao com as matrizes que representam o sistema de equaes
lineares, como visto abaixo:
An x n * Xn x 1 = Bn x 1
A matriz A contm os coeficientes do sistema, o vetor X representa as incgnitas e o vetor B contm os
termos independentes do sistema. No MATLAB, temos:
X = inv(A)*B
X=
-1.4000
PET-EEL / 2000

16

Curso de Introduo ao MATLAB

1.8000
0.6000
De outra forma, poderamos realizar uma diviso esquerda entre A e B. Veja como :
X=A\B
X=
-1.4000
1.8000
0.6000
7.3 - Encontrando a melhor curva partindo de dados experimentais
O MATLAB nos permite fazer a interpolao polinomial partindo-se dados experimentais. Para isto
utilizamos o comando polyfit . Os exemplos que sero vistos a seguir ilustram a utilizao deste comando.
Os pontos experimentais a seguir representam a posio de um mvel em MRU ao longo do tempo.
S(cm)
t(s)

4,00
0,00

6,71
1,00

9,43
2,00

12,18
3,00

14,87
4,00

17,7
5,00

Vamos definir dois vetores com os dados experimentais:


S=[4 6.4 9.93 12.18 14.87 16.7];
t=[0 1 2 3 4 5];
Agora iremos plotar os pontos para termos uma noo da evoluo dos mesmos

18

16

14

12

10

4
0

0.5

1.5

2.5

3.5

4.5

Iremos ento realizar a interpolao dos dados atravs de um polinmio de primeira ordem, o mesmo
procedimento pode ser realizado para qualquer polinmio de grau n.
poly = polyfit(t,S,1)
poly =
2.6046 4.1686
Agora iremos traar a reta obtida sobre os dados experimentais:
PET-EEL / 2000

17

Curso de Introduo ao MATLAB

hold on;
t=0:.1:5;
S = polyval(poly,t);
plot(t,S)
E o resultado final ser:
18

16

14

12

10

4
0

0.5

1.5

2.5

3.5

4.5

8 Anlise Numrica
8.1 Integrao
O MATLAB possui trs funes para determinar numericamente a integral de uma funo em um domnio
finito: trapz, quad e quad8. A funo trapz aproxima a integral de uma funo somando a rea de trapzios formados a
partir de pontos da curva. Na verdade, este mtodo subestima o valor da rea sob o grfico em alguns pontos e
superestima em outros. Desta forma, quanto maior o nmero de trapzios que utilizamos, melhor ser a
aproximao. A funo trapz chamada como a funo plot. Experimentemos com os vetores t e S utilizados no
item anterior:
area = trapz(t,S)
area =
53.7300
As funes quad e quad8, utilizam o conceito matemtico de quadratura e tcnicas de variao da largura dos
trapzios conforme as caractersticas da funo, ou seja, elas diminuem as larguras dos trapzios nas regies do
grfico em que ocorrem as variaes mais rpidas da funo. Entretanto, seu modo de chamada um pouco
diferente da funo trapz. Para demonstr-lo, utilizaremos a funo humps, default do MATLAB:
area = quad('humps', -1 , 2)
area =
26.3450

area = quad8('humps', -1, 2)


area =
26.3450

A nica diferena entre quad e quad8, que a segunda um pouco mais rigorosa nos clculos que a primeira.

PET-EEL / 2000

18

Curso de Introduo ao MATLAB

8.2 Diferenciao
Comparada integrao, a diferenciao numrica muito mais difcil. A derivao deve ser, devido as suas
dificuldades inerentes, evitada ao mximo, principalmente se os dados a serem derivados foram obtidos de forma
experimental.
Neste caso, melhor efetuarmos um ajuste de curva pelos mnimos quadrados e ento derivar o polinmio
resultante. Como exemplo, vamos considerar os dados abaixo:
a = [0:.1:1];
b = [-.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
n = 2; % Ordem do ajuste
p = polyfit(x,y,n)
p=
-0.0004 -0.3007 0.9489
d = polyder(p)
d=
-0.0007 -0.3007
O vetor d contm os coeficientes do polinmio que resultado da derivao de p.
O MATLAB possui ainda a funo diff, que d como resultado uma derivao grosseira atravs do mtodo
de diferenas finitas. Por ser uma aproximao muito ruim, no iremos abordar este comando neste curso.
8.3 Equaes Diferenciais
As equaes diferenciais ordinrias (EDO) descrevem como a taxa de variao das variveis de um sistema
influenciada por variveis do sistema e por estmulos externos, ou seja, por entradas. Quando as EDOs podem ser
resolvidas analiticamente, alguns recursos do Toolbox de Matemtica Simblica podem ser usados para encontrar
solues exatas.
Naqueles casos em que as equaes no podem ser resolvidas prontamente de forma analtica,
conveniente resolve-las numericamente. Como exemplo, resolveremos a seguinte equao diferencial:

d 2x
dx
(1 x 2 )
x0
2
dt
dt
Para ser resolvida, a equao deve ser reescrita da seguinte forma:

Sejam :

y1 x e
Assim :

y2

dx
;
dt

Ento :

dy1
y2
dt

dy2
2
(1 y1 ) y1
dt

A funo a ser usada ser a ode45, que necessita como parmetros de entrada uma M-file de funo
contendo a equao na forma reescrita, o tempo atual e o os valores atuais de y1 e y2. Esta funo deve ser editada
no editor do MATLABtem o seguinte formato:

Este arquivo deve ser salvo com um dado nome (sugerimos yprime), no seu diretrio de trabalho.
Escolhemos, em seguida, um intervalo de tempo de 0 a 30 segundos e as condies iniciais: unitria para a derivada
primeira e nula para a derivada segunda. Abaixo setamos estes parmetros:
PET-EEL / 2000

19

Curso de Introduo ao MATLAB

intervalo = [0 30];
cond_inic = [1; 0];
% Usando a funo ode45
ode45('yprime', intervalo, cond_inic);
A sada ser um grfico do comportamento temporal do sistema. Para termos acesso aos dados, basta
colocarmos argumentos de sada, como mostrado abaixo:
[t, y] = ode45('yprime', intervalo, cond_inic);
O vetor t conter os instantes de tempo em que a soluo foi calculada e y uma matriz de duas colunas e
length(t) linhas (para este caso). Na primeira coluna de y esto armazenados os valores correspondentes a y(1) e na
segunda coluna os valores de y(2).

9 - Grficos em 2D
9.1 - Funes grficas elementares
A seo grfica do MATLAB possui variadas e sofisticadas tcnicas para representar e visualizar dados. Um
ponto negativo deve-se a forma com que as ferramentas so aplicadas a uma entidade grfica, atravs de comandos,
diferenciando-se da maioria dos softwares com aplicaes dessa ordem, onde as alteraes so efetuadas de forma
mais amigvel, com uso do mouse e atalhos que facilitam as aes.
Os principais comandos utilizados na edio e criao de grficos so listados abaixo:
plot - plota um vetor ou uma funo;
title - adiciona ttulo ao grfico ;
xlabel - adiciona um rtulo ao eixo x;
ylabel - adiciona um rtulo ao eixo y;
text - insere um texto numa determinada posio da janela grfica;
gtext - insere um texto no grfico usando o mouse como posicionador;
grid - traa linhas de grade.
Exemplo de aplicao:

A formatao de cor e estilo da linha podem ser facilmente ajustados atravs da edio dos argumentos do
comando plot.
PET-EEL / 2000

20

Curso de Introduo ao MATLAB

A tabela a seguir mostra as opes.


Cor da Linha
Caracter
y
m
c
r
g
b
w
k

Cor
amarela
magenta
cyan
vermelha
verde
azul
branca
preta

Estilo da Linha
Caracter
Estilo
.
Ponto
o
Crculo
x
marca "x"
+
Mais
*
Asterisco
Slido
:
Pontilhado
-Tracejado

Observe o formato da linha de comando:


plot (x,y,'ro')
Note que o argumento de cor ou formato de linha deve ser escrito entre aspas simples. Podem ser usados
um argumento para cor e um para estilo de linha, ou apenas uma das opes.
9.2 - Plotando um vetor
Considerando um vetor arbitrrio x, o comando plot(x) cria um grfico em escala linear do vetor x em
funo de seus ndices.

9.3 - Plotando um nmero complexo


Se c um nmero complexo, o comando plot(c) equivalente a plot(real(c), imag(c)).

9.4 - Plotando uma matriz


Sendo M uma matriz, o comando plot(M) ir representar uma linha grfica para cada coluna de M.
PET-EEL / 2000

21

Curso de Introduo ao MATLAB

Observe que no foi necessrio adicionar nenhum argumento ao comando para criar linhas de cores
diferentes.
9.5 - Plotando um vetor em funo de outro
O comando plot(x,y) plota o vetor x em funo de y.
Condio necessria: length(x)==length(y).
9.6 - Plotagens combinadas

9.6.1 - Usando a mesma linha de comando

Podemos efetuar vrias plotagens na mesma tela com apenas um comando plot. Veja.

PET-EEL / 2000

22

Curso de Introduo ao MATLAB

9.6.2 - Adicionando linhas a um grfico j existente

Essa caracterstica obtida com o comando hold. Com essa opo setada, o programa no apaga as linhas j
existentes ao traar outras. Essa ao pode ajustar automaticamente a escala da janela grfica para comporta as
novas curvas.
Digitando hold off, o MATLAB retorna ao modo default.
9.7 - Ajustando os limites de escala
O comando axis permite o ajuste dos limites de escalas da janela grfica atual.
axis [xmin xmax ymin ymax]
A opo axis('auto') restaura as configuraes padro do MATLAB.
Para verificar os limites atuais da escala de uma janela grfica, basta digitar v=axis, onde v ser um vetor
com os valores das escalas.

9.7.1 - Corrigindo distores

Variaes do comando axis('argumento') permitem corrigir distores indesejadas em representaes grficas.


Acompanhe s linhas de comando que seguem:
t = 0:100;
plot(sin(t),cos(t))
O grfico correto seria um crculo, voc est visualizando um crculo? Para corrigir esse problema proceda
com o comando:
axis('equal')
Essa variao do comando axis faz com que os incrementos dos vetores em x e y sejam iguais.
Outras alternativa para corrigir o problema seria a opo
axis('square')
Onde a janela grfica tornar-se- quadrada.
9.8 - Escondendo eixos e escalas
Em algumas aplicaes apenas as curvas de dados nos interessam e podemos eliminar da janela grfica
eixos, escalas, sinais de graduao e grade com o comando:
axis('off')
Para reverter:
axis('on)
9.9 - Apagando figuras da janela grfica
Suponha que aps construir uma janela com curva, rtulos e escalas j configuradas voc queira agora traar
outra curva na mesma janela, sem a anterior e no precisando ajustar as caractersticas da janela.
Acompanhe os comandos:
a = [3 5 3 7 9 3 2 1 5 2 2];
plot(a)
title('vetor "a" ')
xlabel('indices')
ylabel('elementos')
gtext('maior elemento')
axis[0 12 0 10]
PET-EEL / 2000

23

Curso de Introduo ao MATLAB

Agora temos que plotar outro vetor, mas as caractersticas da janela ainda nos sero teis. Vejamos ento
como usar o comando cla
cla
b = [1 2 4 7 0 4 5 3 4 5 2 ];
plot(b)
9.10 - Trabalhando com mltiplas janelas grficas
Para criar uma nova janela usamos o comando figure cada janela identificada por um nmero que
chamamos de handle.
Quando trabalhamos com mais de uma janela grfica devemos ter o cuidado de saber qual a janela ativa no
momento para evitarmos fazer alteraes na janela errada.
Para verificar qual o handle da janela ativa no momento utilizamos a funo gcf - get curent figure.
h = gcf
A varivel h conter o nmero da janela ativa.
Supondo que a janela ativa seja a 2 mas voc pretende alterar a janela 5. Para tanto proceda assim:
figure(5)
Outra forma de obter essa ao e clicar com o mouse sob a rea de plotagem da figura desejada.
Para fechar determinada janela grfica use o close
close(3)
9.11 - Construindo subgrficos
Subgrficos podem ser construdos numa mesmas janela com a funo subplot.
subplot(m,n,s) ou
subplot(mns)
Gera uma janela com uma matriz m x n onde cada elemento da matriz um subgrfico. O nmero s indica
qual subgrfico ser plotado ou ativado.
t=0:0.1:30;
subplot(321)
plot(sin(t))
subplot(322)
plot(cos(t),'r')
subplot(323)
plot(tan(t),'g')
subplot(324)
plot(sinc(t),'m')
subplot(325)
plot(sin(t+pi/2))
subplot(326)
plot(cos(t+pi)
9.12 - Ampliando a visualizao grfica - ZOOM
Vamos explicar as funes do zoom com um exemplo.
Fazendo uso da funo peaks criamos um matriz 100 x 100, a seguir vamos plot-la.
ma = peaks(100); Ateno no esquea do ponto-e-vrgula!
plot(ma)

PET-EEL / 2000

24

Curso de Introduo ao MATLAB

Responda agora com base no grfico: qual o maior valor que a funo alcana no eixo y com uma preciso
de trs casas decimais?
Observando afigura, notamos que o valor fica prximo a 8, ocorrendo entre 70 e 80 no eixo x.
Para um resultado mais apurado damos um "zoom" no local. Poderamos usar o comando axis
axis [ 70 80 7 9]
Mas essa opo no se faz muito til, pois para cada aproximao deveramos redigitar os parmetros para o
comando.
Tente agora com:
zoom
Clique na regio a ser ampliada, formando um retngulo com o boto esquerdo do mouse pressionado.
Algumas variaes do comando zoom podem ser vistas com o help.
help zoom
9.13 - Plotando funes com o MATLAB
Para plotar a funo exp(x) no intervalo [0 10], poderamos criar um vetor x e um vetor y em seguida plotar
um em funo do outro. Porm para funes matemticas j definidas no programa, ou novas funes definidas
pelo usurio temos o comando fplot.
fplot('exp', [0 10])
grid
Note, entre apstrofos ' ', temos a funo. Entre colchetes [ ], o intervalo de anlise.
9.14 Outras formas de grficos

9.14.1 - Grficos de barras

Para visualizar dados em forma de barras, para aplicaes onde tal caracterstica seja til, utilizamos o
comando bar.
Sua aplicao fcil, veja:
b=[1 2 3 4 5 4 3 2 1];
bar(b)
Importante: as configuraes para cor e estilo de linha vistas para o comando plot so vlidas aqui tambm.
PET-EEL / 2000

25

Curso de Introduo ao MATLAB

9.14.2 - Escala logartmica

Em muitas aplicaes a utilizao de escalas lineares em um ou ambos os eixos de um grfico limitam a


forma com que as informaes so apresentadas. Para otimizar a representao utilizamos escalar logartmicas .
Vamos direto a uma aplicao:
t=0:1e6;
y=1./(1+t./10);
Plotar numa mesma janela em trs grficos separados a funo
(i) em escala linear (ambos os eixos) plot(x,y)
(ii) escala logartmica no eixo x
logx(x,y)
(iii) escala logartmica nos dois eixos loglog(x,y)
O resultado deve ser esse:

9.14.3 - Grficos de variveis discretas

Uma forma de representar fenmenos ou quantidades que no apresentam-se numa forma contnua
plotando as "amostras" discretas.
Como exemplo de varivel discreta poderamos citar a cotao de uma moeda, em sua variao diria.
A funo do MATLAB que permite tal representao o stem.
dias=1:15;
cota = rand(15);
stem(dias,cota)
Para maior clareza, utilize os comando estudados para nomear os eixos e ttulo do grfico.

PET-EEL / 2000

26

Curso de Introduo ao MATLAB

9.14.4 - Grficos em escada

Uma variao que une caractersticas dos comandos j vistos bar e stem, o comando stairs. Execute o
comando stairs para os dados de cotao da moeda, visto acima.

9.14.5 - A Funo compass

Para representar nmeros complexos com amplitude e ngulo.


a=3+j*4
compass(a)
Note que a janela apresenta o mdulo e a fase do nmero "c".

PET-EEL / 2000

27

Curso de Introduo ao MATLAB

10 - Programando com o MATLAB


Hoje, o conhecimento de linguagens de programao diferencia profissionais aos olhos do mercado. A
programao esta cada vez mais presente dentro da engenharia (simulaes, clculos complexos e rotineiros, anlise
e projeto de sistemas, etc) e saber programar se tornou uma necessidade. Nesta parte do curso, estaremos tratando
da programao com o MATLAB utilizando-se de suas diversas funes e ferramentas que facilitam e simplificam
muito a estrutura dos programas.
Tpicos a serem abordados:

Operaes Relacionais e Lgicas;


Rotinas de Programao;
Estruturas de Controle Repetitivas;
Estruturas de Controle Condicionais;
Construindo Novas Funes;
Debugando com o MATLAB.

Para o estudo seguinte, parte-se do princpio que todos j tenham noes bsicas de rotinas e estruturas de
programao.
10.1 - Operaes relacionais e lgicas
Os operadores relacionais so aqueles que respondem a uma determinada operao com verdadeiro ou
falso, que so simbolizados respectivamente por 1 e 0. A tabela a seguir relaciona operador com a descrio do
operador.
OPERADOR
<
<=
>
>=
==
~=

DESCRIO
Menor que
Menor ou igual
Maior que
Maior ou igual
Igual
Diferente

Para os que ainda no tiveram contato com este raciocnio, os exemplos a seguir demonstram algumas
operaes.

PET-EEL / 2000

28

Curso de Introduo ao MATLAB

No prompt, quando perguntamos se 2 + 2 igual a 4, o MATLAB nos d como resposta a afirmativa (1). J
depois quando perguntamos se 2 + 2 diferente de 4, o MATLAB nos responde que no (0).
Veja alguns outros exemplos:

O MATLAB responde aos operadores lgicos da mesma forma que responde aos operadores relacionais
acima descritos. Para verdadeiro tem-se 1 e falso 0. No MATLAB temos os seguintes operadores lgicos descritos
na tabela:
OPERADOR DESCRIO
&
AND
|
OR
~
NOT
O operador AND & responde sim (1) apenas quando as duas ou mais expresses envolvidas na questo
forem verdadeiras, caso contrrio a resposta no (0). Veja o exemplo no prompt abaixo onde no primeiro caso
temos a primeira expresso verdadeira e a segunda expresso dois falsa, que torna a resposta falsa (0). (1& 0 = 0).

PET-EEL / 2000

29

Curso de Introduo ao MATLAB

J o operador OR | , mostrado no segundo caso do prompt, responde sim (1) se pelo menos uma das
expresses for verdade.
Por fim o operador NOT ~ inverte seu argumento. Note que resposta da ltima operao que sim (1)
efetuado com o OR invertida e passa a valer (0).
10.2 - Rotinas especiais de programao
Antes de confeccionarmos nosso primeiro programa, precisamos conhecer as rotinas especiais de
programao do MATLAB que so comuns vrias linguagens. Estas rotinas associadas aos inmeros recursos
oferecidos pelo MATLAB propiciam ao usurio desenvolver desde simples programas feitos em calculadoras de
bolso, como HP, at os mais sofisticados programas desenvolvidos em linguagens de alto nvel, como C++.
ROTINAS
for
end
while <cond>
End
if <cond>
elseif
end
if <cond>
else
end
Switch
case<cond>
otherwise
end
break
return
pause

DESCRIO
Gera um loop enumervel
Gera um loop enquanto uma condio (<cond>) for verdadeira
Seqncia de comandos executveis condicionalmente
Seqncia de comandos executveis condicionalmente
Seqncia de comandos executvei condicionalmente
Sair fora de um loop for ou while
Retornar de uma funo (arquivo.m)
Para num ponto do programa at que se aperte qualquer tecla do teclado

(*) Todas as funes / comandos do MATLAB devem ser escritos com letras minsculas.

10.3 - Estruturas de controle repetitivas (loops)

loop for

PET-EEL / 2000

30

Curso de Introduo ao MATLAB

Partiremos direto para a utilizao do for no exemplo a seguir. Vamos editar este pequeno programa sem
utilizar ainda dos recursos de M-file que sero abordados na seqncia. Fez-se isso, para mostrar que rotinas
repetitivas tambm podem ser digitadas e executadas diretamente no prompt do MATLAB. Neste exemplo,
construiremos uma matriz zero (nula) 4 X 4 e em seguida a transformaremos em uma matriz unidade (identidade),
onde substituiremos por 1 os termos nulos da sua diagonal principal. Veja na tela abaixo a seqncia de comandos:
Aqui, escolhemos n como um contador e geramos a matriz nula A.

Depois partimos para o programa principal. Quando digitamos a primeira linha e teclamos < ENTER >, o
cursor fica esperando novas instrues at que o comando seja fechado com end. O sinal de prompt s aparece
com o fechamento de todos os loops abertos.
Veja que depois que fechamos todos os comandos abertos com seus respectivos ends, voltamos ao sinal de
prompt onde podemos chamar a matriz A e conferir o funcionamento do programa.
A rotina for funciona aqui da mesma forma que funciona nas linguagens mais usuais, ou seja, a varivel i
incrementada a cada loop e as instrues de programa so executadas repetitivamente at que se constate que i > n.
Observe que quando se termina uma linha de instruo de comando colocado o ponto e virgula ; que suprime a
impresso na tela. Experimente no usar o ponto o virgula e executar o programa.
(*) erros de digitao ou de programao ocorridos em linhas anteriores a atual dentro de estruturas de
repetio no podero ser corrigidos sem nova digitao integral do programa.

loop while

Comandos repetitivos tambm podem ser organizados dentro de uma estrutura while. O loop while tem a
seguinte forma:
while <condio>
comandos;
end
A condio testada e sendo verdadeira os comandos so executados. Depois de realizados todos os
comandos, novamente testa-se a condio que, sendo verdadeira, fora uma nova execuo dos comandos. A rotina
permanece sendo executada at que a condio seja falsa.
O exemplo a seguir introduz a criao de M-files explorando os recursos da estrutura de controle while.
Quando vamos escrever no MATLAB uma seqncia de comandos, tanto podemos escrever estes
comandos diretamente na linha de prompt, como fizemos at agora, como podemos escrever uma rotina de
comandos em arquivos especiais que so chamados de M-files. Os M-files so arquivos executveis no MATLAB e
so chamados do prompt bastando-se digitar o nome do arquivo e <ENTER>. Assim, todos os comandos listados

PET-EEL / 2000

31

Curso de Introduo ao MATLAB

no arquivo so executados seqencialmente. Editar um arquivo M-file muito simples. Para faz-lo voc pode
utilizar o editor de textos de sua preferncia.
Vamos criar um programa em um arquivo (M-file) com a funo de gerar esta seqncia de nmeros. Este
arquivo ser chamado de fibonac.m.
Para criar o M-file, v at o menu File, submenu New e escolha M-file. Assim, voc se encontrar no
editor de textos do prprio MATLAB onde as linhas de comandos do programa devem ser escritas.
Nmeros de Fibonacci: uma seqncia de nmeros onde os dois primeiros nmeros so iguais a 1, o terceiro igual a
soma dos dois primeiros, o quarto a soma do segundo com o terceiro, o quinto igual a soma do terceiro e do quarto e
assim por diante.

Para executar mais facilmente seus programas, salve-os no subdiretrio bin do MATLAB, assim ao abrir o
MATLAB seus programas j podero ser executados diretamente chamando-se os arquivos da linha de prompt sem
precisar redirecionar diretrios. Uma vez salvo os M-files, basta digitar o nome do arquivo e executar.

Como sada do programa temos o vetor f com a seqncia de nmeros de Fibonacci que so mostrados no
grfico seguinte.

PET-EEL / 2000

32

Curso de Introduo ao MATLAB

10.4 - Estrutura de controle condicional


As estruturas de controle condicionais envolvem tomadas de deciso para a execuo de comandos.

if - elseif - else - end


if < condio 1 >
comandos 1
elseif < condio 2 >
comandos 2
else
comandos 3
end

Onde os comandos 1, 2 e 3 podem ser executados de acordo com os resultados de suas respectivas
condies. Se a condio 1 verdadeira, comandos 1 so executados, se a condio 2 que a verdadeira, ento
comandos 2 so executados e por ltimo se nem condio 1 ou 2 verdadeira, ento comandos 3 que so
executados. O entendimento desta ltima seqncia de condies e comandos, principalmente saber diferenciar o
else do elseif, muito importante.
(*) No exemplo da estrutura com if e elseif somente os comandos associados a primeira condio
verdadeira encontrada so executados. As expresses condicionais seguintes no so testadas e o resto da estrutura
if-elseif-else-end ignorada. Alm disso, no necessrio que o comando final else esteja presente.
Veja o seguinte exemplo onde utilizaremos o editor de textos do MATLAB para escrever o M-file que
chamaremos de aleatori.m.

PET-EEL / 2000

33

Curso de Introduo ao MATLAB

A primeira linha de comentrio d informaes sobre o programa. Depois de salvo este M-file, ao
escrevermos na linha de prompt help aleatori o contedo de comentrios escrito depois de (%) aparece na tela.
Depois das linhas de comentrios, utilizamos a funo rand que gera um nmero aleatrio entre 0,0 e 1,0.
Este nmero multiplicado por 100 depois arredondado e sua parte decimal truncada pelo comando fix. Fazendo
assim, o valor que atribudo a x fica entre 0 e 100.
Na linha seguinte, define-se como 7 o nmero de chances possveis para que o jogador acerte o valor de x.
A varivel teste, que necessria ao final do programa na deciso de perdedor ou ganhador, atribudo o valor 1.
No loop for que s se repete ao mximo 7 vezes, nmero de chances, so colocados os comandos que
verificam se o palpite do jogador convm com o valor de x.
Utilizamos a funo int2str para transformar o inteiro n em uma string (cadeia de caracteres) que
guardada na varivel nun. Voc j vai entender o porque desta transformao ao observar as duas formas da funo
disp na linha seguinte.
disp(Seu palpite deve ser um nmero entre 0 e 100: );
Nesta forma da funo disp o termo entre apstrofos ( ) imprimido na tela na linha de prompt.
disp(Voc tem direito a num palpite(s));
Nesta Segunda forma, concatena-se o texto 1, o contedo da varivel e o texto 2. O que ocorre que esta
varivel, para poder ser imprimida junto com os textos, deve estar sob forma de string. Da a necessidade de se
transformar n em uma string atravs da funo str2num.
Depois, a funo input da linha mostrada abaixo, atribui a varivel palpite, o contedo digitado na linha de
prompt. O texto que aparecer na tela do MATLAB ao se executar esta funo o que fica entre os apstrofos ( ).
palpite = input(Entre com o palpite );
Entrando na estrutura de controle condicional, temos as seguintes rotinas:
1) Se palpite menor que x, a mensagem Seu palpite est abaixo do nmero aleatrio vai para tela.
2) Se palpite maior que x, a mensagem Seu palpite est acima do nmero aleatrio impressa na tela.
PET-EEL / 2000

34

Curso de Introduo ao MATLAB

3) Se palpite igual a x, a mensagem de Parabns! Voc acertou! vai para a tela.


Caso o jogador no acertar o nmero dentro das sete chances oferecidas, o loop for encerrado, k = 7, e a
ltima estrutura de controle condicional constata a condio de teste maior que 0 como verdade, teste = 1, e executa
o comando imprimindo na tela Voc perdeu!. Perceba que este programa apenas indica, mas no probe que o
jogador entre com valores de palpite tanto abaixo de 0 como acima de 100. Pense num acrscimo a ser feito neste
programa que solucione tal problema.

switch-case-end

Quando seqncias de comandos devem ser condicionalmente executadas, com base no uso repetido de um
teste de igualdade com um argumento comum, uma estrutura swicth-case-end pode ser usada. A estrutura tem a
seguinte forma:
switch <argumento>
case <teste_argumento1>
comandos1
case {<teste_argumento2, teste_argumento3, teste_argumento4>}
comandos2
otherwise
comandos 3
end
Aqui, o argumento um escalar ou um string de caracteres. Se o argumento escalar, o comando case
executa o comando <argumento> == <teste_argumento1>. Se for um string de caracteres, o teste executado
com o comando strcmp(<argumento>,<teste_argumento>). Nesta estrutura, no comando case, o argumento
comparado com os testes de argumento e, quando estes so iguais, a seqncia de comandos desta comparao
executada. Se todas as comparaes case forem falsas, ento o comando otherwise, que opcional, executado.
Um exemplo de estrutura switch-case-end demonstrado abaixo, onde criou-se o M-file centmetro.m para
converter valores de comprimento em diferentes unidades para centmetro.

PET-EEL / 2000

35

Curso de Introduo ao MATLAB

10.5 - Construindo funes com o MATLAB


At esta parte do curso, j citamos e utilizamos inmeras funes do MATLAB ( fix( ), input( ), plot( ),
etc...), agora veremos que podemos criar nossas prprias funes. Os arquivos destas funes tambm so
chamados de M-files, porm a diferena destes para os j vistos script files (arquivos com extenso .m em sua
forma simples - aleatori.m), que nestes arquivos a primeira palavra que deve ser escrita aps eventuais comentrios
function. Por isto o nome function files.
Diferentemente dos script files que operam com variveis de forma global na sesso de trabalho, os function
files trabalham com parmetros locais, os quais so declarados entre parnteses e separados por virgulas logo aps a
palavra function. Alm destes, qualquer varivel utilizada dentro de uma function file local.
Variveis Globais : so aquelas vlidas tanto dentro como fora do arquivo onde so geradas.
Variveis Locais: so aquelas vlidas somente dentro do arquivo onde so geradas.
Vejamos um exemplo simples de uma funo editada para se calcular o valor da hipotenusa de um tringulo
retngulo a partir de seus valores de cateto oposto e adjacente. Para editar a funo, utilize o editor de textos do
prprio MATLAB da mesma forma como feito anteriormente para os script files.

Depois de escrita a funo, temos algumas opes para salva-la:


1) Salvando no subdiretrio Bin - ao iniciar o MATLAB voc se encontrar no caminho c:\MATLAB\bin e
as funes salvas neste diretrio so compiladas a cada execuo. Isto significa que voc poder fazer alteraes nas
funes salvas desta maneira e senti-las na prxima execuo. As funes salvas s podero ser executadas dentro
diretrio bin, onde foram salvas.
2) Salvando nos subdiretrios especficos de funes do MATLAB - os subdiretrios contidos no caminho
c:\MATLAB\toolbox\MATLAB, como elfun, elmat, funfun, etc, so utilizados especificamente para guardar
funes do MATLAB. Quando MATLAB iniciado, ele varre estes subdiretrios catalogando, compilando e
guardando em memria, todas as funes neles contidas. Desta maneira, o usurio pode executar a funo
diretamente em qualquer diretrio apenas chamando-a. Ao se criar uma nova funo ou modifica-la, para que o
MATLAB a tenha cadastrada e atualizada, deve-se reiniciar o MATLAB.
3) Salvando as funes em subdiretrios exclusivos - caso voc prefira criar um subdiretrio exclusivo para o
armazenamento de suas funes, para execut-las voc precisar se encontrar no domnio deste subdiretrio onde as
gravou. A cada execuo o MATLAB compila e executa a funo da mesma forma que ocorre no sudiretrio bin.
Eventuais alteraes podem ser feitas e so atualizadas na execuo.
Para o exemplo criado da funo que calcula a hipotenusa, estaremos a salvando-a no subdiretrio de
trabalho (que foi setado com o auxlio da funo chdir).

PET-EEL / 2000

36

Curso de Introduo ao MATLAB

Elabore agora uma funo (divide.m) que d como resposta o resto de uma diviso inteira entre dois
nmeros.
Por fim, voc deve concluir que programar com MATLAB muito simples e que, alm de todas as funes
j oferecidas pelo MATLAB, voc poder criar outras diversas funes de acordo com sua necessidade.
10.6 - Debugando com o MATLAB
Nesta ltima parte do curso, veremos alguns comandos que auxiliam o programador no trabalho de criao
de novos programas. Freqentemente quando estamos programando em uma linguagem qualquer, nos deparamos
com alguns erros de programao que, por vezes, so de fceis localizao e correo. Porm, s vezes o
programador pode cometer um erro sutil, tornando-se difcil e demorado o trabalho de deteco e correo do
mesmo. Exatamente a que precisamos debugar o programa, ou seja, fazer um rastreamento, uma depurao, um
acompanhamento da execuo do programa de tal forma que se localizem os erros.
Uma maneira simples de se detectar erros analisar o valor das variveis usadas e verificar se estas
correspondem ao esperado. Trabalhando com script files, variveis globais, isso pode ser feito tranqilamente.
Porm quando trabalhamos com function files, variveis locais, isso no possvel, uma vez que as variveis usadas
dentro destas no so acessveis aps execuo.
Veremos trs comandos que so vlidos tanto para scripts como para function files.

Echo - No menu options podemos escolher turn echo on e isto faz com que as linhas de comandos sejam
mostradas na tela medida que o programa executado. Esta opo valida somente para script files. Para
desativar este comando selecione turn echo off.
Para se fazer o controle deste comando via teclado durante a execuo de um sicript file, digita-se na linha
de prompt echo on para ativar e echo off para desativar.
Para estender este comando a um function file e se permitir que os comandos dentro desta aparecem na
tela, digitamos na linha de prompt os comandos echo file on, onde em file substitui-se o nome da funo.
Para que todas as function files sejam ativadas, temos o comando echo on all.
Assim, muitos os erros podem ser mais facilmente detectados, pois ao ocorrerem no programa, na tela
estar sendo mostrado em que linha de comando do programa o problema acontece.
Keyboard Tambm de muita utilidade quando estamos debugando o programa, o keyboard deve ser
includo numa linha do programa em anlise fazendo com que a seqncia de execuo seja momentaneamente
suspendida, deixando o teclado do computador disponvel para que se verifique ou at se altere valores de variveis.
Este comando vale igualmente tanto para script files como para function files e na seqncia, para se
retornar execuo do programa, digita-se return seguido do <enter>.
Perceba que a grande utilidade deste recurso consiste no fato de que o programador pode interferir durante
a execuo do programa alterando e conferindo variveis. Com a prtica voc vai notar a importncia deste
comando para o soluo de problemas em programas.
PET-EEL / 2000

37

Curso de Introduo ao MATLAB

Pause Este comando faz com que a execuo de um programa seja interrompida at que o programador
aperte qualquer tecla. Este artifcio no permite que o programador atue alterando variveis durante execuo, mas
um bom recurso quando se deseja analisar, por exemplo, uma seqncia de plots que constituem a evoluo de um
sistema. Para utilizar este comando, deve-se incluir pause numa linha do programa em questo. Escrevendo-se
pause(n), interrompe-se a execuo por n segundos.

PET-EEL / 2000

38

Curso de Introduo ao MATLAB

11 - Exerccios
Exerccio 01:
Voc decidiu comprar um carro novo por R$ 18.500,00. O vendedor est lhe oferecendo duas opes
de financiamento: (1) uma taxa mensal de juros de 0,24%, paga durante quatro anos, ou (2) uma taxa mensal de
juros de 0,74%, tambm paga durante quatro anos, mas com um desconto de fbrica de R$ 1.500,00. Qual das duas
opes o melhor negcio?

R(1 R) M
, onde A o valor do emprstimo, R
M
(1 R) 1

Dados: valor mensal da prestao, P P A


a taxa de juros mensal e M o nmero de meses.
Soluo:

Exerccio 02:
O polnio, um elemento radioativo, tem uma meia-vida de 140 dias (perde metade da sua massa em
140 dias). Comeando com 10 gramas de polnio hoje, quanto vai restar ao fim de cad uma das prximas dez
semanas?
Dado: quantidade restante = quantidade inicial * (0,5)tempo/maia vida
Soluo:

PET-EEL / 2000

39

Curso de Introduo ao MATLAB

Exerccio 03:
Resolver o circuito mostrado na figura abaixo e apresentar as formas de onda para v S , v R 2 , v C , v R 4 .

Onde v S 5 cos(wt )[V ]

f 60 Hz
w 377 rad / s
Soluo:
i.

Escrevendo as trs equaes de malha para o circuito, temos:


VS ( R1 R2 ) I 1 R2 I 2
(1)

R2 I1 ( R2 R3 j

wC

)I 2 j

wC

I3 0

(2)

R2 I1 ( R2 R3 j

wC

)I 2 j

wC

I3 0

(3)

ii.

Montando as matrizes de impedncia e o vetor independente (fonte):

R1 R2
imp R2
0

R2

30
20
j
j
R2 R3
20 50 j 530 *10 6
wC
wC
j
0
0 j530 *10 6
R4 jwL j
wC
wC
0

0
j 530 *10 6
40 j 3769

Vs 5
source 0 0
0
0
iii.

Resolvendo o sistema de equaes lineares acima obtemos um "vetor de correntes"


V=RI
Source=Imp*Curent
Curent=Source*[Imp]-1

Entre com os dados no MATLAB, corrigindo eventuais erros nas linhas abaixo:
>> imp = [30 , -20 , 0 ; -20 , 50-530E-6j , 530E-6j ; 0 , 530E-6j , 40-3769j]
>> source = [5 , 0 , 0]
Relembrando alguns comandos j vistos, execute a inverso da matriz imp
>>
Com a matriz inversa, calculamos o "vetor de correntes".

PET-EEL / 2000

40

Curso de Introduo ao MATLAB

Exerccio 4:
A proposta do exerccio levantar o comportamento do circuito acima em CA.

Sendo R=1K, C=1F.


A anlise do circuito fornece a seguinte funo de transferncia:

vo
1

vi 1 jwRC
Vamos proceder com a soluo do exerccio criando um m-file:

Execute o programa e confira os resultados.

PET-EEL / 2000

41

Curso de Introduo ao MATLAB

PET-EEL / 2000

42

Curso de Introduo ao MATLAB

12 - Referncias bibliogrficas
1 HANSELMAN, Duane & LITTLEFIELD, Duane. MATLAB 5 Guia do Usurio
Editora Makron Books So Paulo 1a Edio 1999.
2 GEROMEL, J. C. PC-MATLAB
The MathWorks, Inc. 1986.
3 Fontes na Internet.

PET-EEL / 2000

43

Curso de Introduo ao MATLAB

13 Anexo: Listagem de Comandos

PET-EEL / 2000

44

Você também pode gostar