scipy.fft.

hfftn#

scipy.fft.hfftn(x, s=None, оси=None, norm=None, overwrite_x=False, workers=None, *, plan=None)[источник]#

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

Эта функция вычисляет N-мерное дискретное преобразование Фурье для эрмитово-симметричного комплексного ввода по любому количеству осей в M-мерном массиве с помощью быстрого преобразования Фурье (FFT). Другими словами, ihfftn(hfftn(x, s)) == x с точностью до численной погрешности. (s вот x.shape с s[-1] = x.shape[-1] * 2 - 1, это необходимо по той же причине x.shape будет необходимым для irfft.)

Параметры:
xarray_like

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

sпоследовательность целых чисел, опционально

Форма (длина каждой преобразованной оси) вывода (s[0] относится к оси 0, s[1] к оси 1 и т.д.). s также является количеством входных точек, используемых вдоль этой оси, за исключением последней оси, где s[-1]//2+1 точки ввода используются. По любой оси, если форма, указанная s меньше, чем у входных данных, входные данные обрезаются. Если больше, входные данные дополняются нулями. Если s не задан, используется форма ввода вдоль осей, указанных параметром axes. За исключением последней оси, которая принимается равной 2*(m-1) где m — это длина входных данных вдоль этой оси.

осипоследовательность целых чисел, опционально

Оси, по которым вычисляется обратное БПФ. Если не указано, последние len(s) используются оси, или все оси, если s также не указан.

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

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

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

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

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

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

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

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

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

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

Усечённый или дополненный нулями вход, преобразованный вдоль осей, указанных оси, или комбинацией s или x, как объяснено в разделе параметров выше. Длина каждой преобразованной оси указана соответствующим элементом из s, или длина ввода по каждой оси, кроме последней, если s не задано. В конечной преобразованной оси длина вывода, когда s не указано, это 2*(m-1) где m является длиной конечной преобразованной оси входных данных. Чтобы получить нечетное количество выходных точек в конечной оси, s должен быть указан.

Вызывает:
ValueError

Если s и оси имеют разную длину.

IndexError

Если элемент оси больше количества осей x.

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

ihfftn

Обратное N-D БПФ с вещественным спектром. Обратное преобразование hfftn.

fft

Одномерное БПФ с определениями и соглашениями, которые используются.

rfft

Прямое БПФ вещественного входа.

Примечания

Для 1-D сигнала x для вещественного спектра должно выполняться эрмитово свойство:

x[i] == np.conj(x[-i]) for all i

Это обобщается на более высокие размерности, отражая по каждой оси по очереди:

x[i, j, k, ...] == np.conj(x[-i, -j, -k, ...]) for all i, j, k, ...

Это не следует путать с эрмитовой матрицей, для которой транспонирование является собственным сопряженным:

x[i, j] == np.conj(x[j, i]) for all i, j

Значение по умолчанию для s предполагает четную длину выхода в конечной оси преобразования. При выполнении конечного преобразования из комплексного в вещественное, эрмитова симметрия требует, чтобы последняя мнимая компонента вдоль этой оси была равна 0, поэтому она игнорируется. Чтобы избежать потери информации, правильная длина вещественного ввода должен должен быть указан.

Примеры

>>> import scipy.fft
>>> import numpy as np
>>> x = np.ones((3, 2, 2))
>>> scipy.fft.hfftn(x)
array([[[12.,  0.],
        [ 0.,  0.]],
       [[ 0.,  0.],
        [ 0.,  0.]],
       [[ 0.,  0.],
        [ 0.,  0.]]])