Inverse Discrete Time Fourier Transform of spectrometer data in python

41 views Asked by At

So I have been trying to automate the conversion of my pulsed laser spectrum data to pulse duration via a python script. However somehow my transformed data does not seem to fit. Does anybody know what I am doing wrong?

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

# Inverse Discrete Time Fourier Transformation
def IDTFT(N,intensity,frequency,time):
    inverse = np.zeros(len(time),dtype=np.clongdouble)
    for t in range(len(time)):
        for k in range(N):
            inverse[t] += (1/N)*intensity[k]*np.exp((1j*2*np.pi*frequency[k]*time[t])/N)
    return inverse

# Load Data
df = pd.read_csv(r'C:\Users\lukas\Downloads\Data.txt',sep='\t')

# Extract quantities
intensity = df['Intensity']
wavelength = df['Wavelength']
frequency = 299792458/(wavelength*1e-9)
time = np.arange(0,2024e-15,1e-15)

# Plot frequency domain
plt.figure(0)
plt.grid()
plt.plot(frequency,intensity,'o')
plt.show()

Frequency Domain (xaxis=[Hz]):

enter image description here

# Transform 
inverse = IDTFT(len(wavelength),intensity,frequency,time)

# Plot time domain
plt.figure(1)
plt.grid()
plt.plot(time,inverse,'o')
plt.show()

Time domain (xaxis = [s]):

enter image description here

0

There are 0 answers