fft eines Rechteckimpuls

Gast #5586308
Lesenswert?

Hallo,
ich möchte einen Rechteckimpuls mithilfe der FastFourierTransformation 
das spektrum dieses Signals darstellen.

1. Erstellen eines Rechteckimpuls (dafür habe ich eine Funktion 
geschrieben, welche mir einen Signalvektor zurückgibt der länge N 
zurückgibt und ab K beginnt der impuls und hält ganze M abtastwerte den 
impuls auf 1)
y = rechteckimpuls(K,M,N)

Code:

function y = rechteckimpuls(K,M,N)

if K + M > N
    y = [zeros(1,K) ones(1,N-K)];

else
    y = [zeros(1,K),ones(1,M),zeros(1,N-(K+M))];

end
end





Nun habe ich ein Skript geschrieben in der ich das Signal 
rechteckimpuls(100,50,4000) mit fft() transformiere und das 
betragsspektrum darstellen möchte , x-achse soll frequenzwerte anzeigen. 
Wie komme ich auf diese Werte.

Mir fehlt doch die Abtastfrequenz dafür.

In der Aufgabenstellung steht das Signalvektor Länge N hat und normierte 
Zeit t_n=0:N-1.



Mein Code bisher:


Code:


r_imp = rechteckimpuls(100,50,4000);

r_fft = fft(r_imp);
r_ifft = ifft(r_fft);

bin_vals = [0 : length(r_imp)-1];



subplot(2,4,1)
plot(bin_vals,r_imp)
title('Ausgangssignal');
xlabel('Zeit')
ylabel('Impulshöhe')

subplot(2,4,2)
plot(bin_vals,abs(r_fft))
title('Spektrum des Signals in Betragsdarstellung');
xlabel('Frequenz(in bins)')
ylabel('Betrag')

subplot(2,4,3)
plot(bin_vals,angle(r_fft))
title('Spektrum des Signals in Winkeldarstellung');
xlabel('Frequenz')
ylabel('Winkelgröße')

subplot(2,4,4)
plot(bin_vals,r_ifft)
title('Zurückgewonnenes Signal');
xlabel('Zeit')
ylabel('Impulshöhe')
#5586347
Lesenswert?

dsp_noob schrieb:
> In der Aufgabenstellung steht das Signalvektor Länge N hat und normierte
> Zeit t_n=0:N-1.

Mit einer normierten Zeitachse bekommst du auch nur eine normierte 
Frequenzachse. Wie schon in deinem anderen Thread geschrieben ist die 
Frequenzschrittweite der transformierten Funktion 1/T mit T die Zeit der 
N eingelesenen Werte.

Nehmen wir an deine Samplingfrequenz wäre SF, dann ist deine Einlesezeit

T = N/SF

also ist

1/T = SF/N

SF/N ist also der Abstand deiner Frequenzlinien, SF/2 der Wert für das 
N-te Array-Element (da du N/2 Frequenzwerte bekommst), evtl. genauer
(N-1)/(2N)*SF; für jede feste SF kannst du sofort den Wert ausrechnen, 
solange aber die Abtastfrequenz unbekannt ist bleibt auch deine 
Frequenzachse natürlich nicht näher bestimmbar.

Gerhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren