mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP fft eines Rechteckimpuls


Autor: dsp_noob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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')

Autor: Gerhard Z. (germel)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: nachtmix (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
dsp_noob schrieb:
> möchte einen Rechteckimpuls mithilfe der FastFourierTransformation
> das spektrum dieses Signals darstellen.

Wozu?
Das Spektrum von Rechteckimpulsen ist bekannt.

Autor: Dirk B. (dirkb2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dsp_noob schrieb:
> möchte , x-achse soll frequenzwerte anzeigen.
> Wie komme ich auf diese Werte.

Die Abtastfrequenz musst du doch kennen.
Es ist dein Experiment.

Tipp: nimm für die FFT Zeierpotenzen.
also 4096 Werte

Autor: Martin K. (mkmannheim) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk B. schrieb:
> Tipp: nimm für die FFT Zeierpotenzen.

Warum? Soviel Unterschied macht das nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.