minicursomatlabivsee2013semvideo-130627183525-phpapp01

Upload: thiago-motta

Post on 01-Mar-2016

2 views

Category:

Documents


0 download

DESCRIPTION

minicursomatlabivsee2013semvideo-130627183525-phpapp01

TRANSCRIPT

  • Mini-curso de MATLAB IV Semana de Engenharia Eltrica

    Professores: To Revoredo [email protected] Michel Tcheou [email protected]

  • Referncia Bibliogrfica

    n Stephen J. Chapman, Programao em MATLAB para Engenheiros, 2 edio, Cengage Learning.

    n www.mathworks.com

    2

  • Sumrio

    n Introduo n Matlab Bsico n Programao em Matlab n Matemtica Simblica n Interfaces grficas e Toolbox n Simulink

    3

  • Introduo

    n MATLAB acrnimo de MATrix LABoratory n Foi desenvolvido inicialmente na dcada de

    70 nas Universidades do Novo Mxico e Stanford.

    n Destinado a princpio a cursos de teoria matricial, lgebra linear e anlise numrica.

    n Voltado basicamente para matemtica numrica.

    4

  • Introduo

    n Hoje, um ambiente de programao de alto nvel para aplicaes Cientficas e de Engenharia.

    n Facilidades n Oferece um amplo leque de bibliotecas de

    funes pr-definidas. n Muito amigvel em funcionalidades

    grficas para Visualizao de Dados.

    5

  • Introduo

    n Hoje, um ambiente de programao de alto nvel para aplicaes Cientficas e de Engenharia.

    n Facilidades n Amplamente divulgado em Universidades

    e laboratrios de pesquisa. n Conveniente para o desenvolvimento de

    prottipos.

    6

  • Introduo

    n Vantagens n Facilidade de Uso n Independncia de Plataforma n Funes Predefinidas n Interface Grfica de Usurio n Compilador MATLAB

    n Desvantagens n Linguagem Interpretada n Custo

    7

  • Introduo

    n O que mais? n Lgica fuzzy n Redes Neurais n Processamento de

    sinais n Aquisio de dados n Banco de Dados n Finanas

    n Mapas n Controle Robusto n Animao n Simulao de

    sistemas dinmicos (Simulink)

    n Etc

    8

  • Introduo

    n Tela principal

    9

  • Introduo

    n Tela principal

    10

  • Introduo

    n Informaes do sistema n computer Tipo de computador onde

    o MATLAB est operando n version Verso do MATLAB n ver Detalhes da verso do MATLAB e

    dos toolboxes n license Apresenta a licena do

    produto

    11

  • MATLAB BSICO

    12

  • Sumrio Matlab Bsico

    n Nmeros e formatos n Variveis e funes n Vetores n Matrizes n Operaes n Grficos

    13

  • Nmeros e formatos

    n O MATLAB reconhece vrios tipos de nmeros: 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 clculos so feitos em preciso dupla (Double precision)

    14

  • Nmeros e formatos

    n O comando format usado para controlar a impresso dos nmeros

    n O n de dgitos apresentados no tem a ver com a exatido

    n Para formatar a visualizao: n format short e: Notao cientfica com 5 casas

    decimais n format long e: Notao cientfica com 15 casas

    decimais n format bank: Colocao de dois dgitos significativos

    nas casas decimais

    15

  • Comando pi Comentrios

    format short 3.1416 5 dgitos format long 3.14159265358979 16 dgitos format short e 3.1416e+000 5 dgitos + expoente

    format long e 3.141592653589793e+000 16 dgitos + 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 razo aproximada

    Nmeros e formatos

    n Formatos

    16

  • n Pode-se armazenar valores em variveis no MATLAB.

    n Variveis devem ter um nome nico, comeando com uma letra e podem conter dgitos ou o smbolo _ (underline).

    n O MATLAB distingue letras maisculas de minsculas.

    Variveis e funes

    17

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

    velocidade_media = 33.3333

    Variveis e funes

    18

  • Variveis e funes

    n Criando e iniciando variveis: n Expresses de atribuio

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

  • Variveis e funes

    n Criando e iniciando variveis: n Expresses de atalho

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

  • n Note que ao digitar o nome da varivel, o smbolo = e o seu valor, o MATLAB armazena a varivel e a apresenta na tela.

    n Para suprimir a exibio da varivel deve-se adicionar um ponto-e-vrgula ao final do comando.

    Variveis e funes

    21

  • n Ao criar uma expresso sem armazen-la em uma varivel, o MATLAB a salva automaticamente na varivel ans.

    Variveis e funes

    22

  • n O comando who mostra todas as variveis armazenadas durante uma sesso do MATLAB. >> who Your variables are: ans tempo Distancia velocidade_media

    Variveis e funes

    23

  • n O comando clear apaga uma ou mais variveis. >> clear tempo - Apaga somente a

    varivel tempo. >> clear velocidade_media distancia

    - Apaga as variveis velocidade_mdia e distancia.

    >> clear - Apaga TODAS as variveis da sesso.

    Variveis e funes

    24

  • Variveis e funes

    n Variveis especiais n ans - Nome de varivel padro usado para

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

    um nmero maior do que 1. n inf - Infinito. n NaN - No nmero. n i e j - n realmin - menor nmero real positivo n realmax - maior nmero real positivo

    1

    25

  • Variveis e funes

    n Funes 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

  • Variveis e funes

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

    27

  • Variveis e funes

    n Recuperando comandos n Para evitar redigitao, o Matlab

    armazena todos os comandos do usurio durante uma sesso.

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

    n O comando ento pode ser editado e executado novamente. 28

  • Variveis e funes

    n Ajuda n Ajuda e informao no MatLab podem

    ser obtidas de vrias formas n Na linha de comando usando help tpico n Numa janela de ajuda separada no menu

    de help n No helpdesk MatLab mantido no disco ou

    CD-ROM ou na internet

    29

  • Variveis e funes

    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

  • Variveis e funes

    n funo disp(str) n >> str = ['The value of pi = ' num2str(pi)]; n >> disp (str);

    n funo 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

    Formatao Resultados

    %d Exibe valor como inteiro

    %e Exibe valor no formato cientfico

    %f Exibe valor como ponto flutuante

    \n Muda de linha

  • Variveis e funes

    n Salvando sees n Para salvar uma sesso do MATLAB,

    deve-se usar a opo Save Workspace As no menu File.

    n Para abrir uma sesso salva anteriormente deve-se utilizar a opo Open no menu File.

    n possvel usar os comandos load e save

    32

  • Vetores

    n O MATLAB pode trabalhar com vetores de elementos, realizando operaes sobre eles

    33

  • Vetores

    n Definio 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

    saltoe o terceiro o valor final. 34

  • Vetores

    n Funo linspace - Gera um vetor linearmente espaado a partir de um valor inicial, um valor final e um nmero de elementos. n >> X = linspace(0,pi,6) X = 0 0.6283 1.2566 1.8850 2.5133 3.1416

    35

  • Vetores

    n Funo logspace - Gera um vetor logaritmicamente espaado a partir de uma potncia inicial, uma potncia final e uma quantidade de valores. n >> V = logspace(0,2,5) V = 1.0000 3.1623 10.0000 31.6228 100.0000

    36

  • 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

  • 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

  • Matrizes

    n O Matlab permite a criao de matrizes com tantas dimenses quanto necessrio para um dado problema

    39

  • Matrizes

    n Definio 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 so separados por

    espao em branco e as linhas so separadas por ponto-e-vrgula.

    40

  • 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

  • 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

  • n Funes para manipular matrizes n eye matriz identidade n zeros matriz composta de 0s n ones matriz composta de 1s n rand matriz de nmeros aleatrio n diag matriz diagonal n Rot90 rotao de uma matriz em 90 graus n etc

    Matrizes

    43

  • n Operadores aritimticos n Forma Geral: A op B

    n + Soma Estrutural e Matricial n - Subtrao Estrutural e Matricial n * Multiplicao Matricial n / Diviso Matricial Direita n \ Diviso Matricial Esquerda n ^ Expoente Matricial n Operador de Transposio

    Operaes Aritmticas

    44

  • 5D =

    =23

    C

    =

    1 0 2 1-

    B

    =

    1 20 1

    A

    Operaes Aritmticas

    n Operadores aritmticos

    45

  • n A + B 0 2 2 2

    n A B 2 -2 2 0

    n A + C Operao ilegal

    n A + D 6 5 7 6

    Operaes Aritmticas

    n Operadores aritmticos

    46

  • n A * B -1 2

    2 5

    n A * C 3 8

    n A .* B -1 0 0 1

    n A .* C Operao ilegal

    Operaes Aritmticas

    n Operadores aritmticos

    47

  • 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

    Operaes Aritmticas

    n Operadores aritmticos

    48

  • Operaes Aritmticas

    n Hierarquia de operaes aritmticas

    49

    Precedncia Operao

    1 O contedo de todos os parnteses avaliado, a partir dos parnteses mais internos em direo aos mais externos

    2 Todos os expoentes so avaliados, da esquerda para a direita

    3 Todas as multiplicaes e divises so avaliadas, da esquerda para a direita.

    4 Todas as somas e subtraes so avaliadas, da esquerda para a direita

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

  • Operaes Aritmticas

    n Avalie as hierarquias de operaes

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

  • 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 Operao == Igual a ~= Diferente de > Maior que >= Maior que ou igual a < Menor que

  • n Operadores relacionais n Os operadores = so usados para

    comparar a parte real dos operandos. n Os operadores == e ~= so usados para

    comparar a parte real e imaginria dos operandos.

    Operaes Relacionais

    52

  • n Operadores relacionais Expresso Resultado

    5 > 3 1 AC > BA 0 1 a > b 1 0 1 + j = [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]

    Operaes Relacionais

    53

  • n Operadores lgicos

    Operao Lgica Binria Operao Lgica Unria A op B op A

    Operador Operao

    & E lgico l OU lgico xor Ou exclusivo lgico ~ No lgico

    Operaes Lgicas

    54

  • Entradas e ou xor no 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

    Operaes Lgicas

    n Operadores lgicos

    55

  • n Operadores lgicos n Precedncia dos operadores

    1. Os operadores aritmticos so avaliados primeiro. 2. Os operadores relacionais so avaliados da esquerda para a direita. 3. Todos os operadores ~ so avaliados. 4. Todos os operadores & so avaliados. 5. Todos os operadores I so avaliados.

    OBS: Sempre use parnteses para indicar a ordem

    correta desejada de avaliao de uma expresso.

    Operaes Lgicas

    56

  • Expresso 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

    Operaes Lgicas

    57

  • n Exerccios 1. Para as matrizes A e B, definidas a baixo, execute as seguintes operaes 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

    Exerccios

    58

  • n Exerccios 2. Utilizando os comandos zeros, ones e eye, construa as seguintes matrizes

    Exerccios

    =

    =

    =

    =1001

    11

    111111111

    0000000000000000

    DCBA

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

    59

  • n Pode-se gerar grficos a partir de matrizes.

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

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

    Grficos

    60

  • n Duas linhas no mesmo grfico (seno e cosseno): n >> Z = cos(X);

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

    Grficos

    61

  • n Ttulo para o grfico: >> 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')

    Grficos

    62

  • n Resultado:

    Grficos

    63

  • n Linhas de grade n >> grid

    Grficos

    64

  • Grficos

    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

  • Grficos

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

  • Grficos

    n Ferramentas de edio

    67

  • Grficos

    n Edio de desenhos

    68

  • n Sequncia rampa n Uma sequncia rampa transladada com declive B

    definida como n Sequncia rampa unitria e sequncias de rampa

    transladada

    )()( 0nnBng =

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

    Exerccios

    69

  • Exerccios

    70

  • n Sequncia exponencial Real n Definida como: n Exemplo para A = 10 e a = 0.9, a sequncia

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

    Exerccios

    naAnf )()( =

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

  • Exerccios

    72

  • n Sequncia senoidal n Uma sequncia senoidal pode ser descrita como:

    n Onde A um nmero real positivo (amplitude), N o perodo, e a a fase.

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

    Exerccios

    += NnAnf 2cos)(

    .4/=a

    73

  • n Sequncia senoidal

    Exerccios

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

    74

  • Exerccios

    75

  • n Sequncia senoidal modulada exponencialmente n Obtm-se atravs da multiplicao de uma sequncia

    exponencial por uma sequncia senoidal. n Pode ser descrita por :

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

    Exerccios

    += NnaAng n 2cos)()(

    .4/ =76

  • n Sequncia senoidal modulada exponencialmente

    Exerccios

    Cdigo 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

  • Exerccios

    78

  • n Grficos 3D n Grficos de Linhas - Funo plot3

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

    Grficos

    79

  • n Grficos 3D n Grficos de Superfcies - funco mesh

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

    n Utilizamos a funo meshgrid para gerar X e Y como matrizes com valores repetidos que so utilizadas para gerar a matriz Z.

    Grficos

    80

  • n Grficos 3D n Grficos de Superfcies - funco mesh

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

    n Utilizamos a funo meshgrid para gerar X e Y como matrizes com valores repetidos que so utilizadas para gerar a matriz Z.

    Grficos

    81

  • n Resultado

    Grficos

    82

  • n Grficos 3D n Funo mesh - superfcies em rede n Funo surf - superfcies coloridas (opacas) n Funo surfl - superfcies coloridas com uma

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

    Grficos

    83

  • n Resultado

    Grficos

    84

  • n Rotao em grficos 3D n Para rotacionar um grfico 3D primeiro clique no

    boto presente na janela do grfico. n Aps isto, clique sobre o grfico e mantenha o

    boto do mouse pressionado. n Uma caixa ir aparecer indicando a direo do

    grfico. n Agora, basta movimentar o mouse para ajustar a

    posio desejada do grfico.

    Grficos

    85

  • n Superfcies de contorno n Funo contour - Gera superfcies de

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

    n Os trs primeiros parmetros so as matrizes com os dados para os grficos. O quarto parmetro o nmero de contornos.

    Grficos

    86

  • n Resultado

    Grficos

    87

  • n Superfcies de contorno n Funo pcolor - Grfico de pseudocores

    n >> pcolor(X,Y,Z)

    Grficos

    88

  • PROGRAMAO EM MATLAB

    89

  • Sumrio Programao em Matlab

    n Projeto de programa n Arquivo de comando n Estruturas de controle n Funes definidas pelo usurio

    90

  • 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, possvel resolver a situao 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 cdigo;

    91

  • Projeto de Programa

    n Projeto Top-down

    92

    Estabelea o problema que voc est tentando resolver

    Defina as entradas e sadas requeridas

    Projete o algoritmo

    Converta o algoritmo em MATLAB

    Teste o programa MATLAB resultante

    Incio

    Fim

  • n Algoritmo n Srie de aes executadas em uma ordem

    especifica. n Pseudocdigo

    n Linguagem artificial e informal de representar o cdigo de um programa.

    n til para desenvolver algoritmos que sero convertidos em programas estruturados no MATLAB.

    Projeto de Programa

    93

  • Projeto de Programa

    n Exemplo de Pseudocdigo

    94

    Cdigo 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 usurio 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

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

    n Este procedimento simples para execuo 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 difceis deve-se utilizar o script-file ou M-file, que tambm conhecido como arquivo de comando ou arquivo M.

    Arquivos de comando

    95

  • n Erro comum de Programao: Os nomes dos arquivos de comando precisam sempre terminar com a extenso .m.

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

    Arquivos de comando

    96

  • 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

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

  • 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 preferncia a salvar o arquivo no diretrio 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 extenso .m. Feito isso o MATLAB gera o executvel do programa.

    Arquivos de comando

    99

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

    Arquivos de comando

    100

  • n Em resumo, pode-se dizer que um programa em MATLAB consiste na criao 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

  • n Controle de Fluxo O controle de fluxo um recurso que permite que resultados anteriores influenciem operaes futuras. Como em outras linguagens, o MATLAB possui recursos que permitem o controle de fluxo de execuo de comandos, com base em estruturas de tomada de decises. Sero apresentadas a seguir as seguintes estruturas de controle: n Ramificaes: if, elseif, switch n Laos: while, for

    Estruturas de controle

    102

  • n Simbologia

    Smbolo de deciso

    Indica que aes sero executadas

    Inicio e fim de uma estrutura de uma controle

    Estruturas de controle

    103

  • n if n Estrutura de seleo para escolha de cursos de ao

    especficos. n A estrutura de seleo if executa uma ao indicada

    s quando a condio true (Verdadeira); caso contrrio, a ao saltada.

    Estruturas de controle

    104

  • n if

    Condio Verdadeira

    Falsa

    Executa uma ao

    Testa a condio

    Estruturas de controle

    105

  • n Pseudocdigo n Se a nota do estudante for maior ou igual que 7.0

    Imprima Aprovado

    n Cdigo no Matlab if nota >= 7

    fprintf(Aprovado); end

    Estruturas de controle

    106

  • n elseif

    Condio Verdadeira Falsa

    Executa uma ao

    Testa a condio

    Executa uma ao

    Estruturas de controle

    107

  • n Pseudocdigo n Se a nota do estudante for maior ou igual que 7.0

    Imprima Aprovado seno Imprima Reprovado

    n Cdigo no Matlab if nota >= 7

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

    Estruturas de controle

    108

  • Estruturas de controle

    n Exerccio: Escreva um programa MATLAB para avaliar uma funo f(x,y) para quaisquer dos valores x e y especificados pelo usurio. A funo f(x,y) definida a seguir

    109

    f (x, y) =

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

  • n switch n Permite que um programador selecione um

    bloco de cdigo a ser executado com base no valor de um nico inteiro, caractere ou expresso lgica

    Estruturas de controle

    110

  • Estruturas de controle

    111

    switch (expr_switch) case expr_case1 Declarao 1 Declarao 2 ... case expr_case2 Declarao 1 Declarao 2 ... ... otherwise, Declarao 1 Declarao 2 ... end

    Bloco 1

    Bloco 2

    Bloco N

    switch (expr_switch) case {expr_case1, expr_case2, expr_case3} Declarao 1 Declarao 2 otherwise, Declarao 1 Declarao 2 ... end

  • 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

  • n Laos so construes MATLAB que nos permitem executar uma sequncia de declaraes mais de uma vez.

    n Existem dois tipos de laos: n while n for

    Estruturas de controle

    113

  • n while: um bloco de declaraes que se repete indefinidamente, enquanto uma condio for satisfeita.

    A forma geral do while : while expresso ... ... Bloco de cdigo ... end

    Estruturas de controle

    114

  • n while

    Condio Verdadeira

    Falsa

    Executa uma ao

    Testa a condio

    Estruturas de controle

    115

  • n Lao for : Executa um bloco de declaraes durante um nmero especificado de vezes.

    for indice = expresso Declarao 1 .... Corpo Declarao n

    end

    Estruturas de controle

    116

  • cont = 1

    cont

  • n Exemplo: Calcular a soma dos 10 primeiros inteiros.

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

    Estruturas de controle

    118

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

  • n Exemplo: Calcular o fatorial de um nmero n.

    Estruturas de controle

    119

    n = 5; fatorial = 1; % Inicializa a varivel soma com zero for k = 1:n % Lao de repetio: n vezes fatorial = fatorial*k; % Clculo do fatorial end fprintf(O fatorial de %.2f eh %.2f', n, fatorial);

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

    Estruturas de controle

    120

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

  • n for X while n while: utilizado para repetir um trecho de cdigo

    quando no desconhecido o nmero de iteraes do lao.

    n for: utilizado para repetir um trecho de cdigo quando conhecido o nmero de iteraes do lao.

    Estruturas de controle

    121

  • n Break n Usada para controlar a operao dos laos for e while n Encerra a execuo do lao e passa o controle para a

    prxima declarao logo aps o fim do lao.

    Estruturas de controle

    122

  • 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 lao!);

  • 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 lao!);

    Sada: k = 1 k = 2 Fim do lao!

  • n Continue n Usada para controlar a operao dos laos for

    e while n Termina a passagem corrente pelo lao e

    retorna o controle para o incio do lao.

    Estruturas de controle

    125

  • 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 lao!);

  • 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 lao!);

    Sada: k = 1 k = 2 k = 4 k = 5 Fim do lao!

  • Estruturas de controle

    n Exerccio: Implemente um algoritmo que calcule a mdia e o desvio-padro de um conjunto de dados de entrada. n dados de entrada: x = [3 4 5 -1]

    n mdia:

    n desvio-padro:

    128

    x = 1N xii=1

    N

    !

    s =N xi2

    i=1

    N

    ! " xii=1

    N

    !#

    $%

    &

    '(

    2

    N(N "1)

  • n Clculo da srie de Fourier na forma complexa

    Srie de Fourier Complexa

    129

    X[k]= 1N x[n]e! jk"0n

    n=1

    N

    #

    "0 =2!N

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

  • Srie 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

  • Srie 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)')

  • Srie 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)')

  • Srie 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)

  • Funes definidas pelo usurio

    n Um programa pode ser dividido em subtarefas;

    n possvel codificar cada subtarefa como uma funo separada;

    n Cada funo pode ser testada e depurada de forma independente das outras funes do programa;

    135

  • Funes definidas pelo usurio

    n Benefcios n Teste independente das subtarefas; n Cdigo reutilizvel; n Isolamento de efeitos colaterais indesejados;

    n Uma funo MATLAB tipo especial de arquivo M executado em um espao de trabalho independente;

    136

  • Funes definidas pelo usurio

    n Forma geral

    137

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

  • Funes definidas pelo usurio

    n Exemplo funo 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);

  • Funes definidas pelo usurio

    n Exemplo Script que chama a funo 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);

  • Funes definidas pelo usurio

    n Exerccio: A localizao de um ponto cartesiano pode ser expressa por coordenadas retangulares (x,y) ou polares (r,), como ilustrado abaixo.

    140

  • Funes definidas pelo usurio

    n Exerccio (continuao): A relao entre esses dois conjuntos de coordenadas dada por

    n Escreva duas funes rect2polar e polar2rect, que convertam coordenadas de retangular para polar, e vice-versa, com expresso em graus

    141

  • MATEMTICA SIMBLICA

    142

  • Matemtica Simblica

    n O Matlab permite o clculo simblico atravs do Toolbox de Matemtica Simblica;

    n Esse toolbox utiliza o kernel do MAPLE;

    n O Matlab realiza todas as operaes elementares entre expresses simblicas utilizando a sintaxe comum

    143

  • Matemtica Simblica

    n Operaes Matemticas n >> syms x n >> x+2*x n >> x*x - 5*x^2 n >> sqrt(x^2) n >> cos(pi-x)

    144

  • Matemtica Simblica

    n Substituio de varivel em uma expresso simblica n >>subs(4*x^2-4,x,2)

    n Soluo simblica de equaes algbricas (ex: x^2-2*x+1 = 0) n >>solve(x^2-2*x+1)

    145

  • Matemtica Simblica

    n Grficos n >> ezplot(sin(3*x)+2*x)

    146

  • Matemtica Simblica

    n Grficos n >> ezplot(sin(3*x)+2*x,[1 2])

    147

  • Matemtica Simblica

    n Grficos n >> ezsurf(2*x^2-3*y^2-4)

    148

  • Matemtica Simblica

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

    n Srie n soma dos 100 primeiros termos de

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

    149

  • Matemtica Simblica

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

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

    150

  • Matemtica Simblica

    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

  • Matemtica Simblica

    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

  • Matemtica Simblica

    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)

  • INTERFACES GRFICAS E TOOLBOXES

    154

  • Interface grfica e toolboxes

    n Brao robtico

    155

  • Interface grfica e toolboxes

    n Controle de ngulo de ataque aeronave

    156

  • Interface grfica e toolboxes

    n Voo de um 747

    157

  • Toolbox de Processamento de Imagens

    n Pixel - Regio da Imagem

    158

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

  • Toolbox de Processamento de Imagens

    159

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

  • Toolbox de Processamento de Imagens

    161

  • Toolbox de Processamento de Imagens

    n Inserindo um Rudo na imagem.

    162

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

  • Toolbox de Processamento de Imagens

    163

  • SIMULINK

    164

  • Sumrio Simulink

    n O que ? n Variveis e funes n Vetores n Matrizes n Operaes n Grficos

    165

  • n Um ambiente de modelagem e simulao de sistemas dinmicos e embarcados.

    n Prov uma interface grfica interativa e um conjunto de bibliotecas de blolcos configurveis que permitem o projeto, a simulao, a implementao e o teste de uma grande variedade de sistemas variantes no tempo, inclundo: comunicaes, controle, processamento de sinais, de vdeo e de imagens.

    O que ?

  • Iniciando o Simulink

    1. Digitar simulink no prompt de comando

    2. Clicar no boto na barra de ferramentas

    ou

    ou 3. Navegar pelo boto iniciar do MATLAB

    Programao

  • n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:

    1. Escolha os blocos funcionais desejados na biblioteca;

    Programao

  • n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:

    2. Arraste-os para o espao de trabalho (rea de programao)

    Programao

  • n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:

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

    Programao

  • n A programao no Simulink segue uma interface grfica intuitiva e fcil de usar:

    4. Ajuste os parmetros da simulao; 5. Execute o programa.

    Programao

  • Exemplos

    Biblioteca Math

    Biblioteca Sources

    n Exemplo 1 n Criando uma senide com nvel DC

  • n Exemplo 1 n Ajuste automtico da escala do grfico

    Exemplos

  • n Exemplo 1 n Ajuste manual da escala do grfico

    Exemplos

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

    comparando com a senide original

    Exemplos

    Biblioteca Math

  • n Exemplo 1 n Configurao dos parmetros do bloco product

    Exemplos

    Nmero de termos da multiplicao.

    Multiplicao de matrizes ou termo a termo.

  • n Exemplo 1 n Alterando os parmetros da simulao

    Exemplos

    Tempo inicial

    Tempo final

  • n Exemplo 1 n Criando um subsistema

    Exemplos

    Sub-sistema

  • n Exemplo 1 n Editando um subsistema

    Exemplos

    Sub-sistema

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

    ambiente do Matlab: Usa-se o bloco to workspace

    Exemplos

    Cria a varivel A no workspace

    Biblioteca Sinks

  • n Exemplo 1 n Configurao do bloco to workspace

    Exemplos

    Cria a varivel A no workspace

    Formato da varivel

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

    Exemplos

    >> plot(tout,A)

  • n Exemplo 1 n Girando um bloco

    Exemplos

    CTRL R

  • n Exemplo 1 n Combinando sinais

    Exemplos

    Bloco MUX Biblioteca Signals & Sys.

  • n Exemplo 1 n Combinando sinais

    Exemplos

  • n Exemplo 1 n Configurando...

    Exemplos

  • n Exemplo 2 n Sistema massa-mola-amortecedor

    Exemplos

  • Exerccio

    n Faa usando um arquivo de comando n Faa usando o simulink

  • n Exemplo 3 n Simulao de um tanque de nvel sob a

    influncia de uma perturbao degrau na vazo da alimentao.

    Exemplos

    q1

    q3

    q2

    h

    A

  • n Exemplo 3 n Assumindo

    n Densidade do lquido e a rea da seo

    transversal do tanque (A) constantes.

    n Relao entre a vazo e a carga linear:

    Exemplos

    Rhq /3 =

  • n Exemplo 3 n O modelo descrito por uma equao de

    balano transiente de massa no tanque:

    n Substituindo a hiptese II na equao:

    Exemplos

    321 qqqdtdhA +=

    Rhqq

    dtdhA += 21

  • n Exemplo 3 n Introduzindo as variveis-desvio e aplicando a

    Transformada de Laplace, chega-sa s funes de transferncia:

    Exemplos

    1)(

    )()('

    1'1 +

    ==sK

    sGsqsh p

    1)(

    )()('

    2'2 +

    ==sK

    sGsqsh p

    onde:

    ARRK p

    =

    =

  • n Exemplo 3 n Considera-se um tanque de 0.5 m de dimetro

    e uma vlvula na sada na linha atuando sob uma resistncia linear (R) de 6.37 min/m2.

    n Sero simulados um degrau de 1 ft3 na vazo q1 a partir do tempo igual a 0 min (step) e um degrau de 1 ft3 na vazo 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

  • n Exemplo 3

    Exemplos

    Corrente q1

    Corrente q2

  • n Exemplo 3

    Exemplos

    Biblioteca Source

    Biblioteca Continuous

  • n Exemplo 3

    Exemplos

    Degrau comea Em t=0s

    Degrau comea Em t=10s

    Bloco Funo de Transferncia

  • n Exemplo 3

    Exemplos

    A amplitude do degrau 1

  • n Exemplo 3 n Resultados

    Exemplos

    1 estado estacionrio

    2 estado estacionrio

    1 perturbao

    2 perturbao

  • n Exemplo 4 n Considerando um sistema de controle de nvel

    mostrado abaixo. O nvel de lquido medido e a sada do transmissor de nvel (LT) enviada para um controlador feedback (LC) que controla o nvel pelo ajuste da vazo volumtrica q2. A segunda vazo de fluido, q1, corresponde varivel perturbao (corrente chegando de outra unidade, no posso controlar essa corrente).

    Exemplos q1

    q3

    q2

    h

    A

    LT LC hm

  • n Exemplo 4 n Considerando uma vlvula com a seguinte

    funo de transferncia:

    n Considerando um medidor com a seguinte funo de transferncia:

    Exemplos

    psimKG vv min/0103.03==

    mpsiKG mm /24==

  • Exemplos

    n Exemplo 4

    Set-point

    Valor medido

    Erro: (sp - valor medido)

  • Exemplos

    n Exemplo 4 Controlador Processo

    Medidor

    Vlvula

  • Exemplos

    n Exemplo 4 n Quando a funo de transferncia

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

    mpsiKG mm /24==

  • Exemplos

    n Exemplo 4 n O controlador representado pelo bloco

    PID Controller. Podemos regular a sua ao proporcional, integral e derivativa.

  • Exemplos

    n Exemplo 5 n Controle PID de um motor DC

  • Exemplos

    n Exemplo 6 n Veculo eltrico hbrido de clula a

    combustvel