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