Search code examples
pythonnumpyfft

Fourier Transformation in Python


I'm trying to code a fourier transform integration in Python for earthquake calculations. In my code I've already obtained a list of acceleration values (UD_Acc) and the next step was to integrate those values to find an acceleration spectrum but you can ignore what I just wrote, is just so that you understand that I'll put a piece of the code here, but there's a previous part. In this section the code looks like this:

for k in range(0, nf):
    w = 2.0 * np.pi * k * df
    ctemp = [0]
    for i in range(0, n):
        tt = (i - 1) * dt1
        ctemp.append(ctemp[i - 1] + UD_Acc[i] * exp(w * tt) * dt1)
    FT_UD = ctemp
    print(FT_UD)

I'm trying to test pieces of the code to see if it works and in this step the result was this one:

3.100296447573319e+286, 1.5579007542075108e+287, 7.02508382861519e+287, 3.534820181719304e+288, 
1.9048570553209693e+289, 9.698002767425852e+289, 4.622661096039162e+290, 2.1478266516508165e+291, 
1.0966932872477815e+292, 6.0483530668672015e+292, 3.1353936060179655e+293, 1.478980963008126e+294, 
6.992411539372276e+294, 3.6827556115504487e+295, 1.8834318622915946e+296, 8.75696893029608e+296, 
4.370164744682199e+297, 2.2443725876035813e+298, 1.1097046168139748e+299, 5.967481992892405e+299, 
3.198441446792076e+300, 1.5169019424112824e+301, 6.790646982399279e+301, 3.3237208773654086e+302, 
1.8459510382883334e+303, 9.72602102297841e+303, 4.457353975198039e+304, 2.1248722813745752e+305, 
1.1280036233573973e+306, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 
inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 
inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 
inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, 
inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, inf, nan, nan, 
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 
nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, 

(actually it was way bigger, but I'm putting just a fragment here) I don't know what nam and inf means. I interrupted the process because it was taking a while. Edit: I just saw that nan stands for "not a number" but why I get that here?


Solution

  • Why use a list structure when you need to calculate a number? Try this instead:

    for k in range(0, nf):
        w = 2.0 * np.pi * k * df
        ctemp = 0
        for i in range(0, n):
            tt = (i - 1) * dt1
            ctemp += UD_Acc[i] * exp(w * tt) * dt1)
        FT_UD = ctemp
        print(FT_UD)