Вы находитесь на странице: 1из 60

Introdução ao MATLAB

Leandro Gazoni
Fernanda Raupp
O que é o MATLAB ?

„ matrix laboratory é um software para computação


científica
„ resolve problemas matemáticos de forma rápida e
eficiente
„ possui uma família de aplicativos específicos
(toolboxes) para:
„ otimização, manipulação algébrica, redes

neurais, processamento de sinais, simulação


de sistemas dinâmicos, entre outros.
Evolução do MATLAB
Ano Versão Resumo
1978 Classic MATLAB Versão em Fortran

1984 MATLAB 1 Reescrito em C

30% a mais de funções


1985 MATLAB 2 e comandos
+ rápido, gráficos
1987 MATLAB 3 coloridos
Animação, inteface,
1992 MATLAB 4 debugger, MS-Win
OO, álgebra linear,
1997 MATLAB 5 eq. diferenciais
LAPACK, ARPACK,
2000 MATLAB 6 BLAS, Suporte Java
Variáveis no MATLAB

„ existe somente um tipo de variável:


„ matriz

„ o tipo matriz pode ser expresso como:


„ escalar: matriz 1 x 1
„ vetor: matriz 1 x n ou n x 1
„ matriz propriamente: matriz m x n

„ a dimensão de matrizes e vetores é automática


Representação de variáveis

Variáveis

Escalares Vetores Matrizes

Vetores Linha Vetores Coluna


0.12
(1X1) String Numérico
⎡1 2 3⎤
⎡1 ⎤ x = ⎢⎢ 4 5 6 ⎥⎥
⎢2 ⎥
[L N C C] y = ⎢ ⎥ ( 4 ⎢⎣×7 1 )8 9 ⎥⎦
[1 ]
⎢3 ⎥
(1× 4) 2 3 ⎢⎣ 4 ⎥

( 3 × 3)
Características na
declaração de uma variável

„ variáveis são alocadas na memória ao serem


declaradas;
„ nomes de variáveis são sensíveis a letras
maiúsculas e minúsculas;
„ vetores e matrizes devem ser declarados entre [ ];
„ elementos de uma mesma linha numa matriz são
separados por espaço(s) ou vírgula;
„ ponto-e-vírgula(;) indica o final de uma linha de uma
matriz ou expressão;
Exemplos de declarações
de variáveis
>> A = [ 1 2 3 4 5 ]
A=
Vetor Linha
1 2 3 4 5

>>B = [ 1; 2; 3; 4; 5 ] ou
>>B = A’
B= Vetor Coluna
1
2
3
4
5
Exemplos de declarações
de variáveis
>> A = [ 1 2 3; 4 5 6; 7 8 9 ] Matriz
A=
1 2 3
4 5 6
7 8 9

>> A = A' Matriz Transposta


A=
1 4 7
2 5 8
3 6 9
Operadores matemáticos

Símbolo Operação
+ Adição

- Subtração

* Multiplicação

/ Divisão: a/b=a*b^(-1)

^ Potenciação

‘ Matriz transposta
Exemplos com
operadores matemáticos
>> A = [ 1 2; 3 4 ];
⎡1 2 ⎤ ⎡5 6⎤
>> B = [ 5 6; 7 8 ];
A=⎢ ⎥ B=⎢ ⎥
⎣3 4 ⎦ ⎣7 8 ⎦

>> C = A + B >> C2 = A*B


C= C2 =
6 8 19 22
10 12 43 50
>> C1 = A – B >> C3 = A/B ( = A*inv(B) )
C1 = C3 =
-4 -4 3.0000 -2.0000
-4 -4 2.0000 -1.0000
Operadores Matemáticos
Ponto-a-Ponto

Símbolo Operação

.* multiplicação

./ divisão

.^ potenciação
Exemplos de operadores
matemáticos ponto-a-ponto
>>A = [ 1 2 ; 3 4 ]; ⎡1 2 ⎤ ⎡5 6⎤
>>B = [ 5 6 ; 7 8 ]; A=⎢ ⎥ B=⎢ ⎥
⎣ 3 4 ⎦ ⎣ 7 8 ⎦
>> C = A.*B >> C = A./B
C= C=
5 12 0.2000 0.3333
21 32 0.4286 0.5000

>> C = A.^B >> C = A.^3


C= C=
1 64 1 8
2187 65536 27 64
Característica na
declaração de uma variável
v = [ inicio : incremento : fim ]
v = [ inicio : fim ] incremento=1

ou

v = inicio : incremento : fim


v = inicio : fim

„ Exemplo:
>> A = 1 : 9
A=
1 2 3 4 5 6 7 8 9
Característica na
declaração de uma variável
„ Exemplos:
>> v = [ 2 : 2 : 10]
v=
2 4 6 8 10

>> M = [1:1:3; 4:1:6; 7:1:9]


M=
1 2 3
4 5 6
7 8 9
Manipulação de matrizes
„ acessando um elemento de uma matriz;

A = [1 3 5 7 9 11 13 15 17 ]
>> A (3)
ans =
5

⎡ 1a 2a12 3a13 ⎤ >> B (2,3)


⎢ 11
⎥ ans =
B = ⎢ 4a21 5a22 6a23 ⎥ 6
⎢ ⎥
⎢⎣ 7 a31 8a32 9a33 ⎥⎦ A referência deve ser
sempre ( linha, coluna)
Manipulação de matrizes
„ É possível incluir matrizes em matrizes;

>> A = [1 2 3; 4 5 6; 7 8 9];
>> a = [10 20 30]; A => matriz 3x3
>> A = [A;a]
A=
1 2 3
4 5 6
7 8 9
10 20 30
A => matriz 4x3
Manipulação de matrizes

„ É possível extrair matrizes de matrizes;

⎡1 2 3⎤ Acessando os elementos na 2a
⎢4 5 6⎥ e 3a colunas da 2a linha de A
A=⎢ ⎥
⎢7 8 9⎥
⎢ ⎥ >> x = A ( 2, [ 2 3 ] )
⎣10 20 30 ⎦ ou
>> x = A ( 2, 2:3)

x=
5 6
Manipulação de matrizes

Acessando os elementos
da 2a e 3a linhas
⎡1 2 3⎤
⎢4 5 6⎥ >> x = A ([2 3] , [1 2 3 ])
A=⎢ ⎥ ou
⎢7 8 9⎥ >> x = A (2:3, 1:3)
⎢ ⎥ x=
⎣10 20 30 ⎦ 4 5 6
7 8 9
Manipulação de matrizes
„ Podemos acessar diretamente elementos da
diagonal de uma matriz;

Vamos acessar a diagonal


⎡1 2 3⎤ da matriz A

A = ⎢4 5 6⎥ ⎥ >> x = diag(A)
x=
⎢⎣7 8 9 ⎥⎦ 1
5
9
Funções especiais para
geração de matrizes
„ A = rand (m,n) ou rand(n)
Gera matriz com elementos aleatórios.

„ A = eye (m,n) ou eye(n)


Gera matriz com elementos na diagonal iguais a 1.
Uma matriz identidade nXn é gerada por eye(n).

„ A = zeros (m,n) ou zeros(n)


Gera matriz com todos elementos iguais a 0.

„ A = ones (m,n) ou ones(n)


Gera matriz com todos elementos iguais a 1.
Exemplos de funções especiais
para geração de matrizes
» a = rand(2) » a = ones(2)
a= a=
0.3840 0.0928 1 1
0.6831 0.0353 1 1

» a = eye(2) » a = zeros(2)
a= a=
1 0 0 0
0 1 0 0
Operadores matemáticos

sin seno cos cosseno

tan tangente csc cossecante

sec secante cot cotangente

acos arco-coseno asin arco-seno

atan arco-tangente asec arco-secante


arco-
acsc acot arco-cotangente
cossecante
Variáveis e Comandos Permanentes
contador de
resposta mais
ans recente
flops operações
matemáticas
precisão da
eps máquina
NaN Not a Number

maior número de
realmax ponto flutuante
inf Infinito

menor número de
realmin ponto flutuante
computer tipo de computador

lista de variáveis
pi 3,141592653... who utilizadas
unidade
i Imaginária
version versão do MATLAB
Exercícios:
„ Armazene os valores das seguintes variáveis:
a = 3.132
b = -23.004
⎡5 34 87 ⎤
c = 5*pi B = ⎢⎢32 4.65 74 ⎥⎥
d = (3, 5.4, 7.43)t
e = (-2.234, 0, pi/2)t
⎢⎣ 0 13 −43 ⎥⎦

⎡ −9.81⎤ ⎡0.32 2.5 + pi 2 ⎤



f=⎢ 0 ⎥ ⎥ ⎢ ⎥
A = ⎢ 1e2 4 12⎥
⎢⎣ 1 ⎥⎦
⎢⎣ 9 51 24⎥⎦
Exercícios:
„ Verifique os seguintes resultados:

a) a + b + eps -19.8720
b) c – b * (a / b) ⎢-24.854 ⎥
12.5760
c) d–e [5.2340⎢ 05.4000⎥ 5.8592]
d) e’ + 2 * f ⎡0.⎢8108 0⎥.6696 − 0.5450⎤
⎡⎢− 1⎢.3.5708
0128 −⎥ 1.7442 − 0.7156⎥ ⎤
e) f*B ⎢⎢−00.⎣7396 0⎦.3906 0.7205 ⎥ ⎥
.0055 − 0.0203 0.0006 ⎥
f) A*B ⎢⎢0.7830 0.5840 − 0.5095⎥⎦

⎢⎣ 0.1288 0.1933 0.0825 ⎥⎦
Outras funções

exp poly polinômio


exponencial
característico
log logaritmo natural det determinante

log10 logaritmo base 10 abs módulo

inv inverte matriz sqrt raiz quadrada

max real parte real de número


máximo valor
complexo
min imag parte imag. de núm.
mínimo valor
complexo
mean conj conj. dos núm.
média aritmética
complexos
std desvio padrão round arredonda num.
Polinômios no MATLAB

„ Polinômios no MATLAB são manipulados como


vetores.

„ Os coeficientes de um polinômio são armazenados


como elementos um vetor linha, começando pelo
coeficiente do termo de maior grau.

„ Exemplo: p ( x) = x3 + 10 x 2 − 29

>> p = [1 10 -29];
Funções relacionadas a polinômios

roots acha raízes polyder acha derivada

deconv divide conv multiplica

avalia
polyval polyfit ajusta curva
polinômio
Exemplos com funções
de polinômios
p = x +10x − 2x − 29
3 2 >> roots(p)
ans =
>> p = [1 10 -2 -29] -9.9064
p= -1.7584
1 10 -2 -29 1.6648

>> polyder(p)
ans =
3 20 -2
Operadores relacionais

Símbolo Operador

== igual

~= diferente

> maior

< menor

>= maior ou igual

<= menor ou igual


Operadores lógicos

Símbolo Operador
& e
| ou
~ não
xor ou exclusivo
Exemplos com operadores
lógicos e relacionais
>> 2 + 2 == 4 >> a = [1 2 3; 4 5 6]
ans = ans =
1
123
>> 10 > 100
456
ans =
0 >> a >= 4
>> A = [1 2; 3 4]; B = 2*ones(2); ans =
>> A==B 000
ans = 111
0 1
0 0
Exemplos com operadores
lógicos e relacionais
>> x = [ 1 0; 0 1]; y = [ 1 1; 0 0];
>> x & y
ans =
1 0
0 0
>> x | y
ans =
1 1
0 1
>> xor (x;y)
ans =
0 1
0 1
Programação em MATLAB

„ expressa problemas mais extensos;


„ agiliza os comandos mais digitados;
„ é uma linguagem interpretada;
„ pode ser criada a partir de qualquer editor de texto;
„ apresenta formato livre como C, Fortran ou outras
linguagens.
Controladores de fluxo

„ if : cria caminhos alternativo no programa

if expressão 1
instruções
elseif expressão 2
instruções
else
instruções
end
Controladores de fluxo
„ Exemplo com if

x=rand(1); y=rand(1);
Resposta:
if x < y temp =
temp = y 6
y = x y =
x = temp 3
x =
end
6
Controladores de fluxo
Resposta:
„ Exemplo com if :
Resposta:
ans =
temp 1=
x eh 0.7439
maior que y
x=rand(1); y=rand(1);
xy ==
if x < y 0.5744
0.8386
temp = y; yx ==
y = x; 0.7439
0.2584
x = temp;
else
disp('x eh maior que y')
x, y
end
Controladores de fluxo

„ for : permite que um comando ou um grupo de


comandos se repitam

for variável = expressão


instruções
end
Controladores de fluxo

„ Exemplos com for :

for i = 1:5
x(i) = 2*i;
end
x

Resposta:
x =
2 4 6 8 10
Controladores de fluxo

n=2; a = eye(n);
for j = 2:n
for i = 1:j-1 % incremento=1
a(i,j) = i/j;
a(j,i) = i/j;
end
end
disp(a) Resposta:
1.0000 0.5000
0.5000 1.0000
Controladores de fluxo

„ while : permite que um ou mais comandos sejam


repetidos enquanto a expressão de controle for
verdadeira

while (expressão de controle)


instruções
end
Controladores de fluxo

„ exemplo com while

i=0;
while ( sqrt(i) < 5 )
i = i+1;
end
sqrt(i)

Resposta:
i =
1 2 3 4
Funções auxiliares no
controle de fluxo

„ input – recebe dados através do teclado, que podem


ser ou não armazenados em uma variável

„ break – encerra um laço mais interno controlado pelo


comando for

„ pause – pára a execução do programa até que uma


nova tecla seja pressionada
Arquivos .m

„ podemos criar novas funções ou scripts


„ MATLAB possui um editor próprio e um debugger
„ comentários começam por %
„ ao se criar uma função ou script ela dever ser
definida no path
Arquivos .m

„ scripts : executam os argumentos diretamente,


automatizando uma série de comandos

„ função : argumentos podem ser passados para a


função, havendo uma manipulação de variáveis

function [res1, res2, ...] = nome_da_função (arg1,arg2, ...)


% comentário para help
lista de procedimentos da função
return
Exemplo de função.m
% Exibe o gráfico de y = ax^2 + bx + c em [-5,5]
clear
aux = 's';
while aux == 's’
clc
a=input('a ='); b=input('b ='); c=input('c =');
x = -5:0.1:5;
y = a*x.^2 + b*x + c;
plot(y)
pause
figure(1)
pause
close
aux=input('Exibir outro grafico? (s/n) ==> ','s');
end
Exemplo de função.m
„ arquivo: fun.m
%..............................
% avalia a seguinte função
% f(x)=x*x-cos(x)
%..............................
function f = fun(x)
f = x*x-cos(x);
return
Exemplo de função.m
„ zero.m
%.......................... k = 0; % conta núm. de iterações
% Aplica o método da eps = 0.01;
% bisseção para encontrar while( abs(b-a) >= 2*eps )
% um zero de alfa = (a + b)/2;
% f(x)= x*x - cos(x) if ( fun(alfa) > 0)
% num intervalo [a,b], tal b = alfa;
que f(a)*f(b) < 0.
else
%..........................
a = alfa;
end
function z = zero(a,b) k = k+1;
% testa intervalo end
if ( fun(a)*fun(b) >= 0 ) display('A raiz da função é: ' );
display('O intervalo de .. (a+b)/2
.. busca da raiz está errado.')
stop display(‘número de iterações: ');
end k
return
Gráficos no MATLAB

„ existem muitas funções para gerar gráficos 2D e 3D

„ os gráficos podem ser armazenados em arquivos,


coloridos ou em preto e branco
Gráficos 2D

„ Pode-se desenhar gráficos simples como y = f(x).


„ Dados os vetores x e y, o gráfico é construído ligando-se
os pontos (x(i),y(i)).
>> x = [1.5 2.2 3.1 4.6 5.7 6.3 9.4];
>> y = [2.3 3.9 4.3 7.2 4.5 3.8 1.1];
>> plot(x,y) 8

1
1 2 3 4 5 6 7 8 9 10
Características dos Gráficos

cores das linhas tipos de linhas


r vermelho -- tracejada
g verde . ponto
b azul o circulo
w branco x x
k preto + cruz
y amarelo * estrela
m roxo : pontilhada
Gráficos no MATLAB
„ Exemplo de gráfico y = f(x)
» x = [0:5];
» y = x.^2; 25

» plot(x,y,‘ r : ’)
20

x y = x² 15

0 0
1 1 10

2 4
5

3 9
4 16 0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5

5 25
Gráficos 3D

plot3 curvas 3D

surf,surfc,surfl superfícies 3D

mesh,meshc,meshz linhas em perspectiva 3D

contour curvas de nível


Gráficos no MATLAB

„ Exemplo de um gráfico 3D

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

35

30

25

20

15

10

0
1

0.5 1
0.5
0
0
-0.5
-0.5
-1 -1
Gráficos no MATLAB
> t = 0:pi/50:10*pi;
> plot3(sin(t),cos(t), t);
> [X,Y] =meshgrid (-8:0.5:8,-8:0.5:8);
> r =sqrt(X.^2+Y.^2)+eps;
> Z = sin(r)./r;
> subplot(221)
> mesh(X,Y,Z);
> subplot(222)
> surf(X,Y,Z);
> subplot(223)
> meshc(X,Y,Z)
> subplot(224)
> contour(X,Y,Z)
Animação de gráficos

surf(peaks)
axis vis3d
for i=1:36
camorbit(10,0,'camera')
drawnow
end
Animação de gráficos

surf(peaks)
axis vis3d
for i=1:36
camorbit(10,2,'data',[0 1 0])
drawnow
end
Animação de gráficos

surf(peaks)
axis vis3d off
for x = -200:5:200
campos([x,5,10])
drawnow
end
Animação de gráficos

surf(peaks);
axis vis3d
xp = linspace(-150,40,50);
xt = linspace(25,50,50);
for i=1:50
campos([xp(i),25,5]);
camtarget([xt(i),30,0])
drawnow
end
Help MATLAB on-line

„ http://www.mathworks.com/access/helpdesk/help/tec
hdoc/ref/ref.shtml

„ http://www.mathworks.com/access/helpdesk/help/tec
hdoc/matlab.shtml

Вам также может понравиться