Escolar Documentos
Profissional Documentos
Cultura Documentos
Professores:
To Revoredo teorevoredo@uerj.br
Michel Tcheou mtcheou@uerj.br
Referncia Bibliogrfica
www.mathworks.com
2
Sumrio
Introduo
Matlab Bsico
Programao em Matlab
Matemtica Simblica
Interfaces grficas e Toolbox
3
Introduo
4
Introduo
Vantagens
Facilidade de Uso
Independncia de Plataforma
Funes Predefinidas
Interface Grfica de Usurio
Compilador MATLAB
Desvantagens
Linguagem Interpretada
Custo
7
Introduo
O que mais?
Lgica fuzzy Mapas
Redes Neurais Controle Robusto
Processamento de Animao
sinais Simulao de
Aquisio de dados sistemas dinmicos
Banco de Dados (Simulink)
Finanas Etc
8
Introduo
Tela principal
9
Introduo
Tela principal
10
Introduo
Informaes do sistema
computer Tipo de computador onde
o MATLAB est operando
version Verso do MATLAB
ver Detalhes da verso do MATLAB e
dos toolboxes
license Apresenta a licena do
produto
11
MATLAB BSICO
12
Sumrio Matlab Bsico
Nmeros e formatos
Variveis e funes
Vetores
Matrizes
Operaes
Grficos
13
Nmeros e formatos
14
Nmeros e formatos
15
Nmeros e formatos
Formatos
Comando pi Comentrios
Exemplo:
>> distancia = 100
distancia =
100
>> tempo = 3
tempo =
3
>> velocidade_media = distancia /
tempo
velocidade_media =
33.3333
18
Variveis e funes
Funes pr-definidas
a = zeros(2);
b = zeros(2,3);
c = [1 2; 3 4];
d = zeros(size(c));
20
Variveis e funes
21
Variveis e funes
22
Variveis e funes
23
Variveis e funes
Variveis especiais
ans - Nome de varivel padro usado para
resultados.
pi - 3.1416
eps - Menor nmero que somado a 1, cria
um nmero maior do que 1.
inf - Infinito.
NaN - No nmero.
iej - 1
realmin - menor nmero real positivo
realmax - maior nmero real positivo
25
Variveis e funes
Funes elementares
abs(x) - Valor absoluto
acos(x) - Arco cosseno
asin(x) - Arco seno
atan(x) - Arco tangente
cos(x) - Cosseno
exp(x) - Exponencial (ex)
log(x) - Logaritmo natural (base e)
log10(x) - Logaritmo na base 10
sin(x) - Seno
sqrt(x) - Raiz quadrada
tan(x) - Tangente
26
Variveis e funes
Exemplos
>> sin(pi/2)
ans =
1
>> cos(pi/4)^2
ans =
0.5000
>> asin(1)*180/pi
ans =
90
27
Variveis e funes
Recuperando comandos
Para evitar redigitao, o Matlab
armazena todos os comandos do
usurio durante uma sesso.
Para acessar os comandos anteriores
basta pressionar a tecla (seta para
cima) seguidas vezes at encontrar o
comando desejado.
O comando ento pode ser editado e
executado novamente. 28
Variveis e funes
Ajuda
Ajuda e informao no MatLab podem
ser obtidas de vrias formas
Na linha de comando usando help tpico
Numa janela de ajuda separada no menu
de help
No helpdesk MatLab mantido no disco ou
CD-ROM ou na internet
29
Variveis e funes
Ajuda
Ajuda na linha de comandos
>>help pi
PI 3.1415926535897....
PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....
>>help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
>>lookfor fft
30
Variveis e funes
funo disp(str)
>> str = ['The value of pi = ' num2str(pi)];
>> disp (str);
funo fprintf(format,data)
>> fprintf('The value of pi is %f \n',pi)
Formatao Resultados
%d Exibe valor como inteiro
%e Exibe valor no formato cientfico
%f Exibe valor como ponto flutuante
\n Muda de linha 31
Variveis e funes
Salvando sees
Para salvar uma sesso do MATLAB,
deve-se usar a opo Save Workspace
As no menu File.
Para abrir uma sesso salva
anteriormente deve-se utilizar a opo
Open no menu File.
possvel usar os comandos load e
save
32
Vetores
33
Vetores
Definio de vetores
>> A = [0 1 2 3 4 5]
A=
0 1 2 3 4 5
Outra forma de se criar um conjunto:
>> A = 1:1:5
A=
1 2 3 4 5
O primeiro valor o valor inicial, o segundo o
saltoe o terceiro o valor final.
34
Vetores
35
Vetores
36
Vetores
ans =
1
>> Z(2)
ans =
4
>> Z(6)
ans =
9 16 25
>> Z(2:4)
ans =
4 9 16
38
Matrizes
39
Matrizes
Definio de matrizes:
>> M = [1 0 -1; 2 3 4; -7 1 3]
M=
1 0 -1
2 3 4
-7 1 3
Os elementos da linha so separados por
espao em branco e as linhas so
separadas por ponto-e-vrgula.
40
Matrizes
Mx =
2 0 -1
-3 3 4
1 1 3
41
Matrizes
42
Matrizes
43
Operaes Aritmticas
Operadores aritimticos
Forma Geral: A op B
+ Soma Estrutural e Matricial
- Subtrao Estrutural e Matricial
* Multiplicao Matricial
/ Diviso Matricial Direita
\ Diviso Matricial Esquerda
^ Expoente Matricial
Operador de Transposio
44
Operaes Aritmticas
Operadores aritmticos
1 0 - 1 2
A B
2 1 0 1
3
C D5
2
45
Operaes Aritmticas
Operadores aritmticos
A+B A+C
0 2 Operao ilegal
2 2
AB A+D
2 -2 6 5
2 0 7 6
46
Operaes Aritmticas
Operadores aritmticos
A*B A .* B
-1 2 -1 0
2 5 0 1
A*C A .* C
3 Operao ilegal
8
47
Operaes Aritmticas
Operadores aritmticos
A/B A ./ B
-1 2 -1 0
-2 5 Inf 1
A\B A .\ B
-1 2 -1 Inf
2 -3 0 1
48
Operaes Aritmticas
Precedncia Operao
49
Operaes Aritmticas
50
Operaes Relacionais
Operadores relacionais
51
Operaes Relacionais
Operadores relacionais
Os operadores <, <=, > e >= so usados para
comparar a parte real dos operandos.
Os operadores == e ~= so usados para
comparar a parte real e imaginria dos operandos.
52
Operaes Relacionais
Operadores relacionais
Expresso Resultado
5>3 1
AC > BA 01
a>b 10
1 + j <= 2 + 3*j 1
x >= [3 8] 10
a>c 10
2 + j == 1+ j 0
5 + j ~= 2 + j 1
a = [2 1] b = [ 1 1 ] c = [ 0 2 ] x = [ 4 2] 53
Operaes Lgicas
Operadores lgicos
Operao Lgica Binria Operao Lgica Unria
A op B op A
Operador Operao
& E lgico
l OU lgico
xor Ou exclusivo lgico
~ No lgico
54
Operaes Lgicas
Operadores lgicos
Entradas e ou xor no
A B A&B AlB xor(A,B) ~A
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
55
Operaes Lgicas
Operadores lgicos
Precedncia dos operadores
1. Os operadores aritmticos so avaliados primeiro.
2. Os operadores relacionais so avaliados da esquerda
para a direita.
3. Todos os operadores ~ so avaliados.
4. Todos os operadores & so avaliados.
5. Todos os operadores I so avaliados.
Expresso Resultado
~A 0
AlB 1
BlC 1
3>4&1 0
3 > (4 & 1) 1
~C 0
AlB&C 1
A&C 1
B&C 0
A = 1, B = 0 e C = -10
57
Exerccios
Exerccios
1. Para as matrizes A e B, definidas a baixo, execute as seguintes
operaes e interprete os resultados.
1 2 3 3 1 0
A 0 1 2 B 0 1 1
3 1 1 3 7 0
a) A+B b) A*B c) A.*B d) A.^2
e) A^2 f) A*A g) inv(A) h) inv(A)*A
i) A\B j) A/B k) A/B eye(3)
l) A*inv(B) eye(3)
58
Exerccios
Exerccios
2. Utilizando os comandos zeros, ones e eye, construa as seguintes
matrizes
0 0 0 0
0 1 1 1
0 0 0 1 1 0
A B 1 1 1 C D
0 0 0 0 1 0 1
0 1 1 1
0 0 0
59
Grficos
60
Grficos
61
Grficos
62
Grficos
Resultado:
63
Grficos
Linhas de grade
>> grid
64
Grficos
66
Grficos
Ferramentas de edio
67
Grficos
Edio de desenhos
68
Exerccios
Sequncia rampa
Uma sequncia rampa transladada com declive B
definida como g (n) B(n n0 )
Sequncia rampa unitria e sequncias de rampa
transladada
Cdigo MATLAB :
n=-10:1:20;
f=2*(n-10);
stem(n,f);
69
Exerccios
70
Exerccios
72
Exerccios
Sequncia senoidal
Uma sequncia senoidal pode ser descrita como:
2n
f (n) A cos
N
Onde A um nmero real positivo (amplitude), N
o perodo, e a a fase.
Exemplo:
A = 5, N = 16
e a / 4.
73
Exerccios
Sequncia senoidal
Cdigo MATLAB:
1. n=-20:1:20;
2. f=5*[cos(n*pi/8+pi/4)];
3. stem(n,f);
74
Exerccios
75
Exerccios
Exemplo:
A = 10, N = 16, a = 0.9
/ 4.
76
Exerccios
77
Exerccios
78
Grficos
Grficos 3D
Grficos de Linhas - Funo plot3
>> X = linspace(0, 10*pi, 300);
>> Y = sin(X);
>> Z = cos(X);
>> plot3(X,Y,Z)
>> grid
79
Grficos
Grficos 3D
Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20);
>> [X, Y] = meshgrid(v,v);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z)
Utilizamos a funo meshgrid para gerar
X e Y como matrizes com valores repetidos
que so utilizadas para gerar a matriz Z.
80
Grficos
Grficos 3D
Grficos de Superfcies - funco mesh
>> v = linspace(-10,10,20);
>> [X, Y] = meshgrid(v,v);
>> Z = X.^2 + Y.^2;
>> mesh(X,Y,Z)
Utilizamos a funo meshgrid para gerar X e Y
como matrizes com valores repetidos que so
utilizadas para gerar a matriz Z.
81
Grficos
Resultado
82
Grficos
Grficos 3D
Funo mesh - superfcies em rede
Funo surf - superfcies coloridas (opacas)
Funo surfl - superfcies coloridas com uma
fonte de luz.
Exemplo 1:
>> surf(X,Y,Z)
Exemplo 2:
>> colormap(gray)
>> surfl(X,Y,Z)
83
Grficos
Resultado
84
Grficos
Rotao em grficos 3D
Para rotacionar um grfico 3D primeiro clique no
boto presente na janela do grfico.
Aps isto, clique sobre o grfico e mantenha o
boto do mouse pressionado.
Uma caixa ir aparecer indicando a direo do
grfico.
Agora, basta movimentar o mouse para ajustar a
posio desejada do grfico.
85
Grficos
Superfcies de contorno
Funo contour - Gera superfcies de
contorno.
>> contour(X,Y,Z,30)
Os trs primeiros parmetros so as
matrizes com os dados para os grficos. O
quarto parmetro o nmero de
contornos.
86
Grficos
Resultado
87
Grficos
Superfcies de contorno
Funo pcolor - Grfico de pseudocores
>> pcolor(X,Y,Z)
88
PROGRAMAO EM MATLAB
89
Sumrio Programao em
Matlab
Projeto de programa
Arquivo de comando
Estruturas de controle
Funes definidas pelo usurio
90
Projeto de Programa
91
Projeto de Programa
Projeto Top-down
Incio
Projete o algoritmo
Algoritmo
Srie de aes executadas em uma ordem
especifica.
Pseudocdigo
Linguagem artificial e informal de representar o
cdigo de um programa.
til para desenvolver algoritmos que sero
convertidos em programas estruturados no
MATLAB.
93
Projeto de Programa
Exemplo de Pseudocdigo
Cdigo MATLAB:
temp_f = input('Enter the temperature in degrees Fahrenheit: ');
temp_k = (5/9) * (temp_f - 32) + 273.15;
fprintf('%6.2f degrees Fahrenheit = %6.2f kelvin.\n,temp_f,temp_k);
94
Arquivos de comando
95
Arquivos de comando
Exemplos:
97
Arquivos de comando
Exemplo de script-file.
% script-file: circulo.m
% Este programa calcula a rea de um circulo
raio = 2.5;
area = pi*raio^2;
fprintf('Area do circulo = %.3f ', area);
98
Arquivos de comando
99
Arquivos de comando
100
Arquivos de comando
101
Estruturas de controle
Controle de Fluxo
O controle de fluxo um recurso que permite que resultados
anteriores influenciem operaes futuras. Como em outras
linguagens, o MATLAB possui recursos que permitem o controle
de fluxo de execuo de comandos, com base em estruturas
de tomada de decises.
102
Estruturas de controle
Simbologia
Inicio e fim de uma estrutura de uma controle
Smbolo de deciso
103
Estruturas de controle
if
Estrutura de seleo para escolha de cursos de ao
especficos.
A estrutura de seleo if executa uma ao indicada
s quando a condio true (Verdadeira); caso
contrrio, a ao saltada.
104
Estruturas de controle
if
Testa a condio
Verdadeira
Condio Executa uma ao
Falsa
105
Estruturas de controle
Pseudocdigo
Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado
Cdigo no Matlab
if nota >= 7
fprintf(Aprovado);
end
106
Estruturas de controle
Verdadeira
Falsa
Condio
Executa outra
Executa uma ao
ao
107
Estruturas de controle
Pseudocdigo
Se a nota do estudante for maior ou igual que 7.0
Imprima Aprovado seno Imprima Reprovado
Cdigo no Matlab
if nota >= 7
fprintf(Aprovado);
else
fprintf(Reprovado);
end
108
Estruturas de controle
109
Estruturas de controle
switch
Permite que um programador selecione um
bloco de cdigo a ser executado com base no
valor de um nico inteiro, caractere ou
expresso lgica
110
Estruturas de controle
Exemplo
switch (value)
case {1,3,5,7,9}
disp('The value is odd.');
case {2,4,6,8,10}
disp('The value is even.');
otherwise
disp('The value is out of range.');
end
112
Estruturas de controle
113
Estruturas de controle
while
Testa a condio
Verdadeira
Condio Executa uma ao
Falsa
115
Estruturas de controle
116
Estruturas de controle
n: nmero de iteraes do lao for
cont: varivel de controle
cont = 2
cont = 3
Verdadeiro
cont <= n Corpo do lao cont = cont + 1
Falso
117
Estruturas de controle
for k = 1:10
soma = soma + k;
end
118
Estruturas de controle
119
Estruturas de controle
120
Estruturas de controle
for X while
while: utilizado para repetir um trecho de cdigo
quando desconhecido o nmero de iteraes do
lao.
for: utilizado para repetir um trecho de cdigo
quando conhecido o nmero de iteraes do
lao.
121
Estruturas de controle
Break
Usada para controlar a operao dos laos for e while
Encerra a execuo do lao e passa o controle para a
prxima declarao logo aps o fim do lao.
122
Estruturas de controle
Uso do break
for k = 1:5
if k == 3;
break;
end
fprintf(k = %d\n, k);
end
disp(Fim do lao!);
123
Estruturas de controle
Uso do break
for k = 1:5 Sada:
if k == 3; k=1
break; k=2
end Fim do lao!
fprintf(k = %d\n, k);
end
disp(Fim do lao!);
124
Estruturas de controle
Continue
Usada para controlar a operao dos laos for
e while
Termina a passagem corrente pelo lao e
retorna o controle para o incio do lao.
125
Estruturas de controle
Uso do Continue
for k = 1:5
if k == 3;
continue;
end
fprintf(k = %d\n, k);
end
disp(Fim do lao!);
126
Estruturas de controle
Uso do Continue
for k = 1:5 Sada:
if k == 3; k=1
continue; k=2
end k=4
fprintf(k = %d\n, k); k=5
end Fim do lao!
disp(Fim do lao!);
127
Estruturas de controle
mdia:
desvio-padro:
128
Srie de Fourier Complexa
129
Srie de Fourier Complexa
131
Srie de Fourier Complexa
132
Srie de Fourier Complexa
133
Srie de Fourier Complexa
figure(1)
hold on
plot(t,funcao)
134
Funes definidas pelo usurio
135
Funes definidas pelo usurio
Benefcios
Teste independente das subtarefas;
Cdigo reutilizvel;
Isolamento de efeitos colaterais indesejados;
136
Funes definidas pelo usurio
Forma geral
function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...)
% H1 comment line
% Other comment lines
...
(Executable code)
...
(return)
(end)
137
Funes definidas pelo usurio
% Calculate distance.
distance = sqrt((x2-x1).^2 + (y2-y1).^2);
138
Funes definidas pelo usurio
139
Funes definidas pelo usurio
140
Funes definidas pelo usurio
142
Matemtica Simblica
143
Matemtica Simblica
Operaes Matemticas
>> syms x
>> x+2*x
>> x*x - 5*x^2
>> sqrt(x^2)
>> cos(pi-x)
144
Matemtica Simblica
145
Matemtica Simblica
Grficos
>> ezplot(sin(3*x)+2*x)
146
Matemtica Simblica
Grficos
>> ezplot(sin(3*x)+2*x,[1 2])
147
Matemtica Simblica
Grficos
>> ezsurf(2*x^2-3*y^2-4)
148
Matemtica Simblica
Limite
>> syms x
>> limit(sin(x-1)/(1-x),x,1)
Srie
soma dos 100 primeiros termos de
>> symsum((4*n+1)/(n+3),n,1,100)
149
Matemtica Simblica
Derivada
>> syms x
>> diff(sin(2*x))
150
Matemtica Simblica
Derivadas Parciais
>> syms x y
>> g = x*y + x^2
151
Matemtica Simblica
Integral
>> syms x
Integral de
>> int(6*x^3-2*x^2+1) % Indefinida
>> int(6*x^3-2*x^2+1,1,2) % Definida
>> int(exp(-x),0,inf)
152
Matemtica Simblica
Integral
>> syms x a b
>> f = x/(a*x+b)
>> pretty(f)
>> g = int(f)
>> pretty(g)
>> latex(g)
>> ccode(g)
>> fortran(g)
153
TOOLBOX
154
Toolbox de Processamento
de Imagens
155
Toolbox de Processamento
de Imagens
156
Toolbox de Processamento
de Imagens
I = imread('lena.jpg');
Filtrando Imagens subplot(2,2,1);
imshow(I); title('Imagem Original');
%Criando um filtro
H = fspecial('motion',20,45);
%Filtrando a imagem com o filtro especificado
MotionBlur = imfilter(I,H,'replicate');
subplot(2,2,2);
imshow(MotionBlur);title('Motion Blurred Image');
H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate');
subplot(2,2,3);
imshow(blurred); title('Blurred Image');
H = fspecial('unsharp');
sharpened = imfilter(I,H,'replicate');
subplot(2,2,4);
imshow(sharpened); title('Sharpened Image'); 157
Toolbox de Processamento
de Imagens
158
Toolbox de Processamento
de Imagens
Inserindo um Rudo na imagem.
n = imnoise(I, 'gaussian');
imshow(n)
159
Toolbox de Processamento
de Imagens
160