Escolar Documentos
Profissional Documentos
Cultura Documentos
X[n] = [1.0000 0.0000 -1.0000 -0.0000 1.0000 -0.0000 -1.0000 -0.0000 1.0000
0.0000 -1.0000 0.0000 1.0000 0.0000 -1.0000 -0.0000]
clc;
f=10;
t=1/f;
fs=8;
Ts=1/fs;
tc=0:0.001:3*t;
xn=cos(2*pi*f*tc);
n=0:15;
x2=cos(2*pi*f*n*Ts);
N=length(x2);
Xk=calcdft(x2,N); % chamar a
função calcdtf que calcula a DTF
disp('DFT X(k): '); % mostrar a DTF
disp(Xk);
mgXk = abs(Xk); % módulo ou
magnitude de X(k)
phaseXk = angle(Xk); % fase de X(k)
k=-N/2:(N/2)-1;
subplot (2,1,1);
stem(k,mgXk);
title ('DFT sequencia: ');
xlabel('Frequencia');
ylabel('Magnitude');
function[Xk] = calcdft(x2,N)
L=length(x2); %
tamanho da sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; %
completar com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); %
laço para definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
end
Xk=calcdft(xn,N); % chamar a
função calcdtf que calcula a DTF
disp('DFT X(k): '); % mostrar a DTF
disp(Xk);
mgXk = abs(Xk); % módulo ou
magnitude de X(k)
phaseXk = angle(Xk); % fase de X(k)
k=-N/2:(N/2)-1;
subplot (2,1,1);
stem(k,mgXk);
title ('DFT sequencia: ');
xlabel('Frequencia');
ylabel('Magnitude');
function[Xk] = calcdft(xn,N)
L=length(x2); %
tamanho da sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; %
completar com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); %
laço para definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
end
b.)
X[n] = [4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4]
f=10;
t=1/f;
fs=20;
Ts=1/fs;
tc=0:0.001:3*t;
x=4*cos(8*pi*f*tc);
n=0:15;
x2=4*cos(8*pi*f*n*Ts);
N=length(x2);
Xk=calcdft(x2,N); % chamar a
função calcdtf que calcula a DTF
disp('DFT X(k): '); % mostrar a DTF
disp(Xk);
mgXk = abs(Xk); % módulo ou
magnitude de X(k)
phaseXk = angle(Xk); % fase de X(k)
k=-N/2:(N/2)-1;
subplot (2,1,1);
stem(k,mgXk);
title ('DFT sequencia: ');
xlabel('Frequencia');
ylabel('Magnitude');
function[Xk] = calcdft(x2,N)
L=length(x2); %
tamanho da sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; %
completar com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); %
laço para definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
end
Xk=calcdft(xn,N); % chamar a
função calcdtf que calcula a DTF
disp('DFT X(k): '); % mostrar a DTF
disp(Xk);
mgXk = abs(Xk); % módulo ou
magnitude de X(k)
phaseXk = angle(Xk); % fase de X(k)
k=-N/2:(N/2)-1;
subplot (2,1,1);
stem(k,mgXk);
title ('DFT sequencia: ');
xlabel('Frequencia');
ylabel('Magnitude');
function[Xk] = calcdft(xn,N)
L=length(x2); %
tamanho da sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; %
completar com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); %
laço para definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
End
No domínio da frequência: 𝑌(𝑤) = 𝑋(𝑤)𝐻(𝑤). Então se quisermos amostrar este sinal para
representações computacionais, 𝑌(𝑤) deve ter o número de amostras maior ou igual a (𝐿 + 𝑀 – 1).
Teremos 𝑌(𝑘) = 𝑌(𝑤)|𝑤=2𝜋𝑘/𝑁 = 𝑋(𝑤)𝐻(𝑤)|𝑤=2𝜋𝑘/𝑁 com 𝑘 = 0,1,2,...,𝑁–1. 𝑌(𝑘) = 𝑋(𝑘)𝐻(𝑘) com
𝑘 = 0,1,2,...,𝑁−1. Se as sequências 𝑥[𝑛] ou ℎ[𝑛] tiverem comprimento menor que 𝑁, devemos
completar a sequência menor com zeros para manter o comprimento 𝑁, visando o cálculo da DFT
de 𝑁 pontos. Isto leva a uma sequência também de 𝑁 pontos para 𝑦[𝑛], pela IDFT. O resultado na
saída será o mesmo para a convolução linear.
function[Xk] = calcdft(xn,N)
L=length(xn); % tamanho da
sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; % completar
com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); % laço para
definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
end
b. % Calculo da transformada de fourier discreta do DEGRAU (n-n0)
clc;
function[Xk] = calcdft(xn,N)
L=length(xn); % tamanho da
sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; % completar
com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); % laço para
definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
End
Para n0=4
C. % Calculo da transformada de fourier discreta da EXPONENCIAL.
clc;
a=input('Digite um valor entre zero e um: '); % aceitar valor de alfa
xn=((a).^n).*un(n); % define a exponencial
N=length(xn); % N é do tamanho da sequencia discreta
y=xn;
subplot(3,1,1); stem(n,y);
Xk=calcdft(xn,N); % chamar a função calcdtf
que calcula a DTF
disp('DFT X(k): '); % mostrar a DTF
disp(Xk);
mgXk = abs(Xk); % módulo ou magnitude de
X(k)
phaseXk = angle(Xk); % fase de X(k)
k=0:N-1;
subplot (3,1,2);
stem(k,mgXk);
title ('DFT sequencia: ');
xlabel('Frequencia');
ylabel('Magnitude');
function[Xk] = calcdft(xn,N)
L=length(xn); % tamanho da
sequencia
if(N<L)
error('N deve ser maior ou igual a L!!')
end
x1=[xn, zeros(1,N-L)]; % completar
com zeros a sequencia x[n]
for k=0:1:N-1
for n=0:1:N-1
p=exp(-i*2*pi*n*k/N); % laço para
definir Wn
W(k+1,n+1)=p;
end
end
disp('Matrix Wn para DFT')
disp(W);
Xk=W*(x1.')
end