clear all;
close all;
%==========================================================================
%                       Einstellungen
%==========================================================================
fn = 50e3;			%Nutzfrequenz
nP = 10;			%Anzahl Perioden FFT

fs = 5000e3;

%Art der Gleichrichtung (entweder oder)
rectArt = "b4";	% Gleichrichterart none,b2,b4

zeroPFac = 10;		%1=Nur Messwerte; x=Zeropadding-Faktor
%==========================================================================
%                       Konstanten
%==========================================================================
tn   = 1/fn;
nyqu = fs/2;		%Nyquist-Grenze  

ts = 1/fs; 
%==========================================================================
%                       Signalerzeugung
%==========================================================================
tx = 0 : ts : nP*tn - ts;				%Zeitvektor fuer ganzes Signal erstellen
sinus = sin(2*pi*fn*tx);				%kompletter Sinus

dataLen = length(sinus);				%Dimensionen bestimmen
dataSize = size(sinus);

sinRect = zeros(dataSize);				%leeres Array erstellen

for i=1:length(sinus)
	if(sinus(i) < 0 )
	
		switch(rectArt)
			case "b2"
				sinRect(i)= 0;				%Einweggleichrichter	
			case "b4"
				sinRect(i)= -sinus(i);		%Brueckengleichrichter	
			otherwise
				sinRect(i)= sinus(i);		%Ohne		
		end %switchEnd
		
	else
		sinRect(i) = sinus(i);
	end
	
end

%==========================================================================
%						Berechnungen
%==========================================================================
w = hanning(dataLen)';					%Hanningfenster und Transponieren
NFFT = 2^nextpow2(dataLen*zeroPFac); 	%Naechst groesseres, oder hoeher fuer ZeroPadding
YFFT= fft(sinRect.*w,NFFT)/dataLen;
fFFT = fs/2*linspace(0,1,NFFT/2+1);
%==========================================================================
%						Plots
%==========================================================================
h = figure('Name','Zeitsignal eine Periode');
subplot(2,1,1);
plot( tx, sinRect);
grid on;
title('Zeitsignal');
xlabel('Zeit')
ylabel('Amplitude');

subplot(2,1,2);
plot(fFFT, 2*abs( YFFT(1:NFFT/2+1) ) );
grid on;
title('FFT');
xlabel('Frequency (Hz)')
ylabel('|Y(f)|');
