Aula 1Aula 1
IntroduçãoIntrodução
2
3/12/2009
IntroduçãoIntrodução
Aplicações:Aplicações:� Simulação� Jogos
◦ Inteligência Artificial◦ Redes Neurais
� Instrumentação� Automação� Automação� Medicina
3
3/12/2009
Problemas Encontrados na Problemas Encontrados na EngenhariaEngenharia
� Resolver equações muito extensas� Resolver Sistemas� Resolver Integrais
4
3/12/2009
� Resolver Derivadas� Traçar Gráficos� Encontrar Valores de:
◦ Máximo◦ Mínimo◦ Interseção
Iniciando o MATLABIniciando o MATLAB
5
3/12/2009
Selecione inicialmente o diretório onde serão salvos e executados os programas criados!
JanelasJanelas
WorkSpace – mostra todas as
6
3/12/2009
WorkSpace – mostra todas as variáveis utilizadas no
programa.
Command History – mostra o histórico dos comandos dados
ao MATLAB no CommandWindow
Variáveis do ProgramaVariáveis do Programa
� Podem ter no máximo 31 caracteres;� Os nomes devem começar com LETRAS;� Caracteres de pontuação NÃO são
permitidos;� Distinção de maiúsculas e minúsculas;
7
3/12/2009
� Distinção de maiúsculas e minúsculas;
...CUSTOCuStocustoCusto ≠≠≠
ObservaçõesObservações
� Para resolver integrais e derivadas devemos fazer uso antes da função syms dizendo assim ao programa para tratar como símbolo a variável do problema em questão.
8
3/12/2009
problema em questão.
ObservaçõesObservações
� Exemplo:syms x y z
Dizemos assim ao programa para tratar as variáveis x, y e z como símbolos.
9
3/12/2009
as variáveis x, y e z como símbolos.
� Para retornar os símbolos a forma de variáveis, devemos fazer uso da função sym2poly(_____)
Resolvendo equações extensasResolvendo equações extensas
� x=solve('x=154^2+x^2-963*x+4625-784*x^2+sin(3.87*pi/1.29)+4.782*tan(0.156)-
( ) 3222 12156.0782,429,1
87,37844625963154 xtgsenxxxx ⋅−⋅+
⋅+⋅−+⋅−+= π
10
3/12/2009
784*x^2+sin(3.87*pi/1.29)+4.782*tan(0.156)-12*x^3')
x =
5.2463512724443844694933368035694-7.1012054591718830367351002104524-63.395145813272501432758236593117
[x,y]=solve('(x^2)*(y^2) - 2*x - 390 = 0','(x^2) - (y^2) - 9 = 0')
Resolvendo um SistemaResolvendo um Sistema
=−−=−⋅−⋅
09
0390222
22
yx
xyx
[x,y]=solve('(x^2)*(y^2) - 2*x - 390 = 0','(x^2) - (y^2) - 9 = 0')
x =[ 5][ 5]
y =[ 4][ -4]
11
3/12/2009
( ) ( )4,54,5
:
−Soluções
Soluções Reais
Resolvendo IntegraisResolvendo Integrais
( ) ( )( )
( ) ( )
( ) ( ) dxdyyxyxf
dxxxf
dxxsenxf
∫ ∫
∫
∫
−
−
⋅⋅⋅−=
⋅−⋅⋅=
⋅=
10
0
3
5
3
2
2
2
4,
43cos36π
ππ
syms x y
12
3/12/2009
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)f = 20320
Resolvendo DerivadasResolvendo Derivadas
( ) ( )( )
( ) ( )
( ) ( )( )yxsendx
dxf
xxdx
d
dx
dxf
dx
dxf
⋅=
−⋅+=
⋅⋅=
105
x5cos5
2
syms x y
13
3/12/2009
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)f = cos(x*y)*y
Criação de VetoresCriação de Vetores
14
3/12/2009
Criação de VetoresCriação de Vetores
15
3/12/2009
Orientação de VetoresOrientação de Vetores
O ‘ funciona como operador de
transposição.
16
3/12/2009
transposição.
Criação de MatrizesCriação de Matrizes
17
3/12/2009
Criação de MatrizesCriação de Matrizes
18
3/12/2009
Localização LógicaLocalização Lógica
19
3/12/2009
Busca em MatrizesBusca em Matrizes
20
3/12/2009
Os Elementos maiores que 5 estão nas posições:
[3,1] ; [3,2] ; [2,3] ; [3,3]
Dimensão de Vetores e MatrizesDimensão de Vetores e Matrizes
21
3/12/2009
Inserindo Elemento na MatrizInserindo Elemento na Matriz
22
3/12/2009
Traçando GráficosTraçando Gráficos
� O comando plot do MATLAB pode traçar tanto um ponto com coordenadas x e y definidos, mas também pode traçar curvas, onde x
23
3/12/2009
também pode traçar curvas, onde xe y entram no gráfico na forma de vetores.
� O comando plot3 é utilizado para gerar gráficos 3D e segue o mesmo princípio do comando plot
Traçando Gráficos 2DTraçando Gráficos 2D
24
3/12/2009
Traçando Gráficos 3DTraçando Gráficos 3D
25
3/12/2009
Traçando SuperfíciesTraçando Superfícies
26
3/12/2009
Aula 2Aula 2
GráficosGráficos
27
3/12/2009
GráficosGráficos
SubGráficosSubGráficos
28
3/12/2009
Seleciona o Gráfico no alto, à esquerda, de uma grade 2
por 2 de subgráficos
SubGráficosSubGráficos
29
3/12/2009
SubGráficosSubGráficos
30
3/12/2009
SubGráficosSubGráficos
31
3/12/2009
SubGráficosSubGráficos
32
3/12/2009
Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados
33
3/12/2009
Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados
34
3/12/2009
Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados
35
3/12/2009
Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados
36
3/12/2009
Gráficos em Escalas DiferentesGráficos em Escalas Diferentes
37
3/12/2009
Gráficos em Escalas DiferentesGráficos em Escalas Diferentes
38
3/12/2009
Dicas Importantes Dicas Importantes -- GráficosGráficos� 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.
39
3/12/2009
� 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 padrão.
Tipos de GráficosTipos de Gráficos
40
3/12/2009
Tipos de GráficosTipos de Gráficos
41
3/12/2009
Tipos de GráficosTipos de Gráficos
42
3/12/2009
Tipos de GráficosTipos de Gráficos
43
3/12/2009
Tipos de GráficosTipos de Gráficos
44
3/12/2009
Tipos de GráficosTipos de Gráficos
45
3/12/2009
Tipos de GráficosTipos de Gráficos
46
3/12/2009
Exercício Exercício -- Tipos de GráficosTipos de Gráficos
� Criar a placa a seguir:
47
3/12/2009
Exercício Exercício -- Tipos de GráficosTipos de Gráficos
48
3/12/2009
Exercício Exercício -- Tipos de GráficosTipos de Gráficos
49
3/12/2009
Exercício Exercício -- Tipos de GráficosTipos de Gráficos
50
3/12/2009
Resolução Resolução -- Tipos de GráficosTipos de Gráficos
� %Limpa Variaveis e Tela� clear all;� close all;� clc;
51
3/12/2009
� clc;
� %Cria Retangulo Azul� xquad1=[-5 5 5 -5];� yquad1=[-7.5 -7.5 7.5 7.5];
Resolução Resolução -- Tipos de GráficosTipos de Gráficos
� %Cria Retangulo Branco� xquad2=[-4 4 4 -4];� yquad2=[-1.5 -1.5 6.5 6.5];
52
3/12/2009
� %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];
Resolução Resolução -- Tipos de GráficosTipos de Gráficos
� %Plota a Imagem� fill(xquad1,yquad1,'b',xquad2,
yquad2,'w',xcruz,ycruz,'r');� axis equal
53
3/12/2009
� axis equal
Resolução Resolução -- Tipos de GráficosTipos de Gráficos
� %Insere o Texto� text(0,-4,'Hospital','Color',[1,1,1],
'FontSize',40,'FontWeight','bold', 'HorizontalAlignment','center')
54
3/12/2009
� grid on� axis square off� axis equal
Comandos Úteis Para GráficosComandos Úteis Para Gráficos
� figure(n) Onde n é o numero da figura� plot3(x1,y1,z1,'o',x2,y2,z2,'*',x3,y3,z3,'d');
◦ Plota 3 gráficos Tridimensionais (x1,y1,z1); (x2,y2,z2) e (x3,y3,z3)
� grid on; Coloca Grid no Gráfico� xlabel('Legenda do Eixo X');
55
3/12/2009
� xlabel('Legenda do Eixo X');� ylabel('Legenda do Eixo Y');� zlabel('Legenda do Eixo Z');� title('Titulo do Gráfico');� legend('Legenda Graf.1', 'Legenda Graf.2', 'Legenda
Graf.3');
Exemplo de Gráfico 2D com Exemplo de Gráfico 2D com Legenda de Eixos e Linhas e TituloLegenda de Eixos e Linhas e Titulo
56
3/12/2009
Aula 3Aula 3
ProgramandoProgramando
57
3/12/2009
ProgramandoProgramando
Criando programas facilmenteCriando programas facilmente
� Quem já tentou programar no CommandWindow do MATLAB deve ter notado que não é fácil ficar repetindo uma série de comandos sempre que desejar alterar um dado no programa.
58
3/12/2009
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 funções, deve-se
prestar atenção de salvá-los todos em uma única pasta de trabalho, para facilitar sua chamada posterior.
MM--FileFile
59
3/12/2009
File
New
M-File
Algumas Funções Básicas:Algumas Funções Básicas:
if: Se (if) acontecer determinado evento irá executar determinada operação, senão(else), executará outra;
for: Repete um evento um determinado número de vezes;
while: Repete um evento indeterminadas vezes até que
60
3/12/2009
while: Repete um evento indeterminadas vezes até que a condição estipulada seja atingida;
clc: Limpa a tela principal;clear: Limpa as variáveis da área de trabalho
(workspace);input: Recebe dados do teclado;fprintf:Mostra na tela uma frase determinada pelo
programador;
Programa Exemplo 1:Programa Exemplo 1:
� Criar um Programa que receba 10 valores do teclado e os plote em um gráfico.
clear; %Limpa as Variáveisclc; %Limpa a Tela
61
3/12/2009
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 1y(a)=input('Digite o Valor:');%Entrada de Valores de Y
endplot(x,y) %Plota os valores de x e y
Resultados do Programa 1:Resultados do Programa 1:
62
3/12/2009
Operações RelacionaisOperações Relacionais
Operadores Lógicos:Operadores Lógicos:
63
3/12/2009
Operadores Lógicos:Operadores Lógicos:
Estruturas (Estruturas (forfor))
for x=0:1:10A função for irá repetir o loop do ponto inicial 0, variando de 1 em 1 até atingir o valor final 10.
Serão executadas todas as
64
3/12/2009
Operações
end
Serão executadas todas as operações existentes entre o for e o end
Não é necessário limitar com chaves a área em que o loop deve agir, isso já é feito automaticamente pelo MATLAB.
Estruturas (Estruturas (whilewhile))
while x<=100A função while irá repetir as operações enquanto a condição (x≤100) não for satisfeita
Serão executadas todas as
65
3/12/2009
Operações
end
Serão executadas todas as operações existentes entre o whilee o end
Não é necessário limitar com chaves a área em que o loop deve agir, isso já é feito automaticamente pelo MATLAB.
Estruturas (Estruturas (ifif))
if x<=10Operação 1
elseif x>10 & x<50
A função if impõe uma condição para que se ocorra uma determinada operação.
Será executada a operação que
66
3/12/2009
elseif x>10 & x<50Operação 2
elseOperação 3
end
Será executada a operação que estiver de acordo com as condições estipuladas
Não é necessário limitar com chaves a área em que o loop deve agir, isso já é feito automaticamente pelo MATLAB.
Estruturas (Estruturas (switchswitch))
metodo = 'Bilinear';
switch lower(metodo)case {'linear','bilinear'}
disp('Metodo é linear')
A função switch localiza uma condição d entrada ou um parâmetro de entrada em uma serie de casos. Após localizado a função realiza a operação abaixo dela informada.
67
3/12/2009
case 'cubico'disp('Metodo é cubico')
case 'nearest'disp('Metodo é nearest')
otherwisedisp('Metodo Desconhecido')
end
abaixo dela informada.
Será executada a operação que estiver de acordo com o parâmetro d entrada
Não é necessário limitar com chaves a área em que o loop deve agir, isso já é feito automaticamente pelo MATLAB.
Exercício Exemplo 1Exercício Exemplo 1� Fazer um programa que:
◦ Gere 2 gráficos com 15 valores aleatórios de 0 a 100;
◦ Encontre máximos e mínimos e mostre no gráfico;
68
3/12/2009
gráfico;◦ Encontre os pontos onde os gráficos se tocam;
� Obs.: Todos esses valores devem estar assinalados no gráfico
Encontrando Máximos e MínimosEncontrando Máximos e Mínimos
� Inicialmente, será gerado um gráfico bidimensional com 15 valores aleatórios de Y, que irão variar de 0 a 100.
� clear all;� close all;� clc;
69
3/12/2009
� clc;�
� %Gerando valores aleatórios 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
Encontrando Máximos e MínimosEncontrando Máximos e Mínimos
� Após o gráfico e os valores gerados, o programa de localização de máximos e mínimos será gerado.
� %Localiza maximos em y1 e y2� ymax1=max(y1);� xmax1=find(y1==ymax1)-1;
70
3/12/2009
� 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
Encontrando Máximos e MínimosEncontrando Máximos e Mínimos
� Após o gráfico e os valores gerados, o programa de localização de máximos e mínimos será gerado.
� %Localiza minimos em y1 e y2� ymin1=min(y1);� xmin1=find(y1==ymin1)-1;
71
3/12/2009
� 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
AgeitandoAgeitando valores:valores:
� Após o gráfico e os valores gerados, o programa de localização de máximos e mínimos será gerado.
� %Discretizando o gráfico� passo=0.00001;� xi=0:passo:(n-1);
72
3/12/2009
� xi=0:passo:(n-1);� y1i=interp1(x,y1,xi);� y2i=interp1(x,y2,xi);�
� %Para eliminar os números quebrados, acertamos qual a precisão necessária
� y1ix=round(100*y1i)/100;� y2ix=round(100*y2i)/100;
Localizando InterseçõesLocalizando Interseções
� %Encontrando interseções� k=1;
� for a=1:1:(((n-1)/passo)+1)if y1ix(a) == y2ix(a)
73
3/12/2009
� if y1ix(a) == y2ix(a)� intersecaoY(k)=y1ix(a);� intersecaoX(k)=xi(a);� k=k+1;� end� end
Localizando InterseçõesLocalizando Interseções
� %Plotando Gráfico
� figure(1)� subplot(2,1,1)� plot(x,y1,'b--',x,y2,'r-');
74
3/12/2009
� plot(x,y1,'b--',x,y2,'r-');� title('Gráfico com pontos aleatórios');� legend('Graf. 1','Graf. 2');� xlabel('Eixo X');� ylabel('Eixo Y');� grid on;� subplot(2,1,2)
Localizando InterseçõesLocalizando Interseções� 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('Gráfico com pontos de interseções marcados e maximos');� legend('Graf. 1','Graf. 2');� xlabel('Eixo X');� ylabel('Eixo Y');
75
3/12/2009
� ylabel('Eixo Y');� grid on;
Traçando o Gráfico com os Traçando o Gráfico com os pontos de interseção e de pontos de interseção e de máximos e mínimosmáximos e mínimos
76
3/12/2009
Criando FunçõesCriando Funções
� Funções são bem úteis ao se criar um programa muito extenso e que recursivamente necessitam de um determinado cálculo, sendo assim, as funções se tornam muito úteis para limpar o
77
3/12/2009
funções se tornam muito úteis para limpar o programa visualmente.
Dúvidas de sintaxe:Dúvidas de sintaxe:
O Matlab possui um grande número de funções já prontas, e devido a isso, muitas delas não vamos conseguir vamos conseguir decorar a sintaxe corretamente, sabendo disso, vamos fazer uso da função help para encontrar a sintaxe correta.
78
3/12/2009
Dúvidas de sintaxe:Dúvidas de sintaxe:� O caso anterior é usado quando já se sabe qual a função a ser usada
para se resolver o problema, mas no caso de não se saber qual a função a ser usada, podemos fazer o uso do Help localizado na barra de tarefas do menu principal.
79
3/12/2009
ConversõesConversões
80
3/12/2009
Rotinas de Alto NívelRotinas de Alto Nível
� Salvar Arquivos:
81
3/12/2009
� O arquivo gerado leva a extensão .mat◦ Nome_do_Arquivo.mat
Rotinas de Alto NívelRotinas de Alto Nível
� Carregar Arquivos:
82
3/12/2009
� y=load(‘Nome_do_Arquivo’,’a’) retorna apenas a variável a na estrutura y.
ComandosComandos
Serão citados a seguir vários
comandos separados por áreas, com
83
3/12/2009
a finalidade de auxiliar em
programas mais complexos.
Formato Numérico:Formato Numérico:
Operações Básicas:Operações Básicas:
84
3/12/2009
Operações Básicas:Operações Básicas:
Operações Relacionais:Operações Relacionais:
Operações entre Vetores:Operações entre Vetores:
85
3/12/2009
Operações entre Vetores:Operações entre Vetores:
Detalhes do Gráfico:Detalhes do Gráfico:
86
3/12/2009
Anotações no Gráfico:Anotações no Gráfico:
Comandos para Comandos para PlotarPlotar Gráficos Gráficos Bidimensionais:Bidimensionais:
87
3/12/2009
Comandos para Comandos para PlotarPlotar Gráficos Gráficos Tridimensionais e Contornos:Tridimensionais e Contornos:
88
3/12/2009
Operadores Lógicos:Operadores Lógicos:
Comentários e Pontuações:Comentários e Pontuações:
89
3/12/2009
Comentários e Pontuações:Comentários e Pontuações:
Algumas Funções Matemáticas:Algumas Funções Matemáticas:
90
3/12/2009
Construção de Vetores:Construção de Vetores:
91
3/12/2009
Funções Relacionadas a Matrizes:Funções Relacionadas a Matrizes:
Programa DesafioPrograma Desafio
� O programa a seguir tem o intuito de despertar dúvidas com relação a programação, para assim poder resolve-las da melhor forma
92
3/12/2009
resolve-las da melhor forma possível.
Programa 2:Programa 2:� Criar um programa que faça o seguinte:
- Plotar uma matriz aleatória 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;- Colocar os valores em ordem crescente;- Mostrar os valores na tela;- Plotar os valores em ordem crescente em um
gráfico.
Todos esses dados devem estar no mesmo programa.
93
3/12/2009
Dicas:Dicas:
� Consulte as funções rand e round, elas podem ser úteis para o inicio do problema!!!
� Seria interessante olhar como se faz para criar uma função e como chamá-la para criar uma função e como chamá-la dentro do programa principal, mesmo não sendo necessário para este exercício!!!
94
3/12/2009
Resolução:Resolução:� close all� clear all� clc�
� %Plotar uma matriz aleatória 4x4 com valores de 0 a 100 apenas com valores inteiros100 apenas com valores inteiros
� i=4; %Linhas� j=4; %Colunas�
� MATRIZ=rand([i,j]);� MATRIZ=MATRIZ*100; � MATRIZ=round(MATRIZ);
95
3/12/2009
Resolução:Resolução:� %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� end
96
3/12/2009
Resolução:Resolução:� %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� if MATRIZ(b,c)==a� Crescente(1,k)=a;� k=k+1;� end� end� end� end
97
3/12/2009
Resolução:Resolução:� %Mostrar os valores na tela:�
� fprintf('A Matriz Utilizada Foi: \n\n')� MATRIZ� fprintf('O MENOR valor da Matriz é: \n\n')
Menor� Menor� fprintf('O MAIOR valor da Matriz é: \n\n')� Maior� fprintf('A ordem CRESCENTE dos valores é: \n\n')� Crescente
98
3/12/2009
Resolução:Resolução:� %Plotar os valores em ordem crescente em um grafico!!!� x=1:1:i*j;� plot(x,Crescente)� grid on
99
3/12/2009
Duvidas???Duvidas???Duvidas???Duvidas???
100
3/12/2009
OBRIGADO!!!OBRIGADO!!!OBRIGADO!!!OBRIGADO!!!
101
3/12/2009
Top Related