Matlab
Índice
1.1
Introdução ............................................................................................. 2
1.2
Operações Matriciais ............................................................................ 8
1.3
Operações de Vetores ou Array .......................................................... 10
1.4
Manipulação Matricial e Vetorial ....................................................... 13
1.5
Funções Matriciais .............................................................................. 20
1.6
Polinômios e Processamento de Sinais ............................................... 21
1.7
Funções de Funções ............................................................................ 23
1.8
Gráficos ............................................................................................... 28
1.9
Controles de Fluxo .............................................................................. 36
1.10
Arquivos M ......................................................................................... 39
1.11
Manipulação de Arquivos ................................................................... 46
1.12
Depuração ........................................................................................... 48
1.13
Toolbox de Matemática Simbólica ..................................................... 48
1.14
Toolbox de Sistema de Controle ......................................................... 59
1.1 Introdução
Parte do material deste texto é uma adaptação livre dos próprios manuais
disponíveis do MATLAB.
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.
O nome MATLAB é acrônimo de laboratório de matrizes. Ele foi
originalmente escrito para permitir um acesso fácil aos programas de cálculo
matriciais desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos
representavam o estado da arte em programas de cálculo matricial.
MATLAB também contempla uma família de aplicativos específicos
chamados “toolboxes” na forma de coleções de funções MATLAB, estendendo
o ambiente MATLAB na solução de problemas particulares. Entre outros, temos
os seguintes toolboxes: Processamento de Sinais; Identificação de Sistemas;
Redes Neurais; Otimização etc.
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.
2
3
Introdução ao MATLAB
Exemplo:
» A = [ 1 2 3; 4 5 6; 7 8 9 ]
Resulta:
A=
1
4
7
2
5
8
3
6
9
Elementos de uma matriz podem ser quaisquer expressões MATLAB. Por
exemplo:
» x = [ -1.3
sqrt(3)
(1+2+3)*4/5 ]
-1.3000
1.7321
Resulta:
x=
4.8000
Elementos individuais podem ser referenciados pelo seu índice (linha,coluna).
Veja o exemplo a seguir:
» 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 à matriz A:
» r = [ 10 11 12 ];
» A = [ A; r ]
Isto resulta em:
4
Introdução ao MATLAB
A=
1
4
7
10
2
5
8
11
3
6
9
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
4
7
2
5
8
3
6
9
Variáveis e Declarações do MATLAB
Declarações no MATLAB são frequentemente 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. Se o último caracter é
um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça a
Introdução ao MATLAB
5
atribuição da mesma forma. 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 traço-baixo (underscore). O
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
O comando help produz informações resumidas sobre funções
específicas ou sobre tópicos do MATLAB. Para listar um grupo de funções,
digite help seguido do nome do grupo de funções. Exemplo:
» help matfun
Para obter auxílio sobre uma função específica digite help e o nome da
função. Exemplo:
» help inv
6
Introdução ao MATLAB
Para localizar palavras-chaves em todos os arquivos do MATLAB, use o
comando lookfor. Exemplo:
» lookfor inverse
ifft
ifft2
ifftn
ifftshift
acos
- Inverse discrete Fourier transform.
- Two-dimensional inverse discrete Fourier transform.
- N-dimensional inverse discrete Fourier transform.
- Inverse FFT shift.
- Inverse cosine, result in radians.
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
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, de cima para baixo
^
\
/
*
+
potenciação
divisão à esquerda
divisão à direita
multiplicação
subtração
adição
7
Introdução ao MATLAB
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
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 é denominado toolbox. 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) )
8
Introdução ao MATLAB
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.
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 ]
A=
1
2
3
4
» B = A'
B=
1
2
3
4
9
Introdução ao MATLAB
Adicionando e Subtraindo Matrizes
Os símbolos + e - denotam adição e subtração de matrizes. Portanto, a
operação é definida se as matrizes têm a mesma dimensão. Exemplo:
» C=A+B
C=
2
5
5
8
A adição e subtração são definidas também para o caso que um dos
operandos é 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 forem iguais. 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
F=
10
22
22
50
10
Introdução ao MATLAB
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 considera 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
logm
sqrtm
exponencial de uma matriz
logaritmo de uma matriz
raiz quadrada de uma matriz
Outras funções elementares sobre matrizes incluem:



poly
det
trace
polinômio caraterístico
determinante
traço
1.3 Operações de Vetores ou Array
Refere-se às operações com vetores ou 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-aelemento usa-se um ponto (.) antes do símbolo da operação.
11
Introdução ao MATLAB
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 se comparar matrizes de dimensões idênticas, existem operadores
relacionais:
12
Introdução ao MATLAB
<
<=
>
>=
==
~=
menor
menor ou igual
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 da 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));
13
Introdução ao MATLAB
Operadores Lógicos
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 comando 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. Exemplo:
» A = [ -1 2 -3; 4 -5 6];
» B = abs(A)
B=
1
2
4
5
3
6
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:
14
Introdução ao MATLAB
» x = 1:5
x=
1
2
3
4
5
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
15
Introdução ao MATLAB
Indexando
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 índice é 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
7
5
8
O exemplo a seguir mostra como fazer referência explícita a algumas
linhas ou colunas. Colocam-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:
Introdução ao MATLAB
16
» A = [1 2; 3 4; 5 6];
» B = A(:)
B=
1
2
3
4
5
6
Usando Vetores de 0 e 1 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
Introdução ao MATLAB
17
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
Existe uma coleção de funções que geram matrizes que são normalmente
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 a partir de Matrizes
É 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.
18
Introdução ao MATLAB
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.6 (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
43
38
61
12
57
178
163
420
59
291
1011
1095
2407
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
19
Introdução ao MATLAB










std
sort
sum
prod
cumsum
cumprod
diff
corrcoef
cov
var
- desvio padrão
- ordenação
- soma dos elementos
- produto dos elementos
- soma cumulativa dos elementos
- Produto cumulativos dos elementos
- Aproximação numérica da derivada
- Coeficientes de correlação
- Matriz de covariância
- Variâ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.
20
Introdução ao MATLAB
px   c1x d  c2x d 1    cn
A sintaxe usada é a seguinte, onde x é a abscissa, p o valor da função para
cada x(i) e n o grau do polinômio.
» c = polifit(x,p,n)
1.5 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
norm
rank
rcond
- número de condicionamento usando norma-2
- norma-1, norma-2, norma-F e norma-
- posto da matriz
- estimativa do condicionamento
21
Introdução ao MATLAB
1.6 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
A=
1
4
7
2
5
8
3
6
0
é
» p = poly(A)
p=
1 -6 -72 -27
Esta é a representação MATLAB do polinômio s3  6s2  72s  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
reconstruir o polinômio original com a função poly
» p2 = poly(r)
p2 =
1 -6 -72 -27
22
Introdução ao MATLAB
Considere os polinômios a(s)  s2  2s  3 e b(s)  4s2  5s  6 . 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.
» [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
roots
polyval
polyvalm
conv
deconv
residue
polyder
polyfit
- polinômio característico
- raízes de um polinômio
- cálculo do valor numérico do polinômio
- cálculo do polinômio de matrizes
- multiplicação (convolução)
- divisão (deconvolução)
- expansão em frações parciais
- derivada do polinômio
- ajuste polinomial de curva
Processamento de Sinais
Vetores são usados, por exemplo, 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.
23
Introdução ao MATLAB











abs
angle
conv
deconv
fft
ifft
fftshift
fft2
ifft2
fftshift
conv2
- magnitude complexa
- ângulo de fase
- convolução
- deconvolução
- transformada rápida de Fourier
- transformada rápida inversa de Fourier
- alterna quadrantes de matrizes
- FFT de duas dimensões
- FFT inversa de duas dimensões
- rearranja os resultados da FFT
- convolução de duas dimensões
Filtragem de Dados
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
H(z)
y
A estrutura do filtro é dada a seguir pela sua função de transferência de
tempo discreta
H ( z) 
Y ( z ) b(1)  b(2) z 1    b(nb) z  ( nb1)

X ( z)
1  a(2) z 1    a(na) z  ( na1)
1.7 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 (funfun) e incluem:
24
Introdução ao MATLAB




Integração Numérica
Equações não lineares e Otimização
Solução de Equações Diferenciais
etc
Para o uso das funções de funções, é usual representar as funfun através
de arquivos-M (M-files). Por exemplo, a função
f (x ) 
1
1

6
2
(x  0,3)  0,01 (x  0,9)2  0,04
foi codificada num 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;
end
O gráfico dessa função é obtido como segue
» x = -1:.01:2;
» plot(x,humps(x))
100
80
60
40
20
0
-20
-1
-0.5
0
0.5
1
1.5
2
25
Introdução ao MATLAB
Integração Numérica
Uma função, tal como humps, pode ser integrada numericamente pelo
processo chamado de quadratura que é uma funfun denomindada quad.
Exemplo:
» q = quad('humps',0,1)
q=
29.8583
A maioria das funções de funções permite que se use o @ em vez de
colocar o nome da função entre aspas simples.
» q = quad(@humps,0,1)
q=
29.8583
Note que o primeiro argumento da função quad é 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. Exemplos:


fminsearch
fzero
- mínimo de uma função multivariável
- 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 fminsearch:
26
Introdução ao MATLAB
» xm = fminsearch('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 é,
» xz1 = fzero('humps',0)
xz1 =
-0.1316
» xz2 = fzero('humps',1)
xz2 =
1.2995
No Optimization Toolbox há inúmeras outras funções como, por exemplo,








fgoalattain
fmincon
fminsearch
fsolve
fzero
fminimax
linprog
quadprog
- otimização de metas
- minimização com restrições
- minimização sem restrições
- solução de equações algébricas não lineares
- busca de zeros
- solução do problema minimax
- programação linear
- programação quadrática
Equações Diferenciais
Duas das funções disponíveis para a solução de equações diferenciais
ordinárias são:


ode23
ode45
- método Runge-Kutta de ordem baixa
- método Runge-Kutta de ordem média
27
Introdução ao MATLAB
Considere a equação diferencial de segunda ordem conhecida como
equação de Van der Pol.
x  (x 2  1)x  x  0
Esta equação pode ser escrita como um sistema de equações diferenciais de
primeira ordem
x1  x1 (1  x22 )  x2
x 2  x1
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,1) = x(1).*(1-(x(2).^2))-x(2);
xponto(2,1) = x(1);
end
Para simular a equação diferencial no intervalo 0  t  20, use a função ode23.
»
»
»
»
t0 = 0; tf = 20;
x0 = [0 0.25]';
[t,x] = ode23( 'vdpol', [t0 tf], x0 );
plot(t,x)
% condições iniciais
3
2
1
0
-1
-2
-3
0
5
10
15
20
28
Introdução ao MATLAB
Para a solução numérica de equações diferenciais recomenda-se também o
SIMULINK que é uma extensão gráfica do MATLAB para a simulação de
equações diferenciais.
1.8 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
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
loglog
semilogx
semilogy
title
xlabel
ylabel
text
gtext
grid
Criando um Gráfico
- gráfico de vetores ou de colunas de matrizes
- escala logarítmica nos dois eixos
- escala logarítmica no eixo x e linear em y
- escala logarítmica no eixo y e linear em x
- adiciona um título ao gráfico
- adiciona um nome ao eixo x
- adiciona um nome ao eixo y
- mostra um texto na posição especificada
- coloca o texto no gráfico usando o mouse
- coloca linhas de grid
29
Introdução ao MATLAB
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+)')
Defasagem
1
0.8
0.6
0.4
0.2
y=sin(t+)
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
0.5
1
x=sin(t)
Estilos de Linhas, Marcadores e Cores
Tal como se mostrou no exemplo anterior, você pode passar um caractere
como um argumento à função plot para especificar um dos vários estilos de
30
Introdução ao MATLAB
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.
Símbolo
y
m
c
r
g
b
w
k
Cor
amarela
magenta
ciano
vermelha
verde
azul
branca
preta
Símbolo
.
o
x
+
*
:
-.
-s
d
v
^
<
>
P
h
Linha
ponto
círculo
marca x
marca +
marca *
sólida
pontilhada
traço-ponto
tracejada
quadrado
diamante
triângulo (p/ baixo)
triângulo (p/ cima)
triângulo (p/esquerda)
triângulo (p/diereita)
pentragrama
hexagrama
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:
31
Introdução ao MATLAB
»
»
»
»
»
plot(x)
hold on
plot(y1,'--')
plot(y2,'-.')
hold off
Resulta,
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
50
100
150
200
250
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’)
32
Introdução ao MATLAB
Distribuição de Autovalores
4
3
2
1
0
-1
-2
-3
-4
-4
-2
0
2
4
6
Exibindo Gráficos de 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) exibe o gráfico das colunas de X versus 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,
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
-3
0
20
40
60
80
100
120
33
Introdução ao MATLAB
Importando Dados
Você pode importar e exibir o gráfico de dados gerados fora do
MATLAB. Suponha você tenha um arquivo chamado dados.dat contento
valores de duas funções e da variável independente:
2.3
3.1
4.5
5.6
4.8
4.7
4.4
4.0
4.2
1.0
1.9
2.2
2.6
3.5
4.7
5.3
6.0
7.1
1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
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 exibir o
gráfico de 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,
6
5
4
3
2
0
2
4
6
8
10
0
2
4
6
8
10
8
6
4
2
0
34
Introdução ao MATLAB
Funções Gráficas Especializadas em 2-D
O MATLAB inclui uma variedade de funções especializadas, conforme
descrito resumidamente a seguir.











bar
compass
errorbar
feather
fplot
hist
polar
quiver
rose
stairs
fill
- gráfico de barras
- gráfico de ângulos com setas
- gráfico de barras de erros
- gráfico de ângulos
- calcula e exibe o gráfico de uma função
- cria um histograma
- gráfico em coordenadas polares
- cria um gráfico de um gradiente
- histograma em ângulo
- gráfico similar ao de barras sem linhas internas
- desenha um polígono e preenche o interior
Gráfico de Funções Matemáticas
Você pode exibir 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,
35
Introdução ao MATLAB
y = c o s ( t a n ( p i* x ) )
1
0 .8
0 .6
0 .4
0 .2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
0
0 .2
0 .4
0 .6
0 .8
1
No exemplo, a função é exibida 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 exibida por meio de um gráfico, por exemplo
com o nome fofx.m
function y = fofx(x)
y = cos(tan(pi*x));
end
Agora basta passar o nome da função como argumento de fplot.
» fplot('fofx',[0 1], 25,20,10)
Resulta,
36
Introdução ao MATLAB
y = cos(tan(pi*x))
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0
0.2
0.4
0.6
0.8
1
Gráficos 3-D
O MATLAB oferece uma variedade de funções para a visualização de
dados em 3-D. Contudo, não faremos um detalhamento, visto que o assunto é
longo e pouco interessante para os nossos objetivos.
1.9 Controles de Fluxo
O MATLAB possui declarações para controle de fluxo tal como aqueles
encontrados na maioria das linguagens 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
Introdução ao MATLAB
37
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
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 os produtos dos elementos do argumento. Logo, prod(1:n)
é o fatorial de n.
Introdução ao MATLAB
38
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 = -1;
elseif rem(n,2) == 0
A=0
else
A=1
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.
% Problema clássico "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
Introdução ao MATLAB
39
1.10 Arquivos M
A maneira mais simples de se usar o MATLAB é 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 sequência de
comandos que está armazenada num arquivo. 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 sequência de declarações MATLAB normais,
podendo incluir referencias a 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 Bloco de Notas do Windows, ou outro qualquer. Dois tipos
usuais de M-files são: lotes (scripts) e funções (functions). Arquivos scripts
automatizam uma sequência de comandos. Arquivos de função permitem 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 (sem a extensão) 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 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.
Introdução ao MATLAB
40
% M-file (script) para calcular números de Fibonacci menores de 1000
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)
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 a seguir tem
o nome media1.m.
function y = media1(x)
% calculo da média
% soma / m
% inicio do programa
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x) / m;
end
Por exemplo, se z é um vetor de inteiros de 1 a 99, sua média pode ser calculada
como segue:
» z = 1:99;
» media1(z)
ans =
50
Introdução ao MATLAB
41
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 media1;
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 media1, 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 media1 com uma 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.
Você pode criar uma função um pouco mais complexa que media1,
chamada stat, que também calcula o desvio padrão. Neste exemplo 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);
end
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.
Introdução ao MATLAB
42
function r = rank(x,tol)
% rank (posto em Português) da matriz
s = svd(x);
if (nargin == 1)
tol = max(size(x)) * s(1) * eps;
end
r = sum(s > tol);
end
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,
function p = angle(h)
%
%
%
%
%
%
%
%
ANGLE Phase angle.
ANGLE(H) returns the phase angles, in radians, of a matrix with
complex elements.
Class support for input X:
float: double, single
See also ABS, UNWRAP.
% Copyright 1984-2010 The MathWorks, Inc.
% $Revision: 5.7.4.2 $ $Date: 2010/04/21 21:31:19 $
p = atan2(imag(h), real(h));
têm 8 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.
Introdução ao MATLAB
43
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
subsequentes 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.
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.
2.
3.
4.
Procura por whoopie como variável;
Verifica se whoopie é uma função interna;
Procura um o arquivo whoopie.m no diretório atual;
Procura um o arquivo whoopie.m nos diretórios especificados
pelo path do MATLAB.
INPUT e PAUSE
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.
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.
44
Introdução ao MATLAB
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.
d
 y1   y1   y2 y1
dt
d
 y2    y2   y2 y1
dt
Crie o arquivo lotka.m:
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)];
end
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 alterá-las interativamente e
novas soluções podem ser obtidas sem ter que editar nenhum arquivo e sem
passar os valores como argumentos.
Introdução ao MATLAB
45
Variáveis Alfanuméricas
Variáveis do 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 do tipo texto via
sprintf, num2str e int2str. Exemplo,
» c = 23;
» title(['A temperatura é ',num2str(c),' graus C'])
A Função EVAL
A função eval é usada com variáveis do tipo texto para implementar
recursos de macros de texto. A função 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 sequencialmente 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
Introdução ao MATLAB
46
função fplot que passa como argumento o nome da função a ser exibida,
exemplo:
» fplot( 'sin', [0 10] )
1.11 Manipulação de Arquivos
Os comandos load e save recuperam e armazenam dados do workspace
em 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 considera a extensão “.m”
como default. Portanto, esse comando é normalmente usado para obtermos uma
rápida 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.
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:
47
Introdução ao MATLAB

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 os dados de um arquivo ASCII.

Escreva um programa em C para converter seus dados no
formato dos MAT-files e então use o comando load.

Importe os dados do Excel.
Exportando dados do MATLAB
Para exportar dados também existem várias opções, das quais algumas
são listadas a seguir:

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.

Exporte os dados para o Excel.
Introdução ao MATLAB
48
1.12 Depuração
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,
fazendo com que os resultados intermediários sejam acessíveis
no workspace base do MATLAB;
Use o depurador do MATLAB.
1.13 Toolbox de Matemática Simbólica
Com o Toolbox de processamento simbólico é possível resolver e
manipular expressões matemáticas simbólicas resolvendo analiticamente, por
exemplo, diferenciações, integrações, simplificações, transformadas, solução de
equações etc.
Variáveis Simbólicas
Para declarar, por exemplo, as variáveis x e y como objetos simbólicos
use o comando syms:
Introdução ao MATLAB
49
» syms x y
Depois de criados os objetos simbólicos, se podem realizar cálculos
matemáticos tais como:
» z=x+x+y
z=
2*x + y
Matriz de variáveis simbólicas
Depois de declarar as variáveis simbólicas elas podem fazer parte da
definição de uma matriz. Exemplo:
» syms a b c d e f g h i
» A = [ a b c ;d e f; g h i ]
A=
[ a, b, c ]
[ d, e, f ]
[ g, h, i ]
Note que não é necessário declarar explicitamente a matriz A como um
objeto simbólico. Agora podemos operar simbolicamente com a matriz A. Veja
alguns exemplos:
» determinante = det(A)
determinante =
a*e*i - a*f*h - b*d*i + b*f*g + c*d*h - c*e*g
» B=A+A
B=
[ 2*a, 2*b, 2*c ]
[ 2*d, 2*e, 2*f ]
[ 2*g, 2*h, 2*i ]
50
Introdução ao MATLAB
Simplificações
Existem algumas funções que alteram a forma de uma função simbólica.
Os exemplos a seguir ilustram alguns desses comandos: pretty, collect,
expand, horner, factor, simplify.
» syms x
» f = x^3 - 6*x^2 + 11*x - 6;
» pretty (f)
% visualização elegante
3
2
x - 6 x + 11 x – 6
» syms x
» f = (x-1)*(x-2)*(x-3);
» collect (f)
% agrega potências iguais
x^3 - 6*x^2 + 11*x – 6
» syms a x y
» f = a*(x + y);
» expand (f)
% distributiva
a*x + a*y
» syms x
» f = x^3 - 6*x^2 + 11*x - 6;
» horner (f)
% forma aninhada
x*(x*(x - 6) + 11) - 6
» syms x
» f = x^3 - 6*x^2 + 11*x - 6;
» factor (f)
% fator de menor ordem
(x - 3)*(x - 1)*(x - 2)
* syms x y
* f = exp(x) * exp(y);
* simplify (f)
exp(x + y)
% simplificação
51
Introdução ao MATLAB
Substituições
Use o comando subs para realizar substituições diversas. Exemplos:
» syms x
» f = 2*x^2 - 3*x + 1;
» subs( f, {x}, {1/3} )
ans =
% x  1/3
2/9
» syms x y
» f = x + y;
» subs( f, {x, y}, {2,-3} )
ans =
% x  2, y  -3
-1
» syms x y m
» f = x + y;
» subs( f, {x, y}, {2, m} )
ans =
% x  2, y  m
m+2
Diferenciação Simbólica
Use o comando diff para realizar diferenciações. Veja alguns exemplos:
» syms x
» f = sin(x)^2;
» diff(f)
ans =
2*cos(x)*sin(x)
52
Introdução ao MATLAB
» syms x y
» f = sin(x)^2 + cos(y)^2;
» diff(f, y)
ans =
% derivada parcial de f em relação a y
-2*cos(y)*sin(y)
Integração Simbólica
Use o comando int para realizar integrações simbólicas. Veja alguns
exemplos:
» syms x y
» f = x^2 + y^2;
» int(f, y)
ans =
% integral indefinida de f em relação a y
x^2*y + y^3/3
» syms x y
» f = x^2 + y^2;
» int(f, y, 3, 5)
ans =
% integral definida desde 3 até 5
2*x^2 + 98/3
Solução de Equações Algébricas
Use o comando solve para determinar a solução de equações ou sistemas
de equações. Veja alguns exemplos a seguir e note que ao definir a equação
utiliza-se o sinal (==). Caso o sinal (==) seja omitido, o lado direito da equação é
suposto nulo. Veja os dois casos a seguir
» syms x
» f = ( x^2 + 5*x == -6 );
» solve( f )
ans =
-3
-2
53
Introdução ao MATLAB
» syms x
» f = ( x^2 + 5*x - 6 );
» solve( f )
ans =
-3
-2
Nas equações com múltiplas variáveis simbólicas, pode-se especificar
para qual variável a equação deve ser resolvida. No exemplo a seguir a função
depende de x e y e sua solução é determinada em relação a y.
» syms x y
» solve ( 6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y )
ans =
1
2*x
-3*x
No exemplo a seguir mostra-se uma forma possível de representar e
resolver um sistema de duas equações e duas incógnitas.
»
»
»
»
syms x1 x2
f1 = ( x1*x2 + x2 == 3 );
f2 = ( x1 - x2 == 1 );
[ xx1, xx2 ] = solve( f1, f2, x1, x2 )
xx1 =
2
-2
xx2 =
1
-3
A verificação da exatidão da solução pode ser feita com o comando subs,
atribuindo os valores numéricos das soluções encontradas nas funções.
» subs( f1, {x1,x2}, { xx1(1), xx2(1) } )
» subs( f2, {x1,x2}, { xx1(2), xx2(2) } )
ans =
ans =
3 == 3
1== 1
54
Introdução ao MATLAB
Gráficos de Funções Simbólicas
O comando ezplot é uma das formas mais imediatas para se exibir o
gráfico de uma função explícita ou mesmo implícita. Veja os exemplos a seguir:
» syms x
» ezplot(x^3 - 6*x^2 + 11*x - 6)
» title('Função Explícita: y = x^3 - 6*x^2 + 11*x - 6')
Função Explícita: y = x 3 - 6*x 2 + 11*x - 6
100
0
-100
-200
-300
-400
-500
-6
-4
-2
0
2
4
6
x
» syms x y
» ezplot( (x^2 + y^2)^4 == (x^2 - y^2)^2, [-1 1] )
» title( 'Função Implícita no intervalo [-1,1] ' )
Função Implícita no intervalo [-1,1]
1
0.8
0.6
0.4
y
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.8
-0.6
-0.4
-0.2
0
x
0.2
0.4
0.6
0.8
1
55
Introdução ao MATLAB
Solução de Equações Diferenciais
Para ilustrar como usar o comando dsolve, considere a equação
diferencial ordinária de 1ª ordem com condição inicial y(0)  1 .
d

 y (t )    y (t )
dt 

» syms x(t)
» f(t) = (diff(x) == -x);
» [xx] = dsolve(f(t), x(0) == -1)
xx =
-exp(-t)
Considere agora a equação diferencial ordinária de 2ª ordem com
condições iniciais y(0)  1 e y(0)  0 .
d2 
y (t )   cos  2t   y (t )
2 
dt 

»
»
»
»
»
syms y(t)
Dy = diff(y);
y(t) = dsolve( diff(y, 2) == cos(2*t) - y, y(0) == 1, Dy(0) == 0 );
y(t) = simplify(y);
pretty( y(t) )
1 -
/ t \4
8 sin | --- |
\ 2/
---------------3
56
Introdução ao MATLAB
Muitas vezes as equações diferenciais estão na forma de um sistema de
equações. Para ilustrar um caso desses considere o sistema a seguir com x1 (0)  1
e x2 (0)  0 .
d

 x1 (t )   x2 (t )
dt 

d

 x2 (t )   6 x1 (t )  5 x2 (t )
dt 

»
»
»
»
syms x1(t) x2(t)
f1(t) = ( diff(x1) == x2 );
f2(t) = ( diff(x2) == -6*x1 -5*x2 );
[xx1, xx2] = dsolve( f1(t), f2(t), x1(0) == 1, x2(0) == 0 )
xx1 =
(exp(-3*t)*(18*exp(t) - 12))/6
xx2 =
-exp(-3*t)*(6*exp(t) - 6)
57
Introdução ao MATLAB
Transformada de Laplace
Os comandos laplace e ilaplace determinam a transformada e antitransformada de Laplace, respectivamente. Veja os exemplos:
Função dada
Comandos MATLAB
syms s t
F = laplace( 2*exp(-5*t) - 5*exp(-2*t) )
F = collect(F)
F=
(- 3*s - 21)/(s^2 + 7*s + 10)
syms s t
F = laplace( exp(-t)*cos(3*t) )
F=
(s + 1)/((s + 1)^2 + 9)
syms s t
f = ilaplace ( s/(s^2 + 4*s + 5) )
f=
exp(-2*t)*(cos(t) - 2*sin(t))
syms s t
f = ilaplace( 5/((s+1)*(s+2)^2) )
f=
5*exp(-t) - 5*exp(-2*t) - 5*t*exp(-2*t)
58
Introdução ao MATLAB
Transformada Z
Os comandos ztrans e iztrans determinam a transformada Z e antitransformada Z, respectivamente. Veja os exemplos:
Função dada
f (k )  sen(k )
Comandos MATLAB
syms k z
f = sin(k);
F = ztrans(f, k, z)
(z*sin(1))/(z^2 - 2*cos(1)*z + 1)
F ( z) 
z
 z  0, 2  z  0,5 z  1
syms z k
F = z / ( (z+0.2)*(z+0.5)*(z-1) );
f = iztrans(F,k);
disp('f(k) = ')
pretty(f)
f(k) =
k
k
20 (-1/2)
25 (-1/5)
------------ - ------------ + 5/9
9
9
59
Introdução ao MATLAB
1.14 Toolbox de Sistema de Controle
No Toolbox de Sistema de Controle, os modelos de sistemas Lineares e
Invariantes no Tempo (LTI) são representados por Objetos. Os objetos de
modelos são estruturas de dados e atributos que permitem a manipulação de
sistemas LTI com entidades únicas. Os objetos de modelos podem representar
sistemas escalares, ou seja, de entrada e saída únicas (SISO) e sistemas vetoriais
de entradas e saída múltiplas (MIMO), tanto de tempo contínuo como de tempo
discreto.
Os sistemas LTI podem ser especificados no espaço de estados (objeto
SS), por meio e funções de transferência (objeto TF) e modelos dados pelos
seus zeros, polos e ganho (objeto ZPK).
Função de Transferência
Uma função de transferência SISO é caraterizada pelo seu numerador e
denominador. Por exemplo, a função de transferência
F ( s) 
s
s 2  2s  10
é representada por um objeto TF que contém os coeficientes do polinômio do
numerador e do denominador:
» numerador = [ 1 0 ];
» denominador = [ 1 2 10 ];
» F = tf ( numerador, denominador )
F=
s
-------------------s^2 + 2 s + 10
Continuous-time transfer function.
Matrizes de transferência (funções de transferência MIMO) são formadas
por elementos que são funções de transferência. Exemplo:
60
Introdução ao MATLAB
s


 s 2  2s  10   F1 ( s ) 

 

F (s)  




s  1   F2 ( s ) 


s  1 
» F1 = tf ( [ 1 0 ], [ 1 2 10 ] );
» F2 = tf ( [ 1 -1 ], [ 1 1 ] );
» F = [ F1 ; F2 ]
F=
From input to output...
s
#1: --------------------s^2 + 2 s + 10
#2:
s-1
------s+1
Continuous-time transfer function.
Uma maneira talvez mais visual de definir uma função de transferência é
definindo primeiro a função “s”. Por exemplo, veja como isso seria feito para o
caso da função de transferência
F ( s) 
s
s 2  2s  10
» S = tf ('s');
» F = S / (S^2 + 2*S + 10)
F=
s
-------------------s^2 + 2 s + 10
Continuous-time transfer function.
61
Introdução ao MATLAB
Zero-Polo-Ganho
Um modelo SISO pode ser caraterizado pelos seus zeros, polos e ganho.
Por exemplo, a função de transferência
F ( s)  5
 s  1 s  2 
 s  3 s  4 
é representada por um objeto ZPK por meio dos valores de seus zeros, polos e
ganho:
»
»
»
»
zeros = [ -1 -2 ];
polos = [ -3 -4 ];
ganho = [ 5 ];
F = zpk( zeros, polos, ganho )
F=
5 (s+1) (s+2)
--------------------(s+3) (s+4)
Continuous-time transfer function.
Espaço de Estados
Um modelo SISO ou MIMO pode ser caraterizado pelas Matrizes A, B, C
e D da representação no espaço de estados. Exemplo, seja
dx
 Ax  Bu
dt
y  Cx  Du
em que,
62
Introdução ao MATLAB
 0
A
 2
1
C
0
1
0 1 
B

1 0 
3


1
0 0
D

0 0
3


é representada por um objeto SS pelas matrizes A, B, C, D:
»
»
»
»
»
A = [ 0 1 ;-2 -3 ];
B = [ 0 1 ; 1 0 ];
C = [ 1 1 ; 0 3 ];
D = [ 0 0 ; 0 0 ];
sist = ss( A,B,C,D )
sist =
a=
x1 x2
x1 0 1
x2 -2 -3
b=
u1 u2
x1 0 1
x2 1 0
c=
x1 x2
y1 1 1
y2 0 3
d=
u1 u2
y1 0 0
y2 0 0
Continuous-time transfer function.
Tempo Discreto
Para criar modelos LTI de tempo discreto, simplesmente adicione um
parâmetro referente ao tempo de amostragem Ts (em segundos) aos objetos TF,
ZPK, e SS:
63
Introdução ao MATLAB
sist = tf ( num, den, Ts )
sist = zpk ( z, p, k, Ts )
sist = ss (A, B,C,D,Ts )
por exemplo, o comando a seguir cria um função de transferência de tempo
discreto com um período de amostragem de 0,1 segundos:
» G = tf( [1 -1], [1 -0.5], 0.1 )
G=
z-1
------z - 0.5
Sample time: 0.1 seconds
Discrete-time transfer function.
Uma maneira talvez mais visual de definir uma função de transferência de
tempo discreto é definindo primeiro a função “z” e o período de amostragem.
Por exemplo, veja como isso seria feito para o caso da seguinte função de
transferência para Ts = 0,1s.
G( z ) 
z 1
z  0,5
» Ts = 0.1;
» Z = tf ( 'z', Ts );
» G = (Z - 1) / (Z - 0.5)
G=
z-1
------z - 0.5
Sample time: 0.1 seconds
Discrete-time transfer function.
Introdução ao MATLAB
64
Dados do Objeto LTI
As funções TF, ZPK, e SS colocam todos os dados modelo numa
estrutura LTI. Para se extrair os dados de um objeto LTI utilizam-se os
seguintes comandos, onde Ts é o período de amostragem. Estas funções fazem
uma conversão de modelos automática (veja a seção a seguir):
[ num, den, Ts ] = tfdata (sist)
[ z, p, k, Ts ] = zpkdata (sist)
[ A, B, C, D, Ts ] = ssdata (sist)
O exemplo a seguir ilustra o uso desses comandos. Note que como o
sistema é de tempo contínuo, Ts retorna nulo indicando isso.
»
»
»
»
»
zeros = [ -1 -2 ];
polos = [ -3 -4 ];
ganho = [ 5 ];
F = zpk ( zeros, polos, ganho );
[ A, B, C, D, Ts ] = ssdata (F)
A=
-3.0000 -2.0000
0 -4.0000
B=
2.8284
2.8284
C=
-3.5355 -3.5355
D=
5
Ts = 0
65
Introdução ao MATLAB
Conversão de Modelos
Para converter um objeto para um tipo específico de modelo LTI use as
próprias funções TF, ZPK, e SS:
sist_novo = tf (sist)
sist_novo = zpk (sist)
sist_novo = ss (sist)
O exemplo a seguir mostra como converter de espaço de estados para
zero-polo-ganho e função de transferência.
» sist = ss ( -2, 1, 1, 3 );
» zpk ( sist )
ans =
3 (s+2.333)
----------------(s+2)
» tf ( sist )
ans =
3s+7
----------s+2
Para a conversão do tempo contínuo para o tempo discreto utilizam-se as
funções específicas c2d e d2c, respectivamente. A sintaxe dos comandos é:
sysd = c2d ( sysc, Ts )
sysc = d2c ( sysd )
% Ts = periodo de amostragem (s)
66
Introdução ao MATLAB
Na conversão presume-se o uso de um segurador de ordem zero (ZOH).
Para usar um método de conversão diferente, deve-se especificar o método num
terceiro parâmetro de entrada:
sysd = c2d ( sysc, Ts, 'zoh' )
sysd = c2d ( sysc, Ts, 'foh' )
sysd = c2d ( sysc, Ts, ‘impulse’ )
sysd = c2d ( sysc, Ts, 'tustin' )
sysd = c2d ( sysc, Ts, 'matched' )
% Segurador de ordem zero
% Segurador de 1ª ordem
% Invariância ao impulso
% Aproximação de Tustin
% Equivalência polo-zero
sysc = d2c ( sysd, 'zoh' )
sysc = d2c ( sysd, 'foh' )
sysc = d2c ( sysd, 'tustin' )
sysc = d2c ( sysd, 'matched' )
% Segurador de ordem zero
% Segurador de 1ª ordem
% Aproximação de Tustin
% Equivalência polo-zero
Operações com Modelos
Os objetos de modelos permitem as diversas operações aritméticas.
Exemplos:
» sist = sist1 + sist2
» sist = sist1 * sist2
Introdução ao MATLAB
67
» sist2 = inv ( sist1 )
» sist = [ H1 H2 ]
» sist = [ H1
H2 ]
Resposta Temporal
Existem várias funções que permitem investigar o comportamento
temporal de sistemas LTI:
68
Introdução ao MATLAB
Resposta Temporal
impulse
Resposta à função impulso unitário
initial
Resposta à condição inicial
gensig
Resposta ao gerador de sinal
lsim
Resposta a uma entrada arbitrária
step
Resposta ao degrau unitário
As funções step, impulse e initial podem gerar automaticamente um
horizonte temporal de simulação. A sintaxe associada a essas três funções é:
step ( sist )
impulse ( sist )
initial ( sist, x0 )
% x0 = vetor de condições iniciais
Exemplo:
» sist = [ tf ( 1, [1 1 1] ) , tf ( 1, [1 1] ) ]
» step ( sist )
Step Response
From: In(1)
From: In(2)
1.4
1.2
Amplitude
1
0.8
0.6
0.4
0.2
0
0
2
4
6
8
10
12 0
Time (seconds)
2
4
6
8
10
12
69
Introdução ao MATLAB
» step( sist,10 )
% simula de 0 até 10 segundos
» t = 0 : 0.1 : 10
» step ( sist, t )
% vetor temporal a cada 0,1s
% simula em função do t especificado
» t = 0 : 0.1 : 10
» u = sin ( t )
» lsim ( sist, u, t )
% entrada particular
% simula para a entrada especificada
Resposta em Frequência 102
O quadro a seguir resume algumas das funções disponíveis para a análise
em frequência de sistemas LTI:
Resposta em Frequência
bode
Diagramas de Bode
margin
Margens de Ganho e de Fase
nyquist
Diagrama de Nyquist
nichols
Carta de Nichols
As funções podem gerar os valores das frequências para os quais a
resposta será calculada. A escolha da faixa desses valores é feita em função dos
polos e zeros da função. Para impor uma dada faixa particular de frequências
num interval [wmin, wmax], use a seguinte sintaxe.
bode( sist, { wmin , wmax } )
% Atenção às ‘chaves’
O exemplo a seguir plota os diagramas de Bode da função no intervalo
que vai de 0,1 até 10 rad/s
70
Introdução ao MATLAB
» sist = tf (1, [1 1 1] )
» bode( sist, { 0.1 , 10 } )
Bode Diagram
10
Magnitude (dB)
0
-10
-20
-30
-40
0
Phase (deg)
-45
-90
-135
-180
-1
0
10
10
1
10
Frequency (rad/s)
É possível também especificar um vetor particular de pontos com
espaçamento logaritmo, por exemplo, desde 10^(-1) até 10^(+1) e com 100
pontos:
» w = logspace( –1, +1, 100)
» bode( sist, w )
Resposta Numérica 105
Para se obter os valores numéricas das respostas temporais e frequenciais
deve-se usar as variáveis de retornos das funções. Veja alguns exemplos de
sintaxes a seguir:
[ y, t ] = step( sist )
[ ganho, fase, w ] = bode( sist )
[ real, imaginario, w ] = nyquist( sist )
71
Introdução ao MATLAB
O exemplo a ilustra mostra como criar gráficos customizados a partir dos
dados numéricos de respostas temporais e frequenciais:
»
»
»
»
F = tf ( [1 -1], [1 0.1 1] )
[ganho,fase,w] = bode(F)
[ y , t ] = step(F,15)
[ p , z ] = pzmap(F)
»
»
»
»
»
»
subplot( 221 )
semilogx( w, 20*log10(ganho(:))), grid on
title('Diagrama de Bode de Ganho (dB)' )
subplot(223)
semilogx(w,fase(:)), grid on
title('Diagrama de Bode de Fase (graus)')
»
»
»
subplot(222)
plot(t,y), grid on
title('Resposta ao Degrau unitário')
»
»
»
»
subplot(224)
plot(z,'ro'), hold, plot(p,'bx'), grid on
axis([-0.5 1.5 -1.5 1.5])
title('Diagrama de Polos e Zeros')
Diagrama de Bode de Ganho (dB)
40
1
20
0
0
-1
-20
-2
-40
-2
10
0
10
2
Resposta ao Degrau unitário
-3
10
0
Diagrama de Bode de Fase (graus)
200
5
10
15
Diagrama de Polos e Zeros
1
100
0
0
-1
-100
-2
10
0
10
2
10
-0.5
0
0.5
1
1.5
Introdução ao MATLAB
72
Redução de Ordem
Recomenda-se usar a função mineral para se obter a mínima realização
de um modelo e forçar o cancelamento de polos e zeros nos objetos. O exemplo
a seguir mostra seu efeito cancelando o zero em -1 com o polo em -1 da função
T(s) de malha fechada.
» G = tf ( 1, [1 1] )
» T = G / (1 + G)
T=
s+1
------------------s^2 + 3 s + 2
» T = mineral ( T )
T=
1
---------s+2
Lugar Geométrico das Raízes
Uma análise bastante comum nos problemas de controle é a determinação
da estabilidade e do desempenho de sistemas lineares em função de um dado
parâmetro. Este costuma ser um ganho, uma taxa de amostragem etc. Um caso
típico é o ajuste fino da sintonia de um controlador através do ganho. Desta
forma é interessante conhecermos a priori a influência deste ganho na resposta.
Temos duas possibilidades: (i) Simular o comportamento da saída temporal para
todos os valores possíveis do ganho; (ii) Inferir o comportamento da saída
através dos valores dos polos de malha fechada (admitindo que a resposta é
mais influenciada pelos polos que pelos zeros).
A opção pelo cálculo dos polos nos parece mais razoável mesmo com o
auxílio do computador. A resposta temporal poderá ser mal condicionada
(dificuldades numérica) e poderá ser difícil percebermos tendências e
propriedades. Uma dificuldade na avaliação da resposta por meio dos polos de
malha fechada é que as contribuições de cada polo não podem ser somadas.
Devemos estabelecer um critério de dominância e relacionar o comportamento
73
Introdução ao MATLAB
da saída ao comportamento destes polos dominantes. Para suprir tal problema
utiliza-se a simulação temporal na validação do projeto. O Matlab possui a
função rlocus que automatiza a construção do lugar das raízes a partir da
função de transferência de malha aberta. Exemplo:
k (s - 2)
r(t)
C(t)
3
2
s + 2s + 3s + 4
» G = tf( [1 -2], [1 2 3 4] )
» rlocus( G)
»
Root Locus
10
8
Imaginary Axis (seconds-1)
6
4
2
0
-2
-4
-6
-8
-10
-3
-2.5
-2
-1.5
-1
-0.5
0
0.5
-1
Real Axis (seconds )
1
1.5
2
2.5
74
Introdução ao MATLAB
Interfaces Gráficas
O Toolbox de controle do MATLAB possui uma interface gráfica
denominada sisotool que permite o projeto gráfico iterativo de sistemas de
controle escalares (SISO) por meio de ferramentas como: Lugar das raízes,
Diagrama de Bode, Carta de Nichols e Resposta Temporal. A estrutura geral
admitida pelo ambiente de projeto possui quadro funções de transferência (F, C,
G, H) onde C e F são funções ajustáveis e representam o controlador e o préfiltro, respectivamente. A função G é relativa ao modelo da planta e H é o
modelo do sensor. A sintaxe do comando é:
» sisotool
r
-->[ F ]-->O--->[ C ]--->[ G ]----+--->
- |
|
+-------[ H ]----------+
y
Outra dessas interfaces que é bastante útil na análise de sistemas de
controle é a denominada ltiview que permite todo tipo análise de respostas no
domínio do tempo e da frequência de sistemas LTI (step, impulse, lsim, initial,
bode, bodemag, nyquist, nichols, sigma, pzmap, iopzmap). A sintaxe do
comando é:
» ltiview
Download

here