python - 使用 numpy 进行快速傅立叶变换时将输入数组加倍
问题描述
我写了一个函数,它返回网格的快速四变换的实部。
def take_FFT(x):
# some arbitrary field for a 1D grid
y = abs(1.0/x)
# compute FFT (in general multi-dimensional) array of real numbers
y_k = np.fft.rfftn(y)
#compute the inverse FFT
y_invk = np.fft.irfftn(y_k)
return y,y_k, y_invk # return fourier transform and inv transform
# initialize sample x
x_test = np.arange(-5,5,0.001)
field,FFT_test, inv_test = take_FFT(x_test)
如何制作适当的新“x 数组”来针对 FFT 进行绘图?我不清楚如何制作一个长度 = (n/2)+1 的数组,就像 np.fft.irfftn 返回的那个
解决方案
获取要使用的频率数组的最简单方法np.fft.rfft
是使用方便的辅助函数np.fft.rfftfreq
:
freqs = np.rfftfreq(x_test)
的多维等价物np.fft.rfftn
稍微复杂一些。您将需要沿每个轴获取频率,然后使用np.meshgrid
:
per_axis_freq = [np.fft.fftfreq(N) for N in x_test.shape[0:-1]]
per_axis_freq.append(np.fft.rfftfreq(x_test.shape[-1]))
freqs = np.meshgrid(*per_axis_freq[::-1])
推荐阅读
- wpf - SyncFusion SfRichTextBoxAdv 打字时出现奇怪的悬念
- javascript - 来自 Fauna DB 的反向数据
- php - $this->request->getData() 升级到 CakePHP 4.0 后为空
- javascript - 如何使用 nuxtjs 在 vue 模板上添加标题和脚本
- php - 我的 whereJsonContains 不起作用(Laravel 5.8)
- node.js - 整理中的强度参数在 Mongoose 中不起作用
- android - 如何使用 LiveData 在 ListItemView 中显示名称而不是 id?
- flutter - 我应该从小部件访问状态还是将其传递给 Flutter 中的状态对象?
- ios - 我的 playerCard 的初始化不起作用
- excel - 如何比较行之间的值