% versione 21/11/13
clear all ; close all


%----------PARAMETRI----------------


N= 2^8  % N.RO PUNTI DI CAMPIONAMENTO     % scegliere 2^3 2^8 2^10

% ------- VARIABILE-----------------
deltat=(2*pi)/N; t = (0:N-1)*deltat; % vettore della variabile 

% ------------------------------ FUNZIONI 	

f = t

energia1 = norm(f).^2/N  % NORMA L2 DI f

% ----------TRASFORMATA ----------------------------------------
Y = fft(f)/N;
energia2 = norm(Y).^2  % NORMA L2 DI Y  
FM=(N/2)                 % FM <= N/2 Nyquist (FM>FLT) (Nyquist-Shannon)

% ------- ANTITRASFORMATA\POLINOMIO TRIGONOMETRICO -------------
FLT = N/4-1 % filtro frequenze (alte), minore o uguale N/2-1
YFLT = Y.* [ones(1,1+FLT) zeros(1, N-1-2*FLT) ones(1,FLT)];
%*[ones(1,2+FLT) zeros(1,FLT)];
%.* [ ones(1,1+FLT) zeros(1, N-1-2*FLT) ones(1,FLT)]; 
Z = ifft(YFLT*N);    


%-------- ANTITRASFORMATA PARI/DISPARI
ZP = ifft(real(YFLT)*N);
ZD = ifft(i*imag(YFLT)*N);



%------- Errore---
E = abs(Z-f);


%


% ------------------------------ GRAFICA
scrsz = get(0,'ScreenSize');
% funzione ed antitrasformata
Fig1 = figure(1);
set(Fig1,'Position',[1 scrsz(4)/2 scrsz(3) scrsz(4)/2])
subplot(1,4,1:2); plot(t,f,'linewidth',1.5)    % grafico di f 
title('funzione')
subplot(1,4,3:4); plot(t,Z,'linewidth',1.5)    % anti-trasformata
title('anti-trasformata')

% real, imag, abs e complex
Fig2 = figure(2);
set(Fig2,'Position',[1 1 scrsz(3) scrsz(4)])
subplot(2,2,1); bar ( (1:FM) , real(Y(1:FM)) )	
title('real')
subplot(2,2,2); bar ( (1:FM) , imag(Y(1:FM)) )	
title('imag') 
subplot(2,2,3); bar ( (1:FM) , abs(Y(1:FM)) )
title('abs')
subplot(2,2,4); plot(real(Y(1:FM)),imag(Y(1:FM)),'d')
title('piano complesso')

%%%%

Fig3 = figure(3);
set(Fig3,'Position',[1 scrsz(4)/2 scrsz(3) scrsz(4)/2])
subplot(1,4,1:2); plot(t,f,'r','linewidth',1.5) 
hold on
subplot(1,4,1:2); plot(t,Z) % 
title('segnale/antitrasformata')
subplot(1,4,3:4); plot(t,E,'linewidth',1.5)    % 
title('Errore')



