Minicurso Matlab IVSEE 2013 UERJ

206
Mini-curso de MATLAB IV Semana de Engenharia Elétrica Professores: Téo Revoredo – [email protected] Michel Tcheou – [email protected]

description

Apresentação sem vídeo do minicurso de matlab realizada na IV SEE

Transcript of Minicurso Matlab IVSEE 2013 UERJ

Page 1: Minicurso Matlab IVSEE 2013 UERJ

Mini-curso de MATLAB IV Semana de Engenharia Elétrica

Professores: Téo Revoredo – [email protected] Michel Tcheou – [email protected]

Page 2: Minicurso Matlab IVSEE 2013 UERJ

Referência Bibliográfica

n  Stephen J. Chapman, “Programação em MATLAB para Engenheiros”, 2 edição, Cengage Learning.

n  www.mathworks.com

2

Page 3: Minicurso Matlab IVSEE 2013 UERJ

Sumário

n  Introdução n  Matlab Básico n  Programação em Matlab n  Matemática Simbólica n  Interfaces gráficas e Toolbox n  Simulink

3

Page 4: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  MATLAB é acrônimo de MATrix LABoratory n  Foi desenvolvido inicialmente na década de

70 nas Universidades do Novo México e Stanford.

n  Destinado a princípio a cursos de teoria matricial, álgebra linear e análise numérica.

n  Voltado basicamente para matemática numérica.

4

Page 5: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Hoje, é um ambiente de programação de alto nível para aplicações Científicas e de Engenharia.

n  Facilidades n  Oferece um amplo leque de bibliotecas de

funções pré-definidas. n  Muito amigável em funcionalidades

gráficas para Visualização de Dados.

5

Page 6: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Hoje, é um ambiente de programação de alto nível para aplicações Científicas e de Engenharia.

n  Facilidades n  Amplamente divulgado em Universidades

e laboratórios de pesquisa. n  Conveniente para o desenvolvimento de

protótipos.

6

Page 7: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Vantagens n  Facilidade de Uso n  Independência de Plataforma n  Funções Predefinidas n  Interface Gráfica de Usuário n  Compilador MATLAB

n  Desvantagens n  Linguagem Interpretada n  Custo

7

Page 8: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  O que mais? n  Lógica fuzzy n  Redes Neurais n  Processamento de

sinais n  Aquisição de dados n  Banco de Dados n  Finanças

n  Mapas n  Controle Robusto n  Animação n  Simulação de

sistemas dinâmicos (Simulink)

n  Etc

8

Page 9: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Tela principal

9

Page 10: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Tela principal

10

Page 11: Minicurso Matlab IVSEE 2013 UERJ

Introdução

n  Informações do sistema n  computer – Tipo de computador onde

o MATLAB está operando n  version – Versão do MATLAB n  ver – Detalhes da versão do MATLAB e

dos toolboxes n  license – Apresenta a licença do

produto

11

Page 12: Minicurso Matlab IVSEE 2013 UERJ

MATLAB BÁSICO

12

Page 13: Minicurso Matlab IVSEE 2013 UERJ

Sumário – Matlab Básico

n  Números e formatos n  Variáveis e funções n  Vetores n  Matrizes n  Operações n  Gráficos

13

Page 14: Minicurso Matlab IVSEE 2013 UERJ

Números e formatos

n  O MATLAB reconhece vários tipos de números: n  Integer (Ex: 12 - 678), n  Real (Ex: 4.607 - 199.34), n  Complex (Ex: 2 + 3i , i=j=sqrt(-1)), n  Inf (Ex: Infinity 2/0), n  NaN (EX: Not a Number, 0/0).

n  Todos os cálculos são feitos em precisão dupla (Double precision)

14

Page 15: Minicurso Matlab IVSEE 2013 UERJ

Números e formatos

n  O comando format é usado para controlar a impressão dos números

n  O nº de dígitos apresentados não tem a ver com a exatidão

n  Para formatar a visualização: n  format short e: Notação científica com 5 casas

decimais n  format long e: Notação científica com 15 casas

decimais n  format bank: Colocação de dois dígitos significativos

nas casas decimais

15

Page 16: Minicurso Matlab IVSEE 2013 UERJ

Comando pi Comentários

format short 3.1416 5 dígitos format long 3.14159265358979 16 dígitos format short e 3.1416e+000 5 dígitos + expoente

format long e 3.141592653589793e+000 16 dígitos + expoente

format short g 3.1416 short ou short e format long g 3.14159265358979 long ou long e

format hex 400921fb54442d18 Hexadecimal, ponto flutuante

format bank 3.14 2 digitos decimais

format + + positivo(+), negativo(-) ou zero(0)

format rat 355/113 razão aproximada

Números e formatos

n  Formatos

16

Page 17: Minicurso Matlab IVSEE 2013 UERJ

n  Pode-se armazenar valores em variáveis no MATLAB.

n  Variáveis devem ter um nome único, começando com uma letra e podem conter dígitos ou o símbolo _ (underline).

n  O MATLAB distingue letras maiúsculas de minúsculas.

Variáveis e funções

17

Page 18: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo: >> distancia = 100 distancia = 100 >> tempo = 3 tempo = 3 >> velocidade_media = distancia / tempo

velocidade_media = 33.3333

Variáveis e funções

18

Page 19: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Criando e iniciando variáveis: n  Expressões de atribuição

n  Entrada pelo Teclado

19

var = 40i; var2 = var/5; x = 1; y = 2; array = [1 2 3 4];

my_val = input('Enter an input value:');

Page 20: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Criando e iniciando variáveis: n  Expressões de atalho

n  Funções pré-definidas

20

x = 1:2:10 angles = (0.01:0.01:1.00)*pi;

a = zeros(2); b = zeros(2,3); c = [1 2; 3 4]; d = zeros(size(c));

Page 21: Minicurso Matlab IVSEE 2013 UERJ

n  Note que ao digitar o nome da variável, o símbolo = e o seu valor, o MATLAB armazena a variável e a apresenta na tela.

n  Para suprimir a exibição da variável deve-se adicionar um ponto-e-vírgula ao final do comando.

Variáveis e funções

21

Page 22: Minicurso Matlab IVSEE 2013 UERJ

n  Ao criar uma expressão sem armazená-la em uma variável, o MATLAB a salva automaticamente na variável ans.

Variáveis e funções

22

Page 23: Minicurso Matlab IVSEE 2013 UERJ

n  O comando who mostra todas as variáveis armazenadas durante uma sessão do MATLAB. >> who Your variables are: ans tempo Distancia velocidade_media

Variáveis e funções

23

Page 24: Minicurso Matlab IVSEE 2013 UERJ

n  O comando clear “apaga” uma ou mais variáveis. >> clear tempo - Apaga somente a

variável tempo. >> clear velocidade_media distancia

- Apaga as variáveis velocidade_média e distancia.

>> clear - Apaga TODAS as variáveis da sessão.

Variáveis e funções

24

Page 25: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Variáveis especiais n  ans - Nome de variável padrão usado para

resultados. n  pi - 3.1416 n  eps - Menor número que somado a 1, cria

um número maior do que 1. n  inf - Infinito. n  NaN - Não número. n  i e j - n  realmin - menor número real positivo n  realmax - maior número real positivo

1−

25

Page 26: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Funções elementares n  abs(x) - Valor absoluto n  acos(x) - Arco cosseno n  asin(x) - Arco seno n  atan(x) - Arco tangente n  cos(x) - Cosseno n  exp(x) - Exponencial (ex) n  log(x) - Logaritmo natural (base e) n  log10(x) - Logaritmo na base 10 n  sin(x) - Seno n  sqrt(x) - Raiz quadrada n  tan(x) - Tangente

26

Page 27: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Exemplos >> sin(pi/2) ans = 1 >> cos(pi/4)^2 ans = 0.5000 >> asin(1)*180/pi ans = 90

27

Page 28: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Recuperando comandos n  Para evitar redigitação, o Matlab

armazena todos os comandos do usuário durante uma sessão.

n  Para acessar os comandos anteriores basta pressionar a tecla ↑ (seta para cima) seguidas vezes até encontrar o comando desejado.

n  O comando então pode ser editado e executado novamente. 28

Page 29: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Ajuda n  Ajuda e informação no MatLab podem

ser obtidas de várias formas n  Na linha de comando usando help tópico n  Numa janela de ajuda separada no menu

de help n  No helpdesk MatLab mantido no disco ou

CD-ROM ou na internet

29

Page 30: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Ajuda n  Ajuda na linha de comandos

n  >>help pi PI 3.1415926535897.... PI = 4*atan(1) = imag(log(-1)) = 3.1415926535897....

n  >>help sin SIN Sine. SIN(X) is the sine of the elements of X.

n  >>lookfor fft

30

Page 31: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  função disp(str) n  >> str = ['The value of pi = ' num2str(pi)]; n  >> disp (str);

n  função fprintf(format,data)

n  >> fprintf('The value of pi is %f \n',pi)

n  >> fprintf('The value of pi is %6.2f \n',pi)

31

Formatação Resultados

%d Exibe valor como inteiro

%e Exibe valor no formato científico

%f Exibe valor como ponto flutuante

\n Muda de linha

Page 32: Minicurso Matlab IVSEE 2013 UERJ

Variáveis e funções

n  Salvando seções n  Para salvar uma sessão do MATLAB,

deve-se usar a opção Save Workspace As no menu File.

n  Para abrir uma sessão salva anteriormente deve-se utilizar a opção Open no menu File.

n  É possível usar os comandos load e save

32

Page 33: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  O MATLAB pode trabalhar com vetores de elementos, realizando operações sobre eles

33

Page 34: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  Definição de vetores n  >> A = [0 1 2 3 4 5]

A = 0 1 2 3 4 5

n  Outra forma de se criar um conjunto: n  >> A = 1:1:5 A = 1 2 3 4 5 n  O primeiro valor é o valor inicial, o segundo o

“salto”e o terceiro o valor final. 34

Page 35: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  Função linspace - Gera um vetor linearmente espaçado a partir de um valor inicial, um valor final e um número de elementos. n  >> X = linspace(0,pi,6) X = 0 0.6283 1.2566 1.8850 2.5133 3.1416

35

Page 36: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  Função logspace - Gera um vetor logaritmicamente espaçado a partir de uma potência inicial, uma potência final e uma quantidade de valores. n  >> V = logspace(0,2,5) V = 1.0000 3.1623 10.0000 31.6228 100.0000

36

Page 37: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  Acesso a um elemento de um vetor: n  Z = 1 4 9 16 25 n  >> Z(1) ans = 1 n  >> Z(2) ans = 4 n  >> Z(6) ??? Index exceeds matrix dimensions.

37

Page 38: Minicurso Matlab IVSEE 2013 UERJ

Vetores

n  Pode-se acessar mais de um elemento: n  >> Z(1:3) ans = 1 4 9 n  >> Z(3:5) ans = 9 16 25 n  >> Z(2:4) ans = 4 9 16

38

Page 39: Minicurso Matlab IVSEE 2013 UERJ

Matrizes

n  O Matlab permite a criação de matrizes com tantas dimensões quanto necessário para um dado problema

39

Page 40: Minicurso Matlab IVSEE 2013 UERJ

Matrizes

n  Definição de matrizes: n  >> M = [1 0 -1; 2 3 4; -7 1 3] M = 1 0 -1 2 3 4 -7 1 3 n  Os elementos da linha são separados por

espaço em branco e as linhas são separadas por ponto-e-vírgula.

40

Page 41: Minicurso Matlab IVSEE 2013 UERJ

Matrizes

n  Pode-se criar matrizes a partir de vetores ou outras matrizes n  >> b = [2 -3 1]; n  >> Mx = [b' M(:,2:3)] Mx = 2 0 -1 -3 3 4 1 1 3

41

Page 42: Minicurso Matlab IVSEE 2013 UERJ

Matrizes

n  Pode-se criar matrizes a partir de vetores ou outras matrizes n  M(:, 2:3) significa a parte da matriz M

compreendida por todas as linhas (:) e as colunas 2 e 3 (2:3).

n  A matriz Mx foi gerada concatenando-se o vetor b transposto e as colunas 2 e 3 da matriz M.

42

Page 43: Minicurso Matlab IVSEE 2013 UERJ

n  Funções para manipular matrizes n  eye – matriz identidade n  zeros – matriz composta de 0s n  ones – matriz composta de 1s n  rand – matriz de números aleatório n  diag – matriz diagonal n  Rot90 – rotação de uma matriz em 90 graus n  etc

Matrizes

43

Page 44: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores aritiméticos n  Forma Geral: A op B

n  + Soma Estrutural e Matricial n  - Subtração Estrutural e Matricial n  * Multiplicação Matricial n  / Divisão Matricial à Direita n  \ Divisão Matricial à Esquerda n  ^ Expoente Matricial n  ‘ Operador de Transposição

Operações Aritméticas

44

Page 45: Minicurso Matlab IVSEE 2013 UERJ

5D =⎥⎦

⎤⎢⎣

⎡=23

C

⎥⎦

⎤⎢⎣

⎡=

1 0 2 1-

B⎥⎦

⎤⎢⎣

⎡=

1 20 1

A

Operações Aritméticas

n  Operadores aritméticos

45

Page 46: Minicurso Matlab IVSEE 2013 UERJ

n  A + B 0 2 2 2

n  A – B 2 -2 2 0

n  A + C Operação ilegal

n  A + D 6 5 7 6

Operações Aritméticas

n  Operadores aritméticos

46

Page 47: Minicurso Matlab IVSEE 2013 UERJ

n  A * B -1 2

2 5

n  A * C 3 8

n  A .* B -1 0 0 1

n  A .* C Operação ilegal

Operações Aritméticas

n  Operadores aritméticos

47

Page 48: Minicurso Matlab IVSEE 2013 UERJ

n  A / B -1 2 -2 5

n  A \ B -1 2 2 -3

n  A ./ B -1 0 Inf 1

n  A .\ B -1 Inf

0 1

Operações Aritméticas

n  Operadores aritméticos

48

Page 49: Minicurso Matlab IVSEE 2013 UERJ

Operações Aritméticas

n  Hierarquia de operações aritméticas

49

Precedência Operação

1 O conteúdo de todos os parênteses é avaliado, a partir dos parênteses mais internos em direção aos mais externos

2 Todos os expoentes são avaliados, da esquerda para a direita

3 Todas as multiplicações e divisões são avaliadas, da esquerda para a direita.

4 Todas as somas e subtrações são avaliadas, da esquerda para a direita

distance = 0.5*accel*time^2 distance = 0.5*accel*(time^2) distance = (0.5*accel*time)^2

Page 50: Minicurso Matlab IVSEE 2013 UERJ

Operações Aritméticas

n  Avalie as hierarquias de operações

50

a = 3; b = 2; c = 5; d = 3; output = a*b+c*d; output = a*(b+c)*d; output = (a*b)+(c*d); output = a^b^d; output = a^(b^d);

Page 51: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores relacionais

n  Forma geral: A op B

n  A e B: Operandos. Pode ser uma matriz, um escalar ou uma cadeia de caracteres. n  Op: Operador

Operador Operação == Igual a ~= Diferente de > Maior que >= Maior que ou igual a < Menor que <= Menor que ou igual a

Operações Relacionais

51

Page 52: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores relacionais n  Os operadores <, <=, > e >= são usados para

comparar a parte real dos operandos. n  Os operadores == e ~= são usados para

comparar a parte real e imaginária dos operandos.

Operações Relacionais

52

Page 53: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores relacionais Expressão Resultado

5 > 3 1 ‘AC’ > ‘BA´ 0 1 a > b 1 0 1 + j <= 2 + 3*j 1 x >= [3 8] 1 0 a > c 0 1 2 + j == 1+ j 0 5 + j ~= 2 + j 1 a = [2 1] b = [ 1 1 ] c = [ 0 2 ] x = [ 4 2]

Operações Relacionais

53

Page 54: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores lógicos

Operação Lógica Binária Operação Lógica Unária A op B op A

Operador Operação

& E lógico l OU lógico xor Ou exclusivo lógico ~ Não lógico

Operações Lógicas

54

Page 55: Minicurso Matlab IVSEE 2013 UERJ

Entradas e ou xor não A B A & B A l B xor(A,B) ~A

0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0

Operações Lógicas

n  Operadores lógicos

55

Page 56: Minicurso Matlab IVSEE 2013 UERJ

n  Operadores lógicos n  Precedência dos operadores

1. Os operadores aritméticos são avaliados primeiro. 2. Os operadores relacionais são avaliados da esquerda para a direita. 3. Todos os operadores ~ são avaliados. 4. Todos os operadores & são avaliados. 5. Todos os operadores I são avaliados.

OBS: Sempre use parênteses para indicar a ordem

correta desejada de avaliação de uma expressão.

Operações Lógicas

56

Page 57: Minicurso Matlab IVSEE 2013 UERJ

Expressão Resultado ~A 0 A l B 1 B l C 1 3 > 4 & 1 0 3 > (4 & 1) 1 ~C 0 A l B & C 1 A & C 1 B & C 0

A = 1, B = 0 e C = -10

Operações Lógicas

57

Page 58: Minicurso Matlab IVSEE 2013 UERJ

n  Exercícios 1. Para as matrizes A e B, definidas a baixo, execute as seguintes operações e interprete os resultados.

a) A+B b) A*B c) A.*B d) A.^2 e) A^2 f) A*A g) inv(A) h) inv(A)*A i) A\B j) A/B k) A/B – eye(3) l) A*inv(B) – eye(3)

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

⎡=

073110013

113210321

BA

Exercícios

58

Page 59: Minicurso Matlab IVSEE 2013 UERJ

n  Exercícios 2. Utilizando os comandos zeros, ones e eye, construa as seguintes matrizes

Exercícios

⎥⎦

⎤⎢⎣

⎡=⎥

⎤⎢⎣

⎡=

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥⎥

⎢⎢⎢⎢

=1001

11

111111111

0000000000000000

DCBA

!zeros(4)! ! ones(3) ! ones(2,1) ! eye(2)!

59

Page 60: Minicurso Matlab IVSEE 2013 UERJ

n  Pode-se gerar gráficos a partir de matrizes.

n  Exemplo n  >> X = linspace(0,2*pi,100);

>> Y = sin(X); >> plot(X,Y)

Gráficos

60

Page 61: Minicurso Matlab IVSEE 2013 UERJ

n  Duas linhas no mesmo gráfico (seno e cosseno): n  >> Z = cos(X);

>> plot(X,Y,X,Z)

Gráficos

61

Page 62: Minicurso Matlab IVSEE 2013 UERJ

n  Título para o gráfico: >> title('seno(x) e cosseno(x)')

n  Nome para o eixo x: >> xlabel('grau (em radianos)')

n  Nome para o eixo y: >> ylabel('variaveis dependentes')

Gráficos

62

Page 63: Minicurso Matlab IVSEE 2013 UERJ

n  Resultado:

Gráficos

63

Page 64: Minicurso Matlab IVSEE 2013 UERJ

n  Linhas de grade n  >> grid

Gráficos

64

Page 65: Minicurso Matlab IVSEE 2013 UERJ

Gráficos

n  Cores e estilos de linha, estilos de marcadores e legendas

65

b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star (none) no line y yellow s square k black d diamond w white v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram

Page 66: Minicurso Matlab IVSEE 2013 UERJ

Gráficos

66

x = 0:1:10; y = x.^2 - 10.*x + 15; plot(x,y);

x = 0:1:10; y = x.^2 - 10.*x + 15; plot(x,y,'r--',x,y,'bo');

Page 67: Minicurso Matlab IVSEE 2013 UERJ

Gráficos

n  Ferramentas de edição

67

Page 68: Minicurso Matlab IVSEE 2013 UERJ

Gráficos

n  Edição de desenhos

68

Page 69: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência rampa n  Uma sequência rampa transladada com declive B é

definida como n  Sequência rampa unitária e sequências de rampa

transladada

)()( 0nnBng −=

Código MATLAB : n=-10:1:20; f=2*(n-10); stem(n,f);

Exercícios

69

Page 70: Minicurso Matlab IVSEE 2013 UERJ

Exercícios

70

Page 71: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência exponencial Real n  Definida como: n  Exemplo para A = 10 e a = 0.9, a sequência

aproxima-se de zero quando n tende para infinito e aproxima-se de mais infinito quando n tende para menos infinito

Exercícios

naAnf )()( =

Código MATLAB: n=-10:1:10; f =10*(.9).^n; stem(n,f); axis([-10 10 0 30]); 71

Page 72: Minicurso Matlab IVSEE 2013 UERJ

Exercícios

72

Page 73: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência senoidal n  Uma sequência senoidal pode ser descrita como:

n  Onde A é um número real positivo (amplitude), N é o período, e a a fase.

n  Exemplo: n  A = 5, N = 16 n  e

Exercícios

⎟⎠

⎞⎜⎝

⎛ += απNnAnf 2cos)(

.4/π=a

73

Page 74: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência senoidal

Exercícios

Código MATLAB: 1. n=-20:1:20; 2. f=5*[cos(n*pi/8+pi/4)]; 3. stem(n,f);

74

Page 75: Minicurso Matlab IVSEE 2013 UERJ

Exercícios

75

Page 76: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência senoidal modulada exponencialmente n  Obtém-se através da multiplicação de uma sequência

exponencial por uma sequência senoidal. n  Pode ser descrita por :

n  Exemplo: n  A = 10, N = 16, a = 0.9 n 

Exercícios

⎟⎠

⎞⎜⎝

⎛ += απNnaAng n 2cos)()(

.4/πα =76

Page 77: Minicurso Matlab IVSEE 2013 UERJ

n  Sequência senoidal modulada exponencialmente

Exercícios

Código MATLAB: 1.  n=-20:1:20; 2.  f=10*[0.9 .^n]; 3.  g=[cos(2*n*pi/16+pi/4)]; 4.  h=f.*g; 5.  stem(n,h); 6.  axis([-20 20 -30 70]);

77

Page 78: Minicurso Matlab IVSEE 2013 UERJ

Exercícios

78

Page 79: Minicurso Matlab IVSEE 2013 UERJ

n  Gráficos 3D n  Gráficos de Linhas - Função plot3

>> X = linspace(0, 10*pi, 300); >> Y = sin(X); >> Z = cos(X); >> plot3(X,Y,Z) >> grid

Gráficos

79

Page 80: Minicurso Matlab IVSEE 2013 UERJ

n  Gráficos 3D n  Gráficos de Superfícies - funcão mesh

>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)

n  Utilizamos a função meshgrid para gerar X e Y como matrizes com valores repetidos que são utilizadas para gerar a matriz Z.

Gráficos

80

Page 81: Minicurso Matlab IVSEE 2013 UERJ

n  Gráficos 3D n  Gráficos de Superfícies - funcão mesh

>> v = linspace(-10,10,20); >> [X, Y] = meshgrid(v,v); >> Z = X.^2 + Y.^2; >> mesh(X,Y,Z)

n  Utilizamos a função meshgrid para gerar X e Y como matrizes com valores repetidos que são utilizadas para gerar a matriz Z.

Gráficos

81

Page 82: Minicurso Matlab IVSEE 2013 UERJ

n  Resultado

Gráficos

82

Page 83: Minicurso Matlab IVSEE 2013 UERJ

n  Gráficos 3D n  Função mesh - superfícies em rede n  Função surf - superfícies coloridas (opacas) n  Função surfl - superfícies coloridas com uma

fonte de luz. n  Exemplo 1: >> surf(X,Y,Z) n  Exemplo 2: >> colormap(gray) >> surfl(X,Y,Z)

Gráficos

83

Page 84: Minicurso Matlab IVSEE 2013 UERJ

n  Resultado

Gráficos

84

Page 85: Minicurso Matlab IVSEE 2013 UERJ

n  Rotação em gráficos 3D n  Para rotacionar um gráfico 3D primeiro clique no

botão presente na janela do gráfico. n  Após isto, clique sobre o gráfico e mantenha o

botão do mouse pressionado. n  Uma caixa irá aparecer indicando a direção do

gráfico. n  Agora, basta movimentar o mouse para ajustar a

posição desejada do gráfico.

Gráficos

85

Page 86: Minicurso Matlab IVSEE 2013 UERJ

n  Superfícies de contorno n  Função contour - Gera superfícies de

contorno. >> contour(X,Y,Z,30)

n  Os três primeiros parâmetros são as matrizes com os dados para os gráficos. O quarto parâmetro é o número de contornos.

Gráficos

86

Page 87: Minicurso Matlab IVSEE 2013 UERJ

n  Resultado

Gráficos

87

Page 88: Minicurso Matlab IVSEE 2013 UERJ

n  Superfícies de contorno n  Função pcolor - Gráfico de pseudocores

n  >> pcolor(X,Y,Z)

Gráficos

88

Page 89: Minicurso Matlab IVSEE 2013 UERJ

PROGRAMAÇÃO EM MATLAB

89

Page 90: Minicurso Matlab IVSEE 2013 UERJ

Sumário – Programação em Matlab

n  Projeto de programa n  Arquivo de comando n  Estruturas de controle n  Funções definidas pelo usuário

90

Page 91: Minicurso Matlab IVSEE 2013 UERJ

Projeto de Programa

n  Diante de um novo problema, é natural irmos direto ao teclado sem perder tempo a respeito do problema;

n  Em casos de problemas pequenos, é possível resolver a situação com essa abordagem “em tempo real”;

n  Para problemas maiores, vale a pena pensar no problema e na abordagem a ser usada antes de escrever uma linha de código;

91

Page 92: Minicurso Matlab IVSEE 2013 UERJ

Projeto de Programa

n  Projeto Top-down

92

Estabeleça o problema que você está tentando resolver

Defina as entradas e saídas requeridas

Projete o algoritmo

Converta o algoritmo em MATLAB

Teste o programa MATLAB resultante

Início

Fim

Page 93: Minicurso Matlab IVSEE 2013 UERJ

n  Algoritmo n  Série de ações executadas em uma ordem

especifica. n  Pseudocódigo

n  Linguagem artificial e informal de representar o código de um programa.

n  Útil para desenvolver algoritmos que serão convertidos em programas estruturados no MATLAB.

Projeto de Programa

93

Page 94: Minicurso Matlab IVSEE 2013 UERJ

Projeto de Programa

n  Exemplo de Pseudocódigo

94

Código MATLAB: temp_f = input('Enter the temperature in degrees Fahrenheit: '); temp_k = (5/9) * (temp_f - 32) + 273.15; fprintf('%6.2f degrees Fahrenheit = %6.2f kelvin.\n’,temp_f,temp_k);

1. Solicite ao usuário a temperatura em graus Fahrenheit 2. Leia a temperatura em graus Fahrenheit (temp_f) 3. temp_k in kelvins = (5/9) * (temp_f - 32) + 273.15 4. Escreva a temperatura em kelvin

Page 95: Minicurso Matlab IVSEE 2013 UERJ

n  Geralmente, utiliza-se o prompt do MATLAB para introduzir os comandos.

n  Este procedimento simples para execução de comandos no prompt se torna altamente ineficiente quando a complexidade do problema aumenta.

n  Para problemas simples podemos usar o prompt do MATLAB e para os mais difíceis deve-se utilizar o script-file ou M-file, que é também conhecido como arquivo de comando ou arquivo M.

Arquivos de comando

95

Page 96: Minicurso Matlab IVSEE 2013 UERJ

n  Erro comum de Programação: Os nomes dos arquivos de comando precisam sempre terminar com a extensão ‘.m’.

Exemplos: programa1.m, exemplo1.m, etc.

Arquivos de comando

96

Page 97: Minicurso Matlab IVSEE 2013 UERJ

n  Como Criar um Arquivo M (M-file) n  Para criar um arquivo M-file, deve-se seguir os

seguintes passos: n  Abrir o MATLAB n  Selecionar o menu File n  Selecionar o item New e em seguida apontar para

M-file e clicar.

Arquivos de comando

97

Page 98: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo de script-file.

Arquivos de comando

98

% script-file: circulo.m % Este programa calcula a área de um circulo raio = 2.5; area = pi*raio^2; fprintf('Area do circulo = %.3f ', area);

Page 99: Minicurso Matlab IVSEE 2013 UERJ

n  Como Executar um Arquivo M (M-file) n  Para executar um arquivo M-file no MATLAB é preciso

gravar o arquivo correspondente. Para isto, deve-se selecionar o item Save Workspace As do menu File.

n  É interessante dar preferência a salvar o arquivo no diretório corrente do MATLAB, ou seja, na pasta work.

n  Para executar o arquivo M, basta digitar no prompt do MATLAB o nome do arquivo salvado anteriormente, sem a extensão ‘.m’. Feito isso o MATLAB gera o executável do programa.

Arquivos de comando

99

Page 100: Minicurso Matlab IVSEE 2013 UERJ

n  Para exemplificar, considere o arquivo circulo.m. Digite no prompt do MATLAB o nome do arquivo circulo. Será apresentado o executável do programa. n  >> circulo Area do circulo = 19.635

Arquivos de comando

100

Page 101: Minicurso Matlab IVSEE 2013 UERJ

n  Em resumo, pode-se dizer que um programa em MATLAB consiste na criação do arquivo M-file utilizando-se o editor de texto e sua respectiva chamada por linha de comando no prompt do MATLAB.

Arquivos de comando

101

Page 102: Minicurso Matlab IVSEE 2013 UERJ

n  Controle de Fluxo O controle de fluxo é um recurso que permite que resultados anteriores influenciem operações futuras. Como em outras linguagens, o MATLAB possui recursos que permitem o controle de fluxo de execução de comandos, com base em estruturas de tomada de decisões. Serão apresentadas a seguir as seguintes estruturas de controle: n  Ramificações: if, elseif, switch n  Laços: while, for

Estruturas de controle

102

Page 103: Minicurso Matlab IVSEE 2013 UERJ

n  Simbologia

Símbolo de decisão

Indica que ações serão executadas

Inicio e fim de uma estrutura de uma controle

Estruturas de controle

103

Page 104: Minicurso Matlab IVSEE 2013 UERJ

n  if n  Estrutura de seleção para escolha de cursos de ação

específicos. n  A estrutura de seleção if executa uma ação indicada

só quando a condição é true (Verdadeira); caso contrário, a ação é saltada.

Estruturas de controle

104

Page 105: Minicurso Matlab IVSEE 2013 UERJ

n  if

Condição Verdadeira

Falsa

Executa uma ação

Testa a condição

Estruturas de controle

105

Page 106: Minicurso Matlab IVSEE 2013 UERJ

n  Pseudocódigo n  Se a nota do estudante for maior ou igual que 7.0

Imprima “Aprovado”

n  Código no Matlab if nota >= 7

fprintf(‘Aprovado’); end

Estruturas de controle

106

Page 107: Minicurso Matlab IVSEE 2013 UERJ

n  elseif

Condição Verdadeira Falsa

Executa uma ação

Testa a condição

Executa uma ação

Estruturas de controle

107

Page 108: Minicurso Matlab IVSEE 2013 UERJ

n  Pseudocódigo n  Se a nota do estudante for maior ou igual que 7.0

Imprima “Aprovado” senão Imprima “Reprovado”

n  Código no Matlab if nota >= 7

fprintf(‘Aprovado’); else fprintf(‘Reprovado’); end

Estruturas de controle

108

Page 109: Minicurso Matlab IVSEE 2013 UERJ

Estruturas de controle

n  Exercício: Escreva um programa MATLAB para avaliar uma função f(x,y) para quaisquer dos valores x e y especificados pelo usuário. A função f(x,y) é definida a seguir

109

f (x, y) =

x + y, x ! 0 e y ! 0x + y2, x ! 0 e y<0 x2 + y, x<0 e y ! 0x2 + y2, x<0 e y<0

"

#

$$

%

$$

Page 110: Minicurso Matlab IVSEE 2013 UERJ

n  switch n  Permite que um programador selecione um

bloco de código a ser executado com base no valor de um único inteiro, caractere ou expressão lógica

Estruturas de controle

110

Page 111: Minicurso Matlab IVSEE 2013 UERJ

Estruturas de controle

111

switch (expr_switch) case expr_case1 Declaração 1 Declaração 2 ... case expr_case2 Declaração 1 Declaração 2 ... ... otherwise, Declaração 1 Declaração 2 ... end

Bloco 1

Bloco 2

Bloco N

switch (expr_switch) case {expr_case1, expr_case2, expr_case3} Declaração 1 Declaração 2 otherwise, Declaração 1 Declaração 2 ... end

Page 112: Minicurso Matlab IVSEE 2013 UERJ

Estruturas de controle

n  Exemplo

112

switch (value) case {1,3,5,7,9} disp('The value is odd.'); case {2,4,6,8,10} disp('The value is even.'); otherwise disp('The value is out of range.'); end

Page 113: Minicurso Matlab IVSEE 2013 UERJ

n  Laços são construções MATLAB que nos permitem executar uma sequência de declarações mais de uma vez.

n  Existem dois tipos de laços: n  while n  for

Estruturas de controle

113

Page 114: Minicurso Matlab IVSEE 2013 UERJ

n  while: é um bloco de declarações que se repete indefinidamente, enquanto uma condição for satisfeita.

A forma geral do while é: while expressão ... ... Bloco de código ... end

Estruturas de controle

114

Page 115: Minicurso Matlab IVSEE 2013 UERJ

n  while

Condição Verdadeira

Falsa

Executa uma ação

Testa a condição

Estruturas de controle

115

Page 116: Minicurso Matlab IVSEE 2013 UERJ

n  Laço for : Executa um bloco de declarações durante um número especificado de vezes.

for indice = expressão Declaração 1 .... Corpo Declaração n

end

Estruturas de controle

116

Page 117: Minicurso Matlab IVSEE 2013 UERJ

cont = 1

cont <= n

Falso

Verdadeiro Corpo do laço cont = cont + 1

n: número de iterações do laço for

cont: variável de controle

Inicialização da variável de controle

cont = 2

cont = 3

Estruturas de controle

117

Page 118: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo: Calcular a soma dos 10 primeiros inteiros.

10987654321 +++++++++=Soma

Estruturas de controle

118

soma = 0; % Inicializa a variável soma com zero for k = 1:10 soma = soma + k; end fprintf('A soma dos dez primeiros inteiros eh: %.2f', soma);

Page 119: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo: Calcular o fatorial de um número n.

Estruturas de controle

119

n = 5; fatorial = 1; % Inicializa a variável soma com zero for k = 1:n % Laço de repetição: n vezes fatorial = fatorial*k; % Cálculo do fatorial end fprintf(‘O fatorial de %.2f eh %.2f', n, fatorial);

Page 120: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo: Calcular a soma dos 5 primeiros inteiros impares.

Estruturas de controle

120

soma = 0; % Inicializa a variável soma com zero for k = 1:2:9 soma = soma + k; end fprintf('A soma dos 5 primeiros inteiros impares eh: %.2f', soma);

Page 121: Minicurso Matlab IVSEE 2013 UERJ

n  for X while n  while: utilizado para repetir um trecho de código

quando não é desconhecido o número de iterações do laço.

n  for: utilizado para repetir um trecho de código quando é conhecido o número de iterações do laço.

Estruturas de controle

121

Page 122: Minicurso Matlab IVSEE 2013 UERJ

n  Break n  Usada para controlar a operação dos laços for e while n  Encerra a execução do laço e passa o controle para a

próxima declaração logo após o fim do laço.

Estruturas de controle

122

Page 123: Minicurso Matlab IVSEE 2013 UERJ

n  Uso do break

Estruturas de controle

123

for k = 1:5 if k == 3;

break; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);

Page 124: Minicurso Matlab IVSEE 2013 UERJ

n  Uso do break

Estruturas de controle

124

for k = 1:5 if k == 3;

break; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);

Saída: k = 1 k = 2 Fim do laço!

Page 125: Minicurso Matlab IVSEE 2013 UERJ

n  Continue n  Usada para controlar a operação dos laços for

e while n  Termina a passagem corrente pelo laço e

retorna o controle para o início do laço.

Estruturas de controle

125

Page 126: Minicurso Matlab IVSEE 2013 UERJ

n  Uso do Continue

Estruturas de controle

126

for k = 1:5 if k == 3;

continue; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);

Page 127: Minicurso Matlab IVSEE 2013 UERJ

n  Uso do Continue

Estruturas de controle

127

for k = 1:5 if k == 3;

continue; end fprintf(‘k = %d\n’, k); end disp(‘Fim do laço!’);

Saída: k = 1 k = 2 k = 4 k = 5 Fim do laço!

Page 128: Minicurso Matlab IVSEE 2013 UERJ

Estruturas de controle

n  Exercício: Implemente um algoritmo que calcule a média e o desvio-padrão de um conjunto de dados de entrada. n  dados de entrada: x = [3 4 5 -1]

n  média:

n  desvio-padrão:

128

x = 1N

xii=1

N

!

s =N xi

2

i=1

N

! " xii=1

N

!#

$%

&

'(

2

N(N "1)

Page 129: Minicurso Matlab IVSEE 2013 UERJ

n  Cálculo da série de Fourier na forma complexa

Série de Fourier Complexa

129

X[k]= 1N

x[n]e! jk"0nn=1

N

#

"0 =2!N

Page 130: Minicurso Matlab IVSEE 2013 UERJ

Série de Fourier Complexa

130

disp('Algoritmo para calculo da serie de Fourier') disp('na forma complexa para a funcao x(t)=-at^2+b*t+c') disp('------------------------------------------------’) % %Definicao e plotagem da funcao a ser expandida em serie de Fourier % a = input('Insira o valor do coeficiente a:'); b = input('Insira o valor do coeficiente b:'); c = input('Insira o valor do coeficiente c:'); t=0:0.01:100; xt=-a.*t.*t+b.*t+c; plot(t,xt) ylabel('x(t)=-0.01t^2+t+10') xlabel('t') N=length(xt);

Page 131: Minicurso Matlab IVSEE 2013 UERJ

Série de Fourier Complexa

131

%Calculo dos coeficientes Xn da serie de Fourier harmonicos = input('Insira o numero de harmonicos desejados:'); for n = 1:harmonicos; for k = 1:N; integral(k) = exp(-j*2*pi*(n-1)*k/N)*xt(k); end X(n) = sum(integral)/N; end

Page 132: Minicurso Matlab IVSEE 2013 UERJ

Série de Fourier Complexa

132

%Calculo e plotagem das amplitude e fase de X amplitude = abs(X); fase = angle(X); omega = 0:harmonicos-1; figure subplot(211), stem(omega,amplitude) ylabel('Amplitude') xlabel('Frequencia (multiplos de \omega_0)') subplot(212), stem(omega,fase) ylabel('Fase') xlabel('Frequencia (multiplos de \omega_0)')

Page 133: Minicurso Matlab IVSEE 2013 UERJ

Série de Fourier Complexa

133

%Calculo e plotagem das partes real e imaginaria de X Xreal = real(X); Ximag = imag(X); figure subplot(211), stem(omega,Xreal) ylabel('X_{real}') xlabel('Frequencia (multiplos de \omega_0)') subplot(212), stem(omega,Ximag) ylabel('X_{imaginario}') xlabel('Frequencia (multiplos de \omega_0)')

Page 134: Minicurso Matlab IVSEE 2013 UERJ

Série de Fourier Complexa

134

%Calculo da aproximacao da funcao original utilizando "m" harmonicos m = input('Insira o numero de harmonicos desejados para reconstrucao da funcao:'); for k=1:N; for n = 1:m; e(n) = X(n)*exp(j*2*pi*(n-1)*k/N); end funcao(k) = sum(e); end figure(1) hold on plot(t,funcao)

Page 135: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Um programa pode ser dividido em subtarefas;

n  É possível codificar cada subtarefa como uma função separada;

n  Cada função pode ser testada e depurada de forma independente das outras funções do programa;

135

Page 136: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Benefícios n  Teste independente das subtarefas; n  Código reutilizável; n  Isolamento de efeitos colaterais indesejados;

n  Uma função MATLAB é tipo especial de arquivo M executado em um espaço de trabalho independente;

136

Page 137: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Forma geral

137

function [outarg1, outarg2, ...] = fname(inarg1, inarg2, ...) % H1 comment line % Other comment lines ... (Executable code) ... (return) (end)

Page 138: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Exemplo – função dist2

138

function distance = dist2 (x1, y1, x2, y2) %DIST2 Calculate the distance between two points % Function DIST2 calculates the distance between % two points (x1,y1) and (x2,y2) in a Cartesian % coordinate system. % Calculate distance. distance = sqrt((x2-x1).^2 + (y2-y1).^2);

Page 139: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Exemplo – Script que chama a função dist2

139

% Script file: test_dist2.m % Get input data. disp('Calculate the distance between two points:'); ax = input('Enter x value of point a: '); ay = input('Enter y value of point a: '); bx = input('Enter x value of point b: '); by = input('Enter y value of point b: '); % Evaluate function result = dist2 (ax, ay, bx, by); % Write out result. fprintf('The distance between points a and b is %f\n',result);

Page 140: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Exercício: A localização de um ponto cartesiano pode ser expressa por coordenadas retangulares (x,y) ou polares (r,θ), como ilustrado abaixo.

140

Page 141: Minicurso Matlab IVSEE 2013 UERJ

Funções definidas pelo usuário

n  Exercício (continuação): A relação entre esses dois conjuntos de coordenadas é dada por

n  Escreva duas funções rect2polar e polar2rect, que convertam coordenadas de retangular para polar, e vice-versa, com θ expresso em graus

141

Page 142: Minicurso Matlab IVSEE 2013 UERJ

MATEMÁTICA SIMBÓLICA

142

Page 143: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  O Matlab permite o cálculo simbólico através do Toolbox de Matemática Simbólica;

n  Esse toolbox utiliza o kernel do MAPLE;

n  O Matlab realiza todas as operações elementares entre expressões simbólicas utilizando a sintaxe comum

143

Page 144: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Operações Matemáticas n  >> syms x n  >> x+2*x n  >> x*x - 5*x^2 n  >> sqrt(x^2) n  >> cos(pi-x)

144

Page 145: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Substituição de variável em uma expressão simbólica n  >>subs(4*x^2-4,x,2)

n  Solução simbólica de equações algébricas (ex: x^2-2*x+1 = 0) n  >>solve(x^2-2*x+1)

145

Page 146: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Gráficos n  >> ezplot(sin(3*x)+2*x)

146

Page 147: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Gráficos n  >> ezplot(sin(3*x)+2*x,[1 2])

147

Page 148: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Gráficos n  >> ezsurf(2*x^2-3*y^2-4)

148

Page 149: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Limite n  >> syms x n  >> limit(sin(x-1)/(1-x),x,1)

n  Série n  soma dos 100 primeiros termos de

n  >> symsum((4*n+1)/(n+3),n,1,100)

149

Page 150: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Derivada n  >> syms x n  >> diff(sin(2*x))

n  Derivada de ordem superior n  >> diff(sin(2*x),2)

150

Page 151: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Derivadas Parciais n  >> syms x y n  >> g = x*y + x^2

n  >> diff(g) % computes ∂g/∂x n  >> diff(g, x) % also ∂g/∂x n  >> diff(g, y) % ∂g/∂y

151

Page 152: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Integral n  >> syms x

n  Integral de n  >> int(6*x^3-2*x^2+1) % Indefinida n  >> int(6*x^3-2*x^2+1,1,2) % Definida

n  >> int(exp(-x),0,inf)

152

Page 153: Minicurso Matlab IVSEE 2013 UERJ

Matemática Simbólica

n  Integral

153

>> syms x a b >> f = x/(a*x+b) >> pretty(f) >> g = int(f) >> pretty(g) >> latex(g) >> ccode(g) >> fortran(g)

Page 154: Minicurso Matlab IVSEE 2013 UERJ

INTERFACES GRÁFICAS E TOOLBOXES

154

Page 155: Minicurso Matlab IVSEE 2013 UERJ

Interface gráfica e toolboxes

n  Braço robótico

155

Page 156: Minicurso Matlab IVSEE 2013 UERJ

Interface gráfica e toolboxes

n  Controle de ângulo de ataque aeronave

156

Page 157: Minicurso Matlab IVSEE 2013 UERJ

Interface gráfica e toolboxes

n  Voo de um 747

157

Page 158: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

n  Pixel - Região da Imagem

158

I = imread('lena.jpg'); imshow(I); impixelregion;

Page 159: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

159

Page 160: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

n  Filtrando Imagens

160

I = imread('lena.jpg'); subplot(2,2,1); imshow(I); title('Imagem Original'); %Criando um filtro H = fspecial('motion',20,45); %Filtrando a imagem com o filtro especificado MotionBlur = imfilter(I,H,'replicate'); subplot(2,2,2); imshow(MotionBlur);title('Motion Blurred Image'); H = fspecial('disk',10); blurred = imfilter(I,H,'replicate'); subplot(2,2,3); imshow(blurred); title('Blurred Image'); H = fspecial('unsharp'); sharpened = imfilter(I,H,'replicate'); subplot(2,2,4); imshow(sharpened); title('Sharpened Image');

Page 161: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

161

Page 162: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

n  Inserindo um Ruído na imagem.

162

n = imnoise(I, 'gaussian'); imshow(n)

Page 163: Minicurso Matlab IVSEE 2013 UERJ

Toolbox de Processamento de Imagens

163

Page 164: Minicurso Matlab IVSEE 2013 UERJ

SIMULINK

164

Page 165: Minicurso Matlab IVSEE 2013 UERJ

Sumário – Simulink

n  O que é? n  Variáveis e funções n  Vetores n  Matrizes n  Operações n  Gráficos

165

Page 166: Minicurso Matlab IVSEE 2013 UERJ

n  Um ambiente de modelagem e simulação de sistemas dinâmicos e embarcados.

n  Provê uma interface gráfica interativa e um conjunto de bibliotecas de blolcos configuráveis que permitem o projeto, a simulação, a implementação e o teste de uma grande variedade de sistemas variantes no tempo, incluíndo: comunicações, controle, processamento de sinais, de vídeo e de imagens.

O que é?

Page 167: Minicurso Matlab IVSEE 2013 UERJ

Iniciando o Simulink

1. Digitar simulink no prompt de comando

2. Clicar no botão na barra de ferramentas

ou

ou 3. Navegar pelo botão iniciar do MATLAB

Programação

Page 168: Minicurso Matlab IVSEE 2013 UERJ

n  A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:

1.  Escolha os blocos funcionais desejados na biblioteca;

Programação

Page 169: Minicurso Matlab IVSEE 2013 UERJ

n  A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:

2.  Arraste-os para o espaço de trabalho (área de programação)

Programação

Page 170: Minicurso Matlab IVSEE 2013 UERJ

n  A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:

3.  Conecte-os da maneira adequada para obter o comportamento desejado

Programação

Page 171: Minicurso Matlab IVSEE 2013 UERJ

n  A programação no Simulink segue uma interface gráfica intuitiva e fácil de usar:

4.  Ajuste os parâmetros da simulação; 5.  Execute o programa.

Programação

Page 172: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

Biblioteca Math

Biblioteca Sources

n  Exemplo 1 n  Criando uma senóide com nível DC

Page 173: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Ajuste automático da escala do gráfico

Exemplos

Page 174: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Ajuste manual da escala do gráfico

Exemplos

Page 175: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Inserindo um ganho de -1 (invertendo o sinal) e

comparando com a senóide original

Exemplos

Biblioteca Math

Page 176: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Configuração dos parâmetros do bloco product

Exemplos

Número de termos da multiplicação.

Multiplicação de matrizes ou termo a termo.

Page 177: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Alterando os parâmetros da simulação

Exemplos

Tempo inicial

Tempo final

Page 178: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Criando um subsistema

Exemplos

Sub-sistema

Page 179: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Editando um subsistema

Exemplos

Sub-sistema

Page 180: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  As vezes é interessante tratar os dados no

ambiente do Matlab: Usa-se o bloco “to workspace”

Exemplos

Cria a variável A no workspace

Biblioteca Sinks

Page 181: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Configuração do bloco “to workspace”

Exemplos

Cria a variável A no workspace

Formato da variável

Page 182: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  E lá no Workspace...

Exemplos

>> plot(tout,A)

Page 183: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Girando um bloco

Exemplos

CTRL R

Page 184: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Combinando sinais

Exemplos

Bloco MUX Biblioteca Signals & Sys.

Page 185: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Combinando sinais

Exemplos

Page 186: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 1 n  Configurando...

Exemplos

Page 187: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 2 n  Sistema massa-mola-amortecedor

Exemplos

Page 188: Minicurso Matlab IVSEE 2013 UERJ

Exercício

n  Faça usando um arquivo de comando n  Faça usando o simulink

Page 189: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  Simulação de um tanque de nível sob a

influência de uma perturbação degrau na vazão da alimentação.

Exemplos

q1

q3

q2

h

A

Page 190: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  Assumindo

n  Densidade do líquido e a área da seção

transversal do tanque (A) constantes.

n  Relação entre a vazão e a carga é linear:

Exemplos

Rhq /3 =

Page 191: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  O modelo é descrito por uma equação de

balanço transiente de massa no tanque:

n  Substituindo a hipótese II na equação:

Exemplos

321 qqqdtdhA ρρρρ −+=

Rhqq

dtdhA ρρρρ −+= 21

Page 192: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  Introduzindo as variáveis-desvio e aplicando a

Transformada de Laplace, chega-sa às funções de transferência:

Exemplos

1)(

)()('

1'1 +

==sK

sGsqsh p

τ

1)(

)()('

2'2 +

==sK

sGsqsh p

τ onde:

ARRK p

=

=

τ

Page 193: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  Considera-se um tanque de 0.5 m de diâmetro

e uma válvula na saída na linha atuando sob uma resistência linear (R) de 6.37 min/m2.

n  Serão simulados um degrau de 1 ft3 na vazão q1 a partir do tempo igual a 0 min (step) e um degrau de 1 ft3 na vazão q2 a partir do tempo igual a 10 min(step1).

Exemplos

A = 3.1415 * (0.5/2)^2 A = 0.196 R = 6.37 25.1

37.6

==

==

ARRKp

τ

Page 194: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3

Exemplos

Corrente q1

Corrente q2

Page 195: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3

Exemplos

Biblioteca Source

Biblioteca Continuous

Page 196: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3

Exemplos

Degrau começa Em t=0s

Degrau começa Em t=10s

Bloco Função de Transferência

Page 197: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3

Exemplos

A amplitude do degrau é 1

Page 198: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 3 n  Resultados

Exemplos

1º estado estacionário

2º estado estacionário

1ª perturbação

2ª perturbação

Page 199: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 4 n  Considerando um sistema de controle de nível

mostrado abaixo. O nível de líquido é medido e a saída do transmissor de nível (LT) é enviada para um controlador feedback (LC) que controla o nível pelo ajuste da vazão volumétrica q2. A segunda vazão de fluido, q1, corresponde à variável perturbação (corrente chegando de outra unidade, não posso controlar essa corrente).

Exemplos q1

q3

q2

h

A

LT LC hm

Page 200: Minicurso Matlab IVSEE 2013 UERJ

n  Exemplo 4 n  Considerando uma válvula com a seguinte

função de transferência:

n  Considerando um medidor com a seguinte função de transferência:

Exemplos

psimKG vv min/0103.0 3==

mpsiKG mm /24==

Page 201: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 4

Set-point

Valor medido

Erro: (sp - valor medido)

Page 202: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 4 Controlador Processo

Medidor

Válvula

Page 203: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 4 n  Quando a função de transferência é

apenas uma constante, como no caso do medidor, pode-se representa-lá pelo bloco Gain.

mpsiKG mm /24==

Page 204: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 4 n  O controlador é representado pelo bloco

PID Controller. Podemos regular a sua ação proporcional, integral e derivativa.

Page 205: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 5 n  Controle PID de um motor DC

Page 206: Minicurso Matlab IVSEE 2013 UERJ

Exemplos

n  Exemplo 6 n  Veículo elétrico híbrido de célula a

combustível