scipy.fft.

hfft#

scipy.fft.hfft(x, n=None, ось=-1, norm=None, overwrite_x=False, workers=None, *, plan=None)[источник]#

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

Параметры:
xarray_like

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

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

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

осьint, необязательный

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

norm{“backward”, “ortho”, “forward”}, опционально

Режим нормализации (см. fft). По умолчанию “backward”.

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

Если True, содержимое x может быть уничтожен; по умолчанию False. См. fft для получения дополнительной информации.

workersint, необязательный

Максимальное количество рабочих процессов для параллельных вычислений. Если отрицательное, значение оборачивается с os.cpu_count(). См. fft для получения дополнительной информации.

planобъект, опционально

Этот аргумент зарезервирован для передачи предварительно вычисленного плана, предоставленного поставщиками FFT. В настоящее время не используется в SciPy.

Добавлено в версии 1.5.0.

Возвращает:
выходndarray

Усечённый или дополненный нулями вход, преобразованный вдоль оси, указанной ось, или последний, если ось не указано. Длина преобразованной оси равна n, или, если n не задан, 2*m - 2, где m это длина преобразованной оси входных данных. Чтобы получить нечётное количество выходных точек, n должен быть указан, например, как 2*m - 1 в типичном случае,

Вызывает:
IndexError

Если ось больше, чем последняя ось a.

Смотрите также

rfft

Вычислить 1-D БПФ для вещественного входа.

ihfft

Обратная величина hfft.

hfftn

Вычислите N-мерное БПФ эрмитова сигнала.

Примечания

hfft/ihfft являются парой, аналогичной rfft/irfft, но для противоположного случая: здесь сигнал обладает эрмитовой симметрией во временной области и является вещественным в частотной области. Таким образом, здесь hfft, для которого необходимо указать длину результата, если она должна быть нечётной. * чётная: ihfft(hfft(a, 2*len(a) - 2) == a, в пределах погрешности округления, * нечетный: ihfft(hfft(a, 2*len(a) - 1) == aв пределах погрешности округления.

Примеры

>>> from scipy.fft import fft, hfft
>>> import numpy as np
>>> a = 2 * np.pi * np.arange(10) / 10
>>> signal = np.cos(a) + 3j * np.sin(3 * a)
>>> fft(signal).round(10)
array([ -0.+0.j,   5.+0.j,  -0.+0.j,  15.-0.j,   0.+0.j,   0.+0.j,
        -0.+0.j, -15.-0.j,   0.+0.j,   5.+0.j])
>>> hfft(signal[:6]).round(10) # Input first half of signal
array([  0.,   5.,   0.,  15.,  -0.,   0.,   0., -15.,  -0.,   5.])
>>> hfft(signal, 10)  # Input entire signal and truncate
array([  0.,   5.,   0.,  15.,  -0.,   0.,   0., -15.,  -0.,   5.])