Spec-Zone.ru › NumPy 1.21

numpy.fft.hfft

fft.hfft(a, n=None, axis=- 1, norm=None)[source]

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

Параметры
aarray_like

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

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

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

axisint, необязательно

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

norm{“backward”, “ortho”, “forward”}, необязательно

Введено в версии 1.10.0.

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

Введено в версии 1.20.0: Добавлены значения “backward”, “forward”.

Возвращает
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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.fft.hfft.html

Spec-Zone.ru

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