scipy.fftpack.

fft#

scipy.fftpack.fft(x, n=None, ось=-1, overwrite_x=False)[источник]#

Возвращает дискретное преобразование Фурье для вещественной или комплексной последовательности.

Возвращаемый комплексный массив содержит y(0), y(1),..., y(n-1), где

y(j) = (x * exp(-2*pi*sqrt(-1)*j*np.arange(n)/n)).sum().

Параметры:
xarray_like

Массив для преобразования Фурье.

nint, необязательный

Длина преобразования Фурье. Если n < x.shape[axis], x обрезается. Если n > x.shape[axis], x дополняется нулями. По умолчанию приводит к n = x.shape[axis].

осьint, необязательный

Ось, вдоль которой вычисляются БПФ; по умолчанию — по последней оси (т.е., axis=-1).

overwrite_xbool, необязательно

Если True, содержимое x может быть уничтожен; по умолчанию False.

Возвращает:
zкомплексный ndarray

с элементами:

[y(0),y(1),..,y(n/2),y(1-n/2),...,y(-1)]        if n is even
[y(0),y(1),..,y((n-1)/2),y(-(n-1)/2),...,y(-1)]  if n is odd

где:

y(j) = sum[k=0..n-1] x[k] * exp(-sqrt(-1)*j*k* 2*pi/n), j = 0..n-1

Смотрите также

ifft

Обратное преобразование Фурье

rfft

БПФ вещественной последовательности

Примечания

Упаковка результата является "стандартной": Если A = fft(a, n), затем A[0] содержит член нулевой частоты, A[1:n/2] содержит положительно-частотные члены, и A[n/2:] содержит отрицательно-частотные члены в порядке убывания отрицательной частоты. Так, для 8-точечного преобразования частоты результата: [0, 1, 2, 3, -4, -3, -2, -1]. Чтобы переупорядочить вывод fft так, чтобы нулевая частотная компонента была в центре, как [-4, -3, -2, -1, 0, 1, 2, 3], используйте fftshift.

Реализованы процедуры как для одинарной, так и для двойной точности. Входные данные с половинной точностью будут преобразованы в одинарную точность. Нечисловые входные данные будут преобразованы в двойную точность. Входные данные с расширенной двойной точностью не поддерживаются.

Эта функция наиболее эффективна, когда n является степенью двойки, и наименее эффективно, когда n является простым числом.

Обратите внимание, что если x является действительным, тогда A[j] == A[n-j].conjugate(). Если x является вещественным и n чётно, тогда A[n/2] является действительным.

Если тип данных x является вещественным, автоматически используется алгоритм "вещественного БПФ", который примерно вдвое сокращает время вычислений. Для дальнейшего повышения эффективности используйте rfft, который выполняет те же вычисления, но выводит только половину симметричного спектра. Если данные одновременно вещественные и симметричные, dct снова может удвоить эффективность, генерируя половину спектра из половины сигнала.

Примеры

>>> import numpy as np
>>> from scipy.fftpack import fft, ifft
>>> x = np.arange(5)
>>> np.allclose(fft(ifft(x)), x, atol=1e-15)  # within numerical accuracy.
True