Prévia do material em texto
1
Atividade Prática: Filtros Digitais
Nome: RU:
Obs.: O RU utilizado nesse roteiro de Atividade Prática é fictício e foi elaborado para
entrega nesse módulo, seguindo as orientações da professora no vídeo disponível na
Atividade Prática. Como a atividade não foi corrigida, não é possível disponibilizar a
nota obtida nem garantir a nota máxima. Resolvi publicar esse roteiro mesmo sem
publicação de nota porque não encontrei materiais disponíveis que pudessem auxiliar
na elaboração dessa atividade.
ATIVIDADE
Colocar aqui todos os dados da atividade como o exemplo do quadro abaixo (o quadro
vermelho NÃO VAI NO RELATÓRIO, É SOMENTE UM EXEMPLO). Pode ser uma imagem
do roteiro:
Um determinado sistema digital tem a função de transferência (resposta em frequência)
definida por 𝐻(𝑧):
𝐻(𝑧) =
𝑎𝑧−𝑏
(1 − 𝑐𝑧−1)(1 + 𝑑𝑧−1)
Sendo:
• 𝑎 = 10 ∗ 𝑅𝑈2 (adotar 2 se o RU for igual a zero)
• 𝑏 = 𝑅𝑈3 (adotar 2 se o RU for igual a zero)
• 𝑐 =
𝑀𝑎𝑖𝑜𝑟 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑜 𝑅𝑈
10
• 𝑑 =
𝑆𝑒𝑔𝑢𝑛𝑑𝑜 𝑚𝑎𝑖𝑜𝑟 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑜 𝑅𝑈
10
O sinal de entrada corresponde ao seu RU cujo segundo número corresponde à amostra em
𝑛 = 0 como mostrado no exemplo a seguir:
Exemplo RU: 1234567
RU1 RU2 RU3 RU4 RU5 RU6 RU7
1 2 3 4 5 6 7
𝑥[𝑛] = [1 𝟐 3 4 5 6 7]
Usando o ambiente matemático Scilab calcular o sinal de saída 𝑦[𝑛] definido por:
𝑦[𝑛] = 𝑥[𝑛] ∗ ℎ[𝑛]
Onde ℎ[𝑛] é a resposta ao impulso (domínio do tempo) correspondente à 𝐻(𝑧) (domínio da
frequência). E o sinal de saída 𝑦[𝑛] é resultante da convolução entre o sinal de entrada 𝑥[𝑛]
e a resposta ao impulso do sistema ℎ[𝑛].
2
Atividade
Desenvolvimento matemático:
Colocar aqui todo o desenvolvimento matemático COMPLETO usado para calcular a
resposta ao impulso ℎ[𝑛].
𝐻(𝑧) =
𝑎𝑧−𝑏
(1 − 𝑐𝑧−1)(1 + 𝑑𝑧−1)
Sendo:
• 𝑎 = 10 ∗ 𝑅𝑈2 (adotar 2 se o RU2 for igual a zero)
• 𝑏 = 𝑅𝑈3 (adotar 2 se o RU3 for igual a zero)
• 𝑐 =
𝑀𝑎𝑖𝑜𝑟 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑜 𝑅𝑈
10
• 𝑑 =
𝑆𝑒𝑔𝑢𝑛𝑑𝑜 𝑚𝑎𝑖𝑜𝑟 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑜 𝑅𝑈
10
O sinal de entrada corresponde ao seu RU cujo segundo número corresponde à amostra em
𝑛 = 0:
RU: 5064782
RU1 RU2 RU3 RU4 RU5 RU6 RU7
5 0 6 4 7 8 2
𝑥[𝑛] = [5 0 6 4 7 8 2]
Temos:
• 𝑎 = 10 ∗ 2 (Como RU2 igual a 0, adotar 2)
• 𝑏 = 6 (pois RU3 não é igual a zero)
• 𝑐 =
8
10
(pois maior número do RU é 8)
• 𝑑 =
7
10
(pois segundo maior número do RU é 7)
•
Portanto:
𝐻(𝑧) =
𝑎𝑧−𝑏
(1 − 𝑐𝑧−1)(1 + 𝑑𝑧−1)
Substituindo os valores de a, b, c e d na equação acima:
𝐻(𝑧) =
20𝑧−6
(1 − 0,8𝑧−1)(1 + 0,7𝑧−1)
3
Vamos separar em frações parciais (conforme explicado no vídeo)
𝐻(𝑧) = 20𝑧−6 (
1
(1−0,8𝑧−1)(1+0,7𝑧−1)
) = 20𝑧−6 (
𝐴
(1−0,8𝑧−1)
+
𝐵
(1+0,7𝑧−1)
)
𝐴
(1 − 0,8𝑧−1)
+
𝐵
(1 + 0,7𝑧−1)
=
𝐴(1 + 0,7𝑧−1) + 𝐵(1 − 0,8𝑧−1)
(1 − 0,8𝑧−1)(1 + 0,7𝑧−1)
𝐴 + 𝐴0,7𝑧−1 + 𝐵 − 𝐵0,8𝑧−1
(1 − 0,8𝑧−1)(1 + 0,7𝑧−1)
=
1 + 0𝑧−1
(1 − 0,8𝑧−1)(1 + 0,7𝑧−1)
Trabalhando com os numeradores das equações:
𝐴 + 𝐴0,7𝑧−1 + 𝐵 − 𝐵0,8𝑧−1 = 1 + 0𝑧−1
Portanto (separamos os números que multiplicam e os que não multiplicam por z-1:
𝐴 + 𝐵 = 1
𝐴0,7𝑧−1 − 𝐵0,8𝑧−1 = 0𝑧−1
Resolvendo o sistema de equações:
1) 𝐴 + 𝐵 = 1 𝑙𝑜𝑔𝑜 𝐴 = 1 − 𝐵
2) 0,7𝐴 − 0,8𝐵 = 0
Substituindo 1) em 2) temos:
0,7(1 − 𝐵) − 0,8𝐵 = 0
0,7 − 0,7𝐵 − 0,8𝐵 = 0
−1,5𝐵 = −0,7
𝐵 = 0,4666
Substituindo B em 1) temos
𝐴 = 1 − 𝐵
𝐴 = 1 − 0,4666
𝐴 = 0,5334
Portanto:
𝐴 = 0,4666 𝑒 𝐵 = 0,5334
Substituindo na equação original:
20𝑧−6 (
𝐴
(1 − 0,8𝑧−1)
+
𝐵
(1 + 0,7𝑧−1)
)
4
Temos:
𝐻(𝑧) = 20𝑧−6 (
0,4666
(1 − 0,8𝑧−1)
+
0,5334
(1 + 0,7𝑧−1)
)
Resolvendo a equação (multiplicando 20𝑧−6 pelos numeradores):
𝐻(𝑧) =
9,332𝑧−6
(1 − 0,8𝑧−1)
+
10,668𝑧−6
(1 + 0,7𝑧−1)
Aplicando a propriedade da transformada z de deslocamento no tempo:
𝑥 [𝑛 − 𝑛0] ↔ 𝑧
−𝑛0𝑋(𝑧)
E o par de transformadas:
𝑎𝑛𝑢[𝑛] ↔
1
1−𝑎𝑧−1
|𝑧| > |𝑎|
A resposta do impulso fica:
ℎ(𝑛) = 9,332(0,8)(𝑛−6)𝑢[𝑛 − 6] + 10,668(−0,7)(𝑛−6)𝑢[𝑛 − 6]
Obs: Para encontrar a primeira parte de ℎ(𝑛):
• Encontramos o numerador da primeira fração, ou seja, 9,332
• Encontramos o número que está multiplicando z-1 na primeira fração, ou seja, -0,8 e
multiplicamos por -1.
• Encontramos o expoente de z no numerador da primeira fração, ou seja, -6. E somamos
o n na operação. Com isso, encontramos n – 6
• Multiplicamos o 𝑢 pelo valor encontrado no passo anterior, ou seja, n-6. Com isso temos
𝑢[𝑛 − 6]
Com isso, encontramos ℎ(𝑛) = 9,332(0,8)(𝑛−6)𝑢[𝑛 − 6]
Para encontrar o valor da segunda parte do ℎ(𝑛), basta seguir os passos acima e substituir
os valores da segunda fração, em vez de utilizar os valores da primeira fração.
Algoritmo:
Colocar aqui o algoritmo completo identificando:
• Definição de funções e vetores (𝑥[𝑛], vetor 𝑛, impulso, degrau, etc.)
A função impulso e a função degrau são as mesmas descritas no vídeo:
function [y]=impulso(x)
y = zeros(1, length(x));
y(find(x==0)) = 1;
endfunction //função impulso
5
function [y]=degrau(x)
y = zeros(1, length(x));
y(find(x>=0)) = 1;
endfunction //função degrau
Aqui devemos colocar os valores do RU. Nesse exemplo, utilizamos RU: 5064782
RU1 RU2 RU3 RU4 RU5 RU6 RU7
5 0 6 4 7 8 2
RU1=5;RU2=0;RU3=6;RU4=4;RU5=7;RU6=8;RU7=2;
Os comandos abaixo continuam os mesmos, como citados no vídeo:
clc() //Limpa console
clf() //Limpa janela gráfica
f=gcf() //Manipulador de gráficos
n=[-20:1:20] //Geração do vetor n
n1=[-40:1:40] //Geração do vetor n1 para a convolução
x=RU1*impulso(n+1)+RU2*impulso(n)+RU3*impulso(n-1)+RU4*impulso(n-2) +
RU5*impulso(n-3)+RU6*impulso(n-4)+RU7*impulso(n-5); //x[n]
u=degrau(n);
• Definição da função da resposta ao impulso do sistema (ℎ[𝑛])
No vídeo, o valor inicial de i foi -17 e o valor de b (encontrado no início da atividade), foi 3.
Nesse exemplo, como o valor de b é 6, devemos somar a diferença entre 3 e 6 (no caso, 3)
com o valor -17. Com isso teremos o valor inicial -14.
E a função h é a resposta do impulso que calculamos anteriormente:
ℎ(𝑛) = 9,332(0,8)(𝑛−6)𝑢[𝑛 − 6] + 10,668(−0,7)(𝑛−6)𝑢[𝑛 − 6]
Lembrando que no SciNotes, o expoente é calculado utilizando ^, a multiplicação utilizando
* e a virgula (,) deve ser substituída pelo ponto (.). No lugar de n, colocamos i, que é o índice
utilizado para encontrar a ocorrência do vetor:
for i=-14:20 //Para evitar superposição por deslocamento circular
h(i+21)=9.332*0.8^(i-6)*u(i-6+21)+10.668*(-0.7)^(i-6)*u(i-6+21) //h[n]
end
• Definição da função 𝑦[𝑛]
A função continua a mesma, como citado no vídeo:
y=conv(x,h);
6
• Linhas de comando dos gráficos
Continuam os mesmos, como citado no vídeo
subplot(311)
plot2d3(n,x,style=2) //Sinal de entrada
f.children.children(1).children.thickness=2; //Controla a grossura da linha
title('x[n]')
xlabel('amostra')
ylabel('amplitude')
subplot(312)
plot2d3(n,h,style=3) //Resposta ao impulso
f.children.children(1).children.thickness=2; //Controla a grossura da linha
title('h[n]')
xlabel('amostra')
ylabel('amplitude')
subplot(313)
plot2d3(n1,y,style=5) //Sinal de saída do sistema
f.children.children(1).children.thickness=2; //Controla a grossura da linha
title('y[n]')
xlabel('amostra')
ylabel('amplitude')
7
Algoritmo no SciNotes:
Gráficos
Gráficos com nomes nos eixos:
• Sinal de entrada 𝑥[𝑛]
8
• Resposta ao impulso ℎ[𝑛]
• Sinal de saída 𝑦[𝑛]