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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.