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.
Примечания
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.]])