Processamento Digital de sinais
Prof. Débora Meyhofer Ferreira
Transformada de Fourier Discreta
MatLab
Laboratório
1) Digitar o programa a seguir para determinar a a
magnitude e fase, assim como a parte real e imaginária de x(n) = (0,5)n u(n), usando
501 pontos espaçados entre [0, π].
Como:
No Matlab:
w =
[0:1:500]*pi/500; %eixo
dividido em 501 pontos
x = exp(j*w) ./ (exp(j*w) - 0.5*ones(1,501));
magx = abs(x);angx = angle(x);
realx = real(x);
imagx = imag(x);
subplot(2,2,1); plot(w/pi,magx); grid
xlabel('frenquencia
em PI unidades'); title('Parte de Magnetude'); ylabel('Magnetude')
subplot(2,2,3); plot(w/pi,angx); grid
xlabel('frenquencia
em PI unidades'); title('Parte do Angulo'); ylabel('Radiano')
subplot(2,2,2); plot(w/pi,realx); grid
xlabel('frenquencia
em PI unidades'); title('Parte Real'); ylabel('Real')
subplot(2,2,4); plot(w/pi,imagx); grid
xlabel('frenquencia
em PI unidades'); title('Parte Imaginaria'); ylabel('Imaginario')
2). De maneira
similar ao exemplo 1, escreva um programa no MatLab que plote |X(ejw)| e ∠ X(ejw) da sequência abaixo,
usando 501 freqüências equidistantes no intervalo [0,π].
x(n)={1,2,3,4,5}
No
Matlab:
n = -1:3; x =
1:5;
k = 0:500; w =
(pi/500)*k;
x = x *
(exp(-j*pi/500)) .^ (n'*k);
w =
[0:1:500]*pi/500; %eixo
dividido em 501 pontos
magx = abs(x);angx = angle(x);
realx = real(x);
imagx = imag(x);
subplot(2,2,1); plot(w/pi,magx); grid
xlabel('frenquencia
em PI unidades'); title('Parte de Magnetude'); ylabel('Magnetude')
subplot(2,2,3); plot(w/pi,angx); grid
xlabel('frenquencia
em PI unidades'); title('Parte do Angulo'); ylabel('Radiano')
subplot(2,2,2); plot(w/pi,realx); grid
xlabel('frenquencia
em PI unidades'); title('Parte Real'); ylabel('Real')
subplot(2,2,4); plot(w/pi,imagx); grid
xlabel('frenquencia
em PI unidades'); title('Parte Imaginaria'); ylabel('Imaginario')
3) Encontre a resposta em freqüência H (e jw ) de h(n) = 0,9n u(n) (feito em classe). Plote a
amplitude e fase.
No Matlab:
w =
[0:1:500]*pi/500; %[0, pi]
eixo dividido em 501 pontos
H = exp(j*w) ./ (exp(j*w) - 0.9*ones(1,501));
magH =
abs(H);angH = angle(H);
realH = real(H);
imagH = imag(H);
subplot(2,2,1); plot(w/pi,magH); grid
xlabel('frenquencia
em PI unidades'); title('Parte de Magnetude'); ylabel('Magnetude')
subplot(2,2,3); plot(w/pi,angH); grid
xlabel('frenquencia
em PI unidades'); title('Parte do Angulo'); ylabel('Radiano')
subplot(2,2,2); plot(w/pi,realH); grid
xlabel('frenquencia
em PI unidades'); title('Parte Real'); ylabel('Real')
subplot(2,2,4); plot(w/pi,imagH); grid
xlabel('frenquencia
em PI unidades'); title('Parte Imaginaria'); ylabel('Imaginario')
4) Um filtro passa-baixa de 3. ordem é descrito
pela seguinte equação de diferenças:
Plote a resposta em freqüência do filtro para
confirmar o seu comportamento.
No Matlab:
b = [0.0181,
0.0543, 0.0543, 0.0181]; %Coeficiente
de filtro matriz b
a = [1.0000,
-1.7600, 1.1829, -0.2781]; %Coeficiente de filtro matriz a
m =
0:length(b)-1; l = 0:length(a)-1; %Indice
das matrizes m e l
K = 500; k =
0:1:K; %Indice da matriz k para
frequencias
w = pi*k/K; %[0, pi]
eixo divido em 501 pontos
num = b *
exp(-j*m'*w); %Calculos
do numerador
den = a *
exp(-j*l'*w); %Calculos
do denominador
H = num ./
den; %Resposta
à frequencia
magH = abs(H);
angH = angle(H); %Resposta
à fase e magnetude
subplot(1,1,1);
subplot(2,1,1); plot(w/pi,magH); grid; axis([0,1,0,1])
xlabel('frenquencia
em PI unidades'); ylabel('|H|');
title('resposta
Magnetude');
subplot(2,1,2); plot(w/pi,angH/pi); grid
xlabel('frenquencia
em PI unidades'); ylabel('Fase em
PI Radianos' )
title('resposta
Fase');
Nenhum comentário:
Postar um comentário