numpy.fft.hfft
-
numpy.fft.hfft(a, n=None, axis=-1, norm=None)[source] -
Вычислить БПФ сигнала, имеющего эрмитову симметрию, т.е. вещественный спектр.
- Параметры
-
-
aarray_like -
Входной массив.
-
nint, optional -
Длина преобразованной оси выходного массива. Для
nвыходных точек требуетсяn//2 + 1входных точек. Если входной массив длиннее, он обрезается. Если короче, он дополняется нулями. Еслиnне указан, он принимается равным2*(m-1), гдеm— длина входного массива вдоль оси, указаннойaxis. -
axisint, optional -
Ось, по которой вычисляется БПФ. Если не указана, используется последняя ось.
-
norm{None, “ortho”}, optional -
Режим нормализации (см.
numpy.fft). По умолчанию None.Новое в версии 1.10.0.
-
- Возвращает
-
-
outndarray -
Обрезанный или дополненный нулями входной массив, преобразованный вдоль оси, указанной
axis, или вдоль последней оси, еслиaxisне указан. Длина преобразованной оси составляетn, или, еслиnне задано,2*m - 2, гдеm— длина преобразованной оси входного массива. Для получения нечётного числа выходных точек необходимо указатьn, например, как2*m - 1в типичном случае.
-
- Возбуждает
-
- IndexError
-
Если
axisбольше, чем последняя осьa.
См. также
Примечания
hfft/ihfft— пара, аналогичнаяrfft/irfft, но для обратного случая: здесь сигнал имеет эрмитову симметрию во временной области и является вещественным в частотной области. Поэтому здесь требуетсяhfft, для чего необходимо указать длину результата, если он нечётен.- чётный:
ihfft(hfft(a, 2*len(a) - 2)) == a, с точностью до округления, - нечётный:
ihfft(hfft(a, 2*len(a) - 1)) == a, с точностью до округления.
Правильная интерпретация эрмитова входного массива зависит от длины исходных данных, заданной
n. Это происходит потому, что каждая форма входных данных может соответствовать сигналу чётной или нечётной длины. По умолчаниюhfftпредполагает чётную длину выходного массива, что помещает последнюю запись на частоту Найквиста; аллиасинг с её симметричной парой. В силу эрмитовой симметрии значение, таким образом, обрабатывается как чисто вещественное. Чтобы избежать потери информации, форма полного сигнала должна быть задана.Примеры
>>> 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.]])
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.fft.hfft.html