Você está na página 1de 45

UFJF - Universidade Federal de Juiz de Fora

Faculdade de Engenharia















CURSO DE MATLAB





















Eduardo M. Viana
Marcelo S. Neves

ABRIL, 2007
ii
SUMRIO
CAPTULO 1 INTRODUO.............................................................................. 1
1.1 LINHA DE COMANDO.......................................................................................... 1
1.2 COMANDOS E VARIVEIS................................................................................... 2
1.3 CONSTANTES..................................................................................................... 3
1.4 EDITOR.............................................................................................................. 3
1.5 MATRIZES SIMPLES ........................................................................................... 3
1.6 ELEMENTOS DA MATRIZ.................................................................................... 4
1.7 INFORMAES DA REA DE TRABALHO ............................................................ 5
1.8 FINALIZANDO E SALVANDO O ESPAO DE TRABALHO....................................... 6
1.9 NMEROS E EXPRESSES ARITMTICAS............................................................ 6
1.10 NMEROS COMPLEXOS E MATRIZES ................................................................. 7
1.11 FORMATOS DE SADA ........................................................................................ 7
CAPTULO 2 OPERANDO MATRIZES E VETORES..................................... 8
2.1 GERANDO VETORES .......................................................................................... 8
2.2 MATRIZES ESPECIAIS......................................................................................... 9
2.3 OPERANDO COM MATRIZES............................................................................... 9
2.4 OPERAES RELACIONAIS............................................................................... 10
2.5 OPERAES LGICAS ...................................................................................... 10
CAPTULO 3 FUNES MAIS USADAS EM ENGENHARIA..................... 12
3.1 ANLISE DE DADOS......................................................................................... 12
3.2 FATORAO LU.............................................................................................. 12
3.3 DECOMPOSIO EM AUTOVALORES E AUTOVETORES ..................................... 13
3.4 REPRESENTAO POLINOMIAL........................................................................ 13
3.5 DERIVADA....................................................................................................... 14
3.6 INTEGRAL........................................................................................................ 14
3.7 LAPLACE ......................................................................................................... 15
3.8 DIAGRAMA DE BODE ....................................................................................... 15
3.9 DIAGRAMA FASORIAL ..................................................................................... 16
CAPTULO 4 GRFICOS................................................................................... 18
4.1 FUNES ELEMENTARES DE PLOTAGEM.......................................................... 18
4.2 CRIANDO UM GRFICO.................................................................................... 18
4.3 SUBGRFICOS.................................................................................................. 19
4.4 FIGURA............................................................................................................ 19
4.5 FUNO AXIS.................................................................................................. 20
4.6 ADICIONANDO LINHAS A UM GRFICO EXISTENTE ......................................... 20
4.7 ESTILOS DE LINHAS E MARCADORES DE COR.................................................. 21
4.8 DADOS COMPLEXOS ........................................................................................ 21
4.9 FUNES ESPECIAIS PARA GRFICOS 2D......................................................... 22
4.10 EXPORTANDO GRFICOS ................................................................................. 22
4.11 GRFICOS 3D.................................................................................................. 23
4.11.1 Grficos de Linhas ................................................................................. 23
4.11.2 Meshgrid................................................................................................. 24
4.11.3 Grficos de Contorno............................................................................. 24

iii
CAPTULO 5 DECISES E LOOPS.................................................................. 26
5.1 INTRODUO................................................................................................... 26
5.2 COMANDOS CONDICIONAIS ............................................................................. 26
5.2.1 Estrutura if.............................................................................................. 26
5.2.2 Estrutura do if Estendido........................................................................ 27
5.2.3 Estrutura de ifs Aninhados.................................................................... 27
5.2.4 Swicth : Case .......................................................................................... 28
5.3 COMANDOS REPETITIVOS OU LAOS ............................................................... 29
5.3.1 Estrutura for ........................................................................................... 29
5.3.2 Comandos que Afetam a operao dos Loops ....................................... 30
5.3.2.1 Break............................................................................................... 30
5.3.2.2 Continue ......................................................................................... 30
5.3.3 A Estrutura while.................................................................................... 31
5.3.4 Loop while Infinito ................................................................................. 31
5.4 EXERCCIOS..................................................................................................... 33
CAPTULO 6 ARQUIVOS-M: SCRIPTS E FUNES .................................. 35
6.1 ARQUIVOS SCRIPTS ......................................................................................... 35
6.2 ARQUIVOS FUNO......................................................................................... 36
6.3 VARIVEIS GLOBAIS ....................................................................................... 37
6.4 STRINGS DE TEXTO.......................................................................................... 37
6.5 A FUNO EVAL ............................................................................................. 38
CAPTULO 7 ARQUIVOS E/S............................................................................ 39
7.1 ABRINDO E FECHANDO ARQUIVOS .................................................................. 39
7.2 LEITURA DE ARQUIVOS ................................................................................... 40
7.3 ESCREVENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS........................ 41
7.4 LENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS .................................. 41


Captulo 1 Introduo
1
Captulo 1 Introduo


O MATLAB (MATrix LABoratory) um software produzido pela MathWorks, Inc,
para computao tcnica e cientfica em geral. O MATLAB uma ferramenta
computacional muito importante para o estudante de Engenharia Eltrica e utilizada
durante todo o curso em vrias disciplinas. Os usos tpicos do MATLAB na Engenharia
Eltrica incluem:

Clculos matemticos;
Construo de grficos;
Desenvolvimento de algoritmos.

1.1 Linha de comando

O MATLAB funciona com linhas de comando, na janela principal. Nela colocada
qualquer instruo ao MATLAB. As linhas de comando so frequentemente da forma:

varivel = expresso

ou simplesmente

expresso

Podem ser compostas expresses com operadores e outros caracteres especiais, com
funes, e com nomes de variveis. A execuo da expresso produz uma matriz. A matriz
mostrada na tela e assume o nome da varivel definida na linha de comando para que
possa ser utilizada em uma outra situao. Se for omitido o nome da varivel e o sinal =, o
MATLAB cria automaticamente uma varivel com o nome ans. Por exemplo, digitando a
expresso:

>> sqrt(5)

ans =

2.2361

Uma linha de comando normalmente termina com a tecla Enter. Entretanto, se o
ltimo caractere for um ponto-e-vrgula (;), a varivel que produzida no mostrada na
tela. Se a expresso complicada de tal forma que no cabe em uma linha, utiliza-se os
trs pontos (...) seguidos pela tecla Enter para indicar que a linha de comando continua na
prxima linha. Pode-se formar nome de funes e variveis com uma letra seguida por
um nmero qualquer de letras e dgitos. O nome de varivel pode ser definido como uma
letra ou um conjunto de caracteres, havendo diferena entre letra minscula e letra
Captulo 1 Introduo
2
maiscula. Se mais de uma palavra for usada para representar uma varivel, deve ser
usado o sinal de sublinhado para ligar os nomes que representaro a varivel. Exemplo de
nomes de variveis: a, A, preo1, val3, custo_mdio, preo_de_venda, etc. O MATLAB
entende de forma diferente letras maisculas e minsculas. A e a no so a mesma
varivel. Os nomes das funes devem ser digitados em letras minsculas.
Os comandos que MATLAB executou durante uma sesso so armazenados at um
certo limite. Pode ser utilizada uma chamada rpida ao invs da digitao dos comandos
previamente digitados, atravs da especificao dos primeiros caracteres seguidos pela
tecla .

1.2 Comandos e variveis

Os comandos no MATLAB so sempre editados em letras minsculas. Alguns
comandos importantes no MATLAB:

Comando Descrio
; suprime a impresso de resultados
% serve para se colocar um comentrio
... que a linha de comando continua na prxima linha
ans varivel usada para assumir o resultado referente ao ltimo comando
Inf infinito (exemplo: digite 1/0)
NaN indeterminao (exemplo: digite 0/0)
Ctrl c interrompe comandos do MATLAB
! seguida de um comando do DOS, acionar este comando digitado
clc limpa a tela(semelhante ao comando CLS do DOS)
clear apaga as variveis do workspace

Um comando importante o comando help, que fornece informao sobre grande
parte dos tpicos do MATLAB. Sem nenhum argumento mostra uma lista de diretrios
que contm arquivos relacionados com MATLAB. Cada linha mostrada lista o nome de
um diretrio seguido por uma descrio do contedo do mesmo. Alguns diretrios so
associados com os comandos bsicos do MATLAB. Outros contm toolboxes, tais como
control e signal; esses possuem funes adicionais do MATLAB cobrindo reas de
aplicaes mais especializadas.
Para uma lista de funes relacionadas a um determinado diretrio, digita-se help
seguido pelo nome do mesmo. Aparece uma lista de comandos, funes e smbolos
especficos do MATLAB. O comando help seguido por estes comandos ou funes
fornece informaes sobre como utiliz-los em uma linha de comando.
Outra funo do MATLAB o lookfor que procura funes a partir de uma palavra-
chave especificada. Por exemplo, se for passado ao MATLAB o comando:

>> lookfor inverse

A seguinte resposta retornada:

Captulo 1 Introduo
3
INVHILB Inverse Hilbert matrix.
IPERMUTE Inverse permute array dimensions.
ACOS Inverse cosine.
ACOSH Inverse hyperbolic cosine.
...

Todas as funes onde aparecem a palavra inverse, so retornadas.


1.3 Constantes

O MATLAB vem ainda com algumas constantes definidas, so elas:

pi: 3,141592653
eps: 2,22 x 10
-16

i = 1
j = 1


1.4 Editor

O MATLAB 6.5 tem um editor de texto, onde possvel digitar programas
salvando-os em arquivos com extenso .m. Os arquivos com extenso .m so arquivos
executveis para o MATLAB. Para acionar o editor de textos no ambiente MATLAB,
acione sequencialmente, as opes do menu:

File
New
M-File

O editor ser aberto em outra janela, uma pgina em branco, onde podem ser
colocadas instrues ao MATLAB.


1.5 Matrizes Simples

MATLAB trabalha essencialmente com um tipo de objeto, uma matriz retangular
numrica (real ou complexa). Em algumas situaes, denominaes especficas so
atribudas a matrizes 1 por 1, que so os escalares, e a matrizes com somente uma linha ou
coluna, que so os vetores. Operaes e comandos no MATLAB so aplicados de maneira
natural, utilizando o conceito de matriz, como so indicados no papel. Pode-se entrar com
matrizes no MATLAB de diversas maneiras:

Entrar com uma lista explcita de elementos.
Gerar matrizes utilizando funes e linhas de comando do MATLAB.
Criar matrizes em arquivos-M.
Chamar matrizes de um arquivo de dados externo.
Captulo 1 Introduo
4
A maneira mais fcil de se declarar matrizes fazendo a explicitao da lista de
elementos na linha de comando, seguindo as convenes abaixo:

Separar os elementos da lista de elementos atravs de espaos ou vrgulas.
Colocar os elementos entre colchetes, [ ].
Usar (;) ponto-e-vrgula para indicar o fim de uma linha.

Por exemplo, entrando com a linha de comando:

>> A = [1 2 3; 4 5 6; 7 8 9]

resulta em:

A =

1 2 3
4 5 6
7 8 9

Pode-se, tambm, entrar matrizes de arquivos de extenso .m. Se um arquivo com o
nome de matriz.m contm as trs linhas de texto:

A = [ 1 2 3
4 5 6
7 8 9 ];

Ento o comando:

>> matriz

atribui matriz A os dados correspondentes.


1.6 Elementos da Matriz

Elementos de matriz podem ser quaisquer expresses que o MATLAB permite; por
exemplo:

>> x = [-1.3 sqrt(3) (1+2+3)*4/5]

resulta em

x =

-1.3000 1.7321 4.8000

Elementos individuais de matrizes podem ser referenciados individualmente com
ndices dentro de parnteses, ( ). No exemplo anterior:

>> x(5) = abs(x(1))


Captulo 1 Introduo
5
x =

-1.3000 1.7321 4.8000 0 1.3000

Perceba que o tamanho de x aumenta automaticamente para acomodar o novo
elemento, e os elementos indefinidos so assumidos como sendo zero. Podem-se construir
grandes matrizes utilizando matrizes menores como elementos. Por exemplo, para
acrescentar uma nova linha matriz A:

>> r = [10 11 12];
>> A = [A; r]

Isto resulta em

A =

1 2 3
4 5 6
7 8 9
10 11 12

Matrizes menores podem ser extradas de matrizes grandes utilizando os dois pontos
(:). Por exemplo

>> A = A(1:3,:);

fornece a seguinte matriz

A =

1 2 3
4 5 6
7 8 9

e faz com que retorne as trs primeiras linhas e todas as colunas da matriz original A
para a matriz A.


1.7 Informaes da rea de Trabalho

Os exemplos previamente executados criaram variveis que so armazenadas do
espao de trabalho do MATLAB. Para listar as variveis armazenadas use o comando:

>> who

Para verificar uma listagem mais completas sobre as variveis armazenadas deve-se
utilizar o comando whos, o qual traz informaes sobre o nome, a dimenso da matriz
correspondente, o nmero de elementos dessa matriz, entre outros.


Captulo 1 Introduo
6
1.8 Finalizando e Salvando o Espao de Trabalho

Para finalizar o MATLAB digite quit ou exit. Terminando uma sesso do MATLAB,
voc apaga as variveis do espao de trabalho. Antes de terminar, pode-se salvar as
variveis com o comando save. Este comando salva todas as variveis em um arquivo em
disco chamado matlab.mat. Na prxima vez que MATLAB chamado, pode-se executar o
comando load ou load matlab.mat para restaurar o espao de trabalho com as variveis de
matlab.mat.
Podem ser utilizados os comandos save e load em arquivos com outros nomes, ou
salvar somente algumas variveis. O comando save temp salva as variveis em um arquivo
de nome temp.mat. O comando

>> save temp X Y Z

salva as variveis X, Y e Z no arquivo temp.mat.


1.9 Nmeros e Expresses Aritmticas

O MATLAB utiliza a notao decimal convencional, com ponto decimal e sinal
negativo opcionais, para nmeros. Pode-se incluir um fator de escala em potncia de dez
ou uma indicao de nmero complexo como sufixo. Alguns exemplos de nmeros
vlidos so:

3 -99 0.0001 9.6397238 1.60210E-20 6.02252e23 -3.141159i
3e5i
Podem ser construdas expresses com os operadores de aritmtica usuais e as regras
de precedncia:

Operador Funo
+ Adio
- Subtrao
* Multiplicao
/ Diviso por nmero direita
\ Diviso por nmero esquerda
^ Potncia

O MATLAB possui tambm funes matemticas elementares encontradas em
calculadoras cientficas tais como abs, sqrt, log, sin e etc. Funes podem ser facilmente
criadas atravs dos arquivos-M. Algumas funes simplesmente retornam valores
especiais comumente utilizados, como a funo pi que retorna o valor da constante.





Captulo 1 Introduo
7
1.10 Nmeros Complexos e Matrizes

O MATLAB permite nmeros complexos, indicados pela funo especial i ou j, em
todas as operaes ou funes. Assim, temos:

>> z = 3 + 4*i

Uma outra forma :

>> w = r*exp(i*theta)

Quando forem entrados nmeros complexos como elementos de matriz com os
colchetes, deve ser evitado qualquer espao em branco. Uma expresso como 1 + 5*i, com
espaos em volta do sinal +, representa dois nmeros. Isto tambm vlido para nmeros
reais; um espao antes do exponencial, como em 1.23 e-4, causa um erro.
O nome de uma funo do MATLAB tambm pode ser usado como o nome de uma
varivel. Quando utilizado como uma varivel, a funo original se torna indisponvel no
espao de trabalho at que a varivel seja apagada.


1.11 Formatos de Sada

O comando format pode ser utilizado para controlar o formato numrico mostrado
aps a execuo de uma linha de comando. Se todos os elementos de uma matriz forem
inteiros exatos, a matriz mostrada em um formato sem pontos decimais. Se ao menos
um elemento de uma matriz no um inteiro exato, vrios formatos de sada so possveis.
O formato padro, chamado de short format, mostra aproximadamente cinco dgitos
decimais significativos. Os outros formatos mostram mais dgitos significativos ou
utilizam notao decimal. Como um exemplo, suponha:

>> x = [4/3 1.2345e-6]

Os formatos e as sadas resultantes para este vetor so:

Comando Resultado numrico
format short 1.3333 0.0000
format short e 1.3333e+00 1.2345e-06
format long 1.33333333333333 0.00000123456000
format long e 1.333333333333333e+00 1.234500000000000e-06
format bank 1.33 0.00

O comando help format mostra mais alguns tipos possveis de formato.


Captulo 2 Operando Matrizes e Vetores
8
Captulo 2 Operando Matrizes e Vetores

2.1 Gerando Vetores

Os dois pontos (:) representam um caractere importante no MATLAB. A linha de
comando:

>> x = 1:5

gera um vetor linha contendo os nmeros de 1 a 5 com incremento de uma unidade. Desta
forma produzido o vetor

x =

1 2 3 4 5

Pode-se utilizar incrementos diferentes da unidade como em:

>> y = 0: 2: 8

que resulta em um vetor linha

y =

0 2 4 6 8

comeando em zero e terminando em oito com incremento de dois. Para se obter um vetor
coluna basta transpor o vetor linha gerado.
Outras funes para gerao de vetor incluem o logspace, o qual gera vetores
espaados logaritmicamente, e o linspace, que permite que voc especifique o nmero de
pontos ao invs do incremento. Exemplo:

>> z = linspace(0,2,5)

produz:

z =

0 0.5000 1.0000 1.5000 2.0000







Captulo 2 Operando Matrizes e Vetores
9
2.2 Matrizes Especiais

O MATLAB apresenta algumas funes teis para gerar matrizes:

Funo Descrio
zeros Produz uma matriz com elementos nulos.
ones Produz uma matriz com elementos unitrios.
rand Elementos randmicos uniformemente distribudos.
randn Elementos randmicos normalmente distribudos.
eye Matriz identidade.
linspace Vetor espaado linearmente.
logspace Vetores espaados logaritmicamente.


2.3 Operando com Matrizes

A linha de comando B = A indica que a varivel B recebe a transposta da matriz A.
Para matrizes complexas, teremos que a linha de comando acima fornece a transposta
complexa conjugada. Assim, para obtermos somente a transposta de uma matriz complexa
devemos fazer B = conj (A) ou transp(A).
A adio e subtrao de matrizes pode ser feita entre matrizes de mesma dimenso
ou entre um escalar e uma matriz. Na primeira, cada elemento de uma matriz somado ou
subtrado do correspondente na outra matriz. Na segunda forma, o escalar adicionado ou
subtrado de todos os elementos do outro operando.
A operao de multiplicao definida quando o nmero de colunas da primeira
matriz for igual ao nmero de linhas da segunda matriz. Dependendo das dimenses
envolvidas, o resultado pode ser uma matriz, um vetor ou, at mesmo, um escalar. O
produto de um escalar por uma matriz resulta em todos os elementos da matriz
multiplicados pelo escalar.
Se A uma matriz quadrada no-singular, ento A\B e B/A corresponde
formalmente a multiplicao esquerda e direita de B pela inversa de A; ou seja,
inv(A)*B e B*inv(A), mas o resultado obtido diretamente sem o clculo da inversa. Em
geral
X = A\B uma soluo para A*X = B
X = B/A uma soluo para X*A = B
A diviso esquerda, A\B, definida sempre que B tiver o mesmo nmero de linhas
que A. Dependendo se A for quadrada ou no, deve-se usar algum mtodo de fatorao.
A diviso normal de um escalar pelo outro feita fazendo-se x/y.
A expresso A^p eleva A a p-sima potncia e definida se A uma matriz
quadrada e p um escalar.
O MATLAB trata expresses como exp(A) e sqrt(A) como operaes de vetores,
definidas em cada elemento de A. As funes elementares de matrizes incluem






Captulo 2 Operando Matrizes e Vetores
10
Funo Descrio
poly polinmio caracterstico
det determinante
trace trao da matriz
exp exponencial de cada elemento da matriz
log logaritmo de cada elemento da matriz
sqrt raiz quadrada de cada elemento da matriz
poly polinmio caracterstico
rot90 Rotaciona a matriz de 90 graus.
fliplr Inverte a matriz da esquerda para a direita.
flipud Inverte a matriz de cima para baixo.
diag Extrai ou cria diagonal.
tril Tringulo inferior.
triu Tringulo superior.
reshape Altera o formato.
Transposio.


2.4 Operaes Relacionais

Seis operadores relacionais esto disponveis para a comparao de duas matrizes de
dimenses idnticas.

Operador Descrio
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
== Igual
~= Diferente

O MATLAB compara os elementos correspondentes de cada matriz.; o resultado
uma matriz de elementos unitrios e elementos nulos, com 1 representando verdadeiro e 0
representando falso.


2.5 Operaes Lgicas

Os operadores &, |, ~ correspondem aos operadores lgicos e, ou e no.
Exemplos:
C = A & B uma matriz cujo os elementos so 1s onde ambas as matrizes A e B so
elementos no-nulos, e 0s onde uma das matrizes ou ambas so elementos nulos.
C = A | B uma matriz cujo os elementos so 1s onde tanto A ou B possuem
elementos no-nulos, e 0s onde ambas possuem elementos nulos.
B = ~A uma matriz cujo os elementos so 1s onde a matriz A um elemento nulo,
e 0s quando A um elemento no-nulo.
Captulo 2 Operando Matrizes e Vetores
11
Todas as operaes acima so vlidas apenas para quando A e B possuem mesma
dimenso, ou quando uma das duas matrizes um escalar. As funes lgicas e relacionais
do MATLAB so:

Funo Descrio
any condies lgicas.
all condies lgicas.
find encontra os ndices da matriz de valores lgicos.
exist verifica a existncia de variveis.
isnan detecta se algum elemento da matriz NaN.
isinf detecta se algum elemento da matriz Inf.
finite verifica os valores finitos da matriz.
isempty detecta matrizes vazias.
isstr detecta variveis string.
isglobal detecta variveis globais.
issparse detecta matrizes esparsas.











Captulo 3 Funes mais Usadas em Engenharia
12
Captulo 3 Funes mais Usadas em Engenharia

3.1 Anlise de Dados

Um grupo de funes utilizadas para anlise de dados mostrado abaixo:


Funo Descrio
max valor mximo
min valor mnimo
mean valor mdio
std desvio mdio
sort ordenar
sum soma dos elementos
prod produto dos elementos
cumsum soma acumulativa dos elementos
cumprod produto acumulativo dos elementos
hist histograma


Quando os argumentos forem vetores, no ir importar se o vetor orientado por
linha ou por coluna. Se o argumento for uma matriz, as funes operaro orientadas por
coluna. Desta forma, se voc aplicar a funo max a uma matriz, o resultado um vetor
linha contendo o valor mximo de cada coluna.

3.2 Fatorao LU

O mtodo de fatorao mais bsico expressa uma matriz qualquer como o produto
de duas matrizes essencialmente triangulares, sendo uma delas a permutao de uma
matriz triangular inferior e a outra uma matriz triangular superior. Esta fatorao
frequentemente chamada de LU.
A linha de comando descrita como:

>> [L,U] = lu(A)

onde L a permutao da matriz triangular inferior e U a matriz triangular superior.






Captulo 3 Funes mais Usadas em Engenharia
13
3.3 Decomposio em Autovalores e Autovetores

Se A uma matriz n-por-n, os n nmeros que satisfazem Ax = x so os autovalores
de A. Eles so encontrados utilizando:

>> eig(A)

que retorna os autovalores em uma vetor coluna. Se A real e simtrica, os autovalores
so reais. Mas se A no simtrica, os autovalores frequentemente so nmeros
complexos. Para se obter os autovalores e os autovetores de uma vez basta utilizar a
seguinte linha de comando:

>> [X,D] = eig(A)

onde os elementos da diagonal de D so os autovalores e as colunas de X so os
autovetores correspondentes tais que AX = XD.


3.4 Representao Polinomial

O MATLAB representa polinmios como vetores linha contendo os coeficientes na
ordem decrescente de potncia. Por exemplo, a equao caracterstica da matriz:

A = [
1 2 3
4 5 6
7 8 0 ]

computada atravs de:

>> p = poly(A)

p =
1 -6 -72 -27

Esta a representao do MATLAB para o polinmio S
3
6S
2
72S - 27. As razes desta
equao so dadas por:

>> r = roots(p)

r =
12.1229
-5.7345
-0.3884

As razes da equao caracterstica so os autovalores da matriz A. Pode-se obter o
polinmio original atravs das razes encontradas acima

>> p2 = poly(r)

p2 =
1 -6 -72 -27
Captulo 3 Funes mais Usadas em Engenharia
14
Considere os polinmios a(S) = S
2
+ 2S + 3 e b(S) = 4S
2
+ 5S + 6. O produto dos
polinmios feito atravs da convoluo dos coeficientes:

>> a = [1 2 3]; b = [4 5 6];
>> c = conv(a,b)

c =
4 13 28 27 18

Uma lista completa das funes polinomiais inclui:

Funo
Descrio
poly
polinmio caracterstico
roots
razes do polinmio
polyval
avalia o polinmio com o argumento substituindo a varivel
polyvalm
avalia o polinmio com o argumento sendo uma matriz
conv
multiplicao
deconv
diviso
residue
expanso em fraes parciais
polyder
derivada do polinmio
polyfit
ajuste do polinmio


3.5 Derivada

O MATLAB calcula a derivada de expresses matemticas. O comando diff(S,v)
calcula a derivada da expresso S em relao varivel v. Exemplo:

>> diff('s*v','v')

ans =

s


3.6 Integral

O MATLAB faz integrao de expresses matemticas. O comando int(S,v,a,b) calcula
a integral de S em relao varivel v definida no intervalo de a a b. Exemplo:

>> int('s*v','v',0,1)

ans =

1/2*s

Captulo 3 Funes mais Usadas em Engenharia
15
3.7 Laplace

O comando L = laplace(F) calcula a transformada de Laplace da expresso F com
relao a varivel independente t. O retorno padro uma expresso em funo de s. Por
definio L(s) = int(F(t)*exp(-s*t),0,inf), onde a integrao ocorre com
relao a t. Exemplo:

>> syms s
>> F = sin(s);
>> L = laplace(F)

L =

1/(t^2+1)

O comando ilaplace(L) calcula a transformada inversa de Laplace:

>> F = ilaplace(L)

F =

sin(x)


3.8 Diagrama de Bode

Um diagrama de Bode constituido de dois grficos: um o grfico do modulo em
dB de uma funo de transferencia senoidal e o outro o grfico do angulo de fase.
Ambos so traados em relao frequencia em escala logartmica. Os diagramas de Bode
so bastante utilizados em anlise de resposta em frequncia, onde se deseja estudar a
resposta em regime permanente de um sistema sujeito a uma entrada senoidal. Bastante
utilizado no estudo de sistemas de controle e cicruitos eltricos.
O commando bode calcula mdulos e ngulos de fase da resposta em frequncia de
sistemas contnuos, lineares e invariants no tempo. Quando o commando bode digitado
sem argumentos do lado esquerdo, um diagrama gerado na tela do computador. Seja um
sistema com a seguinte funo de transferncia:

25 4
25
) (
2
+ +
=
s s
s G

Se o sistema estiver definido de forma ( ) 25 = s num e ( ) 25 42
2
+ + = s s den , os
comandos:

>> num = [0 0 25];
>> den = [1 4 25];
>> bode(num,den)
>> grid
>> title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)')

criam o diagrama de Bode da funo especificada:

Captulo 3 Funes mais Usadas em Engenharia
16


Se for desejvel traar o diagrama de Bode para o intervalo entre 0,01 e 1000 rad/s,
deve-se utilizar os seguintes comandos:

>> num = [0 0 25];
>> den = [1 4 25];
>> w = logspace(-2,3,100);
>> bode(num,den,w)
>> grid
>> title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)')

Ressultando em:




3.9 Diagrama Fasorial

No MATLAB tambm possvel construir diagramas fasoriais, frequentemente
utilizados em engenharia. O comando:

>> [Vr,Vi] = pol2cart(0,127);
>> compass(Vr,Vi)
>> hold on
>> [Vr,Vi] = pol2cart(2*pi/3,127);
>> compass(Vr,Vi)
>> [Vr,Vi] = pol2cart(-2*pi/3,127);
Captulo 3 Funes mais Usadas em Engenharia
17
>> compass(Vr,Vi)
>> hold off
>> title('Tensoes')

As linhas de comando anteriores plotam o diagrama fasorial considerando tenses
Va, Vb e Vc, como mostrado:
















Captulo 4 Grficos
18
Captulo 4 Grficos

4.1 Funes Elementares de Plotagem

A lista a seguir relaciona as funes que produzem grficos simples. Estas funes
se diferem apenas na maneira como apresentam as escalas dos eixos dos grficos. Cada
uma aceita a entrada na forma de vetores ou matrizes e, automaticamente, definem as
escalas dos eixos de modo que os dados de entrada fiquem bem acomodados.

Funo Descrio
plot Cria um grfico de vetores ou de colunas de matrizes.
loglog Cria um grfico utilizando escalas logartmicas para ambos os eixos.
semilogx
Cria um grfico utilizando escala logartmica no eixo x e escala linear no eixo
y.
semilogy
Cria um grfico utilizando escala logartmica no eixo y e escala linear no eixo
x.

Pode-se adicionar ttulo, nome aos eixos, linhas de grade e textos a qualquer grfico
utilizando:

Funo Descrio
title Adiciona um ttulo ao grfico.
xlabel Define um nome para a varivel do eixo x.
ylabel Define um nome para a varivel do eixo y.
text Adiciona um texto em lugar especfico.
gtext Adiciona um texto ao grfico utilizando o mouse.
grid Ativa as linhas de grade.


4.2 Criando um Grfico

Se y um vetor, o comando plot(y) produz um grfico linear dos elementos de y
versus o ndice dos elementos de y. Se so especificados dois vetores como argumentos, o
comando plot(x,y) produz um grfico de y versus x.
Pode-se, tambm, especificar vrios grupos de dados e definir o estilo de linha e a
cor que sero usados em cada grupo em uma nica chamada ao comando plot:

>> f = 60;
>> t = 0:pi/100:4*pi;
>> w = 2*pi*f;
>> va = sin(w*t);
>> vb = sin(w*t + 2*pi/3);
>> vc = sin(w*t 2*pi/3);
>> plot(t,va,r-,t,vb,g,t,vc,b-)

Captulo 4 Grficos
19
Os comandos acima produzem um grfico de trs variveis va, vb e vc em relao
varivel t. O primeiro grupo de dados, va, plotado com uma linha slida vermelha,
enquanto o segundo grupo, vb, plotado com uma linha slida verde e o grupo vc com
uma linha slida azul. Podem ainda ser adicionados ao grfico um ttulo e nome aos eixos:

>> title(Tenses ABC)

>> xlabel(t)

>> ylabel(Tenso)


4.3 Subgrficos

Vrios grficos podem ser mostrados em uma mesma janela ou impressos em uma
mesma folha de papel com a funo subplot. Sintaxe do comando subplot:

subplot(m,n,p): divide a janela em uma matriz m por n de subregies e
seleciona a p-sima subregio para o grfico que est sendo plotado no momento.

Os grficos so numerados comeando pela primeira linha na parte superior da
janela, da esquerda para a direita, em seguida, a segunda linha tambm da esquerda para a
direita e assim por diante. Por exemplo:

>> f = 60;
>> t = 0:pi/100:4*pi;
>> w = 2*pi*f;
>> va = sin(w*t);
>> vb = sin(w*t + 2*pi/3);
>> vc = sin(w*t 2*pi/3);
>> subplot(1,3,1)
>> plot(t,va);
>> subplot(1,3,2)
>> plot(t,vb);
>> subplot(1,3,3)
>> plot(t,vc);


4.4 Figura

A funo figure permite que novas janelas com figuras, sejam abertas. Formas
comuns de utilizao da funo figure:

figure: faz com que seja aberta uma nova janela grfica.
figure(n): faz com que a n-sima figura se torne a figura atual; o resultado
dos comandos grficos subseqentes so mostrados nesta janela. Se a figura n no
existe, o MATLAB cria uma usando o prximo nmero disponvel (no
necessariamente n).
Captulo 4 Grficos
20
4.5 Funo Axis

A funo axis possui vrias opes que permitem que sejam personalizados escala e
orientao. O MATLAB encontra, por default, os valores de mximo e mnimo da funo
a ser plotada e escolhe uma rea de plotagem apropriada. Porm, pode-se redefinir os
limites pelo ajuste dos eixos utilizando a funo axis:

>> axis([xmin xmax ymin ymax])

Algumas formas de utilizao da funo axis:

axis(auto): retorna a escala do eixo para seu valor padro, o modo
automtico.
v = axis: salva a escala dos eixos do grfico que est ativo no vetor v. Para
que grficos subseqentes possuam os mesmos limites, basta entrar com o
comando axis(v).
axis(axis) congela a escala nos valores que esto sendo usados.
axis(ij): define no MATLAB seu modo de eixo matriz. A origem do
sistema de coordenadas se encontra no canto superior esquerdo. O eixo i vertical
e numerado de cima para baixo e o eixo j horizontal e numerado da esquerda
para a direita.
axis(xy): define MATLAB com os eixos cartesianos. A origem do sistema
de coordenadas se encontra no canto inferior esquerdo. O eixo x horizontal e
numerado da esquerda para a direita e o eixo y vertical e numerado de baixo
para cima.
axis(on): e axis(off) fazem com que o nome do eixo e os
marcadores apaream ou no, respectivamente, junto com o grfico.


4.6 Adicionando Linhas a um Grfico Existente

Podem ser adicionadas linhas a um grfico j existente utilizando o comando hold.
Quando hold ativado, o MATLAB no remove as linhas j existentes; ao invs disto,
adiciona novas linhas aos eixos existentes. Pode ser que os eixos sejam redefinidos se os
novos dados se encontrarem fora da escala do antigo eixo. Por exemplo, a linha de
comando abaixo traa as trs curvas em uma mesma figura:

>> hold on
>> plot(va,)
>> plot(vb,-.)
>> plot(vc,--)
>> hold off

Captulo 4 Grficos
21
4.7 Estilos de Linhas e Marcadores de Cor

Como foi citado, pode ser passada uma string de caracteres como um argumento
para a funo plot de modo a especificar vrios estilos de linhas, smbolos de traado e
cores. Na linha de comando:

>> plot(x,y,S)

S uma string envolvida por aspas e construda com os caracteres mostrados na tabela
abaixo:

Smbolo Cor Smbolo Estilo de Linha
y amarelo . ponto
m magenta o crculo
c ciano x x
r vermelho + sinal positivo
g verde * asterisco
b azul - slida
w branco : pontilhada
k preto -. trao e ponto
-- tracejada

Por exemplo, o comando:

>> plot(X,Y,b*)

plota um asterisco azul em cada ponto de dado. Se no for especificada uma cor, a funo
plot automaticamente utiliza a cor azul e linha slida.


4.8 Dados Complexos

Quando os argumentos a serem plotados so complexos, a parte imaginria
ignorada exceto quando o comando plot dado simplesmente com um argumento
complexo. Para este caso especial, o comando um atalho para um grfico da parte real
em funo da parte imaginria. Portanto:

>> Z = 3 + 4i;
>> plot(Z)

onde Z um vetor ou uma matriz complexa, equivalente a

>> plot(real(Z),imag(Z))






Captulo 4 Grficos
22
4.9 Funes especiais para Grficos 2D

O MATLAB inclui uma variedade de funes especiais para grficos, necessrias
em muitas aplicaes. A lista a seguir descreve algumas delas.

Funo Descrio
bar cria um grfico do tipo barra.
errorbar cria um grfico com barras de erro.
feather cria um grfico de ngulos e mdulos de nmeros complexos onde a
representao dos pontos feita por setas com comeo em pontos igualmente
espaados ao longo do eixo horizontal.
fplot avalia uma funo e plota os resultados.
hist cria um histograma.
polar cria um grfico em coordenadas polares dos ngulos em funo dos raios.
quiver cria um grfico do gradiente ou de outro campo do vetor.
rose cria um histograma de ngulo.
stairs cria um grfico similar a um grfico de barra, mas sem as linhas internas.
fill desenha um polgono e o preenche com cores slidas ou interpoladas.


4.10 Exportando Grficos

Os grficos criados no MATLAB podem ser exportados como figuras, com vrias
extenses de arquivo de imagem, tais como, .bmp, .jpeg, .eps entre outras. Para tanto,
escolha, na figura, o menu Edit, depois em Export e selecione o nome e a extenso e o
diretrio no qual deseja salvar a figura e clique em salvar.




















Captulo 4 Grficos
23
4.11 Grficos 3D

O MATLAB possui uma variedade de funes para exibir dados em 3-D. Algumas
plotam linhas em trs dimenses, enquanto outras desenham superfcies e figuras
utilizando pseudocores para representar uma quarta dimenso. A lista a seguir mostra
funes comumente utilizadas em grficos 3-D:

Funo Descrio
plot3 plota linhas e pontos em 3-D.
contour, contour3 cria grficos de contorno.
pcolor desenha uma matriz retangular de clulas cujas cores so
determinadas pelos elementos da matriz.
image mostra uma matriz como uma imagem atravs do mapeamento dos
elementos da matriz pelo mapa de cores ativo.
mesh, meshc, meshz cria grficos 3-D em perspectiva dos elementos da matriz,
mostrados como alturas acima de um plano delimitado.
surf, surfc, surfl cria grficos 3-D em perspectiva dos elementos da matriz,
mostrados como alturas acima de um plano delimitado. O grfico
formado pela gerao de uma superfcie colorida utilizando os
pontos como vrtices de um quadriltero.

fill3 cria um polgono 3-D a o preenche com cores slidas ou
interpoladas.
zlabel define um nome para a varivel do eixo z.
clabel define identificaes para os contornos em grficos de contorno.
view ajusta o ponto de viso atual onde os parmetros de entrada podem
ser o azimute (rotao horizontal) e a elevao vertical, ambos em
grau, ou as coordenadas cartesianas.


4.11.1 Grficos de Linhas

O anlogo tridimensional da funo plot a funo plot3. Se x, y e z so vetores de
mesmo tamanho, o comando:

>> plot3(x,y,z)

gera uma linha no espao tridimensional que passa pelos pontos de coordenadas dadas
pelos elementos dos vetores x, y e z, e depois produz uma projeo bidimensional desta
linha na tela.. Por exemplo:

>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t);

produz um helicide.
Se X, Y e Z so trs matrizes de mesma dimenso, comando:

>> plot3(X,Y,Z)
Captulo 4 Grficos
24
plota as linhas obtidas pelas colunas de X, Y e Z. Para especificar vrios tipos de linhas,
smbolos grficos e cores, usa-se a linha de comando plot3(X,Y,Z,s), onde s uma string
de 1, 2 ou 3 caracteres formada pelos caracteres listados com a funo plot.

>> plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3.s3,...)

combina os grficos definidos por cada grupo de elementos (x, y, z, s), onde x, y e z so
vetores ou matrizes e s so as strings.


4.11.2 Meshgrid

O MATLAB define uma superfcie mesh pelas coordenadas z dos pontos, situando-a
acima de uma rea retangular no plano x-y. Desta forma, um grfico formado pela
ligao dos pontos adjacentes com linhas retas. Superfcies mesh so teis para
visualizao de matrizes que so muito grandes para serem mostradas na forma numrica,
e funes grficas de duas variveis. O primeiro passo para que seja mostrada uma funo
de duas variveis, z = f(x,y), gerar as matrizes X e Y consistindo de linhas e colunas
repetidas, respectivamente, sobre o domnio da funo. Depois utiliza-se estas matrizes
para avaliar e plotar a funo.
A funo meshgrid transforma o domnio especificado por dois vetores, x e y, em
matrizes, X e Y. Utiliza-se estas matrizes para avaliar funes de duas variveis. As linhas
de X so cpias do vetor x e as colunas de Y so cpias do vetor y. Para ilustrar o uso da
funo meshgrid, considere a funo sin(R)/r, tambm chamada funo sinc. Para avaliar
esta funo entre -8 e 8, tanto em x como em y, passa-se como argumento dois vetores
para a funo meshgrid criando as matrizes necessrias:

>> x = -8:.5:8;
>> y = x;
>> [X,Y] = meshgrid(x,y);
>> R = sqrt(X.^2 + Y.^2) + eps;
>> Z = sin(R)./R;
>> mesh(Z)

A matriz R contm a distncia dos pontos ao centro da matriz, o qual a origem. A
utilizao da constante eps evita a diviso por zero, causando erro numrico.


4.11.3 Grficos de Contorno

O MATLAB possui funes para gerar grficos de contorno tanto para 2-D como
para 3-D. As funes contour e contour3 geram grficos compostos de linhas obtidas da
matriz entrada como argumento. Existe a opo de se especificar o nmero de linhas de
contorno, a escala dos eixos e o valor dos dados com os quais se desenhar as linhas de
contorno. Por exemplo, a linha de comando abaixo cria um grfico de contorno contendo
20 linhas de contorno e usando o arquivo-M peaks para gerar os dados de entrada.

>> contour(peaks,20);

Captulo 4 Grficos
25
Os crculos de contorno agem da mesma forma que a funo plot com relao a
estilos de linha, marcadores e cores. Para criar um grfico de contorno 3-D com os
mesmo dados, utiliza-se a funo contour3:

>> contour3(peaks,20)

Captulo 5 Decises e Loops
26
Captulo 5 Decises e Loops

5.1 Introduo

Em MATLAB existem algumas estruturas que controlam o fluxo de dados. Estas
permitem ao programador controlar e alterar a seqncia de execuo do programa.
As estruturas de controle de fluxo so fundamentais para qualquer linguagem de
programao. Sem elas s haveria uma maneira do programa ser executado: de cima para
baixo, comando por comando. No haveria condies para que comandos fossem
executados, repeties de comandos ou blocos de comando, ou saltos de linhas de cdigo.
A linguagem MATLAB possui diversos comandos de controle de fluxo que sero
descritos a seguir.


5.2 Comandos Condicionais

So estruturas utilizadas para selecionar comandos ou blocos de comandos que
devem ser executados ou no, dependendo de determinadas condies.


5.2.1 Estrutura if

A estrutura bsica if permite que o programa execute uma linha de comando ou um
bloco de comandos , se a condio dada por uma expresso for verdadeira.
Representa uma tomada de deciso do tipo SE isto ENTO aquilo.

Sintaxe:
if (<condio>)
<comandos>;
end

A condio do comando if uma expresso que ser avaliada. Se a expresso for
falsa os comandos no sero executados, caso contrrio os comandos sero executados. O
bloco comandos pode ser um bloco de cdigos ou apenas um comando simples.









Captulo 5 Decises e Loops
27
5.2.2 Estrutura do if Estendido

Sintaxe:
if (<condio>)
<comandos1>;
else
<comandos2>;
end

Onde qualquer dos blocos <comandosX> pode ser um nico comando, um bloco
de comandos ou nada (no caso de comandos vazios).
Podemos pensar no comando else como sendo um complemento do comando if. A
expresso da condio ser avaliada. Se ela for verdadeira <comandos1> ser executado.
Se for falsa <comandos2> ser executado. importante nunca esquecer que, quando
usamos a estrutura if-else-end, estamos garantindo que uma das duas declaraes ser
executada. Nunca sero executadas as duas ou nenhuma delas.
Pode tambm ser usada a estrutura if-elseif-end.

Sintaxe:
if (<condio1>)
<comandos1>;
elseif (<condio2>)
<comandos2>;
elseif (<condio3>)
<comandos3>;
end

Neste caso <comandosX> s ser executado se <condioX> for verdadeira. Se
por exemplo <condio1> for verdadeira, ento ser executado <comandos1>. Os
comandos subseqentes no sero executados mesmo que as respectivas condies sejam
verdadeiras.


5.2.3 Estrutura de ifs Aninhados

O comando a ser executado quando a condio de uma sentena da estrutura if for
satisfeita pode ser um outro if.

Sintaxe:
if (<condio1>)
if (<condio2>)
<comandos1>;
end
else
<comandos2>;
end

Se a <condio1> for verdadeira o programa verifica se a <condio2>
verdadeira. Caso seja executado <comandos1>. Caso <condio1> seja falsa executado
<comandos2>. Se <condio1> for verdadeira, mas <condio2> for falsa, no
executado nenhum comando.
Para avaliar duas ou mais condies podem ser usadas as seguintes sintaxes:

Captulo 5 Decises e Loops
28
Sintaxe:
if (<condio1> & <condio2>)
<comandos1>
else
<comandos2>;
end

Se <condio1> e <condio2> forem verdadeiras ser executado <comandos1>.
Caso uma das condies ou ambas forem falsas ser executado <comandos2>.

Sintaxe:
if (<condio1> | <condio2>)
<comandos1>
else
<comandos2>;
end

Se <condio1> ou <condio2> ou ambas forem verdadeiras ser executado
<comandos1>. Caso as condies forem falsas ser executado <comandos2>.

Observao: A indentao no necessria para a execuo do programa, mas
ajuda a verificar o relacionamento entre a condio do if e as sentenas que dependem
dela.


5.2.4 Swicth : Case

O comando swicth (boto) permite selecionar, entre vrias escolhas numa faixa de
valores fixados, uma determinada expresso. A seleo determinada pelo valor da
expresso que voc especifica. So definidas as possveis posies swicth para um ou mais
valores case, um deles selecionado se o valor da expresso swicth a mesma que o valor
do case. necessrio que exista um valor para cada possvel escolha do swicth. Se o valor
da expresso swicth no encaixar com nenhum dos valores case, ento o swicth
automaticamente seleciona o caso otherwise (default).

Sintaxe:
swicth <valor_teste>
case <exp_case1>
<comandos1>;
case <exp_case2>
<comandos2>;
Otherwise
<comandos3>;
end

Para melhor entendimento, verifiquemos um exemplo (para transformar polegadas,
ps ou metros em centmetros).

x = 3.5;
unidade = 'm';
switch unidade % Converte x para centmetros
case {' inch',' in'}
y = x * 2.54;
case {'feet', 'ft' }
Captulo 5 Decises e Loops
29
y = x * 2.54 * 12;
case {'metro','m'}
y = x/100;
otherwise
disp('acabou')
end
disp( 'y = ');
disp(y)

O resultado ser y = 0.0350, que representa a converso de x metros para y
centmetros.


5.3 Comandos Repetitivos ou Laos

Estas estruturas nos permitem repetir um grupo de comandos (sentenas), de acordo
com condies. Existem vrias estruturas para repeties. As mais utilizadas so o for que
uma das estruturas para se trabalhar com loops, e o while. So comandos que permitem
repeties controladas.


5.3.1 Estrutura for

O MATLAB possui sua prpria verso dos loops for encontrados em linguagens de
programao. Isto permite que um grupo de linhas de comando seja repetido por um
nmero fixo e predeterminado de vezes.

Sintaxe:
for incio:incremento:fim
<comandos>
end

Por exemplo:

for i = 1:n
x(i) = 0;
end

atribui 0 aos n primeiros elementos de x. Se n menor do que 1, a construo ainda
vlida, mas o MATLAB no executa a linha de comando interna. Se x no existe ou
possui menos de n elementos, ento o espao adicional alocado automaticamente.
Uma importante observao que se deve sempre finalizar um loop for com um
end. Se for digitado

for i = 1:n
x(i) = 0

Captulo 5 Decises e Loops
30
o sistema espera que sejam entradas o restante das linhas de comando no corpo do loop.
Nada acontece at que seja digitado end.
Pode-se utilizar mais de um loop dentro de um loop, mas no se pode esquecer que
cada for deve ter seu prprio end. Pode-se tambm fazer com que o loop decresa, de
acordo com a expresso descrita. Por exemplo:

A = [1 2 3;4 5 6];
t = [1 2];
[aux,n] = size(A);
for j = n-1:-1:1
A(:, j) = t.*A(:, j+1);
end

Resultar em:

A =
3 3 3
24 12 6


5.3.2 Comandos que Afetam a operao dos Loops

5.3.2.1 Break

O comando break pode ser usado no corpo de qualquer estrutura de lao do
MATLAB. Causa a sada imediata do lao e o controle passa para o prximo comando do
programa. Caso seja usado fora de todos os laos, o comando break interrompe
imediatamente a execuo do programa.

Sintaxe:
break;


5.3.2.2 Continue

Executar o comando continue dentro de um lao faz com que a prxima iterao
comece imediatamente, pulando todas e quaisquer sentenas restantes da iterao corrente.

Sintaxe:
continue;



Captulo 5 Decises e Loops
31
5.3.3 A Estrutura while

O MATLAB possui sua prpria verso do loop while, o qual permite que uma linha
de comando, ou um grupo de linhas de comando, seja repetida um nmero indefinido de
vezes, atravs do controle de uma condio lgica.

Sintaxe:
while <condio>
<comandos>;
end

Os comandos (ou um simples comando) sero executados enquanto a expresso
testada na condio for verdadeira. Quando a condio retornar o valor falso o programa
continua na linha de cdigo logo aps o loop.
A matriz da expresso de condio quase sempre uma expresso relacional 1 por
1, ento nmeros no-nulos correspondem a uma expresso verdadeira. Quando a matriz
da expresso no um escalar, pode-se reduzi-la atravs das funes any e all.

Exemplo:
a = 15;
h = 0;
while a > 1
a = a/2;
h = h + 1;
end

O resultado ser:

a = 0.9375
h = 4


5.3.4 Loop while Infinito

Sintaxe:
while(1)
<comandos>;
end

Este loop chama-se loop infinito porque ser executado para sempre, a no ser que
ele seja interrompido. Para interromper um loop como este, usamos o comando break. O
comando break vai quebrar o loop infinito e o programa continuar sua execuo
normalmente. Observe tambm o comando continue.



Captulo 5 Decises e Loops
32
Exemplo:

clear all
clc
x = 0;
y = 0;
v = 0;
disp(' ')
disp([blanks(5),'Digite 0 para voltar ao inicio do loop.'])
disp([blanks(5),'Digite 1 para ir ate o fim do loop.'])
disp([blanks(5),'Digite -1 para sair do loop.'])
while(1)
x = x + 1;
disp([blanks(5),'Execuao ',num2str(x)])
v = input([blanks(5),'Opao: ']);
if v == 0
continue
elseif v == -1
break
end
y = y + 1;
end
disp([blanks(5),'O loop foi iniciado ', num2str(x),' vezes,...
mas apenas ',num2str(y),' vezes foi ate o fim.'])





















Captulo 5 Decises e Loops
33
G
1
1 2
3
L 1-2
L 2-3
P
2
+ jQ
2
P
3
+ jQ
3
5.4 Exerccios

1 Escreva um programa que leia 3 nmeros e os escreva em ordem crescente.

2 Faa um programa que leia um nmero inteiro, verifique se positivo ou negativo e
escreva uma mensagem apropriada ao seu tipo.

3 Escreva um programa para calcular o fatorial de um nmero lido.

4 Escreva um programa que monte a matriz Y, G e B do sistema apresentado na figura
abaixo:








5 O clculo de razes de equaes lineares pode ser facilmente alcanado (Ax = B). Mas
infelizmente ainda no existe um mtodo direto para solucionar sistemas de equaes no
lineares ( ) 0
i
g x = . Por isso mtodos numricos devem ser empregados. O mtodo
iterativo mais utilizado o mtodo de Newton, onde a partir de um vetor x qualquer, ele
calcula novos valores para o vetor x para alcanar x* (soluo). Sua forma de recorrncia
dada pela expresso abaixo:


1
'
( )
( )
k
k k
k
g x
x x
g x
+
=
onde:


k
x so os valores de [x] na iterao k.

1 k
x
+
so os valores de [x] a serem calculados.
( )
k
g x so os valores da funo no ponto [x].

'
( )
k
g x so os valores da derivada da funo no ponto [x]. Tambm chamada de
Jacobiana.



Linha R X
1 2 0,50 0,60
2 3 1,20 1,10
Captulo 5 Decises e Loops
34
seja:
1 1 2
2 1 2
( , )
( )
( , )
g x x
g x
g x x
(
=
(

; logo a Jacobiana
1 1
1 2
2 2
1 2
g g
x x
g g
x x
(
(

(
(
(




O processo itera at que
1
max( )
k k
x x tolerancia
+
, ento monte um programa
para resolver as seguintes equaes.

2
4 1
5 3
y x x
y x
= + +

= +






Captulo 6 Arquivos-M: Scripts e Funes
35
Captulo 6 Arquivos-M: Scripts e Funes


Um dos assuntos mais importantes, a criao de arquivos-M descrita neste
captulo. O MATLAB usualmente acionado por um comando. Quando se entra com
uma simples linha de comando, o MATLAB a processa imediatamente e mostra o
resultado. O MATLAB tambm pode executar uma seqncia de comandos que est
armazenada em um arquivo.
Arquivos de disco que possuem linhas de comando para o MATLAB so
chamados arquivos-M em virtude de sua extenso ser do tipo .m. Por exemplo, o
arquivo bessel.m contm linhas de comando do MATLAB para avaliar funes Bessel.
Um arquivo-M consiste de uma seqncia normal de linhas de comando do MATLAB,
a qual pode fazer uma chamada a outros arquivos-M. Um arquivo-M pode chamar a si
mesmo de modo recursivo.
Dois tipos de arquivos-M podem ser usados: scripts e funes. Scripts, ou
arquivos script, realizam longas seqncias de comandos. Funes, ou arquivos funo,
permitem adicionar novas funes s funes j existentes. A maior parte do poder do
MATLAB se deve ao fato de se poder criar novas funes que resolvam problemas
especficos.


6.1 Arquivos Scripts

Quando um script chamado, o MATLAB simplesmente executa os comandos
encontrados no arquivo. As linhas de comando de um arquivo script operam
globalmente com os dados que esto no espao de trabalho. Scripts so teis na
realizao de anlises, soluo de problemas, ou no projeto de longas seqncias de
comando, o que se torna cansativo para ser feito iterativamente. Como um exemplo,
suponha um arquivo chamado fibno.m que possui os comandos:

f = [1 1]; i = 1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1);
i = i + 1;
end
plot(f)

Digitando a linha de comando fibno faz com que o MATLAB execute os
comandos, calculando os 16 primeiros nmeros da srie de Fibonacci, e crie um grfico.
Aps a execuo do arquivo estar completa, as variveis f e i ficam mantidas no espao
de trabalho.








Captulo 6 Arquivos-M: Scripts e Funes
36
6.2 Arquivos Funo

Um arquivo-M que contm a palavra function no incio da primeira linha um
arquivo funo. Uma funo difere de um script pelos argumentos que devem ser
passados e pelas variveis que so definidas e manipuladas, que so locais funo e
no podem ser operadas globalmente no espao de trabalho. O arquivo media.m um
exemplo de um arquivo funo que possui as linhas de comando:

function y = media(x)
% Media dos elementos de um vetor ou uma matriz
% Para vetores, media(x) retorna a media dos elementos de x
% Para matrizes, media(x) retorna um vetor contendo a media dos
elementos % de cada coluna da matriz x
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;

A existncia deste arquivo define uma nova funo chamada media. A nova
funo media usada como qualquer outra funo do MATLAB. Por exemplo, se z
um vetor de inteiros de 1 a 99,

>> z = 1:99;

o valor mdio deste encontrado atravs do comando

>> mean(z)

que resulta em

ans =
50

As informaes abaixo so para o arquivo media.m, mas o princpio vlido para
todos os arquivos funo:
A primeira linha declara o nome da funo e os argumentos de entrada e sada.
Sem esta linha, o arquivo um arquivo script, e no um arquivo funo.
O smbolo % indica que o restante da linha um comentrio e deve ser
ignorado.
As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita
help media.
As variveis m, n e y so locais a media e no aparecem no espao de trabalho
aps media ter terminado. (Ou, se elas existem, permanecem inalteradas.).
No necessrio definir os inteiros de 1 a 99 em uma varivel de nome x. No
exemplo, a funo media foi usada com uma varivel z. O vetor z que contm os
inteiros de 1 a 99 foi passado ou copiado para media onde ele se tornou uma
varivel local de nome x.
Captulo 6 Arquivos-M: Scripts e Funes
37
Pode-se criar uma ajuda online para os arquivos-M entrando com um texto de
uma ou mais linhas de comentrios, comeando pela segunda linha do arquivo. Por
exemplo, o arquivo-M angle.m contm

function p = angle(h)
%ANGLE Phase angle.
ANGLE(H) returns the phase angles, in radians, of a matrix with
complex elements.

See also ABS, UNWRAP.

Quando se entra com help angle, as linhas 2 a 6 do arquivo angle.m so
mostradas. Baseado nisto, a primeira linha de comentrios em qualquer arquivo-M deve
conter o maior nmero de informaes possveis.


6.3 Variveis Globais

Cada funo do MATLAB definida por um arquivo-M possui suas prprias
variveis locais, as quais no tem relao com as de outras funes e com as do espao
de trabalho. Entretanto, se vrias funes e tambm o plano de trabalho declararem uma
varivel particular como global, ento todos eles dividem a mesma varivel. Qualquer
atribuio a esta varivel, em qualquer funo, fica disponvel a todas as outras funes
que a declaram como global.
Para fazer com que uma varivel seja global, basta escrever

global X Y Z

onde as variveis X, Y e Z iro trabalhar como sendo globais.


6.4 Strings de Texto

Strings de texto so entradas no MATLAB entre aspas simples ( ). Por exemplo,

>> s = Engenharia

resulta em

s =
Engenharia

O texto armazenado em um vetor, sendo um caractere por elemento. Neste caso,

>> size(s)
ans =
1 10
Captulo 6 Arquivos-M: Scripts e Funes
38
indica que s possui cinco elementos. Os caracteres so armazenados com seus valores
ASCII, e a funo abs e a funo double mostram estes valores:

>> f = abs(s)
f =
69 110 103 101 110 104 97 114 105 97

A funo char faz a transformao inversa:

>> char(f)
ans =
Engenharia

Utiliza-se colchetes ou a funo strcat para juntar variveis de texto em strings
maiores:

>> s = [s, Eltrica ]
s =
Engenharia Eltrica

>> s = strcat(s, Eltrica )
s =
Engenharia Eltrica


6.5 A Funo Eval

A funo eval trabalha com variveis do tipo texto e implementa uma poderosa
facilidade de macro. eval(t) faz com que o texto contido em t seja avaliado. Por
exemplo,

t = 1/(i+j-1);
for i = 1:n
for j = 1:n
a(i,j) = eval(t);
end
end

cria uma matriz a de dimenso n por n, onde cada elemento avaliado pela funo que
est descrita por t.







Captulo 7 Arquivos E/S
39
Captulo 7 Arquivos E/S

As funes de E/S (Entrada/Sada) de arquivo do MATLAB que permitem a
leitura e a escrita em formato diferente ao gerados pelo mesmo so descritas neste
captulo.
As funes de E/S de arquivo do MATLAB permitem a leitura de dados coletados
em outro formato diretamente pelo MATLAB, ou a escrita de dados gerados pelo
MATLAB no formato requerido por outro programa ou dispositivo. As funes lem e
gravam arquivos de texto formatados e arquivos binrios de dados.


7.1 Abrindo e Fechando Arquivos

Antes de se ler ou escrever em um arquivo, deve-se abri-lo com o comando fopen,
especificando o arquivo a ser aberto e a string de permisso. Por exemplo,

>> fid = fopen(arquivo.txt,r)

abre para leitura o arquivo arquivo.txt.

As strings de permisso disponveis so:

r para leitura
w para gravao
a para atribuio
r+ tanto para leitura como para gravao

Outras strings de permisso podem ser obtidas com o comando help fopen.
A funo fopen retorna um identificador de arquivo, que um inteiro positivo
atribudo ao arquivo pelo sistema operacional. Este identificador de arquivo
basicamente um atalho para se referenciar o arquivo. As funes de E/S de arquivo do
MATLAB utilizam o identificador como argumento para identificar o arquivo aberto
para leitura, escrita ou encerramento. Se o arquivo no pode ser aberto, fopen retorna -1
como identificador. aconselhvel testar o identificador cada vez que um arquivo
aberto. Um segundo valor que retornado pode fornecer informao adicional sobre
erros. Por exemplo, se MATLAB no encontra o arquivo arquivo.txt, o comando

>> [fid, message] = fopen(arquivo.txt,r)

atribui -1 para fid, e message recebe uma string com a forma abaixo

No such file or directory.

Uma vez aberto, o arquivo fica disponvel para leitura e gravao. Quando se
termina a leitura ou a gravao, usa-se fclose para fechar o arquivo. Por exemplo,

>> status = fclose(fid)
Captulo 7 Arquivos E/S
40
fecha o arquivo associado com o identificador fid, e

>> status = fclose(all)

fecha todos os arquivos abertos. Ambas as formas retornam 0 se esta operao for
realizada com sucesso, ou -1 se algo de errado acontecer.


7.2 Leitura de Arquivos

A funo fread l arquivos de dados binrios. Na sua forma mais simples, ele l
um arquivo inteiro em uma matriz. Por exemplo,

>> fid = fopen(arquivo.txt,r);
>> A = fread(fid);
>> status = fclose(fid);

l todos os dados do arquivo arquivo como caractere, e os escreve em uma matriz A.
Dois argumentos opcionais a fread fazem o controle do nmero de valores lidos e a
preciso de cada valor.

>> fid = fopen(arquivo.txt,r);
>> A = fread(fid,100);
>> status = fclose(fid);

l os 100 primeiros valores de dados em um vetor coluna A. Substituindo o nmero 100
pelas dimenses de uma matriz [10,10], faz com que sejam lidos os mesmos 100
elementos, armazenando-os em uma matriz 10x10. E

>> A = fread(fid,Inf)

l at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o
tamanho do argumento produz o mesmo efeito.











Captulo 7 Arquivos E/S
41
7.3 Escrevendo Arquivos de Texto Formatados e Strings

A funo fprintf converte dados em strings de caractere e os mostra na tela ou em
um arquivo. O formato de sada definido por um especificador de converso e por um
texto. Os especificadores de converso controlam a sada dos elementos de uma matriz.
Os textos so copiados diretamente. Os especificadores so precedidos pelo caractere
%; converses comuns incluem

%e para notao exponencial
%f para notao de ponto fixo
%g que seleciona automaticamente o menor entre %e e %f

Campos opcionais no especificador de formato controlam o tamanho e a preciso
do campo. Por exemplo,

>> x = [0:0.1:1];
>> y = [x; exp(x)];
>> fid = fopen(exptable.txt,w);
>> fprintf(fid,Exponential Function\n\n);
>> fprintf(fid,%6.2f%12.8f\n,y);
>> status = fclose(fid);

cria um arquivo de texto contendo uma pequena tabela para a funo exponencial. A
primeira chamada a fprintf escreve o ttulo, seguido por dois comandos ENTER, o qual
definido por \n. A segunda chamada escreve a tabela propriamente dita. As strings de
controle de formato definem o formato de cada linha da tabela como:

um valor de ponto fixo de seis caracteres com duas casas decimais
dois espaos
um valor de ponto fixo de doze caracteres com oito casas decimais


7.4 Lendo Arquivos de Texto Formatados e Strings

A funo de entrada de texto do MATLAB, fscanf, similar funo fprintf.
fscanf possui como argumento o identificador para o arquivo de texto aberto, e uma
string de controle do formato contendo caracteres e especificadores de converso, nesta
ordem. Os especificadores para fscanf so precedidos pelo caractere %; converses
comuns incluem




Captulo 7 Arquivos E/S
42
%s para converter uma string
%d para converter um nmero decimal
%f para converter um valor em ponto flutuante

O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito
anteriormente:

>> fid = fopen(exptable.txt,r);
>> title = fscanf(fid,%c,20)
>> [table,count] = fscanf(fid, %f %f ,[2,11]);
>> table = table
>> status = fclose(fid);

A linha do ttulo combina com o especificador %c na primeira chamada fscanf.
A segunda chamada entra com a tabela de valores. count retorna o nmero de valores
combinados.