РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
176 of 541 menu

Функция fftshift

Функция fftshift выполняет перестановку элементов массива так, чтобы нулевая частота (постоянная составляющая) оказалась в центре. Это необходимо для визуализации спектра, полученного с помощью fft, поскольку прямое преобразование Фурье помещает нулевую частоту в начало массива. Первый параметр - входной массив. Второй параметр (необязательный) - оси, по которым выполняется сдвиг.

Синтаксис

np.fft.fftshift(x, axes=None)

Пример

Выполним прямое преобразование Фурье и сравним результат до и после применения fftshift:

import numpy as np # Create a test signal t = np.linspace(0, 1, 100) signal = np.sin(2 * np.pi * 5 * t) # Compute FFT spectrum = np.fft.fft(signal) freqs = np.fft.fftfreq(len(signal)) # Shift zero frequency to center spectrum_shifted = np.fft.fftshift(spectrum) freqs_shifted = np.fft.fftshift(freqs) print("Original frequency array shape:", freqs.shape) print("Shifted frequency array shape:", freqs_shifted.shape)

Результат выполнения кода:

"Original frequency array shape: (100,)" "Shifted frequency array shape: (100,)"

Пример

Применим fftshift к одномерному массиву, чтобы увидеть, как меняется порядок элементов:

import numpy as np arr = np.array([0, 1, 2, 3, 4, 5, 6, 7]) res = np.fft.fftshift(arr) print("Original array:", arr) print("After fftshift:", res)

Результат выполнения кода:

"Original array: [0 1 2 3 4 5 6 7]" "After fftshift: [4 5 6 7 0 1 2 3]"

Пример

Работа с двумерным массивом и указание осей для сдвига:

import numpy as np arr = np.array([ [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15] ]) # Shift along both axes (default) res_both = np.fft.fftshift(arr) # Shift only along rows (axis=0) res_rows = np.fft.fftshift(arr, axes=0) # Shift only along columns (axis=1) res_cols = np.fft.fftshift(arr, axes=1) print("Both axes:\n", res_both) print("Rows only:\n", res_rows) print("Cols only:\n", res_cols)

Результат выполнения кода:

"Both axes:" [[10 11 8 9] [14 15 12 13] [ 2 3 0 1] [ 6 7 4 5]] "Rows only:" [[ 8 9 10 11] [12 13 14 15] [ 0 1 2 3] [ 4 5 6 7]] "Cols only:" [[ 2 3 0 1] [ 6 7 4 5] [10 11 8 9] [14 15 12 13]]

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

  • функцию fft,
    которая вычисляет одномерное дискретное преобразование Фурье
  • функцию ifft,
    которая выполняет обратное преобразование Фурье
  • функцию fftfreq,
    которая возвращает частоты для дискретного преобразования Фурье
  • функцию ifftshift,
    которая выполняет обратную перестановку для fftshift
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить