### Added fft/ifft wrapper (cont'd)

parent a873c151
 ... ... @@ -29,3 +29,120 @@ def FFT(f): return np.fft.fftshift(F); def fft(a): """ fft(a) Compute the one-dimensional discrete Fourier transform of a the way Matlab does. When a is a vector, the Fourier transform of the vector is returned. When a is a matrix, each column vector of a is transformed individually, and a new matrix containing the transformed column vectors of a is returned. Parameters ---------- a : array_like 1-D or 2-D input array (can be complex) Returns ------- result : ndarray 1-D or 2-D array of similar shape and type containing the discrete fourier transform of a See Also -------- ifft Notes ----- Using the Numpy function fft on a matrix does not produce results similar to what Matlab does. This helper function uses the Numpy functions to produce a resut that agrees with what Matlab does. """ return transformVectors(a, np.fft.fft) def ifft(a): """ ifft(a) Compute the one-dimensional inverse discrete Fourier transform the way Matlab does. When a is a vector, the inverse Fourier transform of the vector is returned. When a is a matrix, each column vector of a is transformed individually, and a new matrix containing the transformed column vectors of a is returned. Parameters ---------- a : array_like 1-D or 2-D input array (can be complex) Returns ------- out : ndarray 1-D or 2-D array of similar shape and type containing the inverse discrete fourier transform of a See Also -------- fft Notes ----- Using the Numpy function ifft on a matrix does not produce results similar to what Matlab does. This helper function uses the Numpy functions to produce a resut that agrees with what Matlab does. """ return transformVectors(a, np.fft.ifft) def transformVectors(a, transform): """ transformVectors(a, transform) Transform a according to the given transform function. When a is a vector, it applies the transform function to a and returns the result. When a is a matrix, each column vector of a is transformed individually using the given transform function, and a new matrix containing the transformed column vectors of a is returned. Parameters ---------- a : array_like 1-D or 2-D input array transform : callable function This function takes a 1-D array as argument and returns a 1-D array of same size. This function is applied to a if it is a vector or to the column vectors of a if a is a matrix. Returns ------- out : ndarray 1-D or 2-D array of similar shape and type containing the transformed data See Also -------- fft, ifft Notes ----- This function is used by fft(a) and ifft(a). """ if a.ndim == 1: # a is a vector out = transform(a) else: # assume a is a matrix (2d array) shape = a.shape colCount = shape #result = np.empty_like(a) out = np.zeros_like(a) # for each column vector in a for i in range(0, colCount): col = a[:,i] fft_col = transform(col) out[:,i] = fft_col return out
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment