Spec-Zone.ru › NumPy 1.19

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.

См. также

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 предполагает чётную длину выходного массива, что помещает последнюю запись на частоту Найквиста; аллиасинг с её симметричной парой. В силу эрмитовой симметрии значение, таким образом, обрабатывается как чисто вещественное. Чтобы избежать потери информации, форма полного сигнала должна быть задана.

Примеры

>>> 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API