Buscar

MATLAB FEI 1994

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 94 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 94 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 94 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

São Bernardo do Campo - Dezembro de 1994 
Departamento de Eletricidade 
 
 
 
 
 
 
 
 
 
Faculdade de Engenharia Industrial
 
Fundação de Ciências Aplicadas 
Matlab &
Simulink
 
 
 
Í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 
 
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. 
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 
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 
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 
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 
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 
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] 
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 
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. 
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 
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 
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 utilizadasem 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 
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 
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 
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 
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. 
 
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 
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 d n= + + +−1 2 1 " 
 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. 
 
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 
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. 
 
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 
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 y
H(z)
 
 A estrutura do filtro é dada a seguir pela sua função de transferência de 
tempo discreta 
H z Y z
X z
b b z b nb z
a z a na z
nb
na( )
( )
( )
( ) ( ) ( )
( ) ( )
( )
( )= = + + ++ + +
− − −
− − −
1 2
1 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 
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 x
x x
( )
( , ) , ( , ) ,
= − + + − + −
1
0 3 0 01
1
0 9 0 04
62 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: 
 
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 é, 
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 x
x x
1 1 2
2
2
2 1
1= − −
= 
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çõesdiferenciais. 
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 
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+)') 
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. 
 
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, 
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
 
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. 
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 10
2
3
4
5
6
0 2 4 6 8 10
0
2
4
6
8
 
 
Funções Gráficas Especializadas em 2-D 
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, 
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, 
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ígono3-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. 
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 
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. 
 
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 
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. 
 
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. 
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); 
Esteexemplo 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, 
 
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 
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 y
y y y y
1 1 2 1
2 2 2 1
= −
= − +
α
β
 
Crie o arquivo lotka.m: 
 
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 
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 
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: 
 
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 eentã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, 
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. 
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 
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 
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 
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 depó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 
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. 
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. 
 
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. 
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). 
 
 
 
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. 
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. 
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 
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ópiopara ver o efeito. A simulação termina quando o tempo máximo de 
simulação é atingido ou quando selecionamos Stop no menu Simulation. 
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 
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. 
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 
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
 
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
yout
To 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 
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
matriz1
To 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 
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
 
 
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 
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

Outros materiais