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


von Testdrive (Gast)


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

von Matthias (Gast)


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.

von Testdrive (Gast)


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

von Testdrive (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.