
N = 1024; %Anzahl Abtastwerte 
Ta = 1/613;
%Zeitvektor
T1 = 0:Ta:((N-1)*Ta) ;

%Signale
%Als Eingänge nutzen um x[n] = y[n]/h[n]
x1=Sprungantwort(1:N)'; %Sprungantwort y[n]
h1 =impulse(Fzt,T)';%Impulsantwort h[n]

%Als Eingänge nutzen um h[n] = y[n]/x[n]
%x1=Sprungantwort(1:N)'; %Sprungantwort y[n]
%h1=Sprungfkt(1:N)'; %Sprung x[n]
%x1=Yarx(1:N)'; %Sprungantwort y[n]
%h1=Uarx(1:N)'; %Sprung x[n]
imps = impulse(Fst,T1)';
impz = impulse(Fzt,T1)';


for i=1:(length(x1)),
    if(x1(i)== 0) %Division durch 0 vermeiden
        x1(1)= 0.000001;
    end
end
for i=1:(length(h1)),
    if(h1(i)== 0) %Division durch 0 vermeiden
        h1(1)= 0.000001;
    end
end

% Perform the FFT
X1FFT = fft(x1,2*N);
HFFT  = fft(h1,2*N);

%Auswahl: 1 = Faltung, 2 = inverse Faltung
Auswahl=2;
switch(Auswahl)
        case 1            
            % Perform the convolution
            Y1FFT = X1FFT .* HFFT;
            Y2=conv(x1, h1); % normale Faltung im Ortsraum
            b=fft(x1,2*N).*fft(h1,2*N);% Multiplikation im Frequenzraum
        case 2
            % Perform the convolution
            Y1FFT = X1FFT ./ HFFT;
            [q,Y2]=deconv(x1, h1); % normale Faltung im Ortsraum
            b=fft(x1,2*N)./fft(h1,2*N);% Multiplikation im Frequenzraum
end

% Perform the iFFT
Y1 = real(ifft(Y1FFT)); % <-- hier vorsichtig mit anderen Fenstern, da dies zusätzlich einer Faltung im Ortsraum entspricht.
Y3=(ifft(b,'symmetric')); % Rückführung in den Ortsraum

% Plot the results

subplot(311), plot(T1, x1);
hold on; plot(T1,h1,'r');
title(['Eingangssignale der Faltung: ']);
grid on;
xlabel('Zeit in s');
legend('y[n] = Sprungangwort','h[n] = Impulsantwort');

subplot(312), plot(Y1);
hold on; plot(Sprungfkt,'r.'); %hier Sprungfkt bei Berechnung von x[n] oder impz bei h[n] wählen
title(['Faltungsergebnis mittels fft']);
%xlim([-0.009, 0.009]);
%ylim([-0.05, 0.05]);
grid on;
xlabel('Zeit in s');%legend('h[n] = y[n]/x[n]','h[n] mittels impulse(h)');
legend('x[n] = y[n]/h[n]','x[n] der Simulation ');

subplot(313), plot(Y2);
title(['Faltungsergebnis mittels deconv()']);
%xlim([-0.009, 0.009]);
%ylim([-0.05, 0.05]);
grid on;
xlabel('Zeit in s');
legend('x[n] = y[n]/h[n]');
pause;
close all;

