UFJF - Universidade Federal de Juiz de Fora

Faculdade de Engenharia















CURSO DE MATLAB





















Eduardo M. Viana
Marcelo S. Neves

ABRIL, 2007
ii
SUMÁRIO
CAPÍTULO 1 INTRODUÇÃO.............................................................................. 1
1.1 LINHA DE COMANDO.......................................................................................... 1
1.2 COMANDOS E VARIÁVEIS................................................................................... 2
1.3 CONSTANTES..................................................................................................... 3
1.4 EDITOR.............................................................................................................. 3
1.5 MATRIZES SIMPLES ........................................................................................... 3
1.6 ELEMENTOS DA MATRIZ.................................................................................... 4
1.7 INFORMAÇÕES DA ÁREA DE TRABALHO ............................................................ 5
1.8 FINALIZANDO E SALVANDO O ESPAÇO DE TRABALHO....................................... 6
1.9 NÚMEROS E EXPRESSÕES ARITMÉTICAS............................................................ 6
1.10 NÚMEROS COMPLEXOS E MATRIZES ................................................................. 7
1.11 FORMATOS DE SAÍDA ........................................................................................ 7
CAPÍTULO 2 OPERANDO MATRIZES E VETORES..................................... 8
2.1 GERANDO VETORES .......................................................................................... 8
2.2 MATRIZES ESPECIAIS......................................................................................... 9
2.3 OPERANDO COM MATRIZES............................................................................... 9
2.4 OPERAÇÕES RELACIONAIS............................................................................... 10
2.5 OPERAÇÕES LÓGICAS ...................................................................................... 10
CAPÍTULO 3 FUNÇÕES MAIS USADAS EM ENGENHARIA..................... 12
3.1 ANÁLISE DE DADOS......................................................................................... 12
3.2 FATORAÇÃO LU.............................................................................................. 12
3.3 DECOMPOSIÇÃO EM AUTOVALORES E AUTOVETORES ..................................... 13
3.4 REPRESENTAÇÃO 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
CAPÍTULO 4 GRÁFICOS................................................................................... 18
4.1 FUNÇÕES ELEMENTARES DE PLOTAGEM.......................................................... 18
4.2 CRIANDO UM GRÁFICO.................................................................................... 18
4.3 SUBGRÁFICOS.................................................................................................. 19
4.4 FIGURA............................................................................................................ 19
4.5 FUNÇÃO AXIS.................................................................................................. 20
4.6 ADICIONANDO LINHAS A UM GRÁFICO EXISTENTE ......................................... 20
4.7 ESTILOS DE LINHAS E MARCADORES DE COR.................................................. 21
4.8 DADOS COMPLEXOS ........................................................................................ 21
4.9 FUNÇÕES ESPECIAIS PARA GRÁFICOS 2D......................................................... 22
4.10 EXPORTANDO GRÁFICOS ................................................................................. 22
4.11 GRÁFICOS 3D.................................................................................................. 23
4.11.1 Gráficos de Linhas ................................................................................. 23
4.11.2 Meshgrid................................................................................................. 24
4.11.3 Gráficos de Contorno............................................................................. 24

iii
CAPÍTULO 5 DECISÕES E LOOPS.................................................................. 26
5.1 INTRODUÇÃO................................................................................................... 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 if’s Aninhados.................................................................... 27
5.2.4 Swicth : Case .......................................................................................... 28
5.3 COMANDOS REPETITIVOS OU LAÇOS ............................................................... 29
5.3.1 Estrutura for ........................................................................................... 29
5.3.2 Comandos que Afetam a operação 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 EXERCÍCIOS..................................................................................................... 33
CAPÍTULO 6 ARQUIVOS-M: SCRIPTS E FUNÇÕES .................................. 35
6.1 ARQUIVOS SCRIPTS ......................................................................................... 35
6.2 ARQUIVOS FUNÇÃO......................................................................................... 36
6.3 VARIÁVEIS GLOBAIS ....................................................................................... 37
6.4 STRINGS DE TEXTO.......................................................................................... 37
6.5 A FUNÇÃO EVAL ............................................................................................. 38
CAPÍTULO 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


Capítulo 1 – Introdução
1
Capítulo 1 Introdução


O MATLAB (MATrix LABoratory) é um software produzido pela MathWorks, Inc,
para computação técnica e científica em geral. O MATLAB é uma ferramenta
computacional muito importante para o estudante de Engenharia Elétrica e é utilizada
durante todo o curso em várias disciplinas. Os usos típicos do MATLAB na Engenharia
Elétrica incluem:

• Cálculos matemáticos;
• Construção de gráficos;
• Desenvolvimento de algoritmos.

1.1 Linha de comando

O MATLAB funciona com linhas de comando, na janela principal. Nela é colocada
qualquer instrução ao MATLAB. As linhas de comando são frequentemente da forma:

variável = expressão

ou simplesmente

expressão

Podem ser compostas expressões com operadores e outros caracteres especiais, com
funções, e com nomes de variáveis. A execução da expressão produz uma matriz. A matriz
é mostrada na tela e assume o nome da variável definida na linha de comando para que
possa ser utilizada em uma outra situação. Se for omitido o nome da variável e o sinal =, o
MATLAB cria automaticamente uma variável com o nome ans. Por exemplo, digitando a
expressão:

>> sqrt(5)

ans =

2.2361

Uma linha de comando normalmente termina com a tecla Enter. Entretanto, se o
último caractere for um ponto-e-vírgula (;), a variável que é produzida não é mostrada na
tela. Se a expressão é complicada de tal forma que não cabe em uma linha, utiliza-se os
três pontos (...) seguidos pela tecla Enter para indicar que a linha de comando continua na
próxima linha. Pode-se formar nome de funções e variáveis com uma letra seguida por
um número qualquer de letras e dígitos. O nome de variável pode ser definido como uma
letra ou um conjunto de caracteres, havendo diferença entre letra minúscula e letra
Capítulo 1 – Introdução
2
maiúscula. Se mais de uma palavra for usada para representar uma variável, deve ser
usado o sinal de sublinhado para ligar os nomes que representarão a variável. Exemplo de
nomes de variáveis: a, A, preço1, val3, custo_médio, preço_de_venda, etc. O MATLAB
entende de forma diferente letras maiúsculas e minúsculas. A e a não são a mesma
variável. Os nomes das funções devem ser digitados em letras minúsculas.
Os comandos que MATLAB executou durante uma sessão são armazenados até um
certo limite. Pode ser utilizada uma chamada rápida ao invés da digitação dos comandos
previamente digitados, através da especificação dos primeiros caracteres seguidos pela
tecla ↑.

1.2 Comandos e variáveis

Os comandos no MATLAB são sempre editados em letras minúsculas. Alguns
comandos importantes no MATLAB:

Comando Descrição
; suprime a impressão de resultados
% serve para se colocar um comentário
... que a linha de comando continua na próxima linha
ans variável usada para assumir o resultado referente ao último comando
Inf infinito (exemplo: digite 1/0)
NaN indeterminação (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 variáveis do workspace

Um comando importante é o comando help, que fornece informação sobre grande
parte dos tópicos do MATLAB. Sem nenhum argumento mostra uma lista de diretórios
que contêm arquivos relacionados com MATLAB. Cada linha mostrada lista o nome de
um diretório seguido por uma descrição do conteúdo do mesmo. Alguns diretórios são
associados com os comandos básicos do MATLAB. Outros contêm toolboxes, tais como
control e signal; esses possuem funções adicionais do MATLAB cobrindo áreas de
aplicações mais especializadas.
Para uma lista de funções relacionadas a um determinado diretório, digita-se help
seguido pelo nome do mesmo. Aparece uma lista de comandos, funções e símbolos
específicos do MATLAB. O comando help seguido por estes comandos ou funções
fornece informações sobre como utilizá-los em uma linha de comando.
Outra função do MATLAB é o lookfor que procura funções a partir de uma palavra-
chave especificada. Por exemplo, se for passado ao MATLAB o comando:

>> lookfor inverse

A seguinte resposta é retornada:

Capítulo 1 – Introdução
3
INVHILB Inverse Hilbert matrix.
IPERMUTE Inverse permute array dimensions.
ACOS Inverse cosine.
ACOSH Inverse hyperbolic cosine.
...

Todas as funções onde aparecem a palavra inverse, são retornadas.


1.3 Constantes

O MATLAB vem ainda com algumas constantes definidas, são 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 é possível digitar programas
salvando-os em arquivos com extensão .m. Os arquivos com extensão .m são arquivos
executáveis para o MATLAB. Para acionar o editor de textos no ambiente MATLAB,
acione sequencialmente, as opções do menu:

File
New
M-File

O editor será aberto em outra janela, uma página em branco, onde podem ser
colocadas instruções ao MATLAB.


1.5 Matrizes Simples

MATLAB trabalha essencialmente com um tipo de objeto, uma matriz retangular
numérica (real ou complexa). Em algumas situações, denominações específicas são
atribuídas a matrizes 1 por 1, que são os escalares, e a matrizes com somente uma linha ou
coluna, que são os vetores. Operações e comandos no MATLAB são aplicados de maneira
natural, utilizando o conceito de matriz, como são indicados no papel. Pode-se entrar com
matrizes no MATLAB de diversas maneiras:

• Entrar com uma lista explícita de elementos.
• Gerar matrizes utilizando funções e linhas de comando do MATLAB.
• Criar matrizes em arquivos-M.
• Chamar matrizes de um arquivo de dados externo.
Capítulo 1 – Introdução
4
A maneira mais fácil de se declarar matrizes é fazendo a explicitação da lista de
elementos na linha de comando, seguindo as convenções abaixo:

• Separar os elementos da lista de elementos através de espaços ou vírgulas.
• Colocar os elementos entre colchetes, [ ].
• Usar (;) ponto-e-vírgula 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, também, entrar matrizes de arquivos de extensão .m. Se um arquivo com o
nome de matriz.m contém as três linhas de texto:

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

Então o comando:

>> matriz

atribui à matriz A os dados correspondentes.


1.6 Elementos da Matriz

Elementos de matriz podem ser quaisquer expressões 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 parênteses, ( ). No exemplo anterior:

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


Capítulo 1 – Introdução
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 são 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 extraídas 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 três primeiras linhas e todas as colunas da matriz original A
para a matriz A.


1.7 Informações da Área de Trabalho

Os exemplos previamente executados criaram variáveis que são armazenadas do
espaço de trabalho do MATLAB. Para listar as variáveis armazenadas use o comando:

>> who

Para verificar uma listagem mais completas sobre as variáveis armazenadas deve-se
utilizar o comando whos, o qual traz informações sobre o nome, a dimensão da matriz
correspondente, o número de elementos dessa matriz, entre outros.


Capítulo 1 – Introdução
6
1.8 Finalizando e Salvando o Espaço de Trabalho

Para finalizar o MATLAB digite quit ou exit. Terminando uma sessão do MATLAB,
você apaga as variáveis do espaço de trabalho. Antes de terminar, pode-se salvar as
variáveis com o comando save. Este comando salva todas as variáveis em um arquivo em
disco chamado matlab.mat. Na próxima vez que MATLAB é chamado, pode-se executar o
comando load ou load matlab.mat para restaurar o espaço de trabalho com as variáveis de
matlab.mat.
Podem ser utilizados os comandos save e load em arquivos com outros nomes, ou
salvar somente algumas variáveis. O comando save temp salva as variáveis em um arquivo
de nome temp.mat. O comando

>> save temp X Y Z

salva as variáveis X, Y e Z no arquivo temp.mat.


1.9 Números e Expressões Aritméticas

O MATLAB utiliza a notação decimal convencional, com ponto decimal e sinal
negativo opcionais, para números. Pode-se incluir um fator de escala em potência de dez
ou uma indicação de número complexo como sufixo. Alguns exemplos de números
válidos são:

3 -99 0.0001 9.6397238 1.60210E-20 6.02252e23 -3.141159i
3e5i
Podem ser construídas expressões com os operadores de aritmética usuais e as regras
de precedência:

Operador Função
+ Adição
- Subtração
* Multiplicação
/ Divisão por número à direita
\ Divisão por número à esquerda
^ Potência

O MATLAB possui também funções matemáticas elementares encontradas em
calculadoras científicas tais como abs, sqrt, log, sin e etc. Funções podem ser facilmente
criadas através dos arquivos-M. Algumas funções simplesmente retornam valores
especiais comumente utilizados, como a função pi que retorna o valor da constante.





Capítulo 1 – Introdução
7
1.10 Números Complexos e Matrizes

O MATLAB permite números complexos, indicados pela função especial i ou j, em
todas as operações ou funções. Assim, temos:

>> z = 3 + 4*i

Uma outra forma é:

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

Quando forem entrados números complexos como elementos de matriz com os
colchetes, deve ser evitado qualquer espaço em branco. Uma expressão como 1 + 5*i, com
espaços em volta do sinal +, representa dois números. Isto também é válido para números
reais; um espaço antes do exponencial, como em 1.23 e-4, causa um erro.
O nome de uma função do MATLAB também pode ser usado como o nome de uma
variável. Quando utilizado como uma variável, a função original se torna indisponível no
espaço de trabalho até que a variável seja apagada.


1.11 Formatos de Saída

O comando format pode ser utilizado para controlar o formato numérico mostrado
após a execução 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 não é um inteiro exato, vários formatos de saída são possíveis.
O formato padrão, chamado de short format, mostra aproximadamente cinco dígitos
decimais significativos. Os outros formatos mostram mais dígitos significativos ou
utilizam notação decimal. Como um exemplo, suponha:

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

Os formatos e as saídas resultantes para este vetor são:

Comando Resultado numérico
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 possíveis de formato.


Capítulo 2 – Operando Matrizes e Vetores
8
Capítulo 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 números 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

começando em zero e terminando em oito com incremento de dois. Para se obter um vetor
coluna basta transpor o vetor linha gerado.
Outras funções para geração de vetor incluem o logspace, o qual gera vetores
espaçados logaritmicamente, e o linspace, que permite que você especifique o número de
pontos ao invés do incremento. Exemplo:

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

produz:

z =

0 0.5000 1.0000 1.5000 2.0000







Capítulo 2 – Operando Matrizes e Vetores
9
2.2 Matrizes Especiais

O MATLAB apresenta algumas funções úteis para gerar matrizes:

Função Descrição
zeros Produz uma matriz com elementos nulos.
ones Produz uma matriz com elementos unitários.
rand Elementos randômicos uniformemente distribuídos.
randn Elementos randômicos normalmente distribuídos.
eye Matriz identidade.
linspace Vetor espaçado linearmente.
logspace Vetores espaçados logaritmicamente.


2.3 Operando com Matrizes

A linha de comando B = A’ indica que a variável 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 adição e subtração de matrizes pode ser feita entre matrizes de mesma dimensão
ou entre um escalar e uma matriz. Na primeira, cada elemento de uma matriz é somado ou
subtraído do correspondente na outra matriz. Na segunda forma, o escalar é adicionado ou
subtraído de todos os elementos do outro operando.
A operação de multiplicação é definida quando o número de colunas da primeira
matriz for igual ao número de linhas da segunda matriz. Dependendo das dimensões
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 não-singular, então A\B e B/A corresponde
formalmente a multiplicação à 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 cálculo da inversa. Em
geral
X = A\B é uma solução para A*X = B
X = B/A é uma solução para X*A = B
A divisão à esquerda, A\B, é definida sempre que B tiver o mesmo número de linhas
que A. Dependendo se A for quadrada ou não, deve-se usar algum método de fatoração.
A divisão normal de um escalar pelo outro é feita fazendo-se x/y.
A expressão A^p eleva A a p-ésima potência e é definida se A é uma matriz
quadrada e p é um escalar.
O MATLAB trata expressões como exp(A) e sqrt(A) como operações de vetores,
definidas em cada elemento de A. As funções elementares de matrizes incluem






Capítulo 2 – Operando Matrizes e Vetores
10
Função Descrição
poly polinômio característico
det determinante
trace traço 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 polinômio característico
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 Triângulo inferior.
triu Triângulo superior.
reshape Altera o formato.
‘ Transposição.


2.4 Operações Relacionais

Seis operadores relacionais estão disponíveis para a comparação de duas matrizes de
dimensões idênticas.

Operador Descrição
< 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 unitários e elementos nulos, com 1 representando verdadeiro e 0
representando falso.


2.5 Operações Lógicas

Os operadores &, |, ~ correspondem aos operadores lógicos “e”, “ou” e “não”.
Exemplos:
C = A & B é uma matriz cujo os elementos são 1s onde ambas as matrizes A e B são
elementos não-nulos, e 0s onde uma das matrizes ou ambas são elementos nulos.
C = A | B é uma matriz cujo os elementos são 1s onde tanto A ou B possuem
elementos não-nulos, e 0s onde ambas possuem elementos nulos.
B = ~A é uma matriz cujo os elementos são 1s onde a matriz A é um elemento nulo,
e 0s quando A é um elemento não-nulo.
Capítulo 2 – Operando Matrizes e Vetores
11
Todas as operações acima são válidas apenas para quando A e B possuem mesma
dimensão, ou quando uma das duas matrizes é um escalar. As funções lógicas e relacionais
do MATLAB são:

Função Descrição
any condições lógicas.
all condições lógicas.
find encontra os índices da matriz de valores lógicos.
exist verifica a existência de variáveis.
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 variáveis string.
isglobal detecta variáveis globais.
issparse detecta matrizes esparsas.











Capítulo 3 – Funções mais Usadas em Engenharia
12
Capítulo 3 Funções mais Usadas em Engenharia

3.1 Análise de Dados

Um grupo de funções utilizadas para análise de dados é mostrado abaixo:


Função Descrição
max valor máximo
min valor mínimo
mean valor médio
std desvio médio
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, não irá importar se o vetor é orientado por
linha ou por coluna. Se o argumento for uma matriz, as funções operarão orientadas por
coluna. Desta forma, se você aplicar a função max a uma matriz, o resultado é um vetor
linha contendo o valor máximo de cada coluna.

3.2 Fatoração LU

O método de fatoração mais básico expressa uma matriz qualquer como o produto
de duas matrizes essencialmente triangulares, sendo uma delas a permutação de uma
matriz triangular inferior e a outra uma matriz triangular superior. Esta fatoração é
frequentemente chamada de LU.
A linha de comando é descrita como:

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

onde L é a permutação da matriz triangular inferior e U é a matriz triangular superior.






Capítulo 3 – Funções mais Usadas em Engenharia
13
3.3 Decomposição em Autovalores e Autovetores

Se A é uma matriz n-por-n, os n números que satisfazem Ax = x são os autovalores
de A. Eles são encontrados utilizando:

>> eig(A)

que retorna os autovalores em uma vetor coluna. Se A é real e simétrica, os autovalores
são reais. Mas se A não é simétrica, os autovalores frequentemente são números
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 são os autovalores e as colunas de X são os
autovetores correspondentes tais que AX = XD.


3.4 Representação Polinomial

O MATLAB representa polinômios como vetores linha contendo os coeficientes na
ordem decrescente de potência. Por exemplo, a equação característica da matriz:

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

é computada através de:

>> p = poly(A)

p =
1 -6 -72 -27

Esta é a representação do MATLAB para o polinômio S
3
– 6S
2
– 72S - 27. As raízes desta
equação são dadas por:

>> r = roots(p)

r =
12.1229
-5.7345
-0.3884

As raízes da equação característica são os autovalores da matriz A. Pode-se obter o
polinômio original através das raízes encontradas acima

>> p2 = poly(r)

p2 =
1 -6 -72 -27
Capítulo 3 – Funções mais Usadas em Engenharia
14
Considere os polinômios a(S) = S
2
+ 2S + 3 e b(S) = 4S
2
+ 5S + 6. O produto dos
polinômios é feito através da convolução dos coeficientes:

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

c =
4 13 28 27 18

Uma lista completa das funções polinomiais inclui:

Função
Descrição
poly
polinômio característico
roots
raízes do polinômio
polyval
avalia o polinômio com o argumento substituindo a variável
polyvalm
avalia o polinômio com o argumento sendo uma matriz
conv
multiplicação
deconv
divisão
residue
expansão em frações parciais
polyder
derivada do polinômio
polyfit
ajuste do polinômio


3.5 Derivada

O MATLAB calcula a derivada de expressões matemáticas. O comando diff(S,v)
calcula a derivada da expressão S em relação à variável v. Exemplo:

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

ans =

s


3.6 Integral

O MATLAB faz integração de expressões matemáticas. O comando int(S,v,a,b) calcula
a integral de S em relação à variável v definida no intervalo de a a b. Exemplo:

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

ans =

1/2*s

Capítulo 3 – Funções mais Usadas em Engenharia
15
3.7 Laplace

O comando L = laplace(F) calcula a transformada de Laplace da expressão F com
relação a variável independente t. O retorno padrão é uma expressão em função de s. Por
definição L(s) = int(F(t)*exp(-s*t),0,inf), onde a integração ocorre com
relação 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 gráficos: um é o gráfico do modulo em
dB de uma função de transferencia senoidal e o outro é o gráfico do angulo de fase.
Ambos são traçados em relação à frequencia em escala logarítmica. Os diagramas de Bode
são bastante utilizados em análise de resposta em frequência, 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 elétricos.
O commando bode calcula módulos e ângulos de fase da resposta em frequência de
sistemas contínuos, 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 função de transferência:

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 função especificada:

Capítulo 3 – Funções mais Usadas em Engenharia
16


Se for desejável traçar 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 também é possível 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);
Capítulo 3 – Funções mais Usadas em Engenharia
17
>> compass(Vr,Vi)
>> hold off
>> title('Tensoes')

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
















Capítulo 4 – Gráficos
18
Capítulo 4 Gráficos

4.1 Funções Elementares de Plotagem

A lista a seguir relaciona as funções que produzem gráficos simples. Estas funções
se diferem apenas na maneira como apresentam as escalas dos eixos dos gráficos. 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.

Função Descrição
plot Cria um gráfico de vetores ou de colunas de matrizes.
loglog Cria um gráfico utilizando escalas logarítmicas para ambos os eixos.
semilogx
Cria um gráfico utilizando escala logarítmica no eixo x e escala linear no eixo
y.
semilogy
Cria um gráfico utilizando escala logarítmica no eixo y e escala linear no eixo
x.

Pode-se adicionar título, nome aos eixos, linhas de grade e textos a qualquer gráfico
utilizando:

Função Descrição
title Adiciona um título ao gráfico.
xlabel Define um nome para a variável do eixo x.
ylabel Define um nome para a variável do eixo y.
text Adiciona um texto em lugar específico.
gtext Adiciona um texto ao gráfico utilizando o mouse.
grid Ativa as linhas de grade.


4.2 Criando um Gráfico

Se y é um vetor, o comando plot(y) produz um gráfico linear dos elementos de y
versus o índice dos elementos de y. Se são especificados dois vetores como argumentos, o
comando plot(x,y) produz um gráfico de y versus x.
Pode-se, também, especificar vários grupos de dados e definir o estilo de linha e a
cor que serão 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-‘)

Capítulo 4 – Gráficos
19
Os comandos acima produzem um gráfico de três variáveis va, vb e vc em relação à
variável t. O primeiro grupo de dados, va, é plotado com uma linha sólida vermelha,
enquanto o segundo grupo, vb, é plotado com uma linha sólida verde e o grupo vc com
uma linha sólida azul. Podem ainda ser adicionados ao gráfico um título e nome aos eixos:

>> title(‘Tensões ABC’)

>> xlabel(‘t’)

>> ylabel(‘Tensão’)


4.3 Subgráficos

Vários gráficos podem ser mostrados em uma mesma janela ou impressos em uma
mesma folha de papel com a função subplot. Sintaxe do comando subplot:

• subplot(m,n,p): divide a janela em uma matriz m por n de subregiões e
seleciona a p-ésima subregião para o gráfico que está sendo plotado no momento.

Os gráficos são numerados começando pela primeira linha na parte superior da
janela, da esquerda para a direita, em seguida, a segunda linha também 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 função figure permite que novas janelas com figuras, sejam abertas. Formas
comuns de utilização da função figure:

• figure: faz com que seja aberta uma nova janela gráfica.
• figure(n): faz com que a n-ésima figura se torne a figura atual; o resultado
dos comandos gráficos subseqüentes são mostrados nesta janela. Se a figura n não
existe, o MATLAB cria uma usando o próximo número disponível (não
necessariamente n).
Capítulo 4 – Gráficos
20
4.5 Função Axis

A função axis possui várias opções que permitem que sejam personalizados escala e
orientação. O MATLAB encontra, por default, os valores de máximo e mínimo da função
a ser plotada e escolhe uma área de plotagem apropriada. Porém, pode-se redefinir os
limites pelo ajuste dos eixos utilizando a função axis:

>> axis([xmin xmax ymin ymax])

Algumas formas de utilização da função axis:

• axis(‘auto’): retorna a escala do eixo para seu valor padrão, o modo
automático.
• v = axis: salva a escala dos eixos do gráfico que está ativo no vetor v. Para
que gráficos subseqüentes possuam os mesmos limites, basta entrar com o
comando axis(v).
• axis(axis) congela a escala nos valores que estão 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 apareçam ou não, respectivamente, junto com o gráfico.


4.6 Adicionando Linhas a um Gráfico Existente

Podem ser adicionadas linhas a um gráfico já existente utilizando o comando hold.
Quando hold é ativado, o MATLAB não remove as linhas já existentes; ao invés 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 traça as três curvas em uma mesma figura:

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

Capítulo 4 – Gráficos
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 função plot de modo a especificar vários estilos de linhas, símbolos de traçado e
cores. Na linha de comando:

>> plot(x,y,S)

S é uma string envolvida por aspas e construída com os caracteres mostrados na tabela
abaixo:

Símbolo Cor Símbolo Estilo de Linha
y amarelo . ponto
m magenta o círculo
c ciano x x
r vermelho + sinal positivo
g verde * asterisco
b azul - sólida
w branco : pontilhada
k preto -. traço e ponto
-- tracejada

Por exemplo, o comando:

>> plot(X,Y,’b*’)

plota um asterisco azul em cada ponto de dado. Se não for especificada uma cor, a função
plot automaticamente utiliza a cor azul e linha sólida.


4.8 Dados Complexos

Quando os argumentos a serem plotados são complexos, a parte imaginária é
ignorada exceto quando o comando plot é dado simplesmente com um argumento
complexo. Para este caso especial, o comando é um atalho para um gráfico da parte real
em função da parte imaginária. Portanto:

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

onde Z é um vetor ou uma matriz complexa, é equivalente a

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






Capítulo 4 – Gráficos
22
4.9 Funções especiais para Gráficos 2D

O MATLAB inclui uma variedade de funções especiais para gráficos, necessárias
em muitas aplicações. A lista a seguir descreve algumas delas.

Função Descrição
bar cria um gráfico do tipo barra.
errorbar cria um gráfico com barras de erro.
feather cria um gráfico de ângulos e módulos de números complexos onde a
representação dos pontos é feita por setas com começo em pontos igualmente
espaçados ao longo do eixo horizontal.
fplot avalia uma função e plota os resultados.
hist cria um histograma.
polar cria um gráfico em coordenadas polares dos ângulos em função dos raios.
quiver cria um gráfico do gradiente ou de outro campo do vetor.
rose cria um histograma de ângulo.
stairs cria um gráfico similar a um gráfico de barra, mas sem as linhas internas.
fill desenha um polígono e o preenche com cores sólidas ou interpoladas.


4.10 Exportando Gráficos

Os gráficos criados no MATLAB podem ser exportados como figuras, com várias
extensões 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 extensão e o
diretório no qual deseja salvar a figura e clique em salvar.




















Capítulo 4 – Gráficos
23
4.11 Gráficos 3D

O MATLAB possui uma variedade de funções para exibir dados em 3-D. Algumas
plotam linhas em três dimensões, enquanto outras desenham superfícies e figuras
utilizando “pseudocores” para representar uma quarta dimensão. A lista a seguir mostra
funções comumente utilizadas em gráficos 3-D:

Função Descrição
plot3 plota linhas e pontos em 3-D.
contour, contour3 cria gráficos de contorno.
pcolor desenha uma matriz retangular de células cujas cores são
determinadas pelos elementos da matriz.
image mostra uma matriz como uma imagem através do mapeamento dos
elementos da matriz pelo mapa de cores ativo.
mesh, meshc, meshz cria gráficos 3-D em perspectiva dos elementos da matriz,
mostrados como alturas acima de um plano delimitado.
surf, surfc, surfl cria gráficos 3-D em perspectiva dos elementos da matriz,
mostrados como alturas acima de um plano delimitado. O gráfico
é formado pela geração de uma superfície colorida utilizando os
pontos como vértices de um quadrilátero.

fill3 cria um polígono 3-D a o preenche com cores sólidas ou
interpoladas.
zlabel define um nome para a variável do eixo z.
clabel define identificações para os contornos em gráficos de contorno.
view ajusta o ponto de visão atual onde os parâmetros de entrada podem
ser o azimute (rotação horizontal) e a elevação vertical, ambos em
grau, ou as coordenadas cartesianas.


4.11.1 Gráficos de Linhas

O análogo tridimensional da função plot é a função plot3. Se x, y e z são vetores de
mesmo tamanho, o comando:

>> plot3(x,y,z)

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

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

produz um helicóide.
Se X, Y e Z são três matrizes de mesma dimensão, comando:

>> plot3(X,Y,Z)
Capítulo 4 – Gráficos
24
plota as linhas obtidas pelas colunas de X, Y e Z. Para especificar vários tipos de linhas,
símbolos gráficos 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 função plot.

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

combina os gráficos definidos por cada grupo de elementos (x, y, z, s), onde x, y e z são
vetores ou matrizes e s são as strings.


4.11.2 Meshgrid

O MATLAB define uma superfície mesh pelas coordenadas z dos pontos, situando-a
acima de uma área retangular no plano x-y. Desta forma, um gráfico é formado pela
ligação dos pontos adjacentes com linhas retas. Superfícies mesh são úteis para
visualização de matrizes que são muito grandes para serem mostradas na forma numérica,
e funções gráficas de duas variáveis. O primeiro passo para que seja mostrada uma função
de duas variáveis, z = f(x,y), é gerar as matrizes X e Y consistindo de linhas e colunas
repetidas, respectivamente, sobre o domínio da função. Depois utiliza-se estas matrizes
para avaliar e plotar a função.
A função meshgrid transforma o domínio especificado por dois vetores, x e y, em
matrizes, X e Y. Utiliza-se estas matrizes para avaliar funções de duas variáveis. As linhas
de X são cópias do vetor x e as colunas de Y são cópias do vetor y. Para ilustrar o uso da
função meshgrid, considere a função sin(R)/r, também chamada função sinc. Para avaliar
esta função entre -8 e 8, tanto em x como em y, passa-se como argumento dois vetores
para a função meshgrid criando as matrizes necessárias:

>> 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 contém a distância dos pontos ao centro da matriz, o qual é a origem. A
utilização da constante eps evita a divisão por zero, causando erro numérico.


4.11.3 Gráficos de Contorno

O MATLAB possui funções para gerar gráficos de contorno tanto para 2-D como
para 3-D. As funções contour e contour3 geram gráficos compostos de linhas obtidas da
matriz entrada como argumento. Existe a opção de se especificar o número 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 gráfico de contorno contendo
20 linhas de contorno e usando o arquivo-M peaks para gerar os dados de entrada.

>> contour(peaks,20);

Capítulo 4 – Gráficos
25
Os círculos de contorno agem da mesma forma que a função plot com relação a
estilos de linha, marcadores e cores. Para criar um gráfico de contorno 3-D com os
mesmo dados, utiliza-se a função contour3:

>> contour3(peaks,20)

Capítulo 5 – Decisões e Loops
26
Capítulo 5 Decisões e Loops

5.1 Introdução

Em MATLAB existem algumas estruturas que controlam o fluxo de dados. Estas
permitem ao programador controlar e alterar a seqüência de execução do programa.
As estruturas de controle de fluxo são fundamentais para qualquer linguagem de
programação. Sem elas só haveria uma maneira do programa ser executado: de cima para
baixo, comando por comando. Não haveria condições para que comandos fossem
executados, repetições de comandos ou blocos de comando, ou saltos de linhas de código.
A linguagem MATLAB possui diversos comandos de controle de fluxo que serão
descritos a seguir.


5.2 Comandos Condicionais

São estruturas utilizadas para selecionar comandos ou blocos de comandos que
devem ser executados ou não, dependendo de determinadas condições.


5.2.1 Estrutura if

A estrutura básica if permite que o programa execute uma linha de comando ou um
bloco de comandos , se a condição dada por uma expressão for verdadeira.
Representa uma tomada de decisão do tipo SE isto ENTÃO aquilo.

Sintaxe:
if (<condição>)
<comandos>;
end

A condição do comando if é uma expressão que será avaliada. Se a expressão for
falsa os comandos não serão executados, caso contrário os comandos serão executados. O
bloco comandos pode ser um bloco de códigos ou apenas um comando simples.









Capítulo 5 – Decisões e Loops
27
5.2.2 Estrutura do if Estendido

Sintaxe:
if (<condição>)
<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
expressão da condição 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 declarações será
executada. Nunca serão executadas as duas ou nenhuma delas.
Pode também ser usada a estrutura if-elseif-end.

Sintaxe:
if (<condição1>)
<comandos1>;
elseif (<condição2>)
<comandos2>;
elseif (<condição3>)
<comandos3>;
end

Neste caso <comandosX> só será executado se <condiçãoX> for verdadeira. Se
por exemplo <condição1> for verdadeira, então será executado <comandos1>. Os
comandos subseqüentes não serão executados mesmo que as respectivas condições sejam
verdadeiras.


5.2.3 Estrutura de if’s Aninhados

O comando a ser executado quando a condição de uma sentença da estrutura if for
satisfeita pode ser um outro if.

Sintaxe:
if (<condição1>)
if (<condição2>)
<comandos1>;
end
else
<comandos2>;
end

Se a <condição1> for verdadeira o programa verifica se a <condição2> é
verdadeira. Caso seja é executado <comandos1>. Caso <condição1> seja falsa é executado
<comandos2>. Se <condição1> for verdadeira, mas <condição2> for falsa, não é
executado nenhum comando.
Para avaliar duas ou mais condições podem ser usadas as seguintes sintaxes:

Capítulo 5 – Decisões e Loops
28
Sintaxe:
if (<condição1> & <condição2>)
<comandos1>
else
<comandos2>;
end

Se <condição1> e <condição2> forem verdadeiras será executado <comandos1>.
Caso uma das condições ou ambas forem falsas será executado <comandos2>.

Sintaxe:
if (<condição1> | <condição2>)
<comandos1>
else
<comandos2>;
end

Se <condição1> ou <condição2> ou ambas forem verdadeiras será executado
<comandos1>. Caso as condições forem falsas será executado <comandos2>.

Observação: A indentação não é necessária para a execução do programa, mas
ajuda a verificar o relacionamento entre a condição do if e as sentenças que dependem
dela.


5.2.4 Swicth : Case

O comando swicth (botão) permite selecionar, entre várias escolhas numa faixa de
valores fixados, uma determinada expressão. A seleção é determinada pelo valor da
expressão que você especifica. São definidas as possíveis posições swicth para um ou mais
valores case, um deles é selecionado se o valor da expressão swicth é a mesma que o valor
do case. É necessário que exista um valor para cada possível escolha do swicth. Se o valor
da expressão swicth não encaixar com nenhum dos valores case, então 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,
pés ou metros em centímetros).

x = 3.5;
unidade = 'm';
switch unidade % Converte x para centímetros
case {' inch',' in'}
y = x * 2.54;
case {'feet', 'ft' }
Capítulo 5 – Decisões 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 conversão de x metros para y
centímetros.


5.3 Comandos Repetitivos ou Laços

Estas estruturas nos permitem repetir um grupo de comandos (sentenças), de acordo
com condições. Existem várias estruturas para repetições. As mais utilizadas são o for que
é uma das estruturas para se trabalhar com loops, e o while. São comandos que permitem
repetições controladas.


5.3.1 Estrutura for

O MATLAB possui sua própria versão dos loops for encontrados em linguagens de
programação. Isto permite que um grupo de linhas de comando seja repetido por um
número fixo e predeterminado de vezes.

Sintaxe:
for início: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 construção ainda é
válida, mas o MATLAB não executa a linha de comando interna. Se x não existe ou
possui menos de n elementos, então o espaço adicional é alocado automaticamente.
Uma importante observação é que se deve sempre finalizar um loop for com um
end. Se for digitado

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

Capítulo 5 – Decisões 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 não se pode esquecer que
cada for deve ter seu próprio end. Pode-se também fazer com que o loop decresça, de
acordo com a expressão 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 operação dos Loops

5.3.2.1 Break

O comando break pode ser usado no corpo de qualquer estrutura de laço do
MATLAB. Causa a saída imediata do laço e o controle passa para o próximo comando do
programa. Caso seja usado fora de todos os laços, o comando break interrompe
imediatamente a execução do programa.

Sintaxe:
break;


5.3.2.2 Continue

Executar o comando continue dentro de um laço faz com que a próxima iteração
comece imediatamente, pulando todas e quaisquer sentenças restantes da iteração corrente.

Sintaxe:
continue;



Capítulo 5 – Decisões e Loops
31
5.3.3 A Estrutura while

O MATLAB possui sua própria versão do loop while, o qual permite que uma linha
de comando, ou um grupo de linhas de comando, seja repetida um número indefinido de
vezes, através do controle de uma condição lógica.

Sintaxe:
while <condição>
<comandos>;
end

Os comandos (ou um simples comando) serão executados enquanto a expressão
testada na condição for verdadeira. Quando a condição retornar o valor falso o programa
continua na linha de código logo após o loop.
A matriz da expressão de condição é quase sempre uma expressão relacional 1 por
1, então números não-nulos correspondem a uma expressão verdadeira. Quando a matriz
da expressão não é um escalar, pode-se reduzi-la através das funções 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 não 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 execução
normalmente. Observe também o comando continue.



Capítulo 5 – Decisões 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),'Execuçao ',num2str(x)])
v = input([blanks(5),'Opçao: ']);
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.'])





















Capítulo 5 – Decisões e Loops
33
G
1
1 2
3
L 1-2
L 2-3
P
2
+ jQ
2
P
3
+ jQ
3
5.4 Exercícios

1 – Escreva um programa que leia 3 números e os escreva em ordem crescente.

2 – Faça um programa que leia um número inteiro, verifique se é positivo ou negativo e
escreva uma mensagem apropriada ao seu tipo.

3 – Escreva um programa para calcular o fatorial de um número lido.

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








5 – O cálculo de raízes de equações lineares pode ser facilmente alcançado (Ax = B). Mas
infelizmente ainda não existe um método direto para solucionar sistemas de equações não
lineares ( ) 0
i
g x = . Por isso métodos numéricos devem ser empregados. O método
iterativo mais utilizado é o método de Newton, onde a partir de um vetor x qualquer, ele
calcula novos valores para o vetor x para alcançar x* (solução). Sua forma de recorrência
é dada pela expressão abaixo:


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


k
x são os valores de [x] na iteração k.

1 k
x
+
são os valores de [x] a serem calculados.
( )
k
g x são os valores da função no ponto [x].

'
( )
k
g x são os valores da derivada da função no ponto [x]. Também chamada de
Jacobiana.



Linha R X
1 – 2 0,50 0,60
2 – 3 1,20 1,10
Capítulo 5 – Decisões 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
+
− ≤ , então monte um programa
para resolver as seguintes equações.

2
4 1
5 3
y x x
y x
¦ = + +
´
= +
¹





Capítulo 6 – Arquivos-M: Scripts e Funções
35
Capítulo 6 Arquivos-M: Scripts e Funções


Um dos assuntos mais importantes, a criação de arquivos-M é descrita neste
capítulo. 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 também pode executar uma seqüência de comandos que está
armazenada em um arquivo.
Arquivos de disco que possuem linhas de comando para o MATLAB são
chamados arquivos-M em virtude de sua extensão ser do tipo .m. Por exemplo, o
arquivo bessel.m contém linhas de comando do MATLAB para avaliar funções Bessel.
Um arquivo-M consiste de uma seqüência 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 funções. Scripts, ou
arquivos script, realizam longas seqüências de comandos. Funções, ou arquivos função,
permitem adicionar novas funções às funções já existentes. A maior parte do poder do
MATLAB se deve ao fato de se poder criar novas funções que resolvam problemas
específicos.


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 estão no espaço de trabalho. Scripts são úteis na
realização de análises, solução de problemas, ou no projeto de longas seqüências 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 números da série de Fibonacci, e crie um gráfico.
Após a execução do arquivo estar completa, as variáveis f e i ficam mantidas no espaço
de trabalho.








Capítulo 6 – Arquivos-M: Scripts e Funções
36
6.2 Arquivos Função

Um arquivo-M que contém a palavra function no início da primeira linha é um
arquivo função. Uma função difere de um script pelos argumentos que devem ser
passados e pelas variáveis que são definidas e manipuladas, que são locais à função e
não podem ser operadas globalmente no espaço de trabalho. O arquivo media.m é um
exemplo de um arquivo função 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 existência deste arquivo define uma nova função chamada media. A nova
função media é usada como qualquer outra função do MATLAB. Por exemplo, se z é
um vetor de inteiros de 1 a 99,

>> z = 1:99;

o valor médio deste é encontrado através do comando

>> mean(z)

que resulta em

ans =
50

As informações abaixo são para o arquivo media.m, mas o princípio é válido para
todos os arquivos função:
• A primeira linha declara o nome da função e os argumentos de entrada e saída.
Sem esta linha, o arquivo é um arquivo script, e não um arquivo função.
• O símbolo % indica que o restante da linha é um comentário e deve ser
ignorado.
• As primeiras linhas descrevem o arquivo-M e são mostradas quando você digita
help media.
• As variáveis m, n e y são locais a media e não aparecem no espaço de trabalho
após media ter terminado. (Ou, se elas existem, permanecem inalteradas.).
• Não é necessário definir os inteiros de 1 a 99 em uma variável de nome x. No
exemplo, a função media foi usada com uma variável z. O vetor z que contém os
inteiros de 1 a 99 foi passado ou copiado para media onde ele se tornou uma
variável local de nome x.
Capítulo 6 – Arquivos-M: Scripts e Funções
37
Pode-se criar uma ajuda online para os arquivos-M entrando com um texto de
uma ou mais linhas de comentários, começando pela segunda linha do arquivo. Por
exemplo, o arquivo-M angle.m contém

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 são
mostradas. Baseado nisto, a primeira linha de comentários em qualquer arquivo-M deve
conter o maior número de informações possíveis.


6.3 Variáveis Globais

Cada função do MATLAB definida por um arquivo-M possui suas próprias
variáveis locais, as quais não tem relação com as de outras funções e com as do espaço
de trabalho. Entretanto, se várias funções e também o plano de trabalho declararem uma
variável particular como global, então todos eles dividem a mesma variável. Qualquer
atribuição a esta variável, em qualquer função, fica disponível a todas as outras funções
que a declaram como global.
Para fazer com que uma variável seja global, basta escrever

global X Y Z

onde as variáveis X, Y e Z irão trabalhar como sendo globais.


6.4 Strings de Texto

Strings de texto são 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
Capítulo 6 – Arquivos-M: Scripts e Funções
38
indica que s possui cinco elementos. Os caracteres são armazenados com seus valores
ASCII, e a função abs e a função double mostram estes valores:

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

A função char faz a transformação inversa:

>> char(f)
ans =
Engenharia

Utiliza-se colchetes ou a função strcat para juntar variáveis de texto em strings
maiores:

>> s = [s, ‘ Elétrica ‘]
s =
Engenharia Elétrica

>> s = strcat(s, ‘ Elétrica ‘)
s =
Engenharia Elétrica


6.5 A Função Eval

A função eval trabalha com variáveis 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 dimensão n por n, onde cada elemento é avaliado pela função que
está descrita por t.







Capítulo 7 – Arquivos E/S
39
Capítulo 7 Arquivos E/S

As funções de E/S (Entrada/Saída) de arquivo do MATLAB que permitem a
leitura e a escrita em formato diferente ao gerados pelo mesmo são descritas neste
capítulo.
As funções 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 funções lêem e
gravam arquivos de texto formatados e arquivos binários 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 permissão. Por exemplo,

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

abre para leitura o arquivo arquivo.txt.

As strings de permissão disponíveis são:

’r’ para leitura
‘w’ para gravação
‘a’ para atribuição
‘r+’ tanto para leitura como para gravação

Outras strings de permissão podem ser obtidas com o comando help fopen.
A função fopen retorna um identificador de arquivo, que é um inteiro positivo
atribuído ao arquivo pelo sistema operacional. Este identificador de arquivo é
basicamente um atalho para se referenciar o arquivo. As funções 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 não pode ser aberto, fopen retorna -1
como identificador. É aconselhável testar o identificador cada vez que um arquivo é
aberto. Um segundo valor que é retornado pode fornecer informação adicional sobre
erros. Por exemplo, se MATLAB não 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 disponível para leitura e gravação. Quando se
termina a leitura ou a gravação, usa-se fclose para fechar o arquivo. Por exemplo,

>> status = fclose(fid)
Capítulo 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 operação for
realizada com sucesso, ou -1 se algo de errado acontecer.


7.2 Leitura de Arquivos

A função fread lê arquivos de dados binários. 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 número de valores lidos e a
precisão 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 número 100
pelas dimensões 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.











Capítulo 7 – Arquivos E/S
41
7.3 Escrevendo Arquivos de Texto Formatados e Strings

A função fprintf converte dados em strings de caractere e os mostra na tela ou em
um arquivo. O formato de saída é definido por um especificador de conversão e por um
texto. Os especificadores de conversão controlam a saída dos elementos de uma matriz.
Os textos são copiados diretamente. Os especificadores são precedidos pelo caractere
%; conversões comuns incluem

• %e para notação exponencial
• %f para notação de ponto fixo
• %g que seleciona automaticamente o menor entre %e e %f

Campos opcionais no especificador de formato controlam o tamanho e a precisão
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 função exponencial. A
primeira chamada a fprintf escreve o título, 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 espaços
• um valor de ponto fixo de doze caracteres com oito casas decimais


7.4 Lendo Arquivos de Texto Formatados e Strings

A função de entrada de texto do MATLAB, fscanf, é similar à função 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 conversão, nesta
ordem. Os especificadores para fscanf são precedidos pelo caractere %; conversões
comuns incluem




Capítulo 7 – Arquivos E/S
42
• %s para converter uma string
• %d para converter um número 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 título combina com o especificador %c na primeira chamada à fscanf.
A segunda chamada entra com a tabela de valores. count retorna o número de valores
combinados.

SUMÁRIO CAPÍTULO 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 2.1 2.2 2.3 2.4 2.5 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 INTRODUÇÃO .............................................................................. 1

LINHA DE COMANDO .......................................................................................... 1 COMANDOS E VARIÁVEIS ................................................................................... 2 CONSTANTES ..................................................................................................... 3 EDITOR .............................................................................................................. 3 MATRIZES SIMPLES ........................................................................................... 3 ELEMENTOS DA MATRIZ .................................................................................... 4 INFORMAÇÕES DA ÁREA DE TRABALHO ............................................................ 5 FINALIZANDO E SALVANDO O ESPAÇO DE TRABALHO ....................................... 6 NÚMEROS E EXPRESSÕES ARITMÉTICAS ............................................................ 6 NÚMEROS COMPLEXOS E MATRIZES ................................................................. 7 FORMATOS DE SAÍDA ........................................................................................ 7 OPERANDO MATRIZES E VETORES ..................................... 8 GERANDO VETORES .......................................................................................... 8 MATRIZES ESPECIAIS ......................................................................................... 9 OPERANDO COM MATRIZES ............................................................................... 9 OPERAÇÕES RELACIONAIS ............................................................................... 10 OPERAÇÕES LÓGICAS ...................................................................................... 10 FUNÇÕES MAIS USADAS EM ENGENHARIA..................... 12 ANÁLISE DE DADOS ......................................................................................... 12 FATORAÇÃO LU .............................................................................................. 12 DECOMPOSIÇÃO EM AUTOVALORES E AUTOVETORES ..................................... 13 REPRESENTAÇÃO POLINOMIAL ........................................................................ 13 DERIVADA ....................................................................................................... 14 INTEGRAL ........................................................................................................ 14 LAPLACE ......................................................................................................... 15 DIAGRAMA DE BODE ....................................................................................... 15 DIAGRAMA FASORIAL ..................................................................................... 16 GRÁFICOS ................................................................................... 18

CAPÍTULO 2

CAPÍTULO 3

CAPÍTULO 4

4.1 FUNÇÕES ELEMENTARES DE PLOTAGEM.......................................................... 18 4.2 CRIANDO UM GRÁFICO .................................................................................... 18 4.3 SUBGRÁFICOS .................................................................................................. 19 4.4 FIGURA ............................................................................................................ 19 4.5 FUNÇÃO AXIS .................................................................................................. 20 4.6 ADICIONANDO LINHAS A UM GRÁFICO EXISTENTE ......................................... 20 4.7 ESTILOS DE LINHAS E MARCADORES DE COR .................................................. 21 4.8 DADOS COMPLEXOS ........................................................................................ 21 4.9 FUNÇÕES ESPECIAIS PARA GRÁFICOS 2D......................................................... 22 4.10 EXPORTANDO GRÁFICOS ................................................................................. 22 4.11 GRÁFICOS 3D .................................................................................................. 23 4.11.1 Gráficos de Linhas ................................................................................. 23 4.11.2 Meshgrid................................................................................................. 24 4.11.3 Gráficos de Contorno ............................................................................. 24

ii

CAPÍTULO 5

DECISÕES E LOOPS.................................................................. 26

5.1 INTRODUÇÃO ................................................................................................... 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 if’s Aninhados.................................................................... 27 5.2.4 Swicth : Case .......................................................................................... 28 5.3 COMANDOS REPETITIVOS OU LAÇOS ............................................................... 29 5.3.1 Estrutura for ........................................................................................... 29 5.3.2 Comandos que Afetam a operação 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 EXERCÍCIOS ..................................................................................................... 33 CAPÍTULO 6 6.1 6.2 6.3 6.4 6.5 7.1 7.2 7.3 7.4 ARQUIVOS-M: SCRIPTS E FUNÇÕES .................................. 35 ARQUIVOS SCRIPTS ......................................................................................... 35 ARQUIVOS FUNÇÃO ......................................................................................... 36 VARIÁVEIS GLOBAIS ....................................................................................... 37 STRINGS DE TEXTO .......................................................................................... 37 A FUNÇÃO EVAL ............................................................................................. 38 ARQUIVOS E/S............................................................................ 39 ABRINDO E FECHANDO ARQUIVOS .................................................................. 39 LEITURA DE ARQUIVOS ................................................................................... 40 ESCREVENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS ........................ 41 LENDO ARQUIVOS DE TEXTO FORMATADOS E STRINGS .................................. 41

CAPÍTULO 7

iii

Capítulo 1 – Introdução

Capítulo 1 Introdução
O MATLAB (MATrix LABoratory) é um software produzido pela MathWorks, Inc, para computação técnica e científica em geral. O MATLAB é uma ferramenta computacional muito importante para o estudante de Engenharia Elétrica e é utilizada durante todo o curso em várias disciplinas. Os usos típicos do MATLAB na Engenharia Elétrica incluem: • • • Cálculos matemáticos; Construção de gráficos; Desenvolvimento de algoritmos.

1.1 Linha de comando
O MATLAB funciona com linhas de comando, na janela principal. Nela é colocada qualquer instrução ao MATLAB. As linhas de comando são frequentemente da forma:
variável = expressão

ou simplesmente
expressão

Podem ser compostas expressões com operadores e outros caracteres especiais, com funções, e com nomes de variáveis. A execução da expressão produz uma matriz. A matriz é mostrada na tela e assume o nome da variável definida na linha de comando para que possa ser utilizada em uma outra situação. Se for omitido o nome da variável e o sinal =, o MATLAB cria automaticamente uma variável com o nome ans. Por exemplo, digitando a expressão:
>> sqrt(5) ans = 2.2361

Uma linha de comando normalmente termina com a tecla Enter. Entretanto, se o último caractere for um ponto-e-vírgula (;), a variável que é produzida não é mostrada na tela. Se a expressão é complicada de tal forma que não cabe em uma linha, utiliza-se os três pontos (...) seguidos pela tecla Enter para indicar que a linha de comando continua na próxima linha. Pode-se formar nome de funções e variáveis com uma letra seguida por um número qualquer de letras e dígitos. O nome de variável pode ser definido como uma letra ou um conjunto de caracteres, havendo diferença entre letra minúscula e letra 1

Por exemplo. Alguns comandos importantes no MATLAB: Comando . ans Inf NaN Ctrl c ! clc clear Descrição suprime a impressão de resultados serve para se colocar um comentário que a linha de comando continua na próxima linha variável usada para assumir o resultado referente ao último comando infinito (exemplo: digite 1/0) indeterminação (exemplo: digite 0/0) interrompe comandos do MATLAB seguida de um comando do DOS. que fornece informação sobre grande parte dos tópicos do MATLAB.. Se mais de uma palavra for usada para representar uma variável. Cada linha mostrada lista o nome de um diretório seguido por uma descrição do conteúdo do mesmo. acionará este comando digitado limpa a tela(semelhante ao comando CLS do DOS) apaga as variáveis do workspace Um comando importante é o comando help. O MATLAB entende de forma diferente letras maiúsculas e minúsculas. preço_de_venda. % . Os nomes das funções devem ser digitados em letras minúsculas. val3.Capítulo 1 – Introdução maiúscula. Sem nenhum argumento mostra uma lista de diretórios que contêm arquivos relacionados com MATLAB. Para uma lista de funções relacionadas a um determinado diretório. tais como control e signal.. A e a não são a mesma variável.2 Comandos e variáveis Os comandos no MATLAB são sempre editados em letras minúsculas. se for passado ao MATLAB o comando: >> lookfor inverse A seguinte resposta é retornada: 2 . funções e símbolos específicos do MATLAB. custo_médio. digita-se help seguido pelo nome do mesmo. Outros contêm toolboxes. através da especificação dos primeiros caracteres seguidos pela tecla ↑. O comando help seguido por estes comandos ou funções fornece informações sobre como utilizá-los em uma linha de comando. Pode ser utilizada uma chamada rápida ao invés da digitação dos comandos previamente digitados. deve ser usado o sinal de sublinhado para ligar os nomes que representarão a variável. esses possuem funções adicionais do MATLAB cobrindo áreas de aplicações mais especializadas. A. Alguns diretórios são associados com os comandos básicos do MATLAB. 1. Aparece uma lista de comandos. Exemplo de nomes de variáveis: a. Os comandos que MATLAB executou durante uma sessão são armazenados até um certo limite. preço1. etc. Outra função do MATLAB é o lookfor que procura funções a partir de uma palavrachave especificada.

como são indicados no papel. Para acionar o editor de textos no ambiente MATLAB.Capítulo 1 – Introdução INVHILB Inverse Hilbert matrix. denominações específicas são atribuídas a matrizes 1 por 1.22 x 10-16 i = −1 j = −1 1.5 Matrizes Simples MATLAB trabalha essencialmente com um tipo de objeto. acione sequencialmente.4 Editor O MATLAB 6.3 Constantes O MATLAB vem ainda com algumas constantes definidas.. 3 .m. e a matrizes com somente uma linha ou coluna.m são arquivos executáveis para o MATLAB. Chamar matrizes de um arquivo de dados externo.. as opções do menu: File New M-File O editor será aberto em outra janela. uma matriz retangular numérica (real ou complexa). IPERMUTE Inverse permute array dimensions. 1. . Operações e comandos no MATLAB são aplicados de maneira natural. ACOS Inverse cosine. são elas: pi: 3.5 tem um editor de texto. Os arquivos com extensão . 1. Em algumas situações. onde é possível digitar programas salvando-os em arquivos com extensão . Pode-se entrar com matrizes no MATLAB de diversas maneiras: • • • • Entrar com uma lista explícita de elementos.141592653 eps: 2. uma página em branco. são retornadas. ACOSH Inverse hyperbolic cosine. Gerar matrizes utilizando funções e linhas de comando do MATLAB. onde podem ser colocadas instruções ao MATLAB. que são os vetores. utilizando o conceito de matriz. que são os escalares. Todas as funções onde aparecem a palavra inverse. Criar matrizes em arquivos-M.

Capítulo 1 – Introdução A maneira mais fácil de se declarar matrizes é fazendo a explicitação da lista de elementos na linha de comando.6 Elementos da Matriz Elementos de matriz podem ser quaisquer expressões que o MATLAB permite. também. entrando com a linha de comando: >> A = [1 2 3. ( ).m contém as três linhas de texto: A = [ 1 2 3 4 5 6 7 8 9 ]. Então o comando: >> matriz atribui à matriz A os dados correspondentes.3 sqrt(3) (1+2+3)*4/5] resulta em x = -1. por exemplo: >> x = [-1. seguindo as convenções abaixo: • • • Separar os elementos da lista de elementos através de espaços ou vírgulas. 4 5 6. Colocar os elementos entre colchetes.3000 1.) ponto-e-vírgula para indicar o fim de uma linha. Usar (.8000 Elementos individuais de matrizes podem ser referenciados individualmente com índices dentro de parênteses. entrar matrizes de arquivos de extensão . [ ].7321 4. No exemplo anterior: >> x(5) = abs(x(1)) 4 . 7 8 9] resulta em: A = 1 4 7 2 5 8 3 6 9 Pode-se.m. Se um arquivo com o nome de matriz. 1. Por exemplo.

>> A = [A. Por exemplo.Capítulo 1 – Introdução x = -1. 5 . a dimensão da matriz correspondente.:). o número de elementos dessa matriz.3000 1. Por exemplo >> A = A(1:3. o qual traz informações sobre o nome. entre outros.8000 0 1. Podem-se construir grandes matrizes utilizando matrizes menores como elementos.3000 Perceba que o tamanho de x aumenta automaticamente para acomodar o novo elemento. para acrescentar uma nova linha à matriz A: >> r = [10 11 12]. r] Isto resulta em A = 1 4 7 10 2 5 8 11 3 6 9 12 Matrizes menores podem ser extraídas de matrizes grandes utilizando os dois pontos (:). Para listar as variáveis armazenadas use o comando: >> who Para verificar uma listagem mais completas sobre as variáveis armazenadas deve-se utilizar o comando whos. fornece a seguinte matriz A = 1 4 7 2 5 8 3 6 9 e faz com que retorne as três primeiras linhas e todas as colunas da matriz original A para a matriz A.7 Informações da Área de Trabalho Os exemplos previamente executados criaram variáveis que são armazenadas do espaço de trabalho do MATLAB.7321 4. 1. e os elementos indefinidos são assumidos como sendo zero.

Funções podem ser facilmente criadas através dos arquivos-M. 1.141159i Podem ser construídas expressões com os operadores de aritmética usuais e as regras de precedência: Operador + * / \ ^ Função Adição Subtração Multiplicação Divisão por número à direita Divisão por número à esquerda Potência O MATLAB possui também funções matemáticas elementares encontradas em calculadoras científicas tais como abs. para números. Na próxima vez que MATLAB é chamado.Capítulo 1 – Introdução 1.6397238 1. Antes de terminar. pode-se executar o comando load ou load matlab. Terminando uma sessão do MATLAB. Algumas funções simplesmente retornam valores especiais comumente utilizados. sin e etc.mat.60210E-20 6. ou salvar somente algumas variáveis.mat.8 Finalizando e Salvando o Espaço de Trabalho Para finalizar o MATLAB digite quit ou exit.0001 9.02252e23 -3.mat.9 Números e Expressões Aritméticas O MATLAB utiliza a notação decimal convencional. você apaga as variáveis do espaço de trabalho. Alguns exemplos de números válidos são: 3e5i 3 -99 0. O comando save temp salva as variáveis em um arquivo de nome temp. como a função pi que retorna o valor da constante. Pode-se incluir um fator de escala em potência de dez ou uma indicação de número complexo como sufixo. O comando >> save temp X Y Z salva as variáveis X. log. com ponto decimal e sinal negativo opcionais.mat para restaurar o espaço de trabalho com as variáveis de matlab. sqrt. pode-se salvar as variáveis com o comando save.mat. Podem ser utilizados os comandos save e load em arquivos com outros nomes. 6 . Este comando salva todas as variáveis em um arquivo em disco chamado matlab. Y e Z no arquivo temp.

deve ser evitado qualquer espaço em branco.2345e-6] Os formatos e as saídas resultantes para este vetor são: Comando format short format short e format long format long e format bank Resultado numérico 1.11 Formatos de Saída O comando format pode ser utilizado para controlar o formato numérico mostrado após a execução de uma linha de comando. Como um exemplo. temos: >> z = 3 + 4*i Uma outra forma é: >> w = r*exp(i*theta) Quando forem entrados números complexos como elementos de matriz com os colchetes.2345e-06 1. suponha: >> x = [4/3 1.3333 0. representa dois números.Capítulo 1 – Introdução 1. Se ao menos um elemento de uma matriz não é um inteiro exato. mostra aproximadamente cinco dígitos decimais significativos.23 e-4.3333e+00 1.234500000000000e-06 1. com espaços em volta do sinal +. 1. Os outros formatos mostram mais dígitos significativos ou utilizam notação decimal. como em 1. Assim. chamado de short format.0000 1. O nome de uma função do MATLAB também pode ser usado como o nome de uma variável. a matriz é mostrada em um formato sem pontos decimais. O formato padrão.10 Números Complexos e Matrizes O MATLAB permite números complexos. Isto também é válido para números reais.00 O comando help format mostra mais alguns tipos possíveis de formato. em todas as operações ou funções. Quando utilizado como uma variável.333333333333333e+00 1. causa um erro. indicados pela função especial i ou j.33 0. 7 . a função original se torna indisponível no espaço de trabalho até que a variável seja apagada. Se todos os elementos de uma matriz forem inteiros exatos.33333333333333 0.00000123456000 1. Uma expressão como 1 + 5*i. vários formatos de saída são possíveis. um espaço antes do exponencial.

que permite que você especifique o número de pontos ao invés do incremento.5) produz: z = 0 0.5000 2.0000 1.5000 1. o qual gera vetores espaçados logaritmicamente.Capítulo 2 – Operando Matrizes e Vetores Capítulo 2 Operando Matrizes e Vetores 2. e o linspace.0000 8 . A linha de comando: >> x = 1:5 gera um vetor linha contendo os números de 1 a 5 com incremento de uma unidade.1 Gerando Vetores Os dois pontos (:) representam um caractere importante no MATLAB. Exemplo: >> z = linspace(0.2. Para se obter um vetor coluna basta transpor o vetor linha gerado. Outras funções para geração de vetor incluem o logspace. 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 começando em zero e terminando em oito com incremento de dois.

A operação de multiplicação é definida quando o número de colunas da primeira matriz for igual ao número de linhas da segunda matriz. O MATLAB trata expressões como exp(A) e sqrt(A) como operações de vetores. Na primeira. Para matrizes complexas. mas o resultado é obtido diretamente sem o cálculo da inversa. um vetor ou. definidas em cada elemento de A. para obtermos somente a transposta de uma matriz complexa devemos fazer B = conj (A’) ou transp(A). Em geral X = A\B é uma solução para A*X = B X = B/A é uma solução para X*A = B A divisão à esquerda. teremos que a linha de comando acima fornece a transposta complexa conjugada. é definida sempre que B tiver o mesmo número de linhas que A. Elementos randômicos normalmente distribuídos. A expressão A^p eleva A a p-ésima potência e é definida se A é uma matriz quadrada e p é um escalar.Capítulo 2 – Operando Matrizes e Vetores 2.3 Operando com Matrizes A linha de comando B = A’ indica que a variável B recebe a transposta da matriz A. Matriz identidade. inv(A)*B e B*inv(A). 2. Dependendo se A for quadrada ou não. o escalar é adicionado ou subtraído de todos os elementos do outro operando. então A\B e B/A corresponde formalmente a multiplicação à esquerda e à direita de B pela inversa de A. o resultado pode ser uma matriz. Vetores espaçados logaritmicamente. Produz uma matriz com elementos unitários. As funções elementares de matrizes incluem 9 . A\B. Elementos randômicos uniformemente distribuídos. O produto de um escalar por uma matriz resulta em todos os elementos da matriz multiplicados pelo escalar. Assim. Na segunda forma.2 Matrizes Especiais O MATLAB apresenta algumas funções úteis para gerar matrizes: Função zeros ones rand randn eye linspace logspace Descrição Produz uma matriz com elementos nulos. Vetor espaçado linearmente. A divisão normal de um escalar pelo outro é feita fazendo-se x/y. cada elemento de uma matriz é somado ou subtraído do correspondente na outra matriz. A adição e subtração de matrizes pode ser feita entre matrizes de mesma dimensão ou entre um escalar e uma matriz. Dependendo das dimensões envolvidas. ou seja. um escalar. até mesmo. Se A é uma matriz quadrada não-singular. deve-se usar algum método de fatoração.

e 0s onde ambas possuem elementos nulos.5 Operações Lógicas Os operadores &. Inverte a matriz de cima para baixo. o resultado é uma matriz de elementos unitários e elementos nulos. com 1 representando verdadeiro e 0 representando falso. Exemplos: C = A & B é uma matriz cujo os elementos são 1s onde ambas as matrizes A e B são elementos não-nulos.Capítulo 2 – Operando Matrizes e Vetores Função poly det trace exp log sqrt poly rot90 fliplr flipud diag tril triu reshape ‘ Descrição polinômio característico determinante traço da matriz exponencial de cada elemento da matriz logaritmo de cada elemento da matriz raiz quadrada de cada elemento da matriz polinômio característico Rotaciona a matriz de 90 graus. Altera o formato. B = ~A é uma matriz cujo os elementos são 1s onde a matriz A é um elemento nulo. C = A | B é uma matriz cujo os elementos são 1s onde tanto A ou B possuem elementos não-nulos. Extrai ou cria diagonal.4 Operações Relacionais Seis operadores relacionais estão disponíveis para a comparação de duas matrizes de dimensões idênticas. ~ correspondem aos operadores lógicos “e”. “ou” e “não”. 2. Transposição. Operador < <= > >= == ~= Descrição Menor que Menor ou igual a Maior que Maior ou igual a Igual Diferente O MATLAB compara os elementos correspondentes de cada matriz.. 10 . 2. Inverte a matriz da esquerda para a direita. |. Triângulo inferior. Triângulo superior. e 0s onde uma das matrizes ou ambas são elementos nulos. e 0s quando A é um elemento não-nulo.

11 . detecta matrizes esparsas. detecta matrizes vazias. condições lógicas. detecta se algum elemento da matriz é Inf. detecta variáveis string. ou quando uma das duas matrizes é um escalar.Capítulo 2 – Operando Matrizes e Vetores Todas as operações acima são válidas apenas para quando A e B possuem mesma dimensão. verifica os valores finitos da matriz. As funções lógicas e relacionais do MATLAB são: Função any all find exist isnan isinf finite isempty isstr isglobal issparse Descrição condições lógicas. encontra os índices da matriz de valores lógicos. detecta se algum elemento da matriz é NaN. detecta variáveis globais. verifica a existência de variáveis.

o resultado é um vetor linha contendo o valor máximo de cada coluna. A linha de comando é descrita como: >> [L. Esta fatoração é frequentemente chamada de LU.Capítulo 3 – Funções mais Usadas em Engenharia Capítulo 3 Funções mais Usadas em Engenharia 3. 3. não irá importar se o vetor é orientado por linha ou por coluna. 12 . as funções operarão orientadas por coluna. Desta forma. Se o argumento for uma matriz.1 Análise de Dados Um grupo de funções utilizadas para análise de dados é mostrado abaixo: Função max min mean std sort sum prod cumsum cumprod hist Descrição valor máximo valor mínimo valor médio desvio médio ordenar soma dos elementos produto dos elementos soma acumulativa dos elementos produto acumulativo dos elementos histograma Quando os argumentos forem vetores. sendo uma delas a permutação de uma matriz triangular inferior e a outra uma matriz triangular superior. se você aplicar a função max a uma matriz.2 Fatoração LU O método de fatoração mais básico expressa uma matriz qualquer como o produto de duas matrizes essencialmente triangulares.U] = lu(A) onde L é a permutação da matriz triangular inferior e U é a matriz triangular superior.

os n números que satisfazem Ax = x são os autovalores de A.4 Representação Polinomial O MATLAB representa polinômios como vetores linha contendo os coeficientes na ordem decrescente de potência. Eles são encontrados utilizando: >> eig(A) que retorna os autovalores em uma vetor coluna. Se A é real e simétrica. Para se obter os autovalores e os autovetores de uma vez basta utilizar a seguinte linha de comando: >> [X.1229 -5. Pode-se obter o polinômio original através das raízes encontradas acima >> p2 = poly(r) p2 = 1 -6 -72 -27 13 .27. Por exemplo. Mas se A não é simétrica.3 Decomposição em Autovalores e Autovetores Se A é uma matriz n-por-n.7345 -0. os autovalores frequentemente são números complexos. As raízes desta equação são dadas por: >> r = roots(p) r = 12. os autovalores são reais.Capítulo 3 – Funções mais Usadas em Engenharia 3. a equação característica da matriz: A = [ 1 2 3 4 5 6 7 8 0 ] é computada através de: >> p = poly(A) p = 1 -6 -72 -27 Esta é a representação do MATLAB para o polinômio S3 – 6S2 – 72S .3884 As raízes da equação característica são os autovalores da matriz A.D] = eig(A) onde os elementos da diagonal de D são os autovalores e as colunas de X são os autovetores correspondentes tais que AX = XD. 3.

b) c = 4 13 28 27 18 Uma lista completa das funções polinomiais inclui: Função poly roots polyval polyvalm conv deconv residue polyder polyfit Descrição polinômio característico raízes do polinômio avalia o polinômio com o argumento substituindo a variável avalia o polinômio com o argumento sendo uma matriz multiplicação divisão expansão em frações parciais derivada do polinômio ajuste do polinômio 3.5 Derivada O MATLAB calcula a derivada de expressões matemáticas.v) calcula a derivada da expressão S em relação à variável v.0.b) calcula a integral de S em relação à variável v definida no intervalo de a a b. O produto dos polinômios é feito através da convolução dos coeficientes: >> a = [1 2 3]. Exemplo: >> int('s*v'.v. O comando int(S. O comando diff(S.a. Exemplo: >> diff('s*v'.6 Integral O MATLAB faz integração de expressões matemáticas. >> c = conv(a.1) ans = 1/2*s 14 . b = [4 5 6].Capítulo 3 – Funções mais Usadas em Engenharia Considere os polinômios a(S) = S2 + 2S + 3 e b(S) = 4S2 + 5S + 6.'v'.'v') ans = s 3.

7 Laplace O comando L = laplace(F) calcula a transformada de Laplace da expressão F com relação a variável independente t. >> 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 gráficos: um é o gráfico do modulo em dB de uma função de transferencia senoidal e o outro é o gráfico do angulo de fase.inf). O retorno padrão é uma expressão em função de s. Seja um sistema com a seguinte função de transferência: G ( s) = 25 s + 4 s + 25 2 Se o sistema estiver definido de forma num(s ) = 25 e den(s ) = s 2 + 42 + 25 . O commando bode calcula módulos e ângulos de fase da resposta em frequência de sistemas contínuos.0. den = [1 4 25]. lineares e invariants no tempo. onde a integração ocorre com relação a t. Ambos são traçados em relação à frequencia em escala logarítmica. os comandos: >> >> >> >> >> num = [0 0 25]. Por definição L(s) = int(F(t)*exp(-s*t).Capítulo 3 – Funções mais Usadas em Engenharia 3. Os diagramas de Bode são bastante utilizados em análise de resposta em frequência. Bastante utilizado no estudo de sistemas de controle e cicruitos elétricos. Exemplo: >> syms s >> F = sin(s). um diagrama é gerado na tela do computador.den) grid title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)') criam o diagrama de Bode da função especificada: 15 . bode(num. Quando o commando bode é digitado sem argumentos do lado esquerdo. onde se deseja estudar a resposta em regime permanente de um sistema sujeito a uma entrada senoidal.

01 e 1000 rad/s. deve-se utilizar os seguintes comandos: >> >> >> >> >> >> num = [0 0 25].100).Vi] = pol2cart(-2*pi/3.Vi] = pol2cart(0. O comando: >> >> >> >> >> >> [Vr.127).127).w) grid title('Diagrama de Bode de G(s) = 25/(s^2 + 4s + 25)') Ressultando em: 3. compass(Vr. compass(Vr.Vi] = pol2cart(2*pi/3. 16 . bode(num. frequentemente utilizados em engenharia. den = [1 4 25].3.Capítulo 3 – Funções mais Usadas em Engenharia Se for desejável traçar o diagrama de Bode para o intervalo entre 0.127).den.Vi) hold on [Vr.Vi) [Vr.9 Diagrama Fasorial No MATLAB também é possível construir diagramas fasoriais. w = logspace(-2.

Vi) >> hold off >> title('Tensoes') As linhas de comando anteriores plotam o diagrama fasorial considerando tensões Va. Vb e Vc.Capítulo 3 – Funções mais Usadas em Engenharia >> compass(Vr. como mostrado: 17 .

Se são especificados dois vetores como argumentos.’r-‘. o comando plot(y) produz um gráfico linear dos elementos de y versus o índice dos elementos de y.’b-‘) 18 .Capítulo 4 – Gráficos Capítulo 4 Gráficos 4. Cria um gráfico utilizando escala logarítmica no eixo x e escala linear no eixo y. Cada uma aceita a entrada na forma de vetores ou matrizes e.vb. Cria um gráfico utilizando escala logarítmica no eixo y e escala linear no eixo x. Define um nome para a variável do eixo y. Adiciona um texto ao gráfico utilizando o mouse.’g—‘. nome aos eixos. Pode-se adicionar título. Ativa as linhas de grade. Pode-se. vb = sin(w*t + 2*pi/3). linhas de grade e textos a qualquer gráfico utilizando: Função title xlabel ylabel text gtext grid Descrição Adiciona um título ao gráfico. Função plot loglog semilogx semilogy Descrição Cria um gráfico de vetores ou de colunas de matrizes. especificar vários grupos de dados e definir o estilo de linha e a cor que serão usados em cada grupo em uma única chamada ao comando plot: >> >> >> >> >> >> >> f = 60. va = sin(w*t). w = 2*pi*f. Cria um gráfico utilizando escalas logarítmicas para ambos os eixos. Define um nome para a variável do eixo x. automaticamente. definem as escalas dos eixos de modo que os dados de entrada fiquem bem acomodados. Adiciona um texto em lugar específico.2 Criando um Gráfico Se y é um vetor. o comando plot(x. vc = sin(w*t – 2*pi/3).va.vc. também. Estas funções se diferem apenas na maneira como apresentam as escalas dos eixos dos gráficos.t.y) produz um gráfico de y versus x. 4. plot(t.1 Funções Elementares de Plotagem A lista a seguir relaciona as funções que produzem gráficos simples. t = 0:pi/100:4*pi.t.

3. 19 . o MATLAB cria uma usando o próximo número disponível (não necessariamente n). a segunda linha também da esquerda para a direita e assim por diante. em seguida. subplot(1.2) plot(t. é plotado com uma linha sólida verde e o grupo vc com uma linha sólida azul. da esquerda para a direita.3 Subgráficos Vários gráficos podem ser mostrados em uma mesma janela ou impressos em uma mesma folha de papel com a função subplot. w = 2*pi*f.3) plot(t. va = sin(w*t).4 Figura A função figure permite que novas janelas com figuras.vb).n. t = 0:pi/100:4*pi. Se a figura n não existe.3. vb = sin(w*t + 2*pi/3). subplot(1. vc = sin(w*t – 2*pi/3).1) plot(t. enquanto o segundo grupo. Sintaxe do comando subplot: • subplot(m. va. figure(n): faz com que a n-ésima figura se torne a figura atual.va).vc). é plotado com uma linha sólida vermelha.p): divide a janela em uma matriz m por n de subregiões e seleciona a p-ésima subregião para o gráfico que está sendo plotado no momento.Capítulo 4 – Gráficos Os comandos acima produzem um gráfico de três variáveis va. 4. Por exemplo: >> >> >> >> >> >> >> >> >> >> >> >> f = 60. Podem ainda ser adicionados ao gráfico um título e nome aos eixos: >> title(‘Tensões ABC’) >> xlabel(‘t’) >> ylabel(‘Tensão’) 4. vb e vc em relação à variável t. vb. o resultado dos comandos gráficos subseqüentes são mostrados nesta janela. Formas comuns de utilização da função figure: • • figure: faz com que seja aberta uma nova janela gráfica. Os gráficos são numerados começando pela primeira linha na parte superior da janela. O primeiro grupo de dados. subplot(1. sejam abertas.3.

os valores de máximo e mínimo da função a ser plotada e escolhe uma área de plotagem apropriada. axis(‘xy’): define MATLAB com os eixos cartesianos.6 Adicionando Linhas a um Gráfico Existente Podem ser adicionadas linhas a um gráfico já existente utilizando o comando hold. A origem do sistema de coordenadas se encontra no canto inferior esquerdo. a linha de comando abaixo traça as três curvas em uma mesma figura: >> >> >> >> >> hold on plot(va. Por exemplo. O eixo i é vertical e é numerado de cima para baixo e o eixo j é horizontal e é numerado da esquerda para a direita. v = axis: salva a escala dos eixos do gráfico que está ativo no vetor v.5 Função Axis A função axis possui várias opções que permitem que sejam personalizados escala e orientação. basta entrar com o comando axis(v). o MATLAB não remove as linhas já existentes. respectivamente. axis(axis) congela a escala nos valores que estão sendo usados. ao invés disto.’) plot(vc. junto com o gráfico. O eixo x é horizontal e é numerado da esquerda para a direita e o eixo y é vertical e é numerado de baixo para cima. Para que gráficos subseqüentes possuam os mesmos limites. Porém. Pode ser que os eixos sejam redefinidos se os novos dados se encontrarem fora da escala do antigo eixo.’-. Quando hold é ativado. pode-se redefinir os limites pelo ajuste dos eixos utilizando a função axis: >> axis([xmin xmax ymin ymax]) Algumas formas de utilização da função axis: • • axis(‘auto’): retorna a escala do eixo para seu valor padrão.Capítulo 4 – Gráficos 4. por default. O MATLAB encontra. adiciona novas linhas aos eixos existentes. A origem do sistema de coordenadas se encontra no canto superior esquerdo. axis(‘ij’): define no MATLAB seu modo de eixo matriz. axis(‘on’): e axis(‘off’) fazem com que o nome do eixo e os marcadores apareçam ou não.’--’) hold off 20 . o modo automático.’—‘) plot(vb. • • • • 4.

a função plot automaticamente utiliza a cor azul e linha sólida. 4. símbolos de traçado e cores.Capítulo 4 – Gráficos 4.S) S é uma string envolvida por aspas e construída com os caracteres mostrados na tabela abaixo: Símbolo Cor Símbolo Estilo de Linha y amarelo .imag(Z)) 21 .y. o comando é um atalho para um gráfico da parte real em função da parte imaginária. ponto m magenta o círculo c ciano x x r vermelho + sinal positivo g verde * asterisco b azul sólida w branco : pontilhada k preto -. Na linha de comando: >> plot(x. é equivalente a >> plot(real(Z). Para este caso especial. Se não for especificada uma cor.7 Estilos de Linhas e Marcadores de Cor Como foi citado. pode ser passada uma string de caracteres como um argumento para a função plot de modo a especificar vários estilos de linhas.Y.’b*’) plota um asterisco azul em cada ponto de dado. traço e ponto -tracejada Por exemplo. o comando: >> plot(X. >> plot(Z) onde Z é um vetor ou uma matriz complexa.8 Dados Complexos Quando os argumentos a serem plotados são complexos. Portanto: >> Z = 3 + 4i. a parte imaginária é ignorada exceto quando o comando plot é dado simplesmente com um argumento complexo.

avalia uma função e plota os resultados. cria um histograma de ângulo. Função bar errorbar feather fplot hist polar quiver rose stairs fill Descrição cria um gráfico do tipo barra. 4. cria um histograma. desenha um polígono e o preenche com cores sólidas ou interpoladas. com várias extensões de arquivo de imagem. cria um gráfico similar a um gráfico de barra. depois em Export e selecione o nome e a extensão e o diretório no qual deseja salvar a figura e clique em salvar. cria um gráfico com barras de erro. o menu Edit. necessárias em muitas aplicações.10 Exportando Gráficos Os gráficos criados no MATLAB podem ser exportados como figuras. A lista a seguir descreve algumas delas. 22 . tais como. .eps entre outras. cria um gráfico de ângulos e módulos de números complexos onde a representação dos pontos é feita por setas com começo em pontos igualmente espaçados ao longo do eixo horizontal.jpeg. Para tanto. .bmp. cria um gráfico em coordenadas polares dos ângulos em função dos raios.Capítulo 4 – Gráficos 4.9 Funções especiais para Gráficos 2D O MATLAB inclui uma variedade de funções especiais para gráficos. . mas sem as linhas internas. escolha. cria um gráfico do gradiente ou de outro campo do vetor. na figura.

>> plot3(sin(t). Y e Z são três matrizes de mesma dimensão. ambos em grau.11.z) gera uma linha no espaço tridimensional que passa pelos pontos de coordenadas dadas pelos elementos dos vetores x. Se x. enquanto outras desenham superfícies e figuras utilizando “pseudocores” para representar uma quarta dimensão. y e z são vetores de mesmo tamanho. surfc. define um nome para a variável do eixo z. Se X. cria gráficos de contorno. meshz surf. produz um helicóide. define identificações para os contornos em gráficos de contorno.11 Gráficos 3D O MATLAB possui uma variedade de funções para exibir dados em 3-D. ajusta o ponto de visão atual onde os parâmetros de entrada podem ser o azimute (rotação horizontal) e a elevação vertical. Algumas plotam linhas em três dimensões. meshc.1 Gráficos de Linhas O análogo tridimensional da função plot é a função plot3.y. mostrados como alturas acima de um plano delimitado.cos(t). fill3 zlabel clabel view 4. y e z. e depois produz uma projeção bidimensional desta linha na tela. A lista a seguir mostra funções comumente utilizadas em gráficos 3-D: Função plot3 contour.Capítulo 4 – Gráficos 4. cria um polígono 3-D a o preenche com cores sólidas ou interpoladas. surfl Descrição plota linhas e pontos em 3-D. cria gráficos 3-D em perspectiva dos elementos da matriz. mostrados como alturas acima de um plano delimitado.t). Por exemplo: >> t = 0:pi/50:10*pi..Y. o comando: >> plot3(x. O gráfico é formado pela geração de uma superfície colorida utilizando os pontos como vértices de um quadrilátero. comando: >> plot3(X. cria gráficos 3-D em perspectiva dos elementos da matriz. contour3 pcolor image mesh.Z) 23 . desenha uma matriz retangular de células cujas cores são determinadas pelos elementos da matriz. mostra uma matriz como uma imagem através do mapeamento dos elementos da matriz pelo mapa de cores ativo. ou as coordenadas cartesianas.

a linha de comando abaixo cria um gráfico de contorno contendo 20 linhas de contorno e usando o arquivo-M peaks para gerar os dados de entrada.y).z1.z3.y2.^2) + eps. Existe a opção de se especificar o número de linhas de contorno.5:8. As funções contour e contour3 geram gráficos compostos de linhas obtidas da matriz entrada como argumento.11. y. também chamada função sinc.s1. >> contour(peaks. Depois utiliza-se estas matrizes para avaliar e plotar a função. As linhas de X são cópias do vetor x e as colunas de Y são cópias do vetor y.. em matrizes.s). A função meshgrid transforma o domínio especificado por dois vetores. X e Y.Z. x e y. onde s é uma string de 1. a escala dos eixos e o valor dos dados com os quais se desenhará as linhas de contorno. y = x. 4. z = f(x.^2 + Y. usa-se a linha de comando plot3(X.3 Gráficos de Contorno O MATLAB possui funções para gerar gráficos de contorno tanto para 2-D como para 3-D.y). R = sqrt(X. Y e Z.2 Meshgrid O MATLAB define uma superfície mesh pelas coordenadas z dos pontos. Para especificar vários tipos de linhas. sobre o domínio da função.s3. Utiliza-se estas matrizes para avaliar funções de duas variáveis. Para avaliar esta função entre -8 e 8.20). Z = sin(R)..s2.Y] = meshgrid(x. Por exemplo. tanto em x como em y. Desta forma.y3. [X. 2 ou 3 caracteres formada pelos caracteres listados com a função plot.z2. e funções gráficas de duas variáveis. passa-se como argumento dois vetores para a função meshgrid criando as matrizes necessárias: >> >> >> >> >> >> x = -8:. o qual é a origem. >> plot3(x1./R.Y.x3. um gráfico é formado pela ligação dos pontos adjacentes com linhas retas.) combina os gráficos definidos por cada grupo de elementos (x. é gerar as matrizes X e Y consistindo de linhas e colunas repetidas. causando erro numérico. onde x.x2. 24 . símbolos gráficos e cores. respectivamente. Para ilustrar o uso da função meshgrid. mesh(Z) A matriz R contém a distância dos pontos ao centro da matriz. z. O primeiro passo para que seja mostrada uma função de duas variáveis. situando-a acima de uma área retangular no plano x-y. s). Superfícies mesh são úteis para visualização de matrizes que são muito grandes para serem mostradas na forma numérica..11. y e z são vetores ou matrizes e s são as strings. considere a função sin(R)/r.Capítulo 4 – Gráficos plota as linhas obtidas pelas colunas de X. 4. A utilização da constante eps evita a divisão por zero.y1.

utiliza-se a função contour3: >> contour3(peaks.Capítulo 4 – Gráficos Os círculos de contorno agem da mesma forma que a função plot com relação a estilos de linha. marcadores e cores.20) 25 . Para criar um gráfico de contorno 3-D com os mesmo dados.

se a condição dada por uma expressão for verdadeira. A linguagem MATLAB possui diversos comandos de controle de fluxo que serão descritos a seguir. dependendo de determinadas condições. Estas permitem ao programador controlar e alterar a seqüência de execução do programa. Representa uma tomada de decisão do tipo SE isto ENTÃO aquilo. Se a expressão for falsa os comandos não serão executados.1 Introdução Em MATLAB existem algumas estruturas que controlam o fluxo de dados. Não haveria condições para que comandos fossem executados. end A condição do comando if é uma expressão que será avaliada. As estruturas de controle de fluxo são fundamentais para qualquer linguagem de programação. 5. Sem elas só haveria uma maneira do programa ser executado: de cima para baixo.Capítulo 5 – Decisões e Loops Capítulo 5 Decisões e Loops 5. O bloco comandos pode ser um bloco de códigos ou apenas um comando simples. ou saltos de linhas de código. caso contrário os comandos serão executados. 26 .2 Comandos Condicionais São estruturas utilizadas para selecionar comandos ou blocos de comandos que devem ser executados ou não.1 Estrutura if A estrutura básica if permite que o programa execute uma linha de comando ou um bloco de comandos . repetições de comandos ou blocos de comando. comando por comando. Sintaxe: if (<condição>) <comandos>.2. 5.

5.2. Se for falsa <comandos2> será executado. quando usamos a estrutura if-else-end. estamos garantindo que uma das duas declarações será executada. end else <comandos2>. então será executado <comandos1>. não é executado nenhum comando. Se <condição1> for verdadeira. end Onde qualquer dos blocos <comandosX> pode ser um único comando. É importante nunca esquecer que. Pode também ser usada a estrutura if-elseif-end. Caso seja é executado <comandos1>. Nunca serão executadas as duas ou nenhuma delas. um bloco de comandos ou nada (no caso de comandos vazios).2. Podemos pensar no comando else como sendo um complemento do comando if.Capítulo 5 – Decisões e Loops 5. Sintaxe: if (<condição1>) if (<condição2>) <comandos1>. elseif (<condição2>) <comandos2>.2 Estrutura do if Estendido Sintaxe: if (<condição>) <comandos1>. mas <condição2> for falsa. Sintaxe: if (<condição1>) <comandos1>.3 Estrutura de if’s Aninhados O comando a ser executado quando a condição de uma sentença da estrutura if for satisfeita pode ser um outro if. Para avaliar duas ou mais condições podem ser usadas as seguintes sintaxes: 27 . Se por exemplo <condição1> for verdadeira. Caso <condição1> seja falsa é executado <comandos2>. else <comandos2>. end Se a <condição1> for verdadeira o programa verifica se a <condição2> é verdadeira. elseif (<condição3>) <comandos3>. Se ela for verdadeira <comandos1> será executado. end Neste caso <comandosX> só será executado se <condiçãoX> for verdadeira. A expressão da condição será avaliada. Os comandos subseqüentes não serão executados mesmo que as respectivas condições sejam verdadeiras.

54.5. É necessário que exista um valor para cada possível escolha do swicth.4 Swicth : Case O comando swicth (botão) permite selecionar. 'ft' } 28 . verifiquemos um exemplo (para transformar polegadas. Observação: A indentação não é necessária para a execução do programa. então o swicth automaticamente seleciona o caso otherwise (default). 5. case {'feet'.' in'} y = x * 2. x = 3. end Se <condição1> ou <condição2> ou ambas forem verdadeiras será executado <comandos1>. um deles é selecionado se o valor da expressão swicth é a mesma que o valor do case. Caso as condições forem falsas será executado <comandos2>. Se o valor da expressão swicth não encaixar com nenhum dos valores case. unidade = 'm'. mas ajuda a verificar o relacionamento entre a condição do if e as sentenças que dependem dela. Sintaxe: if (<condição1> | <condição2>) <comandos1> else <comandos2>. uma determinada expressão.Capítulo 5 – Decisões e Loops Sintaxe: if (<condição1> & <condição2>) <comandos1> else <comandos2>. pés ou metros em centímetros). São definidas as possíveis posições swicth para um ou mais valores case. switch unidade % Converte x para centímetros case {' inch'. Caso uma das condições ou ambas forem falsas será executado <comandos2>. A seleção é determinada pelo valor da expressão que você especifica. Otherwise <comandos3>. end Se <condição1> e <condição2> forem verdadeiras será executado <comandos1>. end Para melhor entendimento. case <exp_case2> <comandos2>.2. Sintaxe: swicth <valor_teste> case <exp_case1> <comandos1>. entre várias escolhas numa faixa de valores fixados.

e o while.3 Comandos Repetitivos ou Laços Estas estruturas nos permitem repetir um grupo de comandos (sentenças). otherwise disp('acabou') end disp( 'y = '). 5. Sintaxe: for início:incremento:fim <comandos> end Por exemplo: for i = 1:n x(i) = 0. 5. Uma importante observação é que se deve sempre finalizar um loop for com um end.1 Estrutura for O MATLAB possui sua própria versão dos loops for encontrados em linguagens de programação.3. disp(y) O resultado será y = 0. case {'metro'.'m'} y = x/100. então o espaço adicional é alocado automaticamente.0350. Existem várias estruturas para repetições. de acordo com condições. mas o MATLAB não executa a linha de comando interna.Capítulo 5 – Decisões e Loops y = x * 2. que representa a conversão de x metros para y centímetros. Isto permite que um grupo de linhas de comando seja repetido por um número fixo e predeterminado de vezes. Se n é menor do que 1.54 * 12. Se for digitado for i = 1:n x(i) = 0 29 . As mais utilizadas são o for que é uma das estruturas para se trabalhar com loops. Se x não existe ou possui menos de n elementos. São comandos que permitem repetições controladas. end atribui 0 aos n primeiros elementos de x. a construção ainda é válida.

o comando break interrompe imediatamente a execução do programa. Nada acontece até que seja digitado end. mas não se pode esquecer que cada for deve ter seu próprio end. t = [1 2]’.2.2 Comandos que Afetam a operação dos Loops 5.Capítulo 5 – Decisões e Loops o sistema espera que sejam entradas o restante das linhas de comando no corpo do loop. 5. Por exemplo: A = [1 2 3.*A(:. Pode-se também fazer com que o loop decresça.2 Continue Executar o comando continue dentro de um laço faz com que a próxima iteração comece imediatamente.1 Break O comando break pode ser usado no corpo de qualquer estrutura de laço do MATLAB.2.3. j) = t. for j = n-1:-1:1 A(:. end Resultará em: A = 3 24 3 12 3 6 5. pulando todas e quaisquer sentenças restantes da iteração corrente.3. de acordo com a expressão descrita. j+1).n] = size(A). Causa a saída imediata do laço e o controle passa para o próximo comando do programa. 30 . Sintaxe: continue.3. Caso seja usado fora de todos os laços.4 5 6]. Pode-se utilizar mais de um loop dentro de um loop. Sintaxe: break. [aux.

então números não-nulos correspondem a uma expressão verdadeira. 31 . ou um grupo de linhas de comando. usamos o comando break. o qual permite que uma linha de comando. A matriz da expressão de condição é quase sempre uma expressão relacional 1 por 1. Observe também o comando continue. h = h + 1. end O resultado será: a = 0. a não ser que ele seja interrompido. Para interromper um loop como este.4 Loop while Infinito Sintaxe: while(1) <comandos>.3.Capítulo 5 – Decisões e Loops 5.3 A Estrutura while O MATLAB possui sua própria versão do loop while. pode-se reduzi-la através das funções any e all. Exemplo: a = 15. Quando a matriz da expressão não é um escalar. Sintaxe: while <condição> <comandos>. Quando a condição retornar o valor falso o programa continua na linha de código logo após o loop. h = 0. while a > 1 a = a/2. end Este loop chama-se loop infinito porque será executado para sempre. seja repetida um número indefinido de vezes.9375 h = 4 5.3. através do controle de uma condição lógica. O comando break vai quebrar o loop infinito e o programa continuará sua execução normalmente. end Os comandos (ou um simples comando) serão executados enquanto a expressão testada na condição for verdadeira.

'Opçao: ']).']) while(1) x = x + 1. y = 0.'Digite 1 para ir ate o fim do loop.'Execuçao '.Capítulo 5 – Decisões e Loops Exemplo: clear all clc x = 0.']) 32 . disp(' ') disp([blanks(5).' vezes.'Digite 0 para voltar ao inicio do loop.'O loop foi iniciado '. v = 0.']) disp([blanks(5). mas apenas '.. end disp([blanks(5). disp([blanks(5).num2str(y).'Digite -1 para sair do loop. num2str(x).num2str(x)]) v = input([blanks(5).. if v == 0 continue elseif v == -1 break end y = y + 1..' vezes foi ate o fim.']) disp([blanks(5).

k 33 . Por isso métodos numéricos devem ser empregados. verifique se é positivo ou negativo e escreva uma mensagem apropriada ao seu tipo. G e B do sistema apresentado na figura abaixo: P3 + jQ3 3 L 2-3 Linha 1–2 2–3 R 0. Mas infelizmente ainda não existe um método direto para solucionar sistemas de equações não lineares gi ( x) = 0 .50 1. 2 – Faça um programa que leia um número inteiro. são os valores de [x] a serem calculados.10 G1 L 1-2 1 2 P2 + jQ2 5 – O cálculo de raízes de equações lineares pode ser facilmente alcançado (Ax = B). onde a partir de um vetor x qualquer. ele calcula novos valores para o vetor x para alcançar x* (solução). Sua forma de recorrência é dada pela expressão abaixo: g(x ) g ' (x ) k k x k +1 =x − k onde: x x k k +1 k são os valores de [x] na iteração k. g ( x ) são os valores da função no ponto [x]. g ' ( x ) são os valores da derivada da função no ponto [x]. Também chamada de Jacobiana.Capítulo 5 – Decisões e Loops 5.60 1.4 Exercícios 1 – Escreva um programa que leia 3 números e os escreva em ordem crescente.20 X 0. O método iterativo mais utilizado é o método de Newton. 3 – Escreva um programa para calcular o fatorial de um número lido. 4 – Escreva um programa que monte a matriz Y.

logo a Jacobiana é   ∂g 2  g 2 ( x1 . x2 )   ∂x  1 ∂g1  ∂x2   ∂g 2  ∂x2   O processo itera até que max( x k +1 − x k ) ≤ tolerancia . então monte um programa para resolver as seguintes equações.  y = x2 + 4x + 1   y = 5x + 3 34 .Capítulo 5 – Decisões e Loops seja:  ∂g1  ∂x  g (x . x )  1 g ( x) =  1 1 2  .

O MATLAB é usualmente acionado por um comando. Por exemplo. suponha um arquivo chamado fibno. o que se torna cansativo para ser feito iterativamente. Após a execução do arquivo estar completa.m contém linhas de comando do MATLAB para avaliar funções Bessel.Capítulo 6 – Arquivos-M: Scripts e Funções Capítulo 6 Arquivos-M: Scripts e Funções Um dos assuntos mais importantes. e crie um gráfico.m. Um arquivo-M consiste de uma seqüência normal de linhas de comando do MATLAB. ou arquivos função. a criação de arquivos-M é descrita neste capítulo. O MATLAB também pode executar uma seqüência de comandos que está armazenada em um arquivo. while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1). ou arquivos script. ou no projeto de longas seqüências de comando.1 Arquivos Scripts Quando um script é chamado. calculando os 16 primeiros números da série de Fibonacci. permitem adicionar novas funções às funções já existentes. Scripts são úteis na realização de análises. solução de problemas. A maior parte do poder do MATLAB se deve ao fato de se poder criar novas funções que resolvam problemas específicos. i = 1. o MATLAB simplesmente executa os comandos encontrados no arquivo. a qual pode fazer uma chamada a outros arquivos-M. i = i + 1. Um arquivo-M pode chamar a si mesmo de modo recursivo. Arquivos de disco que possuem linhas de comando para o MATLAB são chamados arquivos-M em virtude de sua extensão ser do tipo . o arquivo bessel. as variáveis f e i ficam mantidas no espaço de trabalho. Funções. Como um exemplo. end plot(f) Digitando a linha de comando fibno faz com que o MATLAB execute os comandos. o MATLAB a processa imediatamente e mostra o resultado.m que possui os comandos: f = [1 1]. As linhas de comando de um arquivo script operam globalmente com os dados que estão no espaço de trabalho. Dois tipos de arquivos-M podem ser usados: scripts e funções. Scripts. realizam longas seqüências de comandos. 6. 35 . Quando se entra com uma simples linha de comando.

Uma função difere de um script pelos argumentos que devem ser passados e pelas variáveis que são definidas e manipuladas. permanecem inalteradas. • As variáveis m. O arquivo media. a função media foi usada com uma variável z. media(x) retorna um vetor contendo a media dos elementos % de cada coluna da matriz x [m. que são locais à função e não podem ser operadas globalmente no espaço de trabalho.n] = size(x). >> z = 1:99. O vetor z que contém os inteiros de 1 a 99 foi passado ou copiado para media onde ele se tornou uma variável local de nome x. mas o princípio é válido para todos os arquivos função: • A primeira linha declara o nome da função e os argumentos de entrada e saída. e não um arquivo função.m. A existência deste arquivo define uma nova função chamada media. (Ou. • As primeiras linhas descrevem o arquivo-M e são mostradas quando você digita help media. end y = sum(x)/m. se z é um vetor de inteiros de 1 a 99. if m == 1 m = n.Capítulo 6 – Arquivos-M: Scripts e Funções 6. • Não é necessário definir os inteiros de 1 a 99 em uma variável de nome x. media(x) retorna a media dos elementos de x % Para matrizes.). No exemplo. 36 .2 Arquivos Função Um arquivo-M que contém a palavra function no início da primeira linha é um arquivo função. Por exemplo. se elas existem. n e y são locais a media e não aparecem no espaço de trabalho após media ter terminado. Sem esta linha. o valor médio deste é encontrado através do comando >> mean(z) que resulta em ans = 50 As informações abaixo são para o arquivo media.m é um exemplo de um arquivo função que possui as linhas de comando: function y = media(x) % Media dos elementos de um vetor ou uma matriz % Para vetores. A nova função media é usada como qualquer outra função do MATLAB. • O símbolo % indica que o restante da linha é um comentário e deve ser ignorado. o arquivo é um arquivo script.

se várias funções e também o plano de trabalho declararem uma variável particular como global. matrix with Quando se entra com help angle. Para fazer com que uma variável seja global.m contém function p = angle(h) %ANGLE Phase angle.4 Strings de Texto Strings de texto são entradas no MATLAB entre aspas simples ( ‘ ). 6.3 Variáveis Globais Cada função do MATLAB definida por um arquivo-M possui suas próprias variáveis locais. Neste caso.m são mostradas. Entretanto. basta escrever global X Y Z onde as variáveis X. See also ABS. 6. então todos eles dividem a mesma variável. Por exemplo. o arquivo-M angle. Qualquer atribuição a esta variável. >> size(s) ans = 1 10 37 . as quais não tem relação com as de outras funções e com as do espaço de trabalho. sendo um caractere por elemento. Baseado nisto. as linhas 2 a 6 do arquivo angle. Y e Z irão trabalhar como sendo globais. fica disponível a todas as outras funções que a declaram como global. ANGLE(H) returns the phase angles.Capítulo 6 – Arquivos-M: Scripts e Funções Pode-se criar uma ajuda online para os arquivos-M entrando com um texto de uma ou mais linhas de comentários. a primeira linha de comentários em qualquer arquivo-M deve conter o maior número de informações possíveis. in radians. começando pela segunda linha do arquivo. UNWRAP. of a complex elements. em qualquer função. >> s = ‘Engenharia’ resulta em s = Engenharia O texto é armazenado em um vetor. Por exemplo.

Por exemplo.j) = eval(t). for i = 1:n for j = 1:n a(i. ‘ Elétrica ‘] s = Engenharia Elétrica >> s = strcat(s. ‘ Elétrica ‘) s = Engenharia Elétrica 6.Capítulo 6 – Arquivos-M: Scripts e Funções indica que s possui cinco elementos. onde cada elemento é avaliado pela função que está descrita por t. eval(t) faz com que o texto contido em t seja avaliado. e a função abs e a função double mostram estes valores: >> f = abs(s) f = 69 110 103 101 110 104 97 114 105 97 A função char faz a transformação inversa: >> char(f) ans = Engenharia Utiliza-se colchetes ou a função strcat para juntar variáveis de texto em strings maiores: >> s = [s. Os caracteres são armazenados com seus valores ASCII. t = ‘1/(i+j-1)’. end end cria uma matriz a de dimensão n por n. 38 .5 A Função Eval A função eval trabalha com variáveis do tipo texto e implementa uma poderosa facilidade de macro.

o comando >> [fid. >> status = fclose(fid) 39 . Se o arquivo não pode ser aberto. se MATLAB não encontra o arquivo arquivo. Por exemplo. As funções de E/S de arquivo do MATLAB permitem a leitura de dados coletados em outro formato diretamente pelo MATLAB. As strings de permissão disponíveis são: ’r’ para leitura ‘w’ para gravação ‘a’ para atribuição ‘r+’ tanto para leitura como para gravação Outras strings de permissão podem ser obtidas com o comando help fopen.Capítulo 7 – Arquivos E/S Capítulo 7 Arquivos E/S As funções de E/S (Entrada/Saída) de arquivo do MATLAB que permitem a leitura e a escrita em formato diferente ao gerados pelo mesmo são descritas neste capítulo. escrita ou encerramento. usa-se fclose para fechar o arquivo. É aconselhável testar o identificador cada vez que um arquivo é aberto. 7. Um segundo valor que é retornado pode fornecer informação adicional sobre erros.1 Abrindo e Fechando Arquivos Antes de se ler ou escrever em um arquivo. Este identificador de arquivo é basicamente um atalho para se referenciar o arquivo. fopen retorna -1 como identificador. As funções lêem e gravam arquivos de texto formatados e arquivos binários de dados. deve-se abri-lo com o comando fopen. que é um inteiro positivo atribuído ao arquivo pelo sistema operacional.txt’. message] = fopen(‘arquivo.’r’) abre para leitura o arquivo arquivo. Por exemplo.txt. o arquivo fica disponível para leitura e gravação. ou a escrita de dados gerados pelo MATLAB no formato requerido por outro programa ou dispositivo. As funções de E/S de arquivo do MATLAB utilizam o identificador como argumento para identificar o arquivo aberto para leitura. A função fopen retorna um identificador de arquivo. Uma vez aberto. >> fid = fopen(‘arquivo.txt’. e message recebe uma string com a forma abaixo No such file or directory. Por exemplo. especificando o arquivo a ser aberto e a string de permissão.’r’) atribui -1 para fid.txt. Quando se termina a leitura ou a gravação.

40 .10]. Ambas as formas retornam 0 se esta operação for realizada com sucesso. >> fid = fopen(‘arquivo. E >> A = fread(fid. Por exemplo. >> status = fclose(fid).’r’). >> A = fread(fid). Dois argumentos opcionais a fread fazem o controle do número de valores lidos e a precisão de cada valor.Capítulo 7 – Arquivos E/S fecha o arquivo associado com o identificador fid. Omitir o tamanho do argumento produz o mesmo efeito.txt’. lê todos os dados do arquivo ‘arquivo’ como caractere. faz com que sejam lidos os mesmos 100 elementos.100).2 Leitura de Arquivos A função fread lê arquivos de dados binários. e os escreve em uma matriz A. >> fid = fopen(‘arquivo.txt’. ou -1 se algo de errado acontecer.Inf) lê até o final do arquivo. >> status = fclose(fid). preenchendo a matriz A como um vetor coluna. Substituindo o número 100 pelas dimensões de uma matriz [10. Na sua forma mais simples. 7. e >> status = fclose(‘all’) fecha todos os arquivos abertos. armazenando-os em uma matriz 10x10.’r’). >> A = fread(fid. ele lê um arquivo inteiro em uma matriz. lê os 100 primeiros valores de dados em um vetor coluna A.

fscanf possui como argumento o identificador para o arquivo de texto aberto.2f%12. fid = fopen(‘exptable. nesta ordem. seguido por dois comandos ENTER. Os especificadores de conversão controlam a saída dos elementos de uma matriz.’Exponential Function\n\n’). status = fclose(fid). Os textos são copiados diretamente.txt’.3 Escrevendo Arquivos de Texto Formatados e Strings A função fprintf converte dados em strings de caractere e os mostra na tela ou em um arquivo. conversões comuns incluem 41 . exp(x)]. cria um arquivo de texto contendo uma pequena tabela para a função exponencial. >> >> >> >> >> >> x = [0:0. conversões comuns incluem • • • %e para notação exponencial %f para notação de ponto fixo %g que seleciona automaticamente o menor entre %e e %f Campos opcionais no especificador de formato controlam o tamanho e a precisão do campo. fprintf(fid.1:1]. y = [x. Por exemplo. A segunda chamada escreve a tabela propriamente dita. e uma string de controle do formato contendo caracteres e especificadores de conversão. Os especificadores para fscanf são precedidos pelo caractere %.8f\n’. o qual é definido por \n. é similar à função fprintf. Os especificadores são precedidos pelo caractere %.y).’w’).Capítulo 7 – Arquivos E/S 7. O formato de saída é definido por um especificador de conversão e por um texto.4 Lendo Arquivos de Texto Formatados e Strings A função de entrada de texto do MATLAB.’%6. A primeira chamada a fprintf escreve o título. 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 espaços um valor de ponto fixo de doze caracteres com oito casas decimais 7. fscanf. fprintf(fid.

txt’.20) [table. A segunda chamada entra com a tabela de valores.11]).Capítulo 7 – Arquivos E/S • • • %s para converter uma string %d para converter um número 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. A linha do título combina com o especificador %c na primeira chamada à fscanf. 42 .’%c’.[2.’ %f %f ‘.count] = fscanf(fid. table = table’ status = fclose(fid). count retorna o número de valores combinados. title = fscanf(fid.’r’).

Sign up to vote on this title
UsefulNot useful