我是NumPy, SciPy的新手。以前,我已经使用Matlab/Octave很长一段时间了。
似乎scipy.fftpack.fft
对二维数组逐行工作。对我来说,这很令人困惑,因为在Matlab中,这样的操作是一列一列地完成的。sciy中的所有其他操作也是逐行执行的吗?
我可以在NumPy/SciPy中按列执行操作吗?
Numpy的fft()
接受一个"axis"参数,所以你可以要求逐列FFT,而不是默认的逐行FFT。
。,则返回x
中每列的16点FFT(如果不知道行数,则可以将第二个参数指定为None
):
import numpy as np
x = np.hstack([np.zeros((16,1)), np.ones((16,1))])
x[0,0] = 1
f = np.fft.fft(x, 16, 0)
f
的第一列是全为1的函数的FFT。f
的第二列是一个常数列的FFT,该数列是频域的一个δ函数。