www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP IFFT eines Impulses (Matlab)


Autor: Testdrive (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Bin Matlab-Anfänger und hab ein kleines Problem mit der IFFT....:

Eigentlich will ich nur einen Impuls im Zeitbereich erzeugen, der über 
das Spektrum definiert ist. Konkret soll der Peak ca. 2 ns breit sein. 
Hierzu definier ich 1500 1 Peaks im Spektralbereich, die ein Spektrum 
von 3 kHz bis 450 MHz repräsentieren sollen. Aufgrund der 
Reellwertigkeit des Zeitsignals hab ich das Spektrum symmetrisch um das 
letzte Sample definiert und dann den Vektor auf 3000 erweitert. Der 
Imaginärteil ist immer 0.
Gesagt getan....nach der IFFT bekomm ich nen Plot, der nur bei 1 nen 
Wert hat.
Woher kommt das, mich würde der detaillierte Verlauf des Pulses 
interessieren....

Mir ist schon klar, das ich hier cos überlagere, die phasengleich sind 
und somit am Anfang den höchsten Wert erhalten. Aber ich würde da eher 
irgendwas abfallendes erwarten und nicht diesen abrupten Peak beim 
ersten Sample der Zeitfunktion (DC ist im Frequenzbereich 0).
Ausserdem ist es mir irgendwie unklar, wie ich überhaupt die echten 
Frequenzen mit der IFFT in Beziehung setz. Macht man das dann im 
Zeitbereich nur über die manuelle Skalierung, das könnte dann ja alles 
aus dem Ruder laufen...

Ich glaub ich werf da eineiges durcheinander....=)!

mit freundlichen Grüssen

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beschreibe mal dein Signal genauer. Ich verstehs jetz folgendermaßen:
Du hast eine 0, für DC. Dann für 3kHz bis 450MHz 1500 1er (allerdings 
bräuchtest du bei 3kHZ Frequenzauflösung 150.000 1er), und dann nochmal 
1500 1er. Damit hast du im Frequenzbereich bis auf den DC Anteil etwas 
konstantes. Und ewas konstantes im einen Bereich wird bekanntlich zu 
einem einzigen Puls im anderen Bereich.
Da du allerdings für alle anderen Punkte 0 hast, und nicht nicht was 
kleines negatives scheint es so, als hättest du auch für DC ne 1 
eingesetzt, und damit nur 1en transformiert.

Wie man die Frequenzen und die Zeitabschnitte einander zuordnet:
tp = t0*N
fp = N*f0
1/fp = t0
1/tp = f0

N = Länge des Signals in Samples
t0 ist der Abstand im Zeitbereich, f0 der im Frequenzbereich
tp ist die Gesamtlänge im Zeitbereich, fp die Gesamtlänge im 
Frequenzbereich und gleichzeitig die Abtastfrequenz.

Wenn du die Parameter in einem der beiden Bereiche kennst, kannst du 
also folglich die anderen ausrechnen, und ne passende  Achse dazu 
errechnen.

Ne Zeitachse kann mich sich in Matlab zB so bauen: t = 0:t0:tp-t0;
N Frequenzachse so: f = 0:f0:fp-f0;
Bei der Transformation des einem kommt das andere als achse raus.

Autor: Testdrive (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HI,
Danke, Klasse Antwort!
Ja, das hast du richtig verstanden, also nochmal zu meinen 
Gedankengängen:
Also was ich hab, ist ein Array [1-1501] mit jeweils 1 Peaks. Zur 
Sicherstellung des geraden Realteils hab ich das Dingen verdoppelt (auf 
3002), den Rest dann ebenfalls mit 1 gefüllt. Also sollte (fs/2), in der 
Mitte des Arrays liegen....muss ich das eigentlich wirklich 
beachten????...oder reicht es einfach "ganz blöd" das Array mit den 1500 
Peaks der Ifft zu übergeben?

Ok, 3kHz ist ein bisschen hoch, bei 1500 PEaks wär das dann 300 
kHZ....wie sieht man denn den Auflösungseffekt im Zeitbereich....werden 
da Werte "verschluckt"?

Also irgendwie bereitet es mir ein bisschen Kopfschmerzen, das die IFFT 
ja nur auf einem Array arbeitet und zu den realen Frequenzwerten ja 
eigentlich keinen Bezug hat....versteh ich das richtig, das dann jeder 
Array-eintrag eine Frequenz-Bin ist, die z.B. dann mit 300 kHz 
bezeichnet werden sollte?

mit freundlichen Grüssen
der informationsüberflutete Martin

Autor: Testdrive (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaaaaah, hab doch was kleines negatives....hahaha=)!Also definitiv kein 
DC! Aber ich hätte mir den Puls eher als deutliche Glockenform 
vorgestellt, liegt das an der Auflösung oder wie? Ziel ist es zu zeigen, 
das der Puls wirklich ca. 2 ns breit ist....

mfG

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.
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.

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