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
Примечания
Упаковка результата является "стандартной": Если
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