Beruflich Dokumente
Kultur Dokumente
DE UTILIZAÇÃO
DO MATLAB
INTRODUÇÃO AO MATLAB
REFERÊNCIAS BIBLIOGRÁFICAS
INTRODUÇÃO AO MATLAB
1. INTRODUÇÃO
3. TUTORIAL
7 8 9
Esta matriz pode ser definida como uma lista explícita de elementos separados por "," ou
"espaços em branco", envolvidos por "[ ]" e utilizando ";" para indicar o fim de cada linha.
A = 1, 2 , 3; 4 , 5, 6; 7 , 8, 9 ou A = 1 2 3; 4 5 6; 7 8 9
Uma outra forma de se definir esta matriz é escrever os elementos de cada linha,
separando as linhas com o comando <ENTER>.
A = 1, 2 , 3 A= 1 2 3
4 , 5, 6 ou 4 5 6
7 , 8, 9 7 8 9
Uma matriz pode também ser definida a partir de listas de operações, funções ou mesmo
outras matrizes.
B = −1. 3 sqrt ( 3) (1 + 2 ) * 4 / 5
C = B; 10 11 12
3.2 Expressões Numéricas e Aritméticas
10−308 a 10308
As expressões podem ser construídas utilizando os operadores aritméticos abaixo:
+ adição
- subtração
* multiplicação
/ divisão à direita
\ divisão à esquerda
^ potenciação
Exemplo:
d = 5 + 6*i
D = 1 2 ; 3 4 + i * 5 6; 7 8
Além das operações básicas soma, subtração e multiplicação, podem ser realizadas ainda
as seguintes operações:
E = 1: n E= 1 2 3 K n
O vetor pode ser criado com incrementos positivos e negativos, inteiros e fracionários.
Exemplos:
F = 1: 2:10 F= 1 3 5 7 9
G = 10: −3: 0 G = 10 7 4 1
H = 1: 0. 5: 3 H = 1 1. 5 2 2 . 5 3
FOR loops
for variável=expressão
declarações
declarações
end
WHILE loops
while variável=expressão
declarações
declarações
end
IF loops
if variável=expressão
declarações
elseif variável=expressão
declarações
else declarações
end
As expressões comparativas utilizadas podem ser do tipo = =, >, <, >=, <=, ~=.
1. INTRODUÇÃO
Modelos Matemáticos:
Função de Transferência:
Diagramas de Blocos:
Um diagrama de blocos de um sistema é uma representação das funções desempenhadas por
cada componente e do fluxo de sinais. Este diagrama indica a inter-relação que existe entre os vários
componentes.
Em um diagrama de blocos, todas as variáveis do sistema são ligadas às outras através de
blocos funcionais. O "bloco funcional", ou simplesmente "bloco" é um símbolo para a operação
matemática sobre o sinal de entrada para o bloco que produz a saída. As funções de transferência dos
componentes são usualmente indicadas nos blocos correspondentes, os quais são ligados por flechas
para indicar o sentido do fluxo de sinais. Note que o sinal pode passar somente no sentido da flecha.
Consequentemente, um diagrama de blocos de um sistema de controle indica explicitamente uma
propriedade unilateral.
Função de Transferência de Malha Aberta:
FUNÇÃO
X(s) DE Y(s)
TRANSFERÊNCIA
G(s)
FUNÇÃO
R(s) E(s) DE C(s)
+ TRANSFERÊNCIA
-
G(s)
Explo:
Seja a F. T. abaixo:
C ( s) 1 1
= = 3
R ( s ) s ( s + 2 )( s + 3) s + 5s 2 + 6 s
>> num=[1];
>> den1=[1 0];
>> den2=[1 2];
>> den3=[1 3];
>> den4=conv(den1,den2);
>> den=conv(den3,den4);
>> printsys(num,den,'s');
num/den =
1
-----------------
s^3 + 5 s^2 + 6 s
3. SISTEMA EM MALHA FECHADA COM REALIMENTAÇÃO UNITÁRIA
U (s+1) Y
+
- s(s+2)(s+3)
>>[numc,denc]=cloop(num,den,sign);
Explo:
num/den =
s+1
---------------------
s^3 + 5 s^2 + 7 s + 1
4. SISTEMAS REALIMENTADOS
U1 Y1
+ SISTEMA 1
-
Y2 U2
SISTEMA 2
>>[num,den]=feedback(num1,den1,num2,den2);
ou
>>[num,den]=feedback(num1,den1,num2,den2,sign);
Explo:
U1 60 Y1
+
- s(s+1)
Y2 U2
0,05
5. CONEXÕES DE SISTEMAS
U1 Y1 U2 Y2
SISTEMA 1 SISTEMA 2
>>[num,den]=series(num1,den1,num2,den2);
Exemplo:
Seja um sistema de controle de nível envolvendo dois tanques em série, onde as constantes de tempo
τ1=τ2=1
U1 1 Y1 U2 1 Y2
2,62τ1 s+1 0,38τ2 s+1
>> num1=[1];
>> den1=[2.62 1];
>> num2=[1];
>> den2=[0.38 1];
>> [num,den]=series(num1,den1,num2,den2);
>> printsys(num,den,'s');
num/den =
1
-------------------
0.996 s^2 + 3 s + 1
U1
Y1
SISTEMA 1
U Y
+
+
U2
Y2
SISTEMA 2
>>[num,den]=parallel(num1,den1,num2,den2);
Exemplo:
Seja um sistema de controle de nível envolvendo dois tanques em paralelo, onde as constantes de
tempo τ1=τ2=1
U1 1
Y1
2,62τ1 s+1
U Y
+
+
U2
1 Y2
0,38τ2 s+1
>> num1=[1];
>> den1=[2.62 1];
>> num2=[1];
>> den2=[0.38 1];
>> [num,den]=parallel(num1,den1,num2,den2);
>> printsys(num,den,'s');
num/den =
3s+2
-------------------
0.996 s^2 + 3 s + 1
Sistemas em Espaços de Estados:
num = [1 2];
den = [2.62 1 1];
[A,B,C,D] = tf2ss(num,den)
A = [0 1; -25 -4];
B = [1 1; 0 1];
C = [1 0; 0 1];
D = [0 0; 0 0];
[num1,den1] = ss2tf(A,B,C,D,1)
printsys(num1,den1)
UNIDADE II - ANÁLISE DE RESPOSTA TRANSITÓRIA E ESTACIONÁRIA
B(s)
H(s)
1
E ( s) = R ( s)
1 + G ( s) H ( s)
e ss = lim e ( t ) = lim sE ( s )
t→∞ s→ 0
Uma vez obtida a equação do erro na domínio "s", basta fazer a variável "s" tender para
zero. Como o MATLAB não trabalha com limites, usa-se a função polyval para atribuir o valor
zero à variável "s" da seguinte maneira:
>>pol=[a b c]
>>ess=polyval(pol,0)
Exemplo:
1
E ( s) = x R(s)
(6,9 s + 1)(1,03s + 1)
Para R(s) = 1/s (degrau unitário), e ss = lim e ( t ) = lim s 1/s 1/[(6.9s + 1) (1.03s + 1)] = 1
t→∞ s→ 0
>> ess=polyval(pol,0)
ess =
>>num=[a b c]
>>den=[d e f g]
A função step plota a curva de resposta para entrada a degrau unitário. Explo:
>>step(num,den)
Exemplo:
1
FT =
( 6, 9 s + 1)(1, 03s + 1)
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> step(num,den);
Caso o usuário deseje amostrar um intervalo específico, poderá usar a mesma função acrescida
de um vetor tempo.
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> step(num,den,t);
2.2 RESPOSTA A ENTRADAS QUAISQUER
Para simular a resposta do sistema a uma entrada qualquer usa-se a função lsim. Este tipo
de simulação requer a definição do vetor tempo e do valor da entrada. A entrada pode ser
representada por uma função qualquer. Por exemplo, uma função do tipo rampa:
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> u=t;
>> lsim(num,den,u,t);
2.3 RESPOSTA A ENTRADA DO TIPO IMPULSO
A função impulse permite simular a resposta do sistema para uma entrada do tipo
impulso. Explo:
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> impulse(num,den,t);
Função grid
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> step(num,den,t),grid;
Função title
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> step(num,den,t),title('Resposta a Degrau Unitario');
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> step(num,den,t),xlabel('Tempo em segundos'),ylabel('Amplitude de Resposta');
Tempo em segundos
Função subplot
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> t=0:50;
>> subplot(211),step(num,den,t),subplot(212),lsim(num,den,t,t);
>> subplot(111);
UNIDADE III - CRITÉRIOS DE ESTABILIDADE
Para se obter o gráfico de localização dos pólos e zeros do sistema no plano "s" utiliza-se a
função pzmap.
>> pzmap(num,den)
Exemplo:
k ( s 2 + 100)
FT =
s ( s + 2 )( s + 4 )
A função rlocus calcula e apresenta o gráfico do Lugar das Raízes completo usando como
parâmetros o numerador e o denominador da F.T. de malha fechada.
>> rlocus(num,den)
Exemplo:
A função rlocfind calcula o valor do ganho para um pólo do sistema em uma posição
qualquer. Caso o usuário deseje saber o valor ideal do ganho, o MATLAB assume o coeficiente de
amortecimento do sistema igual a 0.707.
Exemplo:
Para o pólo -2, qual é o valor ideal do ganho para um coeficiente de amortecimento do sistema igual
a 0.707
k=
0.4615
poles =
-6.3468
-0.0574 + 2.6960i
-0.0574 - 2.6960i
2. DIAGRAMA DE BODE
Uma F.T. senoidal pode ser representada por dois gráficos separados, um fornecendo o
módulo versus frequência e outro o ângulo de fase versus frequência. Um gráfico logarítmico ou
Diagrama de Bode consiste em dois gráficos: um deles é um gráfico do logarítmo do módulo de uma
F.T. senoidal; o outro é um gráfico do ângulo de fase; ambos são construídos em função da
frequência, esta em uma escala logarítmica.
A principal vantagem de usar gráfico logarítmico é que a multiplicação dos módulos é
convertida em uma adição.
>> [mag,phase,w]=bode(num,den);
>> magdb=20*log10(mag) % converte o módulo em decibéis
>> semilogx(w,magdb)
>> pause
>> semilogx(w,phase)
Exemplo:
>> num=[1 0 100];
>> den=conv([1 0],conv([1 2],[1 4]));
>> [mag,phase,w]=bode(num,den);
>> magdb=20*log10(mag);
>> semilogx(w,magdb);
>> semilogx(w,phase);
>> subplot(211),semilogx(w,magdb),subplot(212),semilogx(w,phase);
Para retornar a tela ao modo normal:
>> subplot(111);
3. DIAGRAMA DE NYQUIST
>> nyquist(num,den)
Exemplo:
Outro exemplo:
k ( s 2 − 4 s + 8)
FT =
( s + 2 )( s + 3)
>> p=3;
>> [k,poles]=rlocfind(num,den,p)
k=
6.0000
poles =
1.3571 + 2.4233i
1.3571 - 2.4233i
>> [mag,phase,w]=bode(num,den);
>> magdb=20*log10(mag);
>> semilogx(w,magdb);
>> semilogx(w,phase);
>> nyquist(num,den);
UNIDADE IV - SISTEMAS DISCRETOS
1. INTRODUÇÃO
2. MAPEAMENTO NO PLANO Z
H(z) = H(s)
s = 2 fs (z-1)/(z+1)
Explo:
[zd,pd,kd] = bilinear(z,p,k,fs)
Converte a partir dos zeros (z), pólos (p) e do ganho (k) do sistema analógico para o discreto. kd
é um escalar, fs é a frequência de amostragem dada em Hz.
[numd,dend] = bilinear(num,den,fs)
[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D)
num=[1];
den=[2 1 1];
fs=0.1Hz;
[numd,dend]=bilinear(num,den,fs);
printsys(numd,dend,’z’)
>> pzmap(num,den)
Exemplo:
1
FT =
( 6, 9 z + 1)(1, 03z + 1)
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> pzmap(num,den);
Exemplos:
>> num=[1];
>> den=conv([6.9 1],[1.03 1]);
>> n=100;
>> dstep(num,den,n);
>> t=0:40;
>> u=t;
>> dlsim(num,den,u);
>> dimpulse(num,den,n);
4. ANÁLISE DE ESTABILIDADE
Exemplo:
>> dnyquist(num,den,Ts);
UNIDADE V - TRANSFORMADA RÁPIDA DE FOURIER
1. INTRODUÇÃO
Exemplo:
x = [ 4 3 7 -9 1 0 0 0];
y = fft(x)