Post on 08-Nov-2018
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 <danfl7@gmail.com>
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 – danfl7@gmail.com 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: danfl7@gmail.com. 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com
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 – danfl7@gmail.com 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 – danfl7@gmail.com 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 – danfl7@gmail.com 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.