Escolar Documentos
Profissional Documentos
Cultura Documentos
1) MATLAB - Curso B Sico - Alexandre Branquinho Rocha - 2009 - 2010 PDF
1) MATLAB - Curso B Sico - Alexandre Branquinho Rocha - 2009 - 2010 PDF
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
3/12/2009
5
Janelas
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;
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
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=
[ 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
3/12/2009
20
Dimenso de Vetores e Matrizes
3/12/2009
21
Inserindo Elemento na Matriz
3/12/2009
22
Traando Grficos
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;
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
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
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.
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.
64
Estruturas (while
(while)
)
while x<=100
A funo while ir repetir as
operaes enquanto a condio
(x100) no for satisfeita
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
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;
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
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:
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
3/12/2009
83
Formato Numrico:
Operaes Bsicas:
3/12/2009
84
Operaes Relacionais:
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:
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:
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