Escolar Documentos
Profissional Documentos
Cultura Documentos
Matlab PDF
Matlab PDF
Matlab PDF
Matlab &
Simulink
So Bernardo do Campo - Dezembro de 1994
Departamento de Eletricidade
ndice Analtico
2. Bibliografia...................................................................................................... 93
1. Tutorial do
Matlab & Simulink
2
Tutorial do Matlab & Simulink 3
1.1.1 Introduo
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
FEI - FCA
Tutorial do Matlab & Simulink 4
x(5) = abs(x(1))
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
FEI - FCA
Tutorial do Matlab & Simulink 5
varivel = expresso
ou simplesmente,
expresso
Voc pode formar uma varivel ou nome de funo com uma letra seguida
de qualquer quantidade de letras (ou underscore) . MATLAB diferencia letras
maisculas de minsculas e usa somente os primeiros 19 caracteres do nome.
Para listar as variveis ativas use o comando who. Para obter mais
informaes sobre as variveis como: nome, tamanho, nmero de elementos,
etc., use o comando whos.
O Utilitrio de HELP
FEI - FCA
Tutorial do Matlab & Simulink 6
help matfun
Para obter auxlio sobre uma funo especfica digite help e o nome da
funo. Exemplo:
help inv
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
save temp x y z
FEI - FCA
Tutorial do Matlab & Simulink 7
-4.534i
1.760217e-11
^ potenciao
\ diviso esquerda
/ diviso direita
* multiplicao
- subtrao
+ adio
Formato de Sada
x = [4/3 1.2345e-6]
format short
1.3333 0.0000
format short e
1.3333e+00 1.2345e-06
FEI - FCA
Tutorial do Matlab & Simulink 8
Funes
x = sqrt(log(z))
angulo = atan2(y,3*x)
[V,D] = eig(A)
A = [1 2; 3 4]
FEI - FCA
Tutorial do Matlab & Simulink 9
A=
1 2
3 4
B = A'
B=
1 3
2 4
C=A+B
C=
2 5
5 8
D=C-2
D=
0 3
3 6
Multiplicao de Matrizes
E=A*B
E=
5 11
11 25
F = 2*E
FEI - FCA
Tutorial do Matlab & Simulink 10
F=
10 22
22 50
Diviso de Matrizes
FEI - FCA
Tutorial do Matlab & Simulink 11
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
FEI - FCA
Tutorial do Matlab & Simulink 12
> 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));
Operadores Lgicos
FEI - FCA
Tutorial do Matlab & Simulink 13
Funes Matemticas
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
FEI - FCA
Tutorial do Matlab & Simulink 14
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 funes para a gerao de vetores tal como logspace que
gera um vetor espaado logaritmicamente:
w = logspace(-1,1,5)
w=
0.1000 0.3162 1.0000 3.1623 10.0000
Indexando
FEI - FCA
Tutorial do Matlab & Simulink 15
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 2; 3 4; 5 6];
B = A(:)
B=
1
FEI - FCA
Tutorial do Matlab & Simulink 16
2
3
4
5
6
A(L,:)
Matrizes vazias
A declarao,
X = []
A(:,[2 4]) = []
Matrizes Especiais
FEI - FCA
Tutorial do Matlab & Simulink 17
Manipulando Matrizes
FEI - FCA
Tutorial do Matlab & Simulink 18
Conveno
count =
11 57 291
43 178 1011
38 163 1095
61 420 2407
12 59 287
Para esse exemplo temos 5 observaes para 3 variveis. Isso pode ser
obtido como segue:
[n,p] = size(count)
n=
5
p=
3
FEI - FCA
Tutorial do Matlab & Simulink 19
sort - ordenao
sum - soma dos elementos
prod - produto dos elementos
cumsum - soma cumulativa dos elementos
cumprod - Produto cumulativos dos elementos
diff - Aproximao da derivada
corrcoef - Coeficientes de correlao
cov - Matriz de covarincia
mx = max(count);
mu = mean(count);
sigma = std(count);
resultam em:
mx =
61 420 2407
mu =
1.0e+003 *
Ajuste de Curvas
p( x ) = c1x d + c2 x d 1 + " + cn
FEI - FCA
Tutorial do Matlab & Simulink 20
c = polifit(x,p,n)
Autovalores e Autovetores
eig(A)
[X,D] = eig(A)
Representao de Polinmios
FEI - FCA
Tutorial do Matlab & Simulink 21
A=
1 2 3
4 5 6
7 8 0
calculado com
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
a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
c=
4 13 28 27 18
FEI - FCA
Tutorial do Matlab & Simulink 22
[q,r] = deconv(c,a)
q=
4 5 6
r=
0 0 0 0 0
Processamento de Sinais
Filtragem de Dados
FEI - FCA
Tutorial do Matlab & Simulink 23
A funo,
y = filter(b,a,x)
x y
H(z)
[h,w] = freqz(b,a,n);
mag = abs(h);
fase = angle(h);
semilogy(w,mag)
plot(w,fase)
Integrao Numrica
Equaes no lineares e Otimizao
Soluo de Equaes Diferenciais
FEI - FCA
Tutorial do Matlab & Simulink 24
1 1
f (x ) = + 6
(x 0,3) + 0,01 (x 0,9)2 + 0,04
2
x = -1:.01:2;
plot(x,humps(x))
100
80
60
40
20
-20
-1 -0.5 0 0.5 1 1.5 2
Integrao Numrica
Uma funo, tal como humps, pode ser integrada numericamente pelo
processo chamado de quadratura. Exemplo:
FEI - FCA
Tutorial do Matlab & Simulink 25
q = quad('humps',0,1)
q=
29.8583
Note que o primeiro argumento da funo quad uma string que contm o
nome de uma funo. Isso mostra porque essa funo chamada funo de
funo ( uma funo que opera com outras funes). Os outros dois argumentos
so os limites de integrao.
xm = fmin('humps',0.5, 1)
xm =
0.6370
y = humps(xm)
y=
11.2528
FEI - FCA
Tutorial do Matlab & Simulink 26
xz1 = fzero('humps',0)
xz1 =
-0.1316
xz2 = fzero('humps',1)
xz2 =
1.2995
Equaes Diferenciais
x + (x 2 1)x + x = 0
x1 = x1 (1 x 22 ) x 2
x 2 = x1
FEI - FCA
Tutorial do Matlab & Simulink 27
O primeiro passo para simular este sistema criar um arquivo que contem este
sistema de equaes diferenciais. Chamaremos este arquivo de vdpol.m
t0 = 0; tf = 20;
x0 = [0 0.25]'; % condicoes iniciais
[t,x] = ode23('vdpol',t0,tf,x0);
plot(t,x)
-1
-2
-3
0 5 10 15 20
1.1.9 Grficos
Grficos 2-D
FEI - FCA
Tutorial do Matlab & Simulink 28
Criando um Plot
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+)')
FEI - FCA
Tutorial do Matlab & Simulink 29
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)
FEI - FCA
Tutorial do Matlab & Simulink 30
O que ele pode fazer mudar a escala dos eixos automaticamente se os novos
dados no se acomodarem dentro da escala anterior. Exemplo:
plot(x)
hold on
plot(y1,'--')
plot(y2,'-.')
hold off
Resulta,
FEI - FCA
Tutorial do Matlab & Simulink 31
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)
Distribuio de Autovalores
4
-1
-2
-3
-4
-4 -2 0 2 4 6
FEI - FCA
Tutorial do Matlab & Simulink 32
Plotando Matrizes
A funo 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 so 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,
2
1.5
0.5
-0.5
-1
-1.5
-2
-2.5
-3
0 20 40 60 80 100 120
Importando Dados
FEI - FCA
Tutorial do Matlab & Simulink 33
dados.dat
O comando load dados.dat produz uma matriz chamada dados, 9-por-3. A seguir,
mostra-se como renomear cada uma das variveis e como plotar cada funo
separadamente.
load dados.dat
F1 = dados(:,1);
F2 = dados(:,2);
X = dados(:,3);
subplot(211), plot(X,F1)
subplot(212), plot(X,F2)
Resulta,
2
0 2 4 6 8 10
0
0 2 4 6 8 10
FEI - FCA
Tutorial do Matlab & Simulink 34
x = (0:1/2000:1)';
plot(x,cos(tan(pi*x)))
Resulta,
FEI - FCA
Tutorial do Matlab & Simulink 35
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
function y = fofx(x)
y = cos(tan(pi*x));
Resulta,
FEI - FCA
Tutorial do Matlab & Simulink 36
1 y = cos(tan(pi*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
Grficos 3-D
FEI - FCA
Tutorial do Matlab & Simulink 37
FOR
O MATLAB possui a sua verso prpria dos loops DO ou FOR. Com isso
possvel repetir um grupo de declaraes por um nmero 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
FEI - FCA
Tutorial do Matlab & Simulink 38
n = 1;
while prod(1:n) < 1.e100, n = n+1; end
n
Declaraes IF e BREAK
if n < 0
A = negative(n)
elseif rem(n,2) == 0
A = even(n)
else
A = odd(n)
end
"Pegue um nmero 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".
FEI - FCA
Tutorial do Matlab & Simulink 39
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
Arquivos Scripts
FEI - FCA
Tutorial do Matlab & Simulink 40
f = [ 1 1]; i = 1;
plot(f)
Arquivos de Funes
FEI - FCA
Tutorial do Matlab & Simulink 41
function y = mean(x)
[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 mdia pode ser calculada
como segue:
z = 1:99;
mean(z)
ans =
50
FEI - FCA
Tutorial do Matlab & Simulink 42
Voc pode criar uma funo um pouco mais complexa que mean,
chamada stat, que tambm calcula o desvio padro. Neste exemplos ilustramos o
uso de mltiplos argumentos de sada.
[m,n] = size(x);
if m == 1
m = n;
end
mean = sum(x) / m;
stdev = sqrt(sum(x.^2)/m - mean.^2);
Uma funo que calcula o posto de uma matriz usa mltiplos argumentos
de entrada: No caso geral teramos mltiplos argumentos de entrada e de sada.
function r = rank(x,tol)
% rank (posto em Portugues) da matrix
s = svd(x);
if (nargin == 1)
tol = max(size(x)) * s(1) * eps;
end
r = sum(s > tol);
Este exemplo tambm mostra o uso da varivel permanente nargin para encontrar
o nmero de argumentos de entrada. A varivel nargout, embora no usada neste
exemplo, contm o nmero de argumentos de sada.
voc pode criar um help online para os seus M-files pessoais entrando o
texto em uma ou mais linhas de comentrio, comeando sempre pela segunda
linha do arquivo. Por exemplo, o arquivo da funo angle,
FEI - FCA
Tutorial do Matlab & Simulink 43
function p = angle(h)
p = atan2(imag(h), real(h));
Informaes teis
Quando voc chama uma funo pela primeira vez, o MATLAB compila a
funo e a coloca na memria. Ela estar ento disponvel para os usos
subseqentes sem a necessidade de ser compilada. Permanecer na memria at
o final da seo ou at que voc fique com pouca memria, acarretando na sua
eliminao automtica.
FEI - FCA
Tutorial do Matlab & Simulink 44
Variveis Globais
y1 = y1 y2 y1
y2 = y2 + y2 y1
FEI - FCA
Tutorial do Matlab & Simulink 45
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)];
Uma vez que ALFA e BETA so globais voc pode altera-las interativamente e
novas solues podem ser obtidas sem ter que editar nenhum arquivo e sem
passar os valores como argumentos.
Variveis Alfanumricas
s = 'Ola'
s=
Ola
c = 23;
title(['A temperatura ',num2str(c),' graus C'])
A Funo EVAL
FEI - FCA
Tutorial do Matlab & Simulink 46
A funo eval lida com variveis tipo texto para implementar recursos de
macros de texto. eval(t) fora que o texto contido na varivel t seja "resolvido".
O exemplo a seguir mostra como usar o comando load para carregar 10
arquivos seqencialmente numerados: dados1.mat, dados2.mat, ...
fname = "dados";
for i = 1:10
eval(['load ',fname,int2str(i)])
end
fplot('sin',[0 10])
FEI - FCA
Tutorial do Matlab & Simulink 47
! edit c:\usuario\teste.doc
Transferncia de Dados
Importando Dados
Para exportar dados tambm existem vrias opes, das quais algumas so
listadas a seguir:
FEI - FCA
Tutorial do Matlab & Simulink 48
A = rand(4,3);
save temp.dat A -ascii
FEI - FCA
Tutorial do Matlab & Simulink 49
Comandos de Depurao
Usando o Depurador
FEI - FCA
Tutorial do Matlab & Simulink 50
Construo de Modelos
FEI - FCA
Tutorial do Matlab & Simulink 51
Converso de Modelos
Reduo de Modelos
Realizao de Modelos
FEI - FCA
Tutorial do Matlab & Simulink 52
Propriedade de Modelos
Resposta Temporal
FEI - FCA
Tutorial do Matlab & Simulink 53
Resposta em Freqncia
Seleo de Ganhos
FEI - FCA
Tutorial do Matlab & Simulink 54
Soluo de Equaes
Demonstrativos
FEI - FCA
Tutorial do Matlab & Simulink 55
FEI - FCA
Tutorial do Matlab & Simulink 56
simulink
Este comando mostra uma nova janela contendo cones dos blocos de
subsistemas que constituem a biblioteca padro.
FEI - FCA
Tutorial do Matlab & Simulink 57
Estes blocos podem ser abertos (clicando duas vezes), abrindo janelas de
onde os blocos sero 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 mantm o boto
esquerdo do mouse apertado. Inicialmente clique sobre a biblioteca Sources e
arraste um gerador de funes para a nova janela (untitled).
FEI - FCA
Tutorial do Matlab & Simulink 58
FEI - FCA
Tutorial do Matlab & Simulink 59
Para abrir a janela do osciloscpio, 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. No clique sobre OK, pois fecharia a
janela de observao do osciloscpio.
FEI - FCA
Tutorial do Matlab & Simulink 60
FEI - FCA
Tutorial do Matlab & Simulink 61
com qualquer formato. A cada vez que voc solta o boto esquerdo e aperta
novamente inicia-se uma nova linha ligada a anterior a partir desse ponto. Se
voc no gostou do resultado apague a linha selecionando-a com um clique em
qualquer ponto da linha e ento pressione a tecla DELETE ou use Cut ou Clear
no menu Edit.
FEI - FCA
Tutorial do Matlab & Simulink 62
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
diretrio, um nome para seu modelo e depois clique sobre o OK.
FEI - FCA
Tutorial do Matlab & Simulink 63
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
FEI - FCA
Tutorial do Matlab & Simulink 64
1
Gain
Clique duas vezes sobre o bloco Gain para abrir a janela de configurao
do bloco e altere o valor do ganho para 2. Para ligar a entrada do bloco Gain
linha de conexo entre o gerador e o osciloscpio, voc pode comear o traado
da entrada do bloco de ganho ou por exemplo, da sada do gerador
2
Gain
FEI - FCA
Tutorial do Matlab & Simulink 65
2
Gain
2
Gain Scope1
Mux
2
Gain
FEI - FCA
Tutorial do Matlab & Simulink 66
Abra o bloco Mux e altere o nmero de entradas para 2 e ento feche a caixa de
dilogo.
Mux
Signal Gen.
Mux Scope
2
Gain
Mux
Signal Gen.
Mux Scope
2 yout
To Workspace
Gain
FEI - FCA
Tutorial do Matlab & Simulink 67
Mux
Signal Gen.
Mux Scope
2 matriz1
Gain To Workspace
FEI - FCA
Tutorial do Matlab & Simulink 68
1.5
0.5
-0.5
-1
-1.5
-2
0 200 400 600 800 1000
FEI - FCA
Tutorial do Matlab & Simulink 69
Nveis de Uso
Simulao
FEI - FCA
Tutorial do Matlab & Simulink 70
A simulao pode ser iniciada tanto pela linha de comando como pelo
menu Simulation. Selecione Start nesse menu depois de colocar o valor de
cada parmetro ou o nome da varivel MATLAB correspondente.
A linha Return Variables pode ser usada para colocar o tempo, vetor de
estado e vetor de sada no workspace do MATLAB. Se este campo for deixado
em branco nenhuma varivel ser enviada ao workspace.
FEI - FCA
Tutorial do Matlab & Simulink 71
FEI - FCA
Tutorial do Matlab & Simulink 72
1
s+1
Step Fcn
Transfer Fcn Scope
1
1
s+1
Step Fcn Saida
Transfer Fcn
1
saida
s+1
Step Fcn To Workspace
Transfer Fcn
tempo
Clock To Workspace1
plot(tempo,saida)
Condies Iniciais
FEI - FCA
Tutorial do Matlab & Simulink 73
que colocamos como parmetros de um dado bloco pode ser sobreposta usando
um argumento extra na chamada da simulao:
[t,x,y] = linsim('modelo',tfinal,x0);
[sizes,x0] = modelo
onde "modelo" o nome do modelo. O nome do bloco associado a cada uma das
variveis de estado obtido com um terceiro argumento de sada:
[sizes,x0,nome_bloco] = modelo
Loops Algbricos
Blocos de ganho;
A maioria dos blocos no lineares;
Funo-de-transferncia quando numerador e denominador so
da mesma ordem;
Blocos Zero-Plo-Ganho quando existem tantos zeros quanto
plos;
Blocos Espao-de-Estado quando a matriz D no nula;
FEI - FCA
Tutorial do Matlab & Simulink 74
1 + s+2
+ 1
Inport s+1
Sum Outport
Transfer Fcn
1
Gain
Interpolao de Dados
linsim
rk45, rk23
FEI - FCA
Tutorial do Matlab & Simulink 75
gear
adams
euler
[t,x,y] = linsim('modelo',tf,x0,[tol,mpasso,Mpasso]);
Como regra geral, este parmetros est entre 0.1 e 1e-6. Quanto menor o
valor de tol, mais passos sero necessrios na simulao.
FEI - FCA
Tutorial do Matlab & Simulink 76
t = n*Ts + offset
onde n um inteiro e o offset pode ser tanto positivo como negativo. O offset
especialmente til quando desejamos que certos blocos sejam atualizados antes
ou depois que outros.
Linearizao
x = Ax + Bu
y = Cx + Du
FEI - FCA
Tutorial do Matlab & Simulink 77
2
y(2)
1 + 1
- 1
Inport 2
s +2s+1 y(1)
Planta
1
s+1
Realimentacao
Para extrair o modelo linear associado a esse diagrama entre com o comando:
[A,B,C,D] = linmod('modelo')
A=
-1 0 1
-1 -2 -1
0 1 0
B=
0
1
0
C=
0 0 1
-1 0 0
D=
0
1
FEI - FCA
Tutorial do Matlab & Simulink 78
[num,den] = ss2tf(A,B,C,D)
diagramas de Bode
bode(A,B,C,D)
step(A,B,C,D)
impulse(A,B,C,D)
lsim(A,B,C,D,u,t)
[A,B,C,D] = linmod('modelo',x,u,xpert,upert)
FEI - FCA
Tutorial do Matlab & Simulink 79
2
y(2)
1 + 1
- 1
Inport 2
s +2s+1 y(1)
Planta
1
s+1
Realimentacao
y = [1; 1];
Use os ndices das variveis para indicar quais delas podem variar livremente e
quais devem ficar inalteradas:
[x,u,y,dx] = trim('modelo',x,u,y,ix,iu,iy)
x=
1.0000
0.0000
1.0000
u=
2
FEI - FCA
Tutorial do Matlab & Simulink 80
y=
1.0000
1.0000
dx =
1.0e-015 *
-0.3331
-0.2244
0.0567
1.3.5 S-Functions
sys = modelo(t,x,u,flag)
onde modelo o nome do modelo e flag quem define qual informao vai ser
colocada de volta em sys. Por exemplo, se flag colocado em 1, o contedo de
sys aps a chamada da funo ser o vetor de estado no instante t. Note portanto
que voc pode criar seu modelo diretamente escrevendo uma S-function sem ter
que desenhar o diagrama em blocos. Essa forma aconselhada nos casos que seu
modelo pode ser escrito de forma concisa como um conjunto de equaes
diferenciais.
FEI - FCA
Tutorial do Matlab & Simulink 81
[sizes,x0] = modelo([],[],[],0);
FEI - FCA
Tutorial do Matlab & Simulink 82
x + (x 2 1)x + x = 0
x1 = x1 (1 x 22 ) x 2
x 2 = x1
X2
- X1'
f(u) 1/s 1/s
* +
(1-x2*x2) Scope
X1
FEI - FCA
Tutorial do Matlab & Simulink 83
Esta funo pode ser chamada com diversos valores de flag para retornar a
informao necessria. Os algoritmos de integrao tal como o rk45, lidam
convenientemente com o flag durante a simulao. Note portanto, que seria
muito fcil voc desenvolver seu prprio algoritmo de integrao.
[t,x] = rk45('vdpm',10);
plot(t,x)
-1
-2
-3
0 2 4 6 8 10
Tempo (seg)
FEI - FCA
Tutorial do Matlab & Simulink 84
FEI - FCA
Tutorial do Matlab & Simulink 85
(s-1)
s(s+1)
Zero-Pole
Block Type
filtro LP
Dialog Strings
FEI - FCA
Tutorial do Matlab & Simulink 86
Esta string define a nova caixa de dilogo que aparecer quando o bloco for
clicado duas vezes. Separe os dados com o smbolo "|". O primeiro dos dados o
ttulo da caixa de dilogo. Os demais so os nomes dos campos que apareceram
na nova caixa de dilogo. O nmero mximo de campos seis.
eval('plot(1:10')
Initialization Commands
Drawing Commands
plot(t,y,[0;max(t),[0;0])
FEI - FCA
Tutorial do Matlab & Simulink 87
Help String
dx = 0
dt
Caso contrrio,
dx = u x = udt
dt
onde x o estado, u a entrada do integrador e lb e ub so respectivamente o
limite inferior e superior.
FEI - FCA
Tutorial do Matlab & Simulink 88
1
Mux f(u) 1
1 s
Outport
Inport Mux Fcn Integrador
u[2]*((((u[1]>lb)+(u[2]>=0))>0)*(((u[1]<ub)+(u[2]<=0))>0))
A partir do instante que voc entrar com o diagrama e der um nome a ele,
a S-function passa a estar disponvel no MATLAB e com o mesmo nome que
o diagrama.
FEI - FCA
Tutorial do Matlab & Simulink 89
Uma vez que a S-function foi definida, voc pode simula-la diretamente
como ilustrado abaixo para uma entrada senoidal, ou ento converte-la num
bloco.
FEI - FCA
Tutorial do Matlab & Simulink 90
Output trajectory
0.6
0.4
0.2
-0.2
-0.4
-0.6
-0.8
0 2 4 6 8 10
Tim e
Note que ao invs de 'sin', qualquer outra funo, mesmo as que voc
criou, poderiam ter sido usadas como argumento.
Dialog strings
Initialization commands
FEI - FCA
Tutorial do Matlab & Simulink 91
Drawing commands
plot(-1,-0.1,-1,1.1,[0,1,2,3],[0,0,1,1]);1/s
Help string
1/s
FEI - FCA
Tutorial do Matlab & Simulink 92
FEI - FCA
2. Bibliografia
[8] ANALYSIS & SYNTHESIS TOOLBOX - Users Guide - The Mathworks Inc
[12] NONLINEAR CONTROL DESIGN TOOLBOX - Users Guide - The Mathworks Inc
[13] KUO, B. C. & HANSELMAN, D. C. - Matlab Tools for Control System Analysis and
Design - Prentice Hall, 1994.
[14] OGATA, K. - Solving Control Engineering Problems with Matlab - Prentice Hall, 1994.
[15] OGATA, K. - Designing Linear Control Systems with Matlab - Prentice Hall, 1994.
93