Você está na página 1de 101

Mini Curso

Alexandre Branquinho Rocha


mail: branquinho@sc.usp.br
Aula 1

Introduo

3/12/2009

2
Aplicaes:
 Simulao
 Jogos
Inteligncia Artificial
Redes Neurais
 Instrumentao
 Automao
 Medicina

3/12/2009

3
Problemas Encontrados na
Engenharia
 Resolver equaes muito extensas
 Resolver Sistemas
 Resolver Integrais
 Resolver Derivadas
 Traar Grficos
 Encontrar Valores de:
Mximo
Mnimo
3/12/2009 Interseo

4
Iniciando o MATLAB

Selecione inicialmente o diretrio


onde sero salvos e executados
os programas criados!

3/12/2009

5
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

6
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

7
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

8
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

9
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+4625-
784*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

x 2
y 2
9 = 0

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

x=
[ 5]
[ 5]
Solues :
y= (5 , 4 ) (5 , 4 )
[ 4]
3/12/2009 [ -4] Solues Reais

11
Resolvendo Integrais
f (x ) = (sen (x )) dx
2 syms x y


f (x ) = 36 cos (3 x 4 ) dx
2

f (x , y ) = (x )
10 3
3
4 y dy dx
0 5

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)

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

12
Resolvendo Derivadas
syms x y
f (x ) = (5 cos (5 x ))
d
dx
f (x ) =
d d

dx dx
( )
x 2 + 5 x 10

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

f= diff(5*cos(5*x))
f = -25*sin(5*x)

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

f= diff(sin(x*y),x)
3/12/2009 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; %Limpa as Variveis


clc; %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
plot(x,y) %Plota os valores de x e 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.

Sero executadas todas as


Operaes 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.
3/12/2009 end

64
Estruturas (while
(while)
)

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

Sero executadas todas as


Operaes 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.
3/12/2009 end

65
Estruturas (if
(if))

if x<=10
Operao 1 A funo if impe uma condio
para que se ocorra uma
determinada operao.
elseif x>10 & x<50 Ser executada a operao que
Operao 2 estiver de acordo com as
condies estipuladas

else No necessrio limitar com


chaves a rea em que o loop deve
Operao 3 agir, isso j feito
automaticamente pelo MATLAB.
end
3/12/2009

66
Estruturas (switch
(switch)
)

metodo = 'Bilinear';
A funo switch localiza uma
condio d entrada ou um
switch lower(metodo) parmetro de entrada em uma
case {'linear','bilinear'} serie de casos. Aps localizado
a funo realiza a operao
disp('Metodo linear')
abaixo dela informada.
case 'cubico'
disp('Metodo cubico') Ser executada a operao que
case 'nearest' estiver de acordo com o
parmetro d entrada
disp('Metodo nearest')
otherwise No necessrio limitar com
disp('Metodo Desconhecido') chaves a rea em que o loop
end deve agir, isso j feito
3/12/2009 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;

 %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;
3/12/2009
 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;
3/12/2009  subplot(2,1,2)

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

 Salvar Arquivos:

 O arquivo gerado leva a extenso .mat


3/12/2009 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;

 for a=1:1:j
 if Menor>VetMin(a)
 Menor=VetMin(a);
 elseif Maior<VetMax(a)
 Maior=VetMax(a);
 end
3/12/2009
 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