Python 中的傅里叶变换

Fourier Transformation in Python

我正在尝试在 Python 中编写傅立叶变换积分用于地震计算。 在我的代码中,我已经获得了一个加速度值列表 (UD_Acc),下一步是整合这些值以找到加速度谱,但是你可以忽略我刚刚写的内容,只是为了让你理解我会在这里放一段代码,但还有前面的部分。 在本节中,代码如下所示:

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)

我正在尝试测试代码片段以查看它是否有效,在这一步中结果是这样的:

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, 

(实际上它更大,但我在这里只放了一个片段)我不知道什么是 naminf 方法。我中断了这个过程,因为它需要一段时间。 编辑:我刚刚看到 nan 代表“不是数字”,但为什么我在这里看到它?

nan 可以以多种方式出现,但通常会在您尝试执行某些数学运算(例如除以零)时发生。有一个答案 here 更详细地介绍了 nan

inf是代表无穷大的值。你可以有正无穷大或负无穷大,虽然你可以对 inf 执行数学运算,但如果你不知道会发生什么,它会给你看起来不寻常的结果。

当你需要计算一个数时,为什么要使用列表结构?试试这个:

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)