Escolar Documentos
Profissional Documentos
Cultura Documentos
Índice
Parte do material deste texto é uma adaptação livre dos próprios manuais
disponíveis do MATLAB.
2
Introdução ao MATLAB 3
Exemplo:
» A = [ 1 2 3; 4 5 6; 7 8 9 ]
Resulta:
A=
1 2 3
4 5 6
7 8 9
Resulta:
x=
-1.3000 1.7321 4.8000
Resulta:
x=
-1.3000 1.7321 4.8000 0 1.3000
» r = [ 10 11 12 ];
» A = [ A; r ]
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 , : );
A=
1 2 3
4 5 6
7 8 9
» variável = expressão
ou simplesmente,
» expressão
Se a expressão é muito grande e não cabe em uma linha, use (...) para
continuar a definição na linha seguinte. Exemplo:
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.
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
» help matfun
Para obter auxílio sobre uma função específica digite help e o nome da
função. Exemplo:
» help inv
Introdução ao MATLAB 6
» lookfor inverse
Salvando e Saindo
-4.534i
1.760217e-11
^ potenciação
\ divisão à esquerda
/ divisão à direita
* multiplicação
- subtração
+ adição
Introdução ao MATLAB 7
Formato de Saída
» x = [ 4/3 1.2345e-6 ]
» format short
1.3333 0.0000
» format short e
1.3333e+00 1.2345e-06
Funções
» x = sqrt( log(z) )
Introdução ao MATLAB 8
» angulo = atan2(y,3*x)
» [ V, D ] = eig( A )
» A = [ 1 2; 3 4 ]
A=
1 2
3 4
» B = A'
B=
1 3
2 4
Introdução ao MATLAB 9
» C=A+B
C=
2 5
5 8
» D=C-2
D=
0 3
3 6
Multiplicação de Matrizes
» E=A*B
E=
5 11
11 25
» F = 2*E
F=
10 22
22 50
Introdução ao MATLAB 10
Divisão de Matrizes
» x = [1 2 3]; y = [4 5 6];
» z = x.*y
z=
4 10 18
» z = x.\y
z=
4.0000 2.5000 2.000
» z = x.^y
z=
1 32 729
Operadores Relacionais
< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente
» 2 + 2 ~= 4
ans =
0
» 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
» Y = [1 2 3 4 5 6 7 8 9];
» i = find(Y > 3.0);
» Y(i) = 10*ones(size(i));
Introdução ao MATLAB 13
Operadores Lógicos
Funções Matemáticas
» A = [ -1 2 -3; 4 -5 6];
» B = abs(A)
B=
1 2 3
4 5 6
Gerando Vetores
» x = 1:5
x=
1 2 3 4 5
» 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
» 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
Introdução ao MATLAB 15
Indexando
» 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
» A(:,1)
A=
1
4
7
» A(2:3,1:2)
A=
4 5
7 8
» A( [1 3], [1 3] )
A=
1 3
7 10
» A = [1 2; 3 4; 5 6];
» B = A(:)
B=
1
2
3
4
5
6
» A(L,:)
Matrizes vazias
A declaração,
» X=[]
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:
Análise de Dados
Convenção
» 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
» mx = max(count)
» mu = mean(count)
» sigma = std(count)
resultam em:
mx =
61 420 2407
mu =
1.0e+003 *
Ajuste de Curvas
» c = polifit(x,p,n)
Autovalores e Autovetores
» eig(A)
» [X,D] = eig(A)
Representação de Polinômios
A=
1 2 3
4 5 6
7 8 0
é
» p = poly(A)
p=
1 -6 -72 -27
» r = roots(p)
r=
12.1229
-5.7345
-0.3884
» p2 = poly(r)
p2 =
1 -6 -72 -27
Introdução ao MATLAB 22
» a = [1 2 3]; b = [4 5 6];
» c = conv(a,b)
c=
4 13 28 27 18
» [q,r] = deconv(c,a)
q=
4 5 6
r=
0 0 0 0 0
Processamento de Sinais
Filtragem de Dados
A função,
» y = filter(b,a,x)
x y
H(z)
Integração Numérica
Equações não lineares e Otimização
Solução de Equações Diferenciais
etc
1 1
f (x ) 6
(x 0,3) 0,01 (x 0,9)2 0,04
2
foi codificada num arquivo com extensão .m, por exemplo chamado humps.m,
cuja listagem é mostrada a seguir:
» x = -1:.01:2;
» plot(x,humps(x))
100
80
60
40
20
-20
-1 -0.5 0 0.5 1 1.5 2
Introdução ao MATLAB 25
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
» q = quad(@humps,0,1)
q=
29.8583
» xm = fminsearch('humps',0.5, 1)
xm =
0.6370
» y = humps(xm)
y=
11.2528
» xz1 = fzero('humps',0)
xz1 =
-0.1316
» xz2 = fzero('humps',1)
xz2 =
1.2995
Equações Diferenciais
x (x 2 1)x x 0
x1 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
» t0 = 0; tf = 20;
» x0 = [0 0.25]'; % condições iniciais
» [t,x] = ode23( 'vdpol', [t0 tf], x0 );
» plot(t,x)
-1
-2
-3
0 5 10 15 20
Introdução ao MATLAB 28
1.8 Gráficos
Gráficos 2-D
Criando um Gráfico
Introdução ao MATLAB 29
» 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)
O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos
dados não se acomodarem dentro da escala anterior. Exemplo:
Introdução ao MATLAB 31
» plot(x)
» hold on
» plot(y1,'--')
» plot(y2,'-.')
» hold off
Resulta,
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 50 100 150 200 250
» plot(eig(randn(20,20)),’x’)
Introdução ao MATLAB 32
Distribuição de Autovalores
4
-1
-2
-3
-4
-4 -2 0 2 4 6
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
0.5
-0.5
-1
-1.5
-2
-2.5
-3
0 20 40 60 80 100 120
Introdução ao MATLAB 33
Importando Dados
» load dados.dat
» F1 = dados(:,1);
» F2 = dados(:,2);
» X = dados(:,3);
» subplot(211), plot(X,F1)
» subplot(212), plot(X,F2)
Resulta,
6
2
0 2 4 6 8 10
0
0 2 4 6 8 10
Introdução ao MATLAB 34
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,
Introdução ao MATLAB 35
1 y = c o s ( t a n ( p i* x ) )
0 .8
0 .6
0 .4
0 .2
-0 .2
-0 .4
-0 .6
-0 .8
-1
0 0 .2 0 .4 0 .6 0 .8 1
function y = fofx(x)
y = cos(tan(pi*x));
end
Resulta,
Introdução ao MATLAB 36
y = cos(tan(pi*x))
1
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
-1
0 0.2 0.4 0.6 0.8 1
Gráficos 3-D
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:1:m
» for j = 1:1:n
» A(i,j) = 1/(i+j-1);
» end
» end
» A
WHILE
» n = 1;
» while prod(1:n) < 1.e100, n = n+1; end
» n
IF e BREAK
if n < 0
A = -1;
elseif rem(n,2) == 0
A=0
else
A=1
end
"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".
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
Arquivos Scripts
f = [ 1 1]; i = 1;
plot(f)
Arquivos de Funções
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
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.
[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
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)
p = atan2(imag(h), real(h));
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.
INPUT e PAUSE
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.
d
y1 y1 y2 y1
dt
d
y2 y2 y2 y1
dt
function yp = lotka(t,y)
% modelo Votka-Voltera
end
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
» s = 'Ola'
s=
Ola
» c = 23;
» title(['A temperatura é ',num2str(c),' graus C'])
A Função EVAL
» fname = ‘dados’;
» for i = 1:10
» eval( [ 'load ', fname, int2str(i) ] )
» end
função fplot que passa como argumento o nome da função a ser exibida,
exemplo:
Transferência de Dados
Importando Dados
Para exportar dados também existem várias opções, das quais algumas
são listadas a seguir:
» A = rand(4,3);
» save temp.dat A -ascii
1.12 Depuração
Variáveis Simbólicas
» syms x y
» z=x+x+y
z=
2*x + y
» 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 ]
» determinante = det(A)
determinante =
» B=A+A
B=
Simplificações
» 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
» 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) % simplificação
exp(x + y)
Introdução ao MATLAB 51
Substituições
» syms x
» f = 2*x^2 - 3*x + 1;
» subs( f, {x}, {1/3} ) % x 1/3
ans =
2/9
» syms x y
» f = x + y;
» subs( f, {x, y}, {2,-3} ) % x 2, y -3
ans =
-1
» syms x y m
» f = x + y;
» subs( f, {x, y}, {2, m} ) % x 2, y m
ans =
m+2
Diferenciação Simbólica
» syms x
» f = sin(x)^2;
» diff(f)
ans =
2*cos(x)*sin(x)
Introdução ao MATLAB 52
» syms x y
» f = sin(x)^2 + cos(y)^2;
» diff(f, y) % derivada parcial de f em relação a y
ans =
-2*cos(y)*sin(y)
Integração Simbólica
» syms x y
» f = x^2 + y^2;
» int(f, y) % integral indefinida de f em relação a y
ans =
x^2*y + y^3/3
» syms x y
» f = x^2 + y^2;
» int(f, y, 3, 5) % integral definida desde 3 até 5
ans =
2*x^2 + 98/3
» syms x
» f = ( x^2 + 5*x == -6 );
» solve( f )
ans =
-3
-2
Introdução ao MATLAB 53
» syms x
» f = ( x^2 + 5*x - 6 );
» solve( f )
ans =
-3
-2
» 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
» syms x1 x2
» f1 = ( x1*x2 + x2 == 3 );
» f2 = ( x1 - x2 == 1 );
» [ xx1, xx2 ] = solve( f1, f2, x1, x2 )
xx1 = xx2 =
2 1
-2 -3
ans = ans =
3 == 3 1== 1
Introdução ao MATLAB 54
» 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')
-100
-200
-300
-400
-500
-6 -4 -2 0 2 4 6
» syms x y x
0.8
0.6
0.4
0.2
0
y
-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
x
Introdução ao MATLAB 55
d
y (t ) y (t )
dt
» syms x(t)
» f(t) = (diff(x) == -x);
» [xx] = dsolve(f(t), x(0) == -1)
xx =
-exp(-t)
d2
2
y (t ) cos 2t y(t )
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) )
/ t \4
8 sin | --- |
\ 2/
1 - ----------------
3
Introdução ao MATLAB 56
d
x1 (t ) x2 (t )
dt
d
x2 (t ) 6 x1 (t ) 5 x2 (t )
dt
xx1 =
(exp(-3*t)*(18*exp(t) - 12))/6
xx2 =
-exp(-3*t)*(6*exp(t) - 6)
Introdução ao MATLAB 57
Transformada de Laplace
syms s t
F = laplace( 2*exp(-5*t) - 5*exp(-2*t) )
F = collect(F)
F=
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=
Transformada Z
syms k z
f = sin(k);
f (k ) sen(k ) F = ztrans(f, k, z)
(z*sin(1))/(z^2 - 2*cos(1)*z + 1)
syms z k
F = z / ( (z+0.2)*(z+0.5)*(z-1) );
f = iztrans(F,k);
disp('f(k) = ')
pretty(f)
z
F ( z)
z 0, 2 z 0,5 z 1 f(k) =
k k
20 (-1/2) 25 (-1/5)
------------ - ------------ + 5/9
9 9
Introdução ao MATLAB 59
Função de Transferência
s
F ( 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
s
s 2 2s 10 F ( s )
1
F ( s)
F ( s)
s 1 2
s 1
» F1 = tf ( [ 1 0 ], [ 1 2 10 ] );
» F2 = tf ( [ 1 -1 ], [ 1 1 ] );
» F = [ F1 ; F2 ]
F=
s
#1: ---------------------
s^2 + 2 s + 10
s-1
#2: -------
s+1
s
F ( s)
s 2 2s 10
» S = tf ('s');
» F = S / (S^2 + 2*S + 10)
F=
s
--------------------
s^2 + 2 s + 10
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)
Espaço de Estados
dx
Ax Bu
dt
y Cx Du
em que,
Introdução ao MATLAB 62
0 1 0 1
A
3 1 0
B
2
1 1 0 0
C
3 0 0
D
0
é 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
Tempo Discreto
z-1
-------
z - 0.5
z 1
G( z )
z 0,5
» Ts = 0.1;
» Z = tf ( 'z', Ts );
» G = (Z - 1) / (Z - 0.5)
G=
z-1
-------
z - 0.5
» 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=
Ts = 0
Introdução ao MATLAB 65
Conversão de Modelos
sist_novo = tf (sist)
sist_novo = zpk (sist)
sist_novo = ss (sist)
» sist = ss ( -2, 1, 1, 3 );
» zpk ( sist )
ans =
3 (s+2.333)
-----------------
(s+2)
» tf ( sist )
ans =
3s+7
-----------
s+2
» sist = [ H1 H2 ]
» sist = [ H1
H2 ]
Resposta Temporal
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
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
0.8
Amplitude
0.6
0.4
0.2
0
0 2 4 6 8 10 12 0 2 4 6 8 10 12
Time (seconds)
Introdução ao MATLAB 69
» t = 0 : 0.1 : 10
» u = sin ( t ) % entrada particular
» lsim ( sist, u, t ) % simula para a entrada especificada
Resposta em Frequência
bode Diagramas de Bode
margin Margens de Ganho e de Fase
nyquist Diagrama de Nyquist
nichols Carta de Nichols
» sist = tf (1, [1 1 1] )
» bode( sist, { 0.1 , 10 } )
Bode Diagram
10
0
Magnitude (dB)
-10
-20
-30
-40
0
-45
Phase (deg)
-90
-135
-180
-1 0 1
10 10 10
Frequency (rad/s)
[ y, t ] = step( sist )
[ ganho, fase, w ] = bode( sist )
[ real, imaginario, w ] = nyquist( sist )
Introdução ao MATLAB 71
» 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')
20 0
0 -1
-20 -2
-40 -3
-2 0 2 0 5 10 15
10 10 10
Redução de Ordem
» G = tf ( 1, [1 1] )
» T = G / (1 + G)
T=
s+1
-------------------
s^2 + 3 s + 2
» T = mineral ( T )
T=
1
----------
s+2
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
Introdução ao MATLAB 73
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
4
Imaginary Axis (seconds-1)
-2
-4
-6
-8
-10
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
-1
Real Axis (seconds )
Introdução ao MATLAB 74
Interfaces Gráficas
» sisotool
» ltiview