clear;
% Display the date and runtime in the command window
disp(datestr(clock));

Fs1=3e4;   % samplerate 1
Ts1=1/Fs1;
fsig=11000; % signal frequency in Hz

t1=(0:Ts1:1);   % timevector 1
L1=length(t1);

NFFT1 = (2^nextpow2(L1))/2; % previous power of 2
t1=t1(1:NFFT1); % crop signal to a power of 2

y1=sin(2*pi*fsig*t1);   % signal 1: sinewave with frequency f and samplerate 1, rectangular windowed

figure(1);
plot(t1,y1);      % plot signal in timedomain
y1_flattop=y1.*flattopwin(NFFT1)';  % create a flattop windowed signal
y1_hann=y1.*hann(NFFT1)';   % create a hanning windowed signal

f1 = Fs1/2*linspace(0,1,NFFT1/2+1);     % frequency axis for plot

% make FFT
Y1 = (0:1:NFFT1);
Y1 = fft(y1,NFFT1);

Y1_hann = (0:1:NFFT1);           
Y1_hann = fft(y1_hann,NFFT1);

Y1_flattop = (0:1:NFFT1);            
Y1_flattop = fft(y1_flattop,NFFT1);

% calculate amplitudespectrum
amp1 = abs(Y1(1:NFFT1/2+1))*2/NFFT1; % Amplitudenspektrum
amp1(1) = amp1(1)/2;

amp1_hann = abs(Y1_hann(1:NFFT1/2+1))*2/NFFT1; % Amplitudenspektrum
amp1_hann(1) = amp1_hann(1)/2;

amp1_flattop = abs(Y1_flattop(1:NFFT1/2+1))*2/NFFT1; % Amplitudenspektrum
amp1_flattop(1) = amp1_flattop(1)/2;

% plot amplitude spectrum of undersampled signal 1
figure(2);
plot(f1,amp1,f1,amp1_hann,f1,amp1_flattop);
legend('Rectangular','Hanning','Flattopwin')