Escolar Documentos
Profissional Documentos
Cultura Documentos
TECNOLOGIA DA PARAÍBA
CAMPUS DE JOÃO PESSOA
Av. Primeiro de Maio, 720 – Jaguaribe
João Pessoa – PB CEP: 58015-430
Tel: (83) 3612-1200 – Fax: (83) 3612-1201
Guia de Experimento
1. INTRODUÇÃO
Neste módulo, será apresentado um breve guia sobre o Matlab/Scilab e sua
aplicação em sistemas em tempo discreto. Também foram inclusos discussões quanto ao
uso do Scilab, que é gratuito e uma maneira alternativa de estudarmos sobre Sistemas de
Controle. No futuro, implementaremos discussões com o Python, também gratuito e que
vem crescendo nos últimos anos.
Há três elementos básicos no Matlab/Scilab: números, variáveis e operadores.
Números: o Matlab pode trabalhar com números inteiros, reais, complexos e
outros, com relatividade facilidade. O número real 1,23 é representado por 1.23 (usar
ponto e não a vírgula, pois o Matlab foi desenvolvido no sistema britânico), enquanto 4,56
x 107 pode ser escrito como 4.57e7. O número complexo 5+i5 será representado por
5+i*5 ou 5+j*5. No Scilab, para números complexos, você deve escrever −4+7*%i.
Variáveis: a variável básica no Matlab é a matriz, ou um array. O Matlab
suporta matrizes multidimensionais.
Matrizes: São quatro tipos de matrizes:
Escalar: matriz 1x1. Ex: a = a11;
Vetor coluna: matriz Nx1 de um arranjo vertical de números.
x = [1 2 3] %é um vetor linha
y = [1; 2; 3] %é um vetor coluna
A = [1 2 3; 4 5 6; 7 8 9] %é uma matriz.
2. OPERAÇÕES DE MATRIZES
Adição e subtração de matrizes. As matrizes tem que ser de mesmo tamanho;
Matriz conjugada: conj(A);
Matriz transposta: cada linha vira uma coluna, e vice-versa. A_ = A';
Multiplicação por um escalar: ab => a*b;
ax, onde x é uma matriz => a*x
Multiplicação de vetores/matrizes: Se as matrizes são compatíveis, y = A*x,
onde o resultado é uma matriz com o número de linhas igual ao número da primeira
matriz, e o número de colunas é igual ao número de colunas da segunda matriz;
Operações elemento com matriz: usa-se o ponto (.) com a operação desejada,
ou seja, .*, ./ .
3. OPERAÇÕES DE INDEXAÇÃO
O Matlab/Scilab provê uma forma de manipulação de matrizes, usando o
operador (:). Por exemplo, x =[a:b:c], gera números de a com incrementos. Se
é negativo, então esta matriz é decrementada no sentido de para .
Outro uso do operador (:) é formar vetores coluna de um vetor linha ou de uma
matriz. O fragmento x =A(:) forma um vetor x coluna de A, pela concatenação de suas
colunas. Similarmente, x=A(:,3) forma um vetor x a partir da terceira coluna de A.
comando3
end
ou seja, o comando1 será executado se a condição1 for satisfeita. Se não, será passado
para o comando2, e finalmente, o comando3.
Um exemplo do uso
1
2 , 0 1
3
!
Obs: o número pi no Scilab deve ser escrito dessa forma: %pi, ou seja, no
exemplo do código acima e abaixo: sin(2*%pi*k*t). Não esqueçam de realizar a
mudança em relação ao pi, caso estejam usando o Scilab nos próximos exemplos.
4. GRÁFICOS
O Matlab e o Scilab provêm diversas funções para a criação de gráficos, desde
um simples gráfico bidimensional (2D) até gráficos mais complexos, com gráficos
multidimensionais coloridos. Um comando para criar gráfico 2D é o comando
plot(t,x), o qual gera um gráfico de valores em função de valores de . As matrizes
e devem ter o mesmo tamanho. Outras funções podem ser usadas, acrescentado
informações ao gráfico, tais como, xlabel e ylabel que são usados para colocar texto
nos eixos, e o comando title usado para prover um título.
OBS: Para escrever em Latex no Scilab, como nas funções xlabel, ylabel e title,
deve haver uma modificação, que é a utilização de um vetor de strings. Dessa forma, a
modificação seria para esse exemplo (você deve modificar para os demais exemplos):
title(['Gráfico de' '$sin(2{\pi}t)$'])
OBS: No Scilab, a função que pode substituir stem seria plot2d3. Nesse caso:
Hs = plot2d3(t,x); // existem outros parâmetros diferentes do Matlab.
Use o help do Scilab.
figure(3)
subplot(3,1,1) % três, linhas, uma coluna, primeiro gráfico
plot(t,x,'b'); % cria um gráfico com linha azul
subplot(3,1,2) % três, linhas, uma coluna, segundo gráfico
Hs = stem(t,x,'b','filled');
subplot(3,1,3) % três, linhas, uma coluna, terceiro gráfico
Hx = stairs(t,x,'b');
Obs: lembre-se que no Scilab, não existe a função stem e sim plot2d3. Veja o
comentário anterior.
6. TRANSFORMADA Z
Propriedade da convolução
Seja ( 2( ) 3( ) 4 e ( 3( ) 4( ) 5( ) 6. Para fazer
( ( ∗ (
x1=[2 3 4];
x2 = [3 4 5 6];
x3 = conv(x1,x2)
No Scilab, não existe a função deconv e sim pdiv, porém sua formação é
diferente. Além da declaração da variável para formar os polinômios (usaremos a
variável z), o polinômio precisa ser declarado da direita para a esquerda (da ordem
menor para a ordem maior). O resultado também é o mesmo, porém sua apresentação
difere do Matlab. Veja o exemplo com os mesmos polinômios anteriores.
z=poly(0,"z")
x3=24+38*z+43*z^2+34*z^3+17*z^4+6*z^5;
x1=4+3*z+2*z^2;
[x2,r]=pdiv(x3,x1)
7. TRANSFORMADA Z INVERSA
A função residue calcula a parte residual e os termos do polinômio de uma
função racional. Deste modo, [R,p,C]=residue(b,a), calcula os resíduos, polos e
termos diretos de / ( no qual dois polinômios 0 ( e ( são dados pelos vetores
e , respectivamente.
Similarmente, [b,a]=residue(R,p,C) com três argumentos de entrada e dois
argumentos de saída, converte a expansão em fração parcial em dois polinômios.
Exemplo: Considere a função de transferência
(
/ (
3( # 4( ) 1
Digite: num = [1 0]; den=[3 -4 1]; [R,p,C]=residue(num,den)
Resposta:
R =
0.5000
-0.1667
p =
1.0000
0.3333
C =
[]
O que fornece:
1/2 0,1667
/ ( #
(#1 ( # 0,333
N = 20;
for i = 1:N
if i<=2
y(i)=0;
u(i)=0;
else
u(3)=1; %%% resposta ao impulso
u(i) = 0;
y(i)= -0.7*y(i-1)-0.12*y(i-2)+0.2838*u(i-1)+ 0.1485*u(i-2);
end
end
plot(y)
Atividades pós-laboratório:
1 – Cada aluno desenvolverá o seguinte roteiro de experimento:
Dada uma função de transferência em z enviada ao grupo, façam os seguintes
procedimentos:
a) Por meio de frações parciais, calcule analiticamente e pelo Matlab, a
transformada z inversa. Também expresse a equação de diferença da função de
transferência;
b) Mostre o diagrama de polos e zeros da função de transferência, indicando o(s)
polo(s) e o(s) zero(s) do sistema;
c) Gere o gráfico dos 70 primeiros pontos da equação de diferença, aplicando à
entrada um degrau de amplitude igual a -1,30 e um impulso de amplitude
igual a +0,9;
d) Gere o gráfico da resposta ao degrau e a resposta ao impulso do sistema, com os
valores do item c, utilizando as funções dstep e dimpulse, comparando-as com
os gráficos do item c, em um mesmo gráfico, para cada.