numpy.fft.hfft#

fft.hfft(a, n=None, ось=-1, norm=None, выход=None)[источник]#

Вычислить БПФ сигнала, имеющего эрмитову симметрию, т.е. вещественный спектр.

Параметры:
aarray_like

Входной массив.

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

Длина преобразованной оси вывода. Для n выходные точки, n//2 + 1 входные точки необходимы. Если вход длиннее этого, он обрезается. Если короче, дополняется нулями. Если n не задано, оно принимается равным 2*(m-1) где m — это длина ввода вдоль оси, указанной ось.

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

Ось, по которой вычисляется БПФ. Если не задана, используется последняя ось.

norm{“backward”, “ortho”, “forward”}, опционально

Режим нормализации (см. numpy.fft). По умолчанию — «backward». Указывает, какое направление пары преобразований вперёд/назад масштабируется и с каким коэффициентом нормализации.

Новое в версии 1.20.0: Значения "backward", "forward" были добавлены.

выходndarray, необязательно

Если предоставлен, результат будет помещён в этот массив. Он должен быть соответствующей формы и dtype.

Новое в версии 2.0.0.

Возвращает:
выходndarray

Усечённый или дополненный нулями вход, преобразованный вдоль оси, указанной ось, или последний, если ось не указано. Длина преобразованной оси равна n, или, если n не задан, 2*m - 2 где m это длина преобразованной оси входных данных. Чтобы получить нечётное количество выходных точек, n должен быть указан, например, как 2*m - 1 в типичном случае,

Вызывает:
IndexError

Если ось не является допустимой осью для a.

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

rfft

Вычислить одномерное БПФ для вещественного входа.

ihfft

Обратная величина hfft.

Примечания

hfft/ihfft являются парой, аналогичной rfft/irfft, но для противоположного случая: здесь сигнал имеет эрмитову симметрию во временной области и является вещественным в частотной области. Поэтому здесь это hfft для которого вы должны указать длину результата, если она должна быть нечётной.

  • четное: ihfft(hfft(a, 2*len(a) - 2)) == a, в пределах погрешности округления,

  • нечётный: ihfft(hfft(a, 2*len(a) - 1)) == aв пределах погрешности округления.

Правильная интерпретация эрмитова ввода зависит от длины исходных данных, заданной n. Это связано с тем, что каждая входная форма может соответствовать сигналу нечетной или четной длины. По умолчанию, hfft предполагает чётную длину вывода, которая помещает последнюю запись на частоту Найквиста; наложение с её симметричным аналогом. По эрмитовой симметрии значение, таким образом, рассматривается как чисто вещественное. Чтобы избежать потери информации, форма полного сигнала должен должен быть указан.

Примеры

>>> import numpy as np
>>> signal = np.array([1, 2, 3, 4, 3, 2])
>>> np.fft.fft(signal)
array([15.+0.j,  -4.+0.j,   0.+0.j,  -1.-0.j,   0.+0.j,  -4.+0.j]) # may vary
>>> np.fft.hfft(signal[:4]) # Input first half of signal
array([15.,  -4.,   0.,  -1.,   0.,  -4.])
>>> np.fft.hfft(signal, 6)  # Input entire signal and truncate
array([15.,  -4.,   0.,  -1.,   0.,  -4.])
>>> signal = np.array([[1, 1.j], [-1.j, 2]])
>>> np.conj(signal.T) - signal   # check Hermitian symmetry
array([[ 0.-0.j,  -0.+0.j], # may vary
       [ 0.+0.j,  0.-0.j]])
>>> freq_spectrum = np.fft.hfft(signal)
>>> freq_spectrum
array([[ 1.,  1.],
       [ 2., -2.]])