You are on page 1of 63

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

CURSO DE EXTENSO
Centro de Cincias Tecnolgicas
Departamento de Engenharia de Telecomunicaes

Professor Msc. Leonardo Gonsioroski


Janeiro/2011
1

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Mdulo I Introduo ao MATLAB


1. INTRODUO
Este pequeno manual tem o objetivo de guiar voc de forma ordenada, para realizar
inicialmente operaes simples na ferramenta MATLAB, tais como, operaes algbricas, anlise de
funes de primeiro e segundo graus, entender e diferenciar matrizes e vetores, impresso de
grficos; trabalhar com algumas das principais funes matemticas, resolver equaes diferenciais e
integrais. Aps os ensinamentos deste curso voc estar apto a dominar completamente a ferramenta
aplicando o contedo aprendido nos estudos direcionados a sua rea de trabalho e/ou pesquisa.
1.1. O que o MATLAB?
MATLAB (MATrix LABoratory) um um ambiente de programao (software) interativo de
alta performance voltado para o clculo numrico, possuindo caractersticas de aplicativo (facilidade
para o usurio) e de linguagem de programao (flexibilidade).
O MATLAB integra anlise numrica, clculo com matrizes, processamento de sinais e
construo de grficos em um ambiente fcil de usar, onde problemas e solues so expressos
de forma muito parecida como eles so escritos matematicamente, ao contrrio da programao
tradicional que exige uma sintaxe mais complexa.
O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz que no
requer dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em
apenas uma frao do tempo que se gastaria para escrever um programa semelhante em linguagem
Fortran, Basic ou C++. Alm disso, as solues dos problemas so expressas no MATLAB quase
exatamente como elas so escritas matematicamente.
O MATLAB apresenta uma srie de funes matemticas j implementadas que podem ser
utilizadas em uma rotina construda pelo usurio. Estas funes so agrupadas de acordo com a rea
de interesse em toolboxes e armazenadas em diretrios especficos. Qualquer funo a ser utilizada
deve estar no diretrio de trabalho ou caminho (path) do MATLAB.

Ilustrao da Tela do Software MATLAB 7.0


2

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

1.2. Conhecendo o MATLAB


a. Carregando o MATLAB
Na rea de trabalho do Windows, um duplo clique no cone MATLAB carrega o aplicativo.
Uma vez inicializado o MATLAB, aparecer na tela uma janela de comandos e o "prompt"
padro (>>) exibido na tela. A partir deste ponto, o MATLAB espera um comando (instrues) do
usurio. Todo comando deve ser finalizado teclando-se Enter.

Tela inicial do MATLAB


Ao abrir o MATLAB o Command Window (ou Janela de comandos) ser mostrada, podero
aparecer ainda outras janelas:



WorkSpace que mostra todas as variveis que est sendo utilizada no programa em
desenvolvimento.
Command History Mostra o histrico de comandos dados ao MATLAB na Janela de
Comandos.

b. Usando o Command Window


A janela Command Window pode ser utilizada para clculos gerais, usurios com maior
domnio da ferramenta e mais experientes tambm fazem uso desta janela para programao,
entretanto neste curso aprenderemos inicialmente a programar usando o editor de textos e arquivos
.m (que sero explicados mais a frente), pois entende-se que tornaremos o aprendizado slido.
Como j foi mencionado acima, o MATLAB possui uma sintaxe de programao relativamente
simples, para realizarmos uma lgebra qualquer no Command Window, como por exemplo, 321 +
456 5 + 90, basta escrevermos no prompt do Command Window:

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

>> 321 + 456 5 + 90


ans=
862
Note que o MATLAB chamou o resultado de ans (answer=resposta), isso ocorre porque no
foi dado nenhum nome para a conta executada, ou seja, no foi declarada nenhuma varivel. Caso
declarssemos a varivel da lgebra acima de SOMA, desta forma:
> SOMA = 321 + 456 5 + 90
O resultado que apareceria na tela do Command Window seria:
SOMA=
862
No caso de entrada de linhas de comando no Comand Window, as teclas com setas podem ser
usadas para se encontrar comandos dados anteriormente, para execuo novamente ou sua
reedio. Caso seja necessrio corrigir ou reescrever uma linha inteira no Command Window,
podemos simplesmente pressione a tecla "seta para cima". O comando errado retorna, e voc
pode, ento, corrigir o erro, ou redigitar toda uma nova linha de comando. Alm das teclas com setas,
pode-se usar outras teclas para reeditar a linha de comando. A seguir dada uma breve descrio
destas teclas:

Ctrl
Ctrl
Home
End
Del
Backspace

retorna a linha anterior


retorna a linha posterior
move um espao para a esquerda
move um espao para a direita
move uma palavra para a esquerda
move uma palavra para a direita
move para o comeo da linha
move para o final da linha
apaga um caractere a direita
apaga um caractere a esquerda
Tabela 1 Teclas de edio

c.

Operaes Bsicas e Expresses Lgicas


O MATLAB oferece as seguintes operaes aritmticas bsicas:

Operao
Adio,
a+b
Subtrao,
a-b
Multiplicao, a.b
Diviso,
ab
Potncia,
ab

Smbolo
+
*
/ ou \
^

Exemplos
5+6
19 - 4.7
5.02 * 7.1
45/5 ou 5\45
3^4

Tabela 2 Operaes aritmticas


A ordem nas expresses segue a ordem das regras de lgebra: Potncia, seguida da
multiplicao e da diviso, que por sua vez so seguidas pelas operaes de adio e
subtrao. Parnteses podem ser usados para alterar esta ordem. Neste caso, os
parnteses mais internos so avaliados antes dos mais externos.
4

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

ATENO!!! No MATLAB chaves e colchetes no so usados como na lgebra, caso seja


necessrio usar chaves e colchetes nas expresses matemticas, as chaves e os colchetes devem
ser substitudos por parnteses.
Chaves e Colchetes no MATLAB tero funes especficas na sintaxe de progrmao.
Uma expresso se diz lgica se os operadores so lgicos e os operandos so relaes
e/ou variveis do tipo lgico. Os operadores relacionais realizam comparaes entre valores do
mesmo tipo. Os operadores relacionais utilizados pelo MATLAB so:

Operador Relacional
>
>=
a
<
<=
a
==
~=

Descrio
maior que
maior ou igual
menor que
menor ou igual
igual a
diferente de

Tabela 3 Operaes relacionais


Note que (=) usado para atribuio de um valor a uma varivel, enquanto que (==)
usado para comparao de igualdade. No MATLAB os operadores relacionais podem ser
usados para comparar vetores de mesmo tamanho ou escalares.
O resultado de uma relao ou de uma expresso lgica verdadeiro ou falso;
contudo, no MATLAB o resultado numrico, sendo que 1 significa verdadeiro e 0 significa
falso. Por exemplo:
>> 5 > 8
ans =
0
>> 5==5
ans =
1

Os operadores lgicos permitem a combinao ou negao das relaes lgicas. Os


operadores lgicos do MATLAB so:

Operador lgico
&
|
~

Descrio
E
ou
No

Uso
Conjuno
Disjuno
Negao

Tabela 4 Operaes lgicas

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

d. Formatos Numricos e Regras de Construo de Variveis


O formato em que uma constante numrica mostrada no MATLAB segue, como opo
default, os seguintes critrios:
1. Se um resultado inteiro, o MATLAB mostra o nmero como inteiro;
2. Quando o resultado real, o MATLAB mostra o nmero com 4 dgitos direita do
ponto decimal;
3 . Se os dgitos do resultado estiverem fora desta faixa, o MATLAB mostra o resultado
usando a notao cientfica.
Este default pode, entretanto, ser modificado utilizando-se o Numeric Format do item
Options na barra de menus. Usando-se por exemplo a constante numrica (33,5), vejamos na
tabela abaixo como ficaria essa constante numrica em cada um dos formatos numricos
disponveis no MATLAB:

Comando
format short
format long
format short e
format long e
format hex
format bank
format +
format rat

Formato
33.5000
33.50000000000000
3.3500e+001
3.350000000000000e+001
4040c00000000000
33.50
+
67/2

Comentrio
4 dgitos decimais (formato default)
16 dgitos
5 dgitos mais expoente
16 dgitos mais expoente
Hexadecimal
2 dgitos decimais
positivo, negativo ou zero
Racional

Tabela 5 Formatos Numricos

Os nomes das variveis devem consistir de uma nica palavra, conforme as regras expressas
na tabela 6:

Regras de construo das variveis


Variveis com letras minsculas e maisculas
so diferentes, mesmo que consistam das
mesmas letras.
As variveis podem consistir de at 19
caracteres
As variveis devem comear com uma letra e
pode ser seguida de letras, nmeros ou subscrito
(_). No podem conter espaos.

Comentrios/Exemplos
Total, total, TOTAL e ToTaL so variveis
diferentes.
Sdtf65erkjh3448bafg
Var_2
X34
a_b_c

Tabela 6 Regras para construo de variveis

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Alguns nomes so usados para variveis predefinidas, ou seja, so variveis especiais do


MATLAB. Estas so:

Variveis especiais
ans
pi
eps
flops
inf
NAN ou nan
ie j
nargin
nargout
realmin
realmax

Significado
Varivel usada para exibir os resultados
Nmero 3,14159
Menor nmero tal que, quando adicionado a 1, cria
um nmero maior que 1 no computador.
Armazena o nmero de operaes em ponto flutuante
realizadas.
Significa infinito
Significa no um nmero, por exemplo, 0/0.
Unidade imaginria 1
Nmero de argumentos de entrada de uma funo
Nmero de argumentos de sada de uma funo
Menor nmero que o computador pode armazenar
Maior nmero que o computador pode armazenar

Tabela 7 Variveis do Matlab

e. Comentrios e pontuaes
Como em toda linguagem de programao, alguns smbolos possuem funes especficas. No
MATLAB os quatro smbolos abaixo so bastante utilizados importante entender suas
funcionalidades.
Um dos mais importantes smbolos o de % que permite incluir um comentrio e/ou
observao nas linhas de comando, isso facilita o entendimento do programa quando visto por outra
pessoa.

Smbolo
,
;
%
...

Funo
Vrgula Usado para separar comandos dados em uma mesma linha.
Ponto e Vrgula Se o ltimo caractere da declarao um ponto e vrgula,
a impresso que aparece no Command Window suprimida, mas a tarefa
realizada.
Por Cento Todo e qualquer caractere depois do smbolo de porcentagem
tomado como um comentrio.
comentrio.
Pode-se continuar uma certa expresso na prxima linha usando um espao
em branco e trs pontos,"...", ao final das linhas incompletas.
Tabela 8 Comentrio e pontuaes

Os espaos em branco entre os operadores (aritmticos, lgicos, relacionais) e as


variveis (ou constantes) so opcionais. O mesmo para vale para a vrgula, o ponto e vrgula
e o smbolo de porcentagem. No entanto, o espao em branco entre a ltima varivel (ou
constante) de uma linha e os trs pontos obrigatrio.

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

f.

Funes Matemticas

O MATLAB tem uma srie de funes cientficas pr-definidas. A palavra funo no


MATLAB tem um significado diferente daquele que tem na Matemtica. Aqui, funo um comando,
que pode ter alguns argumentos de entrada e alguns de sada. Algumas dessas funes so
intrnsecas, ou seja, no podem ser alteradas pelo usurio. Outras funes esto disponveis em
uma biblioteca externa distribudas com o programa original (MATLAB TOOLBOX), que so na
realidade arquivos com a extenso ".m" criados a partir das funes intrnsecas. A biblioteca
externa (MATLAB TOOLBOX) pode ser constantemente atualizada medida que novas
aplicaes so desenvolvidas.
As categorias gerais de funes matemticas disponveis no MATLAB incluem:
o
o
o
o
o
o
o
o
o
o

Matemtica elementar;
Funes especiais;
Matrizes elementares e especiais;
Decomposio e fatorao de matrizes;
Anlise de dados;
Polinmios;
Soluo de equaes diferenciais;
Equaes no-lineares e otimizao;
Integrao numrica;
Processamento de sinais.

A maioria das funes so fceis de gravar, pois tem uma escrita muito parecida e algumas
at iguais de como elas so escritas matematicamente.

abs(x)
acos(x)
asin(x)
atan(x)
conj(x)
cos(x)
cosh(x)
exp(x)

valor absoluto de x.
arco cujo coseno x
arco cujo seno x.
arco cuja tangente x.
conjugado complexo
coseno de x.
coseno hiperblico de x.
exponencial ex.

floor(x)
gcd(x,y)
lcm(x,y)
log(x)
log10(x)
rem(x,y)
round(x)
sign(x)
sin(x)
sinh(x)
sqrt(x)
tan(x)
tanh(x)

arredondamento em direo ao -
mximo divisor comum de x e y.
mnimo mltiplo comum de x e y.
logaritmo de x na base e.
logaritmo de x na base 10.
resto da diviso de x por y.
arredondamento para o inteiro mais prximo
funo signum
seno de x.
seno hiperblico de x.
raiz quadrada de x.
tangente de x.
tangente hiperblica de x.
8

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Tabela 9 Algumas funes matemticas


g. Comandos de auxlio
No MATLAB, pode-se obter ajuda sobre qualquer comando ou funo. Isto pode ser feito
basicamente de trs formas: interativamente atravs do menu de barras, atravs do comando help
ou do comando lookfor.
Digitando-se simplesmente o comando help,
>> help
O MATLAB mostra uma listagem de todos os pacotes disponveis. Ajuda sobre um pacote
especfico ou sobre um comando ou funo especfica obtida com o comando help <tpico>,
onde tpico pode ser o nome de um pacote, de um comando ou funo.
O Comando lookfor prov assistncia pela procura atravs de todas as primeiras linhas dos
tpicos de auxlio do MATLAB e retornando aquelas que contenham a palavra-chave especificada. O
interessante deste comando que a palavra chave no precisa ser um comando do MATLAB. Sua
sintaxe lookfor <palavra-chave>, onde palavra-chave a cadeia de caracteres que ser
procurada nos comandos do MATLAB.

h. Funes de Manipulao algbricas


Abaixo segue um resumo das funes para manipulao de expresses algbricas:

 save [nome_de_arquivo] [nome_da(s)_varivel(is)] salva somente as variveis


especificadas.
 load [nome_de_arquivo] [nome_da(s)_varivel(is)] carrega as informaes
salvas.
 clear [nome_da_varivel] - apaga a varivel do workspace.
 clear - apaga todas as variveis do workspace.
 clc digitado no Command Window para limpar a janela.
 pretty(expr) - exibe a expresso expr numa forma mais bonita.
 simple(expr) - procura encontrar uma forma mais simples de escrever uma
expresso expr.
 inv(a) calcula a inversa da matriz a.
 det(a) calcula o determinante da matriz a.
 abs(a) retorna o valor absoluto ou o mdulo de um nmero complexo a.
 real(a) retorna o nmero real de um nmero complexo.
 imag(a) retorna o nmero imaginrio de um nmero complexo.
 ones(a) gera uma matriz de nmeros 1 de ordem a x a.
 zeros(a) gera uma matriz de nmeros 0 de ordem a x a.

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

2. ESCREVENDO LINHAS DE COMANDO


Agora que j conhecemos mais intimamente o Programa MATLAB, sabendo como representar
as operaes matemticas bsicas, como so os formatos numricos existentes, quais so as regras
para utilizao de variveis, como so feitos comentrios, como podemos recorrer ao Help do
programa para mais informaes e etc. vamos ento iniciar as noes de programao, aprendendo
inicialmente como entrar com linhas de comandos no editor de texto.

a. Abrindo um novo arquivo


Aprenderemos a trabalhar com o MATLAB utilizando sempre o editor de textos.
Nosso primeiro passo ser abrir o editor, criar um novo arquivo e nome-lo. Aps salv-lo,
executaremos as rotinas nele includas.
Para abrir o editor, basta clicar em file no menu do software, depois selecionar /new/Blank Mfile ou ento clicar no boto de atalho correspondente. Nomeie e salve o arquivo (mesmo ainda
vazio). OBS: Use nomes curtos e sem caracteres especiais.

Este editor costuma ser mais utilizado pelos iniciantes no MATLAB, usurios mais experientes
tambm podem fazer uso diretamente da janela de Comando (Comand Window).
O Editor de texto permite que voc escreva as linhas de comando do programa que est em
desenvolvimento e cheque os resultados na Janela de Comandos aps ter pressionado a tecla F5.

b. Escrevendo Linhas de Comando no Editor de Texto


No Editor de Textos do MATLAB escreveremos as linhas de comando e a executaremos
pressionando a tecla F5 do teclado ou a tecla de atalho correspondente no MATLAB.
As respostas para os comandos dados ao MATLAB aparecero na Janela de Comandos
(Command Window). Por exemplo, para adicionar uma Matriz linha (ou um Vetor linha), basta digitar
no editor de texto a expresso a seguir:
>> a = [1 2 3]

-> representar uma matriz 1x3 (ou seja, 1 linha e 3 colunas).

ATENO!!! A matriz deve estar entre colchetes e os elementos serem separados por espaos ou
virgulas.

10

10

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Ao executar o programa pressionando a tecla F5, a resposta a esse comando aparecer no


Command Window, nesse caso a matriz a informada, isso mostrado na figura abaixo.

Para ter matrizes com mais linhas, basta colocar aps a primeira linha um ; (ponto-e-virgula) e
escrever a segunda linha da matriz, desta forma:
>> b = [1 2 3 ; 4 5 6] -> representar uma matriz 2x3 (ou seja, 2 linhas e 3 colunas).

Agora vamos trabalhar...


1-Escreva a expresso acima e execute o programa pressionando a tecla F5
2-Note que no Command Window aparece a matriz

Para clculos com valores escalares, podemos utilizar a matrix 1x1 e neste caso sem adio
dos colchetes.
>> x = 3

-> Representa o nmero escalar 3.

OBS: Note que tudo, que digitado no editor e executado, salvo automaticamente e
os resultados aparecem na janela de comando, isso serve para checarmos as respostas antes
de dar continuidade na escrita do programa.
Para lgebra comum a digitao das linhas de comandos intuitiva. Por exemplo:
Para representar no MatLab a expresso:
exatamente a seqncia de caracteres abaixo:

>> y = (1/4) * (x.^2 + 5*x 3)

x2 + 5x 3
y=
4

basta escrever no editor

OBS: Note a importncia de usar o ponto antes do


sinal de
(I)circunflexo na expresso da funo y, sem o
ponto o MatLab pode entender como um erro, pois x,
no representaria uma matriz.

11

11

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Se voc fornecer valores para x, o MATLAB, calcular os valores de y e todas essas


informaes podero ser vistas no Command Window, muito importante que os valores de x
precisem ser informados antes da equao, isto porque o MATLAB l o programa linha a linha, e
ento a varivel x que declarada na equao precisa ser conhecida.
Para associarmos valores a x, escrevemos x, como sendo um vetor de valores que vo de 1 at
10.
>> x = 1:10

(II)

-> isso representa um vetor x que se constitui de valores de 1 a 10.


O intervalo entre cada valor ser igual a 1.

Agora vamos trabalhar...


1. Escreva as expresses (II) e (I) acima, nessa seqncia, depois execute o
programa pressionando a tecla F5
2. Note que no Command Window aparecem os valores de x (de 1 a 10) e os
valores que y assumiu para cada valor do vetor x.

Foi possvel notar que os valores de x aumentaram em intervalos iguais a 1. Outros intervalos
podem ser colocados, para isso, basta escrever o intervalo desejado entre dois pontos.
>> x = 1: intervalo desejado : 20
>> x = 1:0.5:20

-> Neste caso os intervalos sero de 0,5.

12

12

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

2.1. Exerccios de Reviso e Fixao


1. Escreva uma matriz linha de 5 termos, todos com valores iguais a 2.
2. Escreva uma matriz linha de 1 a 5, usando a notao de vetor.
3. Faa a Soma das duas Matrizes acima.
4. possvel fazer a Multiplicao das Duas Matrizes diretamente? Por qu? Qual seriam as
possveis solues? Mostrar os Resultados.
5. Crie uma matriz 3 x 3 com quaisquer valores a sua escolha, depois verifique o determinante
dessa matriz e se possvel calcule sua inversa e ento calcule a matriz identidade .

6. Escreva a equao:  = 4  + 56 + 120. Encontrar os valores de y para:


a) Valores de x que vo de 1 a 10, em intervalos unitrios;
b) Valores de 3 a 8 em intervalos de 0,5.
7. Sendo  = 3 e  = 5 calcule no MATLAB:

a) 1 =  + 
b) 1 = 3 + 5
c) 1 = 4 (45)
d) 1 =

  !

!

13

13

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

3.

MATRIZES E VETORES

O MATLAB permite a manipulao de linhas, colunas, elementos individuais e partes de


matrizes.

3.1 Construo de Vetores


Na tabela, tem-se um resumo das diversas formas de se construir um vetor no MATLAB.

X=primero : ltimo

Cria um vetor x comeando com o valor primeiro,


incrementando-se de 1(um) em 1(um) at atingir o valor
ltimo ou o valor mais prximo possvel de ltimo

X=primeiro:incremento:ltimo

Cria um vetor x comeando com o valor primeiro,


incrementando-se do valor incremento at atingir o valor
ltimo ou o valor mais prximo possvel de ltimo

X=linspace(primeiro, ltimo, n) Cria um vetor x comeando com o valor primeiro e


terminado no valor ltimo, contendo n elementos
linearmente espaados.
X=logspace(primeiro, ltimo, n) Cria um vetor x comeando com o valor 10primeiro e
terminando no valor 10ltimo, contendo n elementos
logaritmicamente espaados
Cria um vetor x contendo os elementos especificados
X=[2 2*pi sqrt(2) 2-3j]

Exemplo 1:
>> x = 1 : 5
gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo

X =
1
>>
x=1:10.5
x=
1

10

Exemplo 2:
>> z = 6 : -l : l
Z =
6

14

14

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Exemplo 3:
Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo:

>> k = linspace (0, l, 6)


K =
0

0.2000 0.4000 0.6000 0.8000 1.0000

gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos.

>> x=linspace(1,10.5,5)
x=
1.0000
3.3750

5.7500

8.1250

10.5000

Exemplo 4:
>> x=logspace(0,2,5)
x=
1.0000
3.1623

10.0000

31.6228

100.00

Exemplo 5:
>> x=[8
6
x=
8.0000

8.10

5-6j]

6.0000

8.1000

5.0000-6.0000i

Nos exemplos acima os vetores possuem uma linha e vrias colunas (vetores linha). Da mesma
forma podem existir vetores coluna (uma coluna e vrias linhas). Para se criar um vetor coluna
elemento por elemento estes devem estar separados por ( ; ). Por exemplo:

>> v=[1.5;-3.2;9]
v =
1.5000
-3.2000
9.0000
Esses vetores coluna podem tambm ser criados a partir dos comandos utilizados
anteriormente para criar os vetores linha, acompanhados do smbolo ( ' ), que o operador de
transposio. Exemplo:

>> y=(1:0.5:3)'
y =
1.0000
1.5000
2.0000
2.5000
3.0000

15

15

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

3.2 Exerccios de Reviso e Fixao


1. Crie vetores usando todas as formas possveis mostradas no quadro abaixo:

16

16

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

a. Endereamento de Vetores
No MATLAB, cada um dos elementos de um vetor podem ser acessados atravs de seu
ndice que identifica cada uma das colunas. Por exemplo:

>> x=1:10 x=
1
2

10

O comando x(3)acessa o terceiro elemento do vetor x criado acima, notem que a resposta
ser o valor 3, que exatamente o terceiro elemento do vetor x.

>> x(3)
ans =
3
>> x(5)
ans =
5

% Acessa o quinto elemento de x

Esses elementos de um vetor tambm podem ser acessados em blocos, por exemplo, seja o vetor c:

>> c=linspace(10,40,7)
c =
10
15
20
25

30

35

40

>> c(3:5)
ans =
20
25

% terceiro a quinto elemento de c

>>c(5:-2:1)
ans =
30
20

% quinto, terceiro e primeiro elementos de c

30

10

O endereamento indireto tambm possvel, permitindo referenciar os elementos em qualquer


ordem:

>> c([4 1]) %quarto e primeiro elementos


ans =
25
10
No caso de vetores coluna, os comandos acima funcionam de maneira similar. Por exemplo:

>> d=c' d =
10
15
20
25
30
35
40

17

17

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

>> d([4 1])


ans =
25
10

%quarto e primeiro elementos

>> d(5:-2:1)
ans =
30
20
10
3.3 Exerccios de Reviso e Fixao
1.
2.
3.
4.

O Cria um vetor de 2 a 128 com 40 elementos igualmente espaados.


Encontre o Dcimo Quinto elemento do vetor criado.
Encontre os valores entre as posies 3 e 6.
Encontre os valores na posio 7 e 24.

18

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

b.

Operaes entre Vetores

As operaes bsicas entre vetores s so definidas quando estes tiverem o


mesmo tamanho e orientao (linha ou coluna). Estas operaes so:

Seja a=[ a1 a2 ... an] , b=[ b1 b2 ... bn] e c um escalar


operao
expresso
resultado
adio escalar
a+c
[a1+c a2+c ... an+c]
adio vetorial
a+b
[a1+b1 a2+b2 ... an+bn]
multiplicao escalar
a*c
[a1*c a2*c ... an+c]
multiplicao vetorial
a.*b
[a1*b1 a2*b2 ... an*bn]
diviso
a./b
[a1/b1 a2/b2 ... an/bn]
potenciao
a.^c
[a1^c a2^c ... an^c]
c.^a
[c^a1 c^a2 ... c^an]
a.^b
[a1^b1 a2^b2 ... an^bn]

3.4 Matrizes
O como j falamos anteriormente, o MATLAB trabalha essencialmente com um tipo de objeto,
uma matriz numrica retangular ( 1x1; 2x2; 3x3; i ( linha) x j (coluna); etc).
Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e
as colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos
que formam a matriz. Por exemplo, entre com a expresso:

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


Pressionando <enter> o MATLAB mostra o resultado

A =
1
4
7

2
5
8

3
6
9

As linhas das matrizes tambm podem ser definidas atravs dos comandos utilizados anteriormente
para se definir vetores linha. Por exemplo:

>> A=[1:3;linspace(4,9,3);0:.5:1] A
=
1.00
2.00
4.00
6.50
0
0.50

3.00
9.00
1.00

Os elementos de uma matriz (ou de um vetor) tambm podem ser definidos por operaes ou
funes matemticas. Por exemplo:

>> B=[15 7;sqrt(36) cos(pi/3);12/7 2.5^2] B


=
15.0000
7.0000
6.0000
0.5000
1.7143
6.2500
19

19

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

a. Operaes com Matrizes


As operaes com matrizes no MATLAB so as seguintes:
Transposta;
Adio;
Subtrao;
Multiplicao;
Diviso direita;
Diviso esquerda;
Exponenciao;
Matriz Transposta

seguir:

O caracter apstrofo, " ' ", indica a transposta de uma matriz. Considere os exemplos a

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

1
4
7

2
5
8

3
6
0

4
5
6

7
8
0

>> B = A'
B =

1
2
3

>> x = [-1 0 2]'


X =
-1
0
2
Adio e Subtrao de Matrizes
A adio e subtrao de matrizes so indicadas, respectivamente, por "+" e "-". As operaes
so definidas somente se as matrizes tiverem as mesmas dimenses. Por exemplo, a soma
com as matrizes mostradas acima, A + x, no correta porque A 3x3 e x 3x1. Porm,

>> C = A + B
aceitvel, e o resultado da soma

C =
2
6
10

6
10
14

10
14
0

20

20

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

A adio e subtrao tambm so definidas se um dos operadores um escalar, ou seja, uma


matriz l x l. Neste caso, o escalar adicionado ou subtrado de todos os elementos do outro
operador. Por exemplo:

>> y = x 1
resulta em

Y =
-2
-1
1
Multiplicao
A multiplicao de matrizes indicada por " * ". A multiplicao x * y definida somente se a
segunda dimenso de x for igual primeira dimenso de y. A multiplicao

>> x'* y
aceitvel, e resulta em

Ans =
4
evidente que o resultado da multiplicao y' * x ser o mesmo. Existem dois outros produtos
que so transpostos um do outro.

>> x*y'
Ans =
2
0
-4

l
0
-2

-l
0
2

>> y*x'
Ans =
2
1
-1

0
0
0

-4
-2
2

O produto de uma matriz por um vetor um caso especial do produto entre matrizes. Por
exemplo A e X,

>> b = A*x que resulta em


B =
5
8
-7
21

21

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

22

Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

>> pi*x
Ans =
-3.1416
0
6.2832
Alm da multiplicao matricial e escalar, podemos ter a multiplicao por elemento de matrizes de
mesma dimenso. Esse tipo de operao feita utilizando-se um ponto ( . ) antes do operador de
multiplicao ( * ). Ou seja, se A e B so matrizes definidas por A=[ a11 a12 ... a1n ; a21
a22 ... a2n ; ... ; am1 am2 ... amn] e B=[ b11 b12 ... b1n ; b21 b22 ... b2n ; ... ; bm1
bm2 ... bmn ], ento A.*B =aij*bij. Por exemplo:

>> A.*B
ans =
1
8
21

8
25
48

21
48
0

Diviso
Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A uma matriz quadrada
no singular, ento A\B e B/A correspondem respectivamente multiplicao esquerda e
direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A), mas o resultado obtido
diretamente. Em geral,



X = A\B a soluo de A*X = B


X = B/A a soluo de X*A = B

Por exemplo, como o vetor b foi definido como A*x, a declarao z

= A\b, resulta em:

Z =
-1
0
2
A diviso por elemento entre matrizes definida de maneira similar multiplicao por
elemento, ou seja, A./B= aij/bij e A.\B= aij\bij , onde A e B tm mesma dimenso.
3.5. Elementos das Matrizes
Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre
parnteses. Por exemplo, dada a matriz A:

A =
1
4
7

2
5
8

3
6
9
22

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

A declarao do tipo

A(3,3) = A(1,3) + A(3,l)resulta em:

A =
1
4
7

2
5
8

3
6
10

>> A(1:3,2)
Ans =
2
5
8
>> A(1:3,2:3) uma submatriz 3x2, que consiste das trs linhas e das ltimas duas colunas
de A.
Ans =
2
5
8

3
6
10

Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha ou


coluna. Por exemplo:

>> A(1:2,:)
Ans =
1
4

2
5

3
6

Que uma submatriz 2x3 que consiste da primeira e segunda linhas e todas colunas da
matriz A.
 Funes ou Comandos: o MATLAB possui algumas funes que se aplicam a matrizes como,
por exemplo, as funes size (fornece o nmero de linhas e colunas de uma matriz) e length
(fornece o maior valor entre o nmero de linhas e colunas).
O MATLAB tem tambm funes que se aplicam individualmente cada coluna da
matriz produzindo um vetor linha com os elementos correspondentes ao resultado de cada
coluna. Se a funo for aplicada transposta de da matriz, os resultados sero relativos a
cada linha da matriz. Se o argumento da funo for um vetor, o resultado ser um escalar.
Algumas dessas funes so:

funo
sum
prod
mean
std
max
min
sort

descrio
soma dos elementos
produto dos elementos
mdia aritmtica
desvio padro
maior elemento
menor elemento
ordena em ordem crescente

23

23

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Submatrizes.
Sendo B uma matriz 5x5 unitria, podemos defini-la atravs da seguinte funo:

>> B = ones (5)


B =
1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

1
1
1
1
1

Sendo C uma matriz de zeros 3x4, podemos defini-la como:

>> C=zeros(3,4)
=
0
0
0
0
0
0

C
0
0
0

0
0
0

Para que o MATLAB gere uma matriz de nmeros aleatrios entre 0 e 1, utilizamos a funo rand
(veja tambm a funo randn, utilizando o comando help). Exemplo:

>> D=rand(2,3) D
=
0.2190
0.6789
0.0470
0.6793

0.9347
0.3835

3.6 Exerccios de Reviso e Fixao


1. Crie uma matriz A(5 x 5) com valores a sua escolha e uma matriz B (5 x 5) com uns, depois
faa:
a) Calcule a soma dos elementos de cada coluna da Matriz " #.

b) Calcule a multiplicao dos elementos de cada coluna da Matriz "  #.

c) Qual o elemento de maior valor em cada linha da Matriz A?


d) Qual o elemento de menor valor em cada coluna da Matriz 2A?

24

24

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Mdulo II Criao e Anlise de Grficos


O programa MATLAB possui ferramentas poderosas e amigveis para a visualizao de dados,
fcil de implementar e fcil de averiguar. Nesta seo apresentaremos aspectos bsicos e uma viso
geral dos recursos grficos disponveis. Informaes detalhadas ou sobre grficos especficos podem
ser obtidos no Help do MATLAB.
Os dados a serem visualizados em um grfico devem estar, tipicamente, em um vetor. O
MATLAB no desenha diretamente grficos de funes como em outros softwares (ex.: MAPLE ou
Mathematica).
1. Grficos Bidimensionais
a. O Comando PLOT
Para se desenhar o grfico de uma funo do tipo  = $%(), que varia de  at , devemos
inicialmente dar valores a  e depois escrever a funo seno, por fim a funo plot do MATLAB para
gerar o grfico:

>> x = -pi : 0.1 : pi


>> y = sin(x)
>> plot(y)
O resultado aparecer no Command Window de forma descritiva e tambm ser mostrado o
grfico da funo seno.
LEMBRANDO! Que no caso de se colocar o ( ; ) aps as linhas de comandos mostradas acima,
nada aparecer no Command Window.

Note que o eixo das abscissas no reflete a faixa de valores que foi usada para produzir o
vetor x,  at . Ao invs disso, o plot assume que o eixo das abscissas deve ser o ndice do vetor.
Para plotar os valores corretos no eixo das abscissas, basta usar uma pequena variao do comando
plot, conforme mostrado abaixo:

>> x = -pi : 0.1 : pi ;


>> y = sin (x);
>> plot(x, y);
25

25

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Quando passamos dois vetores para plot , a funo assim que o primeiro vetor o das abscissas, e
o segundo vetor o das ordenadas. O resultado :

Podemos gerar dois grficos na mesma tela usando apenas o comando plot. Mais a frente
veremos outras maneiras de gerar mais de um grfico.

x=0:0.1:2*pi;
y=sin(x);
z=cos(x)
plot(x,y,x,z)

%
%
%
%

define pontos no eixo x


seno de x
cosseno de x
dois grficos

O resultado ficaria:

26

26

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

b. Deixando o visual do grfico mais amigvel


O programador pode trabalhar melhor a visualizao dos grficos incluindo Ttulo ao grfico,
alterando os tipos de linha ou a cor das linhas, incluindo nomes para os eixos do grfico, legenda,
adicionar linhas de grades e incluir textos no grfico. Usaremos a funo seno para demonstrar essas
funcionalidades:


>>
>>
>>
>>

O Comando Title: Gera o ttulo do Grfico

x=0:0.1:2*pi;
y=sin(x);
plot(x,y)
title('Exemplo de grfico')

% define pontos no eixo x


% seno de x
% define o ttulo do grfico

O resultado ser:

Estilos de Linha e Smbolo: Os tipos de linhas, smbolos e cores usados para plotar grficos
podem ser alterados caso os padres estabelecidos automaticamente pelo MATLAB no sejam
satisfatrios.
Segue abaixo as tabelas:

27

27

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Segue um exemplo: Gerar um grfico vermelho com marcador do tipo losango.

x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'rd')
title('Grafico vermelho')

%
%
%
%

define pontos no eixo x


seno de x
cosseno de x
r de red, e d de losango

Posso alterar duas formas, como por exemplo: Um grfico com Marcador do tipo quadrado e a
linha pontilhada.

x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'b:s')
title('Grafico square, linha pontilhada')

28

28

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Comandos xlabel,ylabel e Legend: Geram nomes para os eixos de abscissas e ordenadas e


inclui legenda. Tomando como exemplo a programao abaixo:

x=0:0.1:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,'b:s',x,z,'rv--')
title('Graficos com legenda')
xlabel('Eixo x')
ylabel('Seno e Cosseno')
legend('seno','cosseno')
Teramos o seguinte resultado:

c.

Plotando mais de um grfico na mesma tela

Vimos anteriormente como plotar mais de um grfico na mesma tela usando o comando
plot. Veremos agora um outro comando que permite que os grficos sejam distribudos
organizadamente da forma que acharmos conveniente, sendo que neste caso, a grande vantagem
podermos dar ttulos e nomes de eixos personalizados para cada grfico, pois os mesmo so
plotados separadamante.


O Comando Subplot: O comando subplot divide a janela de grficos em & linhas e % colunas,
disponibilizando os grficos na ordem que se quer.

Exemplo: Subplot (m,n,ordem) significa dizer que este grfico estar m-sima linha e n-sima
coluna, sendo ordem ordenao deste grfico.
O uso deste comando ficar mais fcil de se entender analisando as linhas de comando abaixo:

29

29

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

x=0:0.1:3*pi;
y=sin(x);
z=cos(x);
w=3*cos(x);
%%%%%%%%%%%
subplot(2,2,1)
plot(x,y,'bo')
title('Celula 1: seno')
%%%%%%%%%%%
subplot(2,2,4)
plot(x,z,'rv--')
title('Celula 4: cosseno')
%%%%%%%%%%%
subplot(2,2,2)
plot(x,y,x,w)
title('Celula 2: sen e 3*cos c/ mesma escala')
%%%%%%%%%%
subplot(2,2,3)
plotyy(x,y,x,w)
title('Escala esq de seno, dir de 3*cosseno')
O resultado ficar assim:

30

30

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

d. Grficos em Barra
Para construir grficos em barra deve-se usar o comando bar(x,y), onde x e y so
respectivamente dados de abscissa e ordenada. Segue um exemplo:

x=-1.9:0.2:1.9;
y=exp(-x.*x);
bar(x,y)
title('Grafico de barras')

% cria x
% cria y

e. Escala Logartmica, Coordenada Polar e Grfico de Barras


O uso de loglog, semilogx, semilogy e polar idntico ao uso de plot. Estes comandos so
usados para plotar grficos em diferentes coordenadas e escalas:





polar(Theta,R) plota em coordenadas polares o ngulo THETA, em radianos, versos o raio R;


loglog plota usando a escala log10xlog10;
semilogx plota usando a escala semi-logartmica. O eixo x log10 e o eixo y linear;
semilogy plota usando a escala semi-logartmica. O eixo x linear e o eixo y log10;

f.

Outros Comandos de Grficos Bidimensionais

31

31

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

2. Grficos Tridimensionais
O MATLAB tambm cria grficos tridimensionais. Estes grficos so mais complexos, meu
conselho par a criao destes grficos que o programador conhea bem os comandos, se for o
caso use o help do MATLAB para tirar possveis dvidas. Seguem alguns comandos para gerao de
grficos Tridimensionais mais comuns:
a. Comando Mesh e Comando Surf
O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da
matriz Z em relao ao plano definindo pelas matrizes X e Y. O comando Surf (X,Y,Z) cria uma
superfcie colorida para o mesmo grfico plotado no comando anterior. Por exemplo:

[X,Y] = meshgrid(-2:.1:2, -2:.1:2);


Z = X.* exp(-X.^2 - Y.^2);
mesh(X,Y,Z)
[X,Y] = meshgrid(-2:.1:2, -2:.1:2);
Z = X.* exp(-X.^2 - Y.^2);
surf(X,Y,Z)

32

32

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

b. O Comando Plot3
Segue a mesma linha do comando plot bidimensional, mas gera uma visuzlizao 3D,
veremos um exemplo:

t=0:0.01:6*pi;
plot3(sin(t), cos(t), t)

% intervalo para eixo t

Segue o resultado:

c.

Outros comandos Tridimensionais

3. Exerccio de Reviso e Fixao


1. Use os grficos gerados at aqui e faa variaes de tipos de linha, cores e inclua as
informaes nos eixos X e Y, alm de Ttulo e grade se quiser.

33

33

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Mdulo III MATLAB como Ferramenta de Apoio ao Clculo


1. Anlise Polinomial
1.1. Representao de Polinmios
Este captulo traz uma srie de comandos no MATLAB para a anlise polinomial. Primeiro
vamos discutir meios de avaliar os polinmios e como trabalhar o seu comportamento.
Uma aplicao deste conceito est na modelagem da altitude e velocidade de um balo. A
seguir definiremos as razes dos polinmios. Polinmios normalmente aparecem em aplicaes da
Engenharia e na Cincia em geral porque eles constituem ainda bons modelos para representar
sistemas fsicos.
Como exemplo, vamos tomar o seguinte polinmio:

'() = 3 ( 0.5 * +  6
No MATLAB, um polinmio representado por um vetor linha contendo seus coeficientes
em ordem decrescente, ento ficaria assim:

>> p=[3 -0.5 0 1 6]


p =
3 -0.5 0 1 6
Nota-se que os termos faltantes do polinmio, ou seja, aqueles cujo o coeficiente zero, deve ser
inserido na representao do polinmio.
1.2. Razes de polinmios
Achar as razes de um polinmio, isto , os valores para os quais o polinmio igual a zero,
um problema comum em muitas reas do conhecimento, como por exemplo, achar as razes de
equaes que regem o desempenho de um sistema de controle de um brao robtico, ou ainda
equaes que demonstram a arrancada ou freada brusca de um carro, ou analisando a resposta de
um motor, e analisando a estabilidade de um filtro digital.
Se assumirmos que os coeficientes (a1, a2, ...) de um polinmio so valores reais,
poderemos encontrar razes complexas. Se um polinmio fatorado em termos lineares, fica fcil de
identificar suas razes, igualando cada termo a zero.
Um exemplo consiste no polinmio:

que ao ser fatorado se torna:

'() =   +  6,
'() = ( 2) . ( + 3)

As razes da equao so os valores de x para os quais a funo f(x) igual a zero, ou seja,
 = 2 e  = 3.

34

34

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Se a funo f(x) for um polinmio de grau n, ela ter exatamente n razes. Estas n razes
podem conter mltiplas razes ou razes complexas.
Dada a representao de polinmios discutida no sub-item anteiror, as razes do polinmio
so encontradas usando-se o comando roots do MATLAB.
J que tanto um polinmio quanto suas razes so vetores no MATLAB, o MATLAB adota a
conveno de colocar os polinmios como vetores linha e as razes como vetores coluna.
Para ilustrar este comando vamos determinar as razes do seguinte polinmio:

No MATLAB:

'() =  * 2   3  + 10

>> p = [1,-2,-3,10];
r = roots(p)
Lembrando que estes comandos podem ser dados de um s vez, conforme mostrado
abaixo:

>> r = roots([1,-2,-3,10]);
Os valores das razes sero: 2 + ,, 2 , e 2.


Comando Poly
Agora, dadas as razes de um polinmio, tambm possvel construir o polinmio
associado. No MATLAB, o comando poly encarregado de executar essa tarefa, onde o argumento
do comando poly o vetor contendo as razes do polinmio que desejamos determinar.
Sejam as razes de um polinmio -1, 1 e 3. Para determinar este polinmio, escreveramos
no MATLAB,

>> a = poly ([-1,1,3]);


1.3. Clculo de Polinmios
O clculo do valor numrico do polinmio -() resultante da substituio do vetor  em -()
feito no MATLAB atravs da funo polyval. Este comando possui dois argumentos. O primeiro
argumento contm os coeficientes do polinmio em questo e o segundo argumento contm o vetor
ou a matriz, com os valores para a qual desejamos calcular o polinmio.
Por Exemplo, vamos calcular os resultados da funo -() = 3 + 42 6 12 , onde
 varia de [-4,3] e depois plotar o grfico desta funo. No MATLAB ficaria assim:

>>clear all
>>clc
>>x=linspace(-4,3);
>>p=[1 4 -6 -12];
>>r=polyval(p,x);
>>plot(x,r)
>>title('p(x)=x^3+4x^2-6x-12')
>>xlabel('x')
>>ylabel('p(x)')
35

35

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

O grfico seria:

ATENO!!! Quando  for um escalar ou um vetor, polyval consegue calcular o valor da funo
operando elemento por elemento. Mas quando  for uma matriz usa-se o comando polyvalm
Uma soluo alternativa que daria a mesmo resultado seria:

>>clear all
>>clc
>>x=linspace(-4,3);
>>p=x.^3+4*x^2-6*x-12;
>>plot(x,p)
>>title('p(x)=x^3+4x^2-6x-12')
>>xlabel('x')
>>ylabel('p(x)')
1.4. Operaes Aritimticas
Podemos trabalhar com polinmios armazenando seus coeficientes em vetores, e trabalhar
apenas com estes vetores.
a) Soma e subtrao
O MATLAB no apresenta um comando especfico par somar polinmios. Para somar ou
subtrair polinmios basta somar ou subtrair seus respectivos coeficientes. A soma ou subtrao
padro funciona se ambos os vetores polinomiais forem do mesmo tamanho. Supondo os polinmios
a seguir:
() =  * + 2  3 + 4

() =  * + 4  9 + 16

36

36

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

A soma seria dada simplesmente pela soma de . + /, e a Subtrao por . /.


b) Multiplicao
A multiplicao polinomial efetuada por meio do comando conv (que faz a convoluo
entre dois conjuntos). A multiplicao de mais de dois polinmios requer o uso repetido de conv.

>> a=[1 2 -3 4];


>> b=[1 4 -9 16];
>> c=conv(a,b)
c =
1 6 -4 -10 75 -84 64
O resultado acima () =  1 + 6 2 4 ( 10 * + 75  84 + 64
c) Diviso
No MATLAB a diviso de polinmios feita atravs do comando deconv:

>> [q,r] = deconv(g,h)


Esse resultado nos diz que g dividido por h nos d o polinmio de quociente q e resto r.

1.5. Exerccios de Reviso e Fixao


1. Determine as razes dos seguintes polinmios e plote seu grfico, com seu eixo apropriado,
com o objetivo de verificar se o polinmio atravessa o eixo  bem nos locais das razes.

a. '() =  * 5  + 2 + 8
b. 5() =   + 4 + 4
c. () =  2 + 3 ( 11 * + 27  + 10 24
d. ,() =  2 3 * + 4  1

2. Sistemas de Equaes Lineares utilizando Matrizes


O MATLAB permite de uma forma muito simples resolver sistemas de equaes lineares
com o uso da funo matriz inversa.
Para esclarecer, supomos que temos o seguinte sistema de equaes lineares:
 + 2 8 = 1
72 6 + 48 = 29
 3 + 38 = 1
Podemos facilmente resolver da seguinte forma:
1. Criaremos uma matriz A que ser composta nesse caso de 3 linhas e 3 colunas com os
coeficientes de x, y e z.
2. Criaremos um segunda matriz B que ser composta nesse caso de 3 linhas e 1 coluna com
as igualdades das 3 expresses.
3. Criaremos por fim uma terceira matriz W que ser composta de 3 linhas e 1 coluna com as
variveis x, y e z.

37

37

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

2.1 Exerccio de Reviso e Fixao


1. Resolva a seguinte sistema de equaes lineares utilizando o MATLAB:

3. Matemtica Simblica
Agora possvel instruir ao MATLAB que manipule expresses matemticas, sem de fato
usar nmeros, que lhe permitam calcular com smbolos matemticos, alm de nmeros. Esse
processo freqentemente chamado de matemtica simblica. Aqui esto alguns exemplos de
expresses simblicas:
(  )

3  + 5 1

: = ;  

' = <   ;

A toolbox de Matemtica Simblica uma coleo de funes para o MATLAB usadas para
manipular e resolver expresses simblicas. H diversas ferramentas para combinar, simplificar,
derivar, integrar e resolver equaes diferenciais e algbricas.
Outras ferramentas so utilizadas em lgebra linear para derivar resultados exatos para
inversas, determinantes e formas cannicas e para encontrar os autovalores de matrizes simblicas,
sem o erro introduzido pelo clculo numrico.
A aritmtica de preciso varivel que calcula simbolicamente e retorna um resultado para
qualquer grau de preciso especificado, tambm est disponvel no MATLAB.
Quando voc pedir ao MATLAB para executar alguma operao simblica, ele ento
retornar o resultado para a janela de comando do MATLAB. Por isso, fazer manipulaes simblicas
no MATLAB uma extenso natural do modo como voc usa o MATLAB para processar nmeros.
Expresses simblicas so strings de caracteres ou conjuntos de strings de caracteres que
representam nmeros, funes, operadores e variveis. as variveis no tm de ter valores
previamente definidos. Equaes simblicas so expresses simblicas que contm um sinal de
igualdade. A aritmtica simblicas a prtica de resoluo dessas equaes por meio da aplicao
de regras conhecidas e de identidades a determinados smbolos, exatamente da forma que voc
aprendeu a resolv-las em lgebra e clculo. Matrizes simblicas so conjuntos cujos elementos so
expresses simblicas.

38

38

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

a) Representao e Visualizao de Variveis Simblicas

3. Determinao das razes de uma equao com variveis simblicas.


O comando solve, determina as razes de uma equao que usa uma varivel simblica.
Por exemplo:
a) Determine as razes da equao do segundo grau:   2 15

>>
>>
>>
>>
>>

clear all
clc
x=sym('x');
y=x^2-2*x-15;
resp=solve(y)
A resposta no Command Window ser:

resp =
-3
5

Que so as duas razes da equao.


b) Encontre o valor de x para que satisfaa a equao 4 () + $%() = 1
>> clear all
>> clc
>> x=sym('x');
>> y=4*cos(x)+sin(x)-1;
>> resp1=solve(y)

39

39

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

4. Soluo de Derivadas
Para o clculo de derivadas, o MATLAB usa o comando diff(f,n). Esse comando calcula a
derivada n-sima da funo. Para a primeira derivada, o n pode nem ser colocado, vejamos
exemplos:
Clculo da 1 derivada de: ' =  
a

>> syms x
>> f = x.^2
>> y = diff (f)
Clculo da 2 derivada de: ' =  
a

>> syms x
>> f = x.^2
>> y = diff (f,2)
5. Soluo de Integrais
Para o clculo de integrais, o MATLAB usa o comando int (f,i,j). Esse Comando, calcula a
integral definida no intervalo de a a b da funo, respectivamente os limites inferior e superior.
Vejamos exemplos:
Calculo da integral indefinida de: ' =  

>> syms x
>> f = x.^2
>> y = int (f)
Calculo da integral de: ' =   , definida no intervalo de [1 , 3].

>> syms x
>> f = x.^2
>> y = int (f,1,3)
6. Soluo de Transformadas de Laplace
Para se calcular a Transformada de Laplace de uma determinada funo y no tempo,
utilizamos o comando Laplace (y) para encontrar a funo S no domnio dos nmeros complexos.
Por Exemplo: Vamos calcular a transformada de Laplace de '(=) = 5$ >? , no MATLAB,
escreveremos:
>> syms t
>> Ft = 5*exp(-2*t)
>> Fs = laplace(Ft)
>> pretty (Fs)

%Esse comando cria a varivel t


% Escrevemos ento a expresso da funo
% Essa funo calcula a transformada de laplace
% Este comando coloca o resultado Fs de forma mais elegante

40

40

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

7. Soluo de Transformadas de Fourier


Para se calcular a Transformada de Fourier de uma determinada funo y no tempo,
utilizamos o comando fft (y) para encontrar a funo no domnio da frequencia.
8. Soluo de Transformadas Z
Para se calcular a Transformada Z de uma determinada funo y no tempo, utilizamos o
comando ztrans (y) para encontrar a funo no domnio z discreto.

9. Exerccios de Reviso e Fixao

10. Sinais e Sistemas


Se voc pegou este guia apenas porque tem que fazer um trabalho de Sinais e Sistemas,
esta a sua chance! S espero que outras partes desse guia tenham sido lidas tambm, porque
seno no vai adiantar de muita coisa. Conforme dito anteriormente, o MatLab no muito forte com
expresses literais, mas sim com as numricas. Ento todas as transformadas e funes de
transferncia sero aplicadas para um conjunto de pontos finitos, e no para outras funes ou
sistemas. A tabela abaixo resume as funes mais interessantes. Exemplos com elas viro na
seqncia.

41

41

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

A partir da funo de transferncia encontrada via anlise do circuito, obteremos a resposta da


tenso no capacitor para entradas impulso, degrau e exponencial decrescente na fonte.
>> Hc = tf( [ 5 ] , [ 1 5 ] )
Transfer function:
5
----s + 5
>> impulse( Hc ) ;
>> step( Hc ) ;

Os grficos gerados so esses acima. Confira que as curvas condizem com as expresses
tericas (fica como exerccio a demonstrao).
Exemplo 2: Anlise de uma funo de transferncia genrica

42

42

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Para obtermos o diagrama de Bode, temos que montar a funo de transferncia primeiro, como no
exemplo anterior. Entretanto, os polinmios do numerador e denominador no esto desenvolvidos
(temos a forma fatorada, ao invs disso). A fim de evitar dois trabalhos de distributivas, basta usar a
funo poly apresentada em 4.3, que retorna os coeficientes do polinmio dadas as razes
(cuidado: as razes duplas devem ser passadas duas vezes!).
>>
>>
>>
>>
>>

vet_raizesNumerador = [ 0 1 1 10000 ] ;
vet_raizesDenominador = [ 10 100 100 1000 ] ;
vet_coefPolinomioNumerador = 250 * poly( vet_raizesNumerador ) ;
vet_coefPolinomioDenominador = poly( vet_raizesDenominador ) ;
H = tf( vet_coefPolinomioNumerador , vet_coefPolinomioDenominador )

Transfer function:
250 s^4 - 2.501e006 s^3 + 5e006 s^2 - 2.5e006 s
-----------------------------------------------s^4 - 1210 s^3 + 222000 s^2 - 1.21e007 s + 1e008
>> bode( H ) ;

Exemplo 3: mdulo da transformada de fourier de Rect( t ):


>> vet_y = [zeros( 1 , 100 ) ones( 1 , 10 ) zeros( 1 , 100 )] ;
>> vet_Y = fft( vet_y ) ;
>> vet_moduloY = abs( vet_Y ) ;
>> plot( vet_moduloY( 1 : 105 ) )

43

43

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

10. Medidas Estatsticas


Analisar dados coletados de ensaios de engenharia uma parte importante da avaliao
dos mesmos. O alcance da anlise estende-se dos mais simples clculos de dados, como a mdia
aritmtica, mais complexa anlise que calcula medidas como o desvio padro ou varincia dos
dados. Medidas como estas so medidas estatsticas porque suas propriedades no so exatas. Por
exemplo, o seno de 600 uma medida exata pois o valor sempre o mesmo toda vez que o
calculamos, mas a velocidade mxima que atingimos com o nosso carro uma medida estatstica
porque varia dependendo de parmetros como a temperatura, condies da estrada, e se estamos
nas montanhas ou no deserto. No s podemos medir as propriedades e caractersticas de dados
estatsticos como tambm usar o computador para gerar seqncias de valores (nmeros aleatrios)
com caractersticas especficas. Neste captulo, aprenderemos a usar as funes para anlise de
dados do MATLAB e a gerar seqncias de nmeros aleatrios com caractersticas especficas.
10.1 Funes para Anlise de Dados
Para se estudar o desempenho de duas companhias corretoras de aes, selecionou-se de
cada uma delas amostras aleatrias das aes negociadas. Para cada ao selecionada, computouse a porcentagem de lucro apresentada durante um perodo de tempo. Os dados esto a seguir:

Os grficos para os dados das corretoras A e B so mostrados abaixo para podermos


comparar os dois conjuntos de dados:

44

44

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Para decidir qual corretora obteve melhor desempenho, alguns critrios foram considerados
como:




Mdia mais alta de percentagem de lucro;


Maior percentagem de lucro;
Menor variao de Percentagem de lucro;

visualmente perceptvel que ao longo dos dezoito dias a corretora B apresentou menor
variao de lucro. Facilmente tambm observaramos que a Corretora A obteve o maior percentual de
lucro de aes. Contudo, no possvel sabermos quantitativamente estas e outras informaes
como a mdia de percentagem do lucros das aes para cada corretora apenas com a observao
dos grficos. Para isso temos que calcular as grandezas necessrias para determinar qual corretora
obteve melhor desempenho. Seria um pouco trabalhoso se o fizssemos manualmente. O MATLAB
pode perfeitamente auxiliar-nos nestes casos porque contm uma srie de funes que contribuem
para uma anlise mais precisa dos dados. Algumas destas funes podem ser aplicadas ao exemplo
das corretoras como as mostradas a seguir:
a) Qual a mdia percentual de lucro das aes durante os 18 dias de observao?
O comando mean: calcula a mdia aritmtica de um grupo de valores. Assim, para as
corretoras A e B, temos:

>>mean (corretoraA)
ans =
55.7222

>>mean (corretoraB)
ans =
55.4444

b) Qual corretora alcanou a mais alta percentagem de lucros?


O comando max determina a maior percentagem de lucro em cada corretora. O comando
max determina o maior valor de um conjunto de dados.

>>max(corretoraA)
ans =
70

>>max(corretoraB)
ans =
61

E a menor percentagem?
As menores margens de lucro obtidas por cada corretora so dadas pelo comando min:

>>min(corretoraA)
ans =
38

>>min(corretoraB)
ans =
50

c) Qual corretora apresenta menor variao de percentual de lucro de aes?


As duas corretoras tiveram mdias bastante prximas. Contudo, a mdia, por ser uma
medida representativa de posio central, mascara toda a informao sobre a variabilidade dos dados
das corretoras A e B. necessria uma medida que resuma a variabilidade de dois grupos de
valores, permitindo compar-los, conforme algum critrio estabelecido. O critrio mais comum
aquele que mede a concentrao de dados em torno de sua mdia e, as medidas mais usadas so: o
desvio mdio e a varincia.

45

45

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Desvio Mdio, Varincia e Desvio Padro


Sabendo que a mdia dos valores da corretora A 55,72, os desvios xi x so: 10,72; 4,28; 1.72; - 6,28; 0,72; -14,28 , Para qualquer conjunto de dados, a soma dos desvios igual a
zero. mais conveniente usarmos ou o total dos desvios em valor absoluto ou o total dos quadrados
dos desvios. Assim, teramos:

Ento, desvio mdio e a varincia dos dados da corretora A so respectivamente 5,5802 e


58,9183. Para a corretora B, seriam 2,5556 e 9,9084.
A corretora A tem maior variabilidade em porcentagem de lucro de aes, segundo o desvio
mdio. Isto significa que o percentual de lucro de aes da corretora B mais homogneo que o da
corretora A.
Para evitar erros de interpretao (a varincia uma medida que expressa um desvio
quadrtico mdio) usamos o desvio padro (@), que definido como a raiz quadrada da varincia
(@  ). O MATLAB tem um comando especfico para o clculo de desvio padro denominada std .
Portanto, para o exemplo das corretoras:

>> std(corretoraA)
ans =
7.6758

>> std(corretoraB)
ans =
3.1478

10.2 Nmeros Aleatrios


Nmeros aleatrios no so definidos por uma equao. Contudo, possuem certas
caractersticas que os definem. H muitos problemas que pedem o uso de nmeros aleatrios no
desenvolvimento de uma soluo. Em alguns casos so usados para desenvolver a simulao de um
problema complexo. A simulao pode ser testada diversas vezes para analisar os resultados e cada
teste representa um repetio do experimento. Tambm usamos nmeros aleatrios para aproximar
seqncias de rudo. Por exemplo, o que ouvimos no rdio uma seqncia de rudo. Se estivermos
testando um programa que use um arquivo de entrada que representa um sinal de rdio, poderamos
gerar rudos e adicion-los ao sinal de voz ou a uma msica em seqncia para prover mais sinais
reais.

46

46

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Funo Nmero Aleatrio


A funo rand no MATLAB gera nmeros aleatrios no intervalo [0,1]. Os nmeros
aleatrios podem ser uniformemente distribudos no intervalo [0,1] ou podem ser distribudos
normalmente, nos quais mdia e varincia so, respectivamente, 0 e 1. Um valor usado para iniciar
uma seqncia aleatria.

Funo Densidade de Probabilidade


Suponha que o ponteiro dos segundos de um relgio eltrico possa parar a qualquer
instante por defeitos tcnicos. Como h infinitos pontos nos quais o ponteiro pode parar, cada uma
com igual probabilidade, cada ponto teria a probabilidade de ocorrer igual a zero. Contudo, podemos
determinar a probabilidade de o ponteiro parar numa regio entre dois valores quaisquer.
Assim, a probabilidade de o ponteiro parar no intervalo entre os nmeros 9 e 12 , pois
neste intervalo corresponde a do total. Ento,

A (270B  360B ) =
Sempre poderemos achar a probabilidade do ponteiro parar num ponto qualquer de um
intervalo, por menor que seja, compreendido entre os nmeros a e b, de forma que:

A funo f(x) chamada funo densidade de probabilidade (f.d.p). A f.d.p. determina a


regio onde h maior probabilidade de uma varivel X assumir um valor pertencente a um intervalo.
Existem alguns modelos freqentemente usados para representar a f.d.p. de uma varivel
aleatria contnua como:
a) Modelo Uniforme
Definio: Uma varivel aleatria X tem distribuio uniforme entre a e b (a<b) reais, se a
sua f.d.p. dada por:

47

47

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

b) Modelo Normal
A varivel X tem distribuio normal com parmetros E e @  , denotada por X: (E, @  ), onde < E < + e 0 < @  < +, se sua f.d.p. dada por:

Como a probabilidade de a varivel X ocorrer num intervalo, matematicamente, a rea sob


a curva, teramos valores diferentes de probabilidade para cada valor de

e de . Por isso, usamos

48

48

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

a curva normal padro ou reduzida

( = 0, 2 = 1) ver figura acima, denotada por N(0,1). Se X:


N(,2) , ento a varivel aleatria Z com distribuio N (0, 1) definida por:

11. Exerccios de Reviso e Fixao


1. Uma certa industria desejando melhorar o nvel de seus funcionrios em cargos de chefia,
montou um curso experimental e indicou 15 funcionrios para sua primeira turma. Os dados
referentes seo a que pertencem e notas obtidas esto na tabela a seguir.
Usando os dados da tabela, determine:
a) A mdia em cada disciplina;
b) As menores notas em cada disciplina e os funcionrios que as obtiveram;
c) Dispor as notas de Administrao em forma crescente;
d) Comparar os funcionrios das sees de Vendas e Tcnicas e determinar a maior
nota destes funcionrios em cada disciplina;

2. Suponha que as amplitudes de vida de dois aparelhos eltricos, D1 e D2, tenham distribuies
N(42, 36) e N(45, 9), respectivamente Se o aparelho para ser usado por um perodo de 45 horas,
qual aparelho deve ser preferido? E se for por um perodo de 49 horas?

49

49

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Mdulo IV Iniciao a Programao


1.

Algoritmos Noes Bsicas de Programao

Um programa nada mais do que uma seqncia de comandos (rotina) estabelecida de


acordo com um objetivo pr-estabelecido, ou seja, imprescindvel que, antes de iniciar-se um
programa, o usurio esteja completamente ciente do que ele deseja que a rotina realiza.
O primeiro passo para o desenvolvimento de uma rotina a construo de um algoritmo para
o programa, onde todos os comandos devem ser explicitados. Uma boa maneira para a construo
do algoritmo a utilizao de um fluxograma. A partir do fluxograma, o nico trabalho do usurio
traduzir o esquema para a linguagem de programao, qualquer que seja esta. Uma simbologia
para o desenho do fluxograma apresentada a seguir:

A seguir, utilizando esta notao, mostrado um fluxograma com o algoritmo para clculo
do valor da compra de um cliente numa loja com artigos em promoo. O valor do desconta fornecido
pela loja varia de acordo com o nmero de peas adquiridos pelo comprador.

Para implementar esta rotina em qualquer linguagem de programao, basta atribuir os


comandos devidos, de forma que o programa execute o algoritmo passo a passo.

50

50

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

2. Arquivos-M: Scripts e Funes


Um dos assuntos mais importantes, a criao de arquivos-M descrita neste captulo. O
MATLAB usualmente acionado por um comando. Quando se entra com uma simples linha de
comando, o MATLAB a processa imediatamente e mostra o resultado.
O MATLAB tambm pode executar uma seqncia de comandos que est armazenada em um
arquivo.Arquivos de disco que possuem linhas de comando para o MATLAB so chamados arquivosM em virtude de sua extenso ser do tipo .m. Por exemplo, o arquivo bessel.m contm linhas de
comando do MATLAB para avaliar funes Bessel.
Um arquivo-M consiste de uma seqncia normal de linhas de comando do MATLAB, a qual
pode fazer uma chamada a outros arquivos-M. Um arquivo-M pode chamar a si mesmo de modo
recursivo.Dois tipos de arquivos-M podem ser usados: scripts e funes. Scripts, ou arquivos script,
realizam longas seqncias de comandos. Funes, ou arquivos funo, permitem adicionar novas
funes s funes j existentes. A maior parte do poder do MATLAB se deve ao fato de se poder
criar novas funes que resolvam problemas especficos.
Arquivos Scripts
Quando um script chamado, o MATLAB simplesmente executa os comandos encontrados no
arquivo. As linhas de comando de um arquivo script operam globalmente com os dados que esto no
espao de trabalho. Scripts so teis na realizao de anlises, soluo de problemas, ou no projeto
de longas seqncias de comando, o que se torna cansativo para ser feito iterativamente. Como um
exemplo,suponha um arquivo chamado fibno.m que possui os comandos:
f = [1 1];
i = 1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1);
i = i + 1;
end
plot(f)

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

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

51

51

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

function y = media(x)
% Media dos elementos de um vetor ou uma matriz
% Para vetores, media(x) retorna a media dos elementos de x
% Para matrizes, media(x) retorna um vetor contendo a media dos elementos
% de cada coluna da matriz x
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x)/m;
A existncia deste arquivo define uma nova funo chamada media. A nova funo media
usada como qualquer outra funo do MATLAB. Por exemplo, se z um vetor de inteiros de 1 a 99,
>> z = 1:99;
o valor mdio deste encontrado atravs do comando
>> media(z)

que resulta em
ans =50
As informaes abaixo so para o arquivo media.m, mas o princpio vlido para todos os arquivos
funo:

A primeira linha declara o nome da funo e os argumentos de entrada e sada. Sem esta
linha, o arquivo um arquivo script, e no um arquivo funo.
O smbolo % indica que o restante da linha um comentrio e deve ser ignorado.
As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita help media.
As variveis m, n e y so locais a media e no aparecem no espao de trabalhoaps media
ter terminado. (Ou, se elas existem, permanecem inalteradas.).
No necessrio definir os inteiros de 1 a 99 em uma varivel de nome x. No exemplo, a
funo media foi usada com uma varivel z. O vetor z que contm os inteiros de 1 a 99 foi
passado ou copiado para media onde ele se tornou uma varivel local de nome x.

Strings de Texto
Strings de texto so entradas no MATLAB entre aspas simples ( ). Por exemplo,
>> s = Engenharia

resulta em
s =
Engenharia

52

52

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

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


>> size(s)
ans =
1

10

indica que s possui cinco elementos. Os caracteres so armazenados com seus valores ASCII, e a
funo abs e a funo double mostram estes valores:

>> f = abs(s)
f =
69

110

103

101

110

104

97

114

105

97

A funo char faz a transformao inversa:

>> char(f)
ans =
Engenharia

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

>> s = [s, Eltrica]


s =
Engenharia Eltrica

>> s = strcat(s, Eltrica)


s =
Engenharia Eltrica

3. Condicionais e Loops: if, switch, while e for


Este tpico j deve ser bem conhecido para os alunos de Engenharia que j fizeram
Estrutura de Dados. Mesmo assim, vale a pena apresentar a sintaxe e explicar os conceitos. A
estrutura if executa blocos de comandos somente se a condio for verdadeira. Veja a tabela de
possibilidades abaixo:

53

53

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Uma alternativa a estrutura if a estrutura switch. Ela mais interessante para executar
comandos com base no valor de uma varivel ou expresso.
switch expressao
case valor1
bloco1
case { valor2 , valor3 }
bloco2
otherwise
bloco3
end
No caso acima, o bloco 1 executado se o valor da expresso for valor1. Caso contrrio, se for
valor2 OU valor3, o bloco 2 executado. Caso contrrio, o bloco 3 executado. Perceba que,
diferente do que ocorre na linguagem C, os blocos 2 e 3 no so executados caso o valor 1 seja
verdadeiro! No h, portanto, necessidade de breaks!
Para executar o mesmo bloco de comandos mais de uma vez, usamos as estruturas de loop
(lao). No caso da estrutura while, o bloco executado enquanto a condio for verdadeira.
CUIDADO: se a condio for sempre verdadeira, o bloco rodar eternamente, at que algum
aborte o programa

while condicao
bloco
end

Finalmente, a estrutura for usada para executar um bloco de comandos numa quantidade
definida de vezes. Atravs de um contador (ou iterador por isso a letra i usada) declarado no
incio como um vetor, estabelecemos quantas vezes o bloco ser executado. Ao mesmo tempo,
declaramos os valores do contador ao longo dos ciclos. Observe alguns casos possveis:

54

54

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Para encerrar este tpico, muito importante frisar que o uso de for e while pode e deve
ser evitado na maioria dos casos. Isso porque o MatLab possui funes otimizadas para receber
vetores e matrizes, efetuando assim o clculo em todos os elementos de uma s vez! Usar loops e
chamar a funo para cada elementos individualmente deixa o cdigo mais extenso e complicado, e
pode at retardar o processamento.
A tabela abaixo mostra alternativas para quem est acostumado demais com algoritmos da
linguagem C:

4. Funes de entrada e Sada


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

Abrindo e Fechando Arquivos


Antes de se ler ou escrever em um arquivo, deve-se abri-lo com o comando
fopen,especificando o arquivo a ser aberto e a string de permisso. Por exemplo,
>> fid = fopen(arquivo.txt,r)  abre para leitura o arquivo arquivo.txt
As strings de permisso disponveis so:

55

55

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

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

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

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

atribui -1 para fid, e message recebe uma string com a forma abaixo
No such file or directory.

Uma vez aberto, o arquivo fica disponvel para leitura e gravao. Quando se termina a leitura ou a
gravao, usa-se fclose para fechar o arquivo. Por exemplo,
>> status = fclose(fid)
fecha o arquivo associado com o identificador fid, e
>> status = fclose(all)
fecha todos os arquivos abertos. Ambas as formas retornam 0 se esta operao for realizada com
sucesso, ou -1 se algo de errado acontecer.

Leitura de Arquivos
A funo fread l arquivos de dados binrios. Na sua forma mais simples, ele lum arquivo
inteiro em uma matriz. Por exemplo,
>> fid = fopen(texto.txt,r);
>> A = fread(fid);
>> status = fclose(fid);
l todos os dados do arquivo texto como caractere, e os escreve em uma matriz A.

56

56

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Dois argumentos opcionais a fread fazem o controle do nmero de valores lidos e a preciso de cada
valor.
>> fid = fopen(arquivo.txt,r);
>> A = fread(fid,100);
>> status = fclose(fid);
l os 100 primeiros valores de dados em um vetor coluna A.
Substituindo o nmero 100 pelas dimenses de uma matriz [10,10], faz com que sejam lidos os
mesmos 100 elementos, armazenando-os em uma matriz 10x10. E
>> A = fread(fid,Inf)
l at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do
argumento produz o mesmo efeito.

Escrevendo Arquivos de Texto Formatados e Strings


A funo fprintf converte dados em strings de caractere e os mostra na tela ou em um arquivo.
O formato de sada definido por um especificador de converso e por um texto. Os especificadores
de converso controlam a sada dos elementos de uma matriz.Os textos so copiados diretamente.
Os especificadores so precedidos pelo caractere %; converses comuns incluem:
%e - para notao exponencial
%f - para notao de ponto fixo
%g - que seleciona automaticamente o menor entre %e e %f
Campos opcionais no especificador de formato controlam o tamanho e a preciso do campo. Por
exemplo:

>>
>>
>>
>>
>>
>>

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

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




um valor de ponto fixo de seis caracteres com duas casas decimais


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

57

57

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Lendo Arquivos de Texto Formatados e Strings


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

%s - para converter uma string


%d - para converter um nmero decimal
%f - para converter um valor em ponto flutuante
O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito anteriormente:
>>
>>
>>
>>
>>

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

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

58

58

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Mdulo V Integrao com o Excel e Aplicaes Independentes


1. ExcelLink
Para facilitar o trabalho de fluxo de dados entre o MATLAB e programas do MS-Office, foi
criado o ExcelLink, uma macro desenvolvida para o MS-Excel que permite o envio e
recebimento de dados do MATLAB.
Executando o arquivo excllink.xla o
aparece na barra de ferramentas.

MS-Excel executado, surgindo um conjunto de botes

O MATLAB deve ser executado a partir do Excel para ativar o link. Pode-se enviar dados para o
MATLAB selecionando uma ou vrias clulas e usando o boto putmatrix, ento aparecer uma
janela pedindo o nome da varivel a ser armazenada com estes dados.
Para receber dados deve-se utilizar o boto getmatrix e informar a varivel onde esto
armazenados os dados que quer-se buscar. possvel ainda utilizar funes do MATLAB no
Excel. Para tanto, usa-se o boto evalstring. As variveis de sada devem ser armazenadas
no workspace do MATLAB, ento deve-se atribuir um nome varivel para depois import-la para o
Excel.

2. Aplicaes Independentes
Ferramenta GUIDE
Esta uma mais uma das ferramentas poderosas do MATLAB, que permite a construo
de uma interface amigvel para o usurio e o que melhor, de uma forma amigvel, ou seja,
utilizando uma interface grfica, o Graphical User Interface (GUI), para criar outras.

59

59

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Conceitos Bsicos
O Handle Graphics uma estrutura orientada para objeto que permite a criao e
manipulao de grficos e imagens. Os Object Handles podem ser considerados como
indicadores nicos atribudos pelo MATLAB para cada objeto, permitindo desta maneira
referenciar estes objetos para manipul-los. Existem 3 formas de se obter um handle:
a) na criao do objeto
b) atravs de comandos utilitrios
c) utilizando o findobj
Para o caso de se desejar obter o handle do objeto na sua criao, basta armazen-lo um
uma varivel, pois os handles so retornados automaticamente pelas suas funes de criao.
>> p = plot([1:10],sin(2*[1:10]));
Neste caso o handle do grfico da funo seno ficar armazenado na varivel p,
portanto se desejar-mos fazer qualquer modificao no grfico utilizando seu handle, basta
utilizar p.
A segunda forma de se obter um handle via comandos utilitrios:
1) gcf retorna o handle da figura corrente
2) gca retorna o handle dos eixos correntes
3) gco retorna o handle do objeto corrente
4) gcbf obtm handle para CallBack Figure
5) gcbo obtm handle para CallBack Object
A terceira forma atravs do comando findobj, que procura na figura o objeto atravs
de propriedades especficas do objeto de interesse (como o TAG do objeto, por exemplo) e retorna o
seu handle.
Este comando ir procurar atravs de toda a hierarquia de objetos na figura at encontrar
o objeto que possua as propriedades especificadas, porm, esta busca pode ser mais rpida se
tambm for informado o objeto a partir do qual se deve iniciar a busca. A sua sintaxe a seguinte:
>> var_handle = findobj(ponto_incio,propriedade,valor)
Exemplo:
>> plot([1:10]);
>> h = findobj(gca, 'Color',[0 0 1]);
>> set (h, Color, [1 0 0]);
Neste exemplo, o handle da linha do grfico identificado pelasua cor azul e armazenado
em h, e em seguida, atribuda a cor vermelha para a mesma.
Como visto no exemplo, uma das formas de manipularmos objetos grficos atravs
do comando set, enquanto que para pegarmos valores especficos de uma propriedade de um
objeto, utiliza-se o comando get, em ambos os casos o handle funciona como endereo onde ser
feita a ao.

60

60

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

Uma maneira mais simples de trabalhar com os objetos grficos atravs do Graphical
User Interface (GUI) que executado atravs do comando guide
O que uma GUI?
uma ferramenta que permite construir interfaces grficas de interao com o utilizador. A GUI
torna os programas mais fceis de usar, pois fornecem uma aparncia consistente e com controles
intuitivos (botes, rguas, caixas de listagem, menus, etc).
Projetando uma GUI
muito importante planejar a GUI que voc deseja construir, antes de comear o programar. Um
projeto de GUI pode ser feito com papel e caneta, como um rascunho da interface que voc deseja
que o programa tenha.
A idia de um esboo de uma GUI:

O rascunho em um papel simples, mas independente da complexidade da GUI, sempre um bom


meio de comear.

61

61

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

MATLAB Compiler
Normalmente um M-file, pode ser compartilhado com outras pessoas de um ambiente
corporativo ou de uma instituio de ensino, quer seja internamento ou externamente a esses
ambientes, desde que essas pessoas tambm disponham de uma licena MATLAB.
Entretanto como podemos compartilhar essas aplicaes (M-files) caso os usurios no
tenham uma licena MATLAB? A soluo seria criar aplicaes stand-alone que funcionem de forma
independente sem precisar do MATLAB.
O MATLAB Compiler a plataforma principal de criao de aplicaes Stand-alone
convertendo programas MATLAB, sendo possvel tambm a criao de aplicaes C++ que podem
ser integradas em outros softwares.
Aps criado o programa MATLA, faremos uso do comando deploytool.

62

62

MATLAB Bsico Conhecimento da Ferramenta Computacional e Iniciao a Programao

63

63