Mudanças entre as edições de "PSD29007-Engtelecom(2019-2) - Prof. Marcos Moecke"
Ir para navegação
Ir para pesquisar
(→ATUAL) |
(→ATUAL) |
||
Linha 175: | Linha 175: | ||
:* Filtros Digitais | :* Filtros Digitais | ||
<!--([https://owncloud.ifsc.edu.br/index.php/s/WWY2LWexts8PKDs Experimento 2.3])--> | <!--([https://owncloud.ifsc.edu.br/index.php/s/WWY2LWexts8PKDs Experimento 2.3])--> | ||
+ | ;ATIVIDADE 1: | ||
+ | |||
+ | Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz). | ||
+ | |||
<syntaxhighlight lang=matlab> | <syntaxhighlight lang=matlab> | ||
%% Experimento 2.3 - Filtros Digitais | %% Experimento 2.3 - Filtros Digitais | ||
Linha 215: | Linha 219: | ||
+ | ;ATIVIDADE 2: | ||
− | :* | + | :* A filtragem de sinais digitais pode ser realizada de diferentes formas: |
− | ::* convolução (conv(x,h)), | + | ::* convolução (y = conv(x,h)), onde x(n) é o sinal de entrada e h(n) é a resposta ao impulso do filtro (sistema linear invariante no tempo), |
::* filtragem no domínio do tempo (y = a1.x(n)+ a2.x(n-1)+ .. ak.x(n-k)); | ::* filtragem no domínio do tempo (y = a1.x(n)+ a2.x(n-1)+ .. ak.x(n-k)); | ||
::* no domínio da frequência (y = ifft(fft(x)fft(h)) | ::* no domínio da frequência (y = ifft(fft(x)fft(h)) | ||
Linha 233: | Linha 238: | ||
%Nh = 400; Nx = 10000; | %Nh = 400; Nx = 10000; | ||
x = ones(1,Nx); | x = ones(1,Nx); | ||
− | % A resposta ao | + | % A resposta ao impulso de um sistema h(n) |
% no filtro FIR aos coeficientes b(n) = h(n) | % no filtro FIR aos coeficientes b(n) = h(n) | ||
h = [1:Nh]; b = h; | h = [1:Nh]; b = h; | ||
%% Filtrando o sinal e medindo tempos | %% Filtrando o sinal e medindo tempos | ||
− | % Filtragem utilizando a convolução | + | % OPÇÃO 1 - Filtragem utilizando a convolução |
% NOTE: length(y) = length(x) + length(h) -1 | % NOTE: length(y) = length(x) + length(h) -1 | ||
+ | |||
tic; % iniciar a contagem do tempo | tic; % iniciar a contagem do tempo | ||
y1 = conv(x,h); | y1 = conv(x,h); | ||
− | t(1) = toc; % terminar | + | t(1) = toc; % terminar a contagem e mostrar tempo no console |
− | % filtragem utilizando a equação recursiva | + | % OPÇÃO 2 - filtragem utilizando a equação recursiva |
% NOTE: length(y) = length(x) | % NOTE: length(y) = length(x) | ||
+ | |||
tic; | tic; | ||
y2 = filter(b,1,x); | y2 = filter(b,1,x); | ||
t(2) = toc; | t(2) = toc; | ||
− | % filtragem utilizando a equação recursiva | + | % OPÇÃO 3 - filtragem utilizando a equação recursiva |
% aumentando o tamanho de x para que length(y3) = length(y1) | % aumentando o tamanho de x para que length(y3) = length(y1) | ||
x3 = [x zeros(1,length(h)-1)]; | x3 = [x zeros(1,length(h)-1)]; | ||
+ | |||
tic; | tic; | ||
y3 = filter(h,1,x3); | y3 = filter(h,1,x3); | ||
Linha 259: | Linha 267: | ||
length_y = length(x) + length(h) - 1; | length_y = length(x) + length(h) - 1; | ||
− | % filtragem utilizando a FFT | + | % OPÇÃO 4 - filtragem utilizando a FFT |
% a y = IFFT(FFT(x)*FFT(h)) | % a y = IFFT(FFT(x)*FFT(h)) | ||
+ | |||
tic; | tic; | ||
X = fft(x,length_y); | X = fft(x,length_y); | ||
Linha 268: | Linha 277: | ||
t(4) = toc; | t(4) = toc; | ||
− | % filtragem utilizando a função fftfilt | + | % OPÇÃO 5 - filtragem utilizando a função fftfilt |
% a y = IFFT(FFT(x)*FFT(h)) | % a y = IFFT(FFT(x)*FFT(h)) | ||
Linha 291: | Linha 300: | ||
subplot(414);stem(y3, '+m');legend('y3') | subplot(414);stem(y3, '+m');legend('y3') | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
{{collapse bottom}} | {{collapse bottom}} | ||
− | + | * Verificar as funções [https://la.mathworks.com/help/matlab/ref/tic.html tic] e [https://la.mathworks.com/help/matlab/ref/toc.html toc] | |
* Notar a diferença de tempo de processamento entre os processos de filtragem. | * Notar a diferença de tempo de processamento entre os processos de filtragem. | ||
− | * A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)). | + | * A situação pode ser muito diferente conforme muda o tamanho do sinal e ordem do filtro (h(n)). Modifique a resposta ao impulso e o sinal de entrada modificando os valores das variáveis de tamanho: Nh = 10, 100, 1000; Nx = 20, 1000, 10000; |
+ | * Em função do sistema operacional e reserva de memória para as variáveis é importante desprezar a primeira medida de tempo. Realize 3 medidas de tempo para cada uma das 5 opções de filtragem, com pelo menos duas combinações de comprimento Nh e Nx. Relate os resultados obtidos no comentário da atividade no Moodle. | ||
<!-- | <!-- |
Edição das 00h23min de 15 de agosto de 2019
Registro on-line das aulas
Unidade 1 | ||||||||
---|---|---|---|---|---|---|---|---|
Unidade 1
ATUAL
Execute no Matlab o código abaixo, e analise os 3 filtros implementados através dos seus zeros e polos. Busque tirar conclusões sobre a influência da posição dos polos e zeros (ver o gráfico do plano z) e correlacione com a resposta de frequência em magnitude (gráfico do freqz). %% Experimento 2.3 - Filtros Digitais
% Exemplos e Experimentos baseados no livro:
% DINIZ, P. S. R., DA SILVA, E. A. B., e LIMA NETTO, S. Processamento Digital de Sinais: Projeto e Análise de Sistemas. 2. ed. Porto Alegre: Bookman, 2014. 976 p. ISBN 978-8582601235.
% FILE: Exp2_3.m
%% 1º filtro
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 ]'; P = [p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 2º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.9*exp(1j*pi/4);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p1 p1' p1 p1']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
%% 3º filtro
z1 = exp(1j*pi/8);
z2 = exp(1j*3*pi/8);
p1 = 0.99*exp(1j*pi/4);
p2 = 0.9*exp(1j*pi/4 - 1j*pi/30);
p3 = 0.9*exp(1j*pi/4 + 1j*pi/30);
Z = [1 -1 z1 z1' z2 z2']';
P = [p1 p1' p2 p2' p3 p3']';
[num,den] = zp2tf(Z,P,1);
[h,w] = freqz(num,den);
figure(1); plot(w,abs(h)/max(abs(h)));
figure(2); zplane(num,den);
|
Avaliações
- Entrega dos diversas Atividades Extraclasse ao longo do semestre.
- Provas escritas A1 e A2
- Entrega do Projeto Final. O projeto é avaliado nos quesitos:
- 1) Implementação do Sistema,
- 2) Documentação,
- 3) Avaliação Global do aluno no projeto.
- Entrega dos Atividades Extraclasse ao longo do semestre AE1 a AE(N). A entrega, detalhes e prazos de cada AE serão indicados na plataforma Moodle