Minicurso Matlab IVSEE 2013 UERJ

4.448 visualizações

Publicada em

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

Publicada em: Educação
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.448
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
198
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Minicurso Matlab IVSEE 2013 UERJ

  1. 1. Mini-curso de MATLAB IV Semana de Engenharia Elétrica Professores: Téo Revoredo – teorevoredo@uerj.br Michel Tcheou – mtcheou@uerj.br
  2. 2. Referência Bibliográfica n  Stephen J. Chapman, “Programação em MATLAB para Engenheiros”, 2 edição, Cengage Learning. n  www.mathworks.com 2
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. Introdução n  Tela principal 9
  10. 10. Introdução n  Tela principal 10
  11. 11. 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
  12. 12. MATLAB BÁSICO 12
  13. 13. 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
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. n  Exemplo: >> distancia = 100 distancia = 100 >> tempo = 3 tempo = 3 >> velocidade_media = distancia / tempo velocidade_media = 33.3333 Variáveis e funções 18
  19. 19. 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:');
  20. 20. 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));
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. 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
  26. 26. 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
  27. 27. 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
  28. 28. 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
  29. 29. 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
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. Vetores n  O MATLAB pode trabalhar com vetores de elementos, realizando operações sobre eles 33
  34. 34. 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
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. 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
  39. 39. Matrizes n  O Matlab permite a criação de matrizes com tantas dimensões quanto necessário para um dado problema 39
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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
  44. 44. 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
  45. 45. 5D =⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = 2 3 C ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = 10 21- B⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = 12 01 A Operações Aritméticas n  Operadores aritméticos 45
  46. 46. 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
  47. 47. 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
  48. 48. 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
  49. 49. 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
  50. 50. 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);
  51. 51. 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
  52. 52. 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
  53. 53. 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
  54. 54. 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
  55. 55. 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
  56. 56. 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
  57. 57. 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
  58. 58. 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) AB j) A/B k) A/B – eye(3) l) A*inv(B) – eye(3) ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = 073 110 013 113 210 321 BA Exercícios 58
  59. 59. n  Exercícios 2. Utilizando os comandos zeros, ones e eye, construa as seguintes matrizes Exercícios ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ =⎥ ⎦ ⎤ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ = ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ = 10 01 1 1 111 111 111 0000 0000 0000 0000 DCBA !zeros(4)! ! ones(3) ! ones(2,1) ! eye(2)! 59
  60. 60. 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
  61. 61. n  Duas linhas no mesmo gráfico (seno e cosseno): n  >> Z = cos(X); >> plot(X,Y,X,Z) Gráficos 61
  62. 62. 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
  63. 63. n  Resultado: Gráficos 63
  64. 64. n  Linhas de grade n  >> grid Gráficos 64
  65. 65. 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
  66. 66. 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');
  67. 67. Gráficos n  Ferramentas de edição 67
  68. 68. Gráficos n  Edição de desenhos 68
  69. 69. 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
  70. 70. Exercícios 70
  71. 71. 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 n aAnf )()( = Código MATLAB: n=-10:1:10; f =10*(.9).^n; stem(n,f); axis([-10 10 0 30]); 71
  72. 72. Exercícios 72
  73. 73. 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 ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ += α π N n Anf 2 cos)( .4/π=a 73
  74. 74. 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
  75. 75. Exercícios 75
  76. 76. 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 ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ += α π N n aAng n 2 cos)()( .4/πα = 76
  77. 77. 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
  78. 78. Exercícios 78
  79. 79. 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
  80. 80. 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
  81. 81. 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
  82. 82. n  Resultado Gráficos 82
  83. 83. 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
  84. 84. n  Resultado Gráficos 84
  85. 85. 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
  86. 86. 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
  87. 87. n  Resultado Gráficos 87
  88. 88. n  Superfícies de contorno n  Função pcolor - Gráfico de pseudocores n  >> pcolor(X,Y,Z) Gráficos 88
  89. 89. PROGRAMAÇÃO EM MATLAB 89
  90. 90. 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
  91. 91. 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
  92. 92. 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
  93. 93. 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
  94. 94. 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
  95. 95. 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
  96. 96. 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
  97. 97. 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
  98. 98. 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);
  99. 99. 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
  100. 100. 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
  101. 101. 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
  102. 102. 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
  103. 103. 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
  104. 104. 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
  105. 105. n  if Condição Verdadeira Falsa Executa uma ação Testa a condição Estruturas de controle 105
  106. 106. 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
  107. 107. n  elseif Condição Verdadeira Falsa Executa uma ação Testa a condição Executa uma ação Estruturas de controle 107
  108. 108. 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
  109. 109. 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 ! 0 x + y2 , x ! 0 e y<0 x2 + y, x<0 e y ! 0 x2 + y2 , x<0 e y<0 " # $ $ % $ $
  110. 110. 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
  111. 111. 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
  112. 112. 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
  113. 113. 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
  114. 114. 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
  115. 115. n  while Condição Verdadeira Falsa Executa uma ação Testa a condição Estruturas de controle 115
  116. 116. 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
  117. 117. 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
  118. 118. 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);
  119. 119. 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);
  120. 120. 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);
  121. 121. 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
  122. 122. 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
  123. 123. n  Uso do break Estruturas de controle 123 for k = 1:5 if k == 3; break; end fprintf(‘k = %dn’, k); end disp(‘Fim do laço!’);
  124. 124. n  Uso do break Estruturas de controle 124 for k = 1:5 if k == 3; break; end fprintf(‘k = %dn’, k); end disp(‘Fim do laço!’); Saída: k = 1 k = 2 Fim do laço!
  125. 125. 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
  126. 126. n  Uso do Continue Estruturas de controle 126 for k = 1:5 if k == 3; continue; end fprintf(‘k = %dn’, k); end disp(‘Fim do laço!’);
  127. 127. n  Uso do Continue Estruturas de controle 127 for k = 1:5 if k == 3; continue; end fprintf(‘k = %dn’, k); end disp(‘Fim do laço!’); Saída: k = 1 k = 2 k = 4 k = 5 Fim do laço!
  128. 128. 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 = 1 N xi i=1 N ! s = N xi 2 i=1 N ! " xi i=1 N ! # $ % & ' ( 2 N(N "1)
  129. 129. n  Cálculo da série de Fourier na forma complexa Série de Fourier Complexa 129 X[k]= 1 N x[n]e! jk"0n n=1 N # "0 = 2! N
  130. 130. 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);
  131. 131. 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
  132. 132. 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)')
  133. 133. 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)')
  134. 134. 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)
  135. 135. 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
  136. 136. 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
  137. 137. 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)
  138. 138. 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);
  139. 139. 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 %fn',result);
  140. 140. 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
  141. 141. 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
  142. 142. MATEMÁTICA SIMBÓLICA 142
  143. 143. 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
  144. 144. 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
  145. 145. 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
  146. 146. Matemática Simbólica n  Gráficos n  >> ezplot(sin(3*x)+2*x) 146
  147. 147. Matemática Simbólica n  Gráficos n  >> ezplot(sin(3*x)+2*x,[1 2]) 147
  148. 148. Matemática Simbólica n  Gráficos n  >> ezsurf(2*x^2-3*y^2-4) 148
  149. 149. 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
  150. 150. 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
  151. 151. 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
  152. 152. 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
  153. 153. 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)
  154. 154. INTERFACES GRÁFICAS E TOOLBOXES 154
  155. 155. Interface gráfica e toolboxes n  Braço robótico 155
  156. 156. Interface gráfica e toolboxes n  Controle de ângulo de ataque aeronave 156
  157. 157. Interface gráfica e toolboxes n  Voo de um 747 157
  158. 158. Toolbox de Processamento de Imagens n  Pixel - Região da Imagem 158 I = imread('lena.jpg'); imshow(I); impixelregion;
  159. 159. Toolbox de Processamento de Imagens 159
  160. 160. 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');
  161. 161. Toolbox de Processamento de Imagens 161
  162. 162. Toolbox de Processamento de Imagens n  Inserindo um Ruído na imagem. 162 n = imnoise(I, 'gaussian'); imshow(n)
  163. 163. Toolbox de Processamento de Imagens 163
  164. 164. SIMULINK 164
  165. 165. Sumário – Simulink n  O que é? n  Variáveis e funções n  Vetores n  Matrizes n  Operações n  Gráficos 165
  166. 166. 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 é?
  167. 167. 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
  168. 168. 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
  169. 169. 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
  170. 170. 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
  171. 171. 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
  172. 172. Exemplos Biblioteca Math Biblioteca Sources n  Exemplo 1 n  Criando uma senóide com nível DC
  173. 173. n  Exemplo 1 n  Ajuste automático da escala do gráfico Exemplos
  174. 174. n  Exemplo 1 n  Ajuste manual da escala do gráfico Exemplos
  175. 175. n  Exemplo 1 n  Inserindo um ganho de -1 (invertendo o sinal) e comparando com a senóide original Exemplos Biblioteca Math
  176. 176. 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.
  177. 177. n  Exemplo 1 n  Alterando os parâmetros da simulação Exemplos Tempo inicial Tempo final
  178. 178. n  Exemplo 1 n  Criando um subsistema Exemplos Sub-sistema
  179. 179. n  Exemplo 1 n  Editando um subsistema Exemplos Sub-sistema
  180. 180. 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
  181. 181. n  Exemplo 1 n  Configuração do bloco “to workspace” Exemplos Cria a variável A no workspace Formato da variável
  182. 182. n  Exemplo 1 n  E lá no Workspace... Exemplos >> plot(tout,A)
  183. 183. n  Exemplo 1 n  Girando um bloco Exemplos CTRL R
  184. 184. n  Exemplo 1 n  Combinando sinais Exemplos Bloco MUX Biblioteca Signals & Sys.
  185. 185. n  Exemplo 1 n  Combinando sinais Exemplos
  186. 186. n  Exemplo 1 n  Configurando... Exemplos
  187. 187. n  Exemplo 2 n  Sistema massa-mola-amortecedor Exemplos
  188. 188. Exercício n  Faça usando um arquivo de comando n  Faça usando o simulink
  189. 189. 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
  190. 190. 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 =
  191. 191. 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 qqq dt dh A ρρρρ −+= R h qq dt dh A ρρρρ −+= 21
  192. 192. 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 + == s K sG sq sh p τ 1 )( )( )(' 2' 2 + == s K sG sq sh p τ onde: AR RK p = = τ
  193. 193. 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 == == AR RKp τ
  194. 194. n  Exemplo 3 Exemplos Corrente q1 Corrente q2
  195. 195. n  Exemplo 3 Exemplos Biblioteca Source Biblioteca Continuous
  196. 196. n  Exemplo 3 Exemplos Degrau começa Em t=0s Degrau começa Em t=10s Bloco Função de Transferência
  197. 197. n  Exemplo 3 Exemplos A amplitude do degrau é 1
  198. 198. n  Exemplo 3 n  Resultados Exemplos 1º estado estacionário 2º estado estacionário 1ª perturbação 2ª perturbação
  199. 199. 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
  200. 200. 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==
  201. 201. Exemplos n  Exemplo 4 Set-point Valor medido Erro: (sp - valor medido)
  202. 202. Exemplos n  Exemplo 4 Controlador Processo Medidor Válvula
  203. 203. 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==
  204. 204. Exemplos n  Exemplo 4 n  O controlador é representado pelo bloco PID Controller. Podemos regular a sua ação proporcional, integral e derivativa.
  205. 205. Exemplos n  Exemplo 5 n  Controle PID de um motor DC
  206. 206. Exemplos n  Exemplo 6 n  Veículo elétrico híbrido de célula a combustível

×