Buscar

Aula1-LCP-matlab-resumo

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

107506– Laboratório de Controle de 
Processos 
Prof. Eduardo Stockler Tognetti 
 
Departamento de Engenharia Elétrica 
Universidade de Brasília 
 
 
 
1º Semestre 2018 
Aula: Matlab 
Abrindo Matlab no Linux (Ubuntu) 
1. Abrir Terminal 
2. Digitar 
cd / ( Enter) 
sudo ./usr/local/MATLAB/R2017a/bin/matlab 
 ( Enter) 
3. Senha: 
unb ou unbunb 
 
Introdução 
• Ao contrário de linguagens clássicas como C e Fortran, 
no ambiente MATLAB o usuário não se preocupa com 
itens como declaração de variáveis, alocação de 
memória, utilização de ponteiros e outras tarefas de 
rotina. 
• O MATLAB apresenta uma série de funções 
matemáticas já implementadas que podem ser 
utilizadas em uma rotina construída pelo usuário. 
Estas funções são agrupadas de acordo com a área 
de interesse em toolboxes e armazenadas em 
diretórios específicos. Qualquer função a ser 
utilizada deve estar no diretório de trabalho ou 
caminho (path) do MATLAB. 
Ambiente 
Editor de 
códigos (scripts), 
arquivo .m salvo 
em disco 
Caminho (path) 
do arquivo .m 
Janela de 
comando, 
executa 
diretamente os 
comandos, não 
salva em disco 
Lista de variáveis 
na memória da 
área de trabalho 
(workspace) 
Lista os arquivos 
do diretório do 
“path” 
Histórico dos 
comandos 
executados no 
Command 
Window 
Inicia Simulink 
Comandos Básicos 
Comando Descrição Exemplo 
help ajuda help plot 
who, whos informa as variáveis presentes no workspace whos 
which informa o diretório de execução de uma 
determinada função 
which ode45 
lookfor Procura uma palavra na biblioteca de funções lookfor exponential 
load, save carrega / salva em disco as variáveis do 
workspace como arquivo de dados (extensão 
.mat) 
save dados.mat 
clc, close Limpa a tela, figuras clc; close all 
clear limpa variáveis do workspace clear a; clear all; 
diary salva o texto de uma seção do MATLAB no 
diretório corrente 
diary texto.txt 
figure cria uma figura nova figure; figure newfig 
cd Muda ou informa o diretório corrente cd ..; cd c:\temp; cd 
Operações e Variáveis 
• Operações aritméticas padrão ou pré-
definidas: 
» (5+4)/(6*2) 
» sin(pi/4)^2 – 1 
• Nome de variáveis deve começar com letra: 
» raio3 = 2; 
» circunferencia = 2*pi*raio3; 
 
 Obs.: “;” no final omite impressão na tela. 
Funções Elementares 
Vetores e matrizes 
Atribuindo valores: 
• v = [1 2 3 4]; v=1:4; v=[1;2;3;4]’; A = [1 2; 3 4]; 
• x=(0:0.1:1)*pi; y= linspace(0,pi,11); z= logspace(0,2,11); 
• I=eye(3); U=ones(3); U=ones(3,2); Z=zeros(3); Z=zeros(3,1); A=rand(2,4); 
 
Atribuindo elementos específicos: 
• v(2)=20; A(2,1)=30; v(1:end)=1; 
• A(:,1)=pi; A(2,:)=log(exp(pi)); A([1 3], : )=sin(pi); 
 
Informações: 
• [l,c] = size(A); c = length(v); display(A); 
 
Vetores e matrizes 
Operações: 
• (+, -, *, /, ^ ) : operações matriciais 
• (.*, ./, .^ ) : operações elemento a elemento 
• eig(A), norm(A), det(A), inv(A), rank(A), null(A), expm(A) 
auto valores/vetores, norma, determinante, inversa, posto da 
matriz A, espaço nulo e exp. de matriz, respectivamente. 
• diag(A), diag([1 2]): extrai a diagonal da matriz A, gera uma 
matriz diagonal com os elementos 1 e 2. 
• x=A\b solução de A*x=b (≡ inv(A)*b, se A quad. ñ sg.) 
• x=b/A solução de x*A=b (≡ b*inv(A), se A quad. ñ sg.) 
 
 help matfun: help on matrix functions (numerical linear 
algebra) 
 
 
Vetores e matrizes 
Matrizes multidimensionais: 
• M(1,1,1,1)=1; M=randn(2,2,3); 
• Obs.: Converter matriz 3D para 1D: 
 vet = squeeze(M); 
Células: 
Criando: 
• a=1:3; b=[5 6;7 8]; c={a b}; d.a=a; d.b=b; 
• z={a b c d}; 
• C={[1 2],[4 5;6 7]}; 
Mostrando ou atribuindo valores: 
• z{2}=sin(pi); z{2}(1,2); z{3}{2}(1,2); z{3}{2}(2,2)=80; celldisp(z) 
Estruturas: 
• dados.nome='prog'; dados.mat={[1] [1;2]}; 
• s = struct('Disciplina',lab','Nota',5.0); 
• valores = estrutura.signal.values; 
 
x=[1 2 3 4 5 6 ; 
 2 10 3 3 2 25]; 
 
%Forma linear: 
 xmin=min(x); 
 xmin=min(xmin); 
 [i,j]=find(x==xmin); 
 
Exemplo 2 
Exemplo: Achando a posição do menor valor de uma matriz: 
%Forma condensada: 
 [i,j]=find(x==(min(min(x)))); 
Vetores e matrizes 
%Criando células (cells) 
temperature(1,:) = {'2009-12-31', [45, 49, 0]}; 
temperature(2,:) = {'2010-04-03', [54, 68, 21]}; 
temperature(3,:) = {'2010-06-20', [72, 85, 53]}; 
 
allTemps = cell2mat(temperature(:,2)); 
dates = datenum(temperature(:,1)); 
plot(dates,allTemps) 
Exemplo 2 
Exemplo: Manipulando células (cell) 
%Criando células: 
for i =1:10 
 c{i} = i; 
end 
Vetores e matrizes 
%Célula para matriz: 
C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]} 
celldisp(C) 
M = cell2mat(C) 
%Criando células: 
c = cell(1,3); 
c{1} = 1; 
c{2} = [1 2 3]; 
c{3} = [1 2; 3 4]; 
Atribuindo valores e imprimindo 
Atribuindo múltiplos valores: 
• [A,B,C,...] = deal(X,Y,Z,...); [A,B,C,...] = deal(X{:}); 
• [A,B,C,...] = deal(S.FIELD); 
 
Exemplo: 
• sys = {rand(3) ones(3,1) eye(3) zeros(3,1)}; %cell 
• [a,b,c,d] = deal(sys{:}) 
 
• z = input ( ‘Valores de z: ’); 
• temp=78; disp(temp); disp (‘graus Celsius’); 
• display(['A temperatura é ' num2str(temp) ' graus Celsius']) 
• fprintf (formato, matriz); 
– fprintf (‘A temp. é %4.1f graus Celsius \n’, temp) 
Polinômios 
• Polinômio: 
• Exemplo: 
• Operações: polinômios com coefs. x, y e raízes r 
– Retorna as raízes: roots(x) 
– Retorna os coeficientes: poly(r) 
– Avaliar polinômio x em s (ex.: s=5): polyval(x,s) 
– Multiplicação de polinômios: z=conv(x,y) 
– Divizão de polinômios: [z,t]=deconv(x,y) 
– Derivar polinômios: polyder(x) 
– Soma de polinômios: x+y (completar c/ zeros à esquerda) 
Matemática simbólica 
Definido variáveis simbólicas 
» syms x a b 
Construindo uma função simbólicas com as variáveis criadas 
» z = 1/(a+b*(cos(x))^2) 
Mostrando a função 
» pretty(z); 
Simplificando 
» simple(z) 
Diferenciando em relação a x 
» dz = diff(z,x) 
Suvbstituindo variáveis por valores 
» a=0.5; b=1; 
» dzab=subs(dz) 
» z2 = subs (z,'a',100) 
Resolvendo equações 
» pts_crits=solve(dzab) 
 
Ajuda: 
 
• Outros: solve (resolve eqs. algébricas); dsolve (resolve edo’s); fzero; fsolve; compose 
• Otimização: optimset; fmincon; fminsearch; lsqnonlin 
 
 
 
Matemática simbólica 
Gráficos 2D 
Gráficos 2D: 
» x = [-pi:0.1:pi] ; y = cos(x); plot(x,y); 
 
Duas curvas no mesmo gráfico: 
» plot(x, 1./x, 'r', x, y, '--b'); 
ou 
» figure; hold on; plot(x, 1./x,'r'); plot(x, y,'k'); hold off; grid; 
 
Curvas em gráficos diferentes mas na mesma janela: 
» subplot(1,2,1);plot(x, 1./x,' *b' );subplot(1,2,2);plot(x,y,'--m' ) 
 
Propriedades: 
• title; xlabel; ylabel; legend; grid; ginput; gtext; 
• axis([XMIN XMAX YMIN YMAX]) 
• fig01 = figure; saveas(fig01,’nomefig','jpeg'); 
• print -depsc -tiff -r300 filename 
help plot 
Exemplo: 
duas curvas no mesmo gráfico 
x = [-2*pi:0.1:2*pi] ; 
y = cos(x); 
y2 = sin(x); 
 
%Exemplo1 
figure 
plot(x,y,‘-b',x,y2,'r') 
 
%Propriedades 
xlabel('t') 
ylabel('y(t)') 
title('Resposta do processo') 
legend('y1','y2') 
grid 
 
%Exemplo2 
figure 
plot(x,y,'b') 
hold on 
plot(x,y2,'r') 
hold off 
 
%Exemplo3 
figure 
subplot(2,1,1) 
plot(x,y,'b') 
subplot(2,1,2) 
plot(x,y2,'r') 
 
Gráfico da derivada numérica de um 
sinal 
h = 0.1; %passo 
x = -2*pi:h:2*pi; 
y = cos(x); 
plot(x,y) 
 
y2 = diff(y)/h; %y2(k) = ( y(k+1) – y(k) )/h 
 
%Gráfico de y e gráfico da derivada de y com ajuste das dimensões dos vetores 
plot(x(1:end-1),y(1:end-1),'-b',x(1:end-1),y2,'r') 
 
Exercício 1 
2. Seja a célula 
 C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]} 
 
a) Visualize o conteúdo (comando “celldisp”) 
b) Modifique o valor do elemento (1,1) da célula de “1” para “10” 
c) Passe todos os elementos de C para uma matriz M (comando “cell2mat”) 
d) Passe cada um dos elementos da célula para M1, M2, M3 e M4 
(manualmente e depois via comando “deal”) 
e) Seja N(1,1,1:4)=rand.Converta N para um vetor v (comando “squeeze”) 
1. 
Exercício 2 
1. Plote num mesmo gráfico (diferencie as curvas por cores e marcadores) as três 
funções abaixo utilizando 
(i) Comando plot 
(ii) Comando hold 
 
 
2. a) Resolva g(x)=0 (ache as raízes x), em que 
g(x) = 16/x - (x-5)^2 = 0 
 
 b) Resolva g2(x) = dg(x)/dx = 0 
 
 c) Plote g2(x) para -10 < x < 10 
 
Dica: para obter valores numéricos use o comando “eval” 
Definindo Funções 
Definindo uma função anônima (function handle): 
» y = 7; 
» fh = @(x)x.^2+y; 
» z = fh(2) 
ou 
» funcao = @(x)cos(x)*x^2; 
 
Plotando 
 
» fplot(funcao,[-2*pi 2*pi]); 
 
 
 
 
 
Funções em arquivos .m 
Formato: 
 function [output_args] = fct_name(input_args) 
[y1, y2,…,yN] = funcao(u1,u2,…,uM) 
 
• Ex: Arquivo “funcao.m” 
 
 
 
 A função “funcao.m” pode ser chamada a partir de outro arquivo.m 
ou do Command Windows 
 Ex.: >> [y1, y2] = funcao(4,7); 
 
function [y1, y2] = funcao(u1,u2) 
 y1 = u1 + u2; 
 y2 = u1*u2 
end 
Funções em arquivos .m 
Formato: 
• function [output_args] = fct_name(input_args) 
Exemplo: 
1. Definir o diretório no “path” 
2. Criar arquivo “media.m” 
3. Escrever o código abaixo no arquivo “media.m” 
 
 
 
 
 
 
 
4. Executar na linha de comando (Command Window) 
» z = 1:99; 
» media(z) 
 
function y = media(x) 
 if ~isvector(x) 
 error('Input must be a vector') 
 end 
 y = sum(x)/length(x); 
end 
Funções em arquivos .m 
• As funções podem estar dentro de outra 
função 
• Ex.: Seja o arquivo “exemplo.m” 
 
 
 
 
 
 
 Ex.: >> valor = exemplo(4,7); 
 
function y = exemplo(u1,u2) 
 x1 = u1 + u2; 
 x2 = u1*u2; 
 y = media(x1,x2); 
 
 function saida = media(a,b) 
 saida = (a+b)/2; 
 end 
end 
Funções em arquivos .m 
• Funções podem não ter argumentos de entrada 
• Nested functions pode usar variáveis que não são 
explicitamente usadas como argumentos de entrada 
 
 
 
 
 
 
 
 
 
 Ex.: >> valor = exemplo 
 
function y = exemplo %parent function 
 
 u = rand(1,2); 
 x1 = u(1) + u(2); 
 x2 = u(1)*u(2); 
 y = media; 
 
 function saida = media %nested function 
 saida = (x1+x2/2); 
 end 
 
end 
Exemplo: variáveis globais 
function [y1,y2] = minhafuncao(x1,x2) 
 
global a % variável global que pode ser utilizada em outras instâncias do código 
a = 3; 
 
y1 = x1*x2 + a; 
y2 = x1 + novafuncao(x2); 
 
% é possível criar uma função dentro de um função 
function y = novafuncao(u) 
 
global a 
y = 10*u + a; 
Criar arquivo minhafuncao.m com o seguinte código: 
Executar função ‘minhafuncao’ em novo arquivo .m ou no Command Window: 
[saida1,saida2] = minhafuncao(2,3) 
Laços 
The ‘for’ loop: 
 
for ‘counter’ 
 (statements) 
end 
 
The ‘while’ loop: 
 
while ‘conditional statement’ 
 (statements) 
end 
 
The ‘if’ statements: 
if ‘variable’ ‘conditional statement’ constant 
 (statements) 
 elseif ‘variable’ ‘conditional statement’ constant 
 (statements) 
 else 
 (statements) 
end 
Relações 
Operadores relacionais: Operadores lógicos: 
Obs.: ‘=’ atribui valor e ‘==’ estabelece uma relação. 
a = 5; b = 2; 
if a == 5 & b == 2 
 display(‘Acertou!'); 
end 
Laços 
for i=1:10 
 if i <= 5 
 c(i)=i+1; 
 elseif i < 7 
 c=[c i]; 
 else 
 c=c.^2; 
 end 
end 
 
method = 'Bilinear'; 
 switch lower(method) 
 case {'linear','bilinear'} 
 disp('Method is linear') 
 case 'cubic' 
 disp('Method is cubic') 
 otherwise 
 disp('Unknown method.') 
 end 
test=zeros(3,3); 
k=0; 
for i=1:10 
 while k == 0 
 test=test+eye(3); 
 if trace(test) < 20 
 k=0; 
 else 
 k=1; 
 end 
 end 
end 
 
Obs.: ‘=’ atribui valor e ‘==’ é uma relação. 
a = 5; 
if a == 5 
 display(‘a vale 5'); 
end 
Observação 
Método 1: versão com laço 
 
x=0; 
for i=1:1000 
 y(i)=log10(x); 
 x=x+0.01; 
end 
 
 
 
Método 2: versão vetorial 
 
x=0:0.01:1000; 
y=log10(x); 
 
• Prefira Método 2 ao 
Método 1. 
Exercício 3 
Implementar: 
1. Define two functions in a file named stat2.m, where the first function calls 
the second. 
function [m,s] = stat2(x) 
n = length(x); 
m = avg(x,n); 
s = sqrt(sum((x-m).^2/n)); 
end 
 
function m = avg(x,n) 
m = sum(x)/n; 
end 
Function avg is a local 
function. 
Local functions are only 
available to other 
functions within the 
same file. 
Call function stat2 from 
the command line. 
 
 
values = [12.7, 45.4, 98.9, 26.6, 53.1]; 
[ave,stdev] = stat2(values) 
2. Adicione uma estrutura “if” para executar código se x tem dimensão maior igual a 2 
3. Implementar o comando “sum(x)” utilizando a entrutura de loop “for” 
Execute no 
Command 
Window: 
Sistemas de controle 
 
 
Função de transferência: 
» num=[1 1]; den=[4 2 1]; G=tf(num,den); 
Formato zero-polo-ganho: 
» Gzpk = zpk(G); [num, den]=zp2tf (z,p,k) 
Sistemas com atraso no tempo: 
» s = tf('s'); Gd = 2*exp(-1.5*s)/(3*s +1) 
Descrição no espaço de estados: 
» [A,B,C,D] = tf2ss(num,den); sys = ss(A,B,C,D); 
Pólos e zeros de G(s): 
» poles=roots(den); %ou poles2=pole(G); [Z,K]=zero(G); 
Sistemas de controle 
Sistemas de controle 
• Resposta ao degrau: 
num=[2 1]; den=[4 2 1]; sys=tf(num,den); 
step(sys); %ou t=0:0.1:20; y=step(sys,t); plot(t,y) 
•Degrau de amplitude A: step(A*sys); Resp. impulso: impulse(sys) 
• Resposta a entrada arbitrária: 
t=0:0.1:20; u=2*exp(-0.5.*t); y=lsim(sys,u,t); plot(t,y); 
y=lsim(sys,u,t,x0); %resp. a entrada u e cond. inicial x0 (sys em ss) 
• Resposta em frequência: 
bode(sys); [Gm,Pm,Wcg,Wcp] = margin(sys) 
• Lugar das raízes: rlocus(sys) 
• Atraso no tempo: 
s=tf('s'); G = (2*exp(-0.52*s))/(10*s+1); 
[n d]=pade(0.52,2); %aproximação de Padé de ordem 2 
• Outros: zpkdata; pzmap; rlocus, bode, margin; ltiview; c2d; d2c; 
printsys(num, den,‘s’) 
 
Exercício 4 
Seja 
 
 
 
 
1. Expanda F(s) em frações parciais e determine a transformada inversa de Laplace. 
2. Ache os pólos, zeros e o ganho de F(s). 
3. Plote a resposta ao degrau de amplitude 2 de F(s). 
4. Plote a resposta de F(s) à entrada r(t)=exp(-0.7*t). 
5. Plote o diagrama de Bode e encontre as margens de fase e de ganho de F(s). 
6. Plote o Lugar Geométrico das Raízes de F(s). 
7. Forneça a representação no espaço de estados de F(s). 
8. Para a representação no espaço de estados plote a resposta à condição inicial 
x0=[1 2 3 4]’ 
9. Para a representação no espaço de estados plote a resposta ao degrau unitário e 
a x0=[1 2 3 4]’. 
 
Conexões de modelos 
Comando Descrição 
feedback Feedback connection of two models 
connect Block diagram interconnections of dynamic systems 
sumblk Summing junction for name-based interconnections 
series Series connection of two models 
parallel Parallel connection of two models 
append Group models by appending their inputs and outputs 
blkdiag Block-diagonal concatenation of models 
imp2exp Convert implicit linear relationship to explicit input-output relation 
inv Invert models 
lft Generalized feedback interconnection of two models (Redheffer 
star product) 
Exemplo: 
G = (2*exp(-0.5*s))/(s^2 + s + 1); Gpi = 0.1/s; Gma = Gpi*G; 
Gmf = feedback(Gma,1); step(Gmf) 
http://www.mathworks.com/help/control/ref/feedback.html
http://www.mathworks.com/help/control/ref/connect.html
http://www.mathworks.com/help/control/ref/sumblk.html
http://www.mathworks.com/help/control/ref/series.html
http://www.mathworks.com/help/control/ref/parallel.html
http://www.mathworks.com/help/control/ref/append.html
http://www.mathworks.com/help/control/ref/blkdiag.html
http://www.mathworks.com/help/control/ref/imp2exp.html
http://www.mathworks.com/help/control/ref/inv.html
http://www.mathworks.com/help/control/ref/lft.html
Exercício 5 
1. Plotar a resposta ao degrau de 
𝐺 𝑠 =
3𝑒−2𝑠
10𝑠 + 1
 
 
2. Seja as funções de transferência de um processo G(s),um transmissor 
H(s) e um controlador de realimentação C(s) 
𝐺 𝑠 =
3
10𝑠+1
 , H 𝑠 =
1
2𝑠+1
 , C 𝑠 = 0.2( 1 +
1
5𝑠
) 
 
Forneça 
1. Resposta ao degrau de amplitude 2 do sistema em malha fechada 
2. Resposta a entrada u=2*sin(-0.5.*t), 0<t<20, do sistema em malha 
fechada 
3. Resposta do sistema em malha fechada a condição inicial x0 = 15 
(sistema descrito no espaço de estados). 
Comandos recomendados: 
• tf, feedback, step, lsim, tf2ss 
Simulando e.d.o’s no Matlab 
Resolvendo edo’s: 
• Arquivo 
“edo_solve.m” 
criado 
• Se as funções 
estiverem em 
arquivos distintos 
parâmetros 
devem ser 
passados com 
argumentos de 
entrada ou 
variáveis globais 
function edo_solve 
[R, A, Fe] = deal(0.6,2,10); %parâmetros 
h0 = 10; T = [0 200]; %cond. tnicial e tempo sim. 
[t,H] = ode45(@dhdt,T,h0); %resolvendo a edo 
plot(t,H); grid %plotando a edo 
title('Respota cond. inicial e entrada'); 
xlabel('t'); ylabel('h(t)'); 
 
 % Definindo a edo 
 function dh = dhdt(t,h) 
 dh = (vazao-(sqrt(h)/R))/A; 
 
 % Sinal de entrada que varia com o tempo 
 function v = vazao 
 if t < 120 
 v = Fe; 
 else 
 v = 0.5*Fe; 
 end 
 end 
 end 
end 
Arquivo “edo_solve.m”: 
Simulando e.d.o’s no Matlab 
Considere a edo não-linear com entrada u: 
 
 
 
 
 Aplicar entrada u(t)=0.1, t < 0, e u(t)=2+0.5*sin(20*t) para t >= 10: 
x0 = [0 0.25]; 
TSPAN = [0 40]; 
[tempo,Xt] = ode23('dxdt',TSPAN,x0); 
% Plotando x1 e x2 
plot(t,Xt(:,1),'r',t,Xt(:,2),'b'); 
% Plotando sinal de entrada 
ti = TSPAN(1):0.01:TSPAN(2); 
for i = 1:length(ti) 
 if ti(i) > 10 
 u(i)=2+0.5*sin(20*ti(i)); 
 else u(i)=0.1; end 
end 
figure; plot(ti,u); 
function dx = dxdt(t,x) 
 
if t > 10, u=2+0.5*sin(20*t); 
else u=0.1; end 
 
dx1 = -x(1)*(1-x(2)^2)-x(2); 
dx2 = x(1) + u; 
dx = [dx1 dx2]'; 
Criar arquivo “dxdt.m”: 
Criar e executar arquivo “edononlinear.m”: 
Simulando e.d.o’s no Matlab 
Ex: 
options = odeset('RelTol',1e-4,'AbsTol',1e-9); 
[T,H] = ode45(@dhdt,[0 Tfinal],h0,options); 
[T,X] = ode23('dxdt',[0 40],[1 2],options); 
Linearização 
• Exemplo: 
% Sistema não-linear: dot{x} = f(x,u) 
syms x1 x2 u1 u2 
dx1 = -x1*(1-x2^2)-x2 + 1/u1; 
dx2 = sqrt(x1) + u1*u2; 
dx = [dx1; dx2]; 
% Matriz Jacobiana 
Aj = jacobian(dx,[x1 x2]); 
Bj = jacobian(dx,[u1 u2]); 
% Linearização em torno de 
% (x1bar,x2bar,u1bar,u2bar)= (1.2, 3.4, 5, 7) 
A = eval(subs(Aj,{x1,x2,u1,u2},{1.2,3.4,5,7})); 
B = eval(subs(Bj,{x1,x2,u1,u2},{1.2,3.4,5,7})); 
% Sistema linear: dxtil = A*xtil + B*util 
% xtil = x – xbar; util = u - ubar 
sys_ss = ss(A,B,eye(2),zeros(2)) 
G = tf(sys_ss) 
Simulink 
Simulando e.d.o’s no Simulink 
Biblioteca de Funções 
Funções usuais 
Simulando... 
Exporta variáveis 
para o Workspace 
do Matlab 
Scope: 
Simulando e.d.o’s no Simulink 
E.D.O 
Diagrama Simulink: 
 Condições iniciais definidas no bloco integrador. 
Simulando e.d.o’s no Simulink 
Simulando e.d.o’s no Simulink a partir 
do Matlab 
Processo em malha fechada 
• Degrau aplicado somente após processo estar em regime permanente (idealmente 
no ponto de operação em t = 0) 
• Condições iniciais (c.i) nos blocos de integração (c.i = ponto de operação) 
• Saída de uma função de transferência é nula em t=0 (variável de desvio) 
• Entrada da função de transferência: variável absoluta  variável de desvio 
• Saída da função de transferência: variável de desvio  variável absoluta 
• Saída do controlador 
• Soma-se o valor em regime permanente do sinal de controle 
• Em % na faixa entre 0 e 100% (bloco saturador para garantir faixa) 
• Adaptação do sinal de referência em função do ganho do transmissor 
• Variáveis de entrada e saída dos blocos do Simulink devem ter siginificado e 
unidade de engenharia conhecido 
Exercício 6 
 Simulação no Simulink 
 Linearização: comando jacobian 
Exemplo: 
>> syms x y z; 
>> A = jacobian([x*y*z; y; x+z],[x y z]); 
>> Ax = eval(subs(A,{x,y,z},{1,2,3})); 
Ajuda: exemplo edo no Matlab 
Considere a edo não-linear com entrada u: 
 
 
 
 
Solução: Criar e executar arquivo “exemplo.m”: 
Objetivo: 
 
 Aplicar entrada: 
u(t)=0.1, t < 0, e 
u(t)=2, para t >= 10: 
 
function exemplo 
 
x0 = [0 0.25]; 
TSPAN = [0 40]; 
[tp,X] = ode23(@dxdt,TSPAN,x0); 
% ou ode45('dxdt',[0 40],[1 2]); 
% Plotando x1 e x2 
ht = X(:,1); 
Tt = X(:,2); 
plot(tp,ht,'r',tp,Tt,'b'); 
hold on; fplot(@U,TSPAN,'k'); 
hold off; grid; 
 
 
 
 
 
 
 
 
 
 
 
 function dx = dxdt(t,x) 
 h = x(1); 
 T = x(2); 
 
 dh = -h*(1-T^2)-T; 
 dT = h + U(t); 
 dx = [dh; dT]; 
 end 
 function out = U(t) 
 if t < 10, out=0.1; 
 else out=2; end 
 end 
 end 
Bibliografia 
• Mathworks, http://www.mathworks.com/help/ 
• Kermit Sigmon, Matlab Primer, 3ª ed, 
http://www.math.toronto.edu/mpugh/primer.pdf 
• Rao V. Dukkipati, Matlab – An Introduction with Applications, Ed. 
New Age, 2010. 
• Mathworks, Matlab Primer, 
https://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf 
• C. A. Smith e A. Corripio, Príncipios e Prática do Controle 
Automático de Processo, 3ª. Edição, Ed. LTC, 2012. 
• Robinson, T.; Kambouchev, N., 16.06/16.07 Matlab/Simulink 
Tutorial, Massachusetts Institute of Technology, 
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-
2004/contents/study-materials/matlabtut.pdf 
• Apostila de Introdução ao MATLAB, Universidade Federal 
Fluminense, Centro Tecnológico, Escola de Engenharia, 
http://www.telecom.uff.br/pet/petws/downloads/apostilas/MATLA
B.pdf 
• Stephen J. Chapman, Essentials of MATLAB Programming, 2nd ed. 
• Michael G. Kay, Basic Concepts in Matlab, 2017 
 
 
http://www.mathworks.com/help/
http://www.math.toronto.edu/mpugh/primer.pdf
https://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf
https://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://dspace.mit.edu/bitstream/handle/1721.1/60691/16-07-fall-2004/contents/study-materials/matlabtut.pdf
http://www.telecom.uff.br/pet/petws/downloads/apostilas/MATLAB.pdf
http://www.telecom.uff.br/pet/petws/downloads/apostilas/MATLAB.pdf
http://www.telecom.uff.br/pet/petws/downloads/apostilas/MATLAB.pdf

Continue navegando