Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ndice
1)
2)
Problema 1 .................................................................................................................... 3
1.2.
Problema 2 .................................................................................................................... 4
1.3.
Problema 3 .................................................................................................................... 6
3)
Funo fftseq............................................................................................................... 10
3.2.
3.3.
3.4.
1) Trabalho Prtico N1
1.1. Problema 1
O objectivo deste problema criar uma funo que calcula a fft de uma
sequncia de entrada e em que caso o seu comprimento no seja uma potncia
de 2 faz uma fft com um comprimento que seja a potncia de 2 mais prxima. Para
isso feito o zero-padding da sequncia de entrada.
Como valores de entrada tem a sequncia , o perodo de amostra
ea
resoluo em frequncia
. Como valores de sada so a FFT , a sequncia
com o zero-padding e a nova resoluo em frequncia .
Ficheiro fftseq.m:
function [M,m,df]=fftseq(m,ts,df)
%[M,m,df]=fftseq(m,ts,df)
%[M,m,df]=fftseq(m,ts)
% m=sinal
% Ts=periodo de amostragem
% df=resoluo de frequencia
% df=fs/N
fs=1/ts;
if nargin == 2
n1=0;
else
n1=fs/df;
end
n2=length(m);
n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);
m=[m,zeros(1,n-n2)];
df=fs/n;
end
1.2. Problema 2
Considerando os seguintes sinais
E os seguintes dados:
-Largura de Banda:
-Resoluo em frequncia:
Calcular e representar graficamente a amplitude e a fase do espectro dos sinais
da figura anterior utilizando a funo desenvolvida na funo anterior.
Sinal x1
Sinal x2
0.9
0.9
0.8
0.8
0.7
0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2
0.2
0.1
0.1
0
-1
-0.5
0
Tempo [S]
0.5
0
-1
-0.5
0.5
Tempo [S]
1.5
Espetro sinal x1
Espetro sinal x2
1.6
1.6
1.4
1.4
1.2
1.2
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
-5
0
Frequncia [Hz]
0
-5
0
Frequncia [Hz]
Fase sinal x1
Fase sinal x2
0
-20
-20
-40
-60
-80
-60
Fase []
Fase []
-40
-80
-100
-120
-140
-100
-160
-120
-180
-140
-5
0
Frequncia [Hz]
-200
-5
0
Frequncia [Hz]
: 1024
- Resoluo de Frequncia
- Nmero de Pontos
: 0.009766 Hz
: 0.009766 Hz
: 1024
Tanto a resoluo de frequncia como o nmero de pontos depois do ZeroPadding so iguais uma vez que a nica diferena entre os sinais
e
um
atraso no tempo.
Na representao grfica da FFT dos sinais, a nica diferena est na fase uma
vez que um atraso de um sinal no tempo provoca um desfasamento na frequncia.
Como se pode observar na figura 4.
1.3. Problema 3
Considerando o seguinte sinal
Sinal
-1.5
-1
-0.5
0
Tempo [S]
0.5
1.5
Largura de Banda:
Resoluo de Frequncia:
FFT do sinal
:
Sinal X(f)
3
2.5
1.5
0.5
0
-3
-2
-1
0
Frequncia [Hz]
Sinal analtico:
:
Sinal X(f) analtico
3
2.5
1.5
0.5
0
-3
-2
-1
0
Frequncia [Hz]
Justificao de resultados:
- Frequncia de amostragem:
- Nmero de Pontos:
2) Trabalho Prtico N2
Calculo de x(t)
10
15
20
Calculo de x(n)
10
15
20
10
xlabel('Tempo [S]');
%FFT x1
[X1,x1_zp,df1]=fftseq(x1, Ts, df);
X1=X1/fs;
sprintf('Resoluo de Frequncia X1: %f', df1)
sprintf('Nmero de Pontos X1: %d', length(x1_zp)) %Numero de pontos
com zero padding
f1=[-B:df1:B-df1];
figure%amplitude
plot(f1,fftshift(abs(X1)),'b','LineWidth',2);
title('Espetro sinal x1');
xlabel('Frequncia [Hz]');
figure%fase
plot(f1,fftshift(unwrap(angle(X1))),'b','LineWidth',2);
title('Fase sinal x1');
xlabel('Frequncia [Hz]');
ylabel('Fase []');
%FFT x2
[X2,x2_zp,df2]=fftseq(x2, Ts, df);
X2=X2/fs;
sprintf('Resoluo de Frequncia X2: %f', df2)
sprintf('Nmero de Pontos X2: %d', length(x2_zp)) %Numero de pontos
com zero padding
f2=[-B:df2:B-df2];
figure%amplitude
plot(f2,fftshift(abs(X2)),'m','LineWidth',2);
title('Espetro sinal x2');
xlabel('Frequncia [Hz]');
figure%fase
plot(f1,fftshift(unwrap(angle(X2))),'m','LineWidth',2);
title('Fase sinal x2');
xlabel('Frequncia [Hz]');
ylabel('Fase []');
11
x(1/Ts+1:3/Ts+1)=1;
x(3/Ts+1:4/Ts+1)=-t(3/Ts+1:4/Ts+1)+2;
%Grfico
figure;
plot(t,x,'b','LineWidth',2);
title('Sinal x(t)');
xlabel('Tempo [S]');
%FFT
[X,x_zp,dfx]=fftseq(x, Ts, df);
X=X/fs;
sprintf('Resoluo na Frequncia: %f', dfx)
sprintf('Nmero de Pontos X: %d', length(x_zp)) %Numero de pontos
com zero padding
f=[-B:dfx:B-dfx];
figure
plot(f,fftshift(abs(X)),'b','LineWidth',2);
title('Sinal X(f)');
xlabel('Frequncia [Hz]');
%Espetro Analtico
Xa=4*sinc(2*f).^2-sinc(f).^2;
figure
plot(f,abs(Xa),'m','LineWidth',2);
title('Sinal X(f) analtico');
xlabel('Frequncia [Hz]');
%Durao do Smbolo
%Numero de Amostras
%x(t)
xt=zeros(1,101);
for t=0:100
for k=0:N-1
xt(1,t+1)=xt(1,t+1)+1/sqrt(N)*x(k+1)*exp(1i*2*pi*k*t/T);
%Pela Formula [2]
end
end
12
%Plot x(t)
t2=[0:19];
figure;
plot(t2,abs(xt(1,1:5:100)),'m');
title('x(t)');
%x[n]
xn=zeros(1,N);
for n=0:N-1
for k=0:N-1
xn(1,n+1)=xn(1,n+1)+1/sqrt(N)*x(k+1)*exp(1i*2*pi*k*n/N);
%Pela Formula [1]
end
end
%Plot x[n]
figure;
plot([0:19],abs(xn),'b');
title('x[n]');
%Diferena entre x(t) e x[n]
for n=0:N-1
dif1(n+1)=xt(T/N*n+1)-xn(n+1);
end
errox=norm(dif1);
sprintf('Erro entre x(t) e x[n]: %d', errox)
%Recuperao da sequncia de smbolos enviada
y=zeros(1,10);
for k=1:9
for n=0:N-1
y(1,k+1)=y(1,k+1)+1/sqrt(N)*xn(n+1)*exp(-i*2*pi*k*n/N);
end
end
%Diferena entre a sequncia enviada e a sequncia recebida
dif2=y(1:10)-x(1:10);
e=norm(dif2);
sprintf('Erro entre as sequncias enviadas e recebidas : %d', e)
13