clear all;
close all;

% Parameter Definition
f = 1e6
T = 1/f;
fs = 1/(10*T/1000)
t = 0:(1/fs):(10*T);

% Eingangssignal
x = cos(2*pi*f*t);

% Erzeuge die Übertragungsfunktion im Frequenzbereich
for i = 1:length(x)
  if i < (length(x)/2)
    S(i) = -1j;    % -90° Phasenverschiebung für positive Frequenzen
  else
    S(i) = 1j;     % +90° Phasenverschiebung für negative Frequenzen
  endif;
endfor;

% Hilbert-Transformation mittels FFT
X = fft(x);
Y = S .* X;
y = real(ifft(Y));

% Hilbert-Transformation mittels Faltung
s = ifft(S);
z = real(conv(s', x'));

% Plotte x und y und z
figure;
hold on;
plot(x, 'LineWidth', 2);
plot(y, 'LineWidth', 2);
plot(z, 'LineWidth', 2);
title('Hilbert-Transformation Test');
xlim([0, 300]);
legend({'x', 'y', 'z'});
grid on;
