Você está na página 1de 101

Mini Curso

Alexandre Branquinho Rocha


mail: branquinho@sc.usp.br

Aula 1

Introduo
3/12/2009

Aplicaes:



Simulao
Jogos
Inteligncia Artificial
Redes Neurais





Instrumentao
Automao
Medicina

3/12/2009

Problemas Encontrados na
Engenharia







3/12/2009

Resolver equaes muito extensas


Resolver Sistemas
Resolver Integrais
Resolver Derivadas
Traar Grficos
Encontrar Valores de:
Mximo
Mnimo
Interseo
4

Iniciando o MATLAB

Selecione inicialmente o diretrio


onde sero salvos e executados
os programas criados!

3/12/2009

Janelas

WorkSpace mostra todas as


variveis utilizadas no
programa.

Command History mostra o


histrico dos comandos dados
ao MATLAB no Command
Window
3/12/2009

Variveis do Programa





Podem ter no mximo 31 caracteres;


Os nomes devem comear com LETRAS;
Caracteres de pontuao NO so
permitidos;
Distino de maisculas e minsculas;

Custo custo CuSto CUSTO ...


3/12/2009

Observaes


Para resolver integrais e derivadas


devemos fazer uso antes da funo
syms dizendo assim ao programa para
tratar como smbolo a varivel do
problema em questo.

3/12/2009

Observaes


Exemplo:
syms x y z

Dizemos assim ao programa para tratar


as variveis x, y e z como smbolos.


Para retornar os smbolos a forma de


variveis, devemos fazer uso da funo
sym2poly(_____)

3/12/2009

Resolvendo equaes extensas


3,87
x = 154 2 + x 2 963 x + 4625 784 x 2 + sen
+ 4 ,782 tg (0 .156 ) 12 x 3
1, 29

x=solve('x=154^2+x^2-963*x+4625784*x^2+sin(3.87*pi/1.29)+4.782*tan(0.156)12*x^3')
x=
5.2463512724443844694933368035694
-7.1012054591718830367351002104524
-63.395145813272501432758236593117

3/12/2009

10

Resolvendo um Sistema
x 2 y 2 2 x 390 = 0

2
2
x

y
9 = 0

[x,y]=solve('(x^2)*(y^2) - 2*x - 390 = 0','(x^2) - (y^2) - 9 = 0')


x=
[ 5]
[ 5]
y=
3/12/2009

[ 4]
[ -4]

Solues

(5 , 4 ) (5 , 4 )
Solues Reais

11

Resolvendo Integrais
f (x ) =

(sen (x )) dx

f (x ) =
36 cos (3 x

syms x y

f (x , y ) =

(x
10

4 ) dx

4 y dy dx

f=int((sin(x))^2)
f = -1/2*sin(x)*cos(x)+1/2*x
f=int(36*cos(3*x-pi/4),x,-pi/2,pi/2)
f = -12*2^(1/2)

3/12/2009

f=int(int(x^3-4*y,y,-5,3),x,0,10)
f = 20320

12

Resolvendo Derivadas
f (x ) =

d
(5 cos (5 x ))
dx
d d

f (x ) =
x 2 + 5 x 10

dx dx

d
(sen ( x y ))
f (x ) =
dx

syms x y

f= diff(5*cos(5*x))
f = -25*sin(5*x)
f= diff(diff(x^2+5*x-10))
f=2

3/12/2009

f= diff(sin(x*y),x)
f = cos(x*y)*y

13

Criao de Vetores

3/12/2009

14

Criao de Vetores

3/12/2009

15

Orientao de Vetores

O funciona
como operador de
transposio.

3/12/2009

16

Criao de Matrizes

3/12/2009

17

Criao de Matrizes

3/12/2009

18

Localizao Lgica

3/12/2009

19

Busca em Matrizes

Os Elementos maiores que 5


esto nas posies:
[3,1] ; [3,2] ; [2,3] ; [3,3]

3/12/2009

20

Dimenso de Vetores e Matrizes

3/12/2009

21

Inserindo Elemento na Matriz

3/12/2009

22

Traando Grficos
O comando plot do MATLAB pode
traar tanto um ponto com
coordenadas x e y definidos, mas
tambm pode traar curvas, onde x
e y entram no grfico na forma de
vetores.
 O comando plot3 utilizado para
gerar grficos 3D e segue o mesmo
princpio do comando plot


3/12/2009

23

Traando Grficos 2D

3/12/2009

24

Traando Grficos 3D

3/12/2009

25

Traando Superfcies

3/12/2009

26

Aula 2

Grficos
3/12/2009

27

SubGrficos

Seleciona o
Grfico no alto,
esquerda, de
uma grade 2
por 2 de
subgrficos
3/12/2009

28

SubGrficos

3/12/2009

29

SubGrficos

3/12/2009

30

SubGrficos

3/12/2009

31

SubGrficos

3/12/2009

32

Grficos Bidimensionais
Especializados

3/12/2009

33

Grficos Bidimensionais
Especializados

3/12/2009

34

Grficos Bidimensionais
Especializados

3/12/2009

35

Grficos Bidimensionais
Especializados

3/12/2009

36

Grficos em Escalas Diferentes

3/12/2009

37

Grficos em Escalas Diferentes

3/12/2009

38

Dicas Importantes - Grficos




Comando close:
close fecha a janela de Figure ativa
close(h) fecha a janela Figure com o handle h.
close all fecha todas as janelas Figure.

Comando clf:
clf limpa a janela Figure ativa.
clf reset limpa a janela Figure ativa e devolve
todas as propriedades, como hold, a seu estado
padro.

3/12/2009

39

Tipos de Grficos

3/12/2009

40

Tipos de Grficos

3/12/2009

41

Tipos de Grficos

3/12/2009

42

Tipos de Grficos

3/12/2009

43

Tipos de Grficos

3/12/2009

44

Tipos de Grficos

3/12/2009

45

Tipos de Grficos

3/12/2009

46

Exerccio - Tipos de Grficos




Criar a placa a seguir:

3/12/2009

47

Exerccio - Tipos de Grficos

3/12/2009

48

Exerccio - Tipos de Grficos

3/12/2009

49

Exerccio - Tipos de Grficos

3/12/2009

50

Resoluo - Tipos de Grficos


%Limpa Variaveis e Tela
 clear all;
 close all;
 clc;


%Cria Retangulo Azul


 xquad1=[-5 5 5 -5];
 yquad1=[-7.5 -7.5 7.5 7.5];


3/12/2009

51

Resoluo - Tipos de Grficos


%Cria Retangulo Branco
 xquad2=[-4 4 4 -4];
 yquad2=[-1.5 -1.5 6.5 6.5];


%Cria Cruz
 xcruz=[-0.5 0.5 0.5 3.5 3.5 0.5 0.5
-0.5 -0.5 -3.5 -3.5 -0.5 -0.5];
 ycruz=[-1 -1 2 2 3 3 6 6 3 3 2 2 -1];


3/12/2009

52

Resoluo - Tipos de Grficos


%Plota a Imagem
 fill(xquad1,yquad1,'b',xquad2,
yquad2,'w',xcruz,ycruz,'r');
 axis equal


3/12/2009

53

Resoluo - Tipos de Grficos


%Insere o Texto
 text(0,-4,'Hospital','Color',[1,1,1],
'FontSize',40,'FontWeight','bold',
'HorizontalAlignment','center')


grid on
 axis square off
 axis equal


3/12/2009

54

Comandos teis Para Grficos





figure(n)
Onde n o numero da figura
plot3(x1,y1,z1,'o',x2,y2,z2,'*',x3,y3,z3,'d');
Plota 3 grficos Tridimensionais (x1,y1,z1); (x2,y2,z2) e
(x3,y3,z3)








grid on;
Coloca Grid no Grfico
xlabel('Legenda do Eixo X');
ylabel('Legenda do Eixo Y');
zlabel('Legenda do Eixo Z');
title('Titulo do Grfico');
legend('Legenda Graf.1', 'Legenda Graf.2', 'Legenda
Graf.3');

3/12/2009

55

Exemplo de Grfico 2D com


Legenda de Eixos e Linhas e Titulo

3/12/2009

56

Aula 3

Programando
3/12/2009

57

Criando programas facilmente




Quem j tentou programar no Command


Window do MATLAB deve ter notado que no
fcil ficar repetindo uma srie de
comandos sempre que desejar alterar um
dado no programa.
Para resolver esse problema existe o Editor
de programas.
No menu File v em New e clique em M-File, ir
abrir o Editor de programas.
 Obs.: Ao salvar os programas e funes, deve-se
prestar ateno de salv-los todos em uma nica pasta
de trabalho, para facilitar sua chamada posterior.

3/12/2009

58

M-File

File

New

3/12/2009

M-File

59

Algumas Funes Bsicas:


if:

Se (if) acontecer determinado evento ir executar


determinada operao, seno(else), executar
outra;
for:
Repete um evento um determinado nmero de
vezes;
while: Repete um evento indeterminadas vezes at que
a condio estipulada seja atingida;
clc:
Limpa a tela principal;
clear: Limpa as variveis da rea de trabalho
(workspace);
input: Recebe dados do teclado;
fprintf:Mostra na tela uma frase determinada pelo
programador;
3/12/2009

60

Programa Exemplo 1:


Criar um Programa que receba 10 valores


do teclado e os plote em um grfico.
clear;
clc;

%Limpa as Variveis
%Limpa a Tela

x=[0 1 2 3 4 5 6 7 8 9];

%Cria um Vetor com 10 valores (0 a 9)

for a=1:1:10
%a varia de 1 at 10 de 1 em 1
y(a)=input('Digite o Valor:');%Entrada de Valores de Y
end
%Plota os valores de x e y
plot(x,y)
3/12/2009

61

Resultados do Programa 1:

3/12/2009

62

Operaes Relacionais

Operadores Lgicos:

3/12/2009

63

Estruturas (for
(for)
)
for x=0:1:10
A funo for ir repetir o loop do
ponto inicial 0, variando de 1 em 1
at atingir o valor final 10.

Operaes

3/12/2009

end

Sero executadas todas as


operaes existentes entre o for e
o end
No necessrio limitar com
chaves a rea em que o loop deve
agir, isso j feito
automaticamente pelo MATLAB.

64

Estruturas (while
(while)
)
while x<=100
A funo while ir repetir as
operaes enquanto a condio
(x100) no for satisfeita

Operaes

3/12/2009

end

Sero executadas todas as


operaes existentes entre o while
e o end
No necessrio limitar com
chaves a rea em que o loop deve
agir, isso j feito
automaticamente pelo MATLAB.

65

Estruturas (if
(if)
)
if x<=10
Operao 1
elseif x>10 & x<50
Operao 2
else
Operao 3
end

A funo if impe uma condio


para que se ocorra uma
determinada operao.
Ser executada a operao que
estiver de acordo com as
condies estipuladas
No necessrio limitar com
chaves a rea em que o loop deve
agir, isso j feito
automaticamente pelo MATLAB.

3/12/2009

66

Estruturas (switch
(switch)
)
metodo = 'Bilinear';
switch lower(metodo)
case {'linear','bilinear'}
disp('Metodo linear')
case 'cubico'
disp('Metodo cubico')
case 'nearest'
disp('Metodo nearest')
otherwise
disp('Metodo Desconhecido')
end
3/12/2009

A funo switch localiza uma


condio d entrada ou um
parmetro de entrada em uma
serie de casos. Aps localizado
a funo realiza a operao
abaixo dela informada.
Ser executada a operao que
estiver de acordo com o
parmetro d entrada
No necessrio limitar com
chaves a rea em que o loop
deve agir, isso j feito
automaticamente pelo MATLAB.

67

Exerccio Exemplo 1


Fazer um programa que:


Gere 2 grficos com 15 valores aleatrios de
0 a 100;
Encontre mximos e mnimos e mostre no
grfico;
Encontre os pontos onde os grficos se
tocam;
 Obs.: Todos esses valores devem estar
assinalados no grfico

3/12/2009

68

Encontrando Mximos e Mnimos




Inicialmente, ser gerado um grfico bidimensional com


15 valores aleatrios de Y, que iro variar de 0 a 100.

clear all;
close all;
clc;









3/12/2009

%Gerando valores aleatrios para y1 e y2


for n=1:1:15
y1(n)=round(rand(1)*100);
y2(n)=round(rand(1)*100);
x(n)=n-1;
end
69

Encontrando Mximos e Mnimos




Aps o grfico e os valores gerados, o programa de


localizao de mximos e mnimos ser gerado.

%Localiza maximos em y1 e y2
ymax1=max(y1);
xmax1=find(y1==ymax1)-1;
ymax2=max(y2);
xmax2=find(y2==ymax2)-1;
ymax=max([ymax1 ymax2]);
if ymax==ymax1
xmax=xmax1;
else
xmax=xmax2;
end










3/12/2009

70

Encontrando Mximos e Mnimos




Aps o grfico e os valores gerados, o programa de


localizao de mximos e mnimos ser gerado.

%Localiza minimos em y1 e y2
ymin1=min(y1);
xmin1=find(y1==ymin1)-1;
ymin2=min(y2);
xmin2=find(y2==ymin2)-1;
ymin=min([ymin1 ymin2]);
if ymin==ymin1
xmin=xmin1;
else
xmin=xmin2;
end










3/12/2009

71

Ageitando valores:


Aps o grfico e os valores gerados, o programa de


localizao de mximos e mnimos ser gerado.

%Discretizando o grfico
passo=0.00001;
xi=0:passo:(n-1);
y1i=interp1(x,y1,xi);
y2i=interp1(x,y2,xi);







%Para eliminar os nmeros quebrados, acertamos qual a


preciso necessria
 y1ix=round(100*y1i)/100;
 y2ix=round(100*y2i)/100;


3/12/2009

72

Localizando Intersees










%Encontrando intersees
k=1;
for a=1:1:(((n-1)/passo)+1)
if y1ix(a) == y2ix(a)
intersecaoY(k)=y1ix(a);
intersecaoX(k)=xi(a);
k=k+1;
end
end

3/12/2009

73

Localizando Intersees


%Plotando Grfico

figure(1)
subplot(2,1,1)
plot(x,y1,'b--',x,y2,'r-');
title('Grfico com pontos aleatrios');
legend('Graf. 1','Graf. 2');
xlabel('Eixo X');
ylabel('Eixo Y');
grid on;
subplot(2,1,2)








3/12/2009

74

Localizando Intersees









plot(xi,y1i,'b--',xi,y2i,'r-',intersecaoX,intersecaoY,'og',...
xmax,ymax,'or',xmax1,ymax1,'^b',xmax2,ymax2,'^c',...
xmin,ymin,'or',xmin1,ymin1,'vb',xmin2,ymin2,'vc');
title('Grfico com pontos de intersees marcados e maximos');
legend('Graf. 1','Graf. 2');
xlabel('Eixo X');
ylabel('Eixo Y');
grid on;

3/12/2009

75

Traando o Grfico com os


pontos de interseo e de
mximos e mnimos

3/12/2009

76

Criando Funes


Funes so bem teis ao se criar um


programa muito extenso e que
recursivamente necessitam de um
determinado clculo, sendo assim, as
funes se tornam muito teis para limpar o
programa visualmente.

3/12/2009

77

Dvidas de sintaxe:
O Matlab possui um
grande nmero de
funes j prontas,
e devido a isso,
muitas delas no
vamos conseguir
decorar a sintaxe
corretamente,
sabendo disso,
vamos fazer uso da
funo help para
encontrar a sintaxe
correta.
3/12/2009

78

Dvidas de sintaxe:


O caso anterior usado quando j se sabe qual a funo a ser usada


para se resolver o problema, mas no caso de no se saber qual a
funo a ser usada, podemos fazer o uso do Help localizado na barra
de tarefas do menu principal.

3/12/2009

79

Converses

3/12/2009

80

Rotinas de Alto Nvel

3/12/2009

Salvar Arquivos:

O arquivo gerado leva a extenso .mat


Nome_do_Arquivo.mat

81

Rotinas de Alto Nvel




Carregar Arquivos:

y=load(Nome_do_Arquivo,a) retorna
apenas a varivel a na estrutura y.

3/12/2009

82

Comandos

Sero citados a seguir vrios


comandos separados por reas, com
a finalidade de auxiliar em
programas mais complexos.

3/12/2009

83

Formato Numrico:

Operaes Bsicas:

3/12/2009

84

Operaes Relacionais:

Operaes entre Vetores:

3/12/2009

85

Detalhes do Grfico:

Anotaes no Grfico:

3/12/2009

86

Comandos para Plotar Grficos


Bidimensionais:

3/12/2009

87

Comandos para Plotar Grficos


Tridimensionais e Contornos:

3/12/2009

88

Operadores Lgicos:

Comentrios e Pontuaes:

3/12/2009

89

Algumas Funes Matemticas:

3/12/2009

90

Construo de Vetores:

Funes Relacionadas a Matrizes:

3/12/2009

91

Programa Desafio


O programa a seguir tem o intuito


de despertar dvidas com relao a
programao, para assim poder
resolve-las da melhor forma
possvel.

3/12/2009

92

Programa 2:


Criar um programa que faa o seguinte:


- Plotar uma matriz aleatria 4x4 com valores de 0 a
100 apenas com valores inteiros;
- Encontrar o MAIOR e o MENOR Elemento da Matriz;
- Colocar os valores em ordem crescente;
- Mostrar os valores na tela;
- Plotar os valores em ordem crescente em um
grfico.
Todos esses dados devem estar no mesmo programa.

3/12/2009

93

Dicas:
Consulte as funes rand e round, elas
podem ser teis para o inicio do
problema!!!
 Seria interessante olhar como se faz
para criar uma funo e como cham-la
dentro do programa principal, mesmo
no sendo necessrio para este
exerccio!!!


3/12/2009

94

Resoluo:




close all
clear all
clc






%Plotar uma matriz aleatria 4x4 com valores de 0 a


100 apenas com valores inteiros
i=4;
%Linhas
j=4;
%Colunas






MATRIZ=rand([i,j]);
MATRIZ=MATRIZ*100;
MATRIZ=round(MATRIZ);

3/12/2009

95

Resoluo:






%Encontrar o MAIOR e o MENOR Elemento da Matriz!!!


VetMin=min(MATRIZ);
VetMax=max(MATRIZ);
Menor=100;
Maior=0;








3/12/2009

for a=1:1:j
if Menor>VetMin(a)
Menor=VetMin(a);
elseif Maior<VetMax(a)
Maior=VetMax(a);
end
end
96

Resoluo:













%Colocar os valores em ordem crescente


k=1;
for a=0:1:100
for b=1:1:i
for c=1:1:j
if MATRIZ(b,c)==a
Crescente(1,k)=a;
k=k+1;
end
end
end
end

3/12/2009

97

Resoluo:


%Mostrar os valores na tela:











fprintf('A Matriz Utilizada Foi: \n\n')


MATRIZ
fprintf('O MENOR valor da Matriz : \n\n')
Menor
fprintf('O MAIOR valor da Matriz : \n\n')
Maior
fprintf('A ordem CRESCENTE dos valores : \n\n')
Crescente

3/12/2009

98

Resoluo:





%Plotar os valores em ordem crescente em um grafico!!!


x=1:1:i*j;
plot(x,Crescente)
grid on

3/12/2009

99

Duvidas???

3/12/2009

100

OBRIGADO!!!

3/12/2009

101

Você também pode gostar