Você está na página 1de 67

Programa de Educao Tutorial

Mini-curso Octave/MATLAB

PET Engenharia de Computao


03/07/2013
1

Sumrio
Sobre as Ferramentas
Operaes Bsicas e Funes
importantes
Grficos
Arquivos, scripts e criao de funes
Funes Bsicas e teis

Introduo
MATLAB e Octave so ferramentas para uso de processamento
numrico.
O MATLAB em especial um dos programas mais utilizados em
engenharia para simulaes e anlises de sistemas reais.
Possuem recursos de programao com uma linguagem procedural
de alto nvel.
MATLAB: http://www.mathworks.com

Octave (windows): http://octave.sourceforge.net/


Octave (linux): digite sudo apt-get install octave no seu terminal,
informe sua senha e prossiga o download. Aps finalizado, digite
octave no terminal

Vantagens Octave
Software gratuito

Mais leve
Open source
Imensa compatibilidade com MATLAB

Vantagens MATLAB
Aplicaes vo alm de clculos
matemticos
Velocidade de processamento super
rpida (funes prprias bem otimizadas)

Dificilmente encontrar-se bugs no


programa

Escrita de Cdigo
O cdigo escrito em MATLAB funcionar*
no Octave. Entretanto, nem todo cdigo
escrito no Octave funcionar no Matlab.
*A sintaxe dos cdigos so as mesmas,
porm h funes exclusivas do MATLAB.
Indicamos utilizar o software adotado pela
professora.

Exemplos:
MATLAB no aceita spas duplas, apenas simples
Operadores lgicos do MATLAB:
Or - | e ||
And - & e &&
Not - ~
O octave aceita esses operadores, assim como
os padres de C. Tambm aceita aspas duplas ou
simples

Operaes bsicas

3 + 8 (soma)
5 2 (subtrao)
4 * 2 (multiplicao)
4 / 2 (diviso direta)
3^2 (potenciao)
2 \ 4 (diviso inversa)

Variveis
x=4+5
X = 3/2
x=3+3

Apenas duas variveis foram criadas (X e x).

Aps cada operao o resultado


armazenado em uma varivel chamada
ans.
x = ans*4;
Pode-se utilizar ; aps cada ao. Isso
far com que a resposta no seja impressa
na tela.

Nmeros Complexos
A estrutura de um complexo a + i*b,
onde i = sqrt(-1)
z = 4 + i*3;
real(z)
imag(z)
abs(z)
angle(z) ( dado em radianos)

Vetores e Matrizes
Devem ser declarados entre colchetes.
Na definio de vetores e matrizes, um
espao em branco ou uma vrgula
separam elementos de colunas diferentes
numa mesma linha.
O ponto-e-vrgula separa elementos de
linhas diferentes numa mesma coluna.

V = [1 2 3] o mesmo que V = [1,2,3] e


ambos so vetores linhas.
v = [1;2;3] um vetor coluna
A = [1 2 3; 4 5 6; 7 8 9] uma matriz 3x3

Operaes
Pode-se fazer operaes de soma,
subtrao, diviso e multiplicao.
Para fazer uma operao elemento a
elemento utiliza-se . antes do sinal de
operao
Exemplo:
[1 2 3].*[3 2 1] = [1x3 2x2 3x1] = [3 4 3]

Acesso a valores em
vetores e matrizes
Acesso de elementos:
V = [1 2 3]
V(1) acessa o primeiro elemento
V(2) acessa o segundo elemento
V(3) acessa o terceiro elemento
Note que o ndice do primeiro elemento 1 e
no 0 como na maioria das linguagens de
programao

Semelhantemente em matrizes,
A = [1 2 3; 4 5 6; 7 8 9]
A(1,2) 2

>>A(1,2) = 5;
Faz o elemento da primeira linha e
segunda coluna (2) valer 5.

A(:,1) pegar todos os elementos da primeira


coluna
A(1,:) pegar todos os elementos da primeira
linha
A(i:j,k:l) retornar uma submatriz da matriz
A

Forma til de definir


vetores
vet = 1:10 o mesmo que
vet = [1 2 3 4 5 6 7 8 9 10]
Vet = 1:2:10 o mesmo que
Vet = [1 2 4 6 8 10]
V = linspace(0, 20, 5) Cria uma vetor de
tamanho 5 com nmeros linearmente
espaados de 0 a 20

Funes teis

size(A) Tamanho da matriz


det(A) Calcula o determinante
length(A) Tamanho do vetor
[i,j] = find(A) Retorna ndices de valores
no nulos na matriz
max(A) maior valor de vetor ou maior da
coluna em matriz
min(A) menor valor de vetor ou menor
da coluna em matriz

inv(A) Calcula a inversa de A


ones(i,j) Matriz de dimenso i x j de ums
eye(i,j) Matriz identidade i x j
zeros(i,j) Matriz de zeros i x j
A Trasposta de A
sort(A) Ordena A (matrizes so
ordenadas por colunas)
diag(A) retorna a diagonal

Isempty(x) - Verdadeiro para matrizes


vazias
Isequal(x, y) - Verdadeiro se matrizes
forem iguais
Isprime(x) - Verdadeiro para primos
Isletter(x) - Verdadeiro para letras do
alfabeto

Operadores relacionais
e lgicos
Como dados de entrada de expresses
relacionais e lgicas, qualquer nmero diferente
de zero Verdadeiro e o zero Falso
A sada produz 1 para Verdadeiro e 0 para Falso
Operadores relacionais:
<, <=, >, >=, ==, ~=
Operadores lgicos:
& ou && (AND), | ou || (OR), ~ (NOT)

xor(x,y): Retorna 1 se x ou y for diferente


de zero e 0 se ambos forem Falso ou
Verdadeiro
any(x): Retorna 1 se algum elemento difere
de zero
all(x): Retorna 1 se todos os elementos
diferem de zero

Ajuda
Comando help: Apresenta a descrio da funo.
Ex: help sin
Comando lookfor: Procura nas funes do Octave
e do MATLAB, alguma que possua em sua
descrio a palavra procurada.
Ex: lookfor sine
Para sair do help digite 'q'.

Scripts
Arquivo de extenso .m contendo
comandos do MATLAB/Octave
Comandos executados em srie
Para chamar o script, basta digitar o nome
do arquivo nas linhas de comando sem a
extenso

A funo disp imprime algo na tela,


podendo ser o valor de uma varivel ou
um comentrio
echo define se as linhas digitadas devem
ser impressas ou no, inclusive comandos
com ; e comentrios
input solicita ao usurio que fornea algum
dado de entrada

Entrada de dados por


arquivo
importdata(arquivo)
- Faz leitura dos dados de um arquivo e
em forma de uma matriz
Exemplo:
dados = importdata(entrada.txt)
ou
entrada = entrada.txt
dados = importdata(entrada)

Utilizando a funo fscanf


- Semelhante com leitura de dados em C
- Necessita de abrir o arquivo com a
funo fopen, assim como em C

Forma de leitura
Matriz = fscanf (fid, template, size)
fid o arquivo a ser lido
template o formato da leitura
size a quantidade de dados a ser lido
Arquivo a ser lido:
fid = fopen(entrada.txt, r)
- o r significa read (leitura)
- para escrita usa-se w (write)

Template de leitura
inteiros = %d
caracter = %c
float = %f
notao decimal = %e (1.434e+03)
misto de float e decimal = %g
(recomendo sempre usar este)

Tamanho da leitura
Size pode ser especificado como:
Inf l o mximo que puder e armazena
em um vetor coluna
n l n elementos armazenando em um
vetor coluna
[n Inf] l o mximo que puder
armazenando em uma matriz de n linhas
[n n] l os elementos armazenando em
uma matriz n x n

Funes
Cada funo deve ser criada em apenas
um arquivo
O nome do arquivo deve ser o mesmo
nome da funo (com extenso .m)
Podem ser utilizadas depois em outros
arquivos e outras funes ou chamadas
na linha de comando

Podem ter quantos retornos e quantos


parmetros necessrios
Deve ser seguida uma sintaxe padro
para construo
No precisa declarar os tipos de
parmetros ou retornos

Formato de funes

function [a, b, c] = nome (par1, par2, .., parN)

Fluxo de controle

If/else
for
while
break
case

If/else
if <expresso lgica>
<bloco de comandos>
else
<bloco de comandos>
end
*No Octave pode-se utilizar endif, porm o
mesmo no vlido para o MATLAB

while
while <expresso lgica>
<bloco de comandos>
end

for
for i = 1:n
<bloco de comandos>
end

*se n = 5, o loop acontecer 5 vezes

Switch-case
u = input(Escreva a unidade de medida: );
switch u
case {polegadas,pol}
y = x*2.54;
case {metros,m}
y = x/100;
otherwise disp([unidade desconhecida: u])
end

Medio de tempo de
execuo
tic() comea a contagem
toc() finaliza a contagem retornando o
valor do tempo desde o ltimo tic()
tic()
<bloco de comandos>
t = toc()
A varivel t armazenar o tempo levado
para executar o bloco de comandos

Armazenagem de
dados
dir mostra tudo que est em sua pasta
atual
save <nome_arquivo> salva todas as
variveis e contedo do workspace
load <nome_arquivo> carrega um
arquivo salvo com o comando save
whos mostra tudo que h em seu
workspace

clear limpa o workspace

clc limpa os textos do terminal


*Cuidado para no confundir e apagar todo
seu workspace

Grficos
plot(x, y) - Plota um grfico de y em funo
de x
plot(x, y, z, w) - Plota dois grficos numa
mesma figura
plot(x, y, 'param') - 'param' define tipo de
linha, formato do marcador e a cor do
grfico. No h ordem especfica nem
preciso determinar os trs.

semilogx (x, y) - Gera grficos com y na


escala linear e x na escala logartmica
semilogy (x, y) - Gera grficos com x na
escala linear e y na escala logartmica
loglog (x, y) - Gera grficos com x e y nas
escalas logartmicas
surf(x, y, z) ou surf(A) Gera um grfico
de superfcie

ezplot('curva',[a,b]) - Plota a curva no


intervalo [a,b]
polar(ang, f, 'param') - Plota em
coordenadas polares uma funo f.
plot3(x, y, z) - Plota grficos em 3D
contour(Z) Plota as curvas de nvel da
matriz Z

Funes teis

figure(valor)
grid on/off
hold on/off
legend
title(titulo)
xlabel(label)
ylabel(label)
axis

Salvando grfico
f = figure()
plot(x,y)
saveas(f, 'image.png');

No Octave pode-se usar:


print desp arquivo.jpg
print(arquivo.png)

Parmetros da funo
plot
plot(x, y, parmetro)
-opes no MATLAB

-opes no Octave

Resoluo de sistemas
lineares
Forma direta:
- temos a seguinte forma: A*x = b
- x = inv(A)*b ou x = A\b

Decomoposio LU:
- [L, U, P] = lu (A)

[lambda V] = eig (A) matriz de


autovalores e autovetores
poly(A) polinmio caracterstico da
matriz

Polinmios
Definido como um vetor em que cada
posio um coeficiente, comeando com
o de mais alta ordem

Operaes com
polinmios
roots(p) retorna as razes do polinmio p
conv(p1,p2) faz a multiplicao do
polinmio p1 pelo p2
[p,r] = deconv(p1,p2) armazena a diviso
de p1 por p2 em p e o resto em r
[r, p, k, e] = residue(a,b) faz a expanso
em fraes parcias de a/b
[a, b] = residue(r, p, k, e) faz o inverso

Ajuste de curva
Encontrar a funo que melhor se ajusta a
um grupo de coordenadas
Utiliza o mtodo dos quadrados mnimos
- Mtodo muito simples e amplamente
utilizado
- minimizao do erro relativo dos pontos
curva
- Tem que fazer muita conta!

polyfit(x,y,n): retorna o polinmio de grau n


que se ajusta aos pontos dos vetores
dados por x e y
poly(vetor) retorna um polinmio cujas
razes so os elementos do vetor
polyval(p,x): avalia o polinmio p para cada
elemento de x

Integrais definidas e
indefinidas
O MATLAB pode ser usado para resolver
integrais simples, duplas e triplas
definidas ou indefinidas
O Octave, porm, s resolve integrais
indefinidas de polinmios
Para encontrar a rea de diversos tipos de
funo existem vrias formas, tanto no
MATLAB como no Octave

trapz(x,y) - Aproximao trapezoidal


quad(f,a,b) - Quadratura Gaussiana
quadv(f,a,b) - Regra de Simpson adaptada
quadl(f,a,b)
quadgk(f,a,b)
quadcc(f,a,b)
polyint(p,cte) - Integral indefinida de algum
polinmio

Definio de funes
matemticas
Funo matemtica - f(x) = x + 2x + 1
Representao - @(x) x.^2 + 2*x +1
Fxy = @(x, y) sin(pi*x.*y).*sqrt(x.*y)
Funes definidas dessa forma que so
usadas nos mtodos de integrao

Integrais duplas e
triplas
dblquad(f, xa, xb, ya, yb)

triplequad(f, xa, xb, ya, yb, za, zb)

Diferenciao
Comando diff

Funciona como derivao de funo


apenas no MATLAB
Avalia apenas diferenas no Octave. Pode
ser usado de forma a calcular derivadas
em determinado ponto

Avaliao da derivada em um certo ponto:


Dy = diff(y)./diff(x);
Pode-se usar a derivada atravs do
mtodo das diferenas finitas tambm

Derivada no MATLAB
Deve-se criar uma varivel simblica:
syms x
Funo que utiliza esta varivel
f = sin(x)
Mandar derivar
diff(f)

Utilizando mais de uma


varivel
syms s t
f = sin(s*t);
diff(f,t) Derivar em relao a t

syms x n
f = x^n
diff(f)

Resoluo de
Equaes Diferenciais
dsolve MATLAB
- Resolve equaes diferenciais ordinrias
e sistemas de equaes diferenciais
lsode Octave
- Resolve equaes diferenciais
numericamente
Transformada de Laplace (MATLAB)

dsolve

lsode
Faz o mesmo que a dsolve, porm
trabalha apenas com valores numricos
(vetor de dados)
Um pouco mais complicada de utilizar

Transformada de
Laplace
Amplamente usada em simulao de
sistemas dinmicos
Utiliza variveis simblicas
- laplace(f) Faz a transformada
- ilaplace(s) Faz a transformada inversa