Leiten Sie LOSVD aus dem Galaxienspektrum unter Verwendung der Fourier-Methode ab

Ich versuche ein Programm zu implementieren, das die Kinematik (insbesondere die kinematischen Parameter: mittlere Rotationsgeschwindigkeit, Geschwindigkeit, Dispersion, Hermite-Koeffizienten h3 und h4) aus einem elliptischen Galaxienspektrum ableitet. Ich weiß, dass dies auf viele Arten implementiert wurde, die häufigste in letzter Zeit war ppxf, aber ich möchte es zu Bildungszwecken tun. Ich begann mit der Arbeit mit einem Spektrum (variablename = spec) eines K2III-Sterns (da sie in Galaxien des frühen Typs ziemlich häufig vorkommen), entfernte ich das Kontinuum des Spektrums und ordnete es einer logarithmischen Wellenlängengröße zu. Dann habe ich ein künstliches Galaxienspektrum (variablename = spec_gal) erstellt, indem ich mein Sternspektrum mit einem Gaußschen Losvd mit einer Dispersion von 200 km/s verbreiterte. Ich habe daher einfach die Faltung zwischen dem Sternspektrum und dem Losvd mit np.convolve() berechnet.

spec_gal = np.convolve(losvd_gauss, spec, mode='same')

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung einWarum werden die Flusswerte so klein, wenn ich das Losvd mit dem Spektrum falte, es sollte nur die Absorptionslinien verbreitern, oder? Ich nehme an, das liegt daran, dass ich kleine Werte meines Losvd mit den Spektralwerten multipliziere.

Als kleinen Test wollte ich meine Losvd aus dem synthetischen Galaxienspektrum mittels Fourier-Transformation zurückgewinnen. Da Faltung im Fourier-Raum multiplikativ ist, dachte ich, könnte ich einfach die Fourier-Transformationen meiner Spektren mit scipy.fft() berechnen.

spec_fourier = fft(spec)
spec_gal_fourier = fft(spec_gal)

Und leite das Losvd im Fourier-Raum ab, indem ich mein Galaxienspektrum im Fourier-Raum durch das Sternenspektrum dividiere.

 losvd_fourier = spec_gal_fourier/spec_fourier

Ich habe die np.abs () -Werte meiner Fourier-transformierten Spektren gezeichnet. Geben Sie hier die Bildbeschreibung einIch dachte, ich könnte mein Losvd wiederherstellen, indem ich einfach die inverse Fourier-Transformation mit scipy.ifft () durchführe.

losvd = ifft(losvd_fourier)

Was mir nicht das richtige Ergebnis liefert (siehe letztes Diagramm unten) und ich wäre dankbar für Anmerkungen, Kommentare und Hinweise auf mögliche Fehler in Theorie und Implementierung.Geben Sie hier die Bildbeschreibung ein

Ich bin sicher, Sie werden hier eine Antwort bekommen, aber nur zur Information, es gibt auch eine Scientific Computing SE- Site, die sich hervorragend für numerische Fragen eignet. Übrigens, was passiert, wenn Sie zuerst Ihren Gaußschen Faltungskern auf Einheitsfläche normalisieren? zB g = g / g.sum()habe ich einen schnellen Test mit einigen einfachen Daten gemacht und das scheint zumindest nahe am Richtigen zu sein.
Ich frage mich eigentlich, warum mein Gaußscher Kernel überhaupt nicht normalisiert ist, da ich meinen Gaußschen Losvd mit der Standard-Gauss-Normalisierung N = 1 / sqrt (2pi * sigma ^ 2) definiert habe. Ihr Vorschlag löst die Frage mit den winzigen Werten für mein synthetisches Galaxienspektrum, aber das letzte Problem bleibt bestehen.
Möglicherweise haben Sie die gerade aus Versehen verlassen σ 2 außerhalb der Quadratwurzel. Wie auch immer, ich bin zuversichtlich, dass jemand in der Lage sein wird, Ihre Hauptfrage zu beantworten.

Antworten (1)

Es gab ein paar Fehler bei der Behandlung meiner Spektren vor der Fourier-Transformation überhaupt. Fehlende Schritte waren also:

1.) Die Spektren sollen durch Subtraktion des Medians auf 0 gemittelt werden.

2.) Sie sollten die Spektren an den Rändern mit einer Fensterfunktion abgreifen (z. B. np.blackman())

3.) Schneiden Sie Pixel an beiden Enden der Spektren ab, um Diskontinuitäten zu vermeiden

Dann stellen Sie die richtige Eingangs-LOSVD wieder her, indem Sie das einfache Divisions-Entfaltungsverfahren im Fourier-Raum verwenden.

Glückwunsch! Es ist immer in Ordnung, Ihre eigene Frage zu beantworten, und wenn beispielsweise eine Woche vergeht und keine weiteren Antworten angezeigt werden (wie in diesem Fall wahrscheinlich), fahren Sie einfach fort und akzeptieren Sie Ihre eigene Antwort.