fft eines Rechteckimpuls

Gast #5586308
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
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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.