Programa de Educação Tutorial de Engenharia Elétrica Max...

59
Minicurso de MATLAB Programa de Educação Tutorial de Engenharia Elétrica Max Rodrigues Caroline Pereira Nayara Medeiros

Transcript of Programa de Educação Tutorial de Engenharia Elétrica Max...

Page 1: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Minicurso de MATLAB

Programa de Educação Tutorial de Engenharia Elétrica

Max Rodrigues

Caroline Pereira

Nayara Medeiros

Page 2: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Ementa aula de hoje:

Técnicas de programação;

Operações lógicas;

Estruturas condicionais;

Estruturas de repetição;

Toolboxes;

Simulink.

Page 3: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Técnicas de Programação

Além de ser utilizado como calculadora o Matlab pode ser utilizados para programação de diversos tipos.

Como simples códigos, manipulação de imagens e simulações.

Page 4: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Operações lógicas e relacionais

Operador Descrição

< Menor que

<= Menor ou igual a

> Maior que

>= Maior ou igual a

== Igual a (não confundir com ‘=’ )

~= Diferente de

& E

|| OU

~ NÃO

Page 5: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

A estrutura if pode ser implementada no Matlab de três formas diferentes, são elas:

-Primeira forma:

>>if condição

comandos

end

Page 6: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

-Segunda forma:

>>if condição1

comandos1

else

comandos2

end

Page 7: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

-Terceira forma:

>>if condição1

comandos1

elseif condição2

comandos2

[...]

else

comandosN

end

Page 8: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

Page 9: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

Estrutura switch-case:

Page 10: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas Condicionais

Page 11: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas de Repetição

O Matlab possui as seguintes estruturas de repetição: Estrutura for:

>>for variável=inic:incr:fim

comandos

end

Page 12: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas de Repetição

O Matlab possui as seguintes estruturas de repetição: Estrutura while:

>>while condição

comandos

end

Obs.: Lembrar de colocar o incremento.

Page 13: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas de Repetição

A condição da estrutura for é a variável ser menor ou igual a m.

Enquanto satisfeita essa condição(ele fica no loop), ao término de cada loop de comandos, variável é incrementada de incr.

O incremento incr é considerado unitário caso seja omitido.

Page 14: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas de Repetição

Cálculo de média usando for:

Page 15: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Estruturas de Repetição

Cálculo da média usando while

Page 16: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Exercícios

Escreva um programa que calcule sucessivamente a raiz quadrada de números maiores que um (1) introduzidos pelo usuário, até que este indique o número igual a um.

Utilize a função sqrt(x) para calcular a raiz quadrada e input para ler os valores.

Page 17: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 18: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Exercícios

Escreva uma função que, dada uma sequência y, com n números, determine quantos e quais os elementos que são maiores do que a soma dos seus vizinhos.

Ex: y=(7 3 5 1 4 12 5 8)

Resposta: 7, 5, 12, 8

4 elementos

Page 19: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 20: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes

ToolBoxes são um conjunto de arquivos .m e .mat (chamados de scripts e kernels) que são acrescentados ao MatLab e são específicos para realização de uma determinada tarefa ou solucionar determinado problema.

Existem ToolBoxes com programas para as mais diversas áreas como já foi citado(iremos focar no de matemática simbólica e sistema de controle e simulink).

Não é toolboxes, muito

utilizado para simulações.

Page 21: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

l Para saber quais toolboxes você possui (além de informações sobre, basta utilizar o comando “ver” no command window). Toolboxes

Page 22: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Alguns toolboxes importantes: Signal Processing Toolbox

Math simbolics Toolboxes

Sistema de controle Toolboxes

Toolboxes

Page 23: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes lSymbolic Math Toolbox: O Symbolic Math é um ToolBox que tem por finalidade operar com variáveis literais. Este Toolbox possui funções como:

>>eval >>solve

>>expand

>>simplify

>>diff >>int

Page 24: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes lEval

Define a variável simbólica x;

Solução de uma equação

algébrica simbólica (x²+x+2=3)

Soluções da

equação algébrica

Simplificação das soluções

com o “eval”

lSolve

Obs.: Eval serve para simplificar literal e numérica,

porém simplify somente literais.

Page 25: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes

lExpand (expansão)

Simplify (simplificação)

Page 26: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes ldiff (diferenciação)

Page 27: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes lint (integração)

Page 28: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes lRepresentação gráfica de expressões simbólicas (ezplot)

Page 29: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes l

O comando ezplot traça o gráfico no domínio −2𝜋 ≤ 𝑥 ≤ 2𝜋

Para especificar o domínio de x para, por exemplo, −10 ≤ 𝑥 ≤ 10

fazemos o seguinte:

Page 30: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Toolboxes sistema de controle Utilizado na disciplina sistemas de controle >>rlocus(t) >>bode(t) >>pole(t) >>margin(t) Para fazer a função transfrência: >>tf(num) >>zpk(num)

Page 31: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Como declarar uma função transfência:

Page 32: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

rlocus

Page 33: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

bode()

Page 34: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

pole()

Page 35: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

margin()

Page 36: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Exercícios:

Encontre o lugar das raízes e as curvas de bode.

Page 37: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 38: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 39: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Simulink

O Simulink é uma ferramenta utilizada para modelagem, simulação e

análise de Sistemas Dinâmicos. O programa se aplica a sistemas lineares e

não lineares, discretos e contínuos no tempo.

Ao contrário do MATLAB, que utiliza linha de comando, o Simulink

utiliza uma interface gráfica amigável, representando o sistema por diagramas

de blocos, no qual cada bloco representa uma operação matemática de

entrada e saída que chama-se função de transferência do bloco. Nos sistemas

contínuos, estas relações são obtidas utilizando-se a transformada de Laplace

nas equações. Não podemos deixar de enfatizar que apesar do Simulink ser

uma aplicação específica, este não trabalha independentemente do MATLAB.

Page 40: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Acessando o Simulink

É possível acessá-lo de duas maneiras:

- Digitando a palavra ‘Simulink’ no Command Window

- Ou clicando no ícone da barra de ferramentas

Page 41: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 42: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Componentes de um modelo Simulink - Fontes

São as entradas do sistema e estão presentes na biblioteca de fontes

(sources). A seguir, apresentamos as fontes mais comuns:

• O bloco Constante (Constant) produz um sinal uniforme. A magnitude pode

ser escolhida com um duplo clique sobre o bloco.

• O bloco Degrau (Step) produz uma função degrau. Pode-se configurar o

instante em que se aplica o degrau, assim como sua magnitude antes e depois

da transição.

• O bloco de Onda Senoidal (Sine Wave) gera uma senoide com os seguintes

parâmetros a serem configurados: amplitude, fase e frequência da onda

senoidal.

• O Gerador de Sinais (Signal Generator) pode produzir ondas senoidais,

quadradas, dente de serra ou sinais aleatórios.

• Outros sinais podem ser gerados a partir de combinações destes blocos

apresentados

Page 43: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Componentes de um modelo Simulink

-Diagramas de blocos

É a modelagem por meio de blocos utilizando-se a transformada de

Laplace nas equações do sistema.

- Saídas Os dispositivos de saída são os blocos que permitem verificar o

comportamento do sistema, estes blocos são encontrados na biblioteca de

dispositivos de saída (Sinks).

Page 44: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Construindo modelos

Para realizar uma construção da modelagem do sistema

selecione File>>New Model, ou se preferir, selecione o ícone .

Em seguida, uma janela nomeada untitled se abrirá.

Page 45: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Para adicionar os blocos,

deve-se arrastar os

componentes da

Biblioteca de blocos

(Library Browser) para a

área de trabalho.

Page 46: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Criando simulações

Gerador de sinais

Passos

1) Carregue o Simulink;

2) Insira o Signal Generator (Gerador de sinais)

Entre a lista de opções do Library Browser (Browser de biblioteca), clique

em Simulink, que é uma biblioteca de blocos; Clique em Source, que é

um tipo de bloco de fonte de sinal; Selecione Signal Generator e arraste

este bloco para a área de trabalho do novo documento aberto;

3) Insira os blocos do sistema modelado

4) Insira os dispositivos de saída, por exemplo, o Scope (oscilosópio)

Clique em Commonly Used Blocks e insira o Scope

5) Faça a conexão entre os blocos

Faça um caminho com o mouse ligando os componentes

Page 47: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 48: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Criando simulações

Gerador de sinais (Continuação)

6) Propriedades do gerador de sinais

Dê um duplo clique sobre o Signal

Generator. Escolha a forma de

onda (wave form) dente de serra

(sawtooth) com frequência de 1 Hz

com uma amplitude de 2.

Page 49: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Gerador de sinais

7) Propriedades da simulação

Na barra de menu, selecione

Simulation e escolha Model

Configuration Parameters.

Aqui são definidos,

principalmente, o tempo inicial

e final da simulação, assim

como o passo da simulação.

Em Stop Time, coloque 20.

Clique em OK para confirmar

as alterações.Clique em Start

Simulation para realizar a

simulação;

Page 50: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Dê um duplo clique

sobre o osciloscópio

para visualizar a

onda.

Page 51: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Gerador de sinais

8) Armazenando o trabalho

Para armazenar o trabalho clique em File/Save ou pressione

CTRL+S; e entre com o local e nome da simulação. O tipo do

arquivo é .mdl.

Criando simulações

Page 52: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Problema com uma equação diferencial

Modelando a seguinte equação

Com a seguinte condição inicial: x(0) = 0

Temos

Criando simulações

Page 53: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Problema com uma equação diferencial

Monte o diagrama de blocos:

- Insira o bloco Sine Wave (onda senoidal) da biblioteca Source;

- Insira o bloco Integrator (integrador) da biblioteca Continuous (blocos

lineares);

- Insira o Scope (Osciloscópio) da biblioteca Commonly Used Blocks;

Criando simulações

Page 54: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 55: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 56: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Criando simulações

Considerando o sistema massa-mola

amortecido de segunda ordem excitado

por uma força F. Faça a modelagem do

mesmo

Sendo a massa do corpo m = 5 kg,

admitindo o coeficiente de amortecimento

c = 1 N × s/m e a constante elástica da

mola k = 2 N/m, considerando-se a

deflexão inicial xo = 1 m. Não há entradas

no sistema. Considerando as forças no

sistema dinâmico notamos a presença a

força da mola e a força de

amortecimento. A força da mola é −k × x

e a força de amortecimento é −c × x˙.

Sistema massa-mola amortecido

Page 57: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada

Criando simulações

Sistema massa-mola amortecido

Para as condições iniciais:

Fazendo a transformada de Laplace:

A função transferência do sistema é dada por:

Page 58: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada
Page 59: Programa de Educação Tutorial de Engenharia Elétrica Max ...petee.ct.ufrn.br/wp-content/uploads/2015/04/Minicurso-de-MATLAB... · cada loop de comandos, variável é incrementada