You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

dvv做fft输出正常结果但地下水GW序列fft结果全为nan,应如何解决?

问题原因排查及解决方法

  • 第一步:检查GW序列的异常值
    你给出的5条示例GW值本身是正常的,直接做FFT不会输出nan,首先要确认完整GW序列中是否存在缺失值、空值或无穷值,执行以下代码排查:
print(np.isnan(gw_array).any())
print(np.isinf(gw_array).any())

如果返回True,说明序列中存在异常值,可删除异常值对应的行,或用线性插值、均值填充等方式补全后再运算。

  • 第二步:验证归一化逻辑的正确性
    归一化到[-1,1]区间时如果原始GW序列的最大值等于最小值,会出现分母为0的情况,导致归一化后全为无穷值,FFT运算后全部转为nan。可通过打印原始GW的极差验证:
print(gw_raw.max() - gw_raw.min())

如果极差为0,说明GW序列无波动,无需做FFT分析;如果极差正常,可使用以下正确的归一化代码重新处理:

gw_min = gw_raw.min()
gw_max = gw_raw.max()
gw_normalized = 2 * (gw_raw - gw_min) / (gw_max - gw_min) - 1
  • 第三步:检查数据类型和FFT调用参数
    首先确认GW序列的存储类型为数值型,而非字符串或object类型:
print(gw_normalized.dtype)

如果输出不是float32或float64,执行转换:

gw_normalized = gw_normalized.astype(np.float64)

其次确认调用FFT时的参数和dvv序列一致,你提供的结果中dvv的FFT输出长度为12,GW为36,说明两次调用的nfft参数可能不一致,或者GW序列做插值、补零操作时生成了异常值。

验证参考

你提供的5条GW测试数据执行FFT的正常结果如下,无任何nan值,说明问题完全出在你完整序列的预处理环节:

array([-0.568517+0.j        ,  0.070039+0.08498845j,  0.006296+0.02682016j, 0.006296-0.02682016j,  0.070039-0.08498845j])

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:54:05