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.18/reference/generated/numpy.fft.hfft.html