我正在尝试使用以下形式的python / numpy来使用一些模型:
f(x) = 1 / (exp(x) - 1)
其中x可以是-5到+5之间的任何值。
x可以为零,在我的模拟过程中会发生这种情况,导致f(x)趋于无穷大,返回一个nan + 1jnan。
因为我希望稍后使用此计算的结果,例如对于FFT,这会产生一个主要问题,因为fft例程无法处理输入中的NAN。
有没有推荐的方法来解决这个问题? 例如把逻辑说成:如果x == 0:返回0 要么 例如如果等于零,则将x移动0.00000001%,以避免此问题。
由于
答案 0 :(得分:0)
您可以使用continue语句来避免此问题:
def f(x):
return 1 / (exp(x) - 1)
f_values = {}
for i in range(-5,5):
if i == 0: continue
f_values[i] = f(i)
print f_values
>>> {1: 0.5819767068693265, 2: 0.15651764274966565, 3: 0.05239569649125595, 4: 0.01865736036377405, -2: -1.1565176427496657, -5: -1.0067836549063043, -4: -1.018657360363774, -3: -1.052395696491256, -1: -1.5819767068693265}
FFT(f_values)
这里,每当x = 0的值出现时,循环就会避免使用f(x)函数并迭代到下一个值。