Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
N −1
1
Equação de Síntese: x ( n ) = IDFS ⎡⎣ X ( k ) ⎤⎦ =
N
∑ X ( k )W
k =0
− nk
N
Exercício 1
Implemente em MatLab as duas funções DFS e IDFS na forma mais eficiente através da utilização de uma
multiplicação matriz-vector.
Determine a DFS da seguinte sequência periódica: x( n ) = {..., 0 ,1, 2 ,3, 0 ,1, 2 ,3, 0 ,1, 2 ,3,...}
↑
a) Por cálculo analítico
Considerando N = 4 obtém-se
Então:
Exercício 3
Uma sequência periódica duma onda quadrada é dada por:
⎧1, mN ≤ n ≤ mN + L − 1
x ( n) = ⎨ com m = 0, ± , ±2,...
⎩0 , mN + L ≤ n ≤ (m + 1) N − 1
onde N é o período fundamental e L/N é o duty cycle.
Para L=5 e N=20 temos a seguinte sequência:
Três periodos de x(n)
1.5
1
x(n)
0.5
-0.5
-20 -10 0 10 20 30
n
L = 5; N = 20;
x = [ones(1,L), zeros(1,N-L)];
xn = [x x x];
n = -N:1:2*N-1;
stem(n,xn); xlabel('n'); ylabel('x(n)')
title('Três periodos de x(n)')
axis([-N,2*N-1,-0.5,1.5])
com
b) Trace o módulo X ( k ) para L=5 e N=20, L=5 e N=40, L=5 e N=60, L=7 e N=60. Comente os
resultados.
% Exercício 3.b)
L = [5 5 5 7];
N = [20 40 60 60];
for r=1:4
xn = [ones(1,L(r)), zeros(1,N(r)-L(r))];
Xk = dfs(xn);
magXk = abs([Xk(N(r)/2+1:N(r)) Xk(1:N(r)/2+1)]);
k = [-N(r)/2:N(r)/2];
subplot(4,1,r); stem(k,magXk);
axis([-N(r)/2,N(r)/2,-0.5,L(r)+.5])
xlabel('k'); ylabel('X(k)');
title(sprintf('DFS para L=%i e N=%i',L(r),N(r)))
end
Exercício 4
Seja a sequência x( n ) = {..., 0 ,1, 2 ,3, 0 ,1, 2 ,3, 0 ,1, 2 ,3,...} do exercício 1.
↑
a) Determine a sua DTFT X ( e jω )
b) Amostre X e ( ) em kw =
jω 2π
N k , k = 0 ,1, 2 ,3 e verifique se é igual a X ( k ) do exercício 1.
→ conforme esperado!
n =0
N −1
1
Transformada inversa: x ( n ) = IDFT ⎡⎣ X ( k ) ⎤⎦ =
N
∑ X ( k )W
k =0
− nk
N com 0 ≤ n ≤ N − 1
Crie em MatLab as duas funções DFT e IDFT através da alteração dos nomes da DFS e IDFS.
function [Xk] = dft(xn) e function [xn] = idft(Xk)
Crie em MatLab a função mod da seguinte forma:
function m = mod(n, N)
m = rem(n, N);
m = n + N;
m = rem(n, N);
Exercício 5
⎧⎪ x ( 0 ) , n=0
x ( ( −n ) ) N = ⎨ .
⎪⎩ x ( N − n ) , 1 ≤ n ≤ N − 1
10
x(n)
0
0 1 2 3 4 5 6 7 8 9 10
n
Sequencia simetrica Circular
10
x(-n mod 11)
0
0 1 2 3 4 5 6 7 8 9 10
n
⎧⎪ X ( 0 ) , k =0
DFT ⎡⎣ x ( ( − n ) ) N ⎤⎦ = X ( ( − k ) ) N = ⎨
⎪⎩ X ( N − k ) , 1 ≤ k ≤ N − 1
10 -10
0
-20
0 5 10 0 5 10
k k
RealDFT[x((-n))11] ImagDFT[x((-n))11]
50 20
40
10
30
20 0
10 -10
0
-20
0 5 10 0 5 10
k k
Exercício 6
Desenvolva uma função em MatLab que decomponha uma sequência de N pontos nas suas componentes
circulares Par e Ímpar, definidas da seguinte forma:
x par ( n ) 1 ⎡ x ( n ) + x ( ( −n ) ) ⎤ e xímpar ( n ) 1 ⎡ x ( n ) − x ( ( −n ) ) ⎤
2 ⎣ N⎦ 2 ⎣ N⎦
x ( n ) = 10 ( 0.8 ) , 0 ≤ n ≤ 10 .
n
Considere novamente a sequência
Circular-even component
10
xec(n)
0
0 1 2 3 4 5 6 7 8 9 10
n
Circular-odd component
4
2
xoc(n)
-2
-4
0 1 2 3 4 5 6 7 8 9 10
n
X par ( k ) = Re ⎡⎣ X ( k ) ⎤⎦ = Re ⎡⎣ X ( ( −k ) ) N ⎤⎦ e X ímpar ( k ) = Im ⎡⎣ X ( k ) ⎤⎦ = Im ⎡⎣ X ( ( − k ) ) N ⎤⎦
% Exercício 7.b)
X = dft(x,11); Xec = dft(xec,11); Xoc = dft(xoc,11);
subplot(2,2,1); stem(n,real(X)); axis([-0.5,10.5,-5,50])
title('Real{DFT[x(n)]}'); xlabel('k');
subplot(2,2,2); stem(n,imag(X)); axis([-0.5,10.5,-20,20])
title('Imag{DFT[x(n)]}'); xlabel('k');
subplot(2,2,3); stem(n,real(Xec)); axis([-0.5,10.5,-5,50])
title('DFT[xec(n)]'); xlabel('k');
subplot(2,2,4); stem(n,imag(Xoc)); axis([-0.5,10.5,-20,20])
title('DFT[xoc(n)]'); xlabel('k');
RealDFT[x(n)] ImagDFT[x(n)]
50 20
40
10
30
20 0
10 -10
0
-20
0 5 10 0 5 10
k k
DFT[xec(n)] DFT[xoc(n)]
50 20
40
10
30
20 0
10 -10
0
-20
0 5 10 0 5 10
k k
x ( n ) = 10 ( 0.8 ) , 0 ≤ n ≤ 10 .
n
Considere novamente a sequência
function y = cirshftt(x,m,N)
% Circular shift of m samples wrt size N in sequence x: (time domain)
% -------------------------------------------------------------------
% [y] = cirshftt(x,m,N)
% y = output sequence containing the circular shift
% x = input sequence of length <= N
% m = sample shift
% N = size of circular buffer
% Method: y(n) = x((n-m) mod N)
10 10
5 5
0 0
-5 0 5 10 15 -5 0 5 10 15
n n
Deslocamento Periodico Deslocamento circular
10 10
5 5
0 0
-5 0 5 10 15 -5 0 5 10 15
n n
b) Represente x ( ( n − 3) )15 que representa um deslocamento circular em direcção à direita, onde se
assume que a sequência tem um comprimento de 15 pontos (por adição de zeros).
10 10
8 8
x((n-3) mod 15)
6 6
x(n)
4 4
2 2
0 0
0 5 10 15 0 5 10 15
n n
10 10
8 8
2 2
0 0
0 5 10 15 0 5 10 15
n n
Convolução Circular
N −1
Definição: N x ( n) = ∑ x ( m) x (( n − m)) , 0 ≤ n ≤ N −1
x1 ( n ) ○ 2 1 2 N
m=0
Exercício 9
Abordagem no tempo:
Para n = 0:
Para n = 1:
Para n = 2:
Para n = 3:
Abordagem na frequência:
DFT de x1(n):
DFT de x2(n):
Multiplicação:
Após a IDFT: → conforme era esperado!
i) x1 ( n ) ○
5 x ( n)
2
>> y = circonvt(x1,x2,5)
y =
9 4 9 14 14
ii) x1 ( n ) ○
6 x2 ( n )
>> y = circonvt(x1,x2,6)
y =
1 4 9 14 14 8
Comentário: Comparando com a convolução linear,
>> y = conv(x1,x2)
y =
1 4 9 14 14 8
observa-se que, ao aumentar o valor de N na convolução circular, se obtêm os pontos
suplementares da convolução linear, tendo ambas resultado idêntico quando N = N1 + N2 – 1.
Exercício 11
Para N = 6:
Para N = 5:
Para N = 4:
b) Verifique as relações de erro, para cada N, relativamente à convolução linear.
Sendo a convolução linear x3 ( n ) = {1,1,-1,-2 , −1,1,1} , o erro é dado pela diferença entre a
convolução circular e a linear, considerando os primeiros N pontos.
Para N = 6:
Para N = 5:
Para N = 4:
- Criar a sequência x̂(n) a partir de x ( n ) , acrescentando M-1 zeros no início e N-1 zeros no final:
⎡ P + M − 2⎤
- O número total de blocos é dado por K =⎢ ⎥⎦ + 1 , onde [.] significa truncar.
⎣ L
Exercício 12
Como M = 3 é necessário sobrepor cada bloco com o anterior em duas amostras. Se x ( n ) for uma
sequência de 10 pontos, serão necessários (M-1) = 2 zeros no início. Como N = 6, serão necessárias
as 3 seguintes secções: