MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2...

94
São Bernardo do Campo - Dezembro de 1994 Departamento de Eletricidade Faculdade de Engenharia Industrial Fundação de Ciências Aplicadas Matlab & Simulink

Transcript of MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2...

Page 1: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

São Bernardo do Campo - Dezembro de 1994 Departamento de Eletricidade

Faculdade de Engenharia Industrial

Fundação de Ciências Aplicadas

Matlab &Simulink

Page 2: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Índice Analítico

1. Tutorial do Matlab & Simulink......................................................................... 2 1.1 Matlab Básico.............................................................................................. 2

1.1.1 Introdução............................................................................................. 3 1.1.2 Operações Matriciais............................................................................ 8 1.1.3 Operações em Array........................................................................... 10 1.1.4 Manipulação Matricial e Vetorial ...................................................... 13 1.1.5 Análise de Dados................................................................................ 18 1.1.6 Funções Matriciais ............................................................................. 20 1.1.7 Polinômios e Processamento de Sinais .............................................. 20 1.1.8 Funções de Funções ........................................................................... 23 1.1.9 Gráficos .............................................................................................. 27 1.1.10 Controles de Fluxo ........................................................................... 37 1.1.11 Arquivos M ...................................................................................... 39 1.1.12 Arquivos de Disco............................................................................ 46 1.1.13 O Depurador do Matlab ................................................................... 48

1.2 Toolboxes do Matlab................................................................................. 49

1.2.1 Sistemas de Controle.......................................................................... 50 1.2.2 Outros Toolboxes ............................................................................... 54

1.3 Simulink Básico ........................................................................................ 55

1.3.1 Linhas Gerais...................................................................................... 55 1.3.2 Construção de Modelos...................................................................... 56 1.3.3 Análise dos Modelos .......................................................................... 69 1.3.4 Como o Simulink Funciona ............................................................... 80 1.3.5 S-Functions ........................................................................................ 80 1.3.6 Mascarando Blocos ............................................................................ 84 1.3.7 Adicionando um novo bloco .............................................................. 87

2. Bibliografia...................................................................................................... 93

Page 3: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

2

1. Tutorial do Matlab & Simulink

1.1 Matlab Básico

MATLAB é um ambiente de computação técnica de visualização e processamento numérico de alto desempenho. Ele integra análise numérica, cálculo matricial, processamento de sinais, vários aplicativos e gráficos num ambiente amigável onde problemas e soluções são expressos como eles são representados matematicamente sem a necessidade da programação tradicional.

O nome MATLAB é acrônimo de laboratório de matemática. Ele foi originalmente escrito para permitir um acesso fácil aos programas de cálculo matricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos representam o estado da arte em programas de cálculo matricial.

MATLAB também contempla uma família de aplicativos específicos chamados “toolboxes”. Esses aplicativos foram desenvolvidos por profissionais de expressão em cada uma das áreas e foram totalmente concebidos na forma de coleções de funções MATLAB (M-files), estendendo o ambiente MATLAB na solução de problemas particulares. Entre outros, temos os seguintes toolboxes: Processamento de Sinais; Projeto de Sistemas de Controle; Simulação de Sistemas Dinâmicos; Identificação de Sistemas; Redes Neurais; Splines; Otimização ; Análise e Síntese µ, etc.

Provavelmente a característica mais importante do MATLAB é sua ampliabilidade. Isto permite que qualquer um possa ser um autor de um toolbox . Aplicativos matemáticos complexos são facilmente desenvolvidos em poucas linhas no ambiente MATLAB sem a necessidade de programação de uma única linha de código C, FORTRAM ou outro código de baixo nível.

Page 4: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 3

FEI - FCA

1.1.1 Introdução

O MATLAB trabalha essencialmente com um tipo de objeto: Matriz retangular numérica (real ou complexa). Em algumas situações existe significado especial agregado à matrizes de dimensão 1 (escalares) e matrizes com uma só linha ou coluna (vetores). A linguagem MATLAB não usa declaração preliminar ou dimensionamento de variáveis. Isso é feito de forma automática.

Matrizes podem ser adicionadas no ambiente de várias formas, contudo a forma mais simples para matrizes pequenas é entrando com a lista dos elementos, seguindo a seguinte convenção:

• Separe os elementos com espaços ou vírgulas. • Delimite os elementos com colchetes []. • Use ; (ponto-e-vírgula) para indicar o final da linha.

Exemplo:

» A = [1 2 3; 4 5 6; 7 8 9]

Resulta: A = 1 2 3 4 5 6 7 8 9

Elementos de uma matriz podem ser quaisquer expressões MATLAB. Por exemplo:

» x = [-1.3 sqrt(3) (1+2+3)*4/5]

Resulta: x =

-1.3000 1.7321 4.8000

Elementos individuais podem ser referenciados pelo seu índice (linha,coluna): assim. para acrescentar elementos ao exemplo anterior

Page 5: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 4

FEI - FCA

» x(5) = abs(x(1))

Resulta: x =

-1.3000 1.7321 4.8000 0 1.3000

Ao atribuir um valor numérico à x(5), automaticamente x(4) é criado com valor nulo. Você pode construir matrizes maiores usando matrizes menores como seus elementos. Por exemplo, vamos adicionar uma linha a matriz A:

» r = [10 11 12]; » A = [A; r]

Isto resulta em:

A = 1 2 3 4 5 6 7 8 9 10 11 12

Você pode extrair sub-matrizes de uma matriz maior usando : (dois pontos). Por exemplo:

» A = A(1:3,:);

Remove as três primeiras linhas e todas as colunas da matriz atual A e coloca o resultado em A.

A = 1 2 3 4 5 6 7 8 9

Variáveis e Declarações do MATLAB

Page 6: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 5

FEI - FCA

Declarações no MATLAB são freqüentemente feitas da seguinte forma:

» variável = expressão

ou simplesmente,

» expressão

Quando o nome da variável é omitido, o nome ans é usado como variável default.

Uma definição normalmente termina com ENTER. Contudo, se o último caracter é um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça a atribuição do mesmo jeito. Isto é especialmente importante nas situações que o resultado é muito grande, tal como uma matriz de 10 linhas e 10 colunas.

Se a expressão é muito grande e não cabe em uma linha, use (...) para continuar a definição na linha seguinte. Exemplo:

» s = 1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + 1/7 ...

- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Você pode formar uma variável ou nome de função com uma letra seguida de qualquer quantidade de letras (ou underscore) . MATLAB diferencia letras maiúsculas de minúsculas e usa somente os primeiros 19 caracteres do nome.

Obtendo Informação da Área de Trabalho (workspace)

Para listar as variáveis ativas use o comando who. Para obter mais informações sobre as variáveis como: nome, tamanho, número de elementos, etc., use o comando whos.

O Utilitário de HELP

Page 7: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 6

FEI - FCA

O comando help produz informação on-line da maioria dos tópicos do MATLAB, mostrando uma lista dos diretórios que contém arquivos do MATLAB. Para listar as funções de um diretório particular, digite help seguido do nome do diretório. Exemplo:

» help matfun

Para obter auxílio sobre uma função específica digite help e o nome da função. Exemplo:

» help inv

Para localizar palavras-chaves em todos os arquivos do MATLAB, use o comando lookfor. Exemplo:

» lookfor inverse »

INVHILB Inverse Hilbert matrix ACOS Inverse cosine ACOSH Inverse hyperbolic cosine ACOT Inverse cotangent ACOTH Inverse hyperbolic cotangent ACSC Inverse cosecant ACSCH Inverse hyperbolic cosecant

Salvando e Saindo

Para sair do MATLAB digite exit. Encerrando uma seção do MATLAB, apaga-se todas as variáveis da área de trabalho (workspace). Se for necessário, salve suas variáveis digitando save. Este comando salvará todas as variáveis em um arquivo chamado matlab.mat. Para recuperar as variáveis use o comando load. Você também pode salvar somente algumas variáveis e usar o nome de um arquivo qualquer. O exemplo a seguir salva as variáveis x, y e z no arquivo temp.mat.

» save temp x y z

Page 8: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 7

FEI - FCA

Números e Expressões Aritméticas

O MATLAB usa notação convencional com potência de dez ou unidade complexa como sufixo:

-4.534i 1.760217e-11

O MATLAB usa 16 dígitos significativos e expressões aritméticas são calculadas com a seguinte prioridade

^ potenciação \ divisão à esquerda / divisão à direita * multiplicação - subtração + adição

Algumas funções internas retornam valores especiais. A função pi retorna o valor de π, a função inf retorna ∞, etc. O MATLAB dispões das funções matemáticas elementares normalmente encontradas em calculadores científicas. Essas funções incluem por exemplo: abs, sqrt, log, sin. Se uma operação resultar em infinito isso não implica em erro, simplesmente aquela variável terá o valor infinito. O mesmo ocorre para operações inválidas como ∞/∞ ou 0/0. O resultado é NaN (Not a Number).

Formato de Saída

Para alterar a formatação do número a ser apresentado na tela, utilize o comando format. Exemplos:

» x = [4/3 1.2345e-6]

» format short

1.3333 0.0000

» format short e 1.3333e+00 1.2345e-06

Page 9: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 8

FEI - FCA

Funções

Grande parte do poder do MATLAB vem do enorme conjunto de funções. Algumas das funções são internas ao processador MATLAB e outras são disponíveis como bibliotecas externas na forma de M-files. O conjunto de funções aplicadas a uma área específica são denominadas toolboxes. Cada usuário pode criar suas próprias funções que se comportam como se fossem funções internas. As seções adiante discutem cada uma das diferentes categorias de funções analíticas do MATLAB básico.

É possível combinar funções de várias formas. Exemplo:

» x = sqrt(log(z))

Algumas funções usam dois ou mais argumentos, e cada argumento pode ser uma expressão. Exemplo:

» angulo = atan2(y,3*x)

Existem funções que retornam dois ou mais valores. Nestes casos, os valores de saída devem estar entre colchetes [] e separados por vírgula. Exemplo:

» [V,D] = eig(A)

A função eig calcula os autovetores e os autovalores de A, respectivamente. Havendo dúvida, deve-se usar help eig.

1.1.2 Operações Matriciais

Transposta de uma Matriz

O caracter ' (apóstrofe) denota transposta de uma matriz. Se z for complexo, z' é o transposto conjugado complexo de z. Exemplo:

» A = [1 2; 3 4]

Page 10: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 9

FEI - FCA

A = 1 2 3 4

» B = A' B = 1 3 2 4

Adicionando e Subtraindo Matrizes

Os símbolos + e - denotam adição e subtração de matrizes. A operação é definida sempre que as matrizes tenham a mesma dimensão. Exemplo:

» C = A + B

C = 2 5 5 8

A adição e subtração também é definida quando um dos operandos for um escalar. Exemplo:

» D = C - 2

D = 0 3 3 6

Multiplicação de Matrizes

O símbolo * denota multiplicação de matrizes e é válida sempre que dimensões internas dos dois operandos for igual. Exemplo:

» E = A * B

E = 5 11 11 25

Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou ser multiplicado por qualquer matriz. Exemplo:

» F = 2*E

Page 11: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 10

FEI - FCA

F = 10 22 22 50

Divisão de Matrizes

Existe dois símbolos de divisão de matrizes: / e \. Os significados são: X = A\B é solução do sistema A*X = B X = B/A é solução do sistema X*A = B

Funções Elementares e Transcendentais

O MATLAB enxerga expressões como exp(A) e sqrt(A) como operação sobre cada um dos elementos de um vetor (linha ou coluna). Existem funções para calculo de funções transcendentais de matrizes, quando essas são quadradas. Exemplos:

• expm exponencial de uma matriz • logm logaritmo de uma matriz • sqrtm raiz quadrada de uma matriz

Outras funções elementares sobre matrizes incluem:

• poly polinômio caraterístico • det determinante • trace traço

1.1.3 Operações em Array

Refere-se a operações em array as operações aritméticas realizadas elemento a elemento ao invés da operação matricial algébrica usual definida pelos símbolos * \ / ^ e '. Para indicar que a operação é elemento-a-elemento usa-se um ponto (.) antes do símbolo da operação.

Page 12: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 11

FEI - FCA

Somando e Subtraindo Arrays

Para a adição e subtração, as operações de arrays e as de matrizes são as mesmas. Neste caso + e - podem ser usados sem o ponto.

Multiplicando e Dividindo Arrays

O símbolo .* denota multiplicação elemento-a-elemento. Se A e B têm mesma dimensão, então A.*B resulta num array cujos elementos são o produto dos elementos individuais de A e de B. Exemplo:

» x = [1 2 3]; y = [4 5 6]; » z = x.*y

z = 4 10 18

A expressão A./B e A.\B resulta no quociente de cada elemento. Exemplo:

» z = x.\y

z = 4.0000 2.5000 2.000

Usando Potenciação com Arrays

O símbolo .^ denota potenciação elemento-a-elemento. Exemplo:

» z = x.^y

z = 1 32 729

Operadores Relacionais

Para comparar-se matrizes de dimensões idênticas existem seis (6) operadores relacionais.

< menor <= menor ou igual

Page 13: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 12

FEI - FCA

> maior >= maior ou igual == igual ~= diferente

O MATLAB compara os pares de elementos correspondentes. O resultado é uma matriz de "uns" e "zeros", onde "um" representa "verdadeiro" e "zero" representa "falso". Exemplo:

» 2 + 2 ~= 4

ans = 0

O exemplo abaixo, ilustra como encontrar os elementos das matriz A que são divisíveis por 3:

» A = [8 1 6; 3 5 7; 4 9 2]; » G = rem(A,3); » P = (G == 0)

P = 0 0 1 1 0 0 0 1 0

A função rem(A,3) retorna a matriz dos restos da divisão por 3. Cada um dos elementos de G informa se a operação relacional é falsa (0) ou verdadeira (1).

A função find é muito usada em conjunto com operadores relacionais. O exemplo abaixo ilustra como localizar todos os elementos de Y que são maiores que 3 e substituí-los por 10.

» Y = [1 2 3 4 5 6 7 8 9]; » i = find(Y > 3.0); » Y(i) = 10*ones(size(i));

Operadores Lógicos

Page 14: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 13

FEI - FCA

Os operadores &, |, e ~ são os operadores lógicos "e", "ou" e "não" respectivamente. As funções any e all são muito utilizadas em conjunto com operadores lógicos. A função any(x) retorna "1" se qualquer elemento de x for não nulo e retorna "0" caso contrário. A função all(x) retorna "1" somente se todos os elementos de x são não nulos. Essas funções são particularmente úteis na declaração de um if.

if all(A < 0.5) faça alguma coisa end

Funções Matemáticas

Um conjunto de funções matemáticas elementares são aplicáveis elemento-a-elemento num array.

» A = [ -1 2 -3; 4 -5 6]; » B = abs(A)

B = 1 2 3 4 5 6

1.1.4 Manipulação Matricial e Vetorial

A capacidade de indexação do MATLAB permite manipulação de linhas e colunas, elementos individuais e submatrizes de matrizes. Os vetores são o ponto central da indexação e eles são gerados com o uso de : (dois pontos).

Gerando Vetores

A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos:

» x = 1:5

x = 1 2 3 4 5

Page 15: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 14

FEI - FCA

Você pode também criar o vetor com incrementos diferentes da unidade. No exemplo a seguir o passo é de π/4.

» y = 0 : pi/4 : pi

y = 0.0000 0.7854 1.5708 2.3562 3.1416

» z = 6: -1 : 1 z =

6 5 4 3 2 1

A uso de (:) permite a criação rápida de tabelas como ilustrado a seguir:

» x = (0 : 0.2 : 3)'; » y = exp(-x).*sin(x); » [x y]

ans = 0 0 0.2000 0.1627 0.4000 0.2610 0.6000 0.3099 0.8000 0.3223 1.0000 0.3096 1.2000 0.2807 1.4000 0.2430 1.6000 0.2018 1.8000 0.1610 2.0000 0.1231 2.2000 0.0896 2.4000 0.0613 2.6000 0.0383 2.8000 0.0204 3.0000 0.0070

Existem outras funções para a geração de vetores tal como logspace que gera um vetor espaçado logaritmicamente:

» w = logspace(-1,1,5)

w = 0.1000 0.3162 1.0000 3.1623 10.0000

Indexando

Page 16: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 15

FEI - FCA

Elementos individuais de matrizes podem ser referenciados inserindo seus índices de linha e coluna entre parênteses. Se uma expressão for usada como índice, o resultado é aproximado paro o inteiro mais próximo.

» A = [1 2 3; 4 5 6; 7 8 9]; » A(3,3) = A(1,3) + A(3,1)

A = 1 2 3 4 5 6 7 8 10

Usando (:) dois pontos, podemos indexar todas as linhas ou colunas ou uma parte:

» A(:,1)

A = 1 4 7

» A(2:3,1:2) A =

4 5 7 8

O exemplo a seguir mostra como fazer referência explícita a algumas linhas ou colunas. Coloca-se os números das linhas e colunas dentro de colchetes:

» A([1 3],[1 3])

A = 1 3 7 10

Um outro uso para os dois pontos (:) é no empilhamento das colunas de uma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna:

» A = [1 2; 3 4; 5 6]; » B = A(:)

B = 1

Page 17: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 16

FEI - FCA

2 3 4 5 6

Usando Vetores de 0s-1s na Indexação

Você pode usar vetores de "uns", usualmente criados a partir de operadores relacionais no referenciamento de submatrizes. Suponha que A é uma matriz de dimensão m-por-n e L um vetor linha de "zeros" e "uns" de dimensão m. Então,

» A(L,:)

especifica as linhas de A cujos elementos de L são não nulos. Ou seja, os uns de L apontam para as linhas de A. O exemplo a seguir mostra como extrair de X as linhas cuja terceira coluna é maior ou igual a 100.

» L = X(:,3) > 100; » Y = X(L,:);

Matrizes vazias

A declaração,

» X = []

atribui a matriz de dimensão zero-por-zero à X, sendo possível usar a variável X em cálculos. Criar a matriz X vazia é diferente do que apagar a variável X com o comando clear X. Com o uso de matrizes vazias é possível remover linhas e colunas de uma matriz, como mostra o exemplo a seguir que apaga as colunas 2 e 4 da matriz A:

» A(:,[2 4]) = []

Matrizes Especiais

Page 18: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 17

FEI - FCA

Existe uma coleção de funções que geram matrizes que são encontradas nos problemas de álgebra linear e processamento de sinais. Exemplos:

• compan - gera a matriz a partir do polinômio caraterístico • diag - matriz diagonal • pascal - constrói o triângulo de Pascal • zeros - matriz de "zeros" • ones - matriz de "uns" • eye - matriz identidade • logspace - vetores espaçados logaritmicamente • linspace - vetores espaçados linearmente • rand - elementos randômicos uniformemente distribuídos • randn - elementos randômicos normalmente distribuídos • etc ...

Construindo Matrizes Grandes

É possível formar matrizes maiores a partir de matrizes menores, envolvendo as matrizes menores entre colchetes . Por exemplo, se A é uma matriz quadrada,

» C = [A A'; ones(size(A)) A.^2]

cria a matriz C com o dobro do tamanho de A. Note que na construção de matrizes usando matrizes, as dimensões das matrizes menores devem ser compatíveis ou então aparecerá uma mensagem de erro.

Manipulando Matrizes

Várias funções estão disponíveis para a manipulação matricial como: rot90 (rotação), tril (parte triangular superior), triu (parte triangular inferior), reshape (alteração da dimensão) etc.

Page 19: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 18

FEI - FCA

1.1.5 Análise de Dados

Esta seção apresenta uma introdução à análise de dados usando o MATLAB. Técnicas mais poderosas estão disponíveis usando funções de álgebra linear e funções de processamento de sinais na seção 1.1.7 (polinômios e processamento de sinais).

Convenção

Por convenção, as diferentes variáveis em um conjunto de dados são colocadas em colunas, permitindo observação vertical dos dados através das linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis é armazenado numa matriz de dimensão 50-por-13.

O conjunto de dados armazenados na matriz count será usado para ilustrar o uso de algumas funções

count = 11 57 291 43 178 1011 38 163 1095 61 420 2407 12 59 287

Para esse exemplo temos 5 observações para 3 variáveis. Isso pode ser obtido como segue:

» [n,p] = size(count)

n = 5 p = 3

Um grupo de funções (abaixo) confere a capacidade de análise de dados básica:

• max - máximo valor • min - mínimo valor • mean - valor médio • median - mediana • std - desvio padrão

Page 20: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 19

FEI - FCA

• sort - ordenação • sum - soma dos elementos • prod - produto dos elementos • cumsum - soma cumulativa dos elementos • cumprod - Produto cumulativos dos elementos • diff - Aproximação da derivada • corrcoef - Coeficientes de correlação • cov - Matriz de covariância

Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna. Para arrays as funções são orientadas por colunas.

Continuando com o exemplo anterior, as declarações abaixo

» mx = max(count); » mu = mean(count); » sigma = std(count);

resultam em: mx = 61 420 2407 mu = 1.0e+003 * 0.0330 0.1754 1.0182 sigma = 21.4126 147.9503 865.7639

Ajuste de Curvas

Uma das alternativas possíveis no MATLAB para encontrarmos os coeficientes de p(x) a partir de dados tabelados é através da função polyfit, onde n é o grau do polinômio.

( )p x c x c x cd dn= + + +−

1 21

A sintaxe de chamada é a seguinte, onde x é a abcissa, p o valor da função para cada x(i) e n o grau do polinômio.

Page 21: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 20

FEI - FCA

» c = polifit(x,p,n)

1.1.6 Funções Matriciais

Autovalores e Autovetores

Se A é uma matriz n-por-n, os n números λ que satisfazem a equação Ax = λx, são os autovalores de A. Eles são encontrados usando

» eig(A)

Se o comando for usado com dois parâmetros de saída, obteremos os autovalores em D e os autovetores em X:

» [X,D] = eig(A)

Norma, Posto e Condicionamento

As funções MATLAB que calculam a norma, posto e número de condicionamento de uma matriz são:

• cond - número de condicionamento usando norma 2 • norm - norma 1, norma 2, norma F e norma ∞ • rank - posto da matriz • rcond - estimativa do condicionamento

1.1.7 Polinômios e Processamento de Sinais

O MATLAB possui funções para manipulação polinomial e para o processamento digital de sinais. Essas funções operam primordialmente com vetores.

Representação de Polinômios

O MATLAB representa polinômios como vetores linha contendo os coeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o polinômio característico de

Page 22: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 21

FEI - FCA

A = 1 2 3 4 5 6 7 8 0

é calculado com

» p = poly(A)

p = 1 -6 -72 -27

Esta é a representação MATLAB do polinômio s s s3 26 72 27− − − . As raízes dessa equação são

» r = roots(p)

r = 12.1229 -5.7345 -0.3884

Essas raízes são os mesmos que os autovalores da matriz A. Você pode remontar o polinômio original com a função poly

» p2 = poly(r)

p2 = 1 -6 -72 -27

Considere os polinômios a s s s( ) = + +2 2 3 e b s s s( ) = + +4 5 62 . O produto dos polinômios é a convolução dos seus coeficientes

» a = [1 2 3]; b = [4 5 6]; » c = conv(a,b)

c = 4 13 28 27 18

Você pode utilizar a convolução inversa para dividir dois polinômios, e no caso do exemplo, obter b novamente.

Page 23: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 22

FEI - FCA

» [q,r] = deconv(c,a) q = 4 5 6 r = 0 0 0 0 0

A lista de funções de polinômios inclui:

• poly - polinômio característico • roots - raízes de um polinômio • polyval - cálculo do valor numérico do polinômio • polyvalm - cálculo do polinômio de matrizes • conv - multiplicação (convolução) • deconv - divisão (deconvolução) • residue - expansão em frações parciais • polyder - derivada do polinômio • polyfit - ajuste polinomial de curva

Processamento de Sinais

Vetores são usados para armazenar sinais de dados amostrados, ou seqüências, para o processamento dos sinais. Para sistemas com múltiplas entradas, cada linha da matriz corresponde a uma amostra. O MATLAB básico contém as funções a seguir, enquanto que o Signal Processing Toolbox contém muitas funções adicionais.

• abs - magnitude complexa • angle - ângulo de fase • conv - convolução • deconv - deconvolução • fft - transformada rápida de Fourier • ifft - transformada rápida inversa de Fourier • fftshift - alterna quadrantes de matrizes • fft2 - FFT de duas dimensões • ifft2 - FFT inversa de duas dimensões • fftshift - rearranja os resultados da FFT • conv2 - convolução de duas dimensões

Filtragem de Dados

Page 24: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 23

FEI - FCA

A função,

» y = filter(b,a,x)

filtra os dados do vetor x com o filtro descrito pelos vetores a e b, criando o dado y filtrado.

x yH(z)

A estrutura do filtro é dada a seguir pela sua função de transferência de tempo discreta

H z Y zX z

b b z b nb za z a na z

nb

na( ) ( )( )

( ) ( ) ( )( ) ( )

( )

( )= =+ + +

+ + +

− − −

− − −

1 21 2

1 1

1 1

A função freqz do Signal Processing Toolbox, calcula a resposta em freqüência de filtros digitais. Além dessa, exemplificada abaixo, esse Toolbox contém inúmeras funções para o projeto de filtros digitais.

» [h,w] = freqz(b,a,n); » mag = abs(h); » fase = angle(h); » semilogy(w,mag) » plot(w,fase)

1.1.8 Funções de Funções

A classe de funções MATLAB para cálculo que não é sobre matrizes numéricas, mais sim com funções matemáticas é aqui designada por funções de funções e incluem:

• Integração Numérica • Equações não lineares e Otimização • Solução de Equações Diferenciais

Page 25: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 24

FEI - FCA

O MATLAB representa funções matemáticas através de arquivos-M (M-files). Por exemplo, a função

f xx x

( )( , ) , ( , ) ,

=− +

+− +

−1

0 3 0 011

0 9 0 0462 2

torna-se disponível no MATLAB se criarmos um arquivo com extensão .m, por exemplo chamado humps.m, cuja listagem é mostrada a seguir:

% listagem do arquivo humps.m function y = humps(x) y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

O gráfico dessa função é obtido como segue

» x = -1:.01:2; » plot(x,humps(x))

-1 -0.5 0 0.5 1 1.5 2-20

0

20

40

60

80

100

Integração Numérica

Uma função, tal como humps, pode ser integrada numericamente pelo processo chamado de quadratura. Exemplo:

Page 26: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 25

FEI - FCA

» q = quad('humps',0,1) q = 29.8583

O MATLAB oferece duas funções para o processo de quadratura:

• quad - regra de Simpson adaptativa • quad8 - regra de Newton adaptativa

Note que o primeiro argumento da função quad é uma string que contém o nome de uma função. Isso mostra porque essa função é chamada função de função (é uma função que opera com outras funções). Os outros dois argumentos são os limites de integração.

Equações Não Lineares e Funções de Otimização

No MATLAB básico encontramos algumas funções para a manipulação de equações não lineares e para otimizações.

• fmin - mínimo de uma função de uma variável • fmins - mínimo de uma função multivariável • fzero - zero de uma função de uma variável

Continuando com o exemplo definido pela função humps.m, a localização do mínimo da função na região de 0.5 a 1 é calculada com fmin:

» xm = fmin('humps',0.5, 1)

xm = 0.6370

e o seu valor no mínimo é

» y = humps(xm)

y = 11.2528

A localização do zero da função que está próximo de x = 0 e de x = 1 é,

Page 27: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 26

FEI - FCA

» xz1 = fzero('humps',0)

xz1 = -0.1316

» xz2 = fzero('humps',1) xz2 = 1.2995

No Optimization Toolbox temos inúmeras outras funções como por exemplo,

• attgoal - goal attainment multi-objetivo • constr - minimização com restrições • fminu - minimização sem restrições • fsolve - solução de equações não lineares • leastsq - mínimos quadrados não linear • minimax - solução do problema minimax • seminf - minimização semi-infinita

Equações Diferenciais

As funções disponíveis para a solução de equações diferenciais ordinárias são:

• ode23 - método Runge-Kutta de 2ª/3ª ordem • ode45 - método Runge-Kutta-Fehlberg de 4ª/5ª ordem

Considere a equação diferencial de segunda ordem conhecida como equação de Van der Pol.

( )x x x x+ − + =2 1 0

Esta equação pode ser escrita como um sistema de equações diferenciais de primeira ordem

( )x x x xx x

1 1 22

2

2 1

1= − −=

Page 28: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 27

FEI - FCA

O primeiro passo para simular este sistema é criar um arquivo que contem este sistema de equações diferenciais. Chamaremos este arquivo de vdpol.m

function xponto = vdpol(t,x) xponto(1) = x(1).*(1-x(2).^2)-x(2); xponto(2) = x(1);

Para simular a equação diferencial no intervalo 0 20≤ ≤t , use a função ode23.

» t0 = 0; tf = 20; » x0 = [0 0.25]'; % condicoes iniciais » [t,x] = ode23('vdpol',t0,tf,x0); » plot(t,x)

0 5 10 15 20-3

-2

-1

0

1

2

3

Para aqueles que trabalham com equações diferenciais recomenda-se o SIMULINK que é uma extensão gráfica do MATLAB para a simulação de equações diferenciais.

1.1.9 Gráficos

O sistema gráfico do MATLAB oferece uma variedade de técnicas sofisticadas para representar e visualizar dados. São funções gráficas em 2-D e 3-D.

Gráficos 2-D

Page 29: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 28

FEI - FCA

O MATLAB fornece uma variedade de funções para a visualização de dados em duas dimensões (2-D).

Funções Gráficas Elementares

A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenas na escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas são ajustadas automaticamente para acomodar os dados de entrada.

• plot - cria um plot de vetores ou colunas de matrizes • loglog - escala logarítmica nos dois eixos • semilogx - escala logarítmica no eixo x e linear em y • semilogy - escala logarítmica no eixo y e linear em x • title - adiciona um título ao gráfico • xlabel - adiciona um nome ao eixo x • ylabel - adiciona um nome ao eixo y • text - mostra um texto na posição especificada • gtext - coloca o texto no gráfico usando o mouse • grid - coloca linhas de grid

Criando um Plot

Se y é um vetor, plot(y) produz um gráfico linear dos elementos de y em função do indexador de y. Se você especificar dois vetores como argumentos, plot(x,y) produz um gráfico de y versus x. Você pode também especificar vários conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de dados, tudo isso num mesmo comando:

» t = 0:pi/100:2*pi; » x = sin(t); » y1 = sin(t + 0.25); » y2 = sin(t + 0.5); » plot(x,y1,'r-',x,y2,'g--') » title('Defasagem') » xlabel('x=sin(t)') » ylabel('y=sin(t+)')

Page 30: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 29

FEI - FCA

-1 -0.5 0 0.5 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

x=sin(t)

y=sin(t+)

Defasagem

Estilos de Linhas, Marcadores e Cores

Tal como mostrou-se no exemplo anterior, você pode passar um caractere como um argumento à função plot para especificar um dos vários estilos de linha, símbolos e cores. Na declaração plot(X,Y,S), S é uma string de 1, 2 ou 3 caracteres (delimitados por apóstrofes) com as funções definidas pela tabela a seguir. Se você não especificar uma cor, ele usa as cores da tabela automaticamente.

Page 31: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 30

FEI - FCA

Símbolo Cor Símbolo Linha y m c r g b w k

yellow magenta cyan red green blue white black

. o x + * - : -. --

ponto círculo marca x marca + marca * sólida pontilhada traço-ponto tracejada

Adicionando Linhas num Gráfico Existente

Você pode adicionar outras curvas em um gráfico que já foi construído usando o comando hold. Quando você seleciona hold on, o MATLAB não remove as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráfico atual.

O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos dados não se acomodarem dentro da escala anterior. Exemplo:

» plot(x) » hold on » plot(y1,'--') » plot(y2,'-.') » hold off

Resulta,

Page 32: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 31

FEI - FCA

0 50 100 150 200 250-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Dados Imaginários e Complexos

Quando os argumentos da função plot são complexos, isto é, eles têm parte imaginária diferente de zero, a parte imaginária é ignorada exceto quando plot é usado com um único argumento. Nesta situação, o comando é um comando gráfico resumido da parte real versus a parte imaginária. Portanto, plot(z), quando z é um vetor ou matriz complexa, é equivalente à, plot(real(z),imag(z)). Para ilustrar isso, o exemplo a seguir usa a distribuição dos autovalores de uma matriz 20-por-20 randômica:

» plot(eig(randn(20,20)),’x’)

-4 -2 0 2 4 6-4

-3

-2

-1

0

1

2

3

4

Distribuição de Autovalores

Page 33: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 32

FEI - FCA

Plotando Matrizes

A função plot pode ter um único argumento, como plot(Y). Ela desenha uma curva para cada coluna de Y. O eixo x é formado pelo índice de cada linha. Se X e Y são matrizes, plot(X,Y) plota as coluna de X versus cada as colunas de Y.

» X = 0:pi/50:2*pi; » Y = sin(X); Z = cos(X); W = log(X); » A = [Y' Z' W']; » plot(A)

Resulta,

0 20 40 60 80 100 120-3

-2.5

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Importando Dados

Você pode importar e plotar dados gerados fora do MATLAB. Suponha você tenha um arquivo chamado dados.dat contento valores de duas funções e da variável independente.

Page 34: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 33

FEI - FCA

dados.dat

2.3 1.0 1.0 3.1 1.9 2.0 4.5 2.2 3.0 5.6 2.6 4.0 4.8 3.5 5.0 4.7 4.7 6.0 4.4 5.3 7.0 4.0 6.0 8.0 4.2 7.1 9.0

O comando load dados.dat produz uma matriz chamada dados, 9-por-3. A seguir, mostra-se como renomear cada uma das variáveis e como plotar cada função separadamente.

» load dados.dat » F1 = dados(:,1); » F2 = dados(:,2); » X = dados(:,3); » subplot(211), plot(X,F1) » subplot(212), plot(X,F2)

Resulta,

0 2 4 6 8 102

3

4

5

6

0 2 4 6 8 100

2

4

6

8

Funções Gráficas Especializadas em 2-D

Page 35: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 34

FEI - FCA

O MATLAB inclui uma variedade de funções especializadas, conforme descrito resumidamente a seguir.

• bar - gráfico de barras • compass - gráfico de ângulos com setas • errorbar - gráfico de barras de erros • feather - gráfico de ângulos • fplot - calcula e plota uma função • hist - cria um histograma • polar - gráfico em coordenadas polares • quiver - cria um gráfico de um gradiente • rose - histograma em ângulo • stairs - gráfico similar ao de barras sem linhas internas • fill - desenha um polígono e preenche o interior

Plotando Funções Matemáticas

Você pode plotar o gráfico de uma função, y f x= ( ). A solução pela força bruta é calcular a função para algumas centenas de pontos no intervalo de interesse. Por exemplo, a função a seguir oscila com freqüência tendendo para infinito quando x = 0 5, .

» x = (0:1/2000:1)'; » plot(x,cos(tan(pi*x)))

Resulta,

Page 36: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 35

FEI - FCA

0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1 y = cos(tan(pi*x))

No exemplo, a função é plotada no intervalo [0,1]. Neste caso, a função fplot é mais efetiva para obtermos a representação gráfica da função pois ela escolhe automaticamente uma quantidade maior de pontos na faixa que é necessário maior resolução gráfica. Para usar a função fplot, primeiro crie um arquivo que conterá a função a ser plotada, por exemplo com o nome fofx.m

function y = fofx(x) y = cos(tan(pi*x));

Agora basta passar o nome da função como argumento de fplot.

» fplot('fofx',[0 1], 25,20,10)

Resulta,

Page 37: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 36

FEI - FCA

0 0.2 0.4 0.6 0.8 1-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1 y = cos(tan(pi*x))

Gráficos 3-D

O MATLAB oferece uma variedade de funções para a visualização de dados em 3-D, conforme sumarizado pelas funções a seguir. Contudo, não faremos um detalhamento, visto que o assunto é muito longo e pouco interessante para os objetivos iniciais deste trabalho.

• plot3 - plota linhas e pontos em 3-D. • contour, contour3 - plotagem de contornos • pcolor - desenha uma matriz retangular de células cujas cores

são determinadas pelos elementos da matriz. • image - mostra uma matriz como uma imagem mapeando os

elementos da matriz para o mapa de cores atuais. • mesh, meshc, meshz - cria uma perspectiva em 3-D dos

elementos da matriz. • fill3 - cria um polígono 3-D e preenche com uma cor sólida ou

interpola cores. • zlabel - cria um label para o eixo z. • clabel - adiciona um label à plotagem de contorno. • view - determina o ponto de visualização atual. • viewmtx - calcula uma transformação 4x4.

Page 38: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 37

FEI - FCA

1.1.10 Controles de Fluxo

O MATLAB possui declarações para controle de fluxo tal como aqueles encontrados na maioria das linguagem de computador. O controle de fluxo torna o MATLAB mais do que uma calculadora científica, permitindo que seja usado como uma linguagem de programação de alto nível completa.

FOR

O MATLAB possui a sua versão própria dos loops DO ou FOR. Com isso é possível repetir um grupo de declarações por um número predeterminado de vezes. Por exemplo,

» for i = 1:n, x(i) = 0, end

impõe o valor "0" para todos os primeiros n elementos de x. Se n é menor que "1", a construção ainda é permitida, mas as declarações internas ao loop não são executadas. Se x não existe ou tem menos elementos que x, então espaços adicionais são alocados automaticamente.

Você pode criar loops dentro de loops e pode fazer as declarações diretamente no prompt do MATLAB, embora o uso de um M-file seja recomendado nestes casos.

» for i = 1:1:m » for j = 1:1:n » A(i,j) = 1/(i+j-1); » end » end » A

A expressão do for é usualmente do tipo m:i:n, onde m é o valor inicial, n o final e i o incremento, sendo que esse pode ser negativo.

WHILE

Page 39: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 38

FEI - FCA

Tal como o for, a declaração while, também é para realizar um grupo de declarações um certo número de vezes. A diferença básica é que no while, o controle do loop é feito por uma condição lógica. Para ilustrar, vamos resolver um problema: Qual é o primeiro inteiro n para o qual n! (fatorial de n) é um número de 100 dígitos ?

» n = 1; » while prod(1:n) < 1.e100, n = n+1; end » n

A função prod realiza o produtos dos elementos do argumento. Logo, prod(1:n) é o fatorial de n.

Declarações IF e BREAK

Os exemplos a seguir ilustram a utilização da declaração if. O primeiro exemplo mostra como um cálculo pode ser dividido em três casos dependendo do sinal e da paridade de n.

if n < 0 A = negative(n) elseif rem(n,2) == 0 A = even(n) else A = odd(n) end

O segundo exemplo envolve um problema não resolvido da teoria dos números:

"Pegue um número inteiro. Se ele for par, divida por dois; se for impar, multiplique ele por 3 e some 1. Repita esse processo até que o inteiro seja igual a um. O problema é saber se existe algum inteiro para o qual o processo nunca termina".

Este programa MATLAB ilustra as declarações while e if. Também é mostrado o uso da função input que interrompe a execução para a entrada de dados e da declaração break que permite interromper um loop.

Page 40: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 39

FEI - FCA

% Problema classico "3n+1" da teoria dos números while 1 n = input('Entre com n [negativo aborta]. '); if n <= 0, break, end while n > 1 if rem(n,2) == 0 n = n/2 else n = 3*n+1 end end end

1.1.11 Arquivos M

O MATLAB normalmente é usado no modo de comando. Quando você entra com uma linha de comando, ele processa e imediatamente mostra o resultado. O MATLAB também pode executar uma seqüência de comandos que está armazenada num arquivo. Estes dois modos formam um ambiente interpretativo. Os arquivos que contém declarações MATLAB são chamados M-files porque usam a extensão .m. Por exemplo, o arquivo bessel.m contém declarações MATLAB para o cálculo de funções Bessel.

Um M-file consiste de uma seqüência de declarações MATLAB normais, podendo incluir referencias à outros M-files. Um M-file pode chamar ele próprio de forma recursiva. Você pode criar um M-file usando um editor de texto tal como o Notepad do Windows™, Edit do DOS ou outro qualquer. Dois tipos de M-files podem ser usadas: manuscritas (scripts) e funções. Arquivos scripts automatizam uma seqüência longa de comandos. Arquivos de função permite criar novas funções às existentes. Ambos, scripts e funções são arquivos texto tipo ASCII.

Arquivos Scripts

O exemplo a seguir ilustra como calcular os primeiros 16 números de Fibonacci usando um arquivo script. Suponha que o nome do arquivo seja fibno.m. Digitando fibno no prompt do MATLAB, faz com os comandos contidos no arquivo sejam executados. Note que depois da execução do programa as variáveis f e i permanecem na área de trabalho (workspace) do MATLAB. Verifique isso com who. Isso acontece porque os scripts operam globalmente

Page 41: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 40

FEI - FCA

com dados no workspace. Os demos fornecidos junto como MATLAB são bons exemplos de como usar scripts para realizar tarefas mais complexas. Para chamar os demos digite demo no prompt do MATLAB.

% M-file (script) para calcular números de Fibonacci f = [ 1 1]; i = 1; while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i + 1; end plot(f)

Quando você chama o MATLAB, ele automaticamente executa um script chamado startup.m (se voce o criou). Nesse arquivo você pode colocar as definições iniciais do workspace tal como constantes, fatores de conversão, etc.

Arquivos de Funções

Um M-file que contém a palavra function no início da primeira linha é um arquivo de função. Uma função difere de um script no fato de que argumentos podem ser passados; variáveis definidas e manipuladas no arquivo são locais à função e não operam globalmente no workspace. A função listada à seguir é do seu disco e tem o nome mean.m.

Page 42: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 41

FEI - FCA

function y = mean(x) % MEAN Average or mean value. % For vectors, MEAN(X) is the mean value of the % elements in X. % For matrices, MEAN(X) is a row vector containing % the mean value of each column. [m,n] = size(x); if m == 1 m = n; end y = sum(x) / m;

Por exemplo, se z é um vetor de inteiros de 1 à 99, sua média pode ser calculada como segue:

» z = 1:99; » mean(z)

ans = 50

A seguir, descreve-se alguns detalhes de mean.m:

• A primeira linha declara o nome da função, os argumentos de

entrada e os de saída. Sem esta linha, o arquivo é um script ao invés de função;

• O símbolo % indica que o resto da linha é um comentário e deve ser ignorado;

• As primeiras linhas documentam um M-file e são mostradas quando pedimos help mean;

• A primeira linha de help, conhecida como linha "H1", é incluída no arquivo contents.m e é usada pelo comando lookfor;

• As variáveis m, n e y são locais à função e não existem no workspace depois que do término da função. (Caso a variável já existisse antes da chamada de mean, ela continuaria existindo depois e inalterada);

• Não foi necessário colocar os inteiros de 1 a 99 numa variável chamada x. De fato, nós usamos mean com um variável chamada z. O vetor z foi passado ou copiado dentro da função onde ela tornou-se uma variável local chamada x.

Page 43: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 42

FEI - FCA

Você pode criar uma função um pouco mais complexa que mean, chamada stat, que também calcula o desvio padrão. Neste exemplos ilustramos o uso de múltiplos argumentos de saída.

function [mean,stdev] = stat(x) [m,n] = size(x); if m == 1 m = n; end mean = sum(x) / m; stdev = sqrt(sum(x.^2)/m - mean.^2);

Uma função que calcula o posto de uma matriz usa múltiplos argumentos de entrada: No caso geral teríamos múltiplos argumentos de entrada e de saída.

function r = rank(x,tol) % rank (posto em Portugues) da matrix s = svd(x); if (nargin == 1) tol = max(size(x)) * s(1) * eps; end r = sum(s > tol);

Este exemplo também mostra o uso da variável permanente nargin para encontrar o número de argumentos de entrada. A variável nargout, embora não usada neste exemplo, contém o número de argumentos de saída.

Criando um Help para Seus Arquivos Pessoais

você pode criar um help online para os seus M-files pessoais entrando o texto em uma ou mais linhas de comentário, começando sempre pela segunda linha do arquivo. Por exemplo, o arquivo da função angle,

Page 44: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 43

FEI - FCA

function p = angle(h) % ANGLE Phase angle. % ANGLE(H) returns the phase angles, in radians, of a % matrix with complex elements. % % See also ABS, UNWRAP. p = atan2(imag(h), real(h));

têm 5 linhas contíguas de comentário a partir da segunda linha. Quando digitamos help angle, todo esse bloco é mostrado. O mecanismo de help ignora linhas de comentário que aparecem mais a frente, depois de uma declaração ou mesmo uma linha em branco.

Informações Úteis

Quando você chama uma função pela primeira vez, o MATLAB compila a função e a coloca na memória. Ela estará então disponível para os usos subseqüentes sem a necessidade de ser compilada. Permanecerá na memória até o final da seção ou até que você fique com pouca memória, acarretando na sua eliminação automática.

O comando what mostra uma listagem dos M-files no diretório atual do disco. O comando type lista os M-files e ! é usado para comandos do DOS.

De uma maneira geral, quando você digita um nome de algo no MATLAB, por exemplo whoopie, o interpretador do MATLAB executa os seguintes passos:

1. Procura por whoopie como variável; 2. Verifica se whoopie é uma função interna; 3. Procura um o arquivo whoopie.m no diretório atual; 4. Procura um o arquivo whoopie.m nos diretórios especificados

pelo path do MATLAB.

ECHO, INPUT, KEYBOARD, PAUSE

Page 45: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 44

FEI - FCA

Normalmente, enquanto um M-file está sendo executado, os comandos contidos no arquivo não são mostrados na tela. O comando echo permite visualizar o comando a medida que ele vai sendo executado. Isso é especialmente útil na depuração de uma programa ou para a confecção de um programa demonstrativo.

A função input permite obter dados do usuário. por exemplo,

n = input('Entre com o valor de n = ')

interrompe a execução, mostra a frase na tela, espera, e então atribui o valor ou expressão digitada para a variável n.

Similar à input, mas muito mais poderosa, é a função keyboard. Esta função torna o teclado do computador um script. Quando colocada dentro de M-files, torna ágil a depuração e permite a modificação de variáveis durante a execução.

O comando pause interrompe a execução até que o usuário pressiona uma tecla qualquer. pause(n) interrompe por n segundos antes de continuar.

Variáveis Globais

Cada função MATLAB possui suas próprias variáveis locais que são separadas daquelas de outras funções e daquelas que estão no workspace. Contudo, se você declarar uma variável como global, todas as funções e o workspace vão enxergar a mesma variável. Para diferenciar das demais variáveis, costuma-se identificar uma variável global declarando-a com um nome longo e em letras maiúsculas, embora isso não seja uma imposição.

Suponha que você queira estudar o comportamento dos coeficientes α e β no problema do modelo predador-vítima de Latka-Volterra.

y y y yy y y y

1 1 2 1

2 2 2 1

= −= − +

αβ

Crie o arquivo lotka.m:

Page 46: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 45

FEI - FCA

function yp = lotka(t,y) % modelo Votka-Voltera global ALFA BETA yp = [y(1) - ALFA*y(1)*y(2); -y(2) + BETA*y(1)*y(2)];

Interativamente, entre como as seguintes declarações:

» global ALFA BETA » ALFA = 0.01; » BETA = 0.02; » [t,y] = ode23('lotka',0,10,[1; 1]); » plot(t,y)

Uma vez que ALFA e BETA são globais você pode altera-las interativamente e novas soluções podem ser obtidas sem ter que editar nenhum arquivo e sem passar os valores como argumentos.

Variáveis Alfanuméricas

Variáveis tipo texto são introduzidas no MATLAB envolvendo o texto com quotas simples (apóstrofos). Por exemplo,

» s = 'Ola'

s = Ola

O texto é armazenado num vetor, um caracter por elemento. Desejando concatenar textos, use colchetes:

» s = [s, ' Pessoal']

s = Ola Pessoal

Valores numéricos são convertidos em variáveis tipo texto via sprintf, num2str e int2str. Exemplo,

» c = 23; » title(['A temperatura é',num2str(c),' graus C'])

A Função EVAL

Page 47: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 46

FEI - FCA

A função eval lida com variáveis tipo texto para implementar recursos de macros de texto. eval(t) força que o texto contido na variável t seja "resolvido". O exemplo a seguir mostra como usar o comando load para carregar 10 arquivos seqüencialmente numerados: dados1.mat, dados2.mat, ...

» fname = "dados"; » for i = 1:10 » eval(['load ',fname,int2str(i)]) » end

A função eval é especialmente útil na passagem de argumentos de funções cujo parâmetro é um nome de outra função. Um exemplo típico é o função fplot que passa como argumento o nome da função a ser plotada, exemplo:

» fplot('sin',[0 10])

1.1.12 Arquivos de Disco

Os comandos load e save recuperam e armazenam dados do workspace no disco.

Manipulação de Arquivos de Disco

Os comandos dir, type, delete e cd servem à manipulação de arquivos. Para a maioria desses comandos devemos especificar o path, wildcards e o drive de destino como normalmente se faz no DOS.

O comando type difere do comando type usual de uma forma importante. Se nenhuma extensão é especificada, o MATLAB assume .m como default. Portanto, esse comando é bastante usado para obtermos a listagem de um M-file na teta do computador.

O comando diary cria um diário (log) da sua seção MATLAB na forma de um arquivo ASCII. Todos os comandos e resultados, exceto gráficos, são automaticamente acrescentados ao arquivo de diário.

Rodando Programas Externos

Page 48: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 47

FEI - FCA

O ponto de exclamação ! é a forma de acessar o DOS de dentro do MATLAB. Você pode executar qualquer programa externo tal como o editor EDIT do DOS.

» ! edit c:\usuario\teste.doc

Transferência de Dados

Você pode introduzir dados de outros programas dentro do MATLAB. Similarmente, você pode exportar dados do MATLAB para outros programas. Também é possível usar o formato que o MATLAB usa para armazenar dados: MAT-files.

Importando Dados

O melhor método de importar dados depende de quantos dados existem, qual o seu formato, etc. A seguir, listamos algumas opções:

• Entre com os dados como uma lista explícita dos elementos. Se

o número de elementos for pequeno (10-15 elementos) é mais simples digitar os dados explicitamente usando colchetes.

• Crie um M-file e escreva os dados de forma explícita usando

um editor de texto. • Carregue do dados de um arquivo ASCII. • Escreva um programa em C ou FORTRAN para converter seus

dados no formato dos MAT-files e então use o comando load.

Exportando dados do MATLAB

Para exportar dados também existem várias opções, das quais algumas são listadas a seguir:

Page 49: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 48

FEI - FCA

• Para matrizes pequenas use o comando diary para criar uma arquivo de diário e então liste as variáveis neste arquivo. Você pode, mais tarde, usar um editor de texto para manipular os dados.

• Salve os dados num formato ASCII usando o comando save

com a opção -ascii. Por exemplo,

» A = rand(4,3); » save temp.dat A -ascii

cria um arquivo ASCII chamado temp.dat • Salve os dados como MAT-files usando o comando save e

então escreva um programa em C ou FORTRAN para reformatar os dados conforme necessário para a aplicação.

1.1.13 O Depurador do Matlab

Embora o MATLAB seja uma linguagem menos complexa que outras linguagens de programação, ele tem sua sintaxe própria e você pode precisar corrigir alguns erros. O MATLAB encontra erros de sintaxe durante a fase de compilação e esses erros, em geral, são simples de corrigir. O MATLAB também encontra erros na fase de execução do programa; esses erros tendem a ser mais difíceis de solucionar por causa do workspace local às funções ser perdido quando um erro interrompe a execução. Quando isto ocorre, retornamos ao workspace base do MATLAB. Se você usou ponto-e-vírgula para suprimir os resultados intermediários da tela, não terá como saber onde o erro ocorreu.

Para mostrar os resultados intermediários, você pode usar um dos métodos a seguir:

• Remova os ponto-e-vírgula de interesse; • Use a declaração keyboard para permitir que o workspace seja

examinado no ponto da declaração; • Torne a primeira linha da função uma linha de comentário, de

tal forma que a função possa ser executada como um script,

Page 50: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 49

FEI - FCA

fazendo com que os resultados intermediários sejam acessíveis no workspace base do MATLAB;

• Use o depurador do MATLAB.

Comandos de Depuração

• dbstop - coloca um brekpoint • dbclear - remove um brekpoint • dbcont - continua a execução • dbdown - troca o contexto do workspace • dbstack - lista quem chamou quem • dbstatus - lista todos os brekpoint • dbstep - executa uma ou mais linhas • dbtype - lista um M-file com número de linhas • dbup - troca o contexto do workspace • dbquit - sai do modo de depuração

Usando o Depurador

Quando você encontra um erro num M-file, use os comandos de depuração para inserir breakpoints para ajuda-lo da depuração do erro. Quando a execução pára num breakpoint você pode introduzir qualquer comando válido do MATLAB.

Lembre-se que os comandos de depuração funcionam com arquivos de funções, não com scripts.

1.2 Toolboxes do Matlab

O MATLAB possui um rica coleção de funções imediatamente úteis. Os toolboxes estendem essa capacidade com funções especializadas. A seguir, resume-se as funções disponíveis no toolbox de sistema de controle e enumera-se outros toolboxes. É importante perceber que as ferramentas que não são encontradas nos toolboxes podem ser criadas escrevendo-se novos M-files.

Page 51: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 50

FEI - FCA

1.2.1 Sistemas de Controle

O toolbox de sistema de controle usa funções de matrizes do MATLAB na construção de funções especializadas para o engenheiro de controle. Esse toolbox é uma coleção de algoritmos expresso, na sua maior parte, por M-files, que implementam projetos comuns de sistemas de controle, análises e técnicas de modelamento.

Aqui, sistemas de controle podem ser representados por funções de transferências ou na forma de espaço de estado, permitindo que você use técnicas clássicas e modernas. Trata-se tanto dos sistemas de tempo contínuo como os de tempo discreto. Estão disponíveis funções de conversão entre as várias formas de representação de um modelo. Respostas temporais, respostas em freqüência, lugar das raízes, etc, podem ser calculados e plotados. Outras funções fornecem recurso para a alocação de pólos, controle ótimo e estimação/filtragem.

Construção de Modelos

• append - concatena sistemas dinâmicos • augstate - aumenta estados às saídas • blkbuild - obtém equação de estado a partir do diag. em blocos • cloop - fecha a malha • connect - modelagem via diagrama em blocos • conv - convolução de dois polinômios • destim - estimar de tempo discreto • dreg - estimador/controlador discreto • drmodel - cria um modelo discreto randômico • estim - estimador de tempo contínuo • feedback - conexão de dois sistemas numa realimentação • ord2 - cria A, B, C, D de um sistema de segunda ordem • pade - aproximação Padé de um atraso • parallel - conexão de sistemas em paralelo • reg - controlador/estimador contínuo • rmodel - cria um modelo contínuo randômico • series - conexão série de sistemas • ssdelete - apaga, entradas, saídas ou estados de um sistema • ssselect - seleciona um subsistema de um sistema maior

Page 52: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 51

FEI - FCA

Conversão de Modelos

• c2d - conversão de tempo contínuo para tempo discreto • c2dm - conversão de contínuo para discreto com método • c2dt - conversão de tempo contínuo para discreto com atraso • d2c - conversão de tempo discreto para contínuo • d2cm - tempo discreto para contínuo com método • poly - conversão de raízes para polinômio • residue - expansão em frações parciais • ss2tf - espaço de estado para função de transferência • ss2zp - espaço de estado para zero-pólo • tf2ss - função de transferência para espaço de estado • tf2zp - função de transferência para zero-pólo • zp2tf - zero-pólo para função de transferência • zp2ss - zero-pólo para espaço de estado

Redução de Modelos

• balreal - realização balanceada • dbalreal - realização balanceada discreta • dmodred - redução da ordem de modelos discretos • minreal - realização mínima e cancelamento de pólos e zeros • modred - redução da ordem do modelo

Realização de Modelos

• canon - forma canônica • ctrbf - forma controlável • obsvf - forma observável • ss2ss - aplica transformação de similaridade

Page 53: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 52

FEI - FCA

Propriedade de Modelos

• covar - resposta contínua ao ruído branco • ctrb - matriz de controlabilidade • damp - fator de amortecimento e freqüência natural • dcgain - ganho DC de regime permanente contínuo • dcovar - resposta discreta ruído branco • ddamp - fator de amortecimento e freqüência natural discreta • ddcgain - ganho DC de regime permanente discreto • dgram - gramianos discretos controlabilidade/observabilidade • dsort - ordena autovalores discretos pela tamanho • eig - autovalores e autovetores • esort - ordena autovalores contínuos pela parte real • gram - gramianos de controlabilidade/observabilidade • obsv - matriz de observabilidade • printsys - mostra o sistema formatadamente • roots - raízes de polinômio • tzero - zeros de transmissão • tzero2 - zeros trans. usando método randômico de perturbação

Resposta Temporal

• dimpulse - resposta discreta ao impulso • dinitial - resposta discreta às condições iniciais • dlsim - simulação discreta a entradas arbitrárias • dstep - resposta discreta ao degrau • filter - simulação SISO da transformada Z • impulse - resposta impulsiva • initial - resposta contínua às condições iniciais • lsim - simulação contínua a entradas arbitrárias • ltitr - função de baixo nível para cálculo de resposta temporal • step - resposta ao degrau • stepfun - função degrau

Page 54: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 53

FEI - FCA

Resposta em Freqüência

• bode - diagrama de Bode (resposta em freqüência) • dbode - diagrama de Bode discreto (resposta em freqüência) • dnichols - diagrama de Nichols discreto • dnyquist - diagrama de Nyquist discreto • dsigma - diagrama em freqüência de valores singulares

discretos • fbode - diagrama rápido de Bode para sistemas contínuos • freqs - resposta em freqüência da transformada de Laplace • freqz - resposta em freqüência da transformada Z • ltifr - função de baixo nível para resposta em freqüência • margin - margem de ganho e fase • nichols - diagrama de Nichols • ngrid - desenha um grid de linhas no diagrama de Nichols • nyquist - diagrama de Nyquist • sigma - diagrama em freqüência de valores singulares

contínuos

Lugar das Raízes

• pzmap - mapeamento de pólos e zeros • rlocfind - determinação interativa do ganho no lugar das raízes • rlocus - lugar das raízes de Evans • sgrid - grid para o lugar das raízes contínuo • zgrid - grid para o lugar das raízes discreto

Seleção de Ganhos

• acker - alocação SISO de pólos • dlqe - projeto do estimador linear quadrático discreto

Page 55: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 54

FEI - FCA

• dlqew - estimador linear quadrático discreto generalizado • dlqr - projeto do regulador linear quadrático discreto • dlqry - regulador discreto com penalização nas saídas • lqe - projeto do estimador linear quadrático • lqed - estimador discreto a partir do funcional contínuo • lqe2 - estimador linear quadrático usando método Schur • lqew - estimador linear quadrático contínuo generalizado. • lqr - projeto do regulador linear quadrático • lqrd - regulador discreto a partir do funcional contínuo • lqry - regulador contínuo com penalização nas saídas • lqr2 - regulador linear quadrático usando método Schur • place - alocação multivariável de pólos

Solução de Equações

• are - solução da equação algébrica de Riccati • dlyap - solução da equação discreta de Lyapunov • lyap - solução da equação contínua de Lyapunov • lyap2 - solução da equação de Lyapunov usando

diagonalização

Demonstrativos

• ctrldemo - Introdução ao toolbox de sistemas de controle • boildemo - projeto LQG para uma caldeira • jetdemo - o clássico projeto do jet transport yaw damper. • diskdemo - projeto do controlador digital de um winchester • kalmdemo - projeto e simulação de um filtro de Kalman

1.2.2 Outros Toolboxes

Processamento de Sinais, Otimização, Identificação de Sistemas, Controle Robusto, Análise e Síntese µ, Splines, Redes Neurais, Estatística, Projeto de Controle Não Linear, etc.

Page 56: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 55

FEI - FCA

1.3 Simulink Básico

O SIMULINK é uma extensão gráfica do MATLAB para a simulação dinâmica de sistemas. Existem duas fases distintas de uso: a definição do modelo e análise do modelo. Para facilitar a definição do modelo, o SIMULINK fornece uma ferramenta gráfica de edição em blocos, onde o modelo é criado e editado tipicamente via mouse.

Depois de definir o modelo, você pode analisá-lo diretamente do menu na janela atual do SIMULINK ou entrando os comandos devidos pela janela de comando do MATLAB. Dentre as ferramentas de análise de modelos temos a simulação propriamente dita, linearização de modelos, etc.

1.3.1 Linhas Gerais

Descreve-se brevemente a seguir as ações que são necessárias para iniciar o uso do SIMULINK:

1. Entre com o comando simulink no prompt do MATLAB para

abrir a biblioteca principal de blocos. 2. Clique no menu File e selecione New. O SIMULINK abre uma

janela em branco como o nome "Untitled". Esse nome pode ser alterado na hora de salvar o arquivo.

3. Abra uma ou mais bibliotecas e arraste os blocos para a janela

ativa. 4. Depois de alocar os blocos, desenhe linhas para ligar os blocos,

movendo a ponta do seta do mouse enquanto segura o botão esquerdo do mouse apertado.

5. Abra os blocos (dois cliques) e altere seus parâmetros. Os

parâmetros podem ser qualquer expressão válida do MATLAB. 6. Salve o arquivo com o Save do menu File.

Page 57: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 56

FEI - FCA

7. Execute a simulação selecionando Start no menu Simulation. Durante a simulação o menu Start é alterado para Stop. Se você seleciona-lo, voltará a aparecer Start.

8. Você pode alterar os parâmetros de simulação selecionando

Parameters no menu Simulation. 9. Você pode monitorar o comportamento do seu sistema com um

osciloscópio (bloco Scope), ou você pode usar o bloco To Worksspace para enviar os dados para a área de trabalho do MATLAB e manipular os resultados com funções do MATLAB.

1.3.2 Construção de Modelos

O SIMULINK permite que você represente um sistema dinâmico por meio de diagramas em bloco.

Construção de um Modelo Elementar

Para definir um sistema, os blocos são copiados das bibliotecas de blocos padrões do SIMULINK ou daquelas criadas por você mesmo. A biblioteca padrão é organizada em vários subsistemas que agrupam blocos de acordo com sua função. Para rodar o SIMULINK, primeiro inicialize o MATLAB clicando duas vezes sobre o ícone do Windows e então entre o comando simulink.

» simulink

Este comando mostra uma nova janela contendo ícones dos blocos de subsistemas que constituem a biblioteca padrão.

Page 58: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 57

FEI - FCA

Estes blocos podem ser abertos (clicando duas vezes), abrindo janelas de onde os blocos serão copiados para a sua janela de trabalho. Abra uma nova janela vazia selecionando New no menu File. Para copiar os blocos, clique sobre o bloco desejado e arraste-o para a sua janela enquanto mantém o botão esquerdo do mouse apertado. Inicialmente clique sobre a biblioteca Sources e arraste um gerador de funções para a nova janela (untitled).

Page 59: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 58

FEI - FCA

Os blocos arrastados são copiados com os seus parâmetros originais. A maioria dos blocos pode ser aberta mostrando seus parâmetros numa janela independente. Modificando os parâmetros você personaliza o bloco.

Clicando 2 vezes sobre o bloco gerador de sinais abre-se a janela de parâmetros. Selecione a forma de onda da saída como senoidal, sua freqüência e amplitude iguais a 1, arrastando o cursor ou introduzindo o novo valor diretamente no campo numérico. Quando terminar clique sobre o OK.

Abra agora a biblioteca Sinks e arraste um bloco de osciloscópio (scope) para dentro da nova janela de sistema.

Page 60: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 59

FEI - FCA

Para abrir a janela do osciloscópio, clique duas vezes sobre ele. Posicione a janela num lugar conveniente com o mouse e escolha a faixa horizontal e vertical igual a 10 e 3 respectivamente. Não clique sobre OK, pois fecharia a janela de observação do osciloscópio.

Page 61: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 60

FEI - FCA

Usando mouse conecte a saída do gerador de sinais com a entrada do osciloscópio. Aperte e mantenha o botão esquerdo do mouse arrastando a linha da entrada para a saída ou vice-versa.

Enquanto puxa a linha, você poderá apertar também o botão central do mouse para obter qualquer angulação da reta. Quando você solta o botão esquerdo muito próximo do ponto a ser conectado, ele indica a conexão preenchendo a seta de preto. Caso você solte o botão muito longe do ponto, ele interrompe a linha com uma seta não preenchida e desconectada. A partir daí você pode ligar esse pedaço de linha ao destino com uma outra linha, não precisando desenhar tudo novamente. Desta forma é possível traçar uma ligação

Page 62: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 61

FEI - FCA

com qualquer formato. A cada vez que você solta o botão esquerdo e aperta novamente inicia-se uma nova linha ligada a anterior a partir desse ponto. Se você não gostou do resultado apague a linha selecionando-a com um clique em qualquer ponto da linha e então pressione a tecla DELETE ou use Cut ou Clear no menu Edit.

Depois de terminado o modelo você pode disparar a simulação. Para selecionar o método de integração e demais parâmetros clique no menu Simulation e escolha Parameteres.

Selecione o quadrado do parâmetro de máximo passo de integraçao e altere o valor default para 0.01. Ao final clique sobre OK. Inicie a simulação escolhendo Start no menu Simulation.

Os controle do osciloscópio e do gerador de sinais permanecem ativos durante a simulação. Você pode selecionar uma forma de onda diferente e verificar o resultado imediatamente no osciloscópio. Mova os cursores dos osciloscópio para ver o efeito. A simulação termina quando o tempo máximo de simulação é atingido ou quando selecionamos Stop no menu Simulation.

Page 63: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 62

FEI - FCA

Você possui agora um modelo que pode ser salvo em disco como um arquivo do MATLAB do tipo M-file. Selecione Save no menu File e selecione um diretório, um nome para seu modelo e depois clique sobre o OK.

Para encerrar a edição do seu modelo selecione Close no menu File.

Construção de outro Modelo Simples

Page 64: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 63

FEI - FCA

Se você salvou o modelo anterior com o nome novo.m, você pode abrir a janela com o diagrama simplesmente, digitando "novo" na linha de comando do MATLAB.

» novo

Os blocos dentro de uma janela do SIMULINk podem ser movidos livremente. Se mais de um bloco de movido simultaneamente, eles mantém sua posição relativa e as linhas de conexão também são movidas. Selecione o gerador de sinais, osciloscópio e a linha de conexão envolvendo-os com o mouse. Para tanto, aperte o botão esquerdo do mouse estando acima e a esquerda ou abaixo e a direita dos objetos, e ai arrastando o mouse até envolver todos os objetos. Os objetos serão então marcados com pequenos quadrados nos vértices dos blocos e na linha de conexão. Arraste os blocos selecionados para o topo da janela e solte o botão do mouse. Agora copie um bloco Gain do subsistema Linear.

Page 65: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 64

FEI - FCA

Signal Gen. Scope

1

Gain

Clique duas vezes sobre o bloco Gain para abrir a janela de configuração do bloco e altere o valor do ganho para 2. Para ligar a entrada do bloco Gain à linha de conexão entre o gerador e o osciloscópio, você pode começar o traçado da entrada do bloco de ganho ou por exemplo, da saída do gerador

Signal Gen. Scope

2

Gain

Signal Gen. Scope

2

Gain

Signal Gen. Scope

2

Gain

Para mover o ponto onde dois segmentos de reta se encontram, clique no vértice e arraste o círculo

Page 66: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 65

FEI - FCA

Signal Gen. Scope

2

Gain

Você também pode mover o segmento de linha, clicando no meio do segmento e arrastando-a enquanto mantém o botão esquerdo do mouse apertado.

Adicione agora um osciloscópio na saída do ganho, sendo que para isso não é necessário copia-lo da biblioteca. Copie daquela que já existe no diagrama, segurando o botão direito do mouse enquanto arrasta o bloco para a posição desejada. O bloco copiado tem os mesmos parâmetros do bloco original.

Signal Gen. Scope

2

Gain Scope1

A seguir, conecte o ganho do segundo osciloscópio, abra os dois e inicie a simulação. Para parar a simulação clique sobre Stop no menu Simulation.

Para remover blocos ou linhas, selecione os objetos que deseja remover e aperte a tecla DEL ou escolha Cut ou Clear no menu Edit. Para selecionar mais de um objeto, mantenha apertada a tecla SHIFT enquanto aperta o botão esquerdo do mouse. No exemplo anterior, selecione o segundo osciloscópio e a linha que liga este bloco ao bloco de ganho e então remova estes objetos. Insira um bloco Mux da biblioteca Connections.

Signal Gen.

2

Gain

Scope

Mux

Mux

Page 67: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 66

FEI - FCA

Abra o bloco Mux e altere o número de entradas para 2 e então feche a caixa de diálogo.

O Mux tem agora 2 entradas. Conecte o gerador de sinais e o bloco de ganho nas entradas do Mux e ligue a saída deste ao osciloscópio. Os dois sinais comporão um vetor de dimensão 2 que será visualizado simultaneamente no osciloscópio.

Signal Gen.Scope

2

Gain

Mux

Mux

Agora, copie um bloco To Workspace da biblioteca Sinks e então abra a caixa de diálogo.

Signal Gen.Scope

Mux

Mux

2

Gain

youtTo Workspace

O bloco To Workspace envia um vetor de qualquer tamanho para o workspace do MATLAB como uma matriz. Essa matriz tem uma linha para cada

Page 68: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 67

FEI - FCA

instante de tempo até o limite especificado na caixa de diálogo. Na caixa de diálogo também podemos mudar o nome da variável que conterá o vetor.

Altere o nome da variável para matriz1 e conecte o bloco To Workspace na saída do Mux.

Signal Gen.

2

Gain

Mux

Mux Scope

matriz1To Workspace

Inicie a simulação desse modelo e obtenha a figura a seguir. Pare a simulação e salve o modelo. Para verificar se a variável matriz1 foi criada no workspace do MATLAB, use o comando whos na janela de comando do MATLAB:

Name Size Elements Bytes Density Complex matriz1 1000 by 2 2000 16000 Full No Grand total is 2000 elements using 16000 bytes

Page 69: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 68

FEI - FCA

Como a variável matriz1 está disponível, qualquer manipulação poderá ser realizada. A coisa mais simples que podemos fazer é plotar o gráfico da matriz matriz1 usando comando plot(matriz1). Cada uma das linhas contém 1000 pontos que foram capturados durante a simulação.

0 200 400 600 800 1000-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

Page 70: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 69

FEI - FCA

1.3.3 Análise dos Modelos

Nesta seção discutiremos como usar o SIMULINK numa simulação e num processo de linearização.

Níveis de Uso

Existem três formas distintas de usar o SIMULINK. A forma mais interativa, e também a mais fácil, é controlar a simulação de dentro da janela do diagrama em blocos e observar os resultados com osciloscópios. Esta é a forma recomendada quando você simular um novo sistema pela primeira vez, pois será mais fácil para depura-lo.

O segunda forma é simulando o sistema através da linha de comando do MATLAB. Esse método não é tão interativo como o primeiro mas proporciona maior flexibilidade. Obtendo os resultados da simulação no workspace do MATLAB, você poderá fazer outras análises e também plotar os resultados usando todos os recursos do MATLAB.

A forma mais complexa e flexível de usar o SIMULINK é acessando diretamente a S-function do modelo. Todo modelo SIMULINK é disponível no MATLAB como uma S-function de mesmo nome que o diagrama. O próprio simulador usa essas funções para realizar suas tarefas. Nessas S-functions estão presentes informações como o número de entradas e saídas, a equação de estado que descreve o diagrama, etc.

Simulação

Simular um modelo do SIMULINK significa resolver numericamente um conjunto de equações diferenciais ordinárias. Estão disponíveis para isso um conjunto de métodos de integração. Infelizmente, devido à diversidade de comportamentos dinâmicos que os sistemas podem apresentar, não existe um método único capaz de garantir sempre a melhor exatidão e eficiência de simulação. Logo, a escolha do método e dos parâmetros de simulação são cruciais para uma simulação apurada.

Simulação via Menu

Page 71: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 70

FEI - FCA

A simulação pode ser iniciada tanto pela linha de comando como pelo menu Simulation. Selecione Start nesse menu depois de colocar o valor de cada parâmetro ou o nome da variável MATLAB correspondente.

A linha Return Variables pode ser usada para colocar o tempo, vetor de estado e vetor de saída no workspace do MATLAB. Se este campo for deixado em branco nenhuma variável será enviada ao workspace.

Simulação a partir da Linha de Comando

O exemplo a seguir realiza a mesma simulação anterior.

» [t,x,y] = euler('novo',[T_inicial, T_final],... » x0, [Tolerancia, Passo_Minimo_Integracao,... » Passo_Maximo_Integracao]);

As condições iniciais, as quais não podem ser definidas no menu de simulação, são definidas no vetor x0. O valor numérico de x0 sobrepõe as condições iniciais impostas aos blocos, a menos que x0 seja uma matriz vazia "[]".

Page 72: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 71

FEI - FCA

A simulação a partir da linha de comando tem as seguintes vantagens quando comparada com a simulação via menu:

• Condições iniciais dos blocos podem ser sobrepostas; • Não especificando argumentos de saída na linha de comando, o

gráfico das saídas as trajetórias de estado (quando não houver saídas), é automaticamente plotado;

• Entradas externas podem ser especificadas usando variáveis extras na linha de comando;

• A simulação pode ser incorporada a um M-file maior como uma linha do programa, permitindo por exemplo a alteração de parâmetros dos blocos;

• Para modelos pequenos, a simulação é um pouco mais rápida;

Todos os algoritmos de integração têm a mesma sintaxe de chamada, de tal forma que métodos diferentes podem ser selecionados simplesmente trocando o nome da função:

[t,x,y] = euler('nome_modelo', tfinal); [t,x,y] = rk23('nome_modelo', tfinal); [t,x,y] = rk45('nome_modelo', tfinal); [t,x,y] = linsim('nome_modelo', tfinal); [t,x,y] = adams('nome_modelo', tfinal); [t,x,y] = gear('nome_modelo', tfinal);

Para obter informações detalhadas sobre os argumentos de entrada digite, por exemplo: type rk45.m

Plotando as Variáveis de Saída

Os gráficos das variáveis de saída do SIMULINK podem ser obtidos de uma das três formas:

• Blocos Scope (osciloscópio) • Variáveis de retorno e comandos gráficos do MATLAB • Blocos To Workspace e comando gráficos do MATLAB

Usando o bloco Scope:

Page 73: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 72

FEI - FCA

Step Fcn

1s+1

Transfer Fcn Scope

Usando variáveis de retorno, você pode usar os comandos gráficos do MATLAB. A saída, neste exemplo, é obtida por um bloco do tipo output aqui denominado saida. A integração pode ser iniciada pela linha de comando do MATLAB como segue:

Step Fcn

1s+1

Transfer Fcn

1Saida

» [t,x,y] = linsim('novo1', 2); » plot(t,y)

Usando o bloco To Workspace:

Como o passo de integração durante a simulação pode ser variável, é necessário enviarmos também a base temporal para o workspace quando usamos o bloco To Workspace.

1s+1

Transfer FcnStep Fcn

saidaTo Workspace

tempoTo Workspace1Clock

» plot(tempo,saida)

Condições Iniciais

As condições iniciais, as quais são impostas no instante inicial de simulação, são geralmente colocadas dentro dos blocos. Essas condições iniciais

Page 74: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 73

FEI - FCA

que colocamos como parâmetros de um dado bloco pode ser sobreposta usando um argumento extra na chamada da simulação:

» [t,x,y] = linsim('modelo',tfinal,x0);

Quando o vetor x0 é uma matriz vazia "[]" ou não é especificada, a condição definida no bloco é usada. Caso contrário, os valores definidos em x0 serão os usados. Para determinar quais condições iniciais foram definidas nos blocos do modelo digite,

» [sizes,x0] = modelo

onde "modelo" é o nome do modelo. O nome do bloco associado a cada uma das variáveis de estado é obtido com um terceiro argumento de saída:

» [sizes,x0,nome_bloco] = modelo

Loops Algébricos

Loops algébricos, ou implícitos, ocorrem quando blocos que possuem ligação direta (ganho) da entrada para a saída, formam uma malha fechada. Quando isso ocorre, o SIMULINK precisa fazer iterações à cada passo da simulação para determinar se existe uma solução para o problema. Loops algébricos reduzem consideravelmente a velocidade de simulação e podem ser insolúveis. Portanto, evite-os sempre que possível. Alguns blocos com ligação direta da entrada para saída são:

• Blocos de ganho; • A maioria dos blocos não lineares; • Função-de-transferência quando numerador e denominador são

da mesma ordem; • Blocos Zero-Pólo-Ganho quando existem tantos zeros quanto

pólos; • Blocos Espaço-de-Estado quando a matriz D é não nula;

O sistema abaixo é um exemplo de loop algébrico:

Page 75: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 74

FEI - FCA

1

Gain

++

Sum

s+2s+1

Transfer Fcn

1Outport

1Inport

Interpolação de Dados

As funções de integração do SIMULINK são de passo variável. Isso significa que a integração pode resultar em intervalos não igualmente espaçados no tempo, tornando difícil a comparação de diferentes simulações. Nestas situações recomenda-se o uso de funções de interpolação. O exemplo a seguir mostra como gerar um gráfico com uma resolução temporal maior.

» [t,x,y] = rk45('modelo',10,[],[tol mstep Mstep]); » tfino = 0:mstep/100:10; » yfino = spline(t,y,tfino); » plot(tfino,yfino,t,y)

Escolha do Algoritmo de Simulação

O desempenho da simulação em termos de velocidade e exatidão, é função do modelo e das condições. A seguir dá-se algumas sugestões para a seleção do método.

linsim

É usado para modelos lineares. Modelos lineares são aqueles compostos por blocos lineares tais como: funções de transferência, ganhos, somadores, espaço de estado, etc.

Se o sistema é quase que totalmente composto por blocos lineares e poucos blocos não lineares, então linsim ainda funciona bem. Esse algoritmo é particularmente recomendado quando os blocos lineares têm dinâmicas muito distintas (problemas mal condicionados "stiff").

rk45, rk23

Page 76: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 75

FEI - FCA

Os métodos de Runge-Kutta de terceira e quinta ordem, em geral, têm desempenho superior aos outros métodos quando o sistema é altamente não linear e/ou possui descontinuidades. Este método não funciona bem para problemas stiffs, sendo que nestes casos recomenda-se o linsim e gear.

gear

Use este método quando o sistema não apresentar descontinuidades e for não linear. Ele funciona comparativamente muito bem para problemas stiff e é menos eficiente que os demais quando o problema não é stiff.

adams

Use este método quando o sistema não apresentar descontinuidades e for não linear e não for stiff.

euler

Use este método apenas para fins didáticos.

Controle do Passo de Integração

O parâmetro tol, usado na integração, especifica o valor aceitável do erro relativo em cada passo da simulação.

[t,x,y] = linsim('modelo',tf,x0,[tol,mpasso,Mpasso]);

Como regra geral, este parâmetros está entre 0.1 e 1e-6. Quanto menor o valor de tol, mais passos serão necessários na simulação.

Sistemas de Tempo Discreto

O SIMULINK possui a habilidade de simular sistemas discretos (dados amostrados). Os modelos podem ter múltiplas taxas de amostragem e conter tanto blocos discretos como contínuos. Todos os blocos discretos encontrados nas bibliotecas possuem embutido um amostrador nas entradas e seguradores de ordem zero nas saídas.

O período de amostragem é introduzido na caixa de diálogo dos blocos. Normalmente o período de amostragem é definido por um escalar; contudo, é

Page 77: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 76

FEI - FCA

possível definir um offset ao período, usando um vetor de 2 elementos no mesmo campo.

O vetor [Ts, offset] define o período de amostragem Ts e o valor do offset, significando que o bloco só é atualizado nos instantes múltiplos inteiros do período de amostragem mais o offset:

t = n*Ts + offset

onde n é um inteiro e o offset pode ser tanto positivo como negativo. O offset é especialmente útil quando desejamos que certos blocos sejam atualizados antes ou depois que outros.

Nos Sistemas puramente discretos, para obtermos a informação somente nos períodos de amostragem, basta selecionar o passo de integração mínimo maior que o passo de integração máximo.

Linearização

O SIMULINK oferece as funções linmod e dlinmod para extrair modelos lineares do diagrama, na forma de espaço de estado,

x Ax Buy Cx Du= += +

Page 78: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 77

FEI - FCA

onde x, u e y são vetor de estado, vetor de entrada e vetor de saída, respectivamente. Crie o modelo a seguir e chame-o de modelo.

1y(1)

1

Inport+-

2

y(2)

s +2s+12

1

Planta

1

s+1

Realimentacao

Para extrair o modelo linear associado a esse diagrama entre com o comando:

» [A,B,C,D] = linmod('modelo')

A = -1 0 1 -1 -2 -1 0 1 0 B = 0 1 0 C = 0 0 1 -1 0 0 D = 0 1

As entradas e saídas do modelo devem ser definidas usando blocos Input e Output da biblioteca Connections. Note que geradores de sinais e osciloscópios não funcionam como blocos desse tipo. Blocos Input podem ser usados junto com geradores de sinais usando blocos somadores.

Uma vez que o dado está na forma de espaço de estado, as funções do Control System Toolbox podem ser utilizadas para outras análises, tais como:

Page 79: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 78

FEI - FCA

• conversão para a forma de função de transferência

[num,den] = ss2tf(A,B,C,D) • diagramas de Bode

bode(A,B,C,D) • resposta temporal linearizada

step(A,B,C,D) impulse(A,B,C,D) lsim(A,B,C,D,u,t)

Quando o modelo é não linear, um ponto de operação deve ser escolhido para o qual o modelo linearizado será obtido. O modelo não linear também é sensível ao tamanho da perturbação utilizada para extrair o modelo. Argumentos extras permitem escolher o ponto de operação e as perturbações:

[A,B,C,D] = linmod('modelo',x,u,xpert,upert)

Para sistemas de tempo discreto ou sistemas mistos, use a função dlinmod para a linearização. Utilize o help para saber mais sobre essa função.

Determinação do Estado Estacionário

A função trim do SIMULINK permite determinar os pontos de equilíbrio do estado estacionário. Considere, por exemplo, o modelo chamado modelo:

Page 80: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 79

FEI - FCA

1y(1)

1

Inport+-

2

y(2)

s +2s+12

1

Planta

1

s+1

Realimentacao

Determine os valores da entrada e dos estados que fazem as duas saídas serem iguais à 1. Primeiro, forneça uma estimativa inicial para as variáveis e para a entrada:

» x = [0; 0; 0]; » u = 0;

Em seguida, imponha os valores desejados para as saídas:

» y = [1; 1];

Use os índices das variáveis para indicar quais delas podem variar livremente e quais devem ficar inalteradas:

» ix = []; % permita a variacao dos estados » iu = []; % permita a variacao da entrada » iy = [1;2]; % fixe tanto a saida 1 como a 2

Chame a função trim:

» [x,u,y,dx] = trim('modelo',x,u,y,ix,iu,iy)

x = 1.0000 0.0000 1.0000 u = 2

Page 81: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 80

FEI - FCA

y = 1.0000 1.0000 dx = 1.0e-015 * -0.3331 -0.2244 0.0567

1.3.4 Como o Simulink Funciona

No SIMULINK. o diagrama em blocos é convertido numa estrutura mais apropriada à simulação. Primeiro, cada um dos parâmetros dos blocos é calculado pelo MATLAB, trocando variáveis pelo valor numérico. Em seguida, os blocos são ordenados, desfeitos os agrupamentos de blocos e os loops algébricos são detectados. Finalmente, ele confere as ligações entre os blocos.

Terminada a conversão de estrutura, a simulação está pronta para ser iniciada. O sistema é então simulado via integração numérica e o modelo é tratado como uma função do tipo S-function que fornece as derivadas de todos os estados a cada passo. Sabendo o valor das derivadas num instante, a integração determina qual o novo vetor de estado e assim por diante.

1.3.5 S-Functions

Quando você cria um modelo no SIMULINK, uma nova função do tipo S-function, com o mesmo nome do diagrama, fica disponível no MATLAB. Essa função define as dinâmicas do modelo e se comporta operacionalmente como qualquer outra função MATLAB. É essa função que será usada pelo método de integração para simular o modelo. Sua sintaxe de chamada é,

» sys = modelo(t,x,u,flag)

onde modelo é o nome do modelo e flag é quem define qual informação vai ser colocada de volta em sys. Por exemplo, se flag é colocado em 1, o conteúdo de sys após a chamada da função será o vetor de estado no instante t. Note portanto que você pode criar seu modelo diretamente escrevendo uma S-function sem ter que desenhar o diagrama em blocos. Essa forma é aconselhada nos casos que seu modelo pode ser escrito de forma concisa como um conjunto de equações diferenciais.

Page 82: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 81

FEI - FCA

Tal como qualquer outra função, as S-function podem ser encadeadas, fazendo com que uma S-function chame outras.

Um outro mecanismo interessante é o mascaramento de blocos que permite que você defina uma janela particular de diálogo com o usuário, seu ícone, e os comandos de inicialização. Você pode então mascarar uma S-function e tornar um modelo inteiro, disponível como um bloco.

Argumentos das S-function

As possíveis opções numéricas da variável flag e o conteúdo retornado no argumento de saída são:

• flag = 0 - tamanho dos parâmetros e condições iniciais • flag = 1 - derivadas dos estados de tempo contínuo • flag = 2 - estados de tempo discreto • flag = 3 - vetor de saída • flag = 4 - próximo t para atualização de tempo discreto

Para entender melhor as S-functions, coloque-se na posição do SIMULINK. Cada um dos valores possíveis do flag corresponde a algo que você vai precisar em instantes distintos da simulação. Por exemplo, no início da simulação você precisa saber quantas variáveis serão simuladas, quantas delas são de tempo contínuo, quantas são discretas e as condições iniciais associadas com essas variáveis. Para ter a resposta a essas perguntas, chame a S-function com flag = 0:

» [sizes,x0] = modelo([],[],[],0);

onde x0 contém as condições iniciais de cada estado e sizes as seguintes informações:

• sizes(1) - número de estados contínuos • sizes(2) - número de estados discretos • sizes(3) - número de saídas • sizes(4) - número de entradas • sizes(5) - número de raízes descontínuas • sizes(6) - usado para encontrar loops algébricos

Page 83: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 82

FEI - FCA

Nas outras etapas da simulação você chamará novamente a S-function com outros valores em flag para obter outras informações.

Exemplo de uma S-function

Considere a equação diferencial de segunda ordem conhecida como equação de Van der Pol.

( )x x x x+ − + =2 1 0

Esta equação pode ser escrita como um sistema de equações diferenciais de primeira ordem.

( )x x x xx x

1 1 22

2

2 1

1= − −=

Como neste caso, muitas vezes é mais interessante transcrever o sistema de equações como uma S-function ao invés de criar o diagrama de blocos associado.

X1'f(u)

(1-x2*x2) Scope

1/s1/s

X1

X2

-

+*

1

A M-file que realiza a S-function com as equações de Van der Pol resulta:

Page 84: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 83

FEI - FCA

function [sys, x0] = vdpm(t,x,u,flag) % equacao de Vanderpol como uma M-file. if abs(flag) == 1, % Retorna as derivadas sys(1) = x(1) .* (1 - x(2).^2) - x(2); sys(2) = x(1); elseif flag == 0, % Retorna as condicoes iniciais sys = [2;0;0;0;0;0]; x0 = [0.25; 0.25]; else sys = []; end

Esta função pode ser chamada com diversos valores de flag para retornar a informação necessária. Os algoritmos de integração tal como o rk45, lidam convenientemente com o flag durante a simulação. Note portanto, que seria muito fácil você desenvolver seu próprio algoritmo de integração.

» [t,x] = rk45('vdpm',10); » plot(t,x)

0 2 4 6 8 10-3

-2

-1

0

1

2

3

Tempo (seg)

Van der Pol

Você pode preferir construir o diagrama em blocos que realiza as equações. Contudo, quando você salvar o diagrama um arquivo será criado com o mesmo nome da diagrama e com um conteúdo muito parecido com o do vdpm. A grande diferença é que o SIMULINK também salva todos os desenhos para reconstruir o diagrama.

Convertendo uma S-function em Bloco

Page 85: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 84

FEI - FCA

Um recurso bastante poderoso é converter a S-function criada num bloco. Ou seja, você optou por escrever diretamente a S-function que realiza as equações, mas está interessado que sejam usadas dentro do ambiente do SIMULINK.

Para converter a S-function vdpm.m num bloco, simplesmente coloque seu nome dentro de um bloco do tipo S-function, que é encontrado na biblioteca Nonlinear.

Os campo Function parameters, permite que parâmetros adicionais sejam passados a cada iteração.

1.3.6 Mascarando Blocos

A função Masking permite que você altere a característica de um bloco. É possível marcar qualquer bloco, incluindo subsistemas e blocos S-function.

O exemplo a seguir mostra como converter um bloco Zero-Pole em um bloco de filtro Butterworth que mostra sua resposta impulsiva no próprio ícone. Inicie com um bloco Zero-Pole:

Page 86: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 85

FEI - FCA

(s-1)s(s+1)

Zero-Pole

As variáveis z, p e k são respectivamente os zeros, pólos e o ganho. Selecione o bloco com um clique único do mouse e altere o nome o bloco marcando o nome dele e digitando filtro PB. Selecione então Mask no menu Options. O caixa de diálogo a seguir é então mostrada:

Os campos da caixa de diálogo são descritos a seguir:

Block Type

filtro LP

Este nome define o tipo do bloco mascarado.

Dialog Strings

Page 87: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 86

FEI - FCA

Butterworth passa baixas | Freqüência de corte (rad/s) | Ordem

Esta string define a nova caixa de diálogo que aparecerá quando o bloco for clicado duas vezes. Separe os dados com o símbolo "|". O primeiro dos dados é o título da caixa de diálogo. Os demais são os nomes dos campos que apareceram na nova caixa de diálogo. O número máximo de campos é seis.

Ao invés de abrir a caixa de diálogo quando você clica sobre o novo bloco, você pode fazer com que um comando do MATLAB seja executado. Isso é possível usando a função eval. Por exemplo, entrando com

eval('plot(1:10')

no campo Dialog Strings, uma linha é plotada na janela gráfica do MATLAB toda vez que o bloco é clicado duas vezes.

Initialization Commands

[z,p,k] = buttap(@2); z = @1*z; p = @1*p; [a,b,c,d] = zp2ss(z,p,k); t = [0:0.2:3*@2]/@1; [y,x] = impulse(a,b,c,d,1,t);

Os comandos de inicialização definem as funções que serão executadas pelo bloco durante a simulação. Os valores das expressões MATLAB colocadas como parâmetros na caixa de diálogo do novo bloco, podem ser acessados com @1, @2, etc. Neste exemplo, o valor da freqüência de corte é obtida com @1 e o parâmetro associado à ordem do filtro é obtido com @2.

Qualquer expressão MATLAB pode ser usada. As variáveis são locais e elas não se sobrepõem às do workspace do MATLAB.

Drawing Commands

plot(t,y,[0;max(t),[0;0])

Os três comandos a seguir são reconhecidos no processo de mascaramento:

• dpoly(num,den) desenha o numerador e denominador da função

de transferência.

Page 88: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 87

FEI - FCA

• droots(z,p,k) desenha a função de transferência no formato Zero-Pólo-Ganho.

• plot(x,y,x1,y1) plota o gráfico no bloco.

O comando plot é similar ao plot do MATLAB, exceto que a opção tipo de linhas não é disponível. Qualquer outra informação colocada neste campo aparece desenhada no interior do bloco.

Help String

Este bloco realiza um filtro Butterworth passa baixas

Esta mensagem é mostrada quando você clica no botão Help na caixa de diálogo criada.

1.3.7 Adicionando um novo bloco

Nesta seção mostra um exemplo completo da criação de um novo bloco usando uma S-function e mascarando-a.

Imagine que você deseja criar um integrador com limite superior e inferior. Este modelo pode ser descrito facilmente por uma equação diferencial de primeira ordem. Por exemplo, se (x ≤ lb e u < 0) ou (x ≥ ub e u > 0), então

dxdt = 0

Caso contrário,

dxdt u x udt= ⇒ = ∫

onde x é o estado, u é a entrada do integrador e lb e ub são respectivamente o limite inferior e superior.

Existem três etapas na definição de um novo bloco do tipo S-function:

1. Crie uma S-function através de um diagrama no SIMULINK ou

escrevendo diretamente o arquivo da função.

Page 89: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 88

FEI - FCA

2. Converta a S-function num bloco S-function. 3. Mascare o bloco S-function criando seu ícone personalizado,

sua caixa de diálogo e os comandos de inicialização.

Passo 1: Crie a S-function

Uma das várias formas de entrar com a equação diferencial e as condições que descrevem o integrador com limitação é usando o bloco de propósito geral chamado Fcn:

f(u)

Fcn

1s

Integrador

Mux

Mux

1

Inport

1Outport

O bloco Fcn contem a expressão relacional a seguir:

u[2]*((((u[1]>lb)+(u[2]>=0))>0)*(((u[1]<ub)+(u[2]<=0))>0))

Onde u[1] e u[2] denotam a saída do integrador e a entrada do sistema. As expressões relacionais (>, >=, <, <=) e as multiplicações imitam uma declaração do tipo if.

A partir do instante que você entrar com o diagrama e der um nome a ele, a S-function passa a estar disponível no MATLAB e com o mesmo nome que o diagrama.

Alternativamente você pode criar a S-function diretamente como uma M-file,

Page 90: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 89

FEI - FCA

function [sys,x0]=limintm(t,x,u,flag, lb, ub, xi) % integrator com limite superior e inferior. if abs(flag) == 1 if (x <= lb & u < 0) | (x>= ub & u>0 ) sys = 0; else sys = u; end elseif flag == 3 sys = x; elseif flag == 0 sys=[1,0,1,1,0,0]'; x0=xi; else sys = []; end

onde flag indica as várias informações que a função pode retornar.

Uma vez que a S-function foi definida, você pode simula-la diretamente como ilustrado abaixo para uma entrada senoidal, ou então converte-la num bloco.

» x0 = []; % condicoes iniciais default » opcoes = []; % opcoes default » lb = -0.6; % limite inferior » ub = 0.4; % limite superior » rk45('limintm',10,x0,opcoes,'sin',lb,ub,xi)

Page 91: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 90

FEI - FCA

0 2 4 6 8 10-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

Time

Output trajectory

Note que ao invés de 'sin', qualquer outra função, mesmo as que você criou, poderiam ter sido usadas como argumento.

Passo 2: Converta a S-function em Bloco

O bloco S-function pede o nome da função e quais variáveis devem ser passadas durante a simulação. No exemplo do integrador com limites, o nome da função é o nome da M-file. As variáveis são os três parâmetros, lb, ub e xi que definem os limites e a condição inicial do integrador.

Passo 3: Mascare a S-function

Para mascar um bloco é necessário definir:

New block type

integrador com limite

Dialog strings

integrador com limite|limite inferior|limite superior| condição inicial

Initialization commands

Page 92: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 91

FEI - FCA

lb = @1; ub = @2; xi = @3;

Drawing commands

plot(-1,-0.1,-1,1.1,[0,1,2,3],[0,0,1,1]);1/s

Help string

Integrador com limite de integracao

Desta forma obtemos um novo ícone com a forma a seguir:

1/s

Int. com Limite

Clique duas vezes sobre ele para abrir a caixa de diálogo:

Page 93: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

Tutorial do Matlab & Simulink 92

FEI - FCA

Os valores dos campos podem ser qualquer variável do MATLAB ou expressão.

Page 94: MATLAB - eletrica.wdfiles.comeletrica.wdfiles.com/local--files/ne8910/NE8910ApostilaMatlab.pdf · 2 1. Tutorial do Matlab & Simulink 1.1 Matlab Básico MATLAB é um ambiente de computação

93

2. Bibliografia

[1] MATLAB - User’s Guide - The Mathworks Inc

[2] SIMULINK - User’s Guide - The Mathworks Inc

[3] CONTROL SYSTEM TOOLBOX - User’s Guide - The Mathworks Inc

[4] SIGNAL PROCESSING TOOLBOX - User’s Guide - The Mathworks Inc

[5] OPTIMIZATION TOOLBOX - User’s Guide - The Mathworks Inc

[6] SYSTEM IDENTIFICATION TOOLBOX- User’s Guide - The Mathworks Inc

[7] ROBUST CONTROL TOOLBOX - User’s Guide - The Mathworks Inc

[8] µ ANALYSIS & SYNTHESIS TOOLBOX - User’s Guide - The Mathworks Inc

[9] STATISTICS TOOLBOX - User’s Guide - The Mathworks Inc

[10] IMAGE PROCESSING TOOLBOX - User’s Guide - The Mathworks Inc

[11] CODE GENERATOR - User’s Guide - The Mathworks Inc

[12] NONLINEAR CONTROL DESIGN TOOLBOX - User’s Guide - The Mathworks Inc

[13] KUO, B. C. & HANSELMAN, D. C. - Matlab Tools for Control System Analysis and Design - Prentice Hall, 1994.

[14] OGATA, K. - Solving Control Engineering Problems with Matlab - Prentice Hall, 1994.

[15] OGATA, K. - Designing Linear Control Systems with Matlab - Prentice Hall, 1994.