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.
Смотрите также
Примечания
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.])