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

PyNUFFT是否需规则网格定义函数?晶体3D非均匀FFT咨询

关于PyNUFFT处理晶体非均匀标量场3D NUFFT的问题解答

1. 是否需要将非均匀采样的标量场外推到规则网格?

不需要。PyNUFFT的核心设计就是处理一侧采样非均匀的傅里叶变换场景,完全支持直接输入非均匀采样点及其对应的函数值,无需外推到规则网格。

你混淆了示例的变换方向:示例中是正向NUFFT(从均匀空间/时间采样到非均匀频域采样),而你的场景是非均匀空间采样(晶体位置)到频域的变换,需要用PyNUFFT的**伴随变换(adjoint NUFFT)**来实现——它直接以非均匀空间点和对应的标量场值为输入,输出均匀频域网格上的傅里叶结果。

2. 示例中om范围[-3,3]的含义及你的场景适配

示例里的om是归一化的频域坐标,对应1D时间序列的傅里叶变换场景:

  • 时间序列的频域范围通常会被归一化到[-π, π](或等价的缩放范围),示例中的[-3,3]是近似[-π, π](π≈3.14)的简化取值,用于演示非均匀频域采样。
  • 你的场景是3D晶体空间,无需纠结“时间序列”概念:你需要将晶体的物理空间坐标转换为PyNUFFT要求的归一化范围(每个维度[-π, π]),具体转换方式为:
    假设你的晶体在某维度的空间范围总长为L,该维度的物理坐标为x,则归一化坐标为:
    x_norm = x * 2 * np.pi / L
    
    这样转换后,坐标范围会映射到[-π, π],符合PyNUFFT的输入要求。

3. 3D场景的实操步骤建议

核心流程

  1. 坐标归一化:将晶体上的3D非均匀物理坐标转换为[-π, π]范围的归一化坐标。
  2. 初始化NUFFT对象:指定目标均匀网格的分辨率(Nd)、插值核大小(Kd,控制精度)、过采样因子(Jd,减少混叠)。
  3. 执行伴随变换:直接输入非均匀采样的标量场值,得到均匀频域的傅里叶变换结果。

简化代码示例

import numpy as np
import pynufft

# 模拟晶体上的非均匀采样数据
M = 10000  # 采样点数量
# 物理空间坐标(示例范围:[-10,10],总长20)
x_phys = np.random.uniform(-10, 10, M)
y_phys = np.random.uniform(-10, 10, M)
z_phys = np.random.uniform(-10, 10, M)
scalar_values = np.random.randn(M)  # 对应的标量场值

# 坐标归一化到[-π, π]
Lx, Ly, Lz = 20, 20, 20  # 各维度空间总长
x_norm = x_phys * 2 * np.pi / Lx
y_norm = y_phys * 2 * np.pi / Ly
z_norm = z_phys * 2 * np.pi / Lz
non_uniform_points = np.vstack((x_norm, y_norm, z_norm)).T  # M×3的坐标矩阵

# 初始化3D NUFFT对象
Nd = (128, 128, 128)  # 输出的均匀频域网格分辨率
Kd = (6, 6, 6)        # 插值核大小,值越大精度越高但速度越慢
Jd = (2, 2, 2)        # 过采样因子,通常设为2
nufft_plan = pynufft.NUFFT()
nufft_plan.plan(non_uniform_points, Nd, Kd, Jd)

# 执行伴随NUFFT:非均匀空间采样 → 均匀频域结果
fft_result = nufft_plan.nufft(scalar_values, adjoint=True)

关键参数说明

  • adjoint=True:开启伴随变换模式,适配“非均匀空间采样→均匀频域”的需求;默认adjoint=False是正向变换(均匀空间→非均匀频域)。
  • Nd:根据你的频域分辨率需求设置,数值越大结果越精细,但计算量也会增加。
  • Kd:推荐取值4-8,平衡精度和计算速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:25:18