73
Universidade Federal de Minas Gerais Departamento de Engenharia Eletrônica Disciplina: ELT064 - Oficina de Sistemas Dinâmicos Lineares Curso: Engenharia de Controle e Automação Professor: Daniel Furtado Leite Belo Horizonte Dezembro, 2012

Universidade Federal de Minas Gerais Departamento de ...danfl7/ELT064_Oficina_Sistemas_Dinamicos... · Federal de Minas Gerais (DELT/UFMG). A disciplina é optativa para o curso de

  • Upload
    vuanh

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Disciplina: ELT064 - Oficina de Sistemas Dinâmicos Lineares

Curso: Engenharia de Controle e Automação

Professor: Daniel Furtado Leite

Belo Horizonte

Dezembro, 2012

2

Prefácio

A disciplina Oficina de Sistemas Dinâmicos Lineares é ofertada semestralmente desde o

primeiro semestre de 2012 pelo Departamento de Engenharia Eletrônica da Universidade

Federal de Minas Gerais (DELT/UFMG). A disciplina é optativa para o curso de graduação em

Engenharia de Controle e Automação. Sua carga horária é de 30 horas/aula, as quais são

distribuídas ao longo de 15 semanas. Todas as aulas são realizadas em laboratório com auxílio

do software Matlab. Assume-se que os alunos tenham noções de algoritmos, álgebra matricial

e sinais e sistemas. Algum conhecimento anterior sobre teoria de controle é útil em algumas

partes do curso. De um modo geral, os alunos estão entre o 5º e o 7º semestre do curso de

graduação quando optam por cursar a presente disciplina. Além disso, em geral, os alunos

cursam a disciplina Teoria de Controle simultaneamente a esta disciplina.

O núcleo desta disciplina consiste de exercícios computacionais extraídos dos livros ‘Linear

Systems and Signals’, Bhagawandas P. Lathi, 2ª edição, New York: Oxford University Press,

2005; e ‘Modern Control Engineering’, Katsuhiko Ogata, 5ª edição, Prentice Hall (Pearson),

2010. Dado o caráter exploratório da disciplina tomei a liberdade de abordar assuntos que de

alguma forma são relacionados a sistemas dinâmicos lineares, mas que às vezes não são

explicitamente encontrados em referências bibliográficas tradicionais. Por exemplo, são

abordados conceitos de álgebra matricial convenientes para manipulação numérica em

Matlab. Similarmente, estudamos modelagem linear (regressão linear) de sistemas dinâmicos

não lineares a partir de dados experimentais. A ideia é explorar comandos em Matlab muitas

vezes requeridos em análise e projeto em software de sistemas de controle.

Agradeço aos Professores Bruno Otávio S. Teixeira e Alexandre R. Mesquita pelas sugestões

iniciais acerca da disciplina. Estas sugestões possibilitaram os primeiros esboços da estrutura

deste texto. Agradeço aos vários alunos das turmas do primeiro e segundo semestres do ano

de 2012 pelas sugestões e críticas ao final de cada etapa. Esta ‘retroalimentação’ me permitiu

acompanhar o progresso das turmas como um todo e melhorar algumas passagens do texto

com a inclusão de novos comandos em Matlab úteis para a resolução dos exercícios.

Ao final deste texto cito duas referências bibliográficas complementares que exploram uma

variedade de exercícios em Matlab. Não recorri a estas referências para produção deste texto.

Sem dúvida os exercícios encontrados nestas referências podem agregar informações

importantes. Aos alunos, deixo a sugestão para explorá-los nas próximas férias de verão. Aos

professores que por acaso encontraram este material didático na Web e queiram utilizá-lo em

cursos similares, peço o favor de enviar um e-mail para Daniel Leite <[email protected]>

informando a universidade e departamento a que pertencem.

Daniel Furtado Leite

DELT/UFMG

Belo Horizonte, Dezembro de 2012

3

Sumário

Apostila 00 .................................................................................................................... 04

Apostila 01 .................................................................................................................... 07

Apostila 02 .................................................................................................................... 13

Apostila 03 .................................................................................................................... 18

Apostila 04 .................................................................................................................... 23

Apostila 05 .................................................................................................................... 29

Apostila 06 .................................................................................................................... 34

Apostila 07 .................................................................................................................... 37

Apostila 08 .................................................................................................................... 42

Trabalho Intermediário ................................................................................................. 47

Apostila 09 .................................................................................................................... 51

Apostila 10 .................................................................................................................... 55

Trabalho Final ............................................................................................................... 60

Bibliografia .................................................................................................................... 73

4

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 00

1 – Considerações Iniciais O objetivo da disciplina Oficina de Sistemas Dinâmicos Lineares é familiarizar o aluno com algumas ferramentas de processamento de sinais e simulação e análise de sistemas dinâmicos no ambiente Matlab. Inicialmente a disciplina aborda uma revisão de comandos básicos em Matlab, muitas vezes usados em análise de sistemas. Ao longo do semestre são explorados diversos tópicos na direção sistemas dinâmicos e controle tais como: números complexos, conversão de coordenadas Cartesiana e polar, adição de sinais, funções simbólicas, raízes de polinômios, frações parciais, sistemas de 2ª ordem, transformadas, realimentação, diagrama de blocos, estabilidade BIBO, método de Routh, solução iterativa de equações diferenciais e de diferenças, representação em espaço de estado, amostragem, aliasing, filtragem e janelamento, diagramas de Bode, diagramas de Nyquist, entre outros. Espera-se que ao final do curso o aluno seja capaz de identificar quando e como aplicar as diferentes ferramentas de processamento de sinais e análise de sistemas dinâmicos em diferentes tipos de problemas. Espera-se ainda que o aluno entenda as possíveis limitações de modelos e simulações, assim como quais propriedades de um sistema dinâmico podem de fato ser inferidas e analisadas a partir dos modelos e simulações.

2 – Dinâmica do Curso A dinâmica adotada para as aulas do curso (2/2012) será a seguinte: O professor disponibilizará semanalmente via e-mail apostilas contendo (i) introdução ao assunto em questão, incluindo exemplos resolvidos; e (ii) exercícios computacionais a serem feitos individualmente pelos alunos. As apostilas serão disponibilizadas até Domingo às 23:59. Às Segundas-feiras, de 19:00 às 20:40, o laboratório 310 do CCE estará disponível para os alunos resolverem as listas de exercícios. O professor estará a disposição para auxiliar os alunos neste horário. Eventualmente, os alunos podem encontrar o professor no Laboratório de Sistemas Elétricos Industriais (sala 2508) fora do horário da aula para sanar dúvidas.

5

Apenas três aulas durante o semestre serão de presença obrigatória. São elas: a primeira aula do semestre, sendo uma aula introdutória a disciplina; e duas outras aulas (cujas datas serão confirmadas via e-mail ao longo do semestre) para orientações acerca dos trabalhos intermediário e final. Note que apesar de as demais aulas não serem obrigatoriamente presenciais, a presença em todas elas serão computadas conforme explicado mais adiante, ainda nesta seção. No tocante às listas de exercícios os alunos deverão retornar por e-mail os programas desenvolvidos e comentados até o Sábado seguinte às 23:59. Ou seja, o aluno terá seis (6) dias para entregar as listas de exercícios feitas. Caso os programas desenvolvidos requeiram alguma entrada não especificada, o aluno é responsável por enviar um arquivo texto juntamente com o programa explicando como rodar. Listas de exercícios entregues fora do prazo não serão corrigidas. Alguns dos exercícios propostos poderão ser resolvidos por simples analogia aos exemplos disponibilizados. Neste caso, comentários sobre os comandos utilizados deverão ser inseridos no código, e.g., comentários sobre parametrizações adicionais. Em outras palavras, o aluno deve entender o algoritmo e, quando pertinente, testar opções de parametrização conforme sugeridas no Help do Matlab. Alguns exercícios exigirão investigação de comandos não mencionados na apostila e análises. Estima-se que cada lista de exercícios possa ser resolvida no período de 100 minutos reservados para a aula. Os programas e arquivos gerados deverão ser colocados dentro de uma pasta com o nome do aluno e compactados antes de serem enviados por email para: [email protected]. O título do e-mail deve ser: ‘ELT064 Apostila X’. Os exercícios computacionais têm o propósito adicional de servir de controle de

frequência e permitir que o professor acompanhe o progresso da turma como um todo. Dessa forma será possível identificar os tópicos que deverão ser melhorados para os próximos semestres. É importante que o aluno entregue o trabalho no prazo, i.e., até sábado às 23:59, mesmo que incompleto, pois a frequência da aula da

segunda-feira imediatamente após depende da entrega. Cinco (5) dentre as quinze (15) aulas do curso são reservadas para o desenvolvimento dos trabalhos intermediário e final. Em particular, dúvidas a respeito destes trabalhos devem ser sanadas no horário de aula, pois, em geral, as dúvidas são as mesmas e as explicações prolongadas. Além disso, este procedimento assegura uma avaliação mais justa no sentido que todos os alunos recebem as mesmas informações/dicas.

3 – Avaliação A distribuição dos pontos da disciplina será a seguinte:

- Apostilas – 40 pontos (10 apostilas valendo 4 pontos cada) - Trabalho intermediário – 30 pontos - Trabalho final – 30 pontos

6

4 – Planejamento (estimativa)

Data Assunto Atividade

1 24/09/2012 Revisão de comandos elementares em Matlab; funções trigonométricas, escala em gráficos; raízes de polinômios; decomposição em frações parciais.

Apostila 00 e 01

Presença

Obrigatória

2 01/10/2012 Números complexos; conversão de coordenadas Cartesiana e Polar; adição de sinais; funções simbólicas.

Apostila 02

3 08/10/2012 Álgebra linear em Matlab. Apostila 03

4 15/10/2012 Resposta de entrada zero; sinais em tempo discreto; solução numérica de equações de diferenças.

Apostila 04

5 22/10/2012 Sistemas de segunda ordem; resposta ao impulso e ao degrau; análise transitória de sistemas subamortecidos.

Apostila 05

6 29/10/2012 Convolução; teorema da amostragem; aliasing e filtro anti-aliasing.

Apostila 06

7 05/11/2012 Diagrama de blocos; sistemas realimentados; estabilidade BIBO; método de Routh.

Apostila 07

8 12/11/2012 Resposta em frequência; diagrama de Bode; diagrama de Nyquist.

Apostila 08

9 19/11/2012 Aproximação linear e linear por partes de funções não lineares. Aprendizagem de máquina.

Definição Trabalho

Intermediário

Presença

Obrigatória 10 26/11/2012 (Continua) Aproximação linear e linear por partes de

funções não lineares. Aprendizagem de máquina. --

11 03/12/2012 Filtros passa-baixas, passa-altas; projeto de filtros via localização dos polos e zeros da função de transferência

Apostila 09

12 10/12/2012 Filtros passa-faixa e rejeita-faixa; projeto de filtros via localização dos polos e zeros da função de transferência.

Apostila 10

13 17/12/2012 Projeto de filtros FIR usando janelas. Definição Trabalho

Final

Presença

Obrigatória -- 24/12/2012 Feriado

-- 31/12/2012 Feriado

14 07/01/2013 (Continua) Projeto de filtros FIR usando janelas. --

15 14/01/2013 (Continua) Projeto de filtros FIR usando janelas. --

7

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 01 – Entrega entre 24/09 e 29/09 – 4 pontos

1 – Introdução Esta apostila apresenta alguns comandos básicos em Matlab para manipulação de vetores, matrizes e gráficos na direção sinais e sistemas. Introduzimos brevemente operações com números complexos, gráficos de funções trigonométricas, e escala em gráficos. Também abordamos raízes de polinômios e o método de decomposição em frações parciais.

2 – Comandos básicos em Matlab

Operações de adição, subtração, multiplicação, divisão e exponenciação podem ser realizadas usando os símbolos +, -, *, / e ^.

O MATLAB predefine i = j = √−1 como uma constante complexa. Por exemplo:

˃˃ z = -3-j*4 z = -3.000 – 4.000i

atribui a constante complexa –3–j4 à variável z. Os componentes real e imaginário de z podem ser obtidos usando o operador

real e imag. No MATLAB, a entrada para uma função é colocada entre parênteses após o nome da função:

˃˃ z_real = real(z); >> z_imag = imag(z);

Quando a linha termina com ponto e vírgula, a afirmação é avaliada, mas o resultado não é mostrado na tela. Isto pode ser útil quando se está calculando resultados intermediários. Embora não seja mostrado, o resultado z_real = -3 e z_imag = -4 são calculados e estão disponíveis para operações adicionais.

Existem várias formas de computar o módulo de uma quantidade complexa. A trigonometria afirma que z = –3 – j4, que corresponde ao triângulo -3-4-5, tem

módulo │z│= │–3 – j4│= ��−3�² +�−4�² = 5. O comando sqrt do MATLAB é uma forma de computar a raiz quadrada:

˃˃ z_mag = sqrt (z_real^2 + z_imag^2) z_mag = 5

8

No MATLAB, a maioria dos comandos com sqrt aceitam entradas de várias formas - incluindo constantes, variáveis e funções. De forma mais simples, o MATLAB computa o valor absoluto de uma variável z através do comando abs:

˃˃ z_mag = abs(z) z_mag = 5

Além da magnitude, z_mag, notações polares requerem informação de fase. O comando angle fornece o ângulo em radianos de um número complexo.

˃˃ z_rad = angle(z) z_rad = -2.2143

O MATLAB também fornece ângulo em graus: ˃˃ z_deg = angle(z)*180/pi z_deg = 126.8699

Note que a variável pi = � é pré-definida. Também é possível obter o ângulo de z usando a função arco-tangente com dois

argumentos, atan2, da seguinte forma: ˃˃ z_rad – atan2(z_imag,z-real) z_rad = -2.2143

O MATLAB suporta todos os complementos de funções trigonométricas, por

exemplo: cos, sin, tan, sec, csc, cot, acos, asin, atan, asec, asinh, atanh, asech, acsch, acoth. O MATLAB também tem suporte para argumentos complexos para qualquer função trigonométrica. Assim como no comando angle, as funções trigonométricas utilizam a unidade radianos.

Funções trigonométricas com argumentos de valores complexos podem contradizer o que sempre foi ensinado em matemática. Por exemplo, uma afirmação

comum é que │������│ ≤ 1. Enquanto isso é verdadeiro para � real, não é necessariamente verdadeiro para � complexo. Isto pode ser verificado usando:

˃˃ cos (j) ans = 1.5431

Da mesa forma, a afirmação de que é impossível obter o logaritmo de um número negativo é falsa em Matlab. Por exemplo, o valor principal de ���−1� que é ��, pode ser verificado pela equação de Euler. Logaritmos de base 10 e base exponencial são computados usando os comandos log10 e log, respectivamente. Por exemplo:

˃˃ log(-1) ans = 0 + 3.1416i

9

3 – Operações com vetores

Considere a criação de vetores linha com elementos reais. Para isto, a notação a:b:c é usada, sendo a o valor inicial, b o passo, e c o valor final. Por exemplo:

˃˃ k = 0:2:11 k = 0 2 4 6 8 10 ˃˃ k = 11:-10/3:0 k = 11.0000 7.6667 4.3333 1.0000

Se o tamanho do passo não é especificado, assume-se o passo igual a 1. Para visualizar uma solução particular de um vetor deve-se especificar um índice.

Por exemplo, o terceiro elemento de k é obtido a partir de: ˃˃ k(3) ans = 4.3333

Similarmente, o segundo e o terceiro elementos de k são obtidos a partir de: ˃˃ k(2:3) ans = 7.6667 4.3333

A representação por vetores nos permite criar e explorar rapidamente vários sinais. Por exemplo, considere uma senóide de frequência 10Hz descrita por ���� = ����2�10� + �6�. Dois ciclos da senóide são incluídos no intervalo 0 ≤ � ≤ 0.2. Um vetor � é usado para representar 500 pontos deste intervalo, i.e.:

>> t = 0:0.2/500:0.2-0.2/500;

Logo, a função ���� pode ser avaliada nesses pontos como segue: >> f = sin(2*pi*10*t+pi/6);

4 – Gráficos simples

O comando plot é uma maneira conveniente de visualizar dados. O gráfico da função ���� pode ser obtido a partir de:

>> plot(t,f);

Rótulos de eixos podem ser adicionados usando:

>> xlabel(‘t’); ylabel(‘f(t)’);

O comando title dá título ao gráfico.

O Matlab conecta pontos em um gráfico usando linhas sólidas como padrão. Se adicionarmos, por exemplo, o argumento ‘o’, temos cada dado representado por um círculo ao invés de linhas conectando os pontos.

10

>> plot(t,f,’o’);

Alguns comandos importantes para construção de gráficos tridimensionais são plot3, mesh, surf e contour3. A sintaxe para utilização desses comandos pode ser verificada acessando o Help do Matlab a partir dos comandos:

>> help plot3 >> help mesh >> help surf >> help contour3

ou acessando Help – Product help. Os comandos semilogx, semilogy e loglog operam como o

comando plot, mas usam escala logarítmica para os eixos das abscissas e ordenadas.

5 – Operações com matrizes

Dados valores inteiros �, �, e o vetor �. A função eye(m) cria uma matriz

identidade � x �. As funções zeros(m,n) e ones(m,n) criam matrizes � x � com elementos iguais a 0 e 1, respectivamente. A função diag(x) transforma o vetor � em uma matriz diagonal. Em geral, a criação de vetores e matrizes requer a especificação de cada um dos elementos.

Considere o vetor � = [100] e a matriz ", 3 x 2, cuja primeira coluna é [240]T, e a segunda coluna é [356]T. >> r = [1 0 0] r = 1 0 0 >> A = [2 3; 4 5; 0 6] A = 2 3 4 5 0 6

Vetores linha podem ser transformados em vetores coluna. O vetor coluna �pode ser obtido a partir do vetor linha � usando a operação de transposição: >> c = r’ c = 1 0 0

Podemos concatenar o vetor � e a matriz " usando o comando: >> B = [c A] B = 1 2 3 0 4 5 0 0 6

O elemento da primeira linha e segunda coluna de $ pode ser acessado através de:

11

>> B(1,2) ans = 2

Podemos ainda selecionar a segunda linha inteira de $ usando: >> B(2,:) ans = 0 4 5

O determinante e a inversa de uma matriz podem ser obtidos a partir dos comandos det e inv, respectivamente.

6 – Expansão em frações parciais

Existem várias técnicas para computar a expansão em frações parciais de uma função racional %��� = $���/"���. Uma situação comum em análise de sistemas dinâmicos em que precisamos expandir uma função racional em frações parciais é quando queremos obter a resposta no domínio do tempo contínuo a partir de uma função de transferência e da tabela de transformadas de Laplace. Em Matlab usamos a função residue, cuja forma básica é:

>> [R,P,K] = residue(B,A)

Os dois vetores de entrada $ e " especificam os coeficientes dos polinômios do numerador e denominador, respectivamente. O vetor ' contém os coeficientes de cada fração parcial; o vetor ( contém as raízes correspondentes de cada fração parcial. Para uma raiz repetida � vezes, as � frações parciais são ordenadas em potências ascendentes. Quando a função racional não é própria, o vetor ) contém os termos diretos que são ordenados em potências descendentes da variável independente.

Considere encontrar a expansão em frações parciais de: %��� = �* + ��+ − √8�- +√32� − 4

Note que é complicado obter o resultado desta expansão à mão. Em Matlab, podemos encontrar a solução fazendo:

>> [R,P,K] = residue([1 0 0 0 0 pi],[1 –sqrt(8) 0 sqrt(32) -4]) R = 7.8888 5.9713 3.1107 0.1112 P = 1.4142 1.4142 1.4142 -1.4142 K = 1.0000 2.8284

Escrito na forma padrão, a expansão em fração parcial de %��� é: %��� = � + 2.8284 + 7.8888� −√2 + 5.97130� −√212 + 3.11070� −√21- +0.1112� +√2

12

7 – Exercícios

1) Dado as matrizes " = 3 1 1 65 −2 1−8 2 −34 e $ = 3 2 9−5 −19 2 4.

a. Determine se " e $ são matrizes quadradas. PS.: O algoritmo deve ser válido para avaliar matrizes de quaisquer dimensões.

b. Quais elementos contêm o valor 2? c. Quais elementos contêm valores negativos?

2) Encontre as três raízes cúbicas de −1, 5- =−1 = �6�78279�, : inteiro. 3) Encontre as 100 raízes únicas de 5;<< =−1. 4) Encontre as soluções distintas de �� − 5�;.* = 2 + �2. Construa o gráfico da

solução no plano complexo. 5) Determine a expressão para uma senóide exponencialmente convergente

que oscila 3 vezes por segundo e cuja amplitude decresce 50% a cada 2 segundos. Trace o gráfico do sinal entre −2 ≤ � ≤ 2.

6) Trace os gráficos de: a. �;��� = '��2��=;8627�>� b. �2��� = ?��3−��;=627�>� c. �-��� = 3 − ?�0��;=627�>1

7) Trace o gráfico de ���� = cos��� ����20��. Escolha uma faixa para �. 8) Decomponha em frações parciais:

a. %��� = 6��+1����+4.46���+0.13� b. %��� = CD82C8-�C8;�E

Mostre as funções decompostas obtidas na janela de comando. PS.: Os comandos size, roots, syms, fprintf e solve podem ser úteis.

13

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 02 – Entrega entre 01/10 e 06/10 – 4 pontos

1 – Introdução Esta apostila estende as noções de números complexos e gráficos de funções trigonométricas vistas na apostila anterior. Introduzimos conversão de coordenadas e funções simbólicas em Matlab. Os exercícios exploram comandos relacionados.

2 – Números complexos e conversão de coordenadas

Um número complexo �F, H� ou F + �H pode ser representado graficamente por

um ponto cujas coordenadas Cartesianas são �F, H� em um plano complexo. Denotemos este número complexo I de tal forma que:

I = F + �H

Os números F (abscissa) e H (ordenada) referem-se respectivamente às partes real e imaginária de I. As partes real e imaginária de I podem ser expressas como: '�I = F ?�I = H

Números complexos podem ser expressos em termos de coordenadas polares.

Se ��, J� são as coordenadas polares de um ponto I = F + �H, então: I = F + �H = � cos J + �����J = ��cos J + ����J� A formula de Euler diz que: �6K = cos�J� + �����J�

Logo, números complexos podem ser expressos na forma Cartesiana F + �H ou na forma polar usando � e �J tal que: F = � cos J ; H = � sen J ; � = √F2 +H2; J = tan=; QRST

14

Note que � é a distancia do ponto I até a origem. Por esta razão, � é também chamado de magnitude (ou valor absoluto) de I e é denotado|I|. Similarmente, J é chamado de ângulo de I e é denominado de ∡I.

3 – Exemplos

1) Expresse o número 2 + �3 na forma polar. |I| = � = √22 +32 =√13 ∡I = tan=; Q-2T = 56.3o

Podemos escrever 2 + �3 = √13�6*W.-. Em Matlab, podemos converter os sistemas de coordenadas a partir dos

comandos cart2pol e pol2cart. Por exemplo:

>> [z_rad, z_mag] = cart2pol(2,3); >> z_deg = z_rad*(180/pi); >> disp([‘z_mag = ‘, num2str(z_mag),’; z_rad = ‘,num2str(z_rad),’; z_deg = ‘,num2str(z_deg)]); z_mag = 3.6056; z_rad = 0.98279; z_deg = 56.3099

Logo, I = 2 + �3 = 3.6056�6<.XY2ZX = 3.6056�6*W.-<XX[

2) Converta I = 4�=6E\] para a forma Cartesiana:

>> [z_real,z_imag] = pol2cart(-3*pi/4,4); >> disp([‘z_real = ‘,num2str(z_real),’; z_imag = ‘,num2str(z_imag)]); z_real = -2.8284; z_imag = -2.8284

Logo, I = 4�=6E\] =−2.8284 − �2.8284.

4 – Adição de senóides

Duas senóides de mesma frequência, mas de diferentes fases podem ser adicionadas para formar uma única senóide de mesma frequência. Este fato pode ser constatado a partir da identidade trigonométrica: ^ cos�5<� + J� = ^ cos J��� 5<� − ^ senJ��� 5<� = F���5<� + H���5<�

Onde F = ^ cos J; e H = −^ sen J. Consequentemente,^ = √a2 + b2; e J =tan=; QRST. A Figura 1 mostra que ^ e J são a magnitude e o ângulo, respectivamente,

de um número complexo F − �H. Em outras palavras F − �H = ^�6K. Para encontrar ^

15

e J, podemos converter F − �H para a forma polar. A magnitude e o ângulo do número polar resultante são ^ e J, respectivamente.

A adição de senóides de mesma frequência pode ser clarificada pelo uso de fasores que representam as senóides. Representamos uma senóide ^����5<� + J� por um fasor de comprimento ^ e ângulo J com o eixo horizontal. A senóide F���5<� é representada por um fasor horizontal de comprimento F (J = 0�, enquanto H���5<� = H cos �5<� − 2̀� é representada por um fasor vertical de comprimento H

e um ângulo de − 2̀ com a horizontal. A adição destes dois fasores resulta em um fasor

de comprimento ^ e ângulo J como mostrado na figura 1.

Figura 1 – Adição de fasores de senóides

5 – Exemplo

Expresse ���� = cos�5<�� − √3����5<�� como uma senóide única.

Neste caso, F = 1, H = −√3 e: ^ = a12 +�√3�2 = 2 J = tan=; Q√-; T = 60o

Logo, ���� = 2cos�5<� + 60�. A amplitude ^ e o ângulo J da senóide resultante são a

magnitude e o ângulo do número complexo 1 − �√3. Em Matlab:

>> a = 1; b = sqrt(3); >> [theta,C] = cart2pol(a,-b); >> theta_deg = (180/pi)*theta; >> disp(['C = ', num2str(C), '; theta = ', num2str(theta), '; theta_deg = ', num2str(theta_deg)]); C = 2; theta = -1.0472; theta_deg = -60

16

6 – Funções simbólicas

O Matlab usa objetos simbólicos para representar variáveis e expressões. Uma expressão simbólica é uma expressão que contém objetos simbólicos. Um objeto simbólico é uma estrutura de dados do tipo cadeia de caracteres (string).

O processamento simbólico é mais preciso que o processamento numérico visto que as operações com valores numéricos introduzem erros de arredondamento que se acumulam em operações sucessivas. Erros de arredondamento surgem porque a precisão numérica é limitada pelo número de dígitos utilizados em cada operação.

Objetos simbólicos são criados através dos comandos sym e syms:

>> sym(‘expressao’); >> syms x y z;

Para representar a expressão 2: + √5 = 1 fazemos:

>> e = sym(‘2*k + sqrt(5) = 1’);

Para criar uma variável simbólica � para a expressão b=cb=2 usamos:

>> f = (x+y)/(x-2);

Note que � é uma variável simbólica quando a expressão contém ao menos uma variável simbólica (definida previamente).

Convertemos um valor numérico ;8√*2 em uma constante simbólica � fazendo:

>> c = sym(‘(1+sqrt(5))/2’);

A variável simbólica � guarda a expressão, e não o seu resultado. A constante simbólica � pode ser reconvertida em um valor numérico a partir de:

>> double(c);

Usamos a função ezplot no seguinte formato ezplot (�, [F, H]� para criar o

gráfico de � = ���� no intervalo F < � < H. Por exemplo, para criar o gráfico da função seno no intervalo −2� < � < 2� usamos: >> ezplot(‘sin(x)’, [-2*pi, 2*pi]);

Para traçar uma nova curva no mesmo gráfico, e.g. a função cosseno, usamos o comando hold da seguinte forma: >> hold on >> ezplot(‘cos(x)’, [-2*pi, 2*pi]);

17

7 – Exercícios

1) Explore os comandos cart2pol e pol2cart. Escolha dois números complexos: I; (na forma Cartesiana) e I2 (na forma polar).

a. Converta-os e trace os respectivos gráficos usando compass. b. Determine I;I2.

c. Determine efeD. Mostre o resultado na janela de comando.

2) Trace apenas um gráfico para as funções �; = cos��� ����20��; �2 =cos��� ; e�- = ����20��. Considere faixa e amostragem pertinentes para a variável �. Use legenda e cores para discriminar as diferentes funções.

3) Considere �+ = cos��� ����20�� + �. Use o comando hpfilter com argumentos do lado esquerdo da igualdade. Trace a curva original e as curvas resultantes da filtragem. Comente o ocorrido.

4) Trace o gráfico de ���� = −3 cos�5<�� + 4����5<�� para um valor de 5< fixo e � variável. Comente o ocorrido. Obtenha a expressão equivalente de ����, conforme visualizada no gráfico.

5) Calcule o determinante, a inversa e o traço da matriz simbólica g =hF H� ij. PS.: Traço é a soma dos elementos da diagonal principal.

6) Definir uma função ���� simbólica de 4ª ordem e calcular suas derivadas de primeira e segunda ordem. Use os comandos diff e pretty.

7) Calcular as derivadas de 1ª ordem com relação à � dos elementos da matriz

simbólica g =k F� H�2��- il m.

8) Dada a função n��� = ��2 − 1��� − 2��� − 3�. Explore os comandos expand e factor. Comentar.

PS.: Os comandos hold on/off, legend, atan e trace podem ser úteis.

Apêndice Lista com alguns comandos úteis em computação simbólica

simplify: simplifica uma expressão simbólica collect: reescreve uma expressão como um polinômio subs: substitui uma variável por um valor int: integral (operação inversa da derivação diff) limit: limite de uma expressão taylor: expansão em série de Taylor poly2sym: converte os coeficientes de um polinômio em polinômio simbólico solve: solução simbólica de equações dsolve: solução simbólica de equações diferenciais

18

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 03 – Entrega entre 08/10 e 13/10 – 4 pontos

1 – Introdução Nesta apostila inicialmente exploramos Séries de Taylor em Matlab. Sob determinadas condições, sistemas não lineares podem ser linearizados em torno de um ponto de equilíbrio com boa precisão. Este procedimento é frequente em análise e controle de sistemas dinâmicos. Esta apostila também aborda tópicos isolados em álgebra linear que de alguma forma podem surgir na análise de sistemas dinâmicos particulares. Os tópicos incluem: inversão de matrizes, determinante, independência linear de vetores, autovalores, autovetores e normas.

2 – Série de Taylor

Sistemas lineares são ‘realmente’ lineares somente dentro de um intervalo limitado. Em geral, sistemas físicos, químicos, biológicos, ecológicos, etc. são não lineares, i.e., o princípio da superposição não se aplica a esses sistemas.

A operação normal de um sistema não linear pode variar em um intervalo em torno de um ponto de equilíbrio. Neste caso, o valor das variáveis envolvidas não varia significativamente. Note que podem existir várias situações em que a afirmação anterior não é válida. Entretanto, se um sistema não linear opera em torno de um ponto de equilíbrio é possível aproximar com boa precisão o comportamento do sistema não linear usando um modelo linear. Uma abordagem para linearização de uma função (sistema) não linear consiste em expandir a função em uma série de Taylor em torno de um ponto de equilíbrio e desprezar os termos de ordem maior ou igual a dois. Se os termos de ordem superior a primeira forem suficientemente pequenos teremos um ‘bom’ modelo linear. Seja: l = ���� A expansão em série de Taylor de � em torno do ponto ��̅, lp� é: l = ���� = ���̅� + i�i� �� − �̅� + 12!i2�i�2 �� − �̅�2 +…

onde as derivadas i�/i�, i2�/i�2, etc. são avaliadas em �� − �̅�.

19

Desprezando os termos de ordem igual ou maior que dois temos: l = lp + i�i� |bsb̅�� − �̅�

A relação anterior é linearização de ���� em torno de ��̅, lp�.

Seja, l = ���;, �2�

uma função não linear de duas entradas, �; e �2. Neste caso, a expansão em série de Taylor de � em torno do ponto ��;ppp, �2ppp, lp� é: l = ���;ppp, �2ppp� + k t�t�; ��; − �;ppp� + t�t�2 ��2 − �2ppp�m +

+ 12! u t2�t�;2 ��; − �;ppp�2 + 2 t2�t�;t�2 ��; − �;ppp���2 − �2ppp� + t2�t�22 ��2 − �2ppp�2v + ⋯

Desprezando os termos de ordem igual ou maior que dois e avaliando as

derivadas parciais de � em �; = �;ppp e �2 = �2ppp temos: l = lp + t�t�; |bfsbfpppp,bDsbDpppp��; − �;ppp� + t�t�2 |bfsbfpppp,bDsbDpppp,��2 − �2ppp�

A relação anterior é linearização de ���;, �2� em torno de ��;ppp, �2ppp, lp�.

Em Matlab, o comando taylor é usado para realizar as expansões acima.

3 – Produto interno e multiplicação ponto a ponto

Em Matlab, o operador ponto ( . ) realiza, por exemplo, multiplicação ou potenciação de vetores ou matrizes de mesma dimensão de forma pontual. Por exemplo, seja o vetor linha a = [1 2 3]:

>> a.*a >> ans = [1 4 9] >> a.^2 >> ans = [1 4 9]

Chamamos de produto interno uma função de dois vetores que satisfaz determinados axiomas. Seja a = b = [1 2 3] dois vetores linha. Em Matlab o produto interno de F e H é calculado a partir de:

>> dotprod = a*b' >> ans = 14

20

4 – Matriz inversa e determinante O comando inv é usado em Matlab para calcular a inversa de uma matriz. Para verificar se uma matriz $ é a matriz inversa de ", é suficiente mostrar que A*B=I e B*A=I, onde I é a matriz identidade (eye). O comando det é usado para calcular o determinante de uma matriz.

5 – Dependência linear

Dizemos que os vetores x;, x2, … , xysão linearmente dependentes se existe números reais z;, z2, … , zy, não todos nulos, tal que: z;x; + z2x2 +…+ zyxy = 0p Suponha que z; não seja nulo. Logo temos: x; = −z2z; xy −…− zyz; xy

Portanto, o vetor x; pode ser escrito como uma combinação linear dos vetores x2, … , xy. Os vetores x;, x2, … , xy são ditos linearmente dependentes. Por exemplo, os

vetores �1,1,1�, �1,1,2� e �2,2,3� são linearmente dependentes. Similarmente, os

vetores �1,1,1�, �1,1,2�, �2,2,3� e �0,0,1� são linearmente dependentes. Uma maneira

de verificar dependência linear é a partir do escalonamento de uma matriz contendo em

suas linhas os elementos dos vetores em análise. Se ao menos uma das linhas da matriz

for nula, então os vetores originais são linearmente dependentes.

Se a única forma de obter o vetor nulo 0p for tomar os coeficientes z;, z2, … , zy

iguais a 0, então os vetores x;, x2, … , xy são ditos linearmente independentes. Por

exemplo, os vetores �1,0,0�, �0,1,0� e �0,0,1� são linearmente independentes. Da

mesma forma, são linearmente independentes os vetores �1,1,1�, �1,2,2� e �1,2,3�. Se x;, x2, x- é um conjunto de vetores linearmente independentes, então o conjunto {x;, |x2, }x-, para todo {, |, ~, também é linearmente independente. Uma forma de

verificar independência linear de vetores é construir uma matriz contendo em suas

linhas os elementos dos vetores em análise. Se o determinante da matriz for diferente de

zero, então os vetores originais são linearmente independentes.

6 – Autovalor e autovetor

O comando eig computa os autovalores e autovetores de uma matriz ". Sua sintaxe é: >> [V,D] = eig(A);

Os autovalores de " são armazenados na diagonal principal da matriz �. Os autovetores associados aos autovalores são armazenados nas colunas da matriz �.

Considere $ =magic(n), onde magic é uma função que gera um quadrado mágico válido para todo � > 0, exceto para � = 2. O polinômio característico da matriz quadrada $ pose ser obtido de:

21

>> chpol = poly(B);

A variável chpol contem os coeficientes do polinômio característico da matriz $ em ordem descendente de acordo com a potência. Uma forma alternativa de se obter os autovalores de $ é calculando as raízes de chpol:

>> eigenvalues = roots(chpol);

7 – Norma

Nesta seção introduzimos distância e normas. Note que normas se aplicam a matrizes e vetores únicos. Logo, normas não são necessariamente vinculadas a noção de distância entre vetores e matrizes.

A distância entre dois vetores no espaço ℜ� é geralmente dada pela norma-2 ou distância Euclidiana – que é uma generalização do teorema de Pitágoras para mais de duas coordenadas e também a ideia intuitiva de distância. Outras medidas de distância, i.e., medidas baseadas em outras normas são algumas vezes consideradas.

Seja um vetor [�;, . . . , ��] e um vetor [5;, . . . , 5�]. A distância de Minkowski � de ordem n (norma-n) é definida:

� = �� |�� − 5�|���s; �;� , n ≥ 1

No caso especial em que n = ∞ (norma-infinito) tem-se:

� = ����→� ��|�� − 5�|���s; �;� =�F��|�; − 5;|, … , |�� − 5�|�

Além da norma-2, a norma-1 (distância de Manhattan) e a norma-∞ (distância de Chebyshev) são as mais usadas, sendo as demais raramente consideradas. Note que n não precisa ser necessariamente um número inteiro, podendo assumir valores reais, desde que não sejam menores que 1 segundo o teorema da inequação do triângulo para todos os espaços Euclidianos. Em Matlab, calculamos a norma de um vetor qualquer usando a função norm.

8 – Exercícios

1) Linearize a equação não linear I = �l no intervalo 5 ≤ � ≤ 7 e 10 ≤ l ≤ 12. Encontre o erro de aproximação quando � = 5 e l = 10.

2) Defina uma variável simbólica �. Encontre a expansão em série de Taylor de ���� = �b em torno do ponto 1,5. Construa apenas um gráfico contendo seis funções. São elas: a função original ���� e as séries de Taylor truncadas até os termos de 5ª, 4ª, ..., 1ª ordem. Comente o ocorrido. PS.: Escolha a escala do eixo das abscissas entre −3 e 3 para uma melhor visualização do gráfico.

22

3) Escolha uma função senoidal. Obtenha uma aproximação linear em torno de um ponto qualquer usando série de Taylor. Faça as suposições necessárias. Mostre as funções original e aproximada na janela de comando e em gráfico.

4) Declare uma variável simbólica :. Encontre os valores de : para os quais a

matriz " = �l� �1 :2 21 : −12 −1 0 � não é inversível.

5) Demonstre que i���" + $� ≠ i���"� + i���$� para matrizes a sua escolha. 6) Escreva uma função indeplin(varargin) que recebe um número arbitrário de

vetores de mesma dimensão e verifica se eles são linearmente independentes. 7) Seja " = pascal(n) a matriz de Pascal de ordem �.

a. Verifique se " é diagonalizável, i.e., se " tem autovalores distintos. b. Podemos reconstruir a matriz " a partir de seus autovalores diag(D)

e autovetores � fazendo " = ���=;. Esta operação pode ser calculada em Matlab a partir de V*D/V ou usando o operador inv. Verifique/Comente o tempo de execução nos dois casos para a matriz de Pascal " fazendo � = 5, 50, 500.

8) Calcule as normas 1, 2 e ∞ do: a. Vetor linha: [0. . . 10]. b. Quadrado mágico de dimensão 5.

Os comandos taylor, sym2poly, tic e toc podem ajudar.

23

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 04 – Entrega entre 15/10 e 20/10 – 4 pontos

1 – Introdução Esta apostila apresenta alguns comandos em Matlab usados em análise de sistemas dinâmicos. Consideramos análise da resposta de entrada zero de sistemas lineares invariantes no tempo. Introduzimos brevemente sinais em tempo discreto e apresentamos um método para solução iterativa de equações de diferenças. Os próximos trabalhos explorarão mais a respeito de ambos os assuntos.

2 – Resposta de entrada zero

A resposta de entrada zero de um sistema é a solução de uma equação diferencial linear quando a entrada é zero (equação diferencial homogênea), isto é:

��� + F;��=; + ⋯+ F�=;� + F��l<��� = 0 onde �� = i�li��

Note que a resposta do sistema é baseada apenas na condição inicial. Fisicamente, a condição inicial é associada à energia armazenada no sistema no instante inicial.

Uma solução para esta equação diferencial pode ser obtida sistematicamente ou a partir de raciocínio heurístico. A equação mostra que uma combinação linear de l<��� e suas � derivadas sucessivas é zero, para todo �. Tal resultado é possível se, e somente se, l<��� e suas � derivadas sucessivas forem da mesma forma. Caso contrário, sua soma não pode ser zero para todos os valores de �. Sabemos que apenas funções exponenciais ��> têm essa propriedade. Omitiremos a demonstração aqui.

3 – Exemplos

Encontre l<���, a componente de entrada zero da resposta de um sistema linear invariante no tempo descrito pela equação diferencial:

��2 + 3� + 2�l��� = �����

24

As condições iniciais são l<�0� = 0, l<� �0� = −5.

Note que l<���, sendo ���� = 0, é a solução de: ��2 + 3� + 2�l<��� = 0

O polinômio característico do sistema é �2 + 3� + 2. A equação característica do

sistema é �2 + 3� + 2 = �� + 1��� + 2� = 0. As raízes características do sistema são �; =−1 e �2 =−2. Consequentemente, a resposta de entrada zero é: l<��� = �;ℯ=> +�2ℯ=2>

Para determinar as constantes �;e �2 derivamos (1). Logo:

l�<��� = −�;ℯ=> − 2�2ℯ=2> Fazendo � = 0 em (1) e (2), e substituindo as condições iniciais l<�0� = 0 e l�<�0� = −5 temos que: 0 = �; +�2 −5 = −�; − 2�2

Resolvendo o sistema de equações encontramos: �; =−5;�2 = 5 Portanto, l<��� = −5ℯ=> +5ℯ=2>

é a componente de entrada zero de l���.

Um procedimento similar pode ser adotado quando temos raízes iguais. Seja o sistema especificado pela equação diferencial:

��2 + 6� + 9�l��� = �3� + 5�����

Queremos determinar l<���, a componente de entrada zero da reposta considerando as condições iniciais l<�0� = 3 e l� �0� = −7.

O polinômio característico do sistema é �2 + 6� + 9 = �� + 3�2. As raízes características do sistema são �; = �2 = −3. A resposta de entrada zero é dada por:

l<��� = ��; +�2��ℯ=-> Podemos encontrar as constantes arbitrárias �; e �2 a partir das condições iniciais l<�0� = 3 e l�<�0� = −7 seguindo o procedimento do exemplo anterior. Desta forma obtemos �; = 3 e �2 = 2. Logo, l<��� = �3 + 2��ℯ=-> � ≥ 0

(1)

(2)

25

Considere agora a resposta de entrada zero de um sistema linear invariante no tempo descrito pela equação diferencial:

��2 + 4� + 40�l��� = �� + 2�����

As condições iniciais são l< = 2 e l<� �0� = 16.78.

O polinômio característico é �2 + 4� + 40 = �� + 2 − �6��� + 2 + �6�. Neste caso as raízes características são −2 ± �6. A solução pode ser escrita tanto na forma complexa como na forma real. Na forma complexa temos l<��� = �;ℯ�f> +�2ℯ�D>, onde �; =−2 + �6 e �2 =−2 − �6. Sendo � = −2 e � = 6, a solução real é:

l<��� = �ℯ=2> cos�6� + J� � e J são constantes a serem determinadas a partir da condição inicial l<�0� = 2 e l�<�0� = 16.78. Diferenciando (3) temos

l�<��� = −2�ℯ=2> cos�6� + J� − 6�ℯ=2> sen�6� + J� Fazendo � = 0 em (3) e (4) e substituindo as condições iniciais obtemos: 2 = �cos J 16.78 = −2�cos J − 6����J Desenvolvendo o sistema de equações: �cos J = 2 �sin J = −3.463 Logo,

�2 = �2�2 +�−3.464�2 = 16 ⇒ � = 4

Dividindo ����J por ����J, temos: �F�J = −3.4632

e J = �F�=; �−3.4632 � −π3

Portanto, l<��� = 4�=2> cos Q6� −π3T

é a resposta de entrada de zero.

(3)

(4)

26

4 – Sinais em tempo discreto

Um sinal em tempo discreto é basicamente uma sequencia de números. Tais sinais surgem naturalmente a partir de situações como estudo de populações, problemas de amortização, localização em radar, etc. Sinais discretos podem surgir também a partir da amostragem de sinais em tempo contínuo, e.g., como resultado de filtragem digital. Tais sinais são denotados �[�], l[�], etc.; � é um valor inteiro, �[�] denota o �-ésimo termo da sequência rotulada por �.

Sistemas cujas entradas e saídas são sinais em tempo discreto são chamados sistemas em tempo discreto. Um computador digital é um exemplo de sistema discreto. Um sistema em tempo discreto processa uma sequência de números �[�] e produz outra sequência de números l[�] como saída.

5 – Exemplo em Matlab

Construa o gráfico dos seguintes sinais discretos: �S[�] = �−0.5��; �R[�] = �2�=�; ��[�] = �−2��

>> n = 0:10; >> x_a = (-0.5).^n; x_b = 2.^(-n); x_c = (-2).^n; >> subplot(3,1,1); stem(n,x_a,’k’); ylabel(‘x_a[n]’) >> subplot(3,1,2); stem(n,x_b,’k’); ylabel(‘x_b[n]’) >> subplot(3,1,3); stem(n,x_c,’k’); ylabel(‘x_c[n]’)

Figura 1 – Gráfico dos sinais �S[�], �R[�] e ��[�]

27

6 – Solução iterativa de equações de diferenças

Considere equações de diferenças expressas na seguinte forma: l[�] = −F;l[� − 1] − F2l[� − 2] − ⋯− F�l[� − �] + H<�[�] + +H;�[� − 1] + ⋯+ H��[� − �] Note que l[�] é calculado a partir de 2� + 1 termos, i.e., a partir dos � valores anteriores da própria saída l[�] e � valores anteriores e o valor atual da entrada �[�]. Inicialmente, para computar l[0], as � condições iniciais l[−1], l[−2], …, l[−�] são usadas como valores anteriores da saída. Sabendo as � condições iniciais e a entrada, podemos determinar as saídas l[0], l[1], l[2],... iterativamente.

7 – Exemplo

Resolva iterativamente: l[�] − 0.5l[� − 1] = �[�]

As condições iniciais são l[−1] = 16 e entrada causal �[�] = �2 (começando em � = 0). Esta equação pode ser expressa como l[�] = 0.5l[� − 1] + �[�]. Se fizermos � = 0 obtemos: l[0] = 0.5l[−1] + �[0] = 0.5�16� + 0 = 8 Fazendo � = 1 e usando o valor de l[0], temos: l[1] = 0.5�8� + �1�2 = 5 Em seguida, � = 2 e l[2] = 0.5�5� + �2�2 = 6.5 O procedimento pode ser repetido iterativamente: l[3] = 0.5�6.5� + �3�2 = 12.25 l[4] = 0.5�12.25� + �4�2 = 22.125

8 – Exercícios

1) Encontre à resposta de entrada zero de um sistema linear invariante no tempo descrito por �� + 5�l��� = ���� se a condição inicial é l�0� = 5. Explore o comando dsolve.

2) Resolva ��2 + 2��l<��� = 0, se l<�0� = 1 e l<� �0� = 4.

28

3) Trace o gráfico das seguintes funções: a. �[�] = �−1��

b. �[�] = cos�;̀2 � + +̀�.

Teste os comandos stem, stairs e bar. 4) Usando o método iterativo, encontre os primeiros três termos de l[�] para: l[� + 1] − 2l[�] = �[�] e condições iniciais l[−1] = 10, �[�] = 2,� = 0. 5) Usando o método iterativo, encontre os primeiros dez termos de l[�] para: l[� + 2] − l[� + 1] + 0.24l[�] = �[� + 2] − 2�[� + 1]. As condições iniciais

são l[−1] = 2,l[−2] = 1, �[�] = �,� = 0. Trace o gráfico resultante.

29

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 05 – Entrega entre 22/10 e 27/10 – 4 pontos

1 – Introdução Nesta apostila abordaremos análise da resposta transitória de sistemas de 2ª ordem. Consideramos resposta ao degrau e ao impulso de sistemas subamortecidos.

2 – Resposta transitória

A resposta l��� de um sistema linear a uma excitação x��� é constituída de dois componentes: componente transitório l>���� e componente estacionário lCC���. A resposta l��� de um sistema estável resulta da soma de l>���� e lCC���.

No domínio do tempo, a resposta transitória é a solução geral da equação diferencial homogênea do sistema, ou seja, considerando x��� = 0. A resposta forçada é a solução da equação diferencial completa (considerax���). A resposta forçada é essencialmente caracterizada pelo sinal de entrada x���.

No domínio da frequência o componente transitório é aquele que provém das frações parciais que contem os polos da função de transferência do sistema. A resposta forçada, por outro lado, é relacionada aos polos do sinal de entrada. Por exemplo, uma entrada do tipo degrau unitário se refere a um polo na origem; uma entrada em rampa acrescenta dois polos na origem.

3 – Representação de sistemas lineares em Matlab

A função de transferência ���� =  ���/¡��� de um sistema pode ser representada por dois vetores-linha. Os vetores-linha contêm os coeficientes do numerador e denominador de ���� com potências de s decrescentes, por exemplo:

>> num = [0 2 25]; >> den = [1 4 25];

Note que a ordem do polinômio do numerador de ���� é geralmente inferior a

ordem do polinômio do denominador. Se o numerador de ����é convenientemente completado com zeros, a dimensão dos vetores num e den é a mesma. Uma vantagem de acrescentar zeros é que os vetores num e den podem ser, por exemplo, somados ou multiplicados ponto a ponto diretamente.

30

Se num e den (o numerador e o denominador da função de transferência em malha fechada de um sistema) são conhecidos, comandos como:

>> step(num,den); >> step(num,den,t);

podem ser usados para gerar curvas de resposta ao degrau unitário de entrada.

4 – Sistemas de segunda ordem

O sistema: ���� = ¢�2s2 + 2ζ¢�s + ¢�2

é chamado sistema padrão de segunda ordem. Dado a frequência natural ¢� e o grau de amortecimento ζ do sistema, os comandos:

>> printsys(num,den); >> printsys(num,den,s);

imprimem num/den como uma relação de polinômios. Considere o caso em que ¢� = 5�Fi/� e ζ = 0,4. O Programa 1 em Matlab gera

o sistema de segunda ordem correspondente. Note no programa que num0 é igual a 1.

Programa Programa Programa Programa 1111

wn = 5;

damping_ratio = 0.4;

[num0,den] = ord2(wn,damping_ratio);

num = 5^2*num0;

printsys(num,den,’s’)

num/den =

25_____

s^2 + 4s + 25 O comando ord2 gera uma função de transferência. O comando tf(num,den) tem um propósito semelhante ao comando ord2 usado no Programa 1. Verifique.

5 – Resposta ao degrau

Considere o sistema definido pela função de transferência: ���� = 25s2 + 4s + 25

31

O Programa 2 gera a curva de resposta ao degrau unitário desse sistema.

Programa Programa Programa Programa 2222

% Resposta ao degrau unitário

% Numerador e denominador da função de transferência

num = [0 0 25];

den = [1 4 25];

step(num,den)

% Inserir grade e título do gráfico

grid on

title (‘Resposta ao degrau unitário de G(s) = 25/(s^2+4s+25)’) Em geral, o rótulo dos eixos � e l são determinados automaticamente. Se for

desejado rotular os eixos de modo diferente é necessário modificar o comando step. Por exemplo, se quisermos rotular o eixo � como ‘����’ e o eixo l como ‘Saída’, então devemos utilizar o comando com argumentos do lado esquerdo:

>> C = step(num,den,t)

ou, mais genericamente,

>> [y,x,t] = step(num,den,t)

Em seguida, o gráfico pode ser construído a partir do comando plot(t,y).

6 – Critérios de desempenho

As características de desempenho de um sistema são frequentemente especificadas em termos da resposta transitória a uma entrada em degrau unitário. A resposta transitória depende das condições iniciais do sistema. É uma prática comum considerar condições iniciais nulas, isto é, considerar o sistema em repouso.

Antes de atingir o estado estacionário, a resposta transitória pode apresentar oscilações amortecidas (sistema subamortecido). Observe que isto não se aplica a todos os casos, i.e., não se aplica a sistemas super e criticamente amortecidos.

Podemos definir certos critérios para avaliação de desempenho de sistemas de 2ª ordem subamortecidos. Considere os seguintes critérios: - Tempo de subida �C: tempo para que a resposta atinja o seu valor final (pela 1ª vez). Por definição: �C = 1¢¤ tan=; ¢¤−z = � − �¢¤

32

onde β é o ângulo entre o vetor ¢� e o eixo real do plano das frequências complexas, vide Figura 1; ¢¤ é a frequência do sistema com amortecimento.

Figura 1 – Definição do ângulo �

- Tempo de pico ��: tempo para que a resposta atinja o seu valor máximo. �� = �¢¤ - Máximo sobressinal g�: máximo valor da resposta do sistema menos o valor final. O máximo sobressinal ocorre no tempo de pico. Por definição:

g� = �=¦ §�;=§D¨`

- Tempo de acomodação �S�: tempo para que a resposta se estabilize em ±2% do valor final. �S� = 4σ = 4ζ¢� A Figura 2 ilustra a resposta de um sistema subamortecido dado um degrau unitário de entrada. A figura enfatiza os critérios de desempenho especificados acima.

Figura 2 – Resposta ao degrau unitário de um sistema subamortecido

33

7 – Exercícios

1) Seja ���� = ;<C8+ªD8+ª8+ a função de transferência de um sistema em malha

fechada. Usando Matlab, obtenha a resposta l��� quando aplicamos: a. um impulso unitário de entrada b. um degrau unitário de entrada

2) Considere o sistema de 4ª ordem definido por ���� = W,-2ªD8;YC8;2,Y;ª]8WªE8;;,-2ªD8;Yª8;2,Y;. Desenhe a curva de resposta ao degrau unitário desse sistema. Obtenha o tempo de subida, tempo de pico, máximo sobressinal e tempo de acomodação.

3) Considere o sistema de malha fechada definido por ���� = «¬DªD82§«¬ª8«¬D . Utilizando um loop for, escreva um programa para obter a resposta ao degrau unitário desse sistema para os seguintes casos:

a. ζ = 0,3 e ¢� = 1 b. ζ = 0,5 e ¢� = 2 c. ζ = 0,7 e ¢� = 4 d. ζ = 0,8 e ¢� = 6

4) Considerando a mesma função de transferência e entrada do exercício anterior, obtenha a resposta do sistema variando o valor de ζ para ¢� fixo em 1. Para quais valores de ζ o sistema é sub, super e criticamente amortecido?

5) Qual a função dos comandos tf2ss e ss2tf? 6) Analise/Comente o código:

>> num = [0 2 25]; >> den = [1 4 25]; >> [u,t] = gensig('square',20,100,.01); >> lsim (num,den,u,t)

Os comandos impulse, stepinfo e ginput podem ajudar.

34

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 06 – Entrega entre 29/10 e 03/11 – 4 pontos

1 – Introdução Nesta apostila são introduzidos conceitos sobre sistemas e sinais de tempo discreto. Particularmente, o enfoque é soma de convolução e teorema da amostragem.

2 – Sinais e sistemas em tempo discreto

Um sinal em tempo discreto é basicamente uma sequência de números. Sinais discretos surgem naturalmente como, por exemplo, em estudos populacionais, problemas de amortização, modelos financeiros e monitoramento de radar. Eles também podem surgir como resultado da amostragem de sinais de tempo contínuo e filtragem digital. Estes sinais podem ser denotados por �[�], l[�], etc., onde � é um valor inteiro, e �[�] é um número da sequência rotulada por �.

Sistemas cujas entradas e saídas são sinais de tempo discreto são chamados de sistemas em tempo discreto. Um sistema em tempo discreto processa uma sequência de números �[�]e produz outra sequência de númerosl[�] na saída.

3 – Convolução

Convolução é um operador matemático que essencialmente gera uma função a partir de duas outras funções. O conceito de convolução está ligado ao de média móvel e é crucial no estudo de sistemas lineares invariantes no tempo.

Sinais discretos podem ser representados por uma soma de impulsos: �[�] = ��[:]|[� − :] Como resultado das propriedades de invariância temporal e linearidade de um

sistema temos: - Sistema invariante: |[�] → ℎ[�] ⇒ |[� − :] → ℎ[� − :]

- Sistema linear: |9[�] = |[� − :] ⇒ ℎ9[�] = ℎ[� − :]

Logo, �[�] = ∑F9|9[�] ⇒ l[�] =∑F9ℎ9[�] Como F9 = �9 temos:

35

l[�] = � �[:]ℎ[� − :] = �[�] ∗ ℎ[�] onde ∗ é o operador convolução.

4 – Propriedades da convolução

As propriedades da soma de convolução são similares às da integral de convolução. As propriedades de comutatividade, associatividade e distributividade valem, e são dadas como segue:

Comutatividade: �;[�] ∗ �2[�] = �2[�] ∗ �;[�]

Associatividade: �;[�] ∗ ��2[�] ∗ �-[�]� = ��;[�] ∗ �2[�]� ∗ �-[�] Distributividade: �;[�] ∗ ��2[�] ∗ �-[�]� = �;[�] ∗ �2[�] + �;[�] ∗ �-[�]

5 – Solução gráfica para a soma de convolução

Os passos para calcular a soma de convolução são análogos àqueles para calcular a integral de convolução. A soma de convolução de dois sinais causais, �[�] e °[�], é:

�[�] = � �[�]°[� − �]�ys<

Um procedimento gráfico sistemático para soma de convolução é o seguinte. Primeiro, traçamos o gráfico de �[�] e °[� − �] como funções de �. As funções �[�] e °[�] são as mesmas que �[�] e °[�] traçadas respectivamente como funções de �. A operação de convolução é realizada conforme o procedimento:

- Inverter °[�] em torno do eixo vertical �� = 0� para obter °[−�]. - Deslocar °[−�] por � unidades para obter °[� − �]. - Multiplicar �[�] e °[� − �] e adicionar todos os produtos para obter �[�].

6 – Teorema da amostragem

O teorema da amostragem especifica condições sob as quais um sinal contínuo pode ser completamente representado por uma sequência numérica.

Considere um sinal analógico, limitado em banda, que foi amostrado. O sinal analógico pode ser recuperado a partir de uma sequência finita de amostras se a taxa de amostragem for maior que 2%y amostras por segundo, onde %y é a maior frequência do sinal original. Ao contrário, se um sinal contiver uma componente, por

exemplo, de %y Hertz e as amostras forem espaçadas por ;2±² segundos, não é possível

recuperar o sinal original.

36

Note que o teorema da amostragem assume uma idealização do mundo real onde sinais são amostrados infinitamente. Um sinal limitado no tempo não pode ser perfeitamente limitado em banda. Entretanto, na prática temos uma boa aproximação.

Quando o sistema amostrado não satisfaz as condições do teorema de amostragem observamos um fenômeno chamado aliasing. Nesse caso, o sinal original contém frequências além da ‘frequência de Nyquist’. Qualquer componente do sinal maior que a frequência de Nyquist sofre aliasing e é projetada para uma gama de frequências mais baixas. Logo, as componentes serão incorretamente interpretadas.

Como solução para o fenômeno de aliasing podemos (i) aumentar a taxa de amostragem, ou (ii) usar um filtro passa-baixas para remover as componentes de alta frequência do sinal. O aumento da taxa de amostragem pode ser uma solução computacionalmente cara. Consequentemente, a solução usando filtros anti-aliasing para eliminar as frequências maiores que a de Nyquist é uma prática comum.

7 – Exercícios

1) Escolha funções discretas para demonstrar as propriedades de associatividade, comutatividade e distributividade da soma de convolução.

2) Use o Matlab para computar e traçar o gráfico de �[�] ∗ °[�]: a.

b.

3) Explore comandos em Matlab relacionados ao fenômeno aliasing e filtro anti-

aliasing. Considere, por exemplo, senóides unidimensionais, taxas de amostragens acima e abaixo de 2%y. Faça as suposições necessárias. Varie parâmetros. Como ponto de partida, considere o seguinte código:

>> x_fine = linspace(-0.4, 10.4, 1000); >> x_coarse = linspace(0, 10, 11); >> y1 = sin(2*pi*0.9*(x_fine-0.5)); >> plot(x_fine,y1,'r'),hold on >> y2 = sin(2*pi*0.1*(x_fine-0.5)); >> plot(x_fine,y2,'g') >> y3 = sin(2*pi*0.1*(x_coarse-0.5)); >> plot(x_coarse,y3,'*')

37

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 07 – Entrega entre 05/11 e 10/11 – 4 pontos

1 – Introdução Esta apostila introduz comandos em Matlab para redução de diagramas de blocos. Os conceitos de realimentação e estabilidade BIBO são brevemente apresentados. Em seguida descrevemos o método de Routh para análise de estabilidade.

2 – Diagrama de blocos Sistemas de engenharia podem ser constituídos de um grande número de componentes. Pode ser quase impossível, por exemplo, analisar o diagrama do circuito de um rádio ou de um receptor de televisão de uma só vez. Nesses casos, é conveniente representar o sistema por meio de subsistemas interconectados. Cada subsistema pode ser caracterizado em termos de relações de entrada ³��� e saída  ���. Um sistema linear pode ser uma função de transferência ´���. A Figura 1 mostra diferentes diagramas de blocos de sistemas. Note que os subsistemas podem ser interconectados em série, em paralelo e em realimentação. Na figura observamos também que funções de transferência de subsistemas interconectados podem ser simplificadas em uma função de transferência única equivalente.

Figura 1 (a)-(b). Simplificação de diagramas de blocos elementares

38

Figura 1 (c)-(d). Simplificação de diagramas de blocos elementares Particularmente, quando a saída de um sistema é realimentada à entrada (Figura

1(d)), a função de transferência equivalente pode ser calculada da seguinte forma: µ��� = ³��� − ´��� ���

Temos que

 ��� = ����µ��� = ����[³��� − ´��� ���]

Portanto,  ���[1 + ����´���] = ����³���

e

 ���³��� = ����1 + ����´���

Desta forma, um sistema realimentado, como o da Figura 1(d), pode ser substituído

por um bloco único com função de transferência ¶�C�·�C� = ¸�C�;8¸�C�¹�C�.

39

3 – Exemplo em Matlab

Suponha as seguintes funções de transferência:

;́��� = �ºy;¤»�; e ´2��� = �ºy2¤»�2

Em Matlab, as possíveis associações entre as funções ;́ e ´2, conforme descritas na seção anterior, podem ser obtidas a partir dos comandos series, parallel e feedback, cuja sintaxe é:

>> [num,den] = series(num1,den1,num2,den2); >> [num,den] = parallel(num1,den1,num2,den2); >> [num,den] = feedback(num1,den1,num2,den2);

4 – Estabilidade BIBO

No projeto de sistemas de controle realimentados, três tipos de especificações de desempenho são usualmente empregados: (i) resposta transitória; (ii) erro em regime permanente; e (iii) estabilidade. Dentre estas, a estabilidade do sistema tem um papel fundamental. Se um sistema realimentado apresentar características de instabilidade, os requisitos de resposta transitória e erro em regime permanente se tornam critérios de desempenho de importância secundária. Embora existam muitas definições de estabilidade, a definição apresentada a seguir está relacionada a sistemas lineares invariantes no tempo.

Se a saída de um sistema linear invariante no tempo permanecer limitada para todo sinal de entrada limitado, o sistema é dito estável no sentido BIBO (Bounded

Input Bounded Output). Um sistema é instável se sua resposta cresce ilimitadamente quando o tempo tende a infinito. Além disso, um sistema é dito marginalmente estável se sua resposta oscila com amplitude constante quando o tempo tende a infinito.

Sob outra perspectiva, a BIBO-estabilidade está associada à localização dos polos da função de transferência no plano �. Se todos os polos estiverem no semiplano esquerdo, então o sistema é estável. A localização dos polos pode ser obtida a partir do cálculo das raízes do denominador da função de transferência. Um método para verificar estabilidade que dispensa o cálculo exato dos polos é chamado método de Routh-Hurwitz. Basicamente o método determina se um polinômio característico é um polinômio de Hurwitz, ou seja, determina se o sistema é estável.

5 – Método de Routh

O critério de Routh possibilita testar se um polinômio é ou não Hurwitz sem o cálculo

explícito de suas raízes. Se o polinômio é Hurwitz, o sistema é estável. Eis o

procedimento para teste de estabilidade absoluta de um sistema:

Passo 1) Escrever o polinômio característico da seguinte maneira:

F<�� + F;��=; +…+ F�=;� + F� = 0

40

onde os coeficientes F� são valores reais e F� ≠ 0 (i.e. as raízes nulas são removidas).

Passo 2) Se algum F� ≤ 0, � = 1,… , �, e, simultaneamente, ao menos um F� > 0, então o sistema é instável. Em outras palavras, todos os coeficientes do polinômio

característico devem ser positivos. Caso contrário, o sistema é instável e não há

necessidade de prosseguir. Note que este passo é necessário, mas não suficiente para

garantir estabilidade. Note também que no caso em que todos os coeficientes são

negativos, podemos multiplicar ambos os lados da equação característica por −1.

Passo 3) Organizar os coeficientes do polinômio em linhas e colunas de acordo com o

seguinte padrão:

��F<F2F+FW … ��=;F;F-F*FZ … ��=2H;H2H-H+ … ��=-�;�2�-�+ … ��=+i;i2i-i+ … ……………… �2�;�2 �;�; �<°;

O procedimento de formação das linhas da matriz de Routh continua até que se esgotem

todos os elementos. O número total de linhas é � + 1. Os coeficientes, H;, H2, etc. são calculados da seguinte forma:

H; = SfSD=S¼SESf ; H2 = SfS]=S¼S½Sf ; H- = SfS¾=S¼S¿Sf ; ...

O cálculo dos coeficientes H continua até que todos os elementos restantes sejam zero.

O procedimento para cálculo dos coeficientes �, i, �, etc é semelhante:

�; = RfSE=SfRDRf ; �2 = RfS½=SfRERf ; �- = RfS¿=SfR]Rf ; ...

i; = �fRD=Rf�D�f ; i2 = �fRE=Rf�E�f ; ...

Este procedimento continua até que a �-ésima linha seja completada. A matriz completa

de coeficientes é triangular.

O critério de Routh afirma que o número de raízes da equação característica com

parte real positiva é igual ao número de mudanças de sinal dos coeficientes da primeira

coluna da matriz. A condição necessária e suficiente para estabilidade é que todos os

coeficientes do polinômio característico e todos os coeficientes da primeira coluna da

matriz sejam positivos. Se o sistema é estável, o polinômio característico é Hurwitz.

Neste trabalho não consideraremos casos especiais que podem ocorrer durante o

desenvolvimento da matriz de Routh.

41

6 – Exercícios

1) Dadas as funções de transferência ;́��� = ;C82 e ´2��� = -C8+.

a. Conecte os modelos em série b. Conecte os modelos em paralelo c. Conecte os modelos em malha fechada, com ;́��� no ramo direto e ´2���

na realimentação d. Idem ao exercício 1c, mas considerando realimentação positiva e. Repita o exercício 1c sem usar o comando feedback

2) Baseado no sistema realimentado da Fig. 1(d) com ���� = ÀC�C8Y� e ´��� = 1,

determine a função de transferência para cada um dos seguintes casos: a. ) = 7 b. ) = 16 c. ) = 80 Comente a respeito da ‘resposta ao degrau unitário’ em cada um dos casos. Trace as respostas no mesmo gráfico usando plot e hold. Adicionalmente: d. Encontre a resposta à rampa unitária quando ) = 80. Note que a resposta

à rampa unitária é equivalente à derivada da resposta ao degrau unitário. 3) Comente sobre a estabilidade BIBO e a ordem dos sistemas realimentados:

a. ;́��� = ;C=; (ramo direto) e ´2��� = 2 (realimentação)

b. ;́��� = ÀC�C82��C8+� (ramo direto) e ´2��� = 1 (realimentação)

Para o caso 3(b) considere: ) = 10; ) = 50; e ) = 48. 4) Para quais valores de ) os seguintes polinômios característicos:

a. �+ + 2�- + �4 + )��2 + 9� + 25 = 0 b. ��� + 1��� + 2� + ) = 0

são polinômios de Hurwitz.

42

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 08 – Entrega entre 12/11 e 17/11 – 4 pontos

1 – Introdução Esta apostila apresenta brevemente diagramas de Bode e diagramas de Nyquist para análise de sistemas lineares invariantes no tempo em Matlab. Os exercícios propostos demandam exploração de assuntos relacionados.

2 – Resposta em frequência

O termo resposta em frequência se refere à resposta em regime permanente de um sistema a uma entrada senoidal. Os métodos de resposta em frequência foram desenvolvidos entre às décadas de 1930 e 1940 por Nyquist, Bode, Nichols e outros. Esses métodos são muito importantes nas teorias de controle clássico e controle robusto, provendo informações fundamentais para o projeto de controladores. Uma vantagem dos métodos de resposta em frequência é que seus testes são, em geral, simples e podem ser realizados com exatidão com auxílio de um gerador de sinais senoidais. Variamos a frequência do sinal de entrada e estudamos a resposta resultante. Além disso, esses métodos podem ser aplicados diretamente a dados experimentais, i.e., dados obtidos a partir de medições de sistemas físicos. Funções de transferência senoidais são funções complexas da variável ¢. Estas funções são caracterizadas por um módulo e um ângulo de fase; a frequência ¢ é um parâmetro independente. Dentre os métodos existentes para representação gráfica de uma função de transferência senoidal, apresentaremos na próxima seção o método conhecido como diagrama de bode ou gráfico logarítmico. A intenção é mostrar como obter diagramas de Bode em Matlab e não prover explicações detalhadas sobre o método. Similarmente, as seções seguintes exploram diagramas de Nyquist ou diagramas polares em Matlab. Para maiores explicações acerca de ambos os métodos, refira-se a qualquer livro tradicional de controle, como aqueles listados na Bibliografia.

3 – Diagrama de Bode

O comando bode em Matlab calcula o módulo e o ângulo de fase da resposta em frequência de sistemas lineares, invariantes e contínuos no tempo. Quando o comando bode é usado sem argumentos do lado esquerdo da igualdade, o Matlab gera o diagrama de Bode em gráfico. As possíveis sintaxes são:

43

>> bode(num,den) >> bode(num,den,w) >> bode(A,B,C,D) >> bode(A,B,C,D,w) >> bode(sys)

Ao contrário, se o comando contiver argumentos do lado esquerdo da igualdade: >> [mag,phase,w] = bode(num,den,w);

o comando bode retorna a resposta em frequência do sistema por meio das matrizes mag, phase e w. Particularmente, w se refere a frequências especificadas pelo usuário. O ângulo de fase, phase, é dado em graus; e o módulo, mag, deve ser convertido em decibéis a partir de:

>> magdB = 20*log10(mag);

A faixa de frequência sob consideração pode ser especificada a partir dos

comandos logspace(d1,d2) e logspace(d1,d2,n). O comando logspace(d1,d2) gera um vetor de 50 pontos igualmente

espaçados em escala logarítmica entre as décadas 10¤;e 10¤2. Por exemplo, para gerar 50 pontos entre as frequências 0,1 rad/s e 100 rad/s fazemos:

>> w = logspace(-1,2);

Já o comando logspace(d1,d2,n) gera � pontos igualmente espaçados

em uma escala logarítmica entre as décadas 10¤;e 10¤2. Por exemplo, para gerar 100 pontos entre as frequências 1 rad/s e 1000 rad/s fazemos:

>> w = logspace(0,3,100);

Para incluir pontos com frequências especificadas pelo usuário no traçado do

diagrama de Bode, o comando bode deve incluir o termo w do lado direito.

4 – Diagrama de Bode de sistemas definidos no espaço de estados

Considere o sistema definido por: �� = "� + $x l = ^� + �x onde � é o vetor de estado, l é o vetor de saída, x é o vetor de controle, " é a matriz de estado, $ é a matriz de controle, ^ é a matriz de saída, � é a matriz de transmissão direta. Podemos obter o diagrama de Bode desse sistema através do comando:

>> bode(A,B,C,D);

44

Este comando produz um diagrama de Bode para cada entrada. Já os valores de frequência são determinados automaticamente, e.g., são usados mais pontos quando a resposta do sistema estiver mudando rapidamente.

5 – Diagrama de Nyquist

Os diagramas de Nyquist, assim como os diagramas de Bode, são utilizados para representação da resposta em frequência de sistemas de controle com realimentação, lineares e invariantes no tempo. Os diagramas de Nyquist são diagramas polares, enquanto os diagramas de Bode são diagramas retangulares. Qualquer dos diagramas, de Bode ou de Nyquist, pode ser mais conveniente para certa situação, mas ambos podem ser empregados em quaisquer situações.

Fundamentalmente, o critério de Nyquist nos permite: (i) obter informação sobre a estabilidade absoluta do sistema, como o critério de Routh; (ii) indicar o grau de estabilidade ou quanto falta para um sistema se tornar estável (margens de ganho e de fase); (iii) obter informações sobre resposta em frequência; (iv) estudar sistemas com atraso de tempo; e (v) adaptá-lo para estudo de sistemas não lineares.

6 – Diagrama de Nyquist em Matlab

Em Matlab, o comando nyquist gera o diagrama de Nyquist de um sistema linear e invariante no tempo. Quando usado sem argumentos do lado esquerdo, o comando nyquist produz uma resposta gráfica.

Sendo sys o modelo do sistema dinâmico,

>> nyquist(sys)

desenha seu diagrama de Nyquist. Alternativamente, podemos fazer: >> nyquist(num,den)

onde num e den contém os coeficientes dos polinômios do numerador e denominador de uma função de transferência em ordem decrescente de �.

Em geral, o modelo sys pode ser contínuo ou discreto e de entrada única ou múltiplas. No caso de entradas múltiplas, o comando nyquist provê diversos diagramas de Nyquist; cada diagrama se refere à resposta de um canal entre a entrada e a saída. Os pontos de frequência são ajustados automaticamente pelo Matlab baseado nos polos e zeros do sistema. Alternativamente, nyquist(sys,w) pode ser usado para explicitar a faixa de frequências em radianos por segundo a ser considerada no traçado do gráfico. O comando logspace pode ser útil para gerar um vetor com frequências espaçadas logaritmicamente. O comando: >> nyquist(sys1,'PlotStyle1',...,sysN,'PlotStyleN')

45

superpõe vários gráficos de Nyquist de modelos lineares invariantes no tempo em uma mesma figura. Os sistemas devem ter o mesmo número de entradas e saídas. Quando usamos argumentos do lado esquerdo, por exemplo: >> [re,im,w] = nyquist(sys)

>> [re,im] = nyquist(sys,w)

e, inclusive,

>> [re,im] = nyquist(A,B,C,D)

onde ", $, ^, � são matrizes do modelo de estado: �� = "� + $x l = ^� + �x então, os argumentos re e im contém as partes reais e imaginárias correspondentes as frequências ¢.

7 – Exercícios

1) Construa o diagrama de Bode de módulo e fase de:

a. �S��� = 2*CD8+C82*

b. �R��� = X0CD8<,2C8;1C�CD8;,2C8X� no intervalo 0,01 ≤ 5 ≤ 1000

c. k��;��2m = h 0 1−25 −4j h�;�2j + h 025j x; l = [1 0] h�;�2j

O que podemos concluir comparando os diagramas de Bode das letras (a) e (c)? 2) Ressonância é um fenômeno que acontece quando um sistema recebe energia

por meio de uma excitação senoidal com frequência igual a uma de suas frequências naturais de vibração. Devido a superposição de senóides de mesma frequência, o sistema físico passa a vibrar com amplitudes cada vez maiores.

Considere %��� = ;<�C8;��C82��C8*� , um sistema em malha fechada.

a. O sistema %��� é estável? b. Qual o valor da frequência de ressonância de %���em radianos por

segundo? PS.: Analisar o diagrama de Bode de módulo. c. Qual o valor em decibel do pico de ressonância desse sistema? d. Sistemas estáveis em malha fechada, como o sistema %���, podem se

tornar instáveis devido à localização de seus polos e zeros e dadas faixas bem específicas de frequências de excitação. Como podemos eliminar o pico de ressonância do sistema %���?

3) Proponha uma função de transferência ���� de 3ª ordem que funcione como um filtro passa-baixas que corta frequências acima de 650 rad/s. Simule dois sinais senoidais de entrada de amplitude 1 e frequências 300 rad/s e 1000 rad/s. Trace os gráficos (senóides) de resposta. Comente o ocorrido. PS.: Uma sugestão é que os três polos de ���� sejam iguais.

46

4) Desenhe os diagramas de Nyquist de:

a. �S��� = ;CD8<,YC8;. Mostre o gráfico considerando os eixos real e

imaginário entre os valores de escala −2 e 2.

b. �R��� = ;C�C8;�. Escolha uma escala apropriada.

c. ����� = ;C�C8;�, considerando somente frequências positivas (5 > 0).

d. k��;��2m = h 0 1−25 −4j h�;�2j + h 025j x; l = [1 0] h�;�2j + [0][x] e. k��;��2m = h−1 −16,5 0 j h�;�2j + h1 11 0j x; l = h1 00 1j h�;�2j + h0 00 0j hx;x2j

Comente sobre a estabilidade desses sistemas. Os comandos tf, axis e grid podem ajudar.

47

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected]

Trabalho Intermediário – Entrega entre 26/11 e 01/12 – 30 pontos

1 – Introdução A proposta deste trabalho é desenvolver um modelo linear para aproximar uma função não-linear dentro de um domínio compacto. O modelo deve ser construído a partir de dados históricos e um algoritmo de adaptação de parâmetros.

2 – Força compressiva do concreto

A força compressiva de um material se refere à capacidade deste material em suportar

forças axiais. Quando o limite de força compressiva é atingido o material se rompe.

Quando concreto é usado como material em construções, é importante saber se ele irá

suportar as forças compressivas em seu entorno por motivos de segurança.

Testes de compressão medem o quão bem o concreto suporta pressões em seu

entorno. Geralmente, padrões de teste ignoram incertezas de diferentes naturezas.

Por exemplo: (i) a área seccional cruzada do material muda em função da carga

compressiva aplicada. Em outras palavras, o material tende a se espalhar lateralmente.

Logo, a área seccional cruzada tende a aumentar; (ii) testes de compressão prendem

as amostras de concreto pelas laterais. Consequentemente, uma força de fricção

variável surge se opondo ao espalhamento lateral (fenômeno barril); (iii) padrões de

teste de estruturas de concreto não consideram condições de temperatura e permite

que a densidade das amostras varie em torno de 2%.

O conjunto de dados ‘Concrete Compressive Strength’, disponível no site ‘UCI

Machine Learning Repository’ consiste de 1030 amostras de testes de compressão.

Cada amostra contém 9 variáveis sendo 8 variáveis de entrada e uma variável de saída ��;, �2, … , �Y, l�. As variáveis de entrada são os ingredientes do concreto e a idade da

mistura. Os ingredientes incluem: ‘cement’, ‘blast furnace slag’, ‘fly ash’, ‘water’,

‘superplasticizer’, ‘coarse and fine aggregate’. A variável de saída é a força compressiva

que o concreto suportou no teste.

48

3 – Aproximação linear

O problema de aproximação linear consiste em aproximar uma função geral por meio

da combinação linear das variáveis independentes, ou seja, por meio de uma reta.

No problema em questão procuramos uma função n do tipo:

lÁ = n��� = F< + F;�; + F2�2 + ⋯+ FY�Ypara aproximar a função ‘força compressiva do concreto’, �. A função � é conhecida

apenas por medições de ��;, �2, … , �Y, l� provenientes dos testes de compressão.

4 – Desempenho de modelos

A avaliação de desempenho de modelos deve levar em consideração o erro quadrado

médio µ entre a estimação lÁ�ℎ�e o valor real l�ℎ� obtido nos ensaios:

µ = Â1́ ��lÁ�ℎ� − l�ℎ��2¹Ãs;

Note que ´ = 1030 é o número total de amostras. Tanto os dados de entrada como

os dados de saída devem ser normalizados entre 0 e 1 antes de serem processados.

5 – Tarefa essencial (20pts)

1) Obter os dados do experimento a partir do site http://archive.ics.uci.edu/ml/;

2) Traçar o gráfico de ℎ × l�ℎ� para visualizar a função a ser aproximada;

3) Escolher dois métodos de ajuste de parâmetros de modelos lineares (sugestões

na Seção 7);

4) Implementar, analisar, discutir, comparar o desempenho dos dois métodos.

6 – Solução exemplo

A Fig. 1 ilustra uma solução obtida para o problema de aproximação da função ‘força

compressiva do concreto’. O gráfico superior mostra, em preto, os dados originais

obtidos a partir de testes de compressão; e, em verde, a aproximação obtida usando

um modelo linear por partes. Em outras palavras, a solução apresentada na figura

considerou a partição do conjunto de dados original em subconjuntos (clusters). Para

49

cada cluster existe um modelo linear cujos parâmetros foram obtidos a partir do

método ‘mínimos quadrados recursivo’.

A Fig. 1 mostra também a convergência do erro quadrado µ ao longo do

processo de adaptação de parâmetros. O gráfico inferior é um zoom do gráfico

superior na faixa [910,975]. Note que o eixo das abscissas se refere ao índice de tempo ℎ. Apesar da aproximanda (em verde) ser aparentemente não-linear, se pudéssemos

visualizar o espaço X×Y de 9 dimensões, poderíamos verificar que o modelo em

questão é linear por partes. Note também que o invólucro da solução, conforme

mostra os gráficos superior e inferior da Figura 1, pode ser desconsiderado para o

propósito deste trabalho.

Fig. 1 – Exemplo de solução para o problema de aproximação da função ‘força

compressiva do concreto’

7 – Métodos de adaptação de parâmetros

Os seguintes métodos de otimização são sugestões para serem empregados na tarefa

de ajuste dos parâmetros do modelo linear para minimização do erro quadrado:

50

1) Método do gradiente

2) Métodos Newtonianos

3) Método do gradiente conjugado

Variações dos algoritmos mínimos quadrados batelada e recursivo também podem ser

consideradas para ajuste de parâmetros. Alternativamente, um modelo ‘Perceptron’

de neurônio pode ser considerado; assim como uma rede neural MLP, desde que os

neurônios sejam lineares (purelin). O algoritmo ‘Pocket’ para armazenar a melhor

solução ao longo do processo de adaptação de parâmetros é uma variação

interessante. Um sistema de inferência fuzzy tipo Takagi-Sugeno também pode ser

considerado - apesar de que neste caso a solução é não-linear se houver sobreposição

de conjuntos. Algoritmos genéticos podem ser usados. Neste caso, a função erro

quadrado médio, µ, é a função de fitness a ser otimizada.

8 – Tarefa de exploração (10pts)

1) ‘Misturar’ as amostras antes de apresentá-las ao algoritmo de adaptação de

parâmetros e verificar se há melhoria de desempenho;

2) Desconsiderar variáveis de entrada ‘muito’ correlacionadas do conjunto de variáveis

original. Variáveis muito correlacionadas geralmente não ajudam a obter uma solução

melhor, pois trazem informação semelhante. Apenas uma das variáveis é suficiente.

Investigar ‘analise de autocorrelação’;

3) Obter novas variáveis, por exemplo, a partir: (i) da combinação das variáveis

existentes; (ii) de valores passados de alguma variável; (iii) da diferença entre o valor

atual de uma variável e a média dos valores passados; etc. Verificar se há melhoria de

desempenho;

4) Dividir o conjunto de amostras em partes (clusters) e gerar um modelo linear para

cada cluster. Investigar ‘técnicas de clusterização’.

51

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 09 – Entrega entre 03/12 e 08/12 – 4 pontos

1 – Introdução

Este trabalho apresenta o método da localização dos polos e zeros de uma função de transferência para o projeto de filtros. A resposta em frequência de um sistema depende fortemente da localização dos polos e zeros. Esta dependência provê um procedimento de projeto. Exploramos filtros notch como exemplo. Os exercícios exploram outros tipos de filtros que podem ser analisados de forma semelhante. Esta apostila deve ser trabalhada em conjunto com a Apostila 10.

2 – Filtro rejeita-faixa (Notch)

A resposta ideal em amplitude de um filtro rejeita-faixa (ver Figura 2(b)) é o complemento da resposta em amplitude de um filtro passa-faixa ideal (Figura 1(b)). Seu ganho é zero ao longo de uma pequena faixa centrada em alguma frequência ¢<; e é um nas demais frequências. A realização de tais características em um filtro requer um número infinito de polos e zeros. Vamos considerar um filtro notch de segunda ordem prático para obter ganho zero na frequência ¢ = ¢<.

Para este propósito, precisamos ter zeros em ± jω0. O requerimento de ganho unitário em ¢ = ∞ é que o número de polos seja igual ao número de zeros. Isto assegura que, para valores muito grandes de ¢, o produto da distância dos polos a partir de ¢ será igual ao produto da distância dos zeros a partir de ¢. Além disso, para termos ganho unitário em ¢ = 0 precisamos que um polo e o zero correspondente sejam equidistantes em relação à origem. Por exemplo, se usarmos dois zeros (complexos conjugados), devemos ter dois polos; a distância a partir da origem dos polos e dos zeros deve ser a mesma. Este requisito pode ser conseguido com o posicionamento de dois polos conjugados no semicírculo de raio ¢<, como ilustrado na Figura 2(a). Os polos podem estar em qualquer lugar no semicírculo para satisfazer a condição de equidistância.

Suponha que os dois polos conjugados estejam em ângulos ±θ com relação ao eixo real negativo. Lembre-se de que polos e zeros muito próximos tendem a se cancelar. Portanto, se posicionarmos os polos próximos dos zeros (selecionando θ próximo de �/2) teremos uma rápida recuperação do ganho em amplitude (de 0 a 1). Conforme afastamos os polos dos zeros em jω0 a recuperação do ganho em amplitude

é mais suave. A Figura 2(b) mostra o ganho │´��¢�│ para três valores diferentes de θ.

52

Fig. 1 – (a) Configuração de polos e zeros e (b) resposta em amplitude de um filtro

passa-faixa

Fig. 2 – (a) Configuração de polos e zeros e (b) resposta em amplitude de um filtro

rejeita-faixa

3 – Exemplo

Projete um filtro rejeita-faixa de segunda ordem para suprimir um hum (zumbido) de 60Hz em um receptor de rádio.

Usaremos os polos e zeros da Fig. 2(a) com ω0 = 120π. Os zeros estão em s = ± jω0. Os polos estão em −¢< ��� J ± �¢<���J. A função de transferência do filtro é (com ω0 = 120π):

´��� = �� − �¢<��� + �¢<��� +¢< ��� J + �¢<���J��� +¢< ��� J − �¢<���J�

53

= �2 +¢<2�2 +�2¢< ��� J�� + ¢<2 = �2 + 142122.3�2 +�753.98 ��� J�� + 142122.3 e │´��¢�│ = −¢2 + 142122.3��−¢2 + 142122.3�2 + �753.98¢ ��� θ�2

Quanto mais próximos os polos estão dos zeros (quanto mais próximo θ está de π/2), mais rápida é a recuperação do ganho de 0 a 1 em ambos os lados de ω0 = 120π. A Figura 2(b) mostra a resposta em amplitude para três diferentes valores de J. Este exemplo é um caso de projeto simples. Para conseguir ganho zero em uma faixa, precisamos de um número infinito de polos e de zeros.

4 – Exemplo em Matlab A função de transferência de um filtro Notch de segunda ordem é: ´��� = �2 +¢<2�2 +�2¢< ��� J�� + ¢<2 Usando ¢< = 2π60, trace o gráfico de amplitude para os seguintes casos:

a) JÆ = 60Ç b) JÈ = 80Ç c) JÉ = 87Ç

>> omega_0 = 2*pi*60; theta = [60 80 87]*(pi/180); >> omega = (0:.5:1000)'; mag = zeros(3,length(omega)); >> for m=1:length(theta) H = tf([1 0 omega_0^2],[1 2*omega_0*cos(theta(m)) omega_0^2]);

[mag(m,:),phase] = bode(H,omega); >> end >> f = omega/(2*pi); plot(f,mag(1,:),'k-',f,mag(2,:),'k--',f,mag(3,:),'k-.'); >> xlabel('f [Hz]'); ylabel('|H(j2/pi f)|'); >> legend('\theta = 60^\circ', '\theta = 80^\circ', '\theta = 87^\circ',0)

54

Fig. 3 – Resposta em amplitude para valores diferentes de θ

5 – Exercícios 1) Projete um filtro passa-faixa de segunda-ordem com frequência de centro ¢ = 10. O ganho deve ser zero em ¢ = 0 e em ¢ = ∞. Selecione polos em −F ± �10. Dê a resposta em termos de F. Explique a influência de F na resposta em frequência. 2) Trace a resposta em amplitude dos sistemas lineares invariantes no tempo cujos polos e zeros são mostrados na Figura 4. Qual é o tipo de filtro em cada caso?

Fig. 4 – Diagramas de polos e zeros

3) Nick construiu um filtro de Butterworth passa-baixas para o seu rádio. Embora o sistema tenha um desempenho bom, Nick quer melhorá-lo. Preguiçoso, Nick não quer projetar um novo filtro. Então pensou, “filtragem em dobro me dará duas vezes o desempenho”. Ele sugeriu filtrar o sinal de áudio duas vezes usando dois filtros idênticos ligados em série. Seu professor de Sinais, sobrecarregado de trabalho e mal pago, displicentemente disse: “se você usa filtros idênticos, não faz diferença filtrar uma ou duas vezes”. Quem está correto? Por quê? Proponha um experimento para provar quem está correto. PS. A leitura do texto da Apostila 10 pode ajudar.

55

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Apostila 10 – Entrega entre 10/12 e 15/12 – 4 pontos

1 – Introdução

Este trabalho é uma extensão do trabalho anterior sobre filtros Notch. Apresentamos o método da localização dos polos e zeros de uma função de transferência para o projeto de filtros passa-baixas, passa-altas e passa-faixa. A resposta em frequência de um sistema depende fortemente da localização dos polos e zeros. Esta dependência provê um procedimento de projeto.

2 – Filtro passa-baixas

Um filtro passa-baixas apresenta ganho máximo na frequência Ê = 0, o que

corresponde ao ponto �6< = 1 no círculo unitário. Se posicionarmos um polo dentro

do círculo unitário próximo ao ponto I = 1 (Figura 1(a)) conseguimos uma resposta

passa-baixas. As respostas de amplitude e fase correspondentes são também

ilustradas na Figura 1(a). Para valores menores de Ê, o ponto �6Ë (um ponto no círculo

unitário com ângulo Ê) é mais próximo do polo; consequentemente o ganho é maior.

Quando Ê aumenta, a distância do ponto �6Ë ao polo aumenta. Consequentemente, o

ganho diminui. Isto resulta em características passa-baixas.

Posicionar um zero na origem não muda a resposta em amplitude, mas

modifica a resposta de fase, como ilustra a Figura 1(b). Porém, se posicionarmos um

zero em I = −1, temos uma mudança de ambos, amplitude e fase, como mostra a

Figura 1(c). O ponto I = −1 corresponde a frequência Ê = ��I = �6Ë = �6` = −1�.

Dessa forma, a resposta em amplitude se torna mais atenuada em frequências mais

altas, com ganho zero em Ê = �. Podemos conseguir características passa-baixas mais

próximas da ideal posicionando mais polos próximos a I = 1 (dentro do círculo

unitário). A Figura 1(d) mostra as respostas em amplitude e fase de um filtro passa-

baixas de terceira ordem com três polos próximos a I = 1 e um zero triplo em I = −1.

Para um filtro passa-baixas ideal, precisamos de um ganho melhorado em todas as

frequências na banda �0, Ê�). Isto pode ser alcançado se considerarmos uma parede

de polos (um número infinito de polos) próximos a I = 1.

56

3 – Filtro passa-altas Um filtro passa-altas possui ganho pequeno em frequências baixas e ganho alto

em frequências altas. Tal característica pode ser obtida posicionando um polo ou polos

próximos a I = −1, pois queremos que o ganho em Ê = � seja maior. Posicionando

um zero em I = 1 temos uma melhor supressão do ganho em baixas frequências. A

Figura 1(e) mostra uma possível configuração de polos e zeros de um filtro passa-altas

de terceira ordem e as respectivas respostas de amplitude e fase.

Fig. 1 – Diversas configurações de polos e zeros e respectivas respostas em frequência

57

4 – Exemplo de filtro passa-faixa Projete um filtro analógico passa-faixa com transmissão zero em 0´I e na

frequência mais alta a ser processada �à = 500´I. A frequência de ressonância requerida é 125´I.

Escolhemos o período de amostragem Ì = 10=-. Frequências analógicas ¢

correspondem a frequências digitais Ê = ¢Ì. Logo, as frequências analógicas ¢ = 0 e ¢ = 1000� correspondem a Ê = 0 e Ê = �, respectivamente. O ganho é requerido ser zero nestas frequências. Consequentemente, precisamos posicionar zeros em �6Ë correspondendo a Ê = 0 e Ê = �. Para Ê = 0, I = �6Ë = 1; para Ê = �, �6Ë = −1. Devem haver zeros em I = ±1. Além disso, precisamos de uma resposta

melhorada na frequência ressonante ¢ = 250�, o que corresponde a Ê = +̀, que,

por vez, corresponde a I = �6Ë =�6\] . Para melhorar a resposta em frequência em ¢ = 250�, posicionamos um polo na vizinhança de �6\] . Visto que este polo é

complexo, também precisamos de seu conjugado próximo a �=6\] , como mostra a Figura 2(a).

Vamos escolher dois polos: {; = |{|�6\

]; e {2 = |{|�=6\] ,

onde |{| < 1 para sistemas estáveis. Quanto mais próximo { está do círculo unitário, mais rápida será a transição da resposta em torno de ¢ = 250�. Também temos zeros em ±1. Logo,

´ I! = ) (I − 1)(I + 1)QI − |{|�6`+T QI − |{|�=6`+T

= ) I2 − 1I2 − √2|{|I + |{|2

Por conveniência escolhemos ) = 1. A resposta em amplitude será dada por:

Í´Î�6ËÏÍ = Í´Î�62ËÏ − 1ÍÐ�6Ë − |{|�6`+Ð Ð�6Ë − |{|�=6`+Ð

A Figura 2(b) mostra a resposta em amplitude em função de ¢ e Ê = ¢Ì para

valores de |{| = 0,83; 0,96 e 1. Como era esperado, o ganho é zero em ¢ = 0 e em 500´I (¢ = 1000�). O ganho tem um pico em 125´I (¢ = 250�). O pico de ressonância aparece quando |{| se aproxima de 1. A Figura 2(c) mostra a realização canônica desse filtro.

58

Figura 2 – Projeto de um filtro passa-faixa

5 – Exemplo em MATLAB Use o MATLAB para computar e traçar a resposta em frequência do filtro passa-faixa do exemplo da seção anterior para os seguintes casos:

d) |{| = 0,83 e) |{| = 0,96 f) |{| = 0,99

>> Omega = linspace(-pi,pi,4097); g_mag = [0.83 0.96 0.99]; >> H = zeros(length(g_mag),length(Omega)); >> for m=1:length(g_mag) >> H(m,:) = freqz([1 0 -1],[1 –sqrt(2)*g_mag(m) g_mag(m)^2], Omega);

>> end >> subplot(2,1,1); plot(Omega,abs(H(1,:)),’k-‘,

Omega,abs(H(2,:)),’k--‘,Omega,abs(H(3,:)),’k-.’); >> axis tight;xlabel(‘\Omega’);ylabel(‘|H[e^{j \Omega}]|’); >> legend(‘(a) |\gamma| = 0.83’, ‘(b) |\gamma| = 0.96’, ‘(c) |\gamma| = 0.99’, 0) >> subplot(2,1,2); plot(Omega,angle(H(1,:)),’k-‘,Omega, angle(H(2,:)),’k--‘, Omega, angle(H(3,:)),’k-.’); >> axis tight; xlabel(‘\Omega’); ylabel(‘\angle H[e^{j \Omega}] [rad]’); >> legend(‘(a) |\gamma| = 0.83’, ‘(b) |\gamma| = 0.96’, ‘(c) |\gamma| = 0.99’,0)

59

Figura 3 – Resposta em frequência de filtros passa-faixa

6 – Exercícios

1) Considere as configurações de polos e zeros de certos filtros, como mostra as Figuras. 4(a) e 4(b). Trace a resposta em amplitude para esses filtros.

Figura 4 – Configuração de polos e zeros de diferentes filtros

2) Projete um filtro digital cuja função de transferência é dada por:

´ I! = ) I + 1I − F

a) Trace a resposta em amplitude para esse filtro assumindo |F| < 1. b) A resposta em amplitude desse filtro passa-baixas será máxima em ¢ = 0.

A largura de banda de 3i$ é a frequência em que a resposta em amplitude decai 0,707 vezes do seu valor máximo. Determine a largura de banda de 3i$ quando F = 0,2.

3) Projete um filtro Notch (veja exemplo da apostila anterior) para rejeitar completamente a frequência 5000´I e ter uma rápida recuperação em ambos os lados de 5000´I para ganho unitário. A frequência mais alta a ser processada é 20)´I (�à = 20000).

60

Universidade Federal de Minas Gerais

Departamento de Engenharia Eletrônica

Oficina de Sistemas Dinâmicos Lineares

2º semestre de 2012 – Turma: Segunda-feira 19:00 – 20:40 – CCE Sala 310 Professor: Daniel Furtado Leite – [email protected] Trabalho Final – Entrega entre 14/01 e 19/01 – 30 pontos

1 – Introdução O projeto de filtros FIR usando janelas é uma técnica simples e rápida. Este trabalho consiste na implementação em MATLAB das técnicas de janelamento tipo retangular, Bartlett, Hanning, Hamming, Blackman e Kaiser.

2 – Projeto de filtros FIR usando janelas

Em diversas situações como em cálculo numérico, programação ou projeto de filtros precisamos truncar dados. Por exemplo, se precisamos calcular numericamente a transformada de Fourier de algum sinal no domínio do tempo, temos que desprezar o sinal além de algum valor suficientemente grande do índice de tempo. Em cálculo numérico precisamos trabalhar com valores finitos. Similarmente, a resposta ao impulso unitário de um filtro passa-baixas é não-causal e aproxima-se de zero assintoticamente quando o tempo tende a infinito. Queremos desprezar a resposta além de certo valor suficientemente grande do índice de tempo para tornar o sinal causal e de duração finita.

Podemos minimizar os efeitos de truncagem (espalhamento espectral e vazamento) através do uso de janelas amortecidas. São exemplos de janelas amortecidas: janela de Bartlett (triangular), Hanning, Hamming, Blackman, Kaiser, entre outras. Janelas amortecidas truncam os dados gradualmente.

Cada tipo de técnica de janelamento provê características diferentes à resposta em frequência de um filtro. A escolha do tipo de janela depende da aplicação particular. Por exemplo, a janela de Hanning é preferida à de Hamming em analise espectral porque possui um decaimento mais rápido dos lóbulos laterais. Entretanto, a janela de Hamming provê menor magnitude do lóbulo lateral para uma dada largura de lóbulo principal. A janela de Kaiser, a qual utiliza uma função de Bessel de ordem zero modificada, é mais versátil e mais ajustável do que as demais.

2.1 – Filtro passa-baixas ideal

A resposta em frequência de um filtro passa-baixas ideal é mostrada na Fig. 1. O eixo das frequências é normalizado com respeito à frequência de amostragem. A frequência de corte �>, sempre entre 0 e 0,5, representa a frequência de Nyquist.

61

Todas as frequências abaixo de �> passam pelo filtro sem qualquer alteração. As frequências acima de �>são extintas.

Fig. 1 – Resposta em frequência de um filtro passa-baixas ideal

A resposta ao impulso deste filtro passa-baixas ideal é uma função sinc, veja

Fig. 2. A figura considera diferentes valores de �> (0,1; 0,25; 0,4) como exemplo. A

equação da função mostrada na figura é:

ℎ(�) = 2�> ����(2��>�) = 2�> ���(2��>�)

2��>�= ���(2��>�)

�� .

Fig. 2 – Resposta ao impulso de diferentes filtros ideais passa-baixas

O projeto de filtros ideais não é factível. Dada a estrutura de um filtro não-recursivo como mostrado na Fig. 3, existem dois problemas em criar a resposta ao impulso ideal. Primeiro, a função sinc é infinita na direção �. Os ripples (pequenas ondulações) continuam em ambas as direções. Entretanto, filtros FIR (finite impulse

response) permitem criar apenas respostas ao impulso finitas. O número de taps (pesos) do filtro (ver Fig. 3) deve ser finito. Segundo, a resposta do filtro ao impulso é não-causal. Isto significa que sua realização requer amostras do futuro.

62

Fig. 3 – Filtro FIR não-recursivo

Felizmente, as soluções a essas questões são simples. Primeiro, uma janela pode ser aplicada à função sinc tal que apenas uma parte da resposta ao impulso seja realmente usada. Segundo, a resposta ao impulso pode deslocada tal que o filtro opere apenas nas amostras disponíveis (aquelas do passado).

2.2 – Exemplo de filtro passa-baixas

Considere um filtro passa-baixas com as seguintes especificações:

Frequência amostragem: 2000´I. Frequência de corte: 460´I. Comprimento do filtro (# pesos): 21.

Podemos calcular os valores dos pesos usando as seguintes relações:

g = ���n�������i������� − 1 = 20 �> = ���Ñxê���Fi���������Ñxê���Fi�F�����F°�� = 4602000 = 0,23

Ó��� = ��� h2��> Q� − g2Tj� Q� − g2T , � ≠ g2 ou

��� = 2�> , � = g2 ,

onde �> é a frequência de transição (corte) normalizada, g é a ordem do filtro dada pelo

número de taps menos um. Os pesos calculados neste caso são mostrados na Tabela I:

Tabela I – Pesos calculados para o filtro passa-baixas

Note que, se o número de pesos é impar, haverá uma divisão por zero em

Neste caso, baseado na regra de l’Hôpital, o valor de A fig. 4 mostra os pesos calculados para o filtro em questão. Pode ser visto na figura como a resposta ao impulso é efetivamente considerada usando 21 pesos.

Fig. 4 – Pesos de um filtro

A resposta em frequência deste filtro é mostrada na Fig. 5. frequência de transição ocorre no ponto correto, i.e.,

Fig. 5 – Resposta em frequência do filtro passa

A grande quantidade de gráfico direito) se deve a abordagem grosseira de truncagem da resposta ao impulso ideal infinita. A abordagem usada empregoujanela retangular. A próxima seção aborda diferentes tipos de janelas que podem diminuir ripple e melhorar a atenuação

2.3 – Janelas amortecidas

Podemos conseguir um maior controle sobre as características de resposta em frequência de um filtro aplicando uma janela aos pesos da função ilustra um esquema de janelamento usando a abordagem de Hamming. Primeiro, os pesos da função sinc, Ó�da janela ÓÔ���são calculados. Neste casoequação é empregada para calcular os pesos

63

Note que, se o número de pesos é impar, haverá uma divisão por zero em

caso, baseado na regra de l’Hôpital, o valor de 2�> é usado. A fig. 4 mostra os pesos calculados para o filtro em questão. Pode ser visto na

figura como a resposta ao impulso é efetivamente considerada usando 21 pesos.

Pesos de um filtro passa-baixas com g = 20, e �> =A resposta em frequência deste filtro é mostrada na Fig. 5. Observa

frequência de transição ocorre no ponto correto, i.e., 460´I.

Resposta em frequência do filtro passa-baixas

A grande quantidade de ripple visível no gráfico de amplitude em decibelse deve a abordagem grosseira de truncagem da resposta ao impulso

ideal infinita. A abordagem usada empregou naturalmente um tipo de janela chamadotangular. A próxima seção aborda diferentes tipos de janelas que podem

e melhorar a atenuação da resposta nas frequências desejadas

Janelas amortecidas

Podemos conseguir um maior controle sobre as características de resposta em a de um filtro aplicando uma janela aos pesos da função

de janelamento usando a abordagem de Hamming. Primeiro, os ���, são calculados como na seção anterior. Depois, os pesos lculados. Neste caso, usando a janela de Hamming

para calcular os pesos ÓÔ���:

Note que, se o número de pesos é impar, haverá uma divisão por zero em � = Õ2 .

A fig. 4 mostra os pesos calculados para o filtro em questão. Pode ser visto na figura como a resposta ao impulso é efetivamente considerada usando 21 pesos.

= 0.23

Observa-se que a

em decibel (Fig. 5, se deve a abordagem grosseira de truncagem da resposta ao impulso

naturalmente um tipo de janela chamado tangular. A próxima seção aborda diferentes tipos de janelas que podem

da resposta nas frequências desejadas.

Podemos conseguir um maior controle sobre as características de resposta em a de um filtro aplicando uma janela aos pesos da função sinc. A Fig. 6

de janelamento usando a abordagem de Hamming. Primeiro, os são calculados como na seção anterior. Depois, os pesos

, usando a janela de Hamming, a seguinte

Os dois conjuntos de pesos são multiplicados ponto a ponto para gerar o conjunto final

de pesos do filtro. Na equação anterior,

comprimento do filtro menos 1 (como na seção anterior).

Fig. 6 –

A Fig. 7 iulstra o efeito depois (em vermelho) da aplicação da janela de Hamming.

A ideia do uso de técnicas de janelamento comprimento de filtro que r(roll-off) e de nível de atenuação da banda

64

ÓÔ��� = 0,54 − 0,46 cos �2��g � Os dois conjuntos de pesos são multiplicados ponto a ponto para gerar o conjunto final

de pesos do filtro. Na equação anterior, g é a ordem do filtro, que é igual ao

comprimento do filtro menos 1 (como na seção anterior).

Pesos resultantes da janela de Hamming

A Fig. 7 iulstra o efeito na resposta em frequência do filtro antes (aplicação da janela de Hamming.

do uso de técnicas de janelamento é escolher um tipo de janela e comprimento de filtro que resultará em um filtro com uma taxa correta de decaimento

nível de atenuação da banda que idealmente não deveria passar

Os dois conjuntos de pesos são multiplicados ponto a ponto para gerar o conjunto final

é a ordem do filtro, que é igual ao

a resposta em frequência do filtro antes (em verde) e

é escolher um tipo de janela e m filtro com uma taxa correta de decaimento

deveria passar.

Fig. 7 – Resposta em frequência com e sem uso de janela amortecida

2.4 – Tipos de janelas

As equações abaixo se referem a

empregadas no projeto de filtros FIR.

Janela retangular:

Janela de Bartlett:

Janela de Hanning:

Janela de Hamming:

Janela de Blackman:

A Fig. 8 mostra o efeito na resposta em frequência das diferentes janelas

aplicadas sobre um filtro passa

corte de 5000´I e frequência de amostragem de

Fig. 8 – Resposta em frequência e valores de pesos de diferentes tipos de janelas

65

Resposta em frequência com e sem uso de janela amortecida

As equações abaixo se referem a diferentes tipos de janelas que podem ser

empregadas no projeto de filtros FIR.

ÓÔ��� = 1

ÓÔ��� = 1 − 2|�=ÖD |Õ

Ó5��� = 0,5 − 0,5 cos Q2`�Õ T

ÓÔ��� = 0,54 − 0,46 cos 2`�Õ

Ó5��� = 0,42 − 0,5 cos Q2`�Õ T 0,08���A Fig. 8 mostra o efeito na resposta em frequência das diferentes janelas

aplicadas sobre um filtro passa-baixas de ordem 28 (29 pesos) com uma frequência de

e frequência de amostragem de 44100´I.

Resposta em frequência e valores de pesos de diferentes tipos de janelas

Resposta em frequência com e sem uso de janela amortecida

diferentes tipos de janelas que podem ser

��� Q+`�Õ T

A Fig. 8 mostra o efeito na resposta em frequência das diferentes janelas

baixas de ordem 28 (29 pesos) com uma frequência de

Resposta em frequência e valores de pesos de diferentes tipos de janelas

2.5 – Filtros passa-altas, passa

Um filtro passa-altas pode ser construído a partir de um filtro passa

um filtro passa-baixas. A Fig. 9 mostra como seria a funcionamento deste filtro.

Fig. 9 – Filtro passa-altas construído a partir de filtros passa

O filtro passa-tudo deve ser da mesma ordem que o filtro passaos valores de pesos são 0 exceto o valor de centro que é igual a 1. Note que quando criamos um filtro passa-altas despar (número impar de taps

A equação para o cálculo dos

Ó�ou

Em seguida, a janela é aplicada da mesma forma como no filtro passailustra a resposta em frequência de um filtro passacom a mesma frequência de corte e usando a abordagem de janela de Hamming

Fig. 10 – Resposta em frequência de um filtro passa

66

altas, passa-faixa e rejeita-faixa

altas pode ser construído a partir de um filtro passa

baixas. A Fig. 9 mostra como seria a funcionamento deste filtro.

altas construído a partir de filtros passa-tudo e passa

tudo deve ser da mesma ordem que o filtro passaores de pesos são 0 exceto o valor de centro que é igual a 1. Note que quando

altas dessa maneira, uma restrição é que a ordem do filtro seja taps).

A equação para o cálculo dos pesos (antes do janelamento) é a seguinte:

��� = −��� h2��> Q� −g2Tj� Q� −g2T

, � ≠ g2

Ó��� = 1 − 2�>, � = g2 .

a janela é aplicada da mesma forma como no filtro passa-ilustra a resposta em frequência de um filtro passa-baixas e de um filtro passa

mesma frequência de corte e usando a abordagem de janela de Hamming

Resposta em frequência de um filtro passa-baixas e um filtro passa

altas pode ser construído a partir de um filtro passa-tudo menos

baixas. A Fig. 9 mostra como seria a funcionamento deste filtro.

tudo e passa-baixas

tudo deve ser da mesma ordem que o filtro passa-baixas. Todos ores de pesos são 0 exceto o valor de centro que é igual a 1. Note que quando

, uma restrição é que a ordem do filtro seja

seguinte:

-baixas. A Fig. 10 e de um filtro passa-altas

mesma frequência de corte e usando a abordagem de janela de Hamming.

baixas e um filtro passa-altas

Filtros passa-faixa e rejeita

equações para o cálculo dos pesos destes tipos

Filtro passa-faixa:

��� = ��� h2�

Filtro rejeita-faixa:

��� = ��� h

Em ambos os casos, a ordem do filtro deve ser par (comprimento do filtro

impar). Novamente, as janelas amortecidas são aplicadas após o cálculo dos pesos.

Fig. 11 apresenta um exemplo de resposta em frequência de um filtro passa

filtro rejeita-faixa. Ambos usam a abordagem de janela de Hamming.

Fig. 11 – Resposta em frequência de um filtro passa

2.6 – Janela de Kaiser

A janela de Kaiser é especificada diferentemente das janelas anteriores.

de especificarmos a ordem do filtro, especificamos a quantidade de

transição. A Fig. 12 ilustra o significado destes dois parâmetros,

transição.

67

faixa e rejeita-faixa podem ser projetados de maneira similar. As

equações para o cálculo dos pesos destes tipos de filtros são:

h2��>2 Q� −g2Tj� Q� −g2T

− ��� h2��>; Q� −g2Tj

� Q� −g2T, � ≠

Ó��� = 2��>2 − �>;�, � = g2 .

h2��>; Q� −g2Tj� Q� −g2T

− ��� h2��>2 Q� −g2Tj

� Q� −g2T, � ≠

Ó��� = 1 − 2��>2 − �>;�, � = g2 .

Em ambos os casos, a ordem do filtro deve ser par (comprimento do filtro

impar). Novamente, as janelas amortecidas são aplicadas após o cálculo dos pesos.

um exemplo de resposta em frequência de um filtro passa

faixa. Ambos usam a abordagem de janela de Hamming.

Resposta em frequência de um filtro passa-faixa e um filtro rejeita

Kaiser é especificada diferentemente das janelas anteriores.

de especificarmos a ordem do filtro, especificamos a quantidade de ripple

transição. A Fig. 12 ilustra o significado destes dois parâmetros, ripple

de maneira similar. As

j ≠ g2

j ≠ g2

Em ambos os casos, a ordem do filtro deve ser par (comprimento do filtro

impar). Novamente, as janelas amortecidas são aplicadas após o cálculo dos pesos. A

um exemplo de resposta em frequência de um filtro passa-faixa e um

faixa e um filtro rejeita-faixa

Kaiser é especificada diferentemente das janelas anteriores. Ao invés

ripple e a largura da

ripple e largura de

Fig. 12 – Ilustração dos conceitos de

Uma vez definida a quantidade de seguintes equações são usadas para auxiliar o cálculo dos valores da e do parâmetro �:

�Ôonde a largura de transição e frequência de amostragem são dadas em

ou,

O parâmetro � é obtido a partir de:

� = 0,548�"e,

Uma vez obtido os valores de janela. A equação da janela de Kaiser usa outra função, de ordem zero. Embora, esta função se expanda para infinito, o denominador

68

Ilustração dos conceitos de ripple e largura de transição considerando um

filtro passa-baixas

Uma vez definida a quantidade de ripple e a largura de transição permitida, as seguintes equações são usadas para auxiliar o cálculo dos valores da ordem do filtro

" = −20log;<���nn��� = 2� �F�°x�Fi���F���çã�

���Ñxê���Fi�F�����F°��onde a largura de transição e frequência de amostragem são dadas em

g = ���� �" − 7,952,285�Ô� , " � 21

g = ���� �5,79�Ô � , " � 21. é obtido a partir de:

� = 0, " � 21, " − 21�<,+ 0,07886�" − 21�, 21 d " d 50

� = 0,1102�" − 8,7�, " � 50. Uma vez obtido os valores de g e �, podemos finalmente calcular os pesos da A equação da janela de Kaiser usa outra função, ?<, função de Bessel modificada

de ordem zero. Embora, esta função se expanda para infinito, o denominador

transição considerando um

e a largura de transição permitida, as ordem do filtro g

onde a largura de transição e frequência de amostragem são dadas em ´I. Logo,

50

, podemos finalmente calcular os pesos da , função de Bessel modificada

de ordem zero. Embora, esta função se expanda para infinito, o denominador

rapidamente se torna muito grande. Consequentemente, precisamos calcular somente em uma faixa em torno de

?<��� =��

e,

Ó

2.7 – Exemplo de filtro baseado em janela de Kaiser

Considere o projeto de um filtro passaTemos:

Ripple: 0,01 Frequência de corte: Largura da transição: Frequência de amostragem: Ordem do filtro (g): 23 �: 3,395321

Os pesos são:

A resposta em frequência do filtro usando janela de Kaiser é mostrada na Fig. 1Para comparação, a resposta em frequência de um filtro baseado em janela de Blackman com o mesmo número de pesos é também mostrada. Pode ser visto que a frequência de transição de

Fig. 13 – Resposta em frequência de

janela de Kaiser e

69

rapidamente se torna muito grande. Consequentemente, precisamos calcular m torno de � = 20. Desta forma,

�Q�2T2�

��!�2�

�s<= 1 Q�2T

2

�1!�2 Q�2T

+

�2!�2 Q�2T

W

�3!�2 ⋯

ÓÔ��� =?< ¦�a1 − Q2�g − 1T2¨

�?< .

filtro baseado em janela de Kaiser

Considere o projeto de um filtro passa-baixas baseado em janela de Kaiser.

Frequência de corte: 250´ILargura da transição: 100´I Frequência de amostragem: 1000´I

): 23

A resposta em frequência do filtro usando janela de Kaiser é mostrada na Fig. 1Para comparação, a resposta em frequência de um filtro baseado em janela de Blackman com o mesmo número de pesos é também mostrada. Pode ser visto que a frequência de transição de 250´I está correta e a largura da transição é de

Resposta em frequência de um filtro passa-baixas usando a abordagem de

janela de Kaiser e janela de Blackman

rapidamente se torna muito grande. Consequentemente, precisamos calcular ?<

baixas baseado em janela de Kaiser.

A resposta em frequência do filtro usando janela de Kaiser é mostrada na Fig. 13. Para comparação, a resposta em frequência de um filtro baseado em janela de Blackman com o mesmo número de pesos é também mostrada. Pode ser visto que a

está correta e a largura da transição é de 100´I.

a abordagem de

70

3 - Tarefa Projetar em Matlab quatro (4) filtros: passa-baixas, passa-altas, passa-faixa e

rejeita-faixa, conforme a proposta deste trabalho. Comparar as técnicas de janela apresentadas: retangular, Bartlett, Hanning, Hamming, Blackman e Kaiser para cada caso. Escolha os parâmetros necessários. Analisar e discutir os resultados. Tome o algoritmo apresentado no Apêndice A como base para o desenvolvimento dos demais filtros e janelas.

Sugestão 1: crie quatro programas, um para cada tipo de filtro. Sugestão 2: use funções para chamar os diferentes tipos de janela. Sugestão 3: crie novas figuras, além daquelas geradas pelo programa do

Apêndice A, para comparar as diferentes abordagens de janela em gráficos de resposta em frequência únicos.

71

Apêndice A – Projeto de filtro passa-faixa usando janela de Bartlett %--------------------------------------------------------------------- %Projeto filtro passa-faixa - Junho/2006 - Daniel Furtado Leite %Ordem do filtro - 80 %Frequencia de corte inferior - 2000 rad/s %Frequencia de corte superior - 4000 rad/s %Frequencia de amostragem - 10000 rad/s %Metodo FIR com janela Bartlett %--------------------------------------------------------------------- %Inicio clear all close all clc tic %--------------------------------------------------------------------- %Filtro passa-faixa c = 81; %comprimento do filtro fl = 2000; %frequencia de corte inferior fh = 4000; %frequencia de corte superior fa = 10000; %frequencia de amostragem %---------------------------------------------------------------------%Calculo dos coeficientes h(n) do filtro para n variando 0:c-1 N = (c - 1)/2; %comprimento do filtro/2 OmegaLow = (2*pi*fl)/fa; %frequencia de corte inferior OmegaHigh = (2*pi*fh)/fa; %frequencia de corte superior %Loop para armazenamento dos coeficientes h(n) for (n=0:c-1) %Formula de h band-pass hBP(n+1) = (1/(pi*(n-N))) * (sin((n-N)*OmegaHigh) - sin((n-N)*OmegaLow)); cont(n+1) = n; end %---------------------------------------------------------------------%No ponto central de hBP a formula acima tende a infinito %Substituindo o valor de hBP no ponto central (0) hBP((c-1)/2 +1) = (OmegaHigh - OmegaLow)/pi; %Formula de h band-pass para o ponto central %---------------------------------------------------------------------%Janela Bartlett for (n=0:c-1) W(n+1) = ((-2*abs(n-N))/N) + 1; %funçao W(n) da janela triangular end %Construindo a janela de h(n)*w(n) for (n=0:c-1) janela(n+1) = hBP(n+1) * W(n+1); end %--------------------------------------------------------------------- %figure(1) - Filtro com e sem janela figure(1) plot (cont,hBP), hold on plot (cont,janela,'r'),grid on xlabel('n (elementos)') legend('Coeficientes do filtro h(n)','Coeficientes do filtro janelado h(n)*w(n)'); %---------------------------------------------------------------------%figure(2) - Curva da janela figure(2) plot (cont,W),grid on title('Janela de Bartlett') xlabel('n (elementos)')

72

%--------------------------------------------------------------------- %figure(3) - Resposta em frequencia figure(3) freqz(hBP); %coeficientes h(n) - sem janela hold on freqz(janela); %coefientes h(n) * W(n) - janelado title('Resposta em Frequencia') legend('filtro h(n)','filtro janelado h(n)*w(n)',0); %--------------------------------------------------------------------- %--------------------------------------------------------------------- %Teste do filtro %Gerando um sinal senoidal com 3 frequencias distintas (senóides sobrepostas) %Freq = 1500 (abaixo do corte inferior) %Freq = 3000 (dentro da banda passante) %Freq = 4500 (acima do corte superior) cont = 0; for (t=0:1/fa:1) cont = cont+1; sinal(cont) = 10 * sin (2*pi*4500* t) + 10 * sin (2*pi*1500*t) + 10 * sin (2*pi*3000*t) + 10 * randn; T(cont) = t; end %--------------------------------------------------------------------- %Transformada rapida de Fourier do sinal de teste (antes da filtragem) sinalfreq = fft(sinal,10000); %--------------------------------------------------------------------- %figure(4) - sinal de teste no dominio da frequencia antes da %filtragem cont2 = 0:fa; figure (4) plot (cont2(1:fa/2),abs(sinalfreq(1:fa/2))) %--------------------------------------------------------------------- %Loop: passando o sinal de teste no filtro x = zeros(c,1); for (i=0:10000) x(1) = sinal(i+1); y = janela * x; %Coeficientes do filtro hBP fixo; passando X no filtro x_temp = x; for(aux=1:c-1) x(aux+1) = x_temp(aux); end %Armazenando a saida para plot Y(i+1) = y; end %--------------------------------------------------------------------- %Transformada rapida de Fourier do sinal de teste (após a filtragem) sinalfreq2 = fft (Y,10000); %--------------------------------------------------------------------- %figure(4) - sinal de teste no dominio da frequencia após filtragem figure(4), hold on plot(cont2(1:fa/2),abs(sinalfreq2(1:fa/2)),'r') title('Conteudo na Frequencia do sinal filtrado e nao-filtrado') xlabel('frequencia (rad/s)') legend('Sinal nao filtrado','Sinal filtrado'); %--------------------------------------------------------------------- toc %Fim

73

Bibliografia Básica

[1] B. P. Lathi, Linear Systems and Signals, 2ª edição, New York: Oxford University

Press, 2005.

[2] K. Ogata, Modern Control Engineering, 5ª edição, Prentice Hall (Pearson), 2010.

Bibliografia Complementar

[3] V. K. Ingle, J. G. Proakis, Digital Signal Processing Using Matlab, 3ª edição, CL

Engineering, 2001.

[4] N. Nise, Control Systems Engineering, 6ª edição, Wiley, 2010.