1%29%20matlab%20 %20curso%20b sico%20 %20alexandre%20branquinho%20rocha%20 %202009%20 %202010%20%281

Page 1

Mini Curso

Alexandre Branquinho Rocha mail: branquinho@sc.usp.br


Aula 1

Introdução 3/12/2009

2


Aplicações:

Simulação Jogos ◦ Inteligência Artificial ◦ Redes Neurais

Instrumentação Automação Medicina

3/12/2009

3


Problemas Encontrados na Engenharia

3/12/2009

Resolver equações muito extensas Resolver Sistemas Resolver Integrais Resolver Derivadas Traçar Gráficos Encontrar Valores de: ◦ Máximo ◦ Mínimo ◦ Interseção 4


Iniciando o MATLAB

Selecione inicialmente o diretĂłrio onde serĂŁo salvos e executados os programas criados!

3/12/2009

5


Janelas

WorkSpace – mostra todas as variáveis utilizadas no programa.

Command History – mostra o histórico dos comandos dados ao MATLAB no Command Window 3/12/2009

6


Variá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;

Custo ≠ custo ≠ CuSto ≠ CUSTO ... 3/12/2009

7


Observaçõ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.

3/12/2009

8


Observações

Exemplo: syms x y z

Dizemos assim ao programa para tratar 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(_____)

3/12/2009

9


Resolvendo equações 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]

Soluções

:

(5 , 4 ) (5 , − 4 ) Soluções Reais

11


Resolvendo Integrais f (x ) =

∫ (sen (x )) ⋅ dx π f (x ) = ∫ 36 ⋅ cos (3 ⋅ x − π π

syms x y

2

2

f (x , y ) =

2

∫ ∫ (x 10

3

0

−5

3

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


Criação de Vetores

3/12/2009

14


Criação de Vetores

3/12/2009

15


Orientação de Vetores

O ‘ funciona como operador de transposição.

3/12/2009

16


Criação de Matrizes

3/12/2009

17


Criação de Matrizes

3/12/2009

18


Localização Lógica

3/12/2009

19


Busca em Matrizes

Os Elementos maiores que 5 estão nas posições: [3,1] ; [3,2] ; [2,3] ; [3,3]

3/12/2009

20


DimensĂŁo de Vetores e Matrizes

3/12/2009

21


Inserindo Elemento na Matriz

3/12/2009

22


Traç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 e 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

3/12/2009

23


Traรงando Grรกficos 2D

3/12/2009

24


Traรงando Grรกficos 3D

3/12/2009

25


Traçando Superfícies

3/12/2009

26


Aula 2

Grรกficos 3/12/2009

27


SubGráficos

Seleciona o Gráfico no alto, à esquerda, de uma grade 2 por 2 de subgráficos 3/12/2009

28


SubGrรกficos

3/12/2009

29


SubGrรกficos

3/12/2009

30


SubGrรกficos

3/12/2009

31


SubGrรกficos

3/12/2009

32


Grรกficos Bidimensionais Especializados

3/12/2009

33


Grรกficos Bidimensionais Especializados

3/12/2009

34


Grรกficos Bidimensionais Especializados

3/12/2009

35


Grรกficos Bidimensionais Especializados

3/12/2009

36


Grรกficos em Escalas Diferentes

3/12/2009

37


Grรกficos em Escalas Diferentes

3/12/2009

38


Dicas Importantes - Grá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.

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.

3/12/2009

39


Tipos de Grรกficos

3/12/2009

40


Tipos de Grรกficos

3/12/2009

41


Tipos de Grรกficos

3/12/2009

42


Tipos de Grรกficos

3/12/2009

43


Tipos de Grรกficos

3/12/2009

44


Tipos de Grรกficos

3/12/2009

45


Tipos de Grรกficos

3/12/2009

46


Exercício - Tipos de Gráficos

Criar a placa a seguir:

3/12/2009

47


Exercício - Tipos de Gráficos

3/12/2009

48


Exercício - Tipos de Gráficos

3/12/2009

49


Exercício - Tipos de Gráficos

3/12/2009

50


Resolução - Tipos de Gráficos %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


Resolução - Tipos de Gráficos %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


Resolução - Tipos de Gráficos %Plota a Imagem fill(xquad1,yquad1,'b',xquad2, yquad2,'w',xcruz,ycruz,'r'); axis equal

3/12/2009

53


Resolução - Tipos de Gráficos %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 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'); 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');

3/12/2009

55


Exemplo de Grรกfico 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 não é fácil ficar repetindo uma série 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 funções, deve-se prestar atenção 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 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 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; 3/12/2009

60


Programa Exemplo 1:

Criar um Programa que receba 10 valores do teclado e os plote em um grĂĄfico. clear; clc;

%Limpa as VariĂĄveis %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


Operações Relacionais

Operadores Lógicos:

3/12/2009

63


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

Operações

3/12/2009

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.

64


Estruturas (while (while) ) while x<=100 A função while irá repetir as operações enquanto a condição (x≤100) não for satisfeita

Operações

3/12/2009

end

Serão executadas todas as operações existentes entre o while e o end Não é necessário limitar com chaves a área em que o loop deve agir, isso já é feito automaticamente pelo MATLAB.

65


Estruturas (if (if) ) if x<=10 Operação 1 elseif x>10 & x<50 Operação 2 else Operação 3 end

A função if impõe uma condição para que se ocorra uma determinada operação. 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.

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

67


Exercí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; ◦ Encontre os pontos onde os gráficos se tocam; Obs.: Todos esses valores devem estar assinalados no gráfico

3/12/2009

68


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

3/12/2009

%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 69


Encontrando 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; 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 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; 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:

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

3/12/2009

72


Localizando Interseções

%Encontrando interseções 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 Interseções

%Plotando Gráfico

figure(1) subplot(2,1,1) 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)

3/12/2009

74


Localizando 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'); grid on;

3/12/2009

75


Traçando o Gráfico com os pontos de interseção e de máximos e mínimos

3/12/2009

76


Criando 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 programa visualmente.

3/12/2009

77


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 decorar a sintaxe corretamente, sabendo disso, vamos fazer uso da função help para encontrar a sintaxe correta. 3/12/2009

78


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.

3/12/2009

79


ConversĂľes

3/12/2009

80


Rotinas de Alto Nível

3/12/2009

Salvar Arquivos:

O arquivo gerado leva a extensão .mat ◦ Nome_do_Arquivo.mat

81


Rotinas de Alto Nível

Carregar Arquivos:

y=load(‘Nome_do_Arquivo’,’a’) retorna apenas a variável a na estrutura y.

3/12/2009

82


Comandos

Serรฃo citados a seguir vรกrios comandos separados por รกreas, com a finalidade de auxiliar em programas mais complexos.

3/12/2009

83


Formato Numérico:

Operações Básicas:

3/12/2009

84


Operações Relacionais:

Operações entre Vetores:

3/12/2009

85


Detalhes do Gráfico:

Anotações no Gráfico:

3/12/2009

86


Comandos para Plotar Grรกficos Bidimensionais:

3/12/2009

87


Comandos para Plotar Grรกficos Tridimensionais e Contornos:

3/12/2009

88


Operadores Lógicos:

Comentários e Pontuações:

3/12/2009

89


Algumas Funções Matemáticas:

3/12/2009

90


Construção de Vetores:

Funções Relacionadas a Matrizes:

3/12/2009

91


Programa 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 possível.

3/12/2009

92


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; - Mostrar os valores na tela; - Plotar os valores em ordem crescente em um grรกfico. Todos esses dados devem estar no mesmo programa.

3/12/2009

93


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 dentro do programa principal, mesmo não sendo necessário para este exercício!!!

3/12/2009

94


Resolução:

close all clear all clc

%Plotar uma matriz aleatória 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


Resolução:

%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


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 Crescente(1,k)=a; k=k+1; end end end end

3/12/2009

97


Resolução:

%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


Resolução:

%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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.