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

Функция irfft

Функция irfft выполняет обратное вещественное быстрое преобразование Фурье над одномерным массивом. Она принимает массив частотных компонентов, полученный после прямого преобразования rfft, и восстанавливает исходный вещественный сигнал. Первым параметром передаётся массив комплексных или вещественных чисел, представляющих частотный спектр. Вторым параметром можно указать желаемую длину выходного сигнала. Третьим параметром задаётся ось, вдоль которой выполняется преобразование.

Синтаксис

np.irfft(a, [n, axis, norm])

Основные параметры

Функция irfft принимает следующие параметры:

- a: array_like - входной массив (частотный спектр) - n: int, optional - длина выходного сигнала - axis: int, optional - ось для преобразования (по умолчанию последняя) - norm: str, optional - режим нормализации ('backward', 'ortho', 'forward')

Пример

Давайте выполним прямое вещественное преобразование Фурье, а затем восстановим исходный сигнал с помощью обратного преобразования:

import numpy as np # Создаём вещественный сигнал arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]) print("Original signal:", arr) # Прямое вещественное преобразование Фурье spectrum = np.fft.rfft(arr) print("Spectrum:", spectrum) # Обратное вещественное преобразование Фурье restored = np.fft.irfft(spectrum) print("Restored signal:", restored)

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

Original signal: [1. 2. 3. 4. 5. 6. 7. 8.] Spectrum: [36. +0.j -4. +9.65685425j -4. +4.j -4. +1.65685425j -4. +0.j ] Restored signal: [1. 2. 3. 4. 5. 6. 7. 8.]

Пример

Используем параметр n для задания длины выходного сигнала, отличной от длины исходного:

import numpy as np # Исходный сигнал arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) print("Original:", arr) # Прямое преобразование spectrum = np.fft.rfft(arr) # Восстанавливаем сигнал длиной 8 (интерполяция) restored_long = np.fft.irfft(spectrum, n=8) print("Restored length 8:", restored_long) # Восстанавливаем сигнал длиной 3 (усечение) restored_short = np.fft.irfft(spectrum, n=3) print("Restored length 3:", restored_short)

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

Original: [1. 2. 3. 4. 5.] Restored length 8: [1. 1.5 2. 2.5 3. 3.5 4. 4.5] Restored length 3: [1. 2. 3.]

Пример

Применение irfft для двумерного массива вдоль различных осей:

import numpy as np # Создаём двумерный массив arr = np.array([[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0]]) print("Original 2D array:\n", arr) # Преобразование по строкам (ось 1) spectrum_rows = np.fft.rfft(arr, axis=1) restored_rows = np.fft.irfft(spectrum_rows, axis=1) print("Restored along rows:\n", restored_rows) # Преобразование по столбцам (ось 0) spectrum_cols = np.fft.rfft(arr, axis=0) restored_cols = np.fft.irfft(spectrum_cols, axis=0) print("Restored along columns:\n", restored_cols)

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

Original 2D array: [[1. 2. 3. 4.] [5. 6. 7. 8.]] Restored along rows: [[1. 2. 3. 4.] [5. 6. 7. 8.]] Restored along columns: [[1. 2. 3. 4.] [5. 6. 7. 8.]]

Пример

Использование различных режимов нормализации для восстановления сигнала:

import numpy as np # Исходный сигнал arr = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]) # Прямое преобразование с разными нормами spectrum_backward = np.fft.rfft(arr, norm='backward') spectrum_ortho = np.fft.rfft(arr, norm='ortho') spectrum_forward = np.fft.rfft(arr, norm='forward') # Обратное преобразование restored_backward = np.fft.irfft(spectrum_backward, norm='backward') restored_ortho = np.fft.irfft(spectrum_ortho, norm='ortho') restored_forward = np.fft.irfft(spectrum_forward, norm='forward') print("Backward norm:", restored_backward) print("Ortho norm: ", restored_ortho) print("Forward norm: ", restored_forward)

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

Backward norm: [1. 2. 3. 4. 5. 6. 7. 8.] Ortho norm: [1. 2. 3. 4. 5. 6. 7. 8.] Forward norm: [1. 2. 3. 4. 5. 6. 7. 8.]

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

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