% Funció per al càlcul de la Transformada de Fourier X(f) d'un senyal x(t)
%
% - Paràmetres d'entrada:
%	x: vector que conté les mostres de x(t)
%	t: vector de temps corresponent a les mostres de x(t)
%
% - Paràmetres de sortida:
%	X: vector que conté les mostres de X(f)
%	f: vector de freqüències corresponents a les mostres de X(f)
%
% Utilitzeu-la amb precaució:
% - El senyal x(t) ha de ser de durada finita;
% - El senyal x(t) ha de ser mostrejat a una freqüència suficientment alta;
% - És recomanable que hi hagi una seqüència de zeros suficientment gran al 
%   davant i/o al darrere dels valors no nuls de x.
%

function [X,f]=TF(x,t)

% Nombre de mostres del senyal x
N=length(x);

% Freqüència de mostreig
fs=1/(t(2)-t(1));

% Càlcul de la TF
X1=fft(x)/fs;
X=fftshift(X1);

% Freqüència corresponent a cada mostra de X(f)
f=0*X;
f(1:end)=[-ceil((N-1)/2):floor((N-1)/2)]*fs/N;

% Correcció de fase per al cas en que el vector de temps comença en t diferent de zero
X=X.*exp(-j*2*pi*f*t(1));