Você está na página 1de 10

1) a.

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

x[n] = [ 2 2 -2 -2 ] para N=10


10.000
Para uma DFT com 128 amostras 𝑋(𝑒 𝑗𝑤 ) terá 𝑓 = = 78,125 frequências
128
igualmente espaçadas entre 0 e 2𝜋 o que corresponde a 128 amostras na escala 0 ≤ 𝑓 ≤
10.000. Correspondendo a um espaçamento entre as amostras espectrais de ∆𝑓 =
78,125 𝐻𝑧.

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.

X1=[1,2,3,4,5,6,7,8]; % primeira sequência


X2=[2,3,5,9]; % segunda sequência;
f=conv(X1,X2); % convolução pela função CONV
subplot(3,2,1); stem(X1); ylabel('amplitude"); title("Primeira
sequencia');
subplot(3,2,3); stem(X2); ylabel('amplitude'); title('Segunda
sequencia');
subplot(3,2,5); stem(f); ylabel('amplitude'); title('Convolução
linear'); xlabel('variável n');
% cálculo pela DFT
n1=length(X1); % comprimento de X1
n2=length(X2); % comprimento de X2
m=n1+n2-1; % ajuste para mesmo período
X=[X1 zeros(1,n2-1)]; % ajuste do comprimento com zeros
Y=[X2 zeros(1,n1-1)]; % ajuste do comprimento com zeros
fftX=fft(X,m); % FFT de X
fftY=fft(Y,m); % FFT de Y
DFTXY=fftX.*fftY; % multiplicação na frequência (convolução no
tempo)
XY=ifft(DFTXY,m) % DFT inversa
subplot(3,2,2); stem(X); title('primeira sequência preenchida com
zeros');
subplot(3,2,4); stem(Y); title('segunda sequência preenchida com
zeros');
subplot(3,2,6); stem(XY); title('convolução circular' );
xlabel('variável k');
a. % Calculo da transformada de fourier discreta do IMPULSO
clc;
xn=impn(n);%input('Digite a sequencia x[n]: ');
N=length(xn); % aceitar a sequencia discreta no formato entre
colchetes
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
b. % Calculo da transformada de fourier discreta do DEGRAU (n-n0)
clc;

n0=input('Digite n0: '); % aceitar valor de n0


xn=un(n-n0);% define o degrau');
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

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

Você também pode gostar