IntroduçãoIntrodução aoao MATLABMATLAB
LeandroLeandro GazoniGazoni FernandaFernanda RauppRaupp
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
|
AnoAno |
VersãoVersão |
ResumoResumo |
|
1978 |
Classic MATLAB |
Versão em Fortran |
|
1984 |
MATLAB 1 |
Reescrito em C |
|
1985 |
MATLAB 2 |
30% a mais de funções e comandos |
|
1987 |
MATLAB 3 |
+ rápido, gráficos coloridos |
|
1992 |
MATLAB 4 |
Animação, inteface, debugger, MS-Win |
|
1997 |
MATLAB 5 |
OO, álgebra linear, eq. diferenciais |
|
2000 |
MATLAB 6 |
|
LAPACK, ARPACK, 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
matriz propriamente: matriz m x n
ou
n x 1
a dimensão de matrizes e vetores é automática
Representação de variáveis
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 =
1
2
3
4
5
Vetor Linha
>>B = [ 1; 2; 3; 4; 5 ] ou >>B = A’ B =
1
2
3
4
5
Vetor Coluna
Exemplos de declarações de variáveis
>> A = [ 1 2 3; 4 5 6; 7 8 9 ]
A =
|
1 |
2 |
3 |
|
4 |
5 |
6 |
|
7 |
8 |
9 |
Matriz
>> A = A'
A =
Matriz Transposta
|
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 ]; >> B = [ 5 6; 7 8 ];
A
=
⎡
⎢ ⎣
1
3
2
4
⎤
⎦ ⎥
B
=
⎡
⎣ ⎢
5
7
6
8
⎤
⎦ ⎥
>> C = A + B C =
>> C2 = A*B C2 =
|
6 |
8 |
19 |
22 |
|
10 |
12 |
43 |
50 |
>> C1 = A – B C1 =
|
-4 |
-4 |
|
-4 |
-4 |
>> C3 = A/B C3 =
( = A*inv(B) )
|
3.0000 |
-2.0000 |
|
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 ]; >>B = [ 5 6 ; 7 8 ];
A
=
⎡
⎢ ⎣
1
3
2
4
⎤
⎦ ⎥
B
=
⎡
⎣ ⎢
5
7
6
8
⎤
⎦ ⎥
>> C = A.*B C =
>> C = A./B C =
|
5 |
12 |
0.2000 |
0.3333 |
|
21 |
32 |
0.4286 |
0.5000 |
>> C = A.^B C =
>> C = A.^3 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
>> A (3) ans =
B
⎡
⎢
= ⎢
⎢
⎢
⎣
5
1
4
7
a
11
a
21
a
31
2
5
8
a
12
a
22
a
32
3
6
9
7
a
a
a
13
23
33
⎤
⎥
⎥
⎥
⎦ ⎥
9
11
13
15
17]
>> B (2,3) ans =
6
A referência deve ser sempre (( linha,linha, coluna)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 = [A;a] A =
A => matriz 3x3
|
1 |
2 |
3 |
|
|
4 |
5 |
6 |
|
|
7 |
8 |
9 |
|
|
A => matriz 4x3 |
|||
Manipulação de matrizes
É possível extrair matrizes de matrizes;
A
⎡
⎢
⎢
= ⎢
⎢
⎣
1
4
7
10
⎤
⎥
⎥
⎥
⎥
⎦
2
3
8
20
9
30
Acessando os elementos na 2a e 3a colunas da 2a linha de A
>> x = A ( 2, [ 2 ou >> x = A ( 2, 2:3)
x =
5
6
3 ] )
Manipulação de matrizes
|
1 |
2 |
3 ⎤ |
|
|
⎥ ⎥ ⎥ ⎥ |
|||
|
10 |
20 |
30 ⎦ |
|
⎡
⎢
⎢
A = ⎢
⎢ ⎣
Acessando os elementos da 2a e 3a linhas
>> x = A ([2
ou >> x = A (2:3, 1:3)
3] , [1 2 3 ])
x =
|
4 |
5 |
6 |
|
7 |
8 |
9 |
Manipulação de matrizes
Podemos acessar diretamente elementos da diagonal de uma matriz;
A
Vamos acessar a diagonal da matriz A
>> x = diag(A) x =
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
=
» a = ones(2)
a
=
|
0.3840 |
0.0928 |
1 1 |
|
0.6831 |
0.0353 |
1 1 |
» a = eye(2)
a
=
» a = zeros(2)
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 |
cossecante |
acot |
arco-cotangente |
Variáveis e Comandos Permanentes
|
ans |
resposta mais recente |
flops |
contador de operações matemáticas |
|
eps |
precisão da máquina |
NaN |
Not a Number |
|
realmax |
maior número de ponto flutuante |
inf |
Infinito |
|
realmin |
menor número de ponto flutuante |
computer |
tipo de computador |
|
pi |
3,141592653 |
who |
lista de variáveis 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
c = 5*pi
d = (3, 5.4, 7.43) t
e = (-2.234, 0, pi/2) t
B
⎡
⎢
= ⎢
⎢
⎣
5
32
0
34
4.65
13
⎤
⎥
⎥ 43 ⎥ ⎦
87
74
−
f
⎡−
⎢
= ⎢
⎢
⎣
9.81
0
1
⎤
⎥
⎥
⎥ ⎦
A
⎡ 0.32
⎣
1e2
9
⎢
= ⎢
⎢
2.5
+
4
51
pi
2 ⎤
⎥
⎥
⎥ ⎦
12
24
Exercícios:
a)
b)
c)
d)
e)
f)
Verifique os seguintes resultados:
Outras funções
|
exp |
exponencial |
poly |
polinômio |
|
característico |
|||
|
log |
logaritmo natural |
det |
determinante |
|
log10 |
logaritmo base 10 |
abs |
módulo |
|
inv |
inverte matriz |
sqrt |
raiz quadrada |
|
max |
máximo valor |
real |
parte real de número complexo |
|
min |
mínimo valor |
imag |
parte imag. de núm. complexo |
|
mean |
média aritmética |
conj |
conj. dos núm. 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:
3
p ( x ) = x +10 x
>> p = [1
10 -29];
2
− 29
Funções relacionadas a polinômios
|
roots |
acha raízes |
polyder |
acha derivada |
|
deconv |
divide |
conv |
multiplica |
|
avalia |
|||
|
polyval |
polinômio |
polyfit |
ajusta curva |
Exemplos com funções de polinômios
3
p = x +10 x
2
− 2 x − 29
>> p = [1 p =
1
10
-2 -29]
10 -2 -29
>> roots(p) ans =
-9.9064
-1.7584
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 ans =
1
>> 10 > 100 ans =
>> A = [1 >> A==B
0
2; 3 4]; B = 2*ones(2);
ans =
|
0 |
1 |
|
0 |
0 |
>>
a = [1 2 3; 4 5 6]
ans =
1 2 3
4 5 6
>> a >= 4 ans =
0 0 0
1
1
1
Exemplos com operadores lógicos e relacionais
>> x = [ 1 0; 0 1]; >> x & y ans =
|
1 |
0 |
|
0 |
0 |
>> x | y ans =
1
0
1
1
>> xor (x;y) ans =
0
0
1
1
y = [ 1 1; 0 0];
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); if x < y temp = y
|
y |
= x |
|
x |
= temp |
end
Resposta:
temp =
|
6 |
||
|
y |
= |
|
|
3 |
||
|
x |
= |
|
|
6 |
||
Controladores de fluxo
|
Resposta: |
|||
|
Exemplo com if : |
Resposta: ans = |
||
|
temp = 1 |
|||
|
x=rand(1); y=rand(1); if x < y temp = y; |
x 0.7439 eh maior que y |
||
|
y x = = |
|||
|
0.5744 0.8386 |
|||
|
x y = = |
|||
|
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 a(i,j) = i/j; a(j,i) = i/j;
end
% incremento=1
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 = end sqrt(i)
i+1;
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,
% comentário para help lista de procedimentos da função
]
= nome_da_função (arg1,arg2,
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
|
% |
|
|
% |
Aplica o método da |
|
% |
bisseção para encontrar |
|
% |
um zero de |
|
% |
f(x)= x*x - cos(x) |
|
% |
num intervalo [a,b], tal que f(a)*f(b) < 0. |
|
% |
|
function z = zero(a,b) % testa intervalo if ( fun(a)*fun(b) >= 0 ) display('O intervalo de busca da raiz está errado.') stop end
k = 0; % conta núm. de iterações eps = 0.01; while( abs(b-a) >= 2*eps ) alfa = (a + b)/2; if ( fun(alfa) > 0)
b = alfa;
else
a = alfa;
end k = k+1; end display('A raiz da função é: ' );
(a+b)/2
display(‘número de iterações: ');
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)).
Características dos Gráficos
cores das linhas
r
g
b
w
k
y
m
vermelho
verde
azul
branco
preto
amarelo
roxo
|
tipos de linhas |
|
|
-- |
tracejada |
|
. |
ponto |
|
o |
circulo |
|
x |
x |
|
+ |
cruz |
|
* |
estrela |
|
: |
pontilhada |
Gráficos no MATLAB
Exemplo de gráfico y = f(x)
» x = [0:5];
» y = x.^2;
» plot(x,y,‘ r : ’)
25
20
15
10
5
0
|
x |
y = x² |
|
0 |
0 |
|
1 |
1 |
|
2 |
4 |
|
3 |
9 |
|
4 |
16 |
|
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)
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
Molto più che documenti.
Scopri tutto ciò che Scribd ha da offrire, inclusi libri e audiolibri dei maggiori editori.
Annulla in qualsiasi momento.