1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

101
Mini Curso Mini Curso Alexandre Branquinho Rocha mail: [email protected]

Transcript of 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Page 1: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Mini CursoMini Curso

Alexandre Branquinho Rocha

mail: [email protected]

Page 2: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Aula 1Aula 1

IntroduçãoIntrodução

2

3/12/2009

IntroduçãoIntrodução

Page 3: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Aplicações:Aplicações:� Simulação� Jogos

◦ Inteligência Artificial◦ Redes Neurais

� Instrumentação� Automação� Automação� Medicina

3

3/12/2009

Page 4: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 5: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Iniciando o MATLABIniciando o MATLAB

5

3/12/2009

Selecione inicialmente o diretório onde serão salvos e executados os programas criados!

Page 6: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 7: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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 ≠≠≠

Page 8: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 9: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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(_____)

Page 10: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 11: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

[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

Page 12: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 13: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 14: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Criação de VetoresCriação de Vetores

14

3/12/2009

Page 15: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Criação de VetoresCriação de Vetores

15

3/12/2009

Page 16: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Orientação de VetoresOrientação de Vetores

O ‘ funciona como operador de

transposição.

16

3/12/2009

transposição.

Page 17: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Criação de MatrizesCriação de Matrizes

17

3/12/2009

Page 18: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Criação de MatrizesCriação de Matrizes

18

3/12/2009

Page 19: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Localização LógicaLocalização Lógica

19

3/12/2009

Page 20: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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]

Page 21: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Dimensão de Vetores e MatrizesDimensão de Vetores e Matrizes

21

3/12/2009

Page 22: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Inserindo Elemento na MatrizInserindo Elemento na Matriz

22

3/12/2009

Page 23: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 24: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Traçando Gráficos 2DTraçando Gráficos 2D

24

3/12/2009

Page 25: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Traçando Gráficos 3DTraçando Gráficos 3D

25

3/12/2009

Page 26: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Traçando SuperfíciesTraçando Superfícies

26

3/12/2009

Page 27: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Aula 2Aula 2

GráficosGráficos

27

3/12/2009

GráficosGráficos

Page 28: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

SubGráficosSubGráficos

28

3/12/2009

Seleciona o Gráfico no alto, à esquerda, de uma grade 2

por 2 de subgráficos

Page 29: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

SubGráficosSubGráficos

29

3/12/2009

Page 30: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

SubGráficosSubGráficos

30

3/12/2009

Page 31: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

SubGráficosSubGráficos

31

3/12/2009

Page 32: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

SubGráficosSubGráficos

32

3/12/2009

Page 33: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados

33

3/12/2009

Page 34: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados

34

3/12/2009

Page 35: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados

35

3/12/2009

Page 36: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos Bidimensionais Gráficos Bidimensionais EspecializadosEspecializados

36

3/12/2009

Page 37: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos em Escalas DiferentesGráficos em Escalas Diferentes

37

3/12/2009

Page 38: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Gráficos em Escalas DiferentesGráficos em Escalas Diferentes

38

3/12/2009

Page 39: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 40: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

40

3/12/2009

Page 41: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

41

3/12/2009

Page 42: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

42

3/12/2009

Page 43: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

43

3/12/2009

Page 44: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

44

3/12/2009

Page 45: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

45

3/12/2009

Page 46: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Tipos de GráficosTipos de Gráficos

46

3/12/2009

Page 47: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Exercício Exercício -- Tipos de GráficosTipos de Gráficos

� Criar a placa a seguir:

47

3/12/2009

Page 48: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Exercício Exercício -- Tipos de GráficosTipos de Gráficos

48

3/12/2009

Page 49: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Exercício Exercício -- Tipos de GráficosTipos de Gráficos

49

3/12/2009

Page 50: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Exercício Exercício -- Tipos de GráficosTipos de Gráficos

50

3/12/2009

Page 51: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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];

Page 52: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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];

Page 53: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 54: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 55: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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');

Page 56: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 57: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Aula 3Aula 3

ProgramandoProgramando

57

3/12/2009

ProgramandoProgramando

Page 58: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 59: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

MM--FileFile

59

3/12/2009

File

New

M-File

Page 60: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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;

Page 61: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 62: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Resultados do Programa 1:Resultados do Programa 1:

62

3/12/2009

Page 63: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Operações RelacionaisOperações Relacionais

Operadores Lógicos:Operadores Lógicos:

63

3/12/2009

Operadores Lógicos:Operadores Lógicos:

Page 64: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 65: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 66: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 67: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 68: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 69: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 70: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 71: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 72: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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;

Page 73: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 74: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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)

Page 75: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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;

Page 76: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 77: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 78: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 79: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 80: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

ConversõesConversões

80

3/12/2009

Page 81: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 82: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 83: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 84: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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:

Page 85: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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:

Page 86: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Detalhes do Gráfico:Detalhes do Gráfico:

86

3/12/2009

Anotações no Gráfico:Anotações no Gráfico:

Page 87: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Comandos para Comandos para PlotarPlotar Gráficos Gráficos Bidimensionais:Bidimensionais:

87

3/12/2009

Page 88: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Comandos para Comandos para PlotarPlotar Gráficos Gráficos Tridimensionais e Contornos:Tridimensionais e Contornos:

88

3/12/2009

Page 89: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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:

Page 90: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Algumas Funções Matemáticas:Algumas Funções Matemáticas:

90

3/12/2009

Page 91: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Construção de Vetores:Construção de Vetores:

91

3/12/2009

Funções Relacionadas a Matrizes:Funções Relacionadas a Matrizes:

Page 92: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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.

Page 93: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 94: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 95: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 96: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 97: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 98: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 99: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

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

Page 100: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

Duvidas???Duvidas???Duvidas???Duvidas???

100

3/12/2009

Page 101: 1) MATLAB - Curso B_sico - Alexandre Branquinho Rocha - 2009 - 2010

OBRIGADO!!!OBRIGADO!!!OBRIGADO!!!OBRIGADO!!!

101

3/12/2009